From 3e98c5e43961aede8f287ce72ab57b07468e036b Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 4 Apr 2023 20:40:10 +0300 Subject: [PATCH 001/257] Add gt jobs creation and deletion endpoint --- cvat/apps/engine/models.py | 24 +++++ cvat/apps/engine/serializers.py | 161 +++++++++++++++++++---------- cvat/apps/engine/views.py | 31 +++++- cvat/schema.yml | 119 +++++++++++++++++++++ tests/python/rest_api/test_jobs.py | 41 +++++++- 5 files changed, 315 insertions(+), 61 deletions(-) diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index 64d13643cc49..189d12edadcd 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -154,6 +154,28 @@ def choices(cls): def __str__(self): return self.value +class JobType(str, Enum): + NORMAL = 'normal' + GROUND_TRUTH = 'ground_truth' + + @classmethod + def choices(cls): + return tuple((x.value, x.name) for x in cls) + + def __str__(self): + return self.value + +class JobFrameSelectionMethod(str, Enum): + RANDOM_UNIFORM = 'random_uniform' + MANUAL = 'manual' + + @classmethod + def choices(cls): + return tuple((x.value, x.name) for x in cls) + + def __str__(self): + return self.value + class AbstractArrayField(models.TextField): separator = "," converter = lambda x: x @@ -476,6 +498,8 @@ class Job(models.Model): default=StageChoice.ANNOTATION) state = models.CharField(max_length=32, choices=StateChoice.choices(), default=StateChoice.NEW) + type = models.CharField(max_length=32, choices=JobType.choices(), + default=JobType.NORMAL) def get_dirname(self): return os.path.join(settings.JOBS_ROOT, str(self.id)) diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index ab189ccb00c4..550ff6c986b8 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -27,6 +27,70 @@ from cvat.apps.engine.view_utils import build_field_filter_params, get_list_view_name, reverse + +class WriteOnceMixin: + """ + Adds support for write once fields to serializers. + + To use it, specify a list of fields as `write_once_fields` on the + serializer's Meta: + ``` + class Meta: + model = SomeModel + fields = '__all__' + write_once_fields = ('collection', ) + ``` + + Now the fields in `write_once_fields` can be set during POST (create), + but cannot be changed afterwards via PUT or PATCH (update). + Inspired by http://stackoverflow.com/a/37487134/627411. + """ + + def get_extra_kwargs(self): + extra_kwargs = super().get_extra_kwargs() + + # We're only interested in PATCH/PUT. + if 'update' in getattr(self.context.get('view'), 'action', ''): + extra_kwargs = self._set_write_once_fields(extra_kwargs) + + return extra_kwargs + + def get_fields(self): + fields = super().get_fields() + + extra_kwargs = self.get_extra_kwargs() + + for field_name, field_extra_kwargs in extra_kwargs.items(): + field = fields.get(field_name) + read_only = field_extra_kwargs.get('read_only') + if read_only: + setattr(field, 'read_only', read_only) + + return fields + + def _set_write_once_fields(self, extra_kwargs): + """ + Set all fields in `Meta.write_once_fields` to read_only. + """ + + write_once_fields = getattr(self.Meta, 'write_once_fields', None) + if not write_once_fields: + return extra_kwargs + + if not isinstance(write_once_fields, (list, tuple)): + raise TypeError( + 'The `write_once_fields` option must be a list or tuple. ' + 'Got {}.'.format(type(write_once_fields).__name__) + ) + + for field_name in write_once_fields: + kwargs = extra_kwargs.get(field_name, {}) + kwargs['read_only'] = True + extra_kwargs[field_name] = kwargs + + return extra_kwargs + + @extend_schema_field(serializers.URLField) class HyperlinkedEndpointSerializer(serializers.Serializer): key_field = 'pk' @@ -494,14 +558,53 @@ class Meta: 'updated_date', 'issues', 'labels') read_only_fields = fields -class JobWriteSerializer(serializers.ModelSerializer): + +class JobWriteSerializer(WriteOnceMixin, serializers.ModelSerializer): assignee = serializers.IntegerField(allow_null=True, required=False) + type = serializers.ChoiceField(choices=models.JobType.choices()) + task_id = serializers.IntegerField() + frame_selection_method = serializers.ChoiceField( + choices=models.JobFrameSelectionMethod.choices(), required=False) + + # Random selection fields + count = serializers.IntegerField(min_value=0, required=False, + help_text=textwrap.dedent("""\ + The number of frames included in the job. + Applicable only to the random frame selection + """)) + + # Manual selection fields + frames = serializers.ListField(child=serializers.IntegerField(min_value=0), + required=False, help_text=textwrap.dedent("""\ + The list of frame ids. Applicable only to the manual frame selection + """)) + + class Meta: + model = models.Job + write_once_fields = ('type', 'task_id', 'frame_selection_method', 'count', 'frames') + fields = ('assignee', 'stage', 'state', ) + write_once_fields + def to_representation(self, instance): - # FIXME: deal with resquest/response separation serializer = JobReadSerializer(instance, context=self.context) return serializer.data + @transaction.atomic + def create(self, validated_data): + task_id = validated_data.pop('task_id') + task = models.Task.objects.get(pk=task_id) + + if not task.data: + raise serializers.ValidationError( + "This task has no data yet. Please set up the task data and try again" + ) + size = task.data.size + + segment = models.Segment.objects.create(start_frame=0, stop_frame=size, task=task) + + validated_data['segment'] = segment + return super().create(validated_data) + def update(self, instance, validated_data): state = validated_data.get('state') stage = validated_data.get('stage') @@ -525,11 +628,6 @@ def update(self, instance, validated_data): return instance - - class Meta: - model = models.Job - fields = ('assignee', 'stage', 'state') - class SimpleJobSerializer(serializers.ModelSerializer): assignee = BasicUserSerializer(allow_null=True) @@ -595,55 +693,6 @@ class RqStatusSerializer(serializers.Serializer): message = serializers.CharField(allow_blank=True, default="") progress = serializers.FloatField(max_value=100, default=0) -class WriteOnceMixin: - """ - Adds support for write once fields to serializers. - - To use it, specify a list of fields as `write_once_fields` on the - serializer's Meta: - ``` - class Meta: - model = SomeModel - fields = '__all__' - write_once_fields = ('collection', ) - ``` - - Now the fields in `write_once_fields` can be set during POST (create), - but cannot be changed afterwards via PUT or PATCH (update). - Inspired by http://stackoverflow.com/a/37487134/627411. - """ - - def get_extra_kwargs(self): - extra_kwargs = super().get_extra_kwargs() - - # We're only interested in PATCH/PUT. - if 'update' in getattr(self.context.get('view'), 'action', ''): - extra_kwargs = self._set_write_once_fields(extra_kwargs) - - return extra_kwargs - - def _set_write_once_fields(self, extra_kwargs): - """ - Set all fields in `Meta.write_once_fields` to read_only. - """ - - write_once_fields = getattr(self.Meta, 'write_once_fields', None) - if not write_once_fields: - return extra_kwargs - - if not isinstance(write_once_fields, (list, tuple)): - raise TypeError( - 'The `write_once_fields` option must be a list or tuple. ' - 'Got {}.'.format(type(write_once_fields).__name__) - ) - - for field_name in write_once_fields: - kwargs = extra_kwargs.get(field_name, {}) - kwargs['read_only'] = True - extra_kwargs[field_name] = kwargs - - return extra_kwargs - class JobFiles(serializers.ListField): """ diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index 38a57880f02e..b2ead87477ee 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -6,6 +6,7 @@ import io import os import os.path as osp +import textwrap import pytz import traceback from datetime import datetime @@ -47,7 +48,7 @@ from cvat.apps.engine.frame_provider import FrameProvider from cvat.apps.engine.media_extractors import get_mime from cvat.apps.engine.models import ( - Job, Label, Task, Project, Issue, Data, + Job, JobType, Label, Task, Project, Issue, Data, Comment, StorageMethodChoice, StorageChoice, CloudProviderChoice, Location ) @@ -1271,6 +1272,12 @@ def preview(self, request, pk): @extend_schema(tags=['jobs']) @extend_schema_view( + create=extend_schema( + summary='Method creates a new job in the task', + request=JobWriteSerializer, + responses={ + '201': JobReadSerializer, # check JobWriteSerializer.to_representation + }), retrieve=extend_schema( summary='Method returns details of a job', responses={ @@ -1286,10 +1293,20 @@ def preview(self, request, pk): request=JobWriteSerializer(partial=True), responses={ '200': JobReadSerializer, # check JobWriteSerializer.to_representation - }) + }), + destroy=extend_schema( + summary='Method deletes a job and its related annotations', + description=textwrap.dedent("""\ + Please note, that not every job can be removed. Currently, + it is only available for Ground Truth jobs. + """), + responses={ + '204': OpenApiResponse(description='The job has been deleted'), + }), ) -class JobViewSet(viewsets.GenericViewSet, mixins.ListModelMixin, - mixins.RetrieveModelMixin, PartialUpdateModelMixin, UploadMixin, AnnotationMixin +class JobViewSet(viewsets.GenericViewSet, mixins.ListModelMixin, mixins.CreateModelMixin, + mixins.RetrieveModelMixin, PartialUpdateModelMixin, mixins.DestroyModelMixin, + UploadMixin, AnnotationMixin ): queryset = Job.objects.select_related('segment__task__data').prefetch_related( 'segment__task__label_set', 'segment__task__project__label_set', @@ -1329,6 +1346,12 @@ def get_serializer_class(self): else: return JobWriteSerializer + def perform_destroy(self, instance): + if instance.type != JobType.GROUND_TRUTH: + raise ValidationError("Only ground truth jobs can be removed") + + return super().perform_destroy(instance) + # UploadMixin method def get_upload_dir(self): task = self._object.segment.task diff --git a/cvat/schema.yml b/cvat/schema.yml index 50de2027d7bc..69a4245314e6 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -1845,6 +1845,45 @@ paths: schema: $ref: '#/components/schemas/PaginatedJobReadList' description: '' + post: + operationId: jobs_create + summary: Method creates a new job in the task + parameters: + - in: header + name: X-Organization + schema: + type: string + - in: query + name: org + schema: + type: string + description: Organization unique slug + - in: query + name: org_id + schema: + type: integer + description: Organization identifier + tags: + - jobs + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JobWriteRequest' + required: true + security: + - sessionAuth: [] + csrfAuth: [] + tokenAuth: [] + - signatureAuth: [] + - basicAuth: [] + responses: + '201': + content: + application/vnd.cvat+json: + schema: + $ref: '#/components/schemas/JobRead' + description: '' /api/jobs/{id}: get: operationId: jobs_retrieve @@ -1929,6 +1968,44 @@ paths: schema: $ref: '#/components/schemas/JobRead' description: '' + delete: + operationId: jobs_destroy + description: | + Please note, that not every job can be removed. Currently, + it is only available for Ground Truth jobs. + summary: Method deletes a job and its related annotations + parameters: + - in: header + name: X-Organization + schema: + type: string + - in: path + name: id + schema: + type: integer + description: A unique integer value identifying this job. + required: true + - in: query + name: org + schema: + type: string + description: Organization unique slug + - in: query + name: org_id + schema: + type: integer + description: Organization identifier + tags: + - jobs + security: + - sessionAuth: [] + csrfAuth: [] + tokenAuth: [] + - signatureAuth: [] + - basicAuth: [] + responses: + '204': + description: The job has been deleted /api/jobs/{id}/annotations/: get: operationId: jobs_retrieve_annotations @@ -7269,6 +7346,11 @@ components: - name - related_files - width + FrameSelectionMethodEnum: + enum: + - random_uniform + - manual + type: string InputTypeEnum: enum: - checkbox @@ -7485,6 +7567,43 @@ components: - validation - completed type: string + JobWriteRequest: + type: object + properties: + assignee: + type: integer + nullable: true + stage: + $ref: '#/components/schemas/JobStage' + state: + $ref: '#/components/schemas/OperationStatus' + type: + $ref: '#/components/schemas/JobWriteTypeEnum' + task_id: + type: integer + frame_selection_method: + $ref: '#/components/schemas/FrameSelectionMethodEnum' + count: + type: integer + minimum: 0 + description: | + The number of frames included in the job. + Applicable only to the random frame selection. + frames: + type: array + items: + type: integer + minimum: 0 + description: | + The list of frame ids. Applicable only to the manual frame selection. + required: + - task_id + - type + JobWriteTypeEnum: + enum: + - normal + - ground_truth + type: string JobsSummary: type: object properties: diff --git a/tests/python/rest_api/test_jobs.py b/tests/python/rest_api/test_jobs.py index 2b3a7f54b53d..098050ee7af9 100644 --- a/tests/python/rest_api/test_jobs.py +++ b/tests/python/rest_api/test_jobs.py @@ -9,9 +9,10 @@ from copy import deepcopy from http import HTTPStatus from io import BytesIO -from typing import List +from typing import Any, Dict, List import pytest +from cvat_sdk import models from cvat_sdk.api_client.api_client import ApiClient, Endpoint from cvat_sdk.core.helpers import get_paginated_collection from deepdiff import DeepDiff @@ -52,6 +53,44 @@ def filter_jobs(jobs, tasks, org): return jobs, kwargs +@pytest.mark.usefixtures("restore_db_per_function") +class TestPostJobs: + def _test_create_job_ok(self, user: str, data: Dict[str, Any], **kwargs): + with make_api_client(user) as api_client: + (_, response) = api_client.jobs_api.create(models.JobWriteRequest(**data), **kwargs) + assert response.status == HTTPStatus.OK + assert ( + DeepDiff( + data, + json.loads(response.data), + exclude_paths="root['updated_date']", + ignore_order=True, + ) + == {} + ) + + @pytest.mark.parametrize("task_mode", ["annotation", "interpolation"]) + def test_can_create_gt_job_with_manual_frames(self, admin_user, tasks, task_mode): + user = admin_user + job_frame_count = 4 + task = next( + t + for t in tasks + if not t["project_id"] + and not t["organization"] + and t["mode"] == task_mode + and t["size"] > job_frame_count + ) + task_id = task["id"] + + job_spec = { + "task_id": task_id, + "type": "ground_truth", + "frames": list(range(job_frame_count)), + } + self._test_create_job_ok(user, job_spec) + + @pytest.mark.usefixtures("restore_db_per_class") class TestGetJobs: def _test_get_job_200(self, user, jid, data, **kwargs): From 0d5c7f2935b1deae9653a65bcb24aed1cac8e5bf Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 6 Apr 2023 18:12:03 +0300 Subject: [PATCH 002/257] Add gt jobs for image tasks --- .../migrations/0068_auto_20230406_1333.py | 29 ++++ cvat/apps/engine/models.py | 55 +++++++- cvat/apps/engine/serializers.py | 86 ++++++++++-- cvat/apps/engine/views.py | 11 +- cvat/schema.yml | 44 +++--- cvat/settings/base.py | 1 + tests/python/rest_api/test_jobs.py | 127 ++++++++++++++++-- tests/python/shared/assets/jobs.json | 19 +++ 8 files changed, 318 insertions(+), 54 deletions(-) create mode 100644 cvat/apps/engine/migrations/0068_auto_20230406_1333.py diff --git a/cvat/apps/engine/migrations/0068_auto_20230406_1333.py b/cvat/apps/engine/migrations/0068_auto_20230406_1333.py new file mode 100644 index 000000000000..5480caeb3d2b --- /dev/null +++ b/cvat/apps/engine/migrations/0068_auto_20230406_1333.py @@ -0,0 +1,29 @@ +# Generated by Django 3.2.18 on 2023-04-06 13:33 + +import cvat.apps.engine.models +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('engine', '0067_alter_cloudstorage_credentials_type'), + ] + + operations = [ + migrations.AddField( + model_name='job', + name='type', + field=models.CharField(choices=[('normal', 'NORMAL'), ('ground_truth', 'GROUND_TRUTH')], default=cvat.apps.engine.models.JobType['NORMAL'], max_length=32), + ), + migrations.AddField( + model_name='segment', + name='frames', + field=cvat.apps.engine.models.IntArrayField(default='', null=True), + ), + migrations.AddField( + model_name='segment', + name='type', + field=models.CharField(choices=[('range', 'RANGE'), ('specific_frames', 'SPECIFIC_FRAMES')], default=cvat.apps.engine.models.SegmentType['RANGE'], max_length=32), + ), + ] diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index 189d12edadcd..58a98306adef 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -12,6 +12,7 @@ from django.conf import settings from django.contrib.auth.models import User from django.core.files.storage import FileSystemStorage +from django.core.exceptions import ValidationError from django.db import IntegrityError, models from django.db.models.fields import FloatField from drf_spectacular.types import OpenApiTypes @@ -473,17 +474,53 @@ class Meta: default_permissions = () unique_together = ("data", "path") + +class SegmentType(str, Enum): + RANGE = 'range' + SPECIFIC_FRAMES = 'specific_frames' + + @classmethod + def choices(cls): + return tuple((x.value, x.name) for x in cls) + + def __str__(self): + return self.value + + class Segment(models.Model): + # Common fields task = models.ForeignKey(Task, on_delete=models.CASCADE) start_frame = models.IntegerField() stop_frame = models.IntegerField() + type = models.CharField(choices=SegmentType.choices(), default=SegmentType.RANGE, max_length=32) + + # SegmentType.SPECIFIC_FRAMES fields + frames = IntArrayField(store_sorted=True, unique_values=True, null=True) def contains_frame(self, idx: int) -> bool: - return self.start_frame <= idx and idx <= self.stop_frame + if self.type == SegmentType.RANGE: + return self.start_frame <= idx and idx <= self.stop_frame + elif self.type == SegmentType.SPECIFIC_FRAMES: + return idx in self.frames + else: + assert False + + def save(self, *args, **kwargs) -> None: + self.full_clean() + return super().save(*args, **kwargs) + + def clean(self) -> None: + if not (self.type == SegmentType.RANGE) ^ bool(self.frames): + raise ValidationError( + f"frames and type == {SegmentType.SPECIFIC_FRAMES} can only be used together" + ) + + return super().clean() class Meta: default_permissions = () + class Job(models.Model): segment = models.ForeignKey(Segment, on_delete=models.CASCADE) assignee = models.ForeignKey(User, null=True, blank=True, on_delete=models.SET_NULL) @@ -536,6 +573,22 @@ def get_labels(self): class Meta: default_permissions = () + + def save(self, *args, **kwargs) -> None: + self.full_clean() + return super().save(*args, **kwargs) + + def clean(self) -> None: + if not (self.type == JobType.GROUND_TRUTH) ^ (self.segment.type == SegmentType.RANGE): + raise ValidationError( + f"job type == {JobType.GROUND_TRUTH} and " + f"segment type == {SegmentType.SPECIFIC_FRAMES} " + "can only be used together" + ) + + return super().clean() + + class InvalidLabel(ValueError): pass diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index 550ff6c986b8..f91a730f3bef 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -555,26 +555,37 @@ class Meta: fields = ('url', 'id', 'task_id', 'project_id', 'assignee', 'dimension', 'bug_tracker', 'status', 'stage', 'state', 'mode', 'start_frame', 'stop_frame', 'data_chunk_size', 'data_compressed_chunk_type', - 'updated_date', 'issues', 'labels') + 'updated_date', 'issues', 'labels', 'type') read_only_fields = fields class JobWriteSerializer(WriteOnceMixin, serializers.ModelSerializer): assignee = serializers.IntegerField(allow_null=True, required=False) - type = serializers.ChoiceField(choices=models.JobType.choices()) + # NOTE: It can be expressed using serializer inheritance, but it is + # harder to use then: we need to make a manual switch in get_serializer_class() + # and create an extra serializer type in the API schema. + # Need to investigate how it can be simplified. + type = serializers.ChoiceField(choices=( + (models.JobType.GROUND_TRUTH.value, models.JobType.GROUND_TRUTH.name), + )) + task_id = serializers.IntegerField() frame_selection_method = serializers.ChoiceField( choices=models.JobFrameSelectionMethod.choices(), required=False) - # Random selection fields count = serializers.IntegerField(min_value=0, required=False, help_text=textwrap.dedent("""\ The number of frames included in the job. Applicable only to the random frame selection """)) + seed = serializers.IntegerField(min_value=0, required=False, + help_text=textwrap.dedent("""\ + The seed value for the random number generator. + The same value will produce the same frame sets. + Applicable only to the random frame selection + """)) - # Manual selection fields frames = serializers.ListField(child=serializers.IntegerField(min_value=0), required=False, help_text=textwrap.dedent("""\ The list of frame ids. Applicable only to the manual frame selection @@ -582,7 +593,10 @@ class JobWriteSerializer(WriteOnceMixin, serializers.ModelSerializer): class Meta: model = models.Job - write_once_fields = ('type', 'task_id', 'frame_selection_method', 'count', 'frames') + random_selection_params = ('count', 'seed',) + manual_selection_params = ('frames',) + write_once_fields = ('type', 'task_id', 'frame_selection_method',) \ + + random_selection_params + manual_selection_params fields = ('assignee', 'stage', 'state', ) + write_once_fields def to_representation(self, instance): @@ -594,13 +608,63 @@ def create(self, validated_data): task_id = validated_data.pop('task_id') task = models.Task.objects.get(pk=task_id) - if not task.data: - raise serializers.ValidationError( - "This task has no data yet. Please set up the task data and try again" - ) - size = task.data.size + # TODO: extract to separate functions + if validated_data["type"] == models.JobType.GROUND_TRUTH: + if not task.data: + raise serializers.ValidationError( + "This task has no data attached yet. Please set up task data and try again" + ) + if task.dimension != models.DimensionType.DIM_2D: + raise serializers.ValidationError( + "Ground Truth jobs can only be added in 2d tasks" + ) + + size = task.data.size + step = task.data.get_frame_step() + valid_frame_ids = range(task.data.start_frame, task.data.stop_frame, step) + + frame_selection_method = validated_data.pop("frame_selection_method", None) + if frame_selection_method == models.JobFrameSelectionMethod.RANDOM_UNIFORM: + count = validated_data.pop("count") + if size <= count: + raise serializers.ValidationError( + f"The number of frames requested ({count}) must be lesser than " + f"the number of the task frames ({size})" + ) + + seed = validated_data.pop("seed", None) + + import random + # NOTE: the RNG backend must not change to provide reproducible results + rng = random.Random(seed) + frames = rng.sample(valid_frame_ids, k=count) + elif frame_selection_method == models.JobFrameSelectionMethod.MANUAL: + frames = validated_data.pop("frames") - segment = models.Segment.objects.create(start_frame=0, stop_frame=size, task=task) + unique_frames = set(frames) + if len(unique_frames) != len(frames): + raise serializers.ValidationError(f"Frames must not repeat") + + invalid_ids = unique_frames.difference(valid_frame_ids) + if invalid_ids: + raise serializers.ValidationError( + "The following frames are not included " + f"in the task: {','.join(invalid_ids)}" + ) + else: + raise serializers.ValidationError( + f"Unexpected frame selection method '{frame_selection_method}'" + ) + + segment = models.Segment.objects.create( + start_frame=task.data.start_frame, + stop_frame=task.data.stop_frame, + frames=frames, + task=task, + type=models.SegmentType.SPECIFIC_FRAMES, + ) + else: + raise serializers.ValidationError(f"Unexpected job type '{validated_data['type']}'") validated_data['segment'] = segment return super().create(validated_data) diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index b2ead87477ee..da83cd6e2198 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -1659,10 +1659,13 @@ def metadata(self, request, pk): if hasattr(db_data, 'video'): media = [db_data.video] else: - media = list(db_data.images.filter( - frame__gte=data_start_frame, - frame__lte=data_stop_frame, - ).all()) + media = [f + for f in db_data.images.filter( + frame__gte=data_start_frame, + frame__lte=data_stop_frame, + ).all() + if db_job.segment.contains_frame(f.frame) + ] # Filter data with segment size # Should data.size also be cropped by segment size? diff --git a/cvat/schema.yml b/cvat/schema.yml index 69a4245314e6..51865b93341f 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -7552,6 +7552,10 @@ components: $ref: '#/components/schemas/IssuesSummary' labels: $ref: '#/components/schemas/LabelsSummary' + type: + allOf: + - $ref: '#/components/schemas/JobType' + readOnly: true required: - issues - labels @@ -7567,6 +7571,11 @@ components: - validation - completed type: string + JobType: + enum: + - normal + - ground_truth + type: string JobWriteRequest: type: object properties: @@ -7588,20 +7597,26 @@ components: minimum: 0 description: | The number of frames included in the job. - Applicable only to the random frame selection. + Applicable only to the random frame selection + seed: + type: integer + minimum: 0 + description: | + The seed value for the random number generator. + The same value will produce the same frame sets. + Applicable only to the random frame selection frames: type: array items: type: integer minimum: 0 description: | - The list of frame ids. Applicable only to the manual frame selection. + The list of frame ids. Applicable only to the manual frame selection required: - task_id - type JobWriteTypeEnum: enum: - - normal - ground_truth type: string JobsSummary: @@ -8449,17 +8464,9 @@ components: PatchedIssueWriteRequest: type: object properties: - position: - type: array - items: - type: number - format: double assignee: type: integer nullable: true - message: - type: string - minLength: 1 resolved: type: boolean PatchedJobWriteRequest: @@ -8593,13 +8600,6 @@ components: type: string minLength: 1 maxLength: 256 - project_id: - type: integer - nullable: true - owner_id: - type: integer - writeOnly: true - nullable: true assignee_id: type: integer writeOnly: true @@ -8607,10 +8607,6 @@ components: bug_tracker: type: string maxLength: 2000 - labels: - type: array - items: - $ref: '#/components/schemas/PatchedLabelRequest' subset: type: string maxLength: 64 @@ -8681,10 +8677,6 @@ components: type: boolean enable_ssl: type: boolean - project_id: - type: integer - writeOnly: true - nullable: true events: type: array items: diff --git a/cvat/settings/base.py b/cvat/settings/base.py index 4aae54079a46..a6ebcae558ca 100644 --- a/cvat/settings/base.py +++ b/cvat/settings/base.py @@ -606,6 +606,7 @@ class CVAT_QUEUES(Enum): 'StorageMethod': 'cvat.apps.engine.models.StorageMethodChoice', 'JobStatus': 'cvat.apps.engine.models.StatusChoice', 'JobStage': 'cvat.apps.engine.models.StageChoice', + 'JobType': 'cvat.apps.engine.models.JobType', 'StorageType': 'cvat.apps.engine.models.StorageChoice', 'SortingMethod': 'cvat.apps.engine.models.SortingMethod', 'WebhookType': 'cvat.apps.webhooks.models.WebhookTypeChoice', diff --git a/tests/python/rest_api/test_jobs.py b/tests/python/rest_api/test_jobs.py index 098050ee7af9..b37f241e9675 100644 --- a/tests/python/rest_api/test_jobs.py +++ b/tests/python/rest_api/test_jobs.py @@ -57,19 +57,25 @@ def filter_jobs(jobs, tasks, org): class TestPostJobs: def _test_create_job_ok(self, user: str, data: Dict[str, Any], **kwargs): with make_api_client(user) as api_client: - (_, response) = api_client.jobs_api.create(models.JobWriteRequest(**data), **kwargs) - assert response.status == HTTPStatus.OK - assert ( - DeepDiff( - data, - json.loads(response.data), - exclude_paths="root['updated_date']", - ignore_order=True, - ) - == {} + (_, response) = api_client.jobs_api.create( + models.JobWriteRequest(**deepcopy(data)), **kwargs ) + assert response.status == HTTPStatus.CREATED + return response - @pytest.mark.parametrize("task_mode", ["annotation", "interpolation"]) + @pytest.mark.parametrize( + "task_mode", + [ + "annotation", + pytest.param( + "interpolation", + marks=pytest.mark.xfail( + raises=IndexError, + reason="Meta info can't represent skipped frame info for video", + ), + ), + ], + ) def test_can_create_gt_job_with_manual_frames(self, admin_user, tasks, task_mode): user = admin_user job_frame_count = 4 @@ -82,13 +88,110 @@ def test_can_create_gt_job_with_manual_frames(self, admin_user, tasks, task_mode and t["size"] > job_frame_count ) task_id = task["id"] + with make_api_client(user) as api_client: + (task_meta, _) = api_client.tasks_api.retrieve_data_meta(task_id) + frame_step = int(task_meta.frame_filter.split("=")[-1]) if task_meta.frame_filter else 1 + + job_frame_ids = list(range(task_meta.start_frame, task_meta.stop_frame, frame_step))[ + :job_frame_count + ] + job_spec = { + "task_id": task_id, + "type": "ground_truth", + "frame_selection_method": "manual", + "frames": job_frame_ids, + } + + response = self._test_create_job_ok(user, job_spec) + job_id = json.loads(response.data)["id"] + + with make_api_client(user) as api_client: + (job_meta, _) = api_client.jobs_api.retrieve_data_meta(job_id) + assert [f.name for f in job_meta.frames] == [ + task_meta.frames[i].name for i in job_frame_ids + ] + + @pytest.mark.parametrize( + "task_mode", + [ + "annotation", + pytest.param( + "interpolation", + marks=pytest.mark.xfail( + raises=AssertionError, + reason="Meta info can't represent skipped frame info for video", + ), + ), + ], + ) + def test_can_create_gt_job_with_random_frames(self, admin_user, tasks, task_mode): + user = admin_user + required_task_frame_count = 4 + task = next( + t + for t in tasks + if not t["project_id"] + and not t["organization"] + and t["mode"] == task_mode + and t["size"] > required_task_frame_count + ) + task_id = task["id"] + + job_spec = { + "task_id": task_id, + "type": "ground_truth", + "frame_selection_method": "random_uniform", + "count": required_task_frame_count - 1, + "seed": 42, # make the test reproducible + } + + response = self._test_create_job_ok(user, job_spec) + job_id = json.loads(response.data)["id"] + + with make_api_client(user) as api_client: + (job_meta, _) = api_client.jobs_api.retrieve_data_meta(job_id) + assert [f.name for f in job_meta.frames] == ["0.png", "1.png", "5.png"] + + +@pytest.mark.usefixtures("restore_db_per_function") +class TestDeleteJobs: + def _test_destroy_job_ok(self, user, job_id): + with make_api_client(user) as api_client: + (_, response) = api_client.jobs_api.destroy(job_id) + assert response.status == HTTPStatus.NO_CONTENT + + def _test_destroy_job_fails(self, user, job_id, *, expected_status): + with make_api_client(user) as api_client: + (_, response) = api_client.jobs_api.destroy( + job_id, _check_status=False, _parse_response=False + ) + assert response.status == expected_status + return response + + def test_can_destroy_gt_job(self, admin_user, tasks): + user = admin_user + job_frame_count = 4 + task = next( + t + for t in tasks + if not t["project_id"] and not t["organization"] and t["size"] > job_frame_count + ) + task_id = task["id"] job_spec = { "task_id": task_id, "type": "ground_truth", + "frame_selection_method": "manual", "frames": list(range(job_frame_count)), } - self._test_create_job_ok(user, job_spec) + with make_api_client(user) as api_client: + (job, _) = api_client.jobs_api.create(models.JobWriteRequest(**job_spec)) + + self._test_destroy_job_ok(user, job.id) + + def test_cannot_destroy_normal_job(self, admin_user, jobs): + job_id = next(j for j in jobs if j["type"] == "normal")["id"] + self._test_destroy_job_fails(admin_user, job_id, expected_status=HTTPStatus.BAD_REQUEST) @pytest.mark.usefixtures("restore_db_per_class") diff --git a/tests/python/shared/assets/jobs.json b/tests/python/shared/assets/jobs.json index c72e0665b0a1..55c1cf3847fb 100644 --- a/tests/python/shared/assets/jobs.json +++ b/tests/python/shared/assets/jobs.json @@ -26,6 +26,7 @@ "status": "annotation", "stop_frame": 9, "task_id": 21, + "type": "normal", "updated_date": "2023-03-27T19:08:40.166000Z", "url": "http://localhost:8080/api/jobs/26" }, @@ -52,6 +53,7 @@ "status": "annotation", "stop_frame": 5, "task_id": 21, + "type": "normal", "updated_date": "2023-03-27T19:08:27.216000Z", "url": "http://localhost:8080/api/jobs/25" }, @@ -78,6 +80,7 @@ "status": "annotation", "stop_frame": 1, "task_id": 20, + "type": "normal", "updated_date": "2023-03-10T11:57:49.019000Z", "url": "http://localhost:8080/api/jobs/24" }, @@ -104,6 +107,7 @@ "status": "annotation", "stop_frame": 1, "task_id": 19, + "type": "normal", "updated_date": "2023-03-10T11:56:55.066000Z", "url": "http://localhost:8080/api/jobs/23" }, @@ -130,6 +134,7 @@ "status": "annotation", "stop_frame": 1, "task_id": 18, + "type": "normal", "updated_date": "2023-03-01T15:36:38.114000Z", "url": "http://localhost:8080/api/jobs/22" }, @@ -156,6 +161,7 @@ "status": "annotation", "stop_frame": 4, "task_id": 17, + "type": "normal", "updated_date": "2023-02-10T14:05:26.022000Z", "url": "http://localhost:8080/api/jobs/21" }, @@ -182,6 +188,7 @@ "status": "annotation", "stop_frame": 24, "task_id": 15, + "type": "normal", "updated_date": "2022-12-01T12:53:35.354000Z", "url": "http://localhost:8080/api/jobs/19" }, @@ -208,6 +215,7 @@ "status": "annotation", "stop_frame": 7, "task_id": 14, + "type": "normal", "updated_date": "2022-09-23T11:57:02.302000Z", "url": "http://localhost:8080/api/jobs/18" }, @@ -234,6 +242,7 @@ "status": "annotation", "stop_frame": 4, "task_id": 13, + "type": "normal", "updated_date": "2022-12-05T07:47:01.633000Z", "url": "http://localhost:8080/api/jobs/17" }, @@ -266,6 +275,7 @@ "status": "annotation", "stop_frame": 10, "task_id": 11, + "type": "normal", "updated_date": "2022-06-22T09:18:45.296000Z", "url": "http://localhost:8080/api/jobs/16" }, @@ -292,6 +302,7 @@ "status": "annotation", "stop_frame": 19, "task_id": 9, + "type": "normal", "updated_date": "2022-11-03T13:57:26.346000Z", "url": "http://localhost:8080/api/jobs/14" }, @@ -318,6 +329,7 @@ "status": "validation", "stop_frame": 14, "task_id": 9, + "type": "normal", "updated_date": "2022-06-22T09:18:45.296000Z", "url": "http://localhost:8080/api/jobs/13" }, @@ -344,6 +356,7 @@ "status": "validation", "stop_frame": 9, "task_id": 9, + "type": "normal", "updated_date": "2022-06-22T09:18:45.296000Z", "url": "http://localhost:8080/api/jobs/12" }, @@ -376,6 +389,7 @@ "status": "annotation", "stop_frame": 4, "task_id": 9, + "type": "normal", "updated_date": "2022-06-22T09:18:45.296000Z", "url": "http://localhost:8080/api/jobs/11" }, @@ -408,6 +422,7 @@ "status": "annotation", "stop_frame": 13, "task_id": 8, + "type": "normal", "updated_date": "2022-06-22T09:18:45.296000Z", "url": "http://localhost:8080/api/jobs/10" }, @@ -434,6 +449,7 @@ "status": "annotation", "stop_frame": 10, "task_id": 7, + "type": "normal", "updated_date": "2022-06-22T09:18:45.296000Z", "url": "http://localhost:8080/api/jobs/9" }, @@ -460,6 +476,7 @@ "status": "annotation", "stop_frame": 0, "task_id": 6, + "type": "normal", "updated_date": "2022-06-22T09:18:45.296000Z", "url": "http://localhost:8080/api/jobs/8" }, @@ -492,6 +509,7 @@ "status": "annotation", "stop_frame": 24, "task_id": 5, + "type": "normal", "updated_date": "2022-06-22T09:18:45.296000Z", "url": "http://localhost:8080/api/jobs/7" }, @@ -524,6 +542,7 @@ "status": "annotation", "stop_frame": 22, "task_id": 2, + "type": "normal", "updated_date": "2022-06-22T09:18:45.296000Z", "url": "http://localhost:8080/api/jobs/2" } From 1732ef7472e0b67bd8ef7e92d2db6ae55cafe407 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 7 Apr 2023 16:52:31 +0300 Subject: [PATCH 003/257] try multimerge-based comparison --- cvat/apps/engine/models.py | 30 +++++ cvat/apps/engine/quality_control/__init__.py | 2 + cvat/apps/engine/quality_control/conflicts.py | 116 ++++++++++++++++++ cvat/apps/engine/quality_control/models.py | 38 ++++++ cvat/apps/engine/serializers.py | 7 ++ cvat/apps/engine/views.py | 18 +++ 6 files changed, 211 insertions(+) create mode 100644 cvat/apps/engine/quality_control/__init__.py create mode 100644 cvat/apps/engine/quality_control/conflicts.py create mode 100644 cvat/apps/engine/quality_control/models.py diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index 58a98306adef..821c321f3514 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -3,10 +3,13 @@ # # SPDX-License-Identifier: MIT +from __future__ import annotations + import os import re import shutil from enum import Enum +from functools import cached_property from typing import Optional from django.conf import settings @@ -18,6 +21,7 @@ from drf_spectacular.types import OpenApiTypes from drf_spectacular.utils import extend_schema_field +from cvat.apps.engine import quality_control from cvat.apps.engine.utils import parse_specific_attributes from cvat.apps.organizations.models import Organization from cvat.apps.events.utils import cache_deleted @@ -415,6 +419,13 @@ def get_task_artifacts_dirname(self): def get_tmp_dirname(self): return os.path.join(self.get_dirname(), "tmp") + @cached_property + def gt_job(self) -> Optional[Job]: + try: + return Job.objects.get(task=self, type=JobType.GROUND_TRUTH) + except Job.DoesNotExist: + return None + def __str__(self): return self.name @@ -937,3 +948,22 @@ class Storage(models.Model): class Meta: default_permissions = () + + +class AnnotationConflictType(quality_control.models.AnnotationConflictType): + @classmethod + def choices(cls): + return tuple((x.value, x.name) for x in cls) + +class AnnotationConflict(models.Model): + conflicts = models.ForeignKey('ConflictReport', + on_delete=models.CASCADE, related_name='annotation_conflicts') + frame_id = models.IntegerField() + type = models.CharField(max_length=32, choices=AnnotationConflictType.choices()) + message = models.CharField(max_length=1024, blank=True, default="") + data = models.JSONField() + +class AnnotationConflictsReport(models.Model): + job = models.ForeignKey(Job, on_delete=models.CASCADE, related_name='annotation_conflict_reports') + job_last_updated = models.DateTimeField() + gt_job_last_updated = models.DateTimeField() diff --git a/cvat/apps/engine/quality_control/__init__.py b/cvat/apps/engine/quality_control/__init__.py new file mode 100644 index 000000000000..48805af7b84a --- /dev/null +++ b/cvat/apps/engine/quality_control/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import conflicts \ No newline at end of file diff --git a/cvat/apps/engine/quality_control/conflicts.py b/cvat/apps/engine/quality_control/conflicts.py new file mode 100644 index 000000000000..0dea6656a43e --- /dev/null +++ b/cvat/apps/engine/quality_control/conflicts.py @@ -0,0 +1,116 @@ +# Copyright (C) 2023 CVAT.ai Corporation +# +# SPDX-License-Identifier: MIT + +from typing import Tuple +import datumaro as dm + +from cvat.apps.dataset_manager.task import JobAnnotation +from cvat.apps.engine.models import Job +from cvat.apps.dataset_manager.bindings import GetCVATDataExtractor, JobData +from cvat.apps.dataset_manager.formats.registry import dm_env + +from .models import AnnotationConflictsReport, AnnotationConflict, AnnotationConflictType + + +class JobDataProvider: + def __init__(self, job_id: int) -> None: + self.job_id = job_id + self.job_annotation = JobAnnotation(job_id) + self.job_data = JobData( + annotation_ir=self.job_annotation.ir_data, + db_job=self.job_annotation.db_job + ) + self.dm_dataset = dm.Dataset.from_extractors( + GetCVATDataExtractor(self.job_data), + env=dm_env + ) + + def dm_item_id_to_frame_id(self, item_id: Tuple[str, str]) -> int: + path, _ = item_id[0] + return self.job_data.match_frame(path) + +def find_gt_conflicts(current_job: Job, gt_job: Job) -> AnnotationConflictsReport: + this_job_data_provider = JobDataProvider(current_job.pk) + gt_job_data_provider = JobDataProvider(gt_job.pk) + + this_job_dataset = this_job_data_provider.dm_dataset + gt_job_dataset = gt_job_data_provider.dm_dataset + merger = dm.ops.IntersectMerge() + merger([gt_job_dataset, this_job_dataset]) + + conflicts = [] + for error in merger.errors: + if isinstance(error, dm.errors.MismatchingImageInfoError): + assert False + elif isinstance(error, dm.errors.MismatchingMediaPathError): + assert False + elif isinstance(error, dm.errors.MismatchingMediaError): + assert False + elif isinstance(error, dm.errors.MismatchingAttributesError): + assert False + elif isinstance(error, dm.errors.ConflictingCategoriesError): + assert False + elif isinstance(error, dm.errors.NoMatchingAnnError): + if 0 in error.sources: + conflict_type = AnnotationConflictType.EXTRA_ANNOTATION + else: + conflict_type = AnnotationConflictType.MISSING_ANNOTATION + + conflicts.append(AnnotationConflict( + frame_id=this_job_data_provider.dm_item_id_to_frame_id(error.item_id), + type=conflict_type, + annotation_ids=[error.ann], + message=str(error) + )) + elif isinstance(error, dm.errors.NoMatchingItemError): + assert False + elif isinstance(error, dm.errors.FailedLabelVotingError): + conflicts.append(AnnotationConflict( + frame_id=this_job_data_provider.dm_item_id_to_frame_id(error.item_id), + type=AnnotationConflictType.MISMATCHING_ANNOTATION, + data={ + 'kind': 'mismatching_shape_label', + 'attribute': error.key, + 'value1': error.a, + 'value2': error.b, + }, + message=str(error) + )) + elif isinstance(error, dm.errors.FailedAttrVotingError): + conflicts.append(AnnotationConflict( + frame_id=this_job_data_provider.dm_item_id_to_frame_id(error.item_id), + type=AnnotationConflictType.MISMATCHING_ANNOTATION, + data={ + 'kind': 'mismatching_shape_attribute', + 'attribute': error.key, + 'value1': error.a, + 'value2': error.b, + }, + message=str(error) + )) + elif isinstance(error, dm.errors.VideoMergeError): + assert False + else: + assert False + + + + + + return AnnotationConflictsReport( + job_id=current_job.id, + job_last_updated=current_job.updated_date, + gt_job_last_updated=gt_job.updated_date, + conflicts=conflicts + ) + +def find_gt_frame_conflicts(current_job: Job, gt_job: Job, *, frame_id: int) -> AnnotationConflictsReport: + this_job_extractor = dm.Dataset.from_extractors(GetCVATDataExtractor(current_job), env=dm_env) + gt_job_extractor = dm.Dataset.from_extractors(GetCVATDataExtractor(gt_job), env=dm_env) + + this_job_frame = this_job_extractor.get(frame_id) + gt_job_frame = gt_job_extractor.get(frame_id) + comparator = dm.ops.DistanceComparator() + conflicts = comparator.match_annotations(this_job_frame, gt_job_frame) + return AnnotationConflictsReport(conflicts) diff --git a/cvat/apps/engine/quality_control/models.py b/cvat/apps/engine/quality_control/models.py new file mode 100644 index 000000000000..bdd0835f0f11 --- /dev/null +++ b/cvat/apps/engine/quality_control/models.py @@ -0,0 +1,38 @@ +# Copyright (C) 2023 CVAT.ai Corporation +# +# SPDX-License-Identifier: MIT + +from datetime import datetime +from enum import Enum +from typing import List +from attrs import define, field + + +class AnnotationConflictType(str, Enum): + MISSING_ANNOTATION = 'missing_annotation' + EXTRA_ANNOTATION = 'extra_annotation' + MISMATCHING_ANNOTATION = 'mismatching_annotation' + + def __str__(self) -> str: + return self.value + +@define(kw_only=True) +class AnnotationId: + # TODO: think if uuids can be provided + type: str + index: int + +@define(kw_only=True) +class AnnotationConflict: + frame_id: int + type: AnnotationConflictType + annotation_ids: List[AnnotationId] = field(factory=list) + message: str + + +@define(kw_only=True) +class AnnotationConflictsReport: + job_id: int + job_last_updated: datetime + gt_job_last_updated: datetime + conflicts: List[AnnotationConflict] diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index f91a730f3bef..f89ba3f71da8 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -1826,3 +1826,10 @@ def _validate_existence_of_cloud_storage(cloud_storage_id): _ = models.CloudStorage.objects.get(id=cloud_storage_id) except models.CloudStorage.DoesNotExist: raise serializers.ValidationError(f'The specified cloud storage {cloud_storage_id} does not exist.') + + +class ConflictsReportSerializer(serializers.ModelSerializer): + class Meta: + model = models.AnnotationConflictsReport + fields = ('job_id',) + read_only_fields = fields diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index da83cd6e2198..505619cc00a3 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -7,6 +7,7 @@ import os import os.path as osp import textwrap +from typing import cast import pytz import traceback from datetime import datetime @@ -54,6 +55,7 @@ ) from cvat.apps.engine.models import CloudStorage as CloudStorageModel from cvat.apps.engine.parsers import TusUploadParser +from cvat.apps.engine import quality_control from cvat.apps.engine.serializers import ( AboutSerializer, AnnotationFileSerializer, BasicUserSerializer, DataMetaReadSerializer, DataMetaWriteSerializer, DataSerializer, @@ -1270,6 +1272,7 @@ def preview(self, request, pk): return data_getter(request, self._object.data.start_frame, self._object.data.stop_frame, self._object.data) + @extend_schema(tags=['jobs']) @extend_schema_view( create=extend_schema( @@ -1706,6 +1709,21 @@ def preview(self, request, pk): return data_getter(request, self._object.segment.start_frame, self._object.segment.stop_frame, self._object.segment.task.data) + @action(detail=True, methods=['GET'], url_path='gt_conflicts', serializer_class=None) + def gt_conflicts(self, request, pk): + # TODO: add automatic type inference to get_object + this_job = cast(Job, self.get_object()) # call check_object_permissions as well + + gt_job = this_job.segment.task.gt_job + if not gt_job: + raise ValidationError( + "The ground truth job is not set up for this task. Please create it and try again" + ) + + conflicts_report = quality_control.conflicts.find_gt_conflicts(this_job, gt_job) + + return Response(conflicts_report, status=status.HTTP_200_OK) + @extend_schema(tags=['issues']) @extend_schema_view( retrieve=extend_schema( From b46eb0c2e13bf0ed09a6cdc9a80a0accc964be68 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 7 Apr 2023 23:08:11 +0300 Subject: [PATCH 004/257] Implement annotation comparison --- cvat/apps/dataset_manager/bindings.py | 233 +++++++++------ cvat/apps/engine/models.py | 15 +- cvat/apps/engine/quality_control/conflicts.py | 279 ++++++++++++------ cvat/apps/engine/quality_control/models.py | 16 +- cvat/apps/engine/serializers.py | 2 +- cvat/apps/engine/views.py | 15 +- 6 files changed, 379 insertions(+), 181 deletions(-) diff --git a/cvat/apps/dataset_manager/bindings.py b/cvat/apps/dataset_manager/bindings.py index 9774627b19e2..55ef7e9442a4 100644 --- a/cvat/apps/dataset_manager/bindings.py +++ b/cvat/apps/dataset_manager/bindings.py @@ -1,16 +1,17 @@ - # Copyright (C) 2019-2022 Intel Corporation # Copyright (C) 2022-2023 CVAT.ai Corporation # # SPDX-License-Identifier: MIT +from __future__ import annotations + import os.path as osp import sys from collections import namedtuple from functools import reduce from pathlib import Path from types import SimpleNamespace -from typing import (Any, Callable, DefaultDict, Dict, List, Literal, Mapping, +from typing import (Any, Callable, DefaultDict, Dict, Iterable, List, Literal, Mapping, NamedTuple, OrderedDict, Set, Tuple, Union) import datumaro as dm @@ -177,7 +178,7 @@ class CommonData(InstanceLabelData): Tag.__new__.__defaults__ = (0, ) Frame = namedtuple( 'Frame', 'idx, id, frame, name, width, height, labeled_shapes, tags, shapes, labels') - Labels = namedtuple('Label', 'id, name, color, type') + Label = namedtuple('Label', 'id, name, color, type') def __init__(self, annotation_ir, db_task, host='', create_callback=None) -> None: self._dimension = annotation_ir.dimension @@ -352,7 +353,7 @@ def _export_track(self, track, idx): @staticmethod def _export_label(label): - return CommonData.Labels( + return CommonData.Label( id=label.id, name=label.name, color=label.color, @@ -1201,8 +1202,10 @@ def add_task(self, task, files): self._project_annotation.add_task(task, files, self) class CVATDataExtractorMixin: - def __init__(self, media_type=dm.Image): - super().__init__() + def __init__(self, *, + convert_annotations: Callable = None + ): + self.convert_annotations = convert_annotations or convert_cvat_anno_to_dm def categories(self) -> dict: raise NotImplementedError() @@ -1253,7 +1256,7 @@ def map_label(name, parent=''): return label_cat.find(name, parent)[0] for _, label in labels } - return convert_cvat_anno_to_dm(cvat_frame_anno, label_attrs, map_label) + return self.convert_annotations(cvat_frame_anno, label_attrs, map_label) class CvatTaskOrJobDataExtractor(dm.SourceExtractor, CVATDataExtractorMixin): @@ -1351,7 +1354,8 @@ def map_label(name, parent=''): return label_cat.find(name, parent)[0] for _, label in labels } - return convert_cvat_anno_to_dm(cvat_frame_anno, label_attrs, map_label, self._format_type, self._dimension) + return self.convert_annotations(cvat_frame_anno, + label_attrs, map_label, self._format_type, self._dimension) class CVATProjectDataExtractor(dm.Extractor, CVATDataExtractorMixin): def __init__(self, project_data: ProjectData, include_images: bool = False, format_type: str = None, dimension: DimensionType = DimensionType.DIM_2D): @@ -1508,14 +1512,30 @@ def get_defaulted_subset(subset: str, subsets: List[str]) -> str: raise Exception('Cannot find default name for subset') -def convert_cvat_anno_to_dm(cvat_frame_anno, label_attrs, map_label, format_name=None, dimension=DimensionType.DIM_2D): - item_anno = [] - - def convert_attrs(label, cvat_attrs): +class CvatToDmAnnotationConverter: + def __init__(self, + cvat_frame_anno: CommonData.Frame, + *, + label_attrs, + map_label, + format_name=None, + dimension: DimensionType = DimensionType.DIM_2D + ) -> None: + self.cvat_frame_anno = cvat_frame_anno + self.label_attrs = label_attrs + self.map_label = map_label + self.format_name = format_name + self.dimension = dimension + self.item_anno = [] + self.num_of_tracks = None + + def _convert_attrs(self, label: CommonData.Label, cvat_attrs: CommonData.Attribute): cvat_attrs = {a.name: a.value for a in cvat_attrs} + dm_attr = dict() - for _, a_desc in label_attrs[label]: + for _, a_desc in self.label_attrs[label]: a_name = a_desc['name'] + a_value = cvat_attrs.get(a_name, a_desc['default_value']) try: if a_desc['input_type'] == AttributeType.NUMBER: @@ -1527,105 +1547,148 @@ def convert_attrs(label, cvat_attrs): raise Exception( "Failed to convert attribute '%s'='%s': %s" % (a_name, a_value, e)) + return dm_attr - for tag_obj in cvat_frame_anno.tags: - anno_group = tag_obj.group or 0 - anno_label = map_label(tag_obj.label) - anno_attr = convert_attrs(tag_obj.label, tag_obj.attributes) - - anno = dm.Label(label=anno_label, - attributes=anno_attr, group=anno_group) - item_anno.append(anno) - - num_of_tracks = reduce(lambda a, x: a + (1 if getattr(x, 'track_id', None) is not None else 0), cvat_frame_anno.labeled_shapes, 0) - for index, shape_obj in enumerate(cvat_frame_anno.labeled_shapes): - anno_group = shape_obj.group or 0 - anno_label = map_label(shape_obj.label) - anno_attr = convert_attrs(shape_obj.label, shape_obj.attributes) - anno_attr['occluded'] = shape_obj.occluded - if shape_obj.type == ShapeType.RECTANGLE: - anno_attr['rotation'] = shape_obj.rotation - - if hasattr(shape_obj, 'track_id'): - anno_attr['track_id'] = shape_obj.track_id - anno_attr['keyframe'] = shape_obj.keyframe - - anno_points = shape_obj.points - if shape_obj.type == ShapeType.POINTS: - anno = dm.Points(anno_points, - label=anno_label, attributes=anno_attr, group=anno_group, - z_order=shape_obj.z_order) - elif shape_obj.type == ShapeType.ELLIPSE: + def _convert_tag(self, tag: CommonData.Tag) -> Iterable[dm.Annotation]: + anno_group = tag.group or 0 + anno_label = self.map_label(tag.label) + anno_attr = self._convert_attrs(tag.label, tag.attributes) + return [dm.Label(label=anno_label, attributes=anno_attr, group=anno_group)] + + def _convert_tags(self, tags) -> Iterable[dm.Annotation]: + return map(self._convert_tag, tags) + + def _convert_shape(self, + shape: CommonData.LabeledShape, *, index: int + ) -> Iterable[dm.Annotation]: + dm_group = shape.group or 0 + dm_label = self.map_label(shape.label) + + dm_attr = self._convert_attrs(shape.label, shape.attributes) + dm_attr['occluded'] = shape.occluded + + if shape.type == ShapeType.RECTANGLE: + dm_attr['rotation'] = shape.rotation + + if hasattr(shape, 'track_id'): + dm_attr['track_id'] = shape.track_id + dm_attr['keyframe'] = shape.keyframe + + dm_points = shape.points + + if shape.type == ShapeType.POINTS: + anno = dm.Points(dm_points, + label=dm_label, attributes=dm_attr, group=dm_group, + z_order=shape.z_order) + elif shape.type == ShapeType.ELLIPSE: # TODO: for now Datumaro does not support ellipses # so, we convert an ellipse to RLE mask here # instead of applying transformation in directly in formats anno = EllipsesToMasks.convert_ellipse(SimpleNamespace(**{ - "points": shape_obj.points, - "label": anno_label, - "z_order": shape_obj.z_order, - "rotation": shape_obj.rotation, - "group": anno_group, - "attributes": anno_attr, - }), cvat_frame_anno.height, cvat_frame_anno.width) - elif shape_obj.type == ShapeType.MASK: + "points": shape.points, + "label": dm_label, + "z_order": shape.z_order, + "rotation": shape.rotation, + "group": dm_group, + "attributes": dm_attr, + }), self.cvat_frame_anno.height, self.cvat_frame_anno.width) + elif shape.type == ShapeType.MASK: anno = CVATRleToCOCORle.convert_mask(SimpleNamespace(**{ - "points": shape_obj.points, - "label": anno_label, - "z_order": shape_obj.z_order, - "rotation": shape_obj.rotation, - "group": anno_group, - "attributes": anno_attr, - }), cvat_frame_anno.height, cvat_frame_anno.width) - elif shape_obj.type == ShapeType.POLYLINE: - anno = dm.PolyLine(anno_points, - label=anno_label, attributes=anno_attr, group=anno_group, - z_order=shape_obj.z_order) - elif shape_obj.type == ShapeType.POLYGON: - anno = dm.Polygon(anno_points, - label=anno_label, attributes=anno_attr, group=anno_group, - z_order=shape_obj.z_order) - elif shape_obj.type == ShapeType.RECTANGLE: - x0, y0, x1, y1 = anno_points + "points": shape.points, + "label": dm_label, + "z_order": shape.z_order, + "rotation": shape.rotation, + "group": dm_group, + "attributes": dm_attr, + }), self.cvat_frame_anno.height, self.cvat_frame_anno.width) + elif shape.type == ShapeType.POLYLINE: + anno = dm.PolyLine(dm_points, + label=dm_label, attributes=dm_attr, group=dm_group, + z_order=shape.z_order) + elif shape.type == ShapeType.POLYGON: + anno = dm.Polygon(dm_points, + label=dm_label, attributes=dm_attr, group=dm_group, + z_order=shape.z_order) + elif shape.type == ShapeType.RECTANGLE: + x0, y0, x1, y1 = dm_points anno = dm.Bbox(x0, y0, x1 - x0, y1 - y0, - label=anno_label, attributes=anno_attr, group=anno_group, - z_order=shape_obj.z_order) - elif shape_obj.type == ShapeType.CUBOID: - if dimension == DimensionType.DIM_3D: - anno_id = getattr(shape_obj, 'track_id', None) + label=dm_label, attributes=dm_attr, group=dm_group, + z_order=shape.z_order) + elif shape.type == ShapeType.CUBOID: + if self.dimension == DimensionType.DIM_3D: + anno_id = getattr(shape, 'track_id', None) if anno_id is None: - anno_id = num_of_tracks + index - position, rotation, scale = anno_points[0:3], anno_points[3:6], anno_points[6:9] + anno_id = self.num_of_tracks + index + position, rotation, scale = dm_points[0:3], dm_points[3:6], dm_points[6:9] anno = dm.Cuboid3d( id=anno_id, position=position, rotation=rotation, scale=scale, - label=anno_label, attributes=anno_attr, group=anno_group + label=dm_label, attributes=dm_attr, group=dm_group ) - else: - continue - elif shape_obj.type == ShapeType.SKELETON: + elif shape.type == ShapeType.SKELETON: elements = [] - for element in shape_obj.elements: - element_attr = convert_attrs(shape_obj.label + element.label, element.attributes) + for element in shape.elements: + element_attr = self._convert_attrs( + shape.label + element.label, element.attributes) if hasattr(element, 'track_id'): element_attr['track_id'] = element.track_id element_attr['keyframe'] = element.keyframe + element_vis = dm.Points.Visibility.visible if element.outside: element_vis = dm.Points.Visibility.absent elif element.occluded: element_vis = dm.Points.Visibility.hidden + elements.append(dm.Points(element.points, [element_vis], - label=map_label(element.label, shape_obj.label), attributes=element_attr)) + label=self.map_label(element.label, shape.label), + attributes=element_attr)) - anno = dm.Skeleton(elements, label=anno_label, - attributes=anno_attr, group=anno_group, z_order=shape_obj.z_order) + anno = dm.Skeleton(elements, label=dm_label, + attributes=dm_attr, group=dm_group, z_order=shape.z_order) else: - raise Exception("Unknown shape type '%s'" % shape_obj.type) + raise Exception("Unknown shape type '%s'" % shape.type) + + return [anno] + + def _convert_shapes(self, shapes) -> Iterable[dm.Annotation]: + dm_anno = [] + + self.num_of_tracks = reduce( + lambda a, x: a + (1 if getattr(x, 'track_id', None) is not None else 0), + shapes, + 0 + ) - item_anno.append(anno) + for index, shape in enumerate(shapes): + dm_anno.append(shape, index=index) + + return dm_anno + + def convert(self) -> List[dm.Annotation]: + dm_anno = [] + dm_anno.extend(self._convert_tags(self.cvat_frame_anno.tags)) + dm_anno.extend(self._convert_shapes(self.cvat_frame_anno.labeled_shapes)) + return dm_anno + + +def convert_cvat_anno_to_dm( + cvat_frame_anno, + label_attrs, + map_label, + format_name=None, + dimension=DimensionType.DIM_2D +) -> List[dm.Annotation]: + converter = CvatToDmAnnotationConverter( + cvat_frame_anno=cvat_frame_anno, + label_attrs=label_attrs, + map_label=map_label, + format_name=format_name, + dimension=dimension + ) + return converter.convert() - return item_anno def match_dm_item(item, instance_data, root_hint=None): is_video = instance_data.meta[instance_data.META_FIELD]['mode'] == 'interpolation' diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index 821c321f3514..1a95cfe9cd40 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -955,15 +955,16 @@ class AnnotationConflictType(quality_control.models.AnnotationConflictType): def choices(cls): return tuple((x.value, x.name) for x in cls) +class AnnotationConflictsReport(models.Model): + job = models.ForeignKey(Job, + on_delete=models.CASCADE, related_name='annotation_conflict_reports') + job_last_updated = models.DateTimeField() + gt_job_last_updated = models.DateTimeField() + class AnnotationConflict(models.Model): - conflicts = models.ForeignKey('ConflictReport', - on_delete=models.CASCADE, related_name='annotation_conflicts') + report = models.ForeignKey(AnnotationConflictsReport, + on_delete=models.CASCADE, related_name='conflicts') frame_id = models.IntegerField() type = models.CharField(max_length=32, choices=AnnotationConflictType.choices()) message = models.CharField(max_length=1024, blank=True, default="") data = models.JSONField() - -class AnnotationConflictsReport(models.Model): - job = models.ForeignKey(Job, on_delete=models.CASCADE, related_name='annotation_conflict_reports') - job_last_updated = models.DateTimeField() - gt_job_last_updated = models.DateTimeField() diff --git a/cvat/apps/engine/quality_control/conflicts.py b/cvat/apps/engine/quality_control/conflicts.py index 0dea6656a43e..56840faf3c17 100644 --- a/cvat/apps/engine/quality_control/conflicts.py +++ b/cvat/apps/engine/quality_control/conflicts.py @@ -2,18 +2,22 @@ # # SPDX-License-Identifier: MIT -from typing import Tuple +from typing import Hashable, List, Optional, Union + import datumaro as dm +from django.db import transaction from cvat.apps.dataset_manager.task import JobAnnotation -from cvat.apps.engine.models import Job -from cvat.apps.dataset_manager.bindings import GetCVATDataExtractor, JobData +from cvat.apps.dataset_manager.bindings import (CommonData, CvatToDmAnnotationConverter, + GetCVATDataExtractor, JobData) from cvat.apps.dataset_manager.formats.registry import dm_env +import cvat.apps.engine.models as db_models -from .models import AnnotationConflictsReport, AnnotationConflict, AnnotationConflictType +from .models import (AnnotationConflictsReport, AnnotationConflict, AnnotationConflictType, + AnnotationId) -class JobDataProvider: +class _JobDataProvider: def __init__(self, job_id: int) -> None: self.job_id = job_id self.job_annotation = JobAnnotation(job_id) @@ -21,96 +25,205 @@ def __init__(self, job_id: int) -> None: annotation_ir=self.job_annotation.ir_data, db_job=self.job_annotation.db_job ) - self.dm_dataset = dm.Dataset.from_extractors( - GetCVATDataExtractor(self.job_data), - env=dm_env - ) - def dm_item_id_to_frame_id(self, item_id: Tuple[str, str]) -> int: - path, _ = item_id[0] - return self.job_data.match_frame(path) - -def find_gt_conflicts(current_job: Job, gt_job: Job) -> AnnotationConflictsReport: - this_job_data_provider = JobDataProvider(current_job.pk) - gt_job_data_provider = JobDataProvider(gt_job.pk) - - this_job_dataset = this_job_data_provider.dm_dataset - gt_job_dataset = gt_job_data_provider.dm_dataset - merger = dm.ops.IntersectMerge() - merger([gt_job_dataset, this_job_dataset]) - - conflicts = [] - for error in merger.errors: - if isinstance(error, dm.errors.MismatchingImageInfoError): - assert False - elif isinstance(error, dm.errors.MismatchingMediaPathError): - assert False - elif isinstance(error, dm.errors.MismatchingMediaError): - assert False - elif isinstance(error, dm.errors.MismatchingAttributesError): - assert False - elif isinstance(error, dm.errors.ConflictingCategoriesError): - assert False - elif isinstance(error, dm.errors.NoMatchingAnnError): - if 0 in error.sources: - conflict_type = AnnotationConflictType.EXTRA_ANNOTATION - else: - conflict_type = AnnotationConflictType.MISSING_ANNOTATION + self._annotation_memo = _MemoizingAnnotationConverterFactory() + extractor = GetCVATDataExtractor(self.job_data) + extractor.convert_annotations = self._annotation_memo + self.dm_dataset = dm.Dataset.from_extractors(extractor, env=dm_env) + + def dm_item_id_to_frame_id(self, item_id: str) -> int: + return self.job_data.match_frame(item_id) + + def dm_ann_to_ann_id(self, ann: dm.Annotation) -> AnnotationId: + source_ann = self._annotation_memo.get_source_ann(ann) + ann_type = 'tag' if isinstance(ann, CommonData.Tag) else source_ann.type + return AnnotationId(id=source_ann.id, type=ann_type, job_id=self.job_id) + + +class _MemoizingAnnotationConverterFactory: + def __init__(self): + self._annotation_mapping = {} # dm annotation -> cvat annotation + + def remember_conversion(self, cvat_ann, dm_anns): + for dm_ann in dm_anns: + self._annotation_mapping[self._make_key(dm_ann)] = cvat_ann + + def _make_key(self, dm_ann: dm.Annotation) -> Hashable: + return id(dm_ann) + + def get_source_ann( + self, dm_ann: dm.Annotation + ) -> Union[CommonData.Tag, CommonData.LabeledShape]: + return self._annotation_mapping[self._make_key(dm_ann)] + + def clear(self): + self._annotation_mapping.clear() + + def convert_cvat_anno_to_dm(self, *args, **kwargs) -> List[dm.Annotation]: + self.clear() # old annotations will be irrelevant + + converter = _MemoizingAnnotationConverter(*args, factory=self, **kwargs) + return converter.convert() + +class _MemoizingAnnotationConverter(CvatToDmAnnotationConverter): + def __init__(self, + cvat_frame_anno: CommonData.Frame, + *, + factory: _MemoizingAnnotationConverterFactory, + **kwargs + ) -> None: + super().__init__(cvat_frame_anno, **kwargs) + self._factory = factory + + def _convert_tag(self, tag): + converted = list(super()._convert_tag(tag)) + self._factory.remember_conversion(tag, converted.copy()) + return converted + + def _convert_shape(self, shape, *, index): + converted = list(super()._convert_shape(shape, index=index)) + self._factory.remember_conversion(shape, converted.copy()) + return converted + + +@transaction.atomic +def _save_report_to_db( + report: AnnotationConflictsReport, job: db_models.Job +) -> db_models.AnnotationConflictsReport: + db_report = db_models.AnnotationConflictsReport.objects.create(**report.to_dict(), job=job) + db_report.conflicts = db_models.AnnotationConflict.objects.bulk_create([ + db_models.AnnotationConflict(**conflict.to_dict(), ) + for conflict in report.conflicts + ]) + return db_report + + +class DatasetComparator: + def __init__(self, + this_job_data_provider: _JobDataProvider, + gt_job_data_provider: _JobDataProvider + ) -> None: + self._this_job_data_provider = this_job_data_provider + self._gt_job_data_provider = gt_job_data_provider + self._comparator = dm.ops.DistanceComparator() + + def find_gt_conflicts(self) -> List[AnnotationConflict]: + this_job_dataset = self._gt_job_data_provider.dm_dataset + gt_job_dataset = self._gt_job_data_provider.dm_dataset + + conflicts = [] + for gt_item in gt_job_dataset: + this_item = this_job_dataset.get(gt_item.id) + if not this_item: + continue # we need to compare only intersecting frames + + frame_id = self._gt_job_data_provider.dm_item_id_to_frame_id(this_item.id) + frame_results = self._comparator.match_annotations(gt_item, this_item) + + conflicts.extend(self._generate_frame_annotation_conflicts(frame_id, frame_results)) + + return conflicts + def find_frame_gt_conflicts(self, frame_id: int) -> List[AnnotationConflict]: + this_job_dataset = self._gt_job_data_provider.dm_dataset + gt_job_dataset = self._gt_job_data_provider.dm_dataset + + conflicts = [] + + for gt_item in gt_job_dataset: + this_item = this_job_dataset.get(gt_item.id) + if not this_item: + continue # we need to compare only intersecting frames + + _frame_id = self._gt_job_data_provider.dm_item_id_to_frame_id(this_item.id) + if frame_id != _frame_id: + # TODO: find more optimal way + continue + + frame_results = self._comparator.match_annotations(gt_item, this_item) + + conflicts.extend(self._generate_frame_annotation_conflicts(_frame_id, frame_results)) + + break + + return conflicts + + def _generate_frame_annotation_conflicts(self, frame_id, frame_results): + conflicts = [] + + merged_results = [[], [], [], []] + for shape_type in [ + dm.AnnotationType.bbox, dm.AnnotationType.mask, + dm.AnnotationType.points, dm.AnnotationType.polygon, dm.AnnotationType.polyline + ]: + for merged_field, field in zip(merged_results, frame_results[shape_type]): + merged_field.extend(field) + + _, mispred, gt_unmatched, this_unmatched = merged_results + + for unmatched_ann in gt_unmatched: conflicts.append(AnnotationConflict( - frame_id=this_job_data_provider.dm_item_id_to_frame_id(error.item_id), - type=conflict_type, - annotation_ids=[error.ann], - message=str(error) + frame_id=frame_id, + type=AnnotationConflictType.MISSING_ANNOTATION, + annotation_ids=[self._gt_job_data_provider.dm_ann_to_ann_id(unmatched_ann)], )) - elif isinstance(error, dm.errors.NoMatchingItemError): - assert False - elif isinstance(error, dm.errors.FailedLabelVotingError): + + for unmatched_ann in this_unmatched: conflicts.append(AnnotationConflict( - frame_id=this_job_data_provider.dm_item_id_to_frame_id(error.item_id), - type=AnnotationConflictType.MISMATCHING_ANNOTATION, - data={ - 'kind': 'mismatching_shape_label', - 'attribute': error.key, - 'value1': error.a, - 'value2': error.b, - }, - message=str(error) + frame_id=frame_id, + type=AnnotationConflictType.EXTRA_ANNOTATION, + annotation_ids=[self._this_job_data_provider.dm_ann_to_ann_id(unmatched_ann)], )) - elif isinstance(error, dm.errors.FailedAttrVotingError): + + for gt_ann, this_ann in mispred: conflicts.append(AnnotationConflict( - frame_id=this_job_data_provider.dm_item_id_to_frame_id(error.item_id), + frame_id=frame_id, type=AnnotationConflictType.MISMATCHING_ANNOTATION, + annotation_ids=[ + self._this_job_data_provider.dm_ann_to_ann_id(this_ann), + self._gt_job_data_provider.dm_ann_to_ann_id(gt_ann), + ], data={ - 'kind': 'mismatching_shape_attribute', - 'attribute': error.key, - 'value1': error.a, - 'value2': error.b, + 'kind': 'mismatching_label', + 'value1': gt_ann.label, + 'value2': this_ann.label, }, - message=str(error) )) - elif isinstance(error, dm.errors.VideoMergeError): - assert False - else: - assert False - - - - - return AnnotationConflictsReport( - job_id=current_job.id, - job_last_updated=current_job.updated_date, + # TODO: Need to check for mismatching attributes + # for gt_ann, this_ann in matches: + # + # conflicts.append(AnnotationConflict( + # frame_id=gt_job_data_provider.dm_item_id_to_frame_id(error.item_id), + # type=AnnotationConflictType.MISMATCHING_ANNOTATION, + # data={ + # 'kind': 'mismatching_shape_attribute', + # 'attribute': error.key, + # 'value1': error.a, + # 'value2': error.b, + # }, + # message=str(error) + # )) + + return conflicts + + +def find_gt_conflicts( + this_job: db_models.Job, gt_job: db_models.Job, *, frame_id: Optional[int] = None +) -> db_models.AnnotationConflictsReport: + this_job_data_provider = _JobDataProvider(this_job.pk) + gt_job_data_provider = _JobDataProvider(gt_job.pk) + + comparator = DatasetComparator(this_job_data_provider, gt_job_data_provider) + if frame_id is not None: + conflicts = comparator.find_frame_gt_conflicts(frame_id=frame_id) + else: + conflicts = comparator.find_gt_conflicts() + + report = AnnotationConflictsReport( + job_id=this_job.id, + job_last_updated=this_job.updated_date, gt_job_last_updated=gt_job.updated_date, conflicts=conflicts ) - -def find_gt_frame_conflicts(current_job: Job, gt_job: Job, *, frame_id: int) -> AnnotationConflictsReport: - this_job_extractor = dm.Dataset.from_extractors(GetCVATDataExtractor(current_job), env=dm_env) - gt_job_extractor = dm.Dataset.from_extractors(GetCVATDataExtractor(gt_job), env=dm_env) - - this_job_frame = this_job_extractor.get(frame_id) - gt_job_frame = gt_job_extractor.get(frame_id) - comparator = dm.ops.DistanceComparator() - conflicts = comparator.match_annotations(this_job_frame, gt_job_frame) - return AnnotationConflictsReport(conflicts) + return _save_report_to_db(report, job=this_job) diff --git a/cvat/apps/engine/quality_control/models.py b/cvat/apps/engine/quality_control/models.py index bdd0835f0f11..c8ab9e928f2f 100644 --- a/cvat/apps/engine/quality_control/models.py +++ b/cvat/apps/engine/quality_control/models.py @@ -5,7 +5,7 @@ from datetime import datetime from enum import Enum from typing import List -from attrs import define, field +from attrs import asdict, define, field class AnnotationConflictType(str, Enum): @@ -16,11 +16,17 @@ class AnnotationConflictType(str, Enum): def __str__(self) -> str: return self.value + @define(kw_only=True) class AnnotationId: # TODO: think if uuids can be provided type: str - index: int + id: int + job_id: int + + def to_dict(self) -> dict: + return asdict(self) + @define(kw_only=True) class AnnotationConflict: @@ -29,6 +35,9 @@ class AnnotationConflict: annotation_ids: List[AnnotationId] = field(factory=list) message: str + def to_dict(self) -> dict: + return asdict(self) + @define(kw_only=True) class AnnotationConflictsReport: @@ -36,3 +45,6 @@ class AnnotationConflictsReport: job_last_updated: datetime gt_job_last_updated: datetime conflicts: List[AnnotationConflict] + + def to_dict(self) -> dict: + return asdict(self) diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index f89ba3f71da8..f2856060fa7a 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -1828,7 +1828,7 @@ def _validate_existence_of_cloud_storage(cloud_storage_id): raise serializers.ValidationError(f'The specified cloud storage {cloud_storage_id} does not exist.') -class ConflictsReportSerializer(serializers.ModelSerializer): +class AnnotationConflictsReportSerializer(serializers.ModelSerializer): class Meta: model = models.AnnotationConflictsReport fields = ('job_id',) diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index 505619cc00a3..85b32e79805c 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -57,7 +57,7 @@ from cvat.apps.engine.parsers import TusUploadParser from cvat.apps.engine import quality_control from cvat.apps.engine.serializers import ( - AboutSerializer, AnnotationFileSerializer, BasicUserSerializer, + AboutSerializer, AnnotationConflictsReportSerializer, AnnotationFileSerializer, BasicUserSerializer, DataMetaReadSerializer, DataMetaWriteSerializer, DataSerializer, FileInfoSerializer, JobReadSerializer, JobWriteSerializer, LabelSerializer, LabeledDataSerializer, @@ -1720,9 +1720,18 @@ def gt_conflicts(self, request, pk): "The ground truth job is not set up for this task. Please create it and try again" ) - conflicts_report = quality_control.conflicts.find_gt_conflicts(this_job, gt_job) + frame_id = request.query_params.get('frame_id', None) + if frame_id is not None: + if not this_job.segment.contains_frame(frame_id): + raise ValidationError("This frame does not belong to this job") - return Response(conflicts_report, status=status.HTTP_200_OK) + if not gt_job.segment.contains_frame(frame_id): + raise ValidationError("This frame does not belong to the Ground Truth job") + + report = quality_control.conflicts.find_gt_conflicts(this_job, gt_job, frame_id=frame_id) + + report_serializer = AnnotationConflictsReportSerializer(report) + return Response(report_serializer.data, status=status.HTTP_200_OK) @extend_schema(tags=['issues']) @extend_schema_view( From fa1e394137e17cf5a030b73208c142d567c0e7d2 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 10 Apr 2023 20:53:44 +0300 Subject: [PATCH 005/257] Fixes --- cvat/apps/dataset_manager/bindings.py | 54 ++- cvat/apps/engine/compare_datasets.py | 201 ++++++++++ ...ationconflict_annotationconflictsreport.py | 34 ++ .../migrations/0070_alter_segment_frames.py | 19 + cvat/apps/engine/models.py | 108 +++++- cvat/apps/engine/quality_control.py | 346 ++++++++++++++++++ cvat/apps/engine/quality_control/__init__.py | 2 - cvat/apps/engine/quality_control/conflicts.py | 229 ------------ cvat/apps/engine/quality_control/models.py | 50 --- cvat/apps/engine/serializers.py | 11 +- cvat/apps/engine/views.py | 10 +- cvat/schema.yml | 87 +++++ tests/python/rest_api/test_jobs.py | 46 +++ 13 files changed, 894 insertions(+), 303 deletions(-) create mode 100644 cvat/apps/engine/compare_datasets.py create mode 100644 cvat/apps/engine/migrations/0069_annotationconflict_annotationconflictsreport.py create mode 100644 cvat/apps/engine/migrations/0070_alter_segment_frames.py create mode 100644 cvat/apps/engine/quality_control.py delete mode 100644 cvat/apps/engine/quality_control/__init__.py delete mode 100644 cvat/apps/engine/quality_control/conflicts.py delete mode 100644 cvat/apps/engine/quality_control/models.py diff --git a/cvat/apps/dataset_manager/bindings.py b/cvat/apps/dataset_manager/bindings.py index 55ef7e9442a4..195a4df2bb21 100644 --- a/cvat/apps/dataset_manager/bindings.py +++ b/cvat/apps/dataset_manager/bindings.py @@ -9,6 +9,7 @@ import sys from collections import namedtuple from functools import reduce +from operator import add from pathlib import Path from types import SimpleNamespace from typing import (Any, Callable, DefaultDict, Dict, Iterable, List, Literal, Mapping, @@ -167,14 +168,14 @@ def _export_attributes(self, attributes): class CommonData(InstanceLabelData): Shape = namedtuple("Shape", 'id, label_id') # 3d LabeledShape = namedtuple( - 'LabeledShape', 'type, frame, label, points, occluded, attributes, source, rotation, group, z_order, elements, outside') + 'LabeledShape', 'id, type, frame, label, points, occluded, attributes, source, rotation, group, z_order, elements, outside') LabeledShape.__new__.__defaults__ = (0, 0, 0, [], False) TrackedShape = namedtuple( - 'TrackedShape', 'type, frame, points, occluded, outside, keyframe, attributes, rotation, source, group, z_order, label, track_id, elements') + 'TrackedShape', 'id, type, frame, points, occluded, outside, keyframe, attributes, rotation, source, group, z_order, label, track_id, elements') TrackedShape.__new__.__defaults__ = (0, 'manual', 0, 0, None, 0, []) - Track = namedtuple('Track', 'label, group, source, shapes, elements') + Track = namedtuple('Track', 'id, label, group, source, shapes, elements') Track.__new__.__defaults__ = ([], ) - Tag = namedtuple('Tag', 'frame, label, attributes, source, group') + Tag = namedtuple('Tag', 'id, frame, label, attributes, source, group') Tag.__new__.__defaults__ = (0, ) Frame = namedtuple( 'Frame', 'idx, id, frame, name, width, height, labeled_shapes, tags, shapes, labels') @@ -284,6 +285,7 @@ def _init_meta(self): def _export_tracked_shape(self, shape): return CommonData.TrackedShape( + id=shape["id"], type=shape["type"], frame=self.abs_frame_id(shape["frame"]), label=self._get_label_name(shape["label_id"]), @@ -302,6 +304,7 @@ def _export_tracked_shape(self, shape): def _export_labeled_shape(self, shape): return CommonData.LabeledShape( + id=shape["id"], type=shape["type"], label=self._get_label_name(shape["label_id"]), frame=self.abs_frame_id(shape["frame"]), @@ -324,6 +327,7 @@ def _export_shape(self, shape): def _export_tag(self, tag): return CommonData.Tag( + id=tag["id"], frame=self.abs_frame_id(tag["frame"]), label=self._get_label_name(tag["label_id"]), group=tag.get("group", 0), @@ -343,6 +347,7 @@ def _export_track(self, track, idx): tracked_shape["label_id"] = track["label_id"] return CommonData.Track( + id=track["id"], label=self._get_label_name(track["label_id"]), group=track["group"], source=track["source"], @@ -1260,8 +1265,18 @@ def map_label(name, parent=''): return label_cat.find(name, parent)[0] class CvatTaskOrJobDataExtractor(dm.SourceExtractor, CVATDataExtractorMixin): - def __init__(self, instance_data: CommonData, include_images=False, format_type=None, dimension=DimensionType.DIM_2D): + def __init__( + self, + instance_data: CommonData, + *, + include_images: bool = False, + format_type: str = None, + dimension: DimensionType = DimensionType.DIM_2D, + **kwargs + ): super().__init__(media_type=dm.Image if dimension == DimensionType.DIM_2D else PointCloud) + CVATDataExtractorMixin.__init__(self, **kwargs) + instance_meta = instance_data.meta[instance_data.META_FIELD] self._categories = self._load_categories(instance_meta['labels']) self._user = self._load_user_info(instance_meta) if dimension == DimensionType.DIM_3D else {} @@ -1358,8 +1373,18 @@ def map_label(name, parent=''): return label_cat.find(name, parent)[0] label_attrs, map_label, self._format_type, self._dimension) class CVATProjectDataExtractor(dm.Extractor, CVATDataExtractorMixin): - def __init__(self, project_data: ProjectData, include_images: bool = False, format_type: str = None, dimension: DimensionType = DimensionType.DIM_2D): + def __init__( + self, + project_data: ProjectData, + *, + include_images: bool = False, + format_type: str = None, + dimension: DimensionType = DimensionType.DIM_2D, + **kwargs + ): super().__init__(media_type=dm.Image if dimension == DimensionType.DIM_2D else PointCloud) + CVATDataExtractorMixin.__init__(self, **kwargs) + self._categories = self._load_categories(project_data.meta[project_data.META_FIELD]['labels']) self._user = self._load_user_info(project_data.meta[project_data.META_FIELD]) if dimension == DimensionType.DIM_3D else {} self._dimension = dimension @@ -1467,11 +1492,17 @@ def GetCVATDataExtractor( include_images: bool = False, format_type: str = None, dimension: DimensionType = DimensionType.DIM_2D, + **kwargs ): + kwargs.update({ + 'include_images': include_images, + 'format_type': format_type, + 'dimension': dimension, + }) if isinstance(instance_data, ProjectData): - return CVATProjectDataExtractor(instance_data, include_images, format_type, dimension) + return CVATProjectDataExtractor(instance_data, **kwargs) else: - return CvatTaskOrJobDataExtractor(instance_data, include_images, format_type, dimension) + return CvatTaskOrJobDataExtractor(instance_data, **kwargs) class CvatImportError(Exception): pass @@ -1515,7 +1546,6 @@ def get_defaulted_subset(subset: str, subsets: List[str]) -> str: class CvatToDmAnnotationConverter: def __init__(self, cvat_frame_anno: CommonData.Frame, - *, label_attrs, map_label, format_name=None, @@ -1557,7 +1587,7 @@ def _convert_tag(self, tag: CommonData.Tag) -> Iterable[dm.Annotation]: return [dm.Label(label=anno_label, attributes=anno_attr, group=anno_group)] def _convert_tags(self, tags) -> Iterable[dm.Annotation]: - return map(self._convert_tag, tags) + return reduce(add, map(self._convert_tag, tags), []) def _convert_shape(self, shape: CommonData.LabeledShape, *, index: int @@ -1652,7 +1682,7 @@ def _convert_shape(self, return [anno] - def _convert_shapes(self, shapes) -> Iterable[dm.Annotation]: + def _convert_shapes(self, shapes: List[CommonData.LabeledShape]) -> Iterable[dm.Annotation]: dm_anno = [] self.num_of_tracks = reduce( @@ -1662,7 +1692,7 @@ def _convert_shapes(self, shapes) -> Iterable[dm.Annotation]: ) for index, shape in enumerate(shapes): - dm_anno.append(shape, index=index) + dm_anno.extend(self._convert_shape(shape, index=index)) return dm_anno diff --git a/cvat/apps/engine/compare_datasets.py b/cvat/apps/engine/compare_datasets.py new file mode 100644 index 000000000000..2a1a459646d3 --- /dev/null +++ b/cvat/apps/engine/compare_datasets.py @@ -0,0 +1,201 @@ +# Copyright (C) 2023 CVAT.ai Corporation +# +# SPDX-License-Identifier: MIT + +import argparse +from datetime import datetime +from enum import Enum +import json +import sys +from typing import List +from attrs import asdict, define, field + +import datumaro as dm + + +class AnnotationConflictType(str, Enum): + MISSING_ANNOTATION = 'missing_annotation' + EXTRA_ANNOTATION = 'extra_annotation' + MISMATCHING_ANNOTATION = 'mismatching_annotation' + + def __str__(self) -> str: + return self.value + + +@define(kw_only=True) +class AnnotationId: + # TODO: think if uuids can be provided + type: str + id: int + + def to_dict(self) -> dict: + return asdict(self) + + +@define(kw_only=True) +class AnnotationConflict: + frame_id: int + type: AnnotationConflictType + annotation_ids: List[AnnotationId] = field(factory=list) + message: str + + def to_dict(self) -> dict: + return asdict(self) + + +@define(kw_only=True) +class AnnotationConflictsReport: + job_id: int + job_last_updated: datetime + gt_job_last_updated: datetime + conflicts: List[AnnotationConflict] + + def to_dict(self) -> dict: + return asdict(self) + + +class _DistanceComparator(dm.ops.DistanceComparator): + def match_annotations(self, item_a, item_b): + return {t: self._match_ann_type(t, item_a, item_b) for t in dm.AnnotationType} + + def _match_ann_type(self, t, *args): + # pylint: disable=no-value-for-parameter + if t == dm.AnnotationType.label: + return self.match_labels(*args) + elif t == dm.AnnotationType.bbox: + return self.match_boxes(*args) + elif t == dm.AnnotationType.polygon: + return self.match_polygons(*args) + elif t == dm.AnnotationType.mask: + return self.match_masks(*args) + elif t == dm.AnnotationType.points: + return self.match_points(*args) + elif t == dm.AnnotationType.polyline: + return self.match_lines(*args) + # pylint: enable=no-value-for-parameter + else: + return None + +class DatasetComparator: + def __init__(self, + this_dataset: dm.Dataset, + gt_dataset: dm.Dataset + ) -> None: + self._this_dataset = this_dataset + self._gt_dataset = gt_dataset + self._comparator = _DistanceComparator() + + def _dm_ann_to_ann_id(self, ann: dm.Annotation, item: dm.DatasetItem, dataset: dm.Dataset): + if dataset is self._this_dataset: + source = 'this' + else: + source = 'gt' + + ann_idx = item.annotations.index(ann) + + return AnnotationId(type=source, id=ann_idx) + + def find_gt_conflicts(self) -> List[AnnotationConflict]: + this_job_dataset = self._this_dataset + gt_job_dataset = self._gt_dataset + + conflicts = [] + for gt_item in gt_job_dataset: + this_item = this_job_dataset.get(gt_item.id) + if not this_item: + continue # we need to compare only intersecting frames + + frame_id = this_item.id + frame_results = self._comparator.match_annotations(gt_item, this_item) + + conflicts.extend(self._generate_frame_annotation_conflicts( + frame_id, frame_results, this_item, gt_item + )) + + return conflicts + + def _generate_frame_annotation_conflicts( + self, frame_id: int, frame_results, this_item, gt_item + ) -> List[AnnotationConflict]: + conflicts = [] + + merged_results = [[], [], [], []] + for shape_type in [ + dm.AnnotationType.bbox, dm.AnnotationType.mask, + dm.AnnotationType.points, dm.AnnotationType.polygon, dm.AnnotationType.polyline + ]: + for merged_field, field in zip(merged_results, frame_results[shape_type]): + merged_field.extend(field) + + _, mispred, gt_unmatched, this_unmatched = merged_results + + for unmatched_ann in gt_unmatched: + conflicts.append(AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.MISSING_ANNOTATION, + data={ + 'annotation_ids': [ + self._dm_ann_to_ann_id(unmatched_ann, gt_item, self._gt_dataset) + ] + }, + )) + + for unmatched_ann in this_unmatched: + conflicts.append(AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.EXTRA_ANNOTATION, + data={ + 'annotation_ids': [ + self._dm_ann_to_ann_id(unmatched_ann, this_item, self._this_dataset) + ] + }, + )) + + for gt_ann, this_ann in mispred: + conflicts.append(AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.MISMATCHING_ANNOTATION, + data={ + 'annotation_ids': [ + self._dm_ann_to_ann_id(this_ann, this_item, self._this_dataset), + self._dm_ann_to_ann_id(gt_ann, gt_item, self._gt_dataset), + ], + 'kind': 'mismatching_label', + 'value1': gt_ann.label, + 'value2': this_ann.label, + }, + )) + + # TODO: Need to check for mismatching attributes + # for gt_ann, this_ann in matches: + # + # conflicts.append(AnnotationConflict( + # frame_id=gt_job_data_provider.dm_item_id_to_frame_id(error.item_id), + # type=AnnotationConflictType.MISMATCHING_ANNOTATION, + # data={ + # 'kind': 'mismatching_shape_attribute', + # 'attribute': error.key, + # 'value1': error.a, + # 'value2': error.b, + # }, + # message=str(error) + # )) + + return conflicts + +def main(args=None): + parser = argparse.ArgumentParser() + args = parser.parse_args(args) + + this_dataset = dm.Dataset.import_from(args.this_dataset) + other_dataset = dm.Dataset.import_from(args.gt_dataset) + + conflicts = DatasetComparator(this_dataset, other_dataset).find_gt_conflicts() + + with open(args.output_file, 'w') as f: + json.dump(conflicts, f) + + return 0 + +if __name__ == '__main__': + sys.exit(main()) \ No newline at end of file diff --git a/cvat/apps/engine/migrations/0069_annotationconflict_annotationconflictsreport.py b/cvat/apps/engine/migrations/0069_annotationconflict_annotationconflictsreport.py new file mode 100644 index 000000000000..e1035bc5b5d5 --- /dev/null +++ b/cvat/apps/engine/migrations/0069_annotationconflict_annotationconflictsreport.py @@ -0,0 +1,34 @@ +# Generated by Django 3.2.18 on 2023-04-10 17:50 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('engine', '0068_auto_20230406_1333'), + ] + + operations = [ + migrations.CreateModel( + name='AnnotationConflictsReport', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('job_last_updated', models.DateTimeField()), + ('gt_job_last_updated', models.DateTimeField()), + ('job', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='annotation_conflict_reports', to='engine.job')), + ], + ), + migrations.CreateModel( + name='AnnotationConflict', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('frame_id', models.PositiveIntegerField()), + ('type', models.CharField(choices=[('missing_annotation', 'MISSING_ANNOTATION'), ('extra_annotation', 'EXTRA_ANNOTATION'), ('mismatching_annotation', 'MISMATCHING_ANNOTATION')], max_length=32)), + ('message', models.CharField(blank=True, default='', max_length=1024)), + ('data', models.JSONField()), + ('report', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='conflicts', to='engine.annotationconflictsreport')), + ], + ), + ] diff --git a/cvat/apps/engine/migrations/0070_alter_segment_frames.py b/cvat/apps/engine/migrations/0070_alter_segment_frames.py new file mode 100644 index 000000000000..6e0bc5e62315 --- /dev/null +++ b/cvat/apps/engine/migrations/0070_alter_segment_frames.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.18 on 2023-04-10 19:07 + +import cvat.apps.engine.models +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('engine', '0069_annotationconflict_annotationconflictsreport'), + ] + + operations = [ + migrations.AlterField( + model_name='segment', + name='frames', + field=cvat.apps.engine.models.IntArrayField(blank=True, default=''), + ), + ] diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index 1a95cfe9cd40..bc2cf1e5d318 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -10,7 +10,7 @@ import shutil from enum import Enum from functools import cached_property -from typing import Optional +from typing import Any, Dict, Optional from django.conf import settings from django.contrib.auth.models import User @@ -21,7 +21,6 @@ from drf_spectacular.types import OpenApiTypes from drf_spectacular.utils import extend_schema_field -from cvat.apps.engine import quality_control from cvat.apps.engine.utils import parse_specific_attributes from cvat.apps.organizations.models import Organization from cvat.apps.events.utils import cache_deleted @@ -422,7 +421,7 @@ def get_tmp_dirname(self): @cached_property def gt_job(self) -> Optional[Job]: try: - return Job.objects.get(task=self, type=JobType.GROUND_TRUTH) + return Job.objects.get(segment__task=self, type=JobType.GROUND_TRUTH) except Job.DoesNotExist: return None @@ -506,7 +505,7 @@ class Segment(models.Model): type = models.CharField(choices=SegmentType.choices(), default=SegmentType.RANGE, max_length=32) # SegmentType.SPECIFIC_FRAMES fields - frames = IntArrayField(store_sorted=True, unique_values=True, null=True) + frames = IntArrayField(store_sorted=True, unique_values=True, default='', blank=True) def contains_frame(self, idx: int) -> bool: if self.type == SegmentType.RANGE: @@ -950,21 +949,118 @@ class Meta: default_permissions = () -class AnnotationConflictType(quality_control.models.AnnotationConflictType): +class AnnotationConflictType(str, Enum): + MISSING_ANNOTATION = 'missing_annotation' + EXTRA_ANNOTATION = 'extra_annotation' + MISMATCHING_ANNOTATION = 'mismatching_annotation' + + def __str__(self) -> str: + return self.value + @classmethod def choices(cls): return tuple((x.value, x.name) for x in cls) +class MismatchingAnnotationKind(str, Enum): + ATTRIBUTE = 'attribute' + LABEL = 'label' + + def __str__(self) -> str: + return self.value + + @classmethod + def choices(cls): + return tuple((x.value, x.name) for x in cls) + + class AnnotationConflictsReport(models.Model): job = models.ForeignKey(Job, on_delete=models.CASCADE, related_name='annotation_conflict_reports') job_last_updated = models.DateTimeField() gt_job_last_updated = models.DateTimeField() + class AnnotationConflict(models.Model): report = models.ForeignKey(AnnotationConflictsReport, on_delete=models.CASCADE, related_name='conflicts') - frame_id = models.IntegerField() + frame_id = models.PositiveIntegerField() type = models.CharField(max_length=32, choices=AnnotationConflictType.choices()) message = models.CharField(max_length=1024, blank=True, default="") data = models.JSONField() + + def clean(self): + class _AnnotationType(str, Enum): + TAG = 'tag' + + def __str__(self) -> str: + return self.value + + @classmethod + def choices(cls): + return tuple((x.value, x.name) for x in cls) + ShapeType.choices() + + class _MismatchingAnnotationConflict(models.Model): + kind = models.CharField(max_length=32, choices=MismatchingAnnotationKind.choices()) + expected = models.CharField(max_length=64, blank=True, null=True) + actual = models.CharField(max_length=64, blank=True, null=True) + + # KIND = ATTRIBUTE fields + attribute = models.CharField(max_length=64, null=True, blank=True, default=None) + + def clean(self) -> None: + if self.kind != MismatchingAnnotationKind.ATTRIBUTE: + if self.attribute is not None: + raise ValidationError( + "The 'attribute' field can only be used " + f"with the '{MismatchingAnnotationKind.ATTRIBUTE}' kind" + ) + else: + if not isinstance(self.attribute, str): + raise ValidationError("The 'attribute' field is required") + + if not self.attribute: + raise ValidationError("The 'attribute' field can not be empty") + + class _AnnotationId(models.Model): + my_id = models.AutoField(primary_key=True) # avoid name collision + id = models.PositiveIntegerField() + job_id = models.PositiveIntegerField() + type = models.CharField(max_length=32, choices=_AnnotationType.choices()) + + def _validate_annotation_ids(extra_data: Dict[str, Any], *, required_count: int): + annotation_ids = extra_data.pop('annotation_ids', None) + if annotation_ids is None: + raise ValidationError("Annotation ids must be provided") + elif not isinstance(annotation_ids, list): + raise ValidationError("Annotation ids must be a list") + else: + if len(annotation_ids) != required_count: + raise ValidationError(f"Expected exactly {required_count} annotation ids") + + for ann_id in annotation_ids: + if not isinstance(ann_id, dict): + raise ValidationError("Annotation ids must be a list of dicts") + _AnnotationId(**ann_id).full_clean() + + return annotation_ids + + if self.type == AnnotationConflictType.MISMATCHING_ANNOTATION: + if self.data is None: + raise ValidationError(f"Extra info must be provided in the 'data' field") + extra_data = self.data.copy() + + _validate_annotation_ids(extra_data, required_count=2) + + _MismatchingAnnotationConflict(**extra_data).full_clean() + + elif self.type in [ + AnnotationConflictType.EXTRA_ANNOTATION, AnnotationConflictType.MISSING_ANNOTATION + ]: + if self.data is None: + raise ValidationError(f"Extra info must be provided in the 'data' field") + extra_data = self.data.copy() + + _validate_annotation_ids(extra_data, required_count=1) + + else: + raise ValidationError(f"Unknown conflict type {self.type}") diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py new file mode 100644 index 000000000000..5391ea28b4df --- /dev/null +++ b/cvat/apps/engine/quality_control.py @@ -0,0 +1,346 @@ +# Copyright (C) 2023 CVAT.ai Corporation +# +# SPDX-License-Identifier: MIT + +from typing import Hashable, Iterator, List, Optional, Union + +from attrs import asdict, define +import datumaro as dm +from django.db import transaction + +from cvat.apps.dataset_manager.task import JobAnnotation +from cvat.apps.dataset_manager.bindings import (CommonData, CvatToDmAnnotationConverter, + GetCVATDataExtractor, JobData) +from cvat.apps.dataset_manager.formats.registry import dm_env +from cvat.apps.profiler import silk_profile + +from .models import (AnnotationConflictsReport, AnnotationConflict, + AnnotationConflictType, Job, MismatchingAnnotationKind) + + +@define(kw_only=True) +class AnnotationId: + # TODO: think if uuids can be provided + type: str + id: int + job_id: int + + def to_dict(self) -> dict: + return asdict(self) + + +class _JobDataProvider: + @transaction.atomic + def __init__(self, job_id: int) -> None: + self.job_id = job_id + self.job_annotation = JobAnnotation(job_id) + self.job_annotation.init_from_db() + self.job_data = JobData( + annotation_ir=self.job_annotation.ir_data, + db_job=self.job_annotation.db_job + ) + + self._annotation_memo = _MemoizingAnnotationConverterFactory() + extractor = GetCVATDataExtractor(self.job_data, + convert_annotations=self._annotation_memo) + self.dm_dataset = dm.Dataset.from_extractors(extractor, env=dm_env) + + def dm_item_id_to_frame_id(self, item_id: str) -> int: + return self.job_data.match_frame(item_id) + + def dm_ann_to_ann_id(self, ann: dm.Annotation) -> AnnotationId: + source_ann = self._annotation_memo.get_source_ann(ann) + ann_type = 'tag' if isinstance(ann, CommonData.Tag) else source_ann.type + return AnnotationId(id=source_ann.id, type=ann_type, job_id=self.job_id) + + +class _MemoizingAnnotationConverterFactory: + def __init__(self): + self._annotation_mapping = {} # dm annotation -> cvat annotation + + def remember_conversion(self, cvat_ann, dm_anns): + for dm_ann in dm_anns: + self._annotation_mapping[self._make_key(dm_ann)] = cvat_ann + + def _make_key(self, dm_ann: dm.Annotation) -> Hashable: + return id(dm_ann) + + def get_source_ann( + self, dm_ann: dm.Annotation + ) -> Union[CommonData.Tag, CommonData.LabeledShape]: + return self._annotation_mapping[self._make_key(dm_ann)] + + def clear(self): + self._annotation_mapping.clear() + + def __call__(self, *args, **kwargs) -> List[dm.Annotation]: + converter = _MemoizingAnnotationConverter(*args, factory=self, **kwargs) + return converter.convert() + +class _MemoizingAnnotationConverter(CvatToDmAnnotationConverter): + def __init__(self, + *args, + factory: _MemoizingAnnotationConverterFactory, + **kwargs + ) -> None: + super().__init__(*args, **kwargs) + self._factory = factory + + def _convert_tag(self, tag): + converted = list(super()._convert_tag(tag)) + self._factory.remember_conversion(tag, converted) + return converted + + def _convert_shape(self, shape, *, index): + converted = list(super()._convert_shape(shape, index=index)) + self._factory.remember_conversion(shape, converted) + return converted + + +@transaction.atomic +def _save_report_to_db( + report: AnnotationConflictsReport, conflicts: List[AnnotationConflict] +)-> AnnotationConflictsReport: + report.full_clean() + report.save() + + for c in conflicts: + c.report = report + + if annotation_ids := c.data.get('annotation_ids'): + c.data['annotation_ids'] = [a.to_dict() for a in annotation_ids] + c.full_clean() + + AnnotationConflict.objects.bulk_create(conflicts) + + return report + + +class _DistanceComparator(dm.ops.DistanceComparator): + def match_attrs(self, ann_a: dm.Annotation, ann_b: dm.Annotation): + a_attrs = ann_a.attributes + b_attrs = ann_b.attributes + + matches = [] + mismatches = [] + a_extra = [] + b_extra = [] + + notfound = object() + + for k in a_attrs.keys() | b_attrs.keys(): + a_attr = a_attrs.get(k, notfound) + b_attr = b_attrs.get(k, notfound) + + if a_attr is notfound: + b_extra.append(k) + elif b_attr is notfound: + a_extra.append(k) + elif a_attr == b_attr: + matches.append(k) + else: + mismatches.append(k) + + return matches, mismatches, a_extra, b_extra + + def match_annotations(self, item_a, item_b): + return {t: self._match_ann_type(t, item_a, item_b) for t in dm.AnnotationType} + + def _match_ann_type(self, t, *args): + # pylint: disable=no-value-for-parameter + if t == dm.AnnotationType.label: + return self.match_labels(*args) + elif t == dm.AnnotationType.bbox: + return self.match_boxes(*args) + elif t == dm.AnnotationType.polygon: + return self.match_polygons(*args) + elif t == dm.AnnotationType.mask: + return self.match_masks(*args) + elif t == dm.AnnotationType.points: + # TODO: test and fix point comparison + a_points = self._get_ann_type(dm.AnnotationType.points, args[0]) + b_points = self._get_ann_type(dm.AnnotationType.points, args[1]) + if not a_points and not b_points: + return [], [], [], [] + return self.match_points(*args) + elif t == dm.AnnotationType.polyline: + return self.match_lines(*args) + # pylint: enable=no-value-for-parameter + else: + return None + +class DatasetComparator: + def __init__(self, + this_job_data_provider: _JobDataProvider, + gt_job_data_provider: _JobDataProvider + ) -> None: + self._this_job_data_provider = this_job_data_provider + self._gt_job_data_provider = gt_job_data_provider + self._comparator = _DistanceComparator() + + def _iterate_datasets(self) -> Iterator: + this_job_dataset = self._this_job_data_provider.dm_dataset + gt_job_dataset = self._gt_job_data_provider.dm_dataset + + for gt_item in gt_job_dataset: + this_item = this_job_dataset.get(gt_item.id) + if not this_item: + continue # we need to compare only intersecting frames + + yield this_item, gt_item + + def find_gt_conflicts(self) -> List[AnnotationConflict]: + conflicts = [] + + for this_item, gt_item in self._iterate_datasets(): + frame_id = self._gt_job_data_provider.dm_item_id_to_frame_id(this_item.id) + frame_results = self._comparator.match_annotations(gt_item, this_item) + + conflicts.extend(self._generate_frame_annotation_conflicts(frame_id, frame_results)) + + return conflicts + + def find_frame_gt_conflicts(self, frame_id: int) -> List[AnnotationConflict]: + conflicts = [] + + for this_item, gt_item in self._iterate_datasets(): + _frame_id = self._gt_job_data_provider.dm_item_id_to_frame_id(this_item.id) + if frame_id != _frame_id: + # TODO: find more optimal way + continue + + frame_results = self._comparator.match_annotations(gt_item, this_item) + + conflicts.extend(self._generate_frame_annotation_conflicts(_frame_id, frame_results)) + + break + + return conflicts + + def _generate_frame_annotation_conflicts( + self, frame_id: int, frame_results + ) -> List[AnnotationConflict]: + conflicts = [] + + merged_results = [[], [], [], []] + for shape_type in [ + dm.AnnotationType.bbox, dm.AnnotationType.mask, + dm.AnnotationType.points, dm.AnnotationType.polygon, dm.AnnotationType.polyline + ]: + for merged_field, field in zip(merged_results, frame_results[shape_type]): + merged_field.extend(field) + + matches, mismatches, gt_unmatched, this_unmatched = merged_results + + for unmatched_ann in gt_unmatched: + conflicts.append(AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.MISSING_ANNOTATION, + data={ + 'annotation_ids': [ + self._gt_job_data_provider.dm_ann_to_ann_id(unmatched_ann) + ] + }, + )) + + for unmatched_ann in this_unmatched: + conflicts.append(AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.EXTRA_ANNOTATION, + data={ + 'annotation_ids': [ + self._this_job_data_provider.dm_ann_to_ann_id(unmatched_ann) + ] + }, + )) + + for gt_ann, this_ann in mismatches: + conflicts.append(AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.MISMATCHING_ANNOTATION, + data={ + 'annotation_ids': [ + self._this_job_data_provider.dm_ann_to_ann_id(this_ann), + self._gt_job_data_provider.dm_ann_to_ann_id(gt_ann), + ], + 'kind': MismatchingAnnotationKind.LABEL, + 'expected': gt_ann.label, + 'actual': this_ann.label, + }, + )) + + for gt_ann, this_ann in matches: + # Datumaro wont match attributes + _, attr_mismatches, attr_gt_extra, attr_this_extra = \ + self._comparator.match_attrs(gt_ann, this_ann) + + for mismatched_attr in attr_mismatches: + conflicts.append(AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.MISMATCHING_ANNOTATION, + data={ + 'annotation_ids': [ + self._this_job_data_provider.dm_ann_to_ann_id(this_ann), + self._gt_job_data_provider.dm_ann_to_ann_id(gt_ann), + ], + 'kind': MismatchingAnnotationKind.ATTRIBUTE, + 'attribute': mismatched_attr, + 'expected': gt_ann.attributes[mismatched_attr], + 'actual': this_ann.attributes[mismatched_attr], + }, + )) + + for extra_attr in attr_gt_extra: + conflicts.append(AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.MISMATCHING_ANNOTATION, + data={ + 'annotation_ids': [ + self._this_job_data_provider.dm_ann_to_ann_id(this_ann), + self._gt_job_data_provider.dm_ann_to_ann_id(gt_ann), + ], + 'kind': MismatchingAnnotationKind.ATTRIBUTE, + 'attribute': mismatched_attr, + 'expected': gt_ann.attributes[extra_attr], + 'actual': None, + }, + )) + + for extra_attr in attr_this_extra: + conflicts.append(AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.MISMATCHING_ANNOTATION, + data={ + 'annotation_ids': [ + self._this_job_data_provider.dm_ann_to_ann_id(this_ann), + self._gt_job_data_provider.dm_ann_to_ann_id(gt_ann), + ], + 'kind': MismatchingAnnotationKind.ATTRIBUTE, + 'attribute': mismatched_attr, + 'expected': None, + 'actual': this_ann.attributes[extra_attr], + }, + )) + + return conflicts + + +@silk_profile() +def find_gt_conflicts( + this_job: Job, gt_job: Job, *, frame_id: Optional[int] = None +) -> AnnotationConflictsReport: + this_job_data_provider = _JobDataProvider(this_job.pk) + gt_job_data_provider = _JobDataProvider(gt_job.pk) + + comparator = DatasetComparator(this_job_data_provider, gt_job_data_provider) + if frame_id is not None: + conflicts = comparator.find_frame_gt_conflicts(frame_id=frame_id) + else: + conflicts = comparator.find_gt_conflicts() + + report = AnnotationConflictsReport( + job=this_job, + job_last_updated=this_job.updated_date, + gt_job_last_updated=gt_job.updated_date, + ) + return _save_report_to_db(report, conflicts) diff --git a/cvat/apps/engine/quality_control/__init__.py b/cvat/apps/engine/quality_control/__init__.py deleted file mode 100644 index 48805af7b84a..000000000000 --- a/cvat/apps/engine/quality_control/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from . import models -from . import conflicts \ No newline at end of file diff --git a/cvat/apps/engine/quality_control/conflicts.py b/cvat/apps/engine/quality_control/conflicts.py deleted file mode 100644 index 56840faf3c17..000000000000 --- a/cvat/apps/engine/quality_control/conflicts.py +++ /dev/null @@ -1,229 +0,0 @@ -# Copyright (C) 2023 CVAT.ai Corporation -# -# SPDX-License-Identifier: MIT - -from typing import Hashable, List, Optional, Union - -import datumaro as dm -from django.db import transaction - -from cvat.apps.dataset_manager.task import JobAnnotation -from cvat.apps.dataset_manager.bindings import (CommonData, CvatToDmAnnotationConverter, - GetCVATDataExtractor, JobData) -from cvat.apps.dataset_manager.formats.registry import dm_env -import cvat.apps.engine.models as db_models - -from .models import (AnnotationConflictsReport, AnnotationConflict, AnnotationConflictType, - AnnotationId) - - -class _JobDataProvider: - def __init__(self, job_id: int) -> None: - self.job_id = job_id - self.job_annotation = JobAnnotation(job_id) - self.job_data = JobData( - annotation_ir=self.job_annotation.ir_data, - db_job=self.job_annotation.db_job - ) - - self._annotation_memo = _MemoizingAnnotationConverterFactory() - extractor = GetCVATDataExtractor(self.job_data) - extractor.convert_annotations = self._annotation_memo - self.dm_dataset = dm.Dataset.from_extractors(extractor, env=dm_env) - - def dm_item_id_to_frame_id(self, item_id: str) -> int: - return self.job_data.match_frame(item_id) - - def dm_ann_to_ann_id(self, ann: dm.Annotation) -> AnnotationId: - source_ann = self._annotation_memo.get_source_ann(ann) - ann_type = 'tag' if isinstance(ann, CommonData.Tag) else source_ann.type - return AnnotationId(id=source_ann.id, type=ann_type, job_id=self.job_id) - - -class _MemoizingAnnotationConverterFactory: - def __init__(self): - self._annotation_mapping = {} # dm annotation -> cvat annotation - - def remember_conversion(self, cvat_ann, dm_anns): - for dm_ann in dm_anns: - self._annotation_mapping[self._make_key(dm_ann)] = cvat_ann - - def _make_key(self, dm_ann: dm.Annotation) -> Hashable: - return id(dm_ann) - - def get_source_ann( - self, dm_ann: dm.Annotation - ) -> Union[CommonData.Tag, CommonData.LabeledShape]: - return self._annotation_mapping[self._make_key(dm_ann)] - - def clear(self): - self._annotation_mapping.clear() - - def convert_cvat_anno_to_dm(self, *args, **kwargs) -> List[dm.Annotation]: - self.clear() # old annotations will be irrelevant - - converter = _MemoizingAnnotationConverter(*args, factory=self, **kwargs) - return converter.convert() - -class _MemoizingAnnotationConverter(CvatToDmAnnotationConverter): - def __init__(self, - cvat_frame_anno: CommonData.Frame, - *, - factory: _MemoizingAnnotationConverterFactory, - **kwargs - ) -> None: - super().__init__(cvat_frame_anno, **kwargs) - self._factory = factory - - def _convert_tag(self, tag): - converted = list(super()._convert_tag(tag)) - self._factory.remember_conversion(tag, converted.copy()) - return converted - - def _convert_shape(self, shape, *, index): - converted = list(super()._convert_shape(shape, index=index)) - self._factory.remember_conversion(shape, converted.copy()) - return converted - - -@transaction.atomic -def _save_report_to_db( - report: AnnotationConflictsReport, job: db_models.Job -) -> db_models.AnnotationConflictsReport: - db_report = db_models.AnnotationConflictsReport.objects.create(**report.to_dict(), job=job) - db_report.conflicts = db_models.AnnotationConflict.objects.bulk_create([ - db_models.AnnotationConflict(**conflict.to_dict(), ) - for conflict in report.conflicts - ]) - return db_report - - -class DatasetComparator: - def __init__(self, - this_job_data_provider: _JobDataProvider, - gt_job_data_provider: _JobDataProvider - ) -> None: - self._this_job_data_provider = this_job_data_provider - self._gt_job_data_provider = gt_job_data_provider - self._comparator = dm.ops.DistanceComparator() - - def find_gt_conflicts(self) -> List[AnnotationConflict]: - this_job_dataset = self._gt_job_data_provider.dm_dataset - gt_job_dataset = self._gt_job_data_provider.dm_dataset - - conflicts = [] - for gt_item in gt_job_dataset: - this_item = this_job_dataset.get(gt_item.id) - if not this_item: - continue # we need to compare only intersecting frames - - frame_id = self._gt_job_data_provider.dm_item_id_to_frame_id(this_item.id) - frame_results = self._comparator.match_annotations(gt_item, this_item) - - conflicts.extend(self._generate_frame_annotation_conflicts(frame_id, frame_results)) - - return conflicts - - def find_frame_gt_conflicts(self, frame_id: int) -> List[AnnotationConflict]: - this_job_dataset = self._gt_job_data_provider.dm_dataset - gt_job_dataset = self._gt_job_data_provider.dm_dataset - - conflicts = [] - - for gt_item in gt_job_dataset: - this_item = this_job_dataset.get(gt_item.id) - if not this_item: - continue # we need to compare only intersecting frames - - _frame_id = self._gt_job_data_provider.dm_item_id_to_frame_id(this_item.id) - if frame_id != _frame_id: - # TODO: find more optimal way - continue - - frame_results = self._comparator.match_annotations(gt_item, this_item) - - conflicts.extend(self._generate_frame_annotation_conflicts(_frame_id, frame_results)) - - break - - return conflicts - - def _generate_frame_annotation_conflicts(self, frame_id, frame_results): - conflicts = [] - - merged_results = [[], [], [], []] - for shape_type in [ - dm.AnnotationType.bbox, dm.AnnotationType.mask, - dm.AnnotationType.points, dm.AnnotationType.polygon, dm.AnnotationType.polyline - ]: - for merged_field, field in zip(merged_results, frame_results[shape_type]): - merged_field.extend(field) - - _, mispred, gt_unmatched, this_unmatched = merged_results - - for unmatched_ann in gt_unmatched: - conflicts.append(AnnotationConflict( - frame_id=frame_id, - type=AnnotationConflictType.MISSING_ANNOTATION, - annotation_ids=[self._gt_job_data_provider.dm_ann_to_ann_id(unmatched_ann)], - )) - - for unmatched_ann in this_unmatched: - conflicts.append(AnnotationConflict( - frame_id=frame_id, - type=AnnotationConflictType.EXTRA_ANNOTATION, - annotation_ids=[self._this_job_data_provider.dm_ann_to_ann_id(unmatched_ann)], - )) - - for gt_ann, this_ann in mispred: - conflicts.append(AnnotationConflict( - frame_id=frame_id, - type=AnnotationConflictType.MISMATCHING_ANNOTATION, - annotation_ids=[ - self._this_job_data_provider.dm_ann_to_ann_id(this_ann), - self._gt_job_data_provider.dm_ann_to_ann_id(gt_ann), - ], - data={ - 'kind': 'mismatching_label', - 'value1': gt_ann.label, - 'value2': this_ann.label, - }, - )) - - # TODO: Need to check for mismatching attributes - # for gt_ann, this_ann in matches: - # - # conflicts.append(AnnotationConflict( - # frame_id=gt_job_data_provider.dm_item_id_to_frame_id(error.item_id), - # type=AnnotationConflictType.MISMATCHING_ANNOTATION, - # data={ - # 'kind': 'mismatching_shape_attribute', - # 'attribute': error.key, - # 'value1': error.a, - # 'value2': error.b, - # }, - # message=str(error) - # )) - - return conflicts - - -def find_gt_conflicts( - this_job: db_models.Job, gt_job: db_models.Job, *, frame_id: Optional[int] = None -) -> db_models.AnnotationConflictsReport: - this_job_data_provider = _JobDataProvider(this_job.pk) - gt_job_data_provider = _JobDataProvider(gt_job.pk) - - comparator = DatasetComparator(this_job_data_provider, gt_job_data_provider) - if frame_id is not None: - conflicts = comparator.find_frame_gt_conflicts(frame_id=frame_id) - else: - conflicts = comparator.find_gt_conflicts() - - report = AnnotationConflictsReport( - job_id=this_job.id, - job_last_updated=this_job.updated_date, - gt_job_last_updated=gt_job.updated_date, - conflicts=conflicts - ) - return _save_report_to_db(report, job=this_job) diff --git a/cvat/apps/engine/quality_control/models.py b/cvat/apps/engine/quality_control/models.py deleted file mode 100644 index c8ab9e928f2f..000000000000 --- a/cvat/apps/engine/quality_control/models.py +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright (C) 2023 CVAT.ai Corporation -# -# SPDX-License-Identifier: MIT - -from datetime import datetime -from enum import Enum -from typing import List -from attrs import asdict, define, field - - -class AnnotationConflictType(str, Enum): - MISSING_ANNOTATION = 'missing_annotation' - EXTRA_ANNOTATION = 'extra_annotation' - MISMATCHING_ANNOTATION = 'mismatching_annotation' - - def __str__(self) -> str: - return self.value - - -@define(kw_only=True) -class AnnotationId: - # TODO: think if uuids can be provided - type: str - id: int - job_id: int - - def to_dict(self) -> dict: - return asdict(self) - - -@define(kw_only=True) -class AnnotationConflict: - frame_id: int - type: AnnotationConflictType - annotation_ids: List[AnnotationId] = field(factory=list) - message: str - - def to_dict(self) -> dict: - return asdict(self) - - -@define(kw_only=True) -class AnnotationConflictsReport: - job_id: int - job_last_updated: datetime - gt_job_last_updated: datetime - conflicts: List[AnnotationConflict] - - def to_dict(self) -> dict: - return asdict(self) diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index f2856060fa7a..43c5aba85109 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -649,7 +649,7 @@ def create(self, validated_data): if invalid_ids: raise serializers.ValidationError( "The following frames are not included " - f"in the task: {','.join(invalid_ids)}" + f"in the task: {','.join(map(str, invalid_ids))}" ) else: raise serializers.ValidationError( @@ -1828,8 +1828,15 @@ def _validate_existence_of_cloud_storage(cloud_storage_id): raise serializers.ValidationError(f'The specified cloud storage {cloud_storage_id} does not exist.') +class AnnotationConflictSerializer(serializers.ModelSerializer): + class Meta: + model = models.AnnotationConflict + fields = ('frame_id', 'type', 'message', 'data') + class AnnotationConflictsReportSerializer(serializers.ModelSerializer): + conflicts = AnnotationConflictSerializer(many=True, default=[]) + class Meta: model = models.AnnotationConflictsReport - fields = ('job_id',) + fields = ('job_id', 'job_last_updated', 'gt_job_last_updated', 'conflicts') read_only_fields = fields diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index 85b32e79805c..4c52e2e07d58 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -43,6 +43,7 @@ import cvat.apps.dataset_manager as dm import cvat.apps.dataset_manager.views # pylint: disable=unused-import +import cvat.apps.engine.quality_control as qc from cvat.apps.engine.cloud_provider import db_storage_to_storage_instance from cvat.apps.dataset_manager.bindings import CvatImportError from cvat.apps.dataset_manager.serializers import DatasetFormatsSerializer @@ -55,7 +56,6 @@ ) from cvat.apps.engine.models import CloudStorage as CloudStorageModel from cvat.apps.engine.parsers import TusUploadParser -from cvat.apps.engine import quality_control from cvat.apps.engine.serializers import ( AboutSerializer, AnnotationConflictsReportSerializer, AnnotationFileSerializer, BasicUserSerializer, DataMetaReadSerializer, DataMetaWriteSerializer, DataSerializer, @@ -1709,6 +1709,10 @@ def preview(self, request, pk): return data_getter(request, self._object.segment.start_frame, self._object.segment.stop_frame, self._object.segment.task.data) + @extend_schema( + parameters=[OpenApiParameter('frame_id', OpenApiTypes.INT)], + responses=AnnotationConflictsReportSerializer + ) @action(detail=True, methods=['GET'], url_path='gt_conflicts', serializer_class=None) def gt_conflicts(self, request, pk): # TODO: add automatic type inference to get_object @@ -1722,13 +1726,15 @@ def gt_conflicts(self, request, pk): frame_id = request.query_params.get('frame_id', None) if frame_id is not None: + frame_id = int(frame_id) + if not this_job.segment.contains_frame(frame_id): raise ValidationError("This frame does not belong to this job") if not gt_job.segment.contains_frame(frame_id): raise ValidationError("This frame does not belong to the Ground Truth job") - report = quality_control.conflicts.find_gt_conflicts(this_job, gt_job, frame_id=frame_id) + report = qc.find_gt_conflicts(this_job, gt_job, frame_id=frame_id) report_serializer = AnnotationConflictsReportSerializer(report) return Response(report_serializer.data, status=status.HTTP_200_OK) diff --git a/cvat/schema.yml b/cvat/schema.yml index 51865b93341f..423f9678f8a7 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -2599,6 +2599,49 @@ paths: description: Exporting has been started '405': description: Format is not available + /api/jobs/{id}/gt_conflicts: + get: + operationId: jobs_retrieve_gt_conflicts + parameters: + - in: header + name: X-Organization + schema: + type: string + - in: query + name: frame_id + schema: + type: integer + - in: path + name: id + schema: + type: integer + description: A unique integer value identifying this job. + required: true + - in: query + name: org + schema: + type: string + description: Organization unique slug + - in: query + name: org_id + schema: + type: integer + description: Organization identifier + tags: + - jobs + security: + - sessionAuth: [] + csrfAuth: [] + tokenAuth: [] + - signatureAuth: [] + - basicAuth: [] + responses: + '200': + content: + application/vnd.cvat+json: + schema: + $ref: '#/components/schemas/AnnotationConflictsReport' + description: '' /api/jobs/{id}/preview: get: operationId: jobs_retrieve_preview @@ -6621,6 +6664,50 @@ components: - description - name - version + AnnotationConflict: + type: object + properties: + frame_id: + type: integer + maximum: 2147483647 + minimum: 0 + type: + $ref: '#/components/schemas/AnnotationConflictTypeEnum' + message: + type: string + maxLength: 1024 + data: + type: object + additionalProperties: {} + required: + - data + - frame_id + - type + AnnotationConflictTypeEnum: + enum: + - missing_annotation + - extra_annotation + - mismatching_annotation + type: string + AnnotationConflictsReport: + type: object + properties: + job_id: + type: integer + readOnly: true + job_last_updated: + type: string + format: date-time + readOnly: true + gt_job_last_updated: + type: string + format: date-time + readOnly: true + conflicts: + type: array + items: + $ref: '#/components/schemas/AnnotationConflict' + default: [] AnnotationFileRequest: type: object properties: diff --git a/tests/python/rest_api/test_jobs.py b/tests/python/rest_api/test_jobs.py index b37f241e9675..e05f3435e364 100644 --- a/tests/python/rest_api/test_jobs.py +++ b/tests/python/rest_api/test_jobs.py @@ -194,6 +194,52 @@ def test_cannot_destroy_normal_job(self, admin_user, jobs): self._test_destroy_job_fails(admin_user, job_id, expected_status=HTTPStatus.BAD_REQUEST) +@pytest.mark.usefixtures("restore_db_per_function") +class TestGtComparison: + def test_can_compare_normal_with_gt_job(self, admin_user, tasks, jobs): + user = admin_user + job_frame_count = 4 + task = next( + t + for t in tasks + if not t["project_id"] + and not t["organization"] + and t["mode"] == "annotation" + and t["size"] > job_frame_count + ) + task_id = task["id"] + with make_api_client(user) as api_client: + (task_meta, _) = api_client.tasks_api.retrieve_data_meta(task_id) + frame_step = int(task_meta.frame_filter.split("=")[-1]) if task_meta.frame_filter else 1 + + job_frame_ids = list(range(task_meta.start_frame, task_meta.stop_frame, frame_step))[ + :job_frame_count + ] + job_spec = { + "task_id": task_id, + "type": "ground_truth", + "frame_selection_method": "manual", + "frames": job_frame_ids, + } + + with make_api_client(user) as api_client: + (gt_job, _) = api_client.jobs_api.create(job_write_request=job_spec) + + normal_job = next( + j + for j in jobs + if j["task_id"] == task_id + and j["type"] == "normal" + and set(job_frame_ids) & set(range(j["start_frame"], j["stop_frame"])) + ) + + with make_api_client(user) as api_client: + (report, response) = api_client.jobs_api.retrieve_gt_conflicts(normal_job["id"]) + assert response.status == HTTPStatus.OK + + assert len(report.conflicts) > 0 + + @pytest.mark.usefixtures("restore_db_per_class") class TestGetJobs: def _test_get_job_200(self, user, jid, data, **kwargs): From 265eab013f7e3583eb2f0b5fdb587433fc4b82a6 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 11 Apr 2023 17:04:57 +0300 Subject: [PATCH 006/257] Move dataset checking script --- ...compare_datasets.py => compare_datasets.py | 92 ++++++++++++++----- 1 file changed, 71 insertions(+), 21 deletions(-) rename cvat/apps/engine/compare_datasets.py => compare_datasets.py (63%) diff --git a/cvat/apps/engine/compare_datasets.py b/compare_datasets.py similarity index 63% rename from cvat/apps/engine/compare_datasets.py rename to compare_datasets.py index 2a1a459646d3..1c3b8a9a9e0b 100644 --- a/cvat/apps/engine/compare_datasets.py +++ b/compare_datasets.py @@ -22,6 +22,14 @@ def __str__(self) -> str: return self.value +class MismatchingAnnotationKind(str, Enum): + ATTRIBUTE = 'attribute' + LABEL = 'label' + + def __str__(self) -> str: + return self.value + + @define(kw_only=True) class AnnotationId: # TODO: think if uuids can be provided @@ -127,7 +135,7 @@ def _generate_frame_annotation_conflicts( for merged_field, field in zip(merged_results, frame_results[shape_type]): merged_field.extend(field) - _, mispred, gt_unmatched, this_unmatched = merged_results + matches, mismatches, gt_unmatched, this_unmatched = merged_results for unmatched_ann in gt_unmatched: conflicts.append(AnnotationConflict( @@ -151,7 +159,7 @@ def _generate_frame_annotation_conflicts( }, )) - for gt_ann, this_ann in mispred: + for gt_ann, this_ann in mismatches: conflicts.append(AnnotationConflict( frame_id=frame_id, type=AnnotationConflictType.MISMATCHING_ANNOTATION, @@ -159,32 +167,74 @@ def _generate_frame_annotation_conflicts( 'annotation_ids': [ self._dm_ann_to_ann_id(this_ann, this_item, self._this_dataset), self._dm_ann_to_ann_id(gt_ann, gt_item, self._gt_dataset), - ], - 'kind': 'mismatching_label', - 'value1': gt_ann.label, - 'value2': this_ann.label, + ], + 'kind': MismatchingAnnotationKind.LABEL, + 'expected': gt_ann.label, + 'actual': this_ann.label, }, )) - # TODO: Need to check for mismatching attributes - # for gt_ann, this_ann in matches: - # - # conflicts.append(AnnotationConflict( - # frame_id=gt_job_data_provider.dm_item_id_to_frame_id(error.item_id), - # type=AnnotationConflictType.MISMATCHING_ANNOTATION, - # data={ - # 'kind': 'mismatching_shape_attribute', - # 'attribute': error.key, - # 'value1': error.a, - # 'value2': error.b, - # }, - # message=str(error) - # )) + for gt_ann, this_ann in matches: + # Datumaro wont match attributes + _, attr_mismatches, attr_gt_extra, attr_this_extra = \ + self._comparator.match_attrs(gt_ann, this_ann) + + for mismatched_attr in attr_mismatches: + conflicts.append(AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.MISMATCHING_ANNOTATION, + data={ + 'annotation_ids': [ + self._dm_ann_to_ann_id(this_ann, this_item, self._this_dataset), + self._dm_ann_to_ann_id(gt_ann, gt_item, self._gt_dataset), + ], + 'kind': MismatchingAnnotationKind.ATTRIBUTE, + 'attribute': mismatched_attr, + 'expected': gt_ann.attributes[mismatched_attr], + 'actual': this_ann.attributes[mismatched_attr], + }, + )) + + for extra_attr in attr_gt_extra: + conflicts.append(AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.MISMATCHING_ANNOTATION, + data={ + 'annotation_ids': [ + self._dm_ann_to_ann_id(this_ann, this_item, self._this_dataset), + self._dm_ann_to_ann_id(gt_ann, gt_item, self._gt_dataset), + ], + 'kind': MismatchingAnnotationKind.ATTRIBUTE, + 'attribute': mismatched_attr, + 'expected': gt_ann.attributes[extra_attr], + 'actual': None, + }, + )) + + for extra_attr in attr_this_extra: + conflicts.append(AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.MISMATCHING_ANNOTATION, + data={ + 'annotation_ids': [ + self._dm_ann_to_ann_id(this_ann, this_item, self._this_dataset), + self._dm_ann_to_ann_id(gt_ann, gt_item, self._gt_dataset), + ], + 'kind': MismatchingAnnotationKind.ATTRIBUTE, + 'attribute': mismatched_attr, + 'expected': None, + 'actual': this_ann.attributes[extra_attr], + }, + )) + return conflicts def main(args=None): parser = argparse.ArgumentParser() + parser.add_argument('gt_dataset', '--gt') + parser.add_argument('this_dataset', '--ds') + parser.add_argument('output_file', '-o') args = parser.parse_args(args) this_dataset = dm.Dataset.import_from(args.this_dataset) @@ -198,4 +248,4 @@ def main(args=None): return 0 if __name__ == '__main__': - sys.exit(main()) \ No newline at end of file + sys.exit(main()) From 700559a8268dec347769ef7fe5ac593e78943c09 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 12 Apr 2023 01:23:32 +0300 Subject: [PATCH 007/257] Implement dataset comparison script --- compare_datasets.py | 898 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 865 insertions(+), 33 deletions(-) diff --git a/compare_datasets.py b/compare_datasets.py index 1c3b8a9a9e0b..9452242d17f3 100644 --- a/compare_datasets.py +++ b/compare_datasets.py @@ -3,16 +3,538 @@ # SPDX-License-Identifier: MIT import argparse -from datetime import datetime from enum import Enum +import itertools import json import sys -from typing import List -from attrs import asdict, define, field +from typing import Any, Dict, List, cast +from attrs import asdict, define import datumaro as dm +import os.path as osp +from collections import OrderedDict +from glob import glob + +from datumaro.components.annotation import (AnnotationType, Bbox, Label, + LabelCategories, Points, Polygon, + PolyLine, Skeleton) +from datumaro.components.dataset import DatasetItem +from datumaro.components.extractor import (DEFAULT_SUBSET_NAME, Extractor, + Importer) +from datumaro.util.image import Image +from defusedxml import ElementTree +import numpy as np + + +class CvatPath: + IMAGES_DIR = 'images' + + MEDIA_EXTS = ('.jpg', '.jpeg', '.png') + + BUILTIN_ATTRS = {'occluded', 'outside', 'keyframe', 'track_id'} + +class CvatExtractor(Extractor): + _SUPPORTED_SHAPES = ('box', 'polygon', 'polyline', 'points', 'skeleton') + + def __init__(self, path, subsets=None): + assert osp.isfile(path), path + rootpath = osp.dirname(path) + images_dir = '' + if osp.isdir(osp.join(rootpath, CvatPath.IMAGES_DIR)): + images_dir = osp.join(rootpath, CvatPath.IMAGES_DIR) + self._images_dir = images_dir + self._path = path + + if not subsets: + subsets = self._get_subsets_from_anno(path) + self._subsets = subsets + super().__init__(subsets=self._subsets) + + image_items = self._parse_images(images_dir, self._subsets) + items, categories = self._parse(path) + self._items = list(self._load_items(items, image_items).values()) + self._categories = categories + + def categories(self): + return self._categories + + def __iter__(self): + yield from self._items + + def __len__(self): + return len(self._items) + + def get(self, _id, subset=DEFAULT_SUBSET_NAME): + assert subset in self._subsets, '{} not in {}'.format(subset, ', '.join(self._subsets)) + return super().get(_id, subset) + + @staticmethod + def _get_subsets_from_anno(path): + context = ElementTree.iterparse(path, events=("start", "end")) + context = iter(context) + + for ev, el in context: + if ev == 'start': + if el.tag == 'subsets': + if el.text is not None: + subsets = el.text.split('\n') + return subsets + if ev == 'end': + if el.tag == 'meta': + return [DEFAULT_SUBSET_NAME] + el.clear() + return [DEFAULT_SUBSET_NAME] + + @staticmethod + def _parse_images(image_dir, subsets): + items = OrderedDict() + + def parse_image_dir(image_dir, subset): + for file in sorted(glob(image_dir), key=osp.basename): + name, ext = osp.splitext(osp.basename(file)) + if ext.lower() in CvatPath.MEDIA_EXTS: + items[(subset, name)] = DatasetItem(id=name, annotations=[], + image=Image(path=file), subset=subset or DEFAULT_SUBSET_NAME, + ) + + if subsets == [DEFAULT_SUBSET_NAME] and not osp.isdir(osp.join(image_dir, DEFAULT_SUBSET_NAME)): + parse_image_dir(osp.join(image_dir, '*.*'), None) + else: + for subset in subsets: + parse_image_dir(osp.join(image_dir, subset, '*.*'), subset) + return items + + @classmethod + def _parse(cls, path): + context = ElementTree.iterparse(path, events=("start", "end")) + context = iter(context) + + categories, tasks_info, attribute_types = cls._parse_meta(context) + + items = OrderedDict() + + track = None + track_shapes = None + track_elements = None + shape = None + shape_element = None + tag = None + attributes = None + element_attributes = None + image = None + subset = None + for ev, el in context: + if ev == 'start': + if el.tag == 'track': + frame_size = tasks_info[int(el.attrib.get('task_id'))]['frame_size'] \ + if el.attrib.get('task_id') else tuple(tasks_info.values())[0]['frame_size'] + track = { + 'id': el.attrib['id'], + 'label': el.attrib.get('label'), + 'group': int(el.attrib.get('group_id', 0)), + 'height': frame_size[0], + 'width': frame_size[1], + } + subset = el.attrib.get('subset') + track_shapes = {} + elif el.tag == 'image': + image = { + 'name': el.attrib.get('name'), + 'frame': el.attrib['id'], + 'width': el.attrib.get('width'), + 'height': el.attrib.get('height'), + } + subset = el.attrib.get('subset') + elif el.tag in cls._SUPPORTED_SHAPES and (track or image): + if shape and shape['type'] == 'skeleton': + element_attributes = {} + shape_element = { + 'type': 'rectangle' if el.tag == 'box' else el.tag, + 'attributes': element_attributes, + } + if track: + shape_element.update(track) + else: + shape_element.update(image) + else: + attributes = {} + shape = { + 'type': 'rectangle' if el.tag == 'box' else el.tag, + 'attributes': attributes, + } + shape['elements'] = [] + if track: + shape.update(track) + shape['track_id'] = int(track['id']) + shape['frame'] = el.attrib['frame'] + track_elements = [] + if image: + shape.update(image) + elif el.tag == 'tag' and image: + attributes = {} + tag = { + 'frame': image['frame'], + 'attributes': attributes, + 'group': int(el.attrib.get('group_id', 0)), + 'label': el.attrib['label'], + } + subset = el.attrib.get('subset') + elif ev == 'end': + if el.tag == 'attribute' and element_attributes is not None and shape_element is not None: + attr_value = el.text or '' + attr_type = attribute_types.get(el.attrib['name']) + if el.text in ['true', 'false']: + attr_value = attr_value == 'true' + elif attr_type is not None and attr_type != 'text': + try: + attr_value = float(attr_value) + except ValueError: + pass + element_attributes[el.attrib['name']] = attr_value + + if el.tag == 'attribute' and attributes is not None and shape_element is None: + attr_value = el.text or '' + attr_type = attribute_types.get(el.attrib['name']) + if el.text in ['true', 'false']: + attr_value = attr_value == 'true' + elif attr_type is not None and attr_type != 'text': + try: + attr_value = float(attr_value) + except ValueError: + pass + attributes[el.attrib['name']] = attr_value + + elif el.tag in cls._SUPPORTED_SHAPES and shape["type"] == "skeleton" and el.tag != "skeleton": + shape_element['label'] = el.attrib.get('label') + shape_element['group'] = int(el.attrib.get('group_id', 0)) + + shape_element['type'] = el.tag + shape_element['z_order'] = int(el.attrib.get('z_order', 0)) + + if el.tag == 'box': + shape_element['points'] = list(map(float, [ + el.attrib['xtl'], el.attrib['ytl'], + el.attrib['xbr'], el.attrib['ybr'], + ])) + else: + shape_element['points'] = [] + for pair in el.attrib['points'].split(';'): + shape_element['points'].extend(map(float, pair.split(','))) + + if el.tag == 'points' and el.attrib.get('occluded') == '1': + shape_element['visibility'] = [Points.Visibility.hidden] * (len(shape_element['points']) // 2) + else: + shape_element['occluded'] = (el.attrib.get('occluded') == '1') + + if el.tag == 'points' and el.attrib.get('outside') == '1': + shape_element['visibility'] = [Points.Visibility.absent] * (len(shape_element['points']) // 2) + else: + shape_element['outside'] = (el.attrib.get('outside') == '1') + + if track: + shape_element['keyframe'] = (el.attrib.get('keyframe') == '1') + track_elements.append(shape_element) + else: + shape['elements'].append(shape_element) + shape_element = None + + elif el.tag in cls._SUPPORTED_SHAPES: + if track is not None: + shape['frame'] = el.attrib['frame'] + shape['outside'] = (el.attrib.get('outside') == '1') + shape['keyframe'] = (el.attrib.get('keyframe') == '1') + if image is not None: + shape['label'] = el.attrib.get('label') + shape['group'] = int(el.attrib.get('group_id', 0)) + + shape['type'] = el.tag + shape['occluded'] = (el.attrib.get('occluded') == '1') + shape['z_order'] = int(el.attrib.get('z_order', 0)) + shape['rotation'] = float(el.attrib.get('rotation', 0)) + + if el.tag == 'box': + shape['points'] = list(map(float, [ + el.attrib['xtl'], el.attrib['ytl'], + el.attrib['xbr'], el.attrib['ybr'], + ])) + elif el.tag == 'skeleton': + shape['points'] = [] + else: + shape['points'] = [] + for pair in el.attrib['points'].split(';'): + shape['points'].extend(map(float, pair.split(','))) + + if track: + if shape["type"] == "skeleton" and track_elements: + shape["keyframe"] = True + track_shapes[shape['frame']] = shape + track_shapes[shape['frame']]['elements'] = track_elements + track_elements = None + elif shape["type"] != "skeleton": + track_shapes[shape['frame']] = shape + else: + frame_desc = items.get((subset, shape['frame']), {'annotations': []}) + frame_desc['annotations'].append( + cls._parse_shape_ann(shape, categories)) + items[(subset, shape['frame'])] = frame_desc + + shape = None + + elif el.tag == 'tag': + frame_desc = items.get((subset, tag['frame']), {'annotations': []}) + frame_desc['annotations'].append( + cls._parse_tag_ann(tag, categories)) + items[(subset, tag['frame'])] = frame_desc + tag = None + elif el.tag == 'track': + for track_shape in track_shapes.values(): + frame_desc = items.get((subset, track_shape['frame']), {'annotations': []}) + frame_desc['annotations'].append( + cls._parse_shape_ann(track_shape, categories)) + items[(subset, track_shape['frame'])] = frame_desc + track = None + elif el.tag == 'image': + frame_desc = items.get((subset, image['frame']), {'annotations': []}) + frame_desc.update({ + 'name': image.get('name'), + 'height': image.get('height'), + 'width': image.get('width'), + 'subset': subset, + }) + items[(subset, image['frame'])] = frame_desc + image = None + el.clear() + + return items, categories + + @staticmethod + def _parse_meta(context): + ev, el = next(context) + if not (ev == 'start' and el.tag == 'annotations'): + raise Exception("Unexpected token ") + + categories = {} + + tasks_info = {} + frame_size = [None, None] + task_id = None + mode = None + labels = OrderedDict() + label = None + + # Recursive descent parser + el = None + states = ['annotations'] + def accepted(expected_state, tag, next_state=None): + state = states[-1] + if state == expected_state and el is not None and el.tag == tag: + if not next_state: + next_state = tag + states.append(next_state) + return True + return False + def consumed(expected_state, tag): + state = states[-1] + if state == expected_state and el is not None and el.tag == tag: + states.pop() + return True + return False + + for ev, el in context: + if ev == 'start': + if accepted('annotations', 'meta'): pass + elif accepted('meta', 'task'): pass + elif accepted('meta', 'project'): pass + elif accepted('project', 'tasks'): pass + elif accepted('tasks', 'task'): pass + elif accepted('task', 'id', next_state='task_id'): pass + elif accepted('task', 'segment'): pass + elif accepted('task', 'mode'): pass + elif accepted('task', 'original_size'): pass + elif accepted('original_size', 'height', next_state='frame_height'): pass + elif accepted('original_size', 'width', next_state='frame_width'): pass + elif accepted('task', 'labels'): pass + elif accepted('project', 'labels'): pass + elif accepted('labels', 'label'): + label = { 'name': None, 'attributes': [], 'parent': None } + elif accepted('label', 'name', next_state='label_name'): pass + elif accepted('label', 'attributes'): pass + elif accepted('label', 'parent', next_state='label_parent'): pass + elif accepted('attributes', 'attribute'): pass + elif accepted('attribute', 'name', next_state='attr_name'): pass + elif accepted('attribute', 'input_type', next_state='attr_type'): pass + elif accepted('annotations', 'image') or \ + accepted('annotations', 'track') or \ + accepted('annotations', 'tag'): + break + else: + pass + elif ev == 'end': + if consumed('meta', 'meta'): + break + elif consumed('project', 'project'): pass + elif consumed('tasks', 'tasks'): pass + elif consumed('task', 'task'): + tasks_info[task_id] = { + 'frame_size': frame_size, + 'mode': mode, + } + frame_size = [None, None] + mode = None + elif consumed('task_id', 'id'): + task_id = int(el.text) + elif consumed('segment', 'segment'): pass + elif consumed('mode', 'mode'): + mode = el.text + elif consumed('original_size', 'original_size'): pass + elif consumed('frame_height', 'height'): + frame_size[0] = int(el.text) + elif consumed('frame_width', 'width'): + frame_size[1] = int(el.text) + elif consumed('label_name', 'name'): + label['name'] = el.text + elif consumed('attr_name', 'name'): + label['attributes'].append({'name': el.text}) + elif consumed('attr_type', 'input_type'): + label['attributes'][-1]['input_type'] = el.text + elif consumed('attribute', 'attribute'): pass + elif consumed('attributes', 'attributes'): pass + elif consumed('label', 'label'): + labels[label['name']] = { + 'attributes': label['attributes'], + 'parent': label['parent'] + } + label = None + elif consumed('label_parent', 'parent'): + label['parent'] = el.text + elif consumed('labels', 'labels'): pass + else: + pass + + assert len(states) == 1 and states[0] == 'annotations', \ + "Expected 'meta' section in the annotation file, path: %s" % states + + common_attrs = ['occluded'] + if 'interpolation' in map(lambda t: t['mode'], tasks_info.values()): + common_attrs.append('keyframe') + common_attrs.append('outside') + common_attrs.append('track_id') + + label_cat = LabelCategories(attributes=common_attrs) + attribute_types = {} + for label, params in labels.items(): + attrs = {v['name']: v for v in params['attributes']} + parent = params['parent'] + if parent and parent not in labels: + raise ValueError(f"Label's '{label}' parent label '{parent}' is not found") + + label_cat.add(label, attributes=set(attrs), parent=parent) + for attr_name, attr_params in attrs.items(): + attribute_types[attr_name] = attr_params['input_type'] + + categories[AnnotationType.label] = label_cat + return categories, tasks_info, attribute_types + + @classmethod + def _parse_shape_ann(cls, ann, categories, *, parent_label: str = None): + ann_id = ann.get('id', 0) + ann_type = ann['type'] + + attributes = ann.get('attributes') or {} + if 'occluded' in categories[AnnotationType.label].attributes: + attributes['occluded'] = ann.get('occluded', False) + if 'outside' in ann: + attributes['outside'] = ann['outside'] + if 'keyframe' in ann: + attributes['keyframe'] = ann['keyframe'] + if 'track_id' in ann: + attributes['track_id'] = ann['track_id'] + if 'rotation' in ann: + attributes['rotation'] = ann['rotation'] + + group = ann.get('group') + + label = ann.get('label') + label_id = categories[AnnotationType.label].find(label, parent=parent_label or '')[0] + if label_id is None: + raise ValueError( + f"Annotation id {ann_id} ({ann_type}): " + f"unknown label {label} (parent {parent_label})" + ) + + z_order = ann.get('z_order', 0) + points = ann.get('points', []) + + if ann_type == 'polyline': + return PolyLine(points, label=label_id, z_order=z_order, + id=ann_id, attributes=attributes, group=group) + + elif ann_type == 'polygon': + return Polygon(points, label=label_id, z_order=z_order, + id=ann_id, attributes=attributes, group=group) + + elif ann_type == 'points': + visibility = ann.get('visibility', None) + return Points(points, visibility, label=label_id, z_order=z_order, + id=ann_id, attributes=attributes, group=group) + + elif ann_type == 'box': + x, y = points[0], points[1] + w, h = points[2] - x, points[3] - y + return Bbox(x, y, w, h, label=label_id, z_order=z_order, + id=ann_id, attributes=attributes, group=group) + + elif ann_type == 'skeleton': + elements = [] + for element in ann.get('elements', []): + elements.append(cls._parse_shape_ann( + element, categories, parent_label=ann.get('label') + )) + + return Skeleton(elements, label=label_id, z_order=z_order, + id=ann_id, attributes=attributes, group=group) + + else: + raise NotImplementedError("Unknown annotation type '%s'" % ann_type) + + @classmethod + def _parse_tag_ann(cls, ann, categories): + label = ann.get('label') + label_id = categories[AnnotationType.label].find(label)[0] + group = ann.get('group') + attributes = ann.get('attributes') + return Label(label_id, attributes=attributes, group=group) + + def _load_items(self, parsed, image_items): + for (subset, frame_id), item_desc in parsed.items(): + name = item_desc.get('name', 'frame_%06d.PNG' % int(frame_id)) + image = osp.join(self._images_dir, subset, name) if subset else osp.join(self._images_dir, name) + image_size = (item_desc.get('height'), item_desc.get('width')) + if all(image_size): + image = Image(path=image, size=tuple(map(int, image_size))) + di = image_items.get((subset, osp.splitext(name)[0]), DatasetItem( + id=name, annotations=[], + )) + di.subset = subset or DEFAULT_SUBSET_NAME + di.annotations = item_desc.get('annotations') + di.attributes = {'frame': int(frame_id)} + di.media = image if isinstance(image, Image) else di.media + image_items[(subset, osp.splitext(name)[0])] = di + return image_items + +dm_env = dm.Environment() +dm_env.extractors.register('cvat', CvatExtractor) + +class CvatImporter(Importer): + @classmethod + def find_sources(cls, path): + return cls._find_sources_recursive(path, '.xml', 'cvat') + +dm_env.importers.register('cvat', CvatImporter) + + class AnnotationConflictType(str, Enum): MISSING_ANNOTATION = 'missing_annotation' EXTRA_ANNOTATION = 'extra_annotation' @@ -33,8 +555,9 @@ def __str__(self) -> str: @define(kw_only=True) class AnnotationId: # TODO: think if uuids can be provided - type: str + source: str id: int + type: str def to_dict(self) -> dict: return asdict(self) @@ -44,8 +567,7 @@ def to_dict(self) -> dict: class AnnotationConflict: frame_id: int type: AnnotationConflictType - annotation_ids: List[AnnotationId] = field(factory=list) - message: str + data: Dict[str, Any] def to_dict(self) -> dict: return asdict(self) @@ -53,18 +575,72 @@ def to_dict(self) -> dict: @define(kw_only=True) class AnnotationConflictsReport: - job_id: int - job_last_updated: datetime - gt_job_last_updated: datetime - conflicts: List[AnnotationConflict] + mean_accuracy: float + mean_annotation_accuracy: float + mean_attribute_accuracy: float + error_count: int + estimated_dataset_error_count: int + estimated_dataset_invalid_annotations_count: int + estimated_dataset_invalid_attributes_count: int + this_total_annotations_count: int + this_annotations_count: int + this_attributes_count: int + intersection_gt_annotations_count: int + intersection_frame_count: int + intersection_frame_share: float + intersection_frames: List[str] + frame_results: Dict[str, Any] def to_dict(self) -> dict: return asdict(self) +def OKS(a, b, sigma=None, bbox=None, scale=None, visibility=None): + """ + Object Keypoint Similarity metric. + https://cocodataset.org/#keypoints-eval + """ + + p1 = np.array(a.points).reshape((-1, 2)) + p2 = np.array(b.points).reshape((-1, 2)) + if len(p1) != len(p2): + return 0 + + if visibility is None: + visibility = np.ones(len(p1)) + else: + visibility = np.asarray(visibility, dtype=float) + + if not sigma: + sigma = 0.1 + else: + assert len(sigma) == len(p1) + + if not scale: + if bbox is None: + bbox = dm.ops.mean_bbox([a, b]) + scale = bbox[2] * bbox[3] + + dists = np.linalg.norm(p1 - p2, axis=1) + return np.sum(visibility * np.exp(-(dists**2) / (2 * scale * (2 * sigma) ** 2))) / np.sum(visibility) + +@define(kw_only=True) +class _PointsMatcher(dm.ops.PointsMatcher): + def distance(self, a, b): + a_bbox = self.instance_map[id(a)][1] + b_bbox = self.instance_map[id(b)][1] + if dm.ops.bbox_iou(a_bbox, b_bbox) <= 0: + return 0 + bbox = dm.ops.mean_bbox([a_bbox, b_bbox]) + return OKS(a, b, sigma=self.sigma, bbox=bbox, + visibility=[v == dm.Points.Visibility.visible for v in a.visibility] + ) + class _DistanceComparator(dm.ops.DistanceComparator): - def match_annotations(self, item_a, item_b): - return {t: self._match_ann_type(t, item_a, item_b) for t in dm.AnnotationType} + def __init__(self, categories: dm.CategoriesInfo, **kwargs): + super().__init__(**kwargs) + self.categories = categories + self._skeleton_info = {} def _match_ann_type(self, t, *args): # pylint: disable=no-value-for-parameter @@ -78,12 +654,157 @@ def _match_ann_type(self, t, *args): return self.match_masks(*args) elif t == dm.AnnotationType.points: return self.match_points(*args) + elif t == dm.AnnotationType.skeleton: + return self.match_skeletons(*args) elif t == dm.AnnotationType.polyline: return self.match_lines(*args) # pylint: enable=no-value-for-parameter else: return None + def match_points(self, item_a, item_b): + a_points = self._get_ann_type(dm.AnnotationType.points, item_a) + b_points = self._get_ann_type(dm.AnnotationType.points, item_b) + if not a_points and not b_points: + return [], [], [], [] + + return super().match_points(item_a, item_b) + + def _get_skeleton_info(self, skeleton_label_id: int): + label_cat = cast(dm.LabelCategories, self.categories[dm.AnnotationType.label]) + skeleton_info = self._skeleton_info.get(skeleton_label_id) + + if skeleton_info is None: + skeleton_label_name = label_cat[skeleton_label_id].name + + # Build a sorted list of sublabels to arrange skeleton points during comparison + skeleton_info = sorted( + idx for idx, label in enumerate(label_cat) + if label.parent == skeleton_label_name + ) + self._skeleton_info[skeleton_label_id] = skeleton_info + + return skeleton_info + + def match_skeletons(self, item_a, item_b): + a_skeletons = self._get_ann_type(dm.AnnotationType.skeleton, item_a) + b_skeletons = self._get_ann_type(dm.AnnotationType.skeleton, item_b) + if not a_skeletons and not b_skeletons: + return [], [], [], [] + + # Convert skeletons to point lists for comparison + # This is required to compute correct per-instance distance + # It is assumed that labels are the same in the datasets + skeleton_infos = {} + points_map = {} + skeleton_map = {} + a_points = [] + b_points = [] + for source, source_points in [(a_skeletons, a_points), (b_skeletons, b_points)]: + for skeleton in source: + skeleton_info = skeleton_infos.setdefault( + skeleton.label, self._get_skeleton_info(skeleton.label) + ) + + # Merge skeleton points into a single list + # The list is ordered by skeleton_info + skeleton_points = [ + next((p for p in skeleton.elements if p.label == sublabel), None) + for sublabel in skeleton_info + ] + + # Build a single Points object for further comparisons + merged_points = dm.Points( + points=list(itertools.chain.from_iterable( + p.points if p else [0, 0] + for p in skeleton_points + )), + visibility=list(itertools.chain.from_iterable( + p.visibility if p else [dm.Points.Visibility.absent] + for p in skeleton_points + )), + label=skeleton.label + # no per-point attributes currently in CVAT + ) + + points_map[id(merged_points)] = skeleton + skeleton_map[id(skeleton)] = merged_points + source_points.append(merged_points) + + instance_map = {} + for source in [item_a.annotations, item_b.annotations]: + for instance_group in dm.ops.find_instances(source): + instance_bbox = dm.ops.max_bbox( + a.get_bbox() if isinstance(a, dm.Skeleton) else a + for a in instance_group + ) + + instance_group = [ + skeleton_map[id(a)] if isinstance(a, dm.Skeleton) else a + for a in instance_group + ] + for ann in instance_group: + instance_map[id(ann)] = [instance_group, instance_bbox] + + matcher = _PointsMatcher(instance_map=instance_map) + + # unpack to validate returned data format + matched, mismatched, a_extra, b_extra = dm.ops.match_segments( + a_points, + b_points, + dist_thresh=self.iou_threshold, + distance=matcher.distance + ) + + matched = [(points_map[id(p_a)], points_map[id(p_b)]) for (p_a, p_b) in matched] + mismatched = [(points_map[id(p_a)], points_map[id(p_b)]) for (p_a, p_b) in mismatched] + a_extra = [points_map[id(p_a)] for p_a in a_extra] + b_extra = [points_map[id(p_b)] for p_b in b_extra] + + return matched, mismatched, a_extra, b_extra + + +class _Comparator: + def __init__(self, categories: dm.CategoriesInfo): + self.ignored_attrs = [ + 'track_id', # changes from task to task, can't be defined manually with the same name + 'keyframe', # indicates the way annotation obtained, meaningless to compare + 'z_order', # TODO: compare relative or 'visible' z_order + 'group', # TODO: changes from task to task. But must be compared for existence + ] + self._annotation_comparator = _DistanceComparator(categories) + + def match_attrs(self, ann_a: dm.Annotation, ann_b: dm.Annotation): + a_attrs = ann_a.attributes + b_attrs = ann_b.attributes + + keys_to_match = (a_attrs.keys() | b_attrs.keys()).difference(self.ignored_attrs) + + matches = [] + mismatches = [] + a_extra = [] + b_extra = [] + + notfound = object() + + for k in keys_to_match: + a_attr = a_attrs.get(k, notfound) + b_attr = b_attrs.get(k, notfound) + + if a_attr is notfound: + b_extra.append(k) + elif b_attr is notfound: + a_extra.append(k) + elif a_attr == b_attr: + matches.append(k) + else: + mismatches.append(k) + + return matches, mismatches, a_extra, b_extra + + def match_annotations(self, item_a, item_b): + return self._annotation_comparator.match_annotations(item_a, item_b) + class DatasetComparator: def __init__(self, this_dataset: dm.Dataset, @@ -91,7 +812,12 @@ def __init__(self, ) -> None: self._this_dataset = this_dataset self._gt_dataset = gt_dataset - self._comparator = _DistanceComparator() + self._comparator = _Comparator(gt_dataset.categories()) + + self._per_frame_results = {} + self._common_results = { + 'this_annotations_count': 0 + } def _dm_ann_to_ann_id(self, ann: dm.Annotation, item: dm.DatasetItem, dataset: dm.Dataset): if dataset is self._this_dataset: @@ -101,36 +827,38 @@ def _dm_ann_to_ann_id(self, ann: dm.Annotation, item: dm.DatasetItem, dataset: d ann_idx = item.annotations.index(ann) - return AnnotationId(type=source, id=ann_idx) + return AnnotationId(source=source, id=ann_idx, type=ann.type.name) - def find_gt_conflicts(self) -> List[AnnotationConflict]: + def _find_gt_conflicts(self) -> List[AnnotationConflict]: this_job_dataset = self._this_dataset gt_job_dataset = self._gt_dataset - conflicts = [] for gt_item in gt_job_dataset: this_item = this_job_dataset.get(gt_item.id) if not this_item: continue # we need to compare only intersecting frames - frame_id = this_item.id - frame_results = self._comparator.match_annotations(gt_item, this_item) + self._process_frame(this_item, gt_item) - conflicts.extend(self._generate_frame_annotation_conflicts( - frame_id, frame_results, this_item, gt_item - )) + def _process_frame(self, this_item, gt_item): + frame_id = this_item.id + frame_results = self._comparator.match_annotations(gt_item, this_item) + self._per_frame_results.setdefault(frame_id, {}) - return conflicts + self._generate_frame_annotation_conflicts( + frame_id, frame_results, this_item, gt_item + ) def _generate_frame_annotation_conflicts( - self, frame_id: int, frame_results, this_item, gt_item + self, frame_id, frame_results, this_item: dm.DatasetItem, gt_item: dm.DatasetItem ) -> List[AnnotationConflict]: conflicts = [] merged_results = [[], [], [], []] for shape_type in [ dm.AnnotationType.bbox, dm.AnnotationType.mask, - dm.AnnotationType.points, dm.AnnotationType.polygon, dm.AnnotationType.polyline + dm.AnnotationType.points, dm.AnnotationType.polygon, + dm.AnnotationType.polyline, dm.AnnotationType.skeleton, ]: for merged_field, field in zip(merged_results, frame_results[shape_type]): merged_field.extend(field) @@ -174,9 +902,12 @@ def _generate_frame_annotation_conflicts( }, )) + valid_annotations_count = 0 + valid_attributes_count = 0 + compared_attributes_count = 0 for gt_ann, this_ann in matches: # Datumaro wont match attributes - _, attr_mismatches, attr_gt_extra, attr_this_extra = \ + attr_matches, attr_mismatches, attr_gt_extra, attr_this_extra = \ self._comparator.match_attrs(gt_ann, this_ann) for mismatched_attr in attr_mismatches: @@ -227,23 +958,124 @@ def _generate_frame_annotation_conflicts( }, )) + valid_attributes_count += len(attr_matches) + compared_attributes_count += \ + len(attr_matches) + len(attr_mismatches) + len(attr_gt_extra) + len(attr_this_extra) + valid_annotations_count += 0 == ( + len(attr_mismatches) + len(attr_gt_extra) + len(attr_this_extra) + ) + + compared_annotations_count = \ + len(matches) + len(mismatches) + len(gt_unmatched) + len(this_unmatched) + + total_annotations_count = len(this_item.annotations) + len(gt_item.annotations) + + self._per_frame_results.setdefault(frame_id, {}).update({ + 'valid_attributes_count': valid_attributes_count, + 'compared_attributes_count': compared_attributes_count, + 'valid_annotations_count': valid_annotations_count, + 'compared_annotations_count': compared_annotations_count, + 'total_annotations_count': total_annotations_count, + 'gt_annotations_count': len(gt_item.annotations), + 'this_annotations_count': len(this_item.annotations), + 'attribute_accuracy': valid_attributes_count / compared_attributes_count, + 'annotation_accuracy': valid_annotations_count / compared_annotations_count, + 'overall_accuracy': \ + (valid_attributes_count + valid_annotations_count) / \ + ((compared_annotations_count + compared_attributes_count) or 1), + 'error_count': len(conflicts), # assuming no more than 1 error per annotation + 'conflicts': conflicts.copy(), + }) return conflicts + def prepare_report(self) -> AnnotationConflictsReport: + self._find_gt_conflicts() + + this_annotations_count = 0 + this_attributes_count = 0 + for item in self._this_dataset: + this_annotations_count += len(item.annotations) + + for ann in item.annotations: + this_attributes_count += \ + len(set(ann.attributes).difference(self._comparator.ignored_attrs)) + + this_properties_count = this_annotations_count + this_attributes_count + + intersection_frames = [] + valid_attributes_count = 0 + valid_annotations_count = 0 + compared_attributes_count = 0 + compared_annotations_count = 0 + intersection_gt_annotations_count = 0 + error_count = 0 + + for frame_id, frame_result in self._per_frame_results.items(): + intersection_frames.append(frame_id) + valid_attributes_count += frame_result['valid_attributes_count'] + valid_annotations_count += frame_result['valid_annotations_count'] + compared_attributes_count += frame_result['compared_attributes_count'] + compared_annotations_count += frame_result['compared_annotations_count'] + error_count += frame_result['error_count'] + intersection_gt_annotations_count += frame_result['gt_annotations_count'] + + mean_accuracy = \ + (valid_attributes_count + valid_annotations_count) / \ + ((compared_attributes_count + compared_annotations_count) or 1) + + mean_annotation_accuracy = valid_attributes_count / (compared_attributes_count or 1) + mean_attribute_accuracy = valid_annotations_count / (compared_annotations_count or 1) + + estimated_dataset_error_count = int((1 - mean_accuracy) * this_properties_count) + estimated_dataset_invalid_annotations_count = \ + int((1 - mean_annotation_accuracy) * this_annotations_count) + estimated_dataset_invalid_attributes_count = \ + int((1 - mean_attribute_accuracy) * this_attributes_count) + + return AnnotationConflictsReport( + mean_accuracy=mean_accuracy, + mean_annotation_accuracy=mean_annotation_accuracy, + mean_attribute_accuracy=mean_attribute_accuracy, + error_count=error_count, + estimated_dataset_error_count=estimated_dataset_error_count, + estimated_dataset_invalid_annotations_count=estimated_dataset_invalid_annotations_count, + estimated_dataset_invalid_attributes_count=estimated_dataset_invalid_attributes_count, + this_total_annotations_count=this_properties_count, + this_annotations_count=this_annotations_count, + this_attributes_count=this_attributes_count, + intersection_gt_annotations_count=intersection_gt_annotations_count, + intersection_frame_count=len(intersection_frames), + intersection_frame_share=len(intersection_frames) / len(self._this_dataset), + intersection_frames=intersection_frames, + frame_results=self._per_frame_results, + ) + + def main(args=None): parser = argparse.ArgumentParser() - parser.add_argument('gt_dataset', '--gt') - parser.add_argument('this_dataset', '--ds') - parser.add_argument('output_file', '-o') + parser.add_argument('--gt') + parser.add_argument('--gtf', default=None) + parser.add_argument('--ds') + parser.add_argument('--dsf', default=None) + parser.add_argument('-o', default='report.json') args = parser.parse_args(args) - this_dataset = dm.Dataset.import_from(args.this_dataset) - other_dataset = dm.Dataset.import_from(args.gt_dataset) + gt_dataset = dm.Dataset.import_from(args.gt, format=args.gtf, env=dm_env) + this_dataset = dm.Dataset.import_from(args.ds, format=args.dsf, env=dm_env) + + comparator = DatasetComparator(this_dataset, gt_dataset) + report = comparator.prepare_report() - conflicts = DatasetComparator(this_dataset, other_dataset).find_gt_conflicts() + class JsonConverter(json.JSONEncoder): + def default(self, o: Any): + if isinstance(o, (AnnotationConflict ,AnnotationConflictsReport, AnnotationId)): + return o.to_dict() + else: + return super().default(o) - with open(args.output_file, 'w') as f: - json.dump(conflicts, f) + with open(args.o, 'w') as f: + json.dump(report, f, cls=JsonConverter, indent=2) return 0 From 747c9c95066b00b45e4fe929b3b3c806de523886 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 12 Apr 2023 12:50:04 +0300 Subject: [PATCH 008/257] Format code and add annotation type filter --- compare_datasets.py | 1098 ++++++++++++++++++++++++++----------------- 1 file changed, 663 insertions(+), 435 deletions(-) diff --git a/compare_datasets.py b/compare_datasets.py index 9452242d17f3..243e5ccd45a0 100644 --- a/compare_datasets.py +++ b/compare_datasets.py @@ -3,20 +3,18 @@ # SPDX-License-Identifier: MIT import argparse -from enum import Enum import itertools import json -import sys -from typing import Any, Dict, List, cast -from attrs import asdict, define - -import datumaro as dm - - import os.path as osp +import sys from collections import OrderedDict +from enum import Enum from glob import glob +from typing import Any, Dict, List, Optional, cast +import datumaro as dm +import numpy as np +from attrs import asdict, define from datumaro.components.annotation import (AnnotationType, Bbox, Label, LabelCategories, Points, Polygon, PolyLine, Skeleton) @@ -25,23 +23,23 @@ Importer) from datumaro.util.image import Image from defusedxml import ElementTree -import numpy as np class CvatPath: - IMAGES_DIR = 'images' + IMAGES_DIR = "images" - MEDIA_EXTS = ('.jpg', '.jpeg', '.png') + MEDIA_EXTS = (".jpg", ".jpeg", ".png") + + BUILTIN_ATTRS = {"occluded", "outside", "keyframe", "track_id"} - BUILTIN_ATTRS = {'occluded', 'outside', 'keyframe', 'track_id'} class CvatExtractor(Extractor): - _SUPPORTED_SHAPES = ('box', 'polygon', 'polyline', 'points', 'skeleton') + _SUPPORTED_SHAPES = ("box", "polygon", "polyline", "points", "skeleton") def __init__(self, path, subsets=None): assert osp.isfile(path), path rootpath = osp.dirname(path) - images_dir = '' + images_dir = "" if osp.isdir(osp.join(rootpath, CvatPath.IMAGES_DIR)): images_dir = osp.join(rootpath, CvatPath.IMAGES_DIR) self._images_dir = images_dir @@ -67,7 +65,9 @@ def __len__(self): return len(self._items) def get(self, _id, subset=DEFAULT_SUBSET_NAME): - assert subset in self._subsets, '{} not in {}'.format(subset, ', '.join(self._subsets)) + assert subset in self._subsets, "{} not in {}".format( + subset, ", ".join(self._subsets) + ) return super().get(_id, subset) @staticmethod @@ -76,13 +76,13 @@ def _get_subsets_from_anno(path): context = iter(context) for ev, el in context: - if ev == 'start': - if el.tag == 'subsets': + if ev == "start": + if el.tag == "subsets": if el.text is not None: - subsets = el.text.split('\n') + subsets = el.text.split("\n") return subsets - if ev == 'end': - if el.tag == 'meta': + if ev == "end": + if el.tag == "meta": return [DEFAULT_SUBSET_NAME] el.clear() return [DEFAULT_SUBSET_NAME] @@ -95,15 +95,20 @@ def parse_image_dir(image_dir, subset): for file in sorted(glob(image_dir), key=osp.basename): name, ext = osp.splitext(osp.basename(file)) if ext.lower() in CvatPath.MEDIA_EXTS: - items[(subset, name)] = DatasetItem(id=name, annotations=[], - image=Image(path=file), subset=subset or DEFAULT_SUBSET_NAME, + items[(subset, name)] = DatasetItem( + id=name, + annotations=[], + image=Image(path=file), + subset=subset or DEFAULT_SUBSET_NAME, ) - if subsets == [DEFAULT_SUBSET_NAME] and not osp.isdir(osp.join(image_dir, DEFAULT_SUBSET_NAME)): - parse_image_dir(osp.join(image_dir, '*.*'), None) + if subsets == [DEFAULT_SUBSET_NAME] and not osp.isdir( + osp.join(image_dir, DEFAULT_SUBSET_NAME) + ): + parse_image_dir(osp.join(image_dir, "*.*"), None) else: for subset in subsets: - parse_image_dir(osp.join(image_dir, subset, '*.*'), subset) + parse_image_dir(osp.join(image_dir, subset, "*.*"), subset) return items @classmethod @@ -126,33 +131,36 @@ def _parse(cls, path): image = None subset = None for ev, el in context: - if ev == 'start': - if el.tag == 'track': - frame_size = tasks_info[int(el.attrib.get('task_id'))]['frame_size'] \ - if el.attrib.get('task_id') else tuple(tasks_info.values())[0]['frame_size'] + if ev == "start": + if el.tag == "track": + frame_size = ( + tasks_info[int(el.attrib.get("task_id"))]["frame_size"] + if el.attrib.get("task_id") + else tuple(tasks_info.values())[0]["frame_size"] + ) track = { - 'id': el.attrib['id'], - 'label': el.attrib.get('label'), - 'group': int(el.attrib.get('group_id', 0)), - 'height': frame_size[0], - 'width': frame_size[1], + "id": el.attrib["id"], + "label": el.attrib.get("label"), + "group": int(el.attrib.get("group_id", 0)), + "height": frame_size[0], + "width": frame_size[1], } - subset = el.attrib.get('subset') + subset = el.attrib.get("subset") track_shapes = {} - elif el.tag == 'image': + elif el.tag == "image": image = { - 'name': el.attrib.get('name'), - 'frame': el.attrib['id'], - 'width': el.attrib.get('width'), - 'height': el.attrib.get('height'), + "name": el.attrib.get("name"), + "frame": el.attrib["id"], + "width": el.attrib.get("width"), + "height": el.attrib.get("height"), } - subset = el.attrib.get('subset') + subset = el.attrib.get("subset") elif el.tag in cls._SUPPORTED_SHAPES and (track or image): - if shape and shape['type'] == 'skeleton': + if shape and shape["type"] == "skeleton": element_attributes = {} shape_element = { - 'type': 'rectangle' if el.tag == 'box' else el.tag, - 'attributes': element_attributes, + "type": "rectangle" if el.tag == "box" else el.tag, + "attributes": element_attributes, } if track: shape_element.update(track) @@ -161,149 +169,190 @@ def _parse(cls, path): else: attributes = {} shape = { - 'type': 'rectangle' if el.tag == 'box' else el.tag, - 'attributes': attributes, + "type": "rectangle" if el.tag == "box" else el.tag, + "attributes": attributes, } - shape['elements'] = [] + shape["elements"] = [] if track: shape.update(track) - shape['track_id'] = int(track['id']) - shape['frame'] = el.attrib['frame'] + shape["track_id"] = int(track["id"]) + shape["frame"] = el.attrib["frame"] track_elements = [] if image: shape.update(image) - elif el.tag == 'tag' and image: + elif el.tag == "tag" and image: attributes = {} tag = { - 'frame': image['frame'], - 'attributes': attributes, - 'group': int(el.attrib.get('group_id', 0)), - 'label': el.attrib['label'], + "frame": image["frame"], + "attributes": attributes, + "group": int(el.attrib.get("group_id", 0)), + "label": el.attrib["label"], } - subset = el.attrib.get('subset') - elif ev == 'end': - if el.tag == 'attribute' and element_attributes is not None and shape_element is not None: - attr_value = el.text or '' - attr_type = attribute_types.get(el.attrib['name']) - if el.text in ['true', 'false']: - attr_value = attr_value == 'true' - elif attr_type is not None and attr_type != 'text': + subset = el.attrib.get("subset") + elif ev == "end": + if ( + el.tag == "attribute" + and element_attributes is not None + and shape_element is not None + ): + attr_value = el.text or "" + attr_type = attribute_types.get(el.attrib["name"]) + if el.text in ["true", "false"]: + attr_value = attr_value == "true" + elif attr_type is not None and attr_type != "text": try: attr_value = float(attr_value) except ValueError: pass - element_attributes[el.attrib['name']] = attr_value - - if el.tag == 'attribute' and attributes is not None and shape_element is None: - attr_value = el.text or '' - attr_type = attribute_types.get(el.attrib['name']) - if el.text in ['true', 'false']: - attr_value = attr_value == 'true' - elif attr_type is not None and attr_type != 'text': + element_attributes[el.attrib["name"]] = attr_value + + if ( + el.tag == "attribute" + and attributes is not None + and shape_element is None + ): + attr_value = el.text or "" + attr_type = attribute_types.get(el.attrib["name"]) + if el.text in ["true", "false"]: + attr_value = attr_value == "true" + elif attr_type is not None and attr_type != "text": try: attr_value = float(attr_value) except ValueError: pass - attributes[el.attrib['name']] = attr_value - - elif el.tag in cls._SUPPORTED_SHAPES and shape["type"] == "skeleton" and el.tag != "skeleton": - shape_element['label'] = el.attrib.get('label') - shape_element['group'] = int(el.attrib.get('group_id', 0)) - - shape_element['type'] = el.tag - shape_element['z_order'] = int(el.attrib.get('z_order', 0)) - - if el.tag == 'box': - shape_element['points'] = list(map(float, [ - el.attrib['xtl'], el.attrib['ytl'], - el.attrib['xbr'], el.attrib['ybr'], - ])) + attributes[el.attrib["name"]] = attr_value + + elif ( + el.tag in cls._SUPPORTED_SHAPES + and shape["type"] == "skeleton" + and el.tag != "skeleton" + ): + shape_element["label"] = el.attrib.get("label") + shape_element["group"] = int(el.attrib.get("group_id", 0)) + + shape_element["type"] = el.tag + shape_element["z_order"] = int(el.attrib.get("z_order", 0)) + + if el.tag == "box": + shape_element["points"] = list( + map( + float, + [ + el.attrib["xtl"], + el.attrib["ytl"], + el.attrib["xbr"], + el.attrib["ybr"], + ], + ) + ) else: - shape_element['points'] = [] - for pair in el.attrib['points'].split(';'): - shape_element['points'].extend(map(float, pair.split(','))) - - if el.tag == 'points' and el.attrib.get('occluded') == '1': - shape_element['visibility'] = [Points.Visibility.hidden] * (len(shape_element['points']) // 2) + shape_element["points"] = [] + for pair in el.attrib["points"].split(";"): + shape_element["points"].extend(map(float, pair.split(","))) + + if el.tag == "points" and el.attrib.get("occluded") == "1": + shape_element["visibility"] = [Points.Visibility.hidden] * ( + len(shape_element["points"]) // 2 + ) else: - shape_element['occluded'] = (el.attrib.get('occluded') == '1') + shape_element["occluded"] = el.attrib.get("occluded") == "1" - if el.tag == 'points' and el.attrib.get('outside') == '1': - shape_element['visibility'] = [Points.Visibility.absent] * (len(shape_element['points']) // 2) + if el.tag == "points" and el.attrib.get("outside") == "1": + shape_element["visibility"] = [Points.Visibility.absent] * ( + len(shape_element["points"]) // 2 + ) else: - shape_element['outside'] = (el.attrib.get('outside') == '1') + shape_element["outside"] = el.attrib.get("outside") == "1" if track: - shape_element['keyframe'] = (el.attrib.get('keyframe') == '1') + shape_element["keyframe"] = el.attrib.get("keyframe") == "1" track_elements.append(shape_element) else: - shape['elements'].append(shape_element) + shape["elements"].append(shape_element) shape_element = None elif el.tag in cls._SUPPORTED_SHAPES: if track is not None: - shape['frame'] = el.attrib['frame'] - shape['outside'] = (el.attrib.get('outside') == '1') - shape['keyframe'] = (el.attrib.get('keyframe') == '1') + shape["frame"] = el.attrib["frame"] + shape["outside"] = el.attrib.get("outside") == "1" + shape["keyframe"] = el.attrib.get("keyframe") == "1" if image is not None: - shape['label'] = el.attrib.get('label') - shape['group'] = int(el.attrib.get('group_id', 0)) - - shape['type'] = el.tag - shape['occluded'] = (el.attrib.get('occluded') == '1') - shape['z_order'] = int(el.attrib.get('z_order', 0)) - shape['rotation'] = float(el.attrib.get('rotation', 0)) - - if el.tag == 'box': - shape['points'] = list(map(float, [ - el.attrib['xtl'], el.attrib['ytl'], - el.attrib['xbr'], el.attrib['ybr'], - ])) - elif el.tag == 'skeleton': - shape['points'] = [] + shape["label"] = el.attrib.get("label") + shape["group"] = int(el.attrib.get("group_id", 0)) + + shape["type"] = el.tag + shape["occluded"] = el.attrib.get("occluded") == "1" + shape["z_order"] = int(el.attrib.get("z_order", 0)) + shape["rotation"] = float(el.attrib.get("rotation", 0)) + + if el.tag == "box": + shape["points"] = list( + map( + float, + [ + el.attrib["xtl"], + el.attrib["ytl"], + el.attrib["xbr"], + el.attrib["ybr"], + ], + ) + ) + elif el.tag == "skeleton": + shape["points"] = [] else: - shape['points'] = [] - for pair in el.attrib['points'].split(';'): - shape['points'].extend(map(float, pair.split(','))) + shape["points"] = [] + for pair in el.attrib["points"].split(";"): + shape["points"].extend(map(float, pair.split(","))) if track: if shape["type"] == "skeleton" and track_elements: shape["keyframe"] = True - track_shapes[shape['frame']] = shape - track_shapes[shape['frame']]['elements'] = track_elements + track_shapes[shape["frame"]] = shape + track_shapes[shape["frame"]]["elements"] = track_elements track_elements = None elif shape["type"] != "skeleton": - track_shapes[shape['frame']] = shape + track_shapes[shape["frame"]] = shape else: - frame_desc = items.get((subset, shape['frame']), {'annotations': []}) - frame_desc['annotations'].append( - cls._parse_shape_ann(shape, categories)) - items[(subset, shape['frame'])] = frame_desc + frame_desc = items.get( + (subset, shape["frame"]), {"annotations": []} + ) + frame_desc["annotations"].append( + cls._parse_shape_ann(shape, categories) + ) + items[(subset, shape["frame"])] = frame_desc shape = None - elif el.tag == 'tag': - frame_desc = items.get((subset, tag['frame']), {'annotations': []}) - frame_desc['annotations'].append( - cls._parse_tag_ann(tag, categories)) - items[(subset, tag['frame'])] = frame_desc + elif el.tag == "tag": + frame_desc = items.get((subset, tag["frame"]), {"annotations": []}) + frame_desc["annotations"].append( + cls._parse_tag_ann(tag, categories) + ) + items[(subset, tag["frame"])] = frame_desc tag = None - elif el.tag == 'track': + elif el.tag == "track": for track_shape in track_shapes.values(): - frame_desc = items.get((subset, track_shape['frame']), {'annotations': []}) - frame_desc['annotations'].append( - cls._parse_shape_ann(track_shape, categories)) - items[(subset, track_shape['frame'])] = frame_desc + frame_desc = items.get( + (subset, track_shape["frame"]), {"annotations": []} + ) + frame_desc["annotations"].append( + cls._parse_shape_ann(track_shape, categories) + ) + items[(subset, track_shape["frame"])] = frame_desc track = None - elif el.tag == 'image': - frame_desc = items.get((subset, image['frame']), {'annotations': []}) - frame_desc.update({ - 'name': image.get('name'), - 'height': image.get('height'), - 'width': image.get('width'), - 'subset': subset, - }) - items[(subset, image['frame'])] = frame_desc + elif el.tag == "image": + frame_desc = items.get( + (subset, image["frame"]), {"annotations": []} + ) + frame_desc.update( + { + "name": image.get("name"), + "height": image.get("height"), + "width": image.get("width"), + "subset": subset, + } + ) + items[(subset, image["frame"])] = frame_desc image = None el.clear() @@ -312,7 +361,7 @@ def _parse(cls, path): @staticmethod def _parse_meta(context): ev, el = next(context) - if not (ev == 'start' and el.tag == 'annotations'): + if not (ev == "start" and el.tag == "annotations"): raise Exception("Unexpected token ") categories = {} @@ -326,7 +375,8 @@ def _parse_meta(context): # Recursive descent parser el = None - states = ['annotations'] + states = ["annotations"] + def accepted(expected_state, tag, next_state=None): state = states[-1] if state == expected_state and el is not None and el.tag == tag: @@ -335,6 +385,7 @@ def accepted(expected_state, tag, next_state=None): states.append(next_state) return True return False + def consumed(expected_state, tag): state = states[-1] if state == expected_state and el is not None and el.tag == tag: @@ -343,210 +394,290 @@ def consumed(expected_state, tag): return False for ev, el in context: - if ev == 'start': - if accepted('annotations', 'meta'): pass - elif accepted('meta', 'task'): pass - elif accepted('meta', 'project'): pass - elif accepted('project', 'tasks'): pass - elif accepted('tasks', 'task'): pass - elif accepted('task', 'id', next_state='task_id'): pass - elif accepted('task', 'segment'): pass - elif accepted('task', 'mode'): pass - elif accepted('task', 'original_size'): pass - elif accepted('original_size', 'height', next_state='frame_height'): pass - elif accepted('original_size', 'width', next_state='frame_width'): pass - elif accepted('task', 'labels'): pass - elif accepted('project', 'labels'): pass - elif accepted('labels', 'label'): - label = { 'name': None, 'attributes': [], 'parent': None } - elif accepted('label', 'name', next_state='label_name'): pass - elif accepted('label', 'attributes'): pass - elif accepted('label', 'parent', next_state='label_parent'): pass - elif accepted('attributes', 'attribute'): pass - elif accepted('attribute', 'name', next_state='attr_name'): pass - elif accepted('attribute', 'input_type', next_state='attr_type'): pass - elif accepted('annotations', 'image') or \ - accepted('annotations', 'track') or \ - accepted('annotations', 'tag'): + if ev == "start": + if accepted("annotations", "meta"): + pass + elif accepted("meta", "task"): + pass + elif accepted("meta", "project"): + pass + elif accepted("project", "tasks"): + pass + elif accepted("tasks", "task"): + pass + elif accepted("task", "id", next_state="task_id"): + pass + elif accepted("task", "segment"): + pass + elif accepted("task", "mode"): + pass + elif accepted("task", "original_size"): + pass + elif accepted("original_size", "height", next_state="frame_height"): + pass + elif accepted("original_size", "width", next_state="frame_width"): + pass + elif accepted("task", "labels"): + pass + elif accepted("project", "labels"): + pass + elif accepted("labels", "label"): + label = {"name": None, "attributes": [], "parent": None} + elif accepted("label", "name", next_state="label_name"): + pass + elif accepted("label", "attributes"): + pass + elif accepted("label", "parent", next_state="label_parent"): + pass + elif accepted("attributes", "attribute"): + pass + elif accepted("attribute", "name", next_state="attr_name"): + pass + elif accepted("attribute", "input_type", next_state="attr_type"): + pass + elif ( + accepted("annotations", "image") + or accepted("annotations", "track") + or accepted("annotations", "tag") + ): break else: pass - elif ev == 'end': - if consumed('meta', 'meta'): + elif ev == "end": + if consumed("meta", "meta"): break - elif consumed('project', 'project'): pass - elif consumed('tasks', 'tasks'): pass - elif consumed('task', 'task'): + elif consumed("project", "project"): + pass + elif consumed("tasks", "tasks"): + pass + elif consumed("task", "task"): tasks_info[task_id] = { - 'frame_size': frame_size, - 'mode': mode, + "frame_size": frame_size, + "mode": mode, } frame_size = [None, None] mode = None - elif consumed('task_id', 'id'): + elif consumed("task_id", "id"): task_id = int(el.text) - elif consumed('segment', 'segment'): pass - elif consumed('mode', 'mode'): + elif consumed("segment", "segment"): + pass + elif consumed("mode", "mode"): mode = el.text - elif consumed('original_size', 'original_size'): pass - elif consumed('frame_height', 'height'): + elif consumed("original_size", "original_size"): + pass + elif consumed("frame_height", "height"): frame_size[0] = int(el.text) - elif consumed('frame_width', 'width'): + elif consumed("frame_width", "width"): frame_size[1] = int(el.text) - elif consumed('label_name', 'name'): - label['name'] = el.text - elif consumed('attr_name', 'name'): - label['attributes'].append({'name': el.text}) - elif consumed('attr_type', 'input_type'): - label['attributes'][-1]['input_type'] = el.text - elif consumed('attribute', 'attribute'): pass - elif consumed('attributes', 'attributes'): pass - elif consumed('label', 'label'): - labels[label['name']] = { - 'attributes': label['attributes'], - 'parent': label['parent'] + elif consumed("label_name", "name"): + label["name"] = el.text + elif consumed("attr_name", "name"): + label["attributes"].append({"name": el.text}) + elif consumed("attr_type", "input_type"): + label["attributes"][-1]["input_type"] = el.text + elif consumed("attribute", "attribute"): + pass + elif consumed("attributes", "attributes"): + pass + elif consumed("label", "label"): + labels[label["name"]] = { + "attributes": label["attributes"], + "parent": label["parent"], } label = None - elif consumed('label_parent', 'parent'): - label['parent'] = el.text - elif consumed('labels', 'labels'): pass + elif consumed("label_parent", "parent"): + label["parent"] = el.text + elif consumed("labels", "labels"): + pass else: pass - assert len(states) == 1 and states[0] == 'annotations', \ + assert len(states) == 1 and states[0] == "annotations", ( "Expected 'meta' section in the annotation file, path: %s" % states + ) - common_attrs = ['occluded'] - if 'interpolation' in map(lambda t: t['mode'], tasks_info.values()): - common_attrs.append('keyframe') - common_attrs.append('outside') - common_attrs.append('track_id') + common_attrs = ["occluded"] + if "interpolation" in map(lambda t: t["mode"], tasks_info.values()): + common_attrs.append("keyframe") + common_attrs.append("outside") + common_attrs.append("track_id") label_cat = LabelCategories(attributes=common_attrs) attribute_types = {} for label, params in labels.items(): - attrs = {v['name']: v for v in params['attributes']} - parent = params['parent'] + attrs = {v["name"]: v for v in params["attributes"]} + parent = params["parent"] if parent and parent not in labels: - raise ValueError(f"Label's '{label}' parent label '{parent}' is not found") + raise ValueError( + f"Label's '{label}' parent label '{parent}' is not found" + ) label_cat.add(label, attributes=set(attrs), parent=parent) for attr_name, attr_params in attrs.items(): - attribute_types[attr_name] = attr_params['input_type'] + attribute_types[attr_name] = attr_params["input_type"] categories[AnnotationType.label] = label_cat return categories, tasks_info, attribute_types @classmethod def _parse_shape_ann(cls, ann, categories, *, parent_label: str = None): - ann_id = ann.get('id', 0) - ann_type = ann['type'] - - attributes = ann.get('attributes') or {} - if 'occluded' in categories[AnnotationType.label].attributes: - attributes['occluded'] = ann.get('occluded', False) - if 'outside' in ann: - attributes['outside'] = ann['outside'] - if 'keyframe' in ann: - attributes['keyframe'] = ann['keyframe'] - if 'track_id' in ann: - attributes['track_id'] = ann['track_id'] - if 'rotation' in ann: - attributes['rotation'] = ann['rotation'] - - group = ann.get('group') - - label = ann.get('label') - label_id = categories[AnnotationType.label].find(label, parent=parent_label or '')[0] + ann_id = ann.get("id", 0) + ann_type = ann["type"] + + attributes = ann.get("attributes") or {} + if "occluded" in categories[AnnotationType.label].attributes: + attributes["occluded"] = ann.get("occluded", False) + if "outside" in ann: + attributes["outside"] = ann["outside"] + if "keyframe" in ann: + attributes["keyframe"] = ann["keyframe"] + if "track_id" in ann: + attributes["track_id"] = ann["track_id"] + if "rotation" in ann: + attributes["rotation"] = ann["rotation"] + + group = ann.get("group") + + label = ann.get("label") + label_id = categories[AnnotationType.label].find( + label, parent=parent_label or "" + )[0] if label_id is None: raise ValueError( f"Annotation id {ann_id} ({ann_type}): " f"unknown label {label} (parent {parent_label})" ) - z_order = ann.get('z_order', 0) - points = ann.get('points', []) - - if ann_type == 'polyline': - return PolyLine(points, label=label_id, z_order=z_order, - id=ann_id, attributes=attributes, group=group) + z_order = ann.get("z_order", 0) + points = ann.get("points", []) + + if ann_type == "polyline": + return PolyLine( + points, + label=label_id, + z_order=z_order, + id=ann_id, + attributes=attributes, + group=group, + ) - elif ann_type == 'polygon': - return Polygon(points, label=label_id, z_order=z_order, - id=ann_id, attributes=attributes, group=group) + elif ann_type == "polygon": + return Polygon( + points, + label=label_id, + z_order=z_order, + id=ann_id, + attributes=attributes, + group=group, + ) - elif ann_type == 'points': - visibility = ann.get('visibility', None) - return Points(points, visibility, label=label_id, z_order=z_order, - id=ann_id, attributes=attributes, group=group) + elif ann_type == "points": + visibility = ann.get("visibility", None) + return Points( + points, + visibility, + label=label_id, + z_order=z_order, + id=ann_id, + attributes=attributes, + group=group, + ) - elif ann_type == 'box': + elif ann_type == "box": x, y = points[0], points[1] w, h = points[2] - x, points[3] - y - return Bbox(x, y, w, h, label=label_id, z_order=z_order, - id=ann_id, attributes=attributes, group=group) + return Bbox( + x, + y, + w, + h, + label=label_id, + z_order=z_order, + id=ann_id, + attributes=attributes, + group=group, + ) - elif ann_type == 'skeleton': + elif ann_type == "skeleton": elements = [] - for element in ann.get('elements', []): - elements.append(cls._parse_shape_ann( - element, categories, parent_label=ann.get('label') - )) + for element in ann.get("elements", []): + elements.append( + cls._parse_shape_ann( + element, categories, parent_label=ann.get("label") + ) + ) - return Skeleton(elements, label=label_id, z_order=z_order, - id=ann_id, attributes=attributes, group=group) + return Skeleton( + elements, + label=label_id, + z_order=z_order, + id=ann_id, + attributes=attributes, + group=group, + ) else: raise NotImplementedError("Unknown annotation type '%s'" % ann_type) @classmethod def _parse_tag_ann(cls, ann, categories): - label = ann.get('label') + label = ann.get("label") label_id = categories[AnnotationType.label].find(label)[0] - group = ann.get('group') - attributes = ann.get('attributes') + group = ann.get("group") + attributes = ann.get("attributes") return Label(label_id, attributes=attributes, group=group) def _load_items(self, parsed, image_items): for (subset, frame_id), item_desc in parsed.items(): - name = item_desc.get('name', 'frame_%06d.PNG' % int(frame_id)) - image = osp.join(self._images_dir, subset, name) if subset else osp.join(self._images_dir, name) - image_size = (item_desc.get('height'), item_desc.get('width')) + name = item_desc.get("name", "frame_%06d.PNG" % int(frame_id)) + image = ( + osp.join(self._images_dir, subset, name) + if subset + else osp.join(self._images_dir, name) + ) + image_size = (item_desc.get("height"), item_desc.get("width")) if all(image_size): image = Image(path=image, size=tuple(map(int, image_size))) - di = image_items.get((subset, osp.splitext(name)[0]), DatasetItem( - id=name, annotations=[], - )) + di = image_items.get( + (subset, osp.splitext(name)[0]), + DatasetItem( + id=name, + annotations=[], + ), + ) di.subset = subset or DEFAULT_SUBSET_NAME - di.annotations = item_desc.get('annotations') - di.attributes = {'frame': int(frame_id)} + di.annotations = item_desc.get("annotations") + di.attributes = {"frame": int(frame_id)} di.media = image if isinstance(image, Image) else di.media image_items[(subset, osp.splitext(name)[0])] = di return image_items + dm_env = dm.Environment() -dm_env.extractors.register('cvat', CvatExtractor) +dm_env.extractors.register("cvat", CvatExtractor) + class CvatImporter(Importer): @classmethod def find_sources(cls, path): - return cls._find_sources_recursive(path, '.xml', 'cvat') + return cls._find_sources_recursive(path, ".xml", "cvat") + -dm_env.importers.register('cvat', CvatImporter) +dm_env.importers.register("cvat", CvatImporter) class AnnotationConflictType(str, Enum): - MISSING_ANNOTATION = 'missing_annotation' - EXTRA_ANNOTATION = 'extra_annotation' - MISMATCHING_ANNOTATION = 'mismatching_annotation' + MISSING_ANNOTATION = "missing_annotation" + EXTRA_ANNOTATION = "extra_annotation" + MISMATCHING_ANNOTATION = "mismatching_annotation" def __str__(self) -> str: return self.value class MismatchingAnnotationKind(str, Enum): - ATTRIBUTE = 'attribute' - LABEL = 'label' + ATTRIBUTE = "attribute" + LABEL = "label" def __str__(self) -> str: return self.value @@ -575,15 +706,21 @@ def to_dict(self) -> dict: @define(kw_only=True) class AnnotationConflictsReport: + included_annotation_types: List[str] + ignored_attributes: List[str] mean_accuracy: float mean_annotation_accuracy: float mean_attribute_accuracy: float error_count: int + annotation_errors_count: int + attribute_errors_count: int + mean_error_count: float estimated_dataset_error_count: int estimated_dataset_invalid_annotations_count: int estimated_dataset_invalid_attributes_count: int - this_total_annotations_count: int + this_comparable_annotations_count: int this_annotations_count: int + this_total_annotations_count: int this_attributes_count: int intersection_gt_annotations_count: int intersection_frame_count: int @@ -622,7 +759,10 @@ def OKS(a, b, sigma=None, bbox=None, scale=None, visibility=None): scale = bbox[2] * bbox[3] dists = np.linalg.norm(p1 - p2, axis=1) - return np.sum(visibility * np.exp(-(dists**2) / (2 * scale * (2 * sigma) ** 2))) / np.sum(visibility) + return np.sum( + visibility * np.exp(-(dists**2) / (2 * scale * (2 * sigma) ** 2)) + ) / np.sum(visibility) + @define(kw_only=True) class _PointsMatcher(dm.ops.PointsMatcher): @@ -632,12 +772,23 @@ def distance(self, a, b): if dm.ops.bbox_iou(a_bbox, b_bbox) <= 0: return 0 bbox = dm.ops.mean_bbox([a_bbox, b_bbox]) - return OKS(a, b, sigma=self.sigma, bbox=bbox, - visibility=[v == dm.Points.Visibility.visible for v in a.visibility] + return OKS( + a, + b, + sigma=self.sigma, + bbox=bbox, + visibility=[v == dm.Points.Visibility.visible for v in a.visibility], ) + class _DistanceComparator(dm.ops.DistanceComparator): - def __init__(self, categories: dm.CategoriesInfo, **kwargs): + def __init__( + self, + categories: dm.CategoriesInfo, + *, + included_ann_types: Optional[List[dm.AnnotationType]] = None, + **kwargs, + ): super().__init__(**kwargs) self.categories = categories self._skeleton_info = {} @@ -679,7 +830,8 @@ def _get_skeleton_info(self, skeleton_label_id: int): # Build a sorted list of sublabels to arrange skeleton points during comparison skeleton_info = sorted( - idx for idx, label in enumerate(label_cat) + idx + for idx, label in enumerate(label_cat) if label.parent == skeleton_label_name ) self._skeleton_info[skeleton_label_id] = skeleton_info @@ -715,14 +867,17 @@ def match_skeletons(self, item_a, item_b): # Build a single Points object for further comparisons merged_points = dm.Points( - points=list(itertools.chain.from_iterable( - p.points if p else [0, 0] - for p in skeleton_points - )), - visibility=list(itertools.chain.from_iterable( - p.visibility if p else [dm.Points.Visibility.absent] - for p in skeleton_points - )), + points=list( + itertools.chain.from_iterable( + p.points if p else [0, 0] for p in skeleton_points + ) + ), + visibility=list( + itertools.chain.from_iterable( + p.visibility if p else [dm.Points.Visibility.absent] + for p in skeleton_points + ) + ), label=skeleton.label # no per-point attributes currently in CVAT ) @@ -753,11 +908,13 @@ def match_skeletons(self, item_a, item_b): a_points, b_points, dist_thresh=self.iou_threshold, - distance=matcher.distance + distance=matcher.distance, ) matched = [(points_map[id(p_a)], points_map[id(p_b)]) for (p_a, p_b) in matched] - mismatched = [(points_map[id(p_a)], points_map[id(p_b)]) for (p_a, p_b) in mismatched] + mismatched = [ + (points_map[id(p_a)], points_map[id(p_b)]) for (p_a, p_b) in mismatched + ] a_extra = [points_map[id(p_a)] for p_a in a_extra] b_extra = [points_map[id(p_b)] for p_b in b_extra] @@ -767,12 +924,22 @@ def match_skeletons(self, item_a, item_b): class _Comparator: def __init__(self, categories: dm.CategoriesInfo): self.ignored_attrs = [ - 'track_id', # changes from task to task, can't be defined manually with the same name - 'keyframe', # indicates the way annotation obtained, meaningless to compare - 'z_order', # TODO: compare relative or 'visible' z_order - 'group', # TODO: changes from task to task. But must be compared for existence + "track_id", # changes from task to task, can't be defined manually with the same name + "keyframe", # indicates the way annotation obtained, meaningless to compare + "z_order", # TODO: compare relative or 'visible' z_order + "group", # TODO: changes from task to task. But must be compared for existence ] - self._annotation_comparator = _DistanceComparator(categories) + self.included_ann_types = [ + dm.AnnotationType.bbox, + dm.AnnotationType.mask, + dm.AnnotationType.points, + dm.AnnotationType.polygon, + dm.AnnotationType.polyline, + dm.AnnotationType.skeleton, + ] + self._annotation_comparator = _DistanceComparator( + categories, included_ann_types=self.included_ann_types + ) def match_attrs(self, ann_a: dm.Annotation, ann_b: dm.Annotation): a_attrs = ann_a.attributes @@ -805,25 +972,23 @@ def match_attrs(self, ann_a: dm.Annotation, ann_b: dm.Annotation): def match_annotations(self, item_a, item_b): return self._annotation_comparator.match_annotations(item_a, item_b) + class DatasetComparator: - def __init__(self, - this_dataset: dm.Dataset, - gt_dataset: dm.Dataset - ) -> None: + def __init__(self, this_dataset: dm.Dataset, gt_dataset: dm.Dataset) -> None: self._this_dataset = this_dataset self._gt_dataset = gt_dataset self._comparator = _Comparator(gt_dataset.categories()) self._per_frame_results = {} - self._common_results = { - 'this_annotations_count': 0 - } + self._common_results = {"this_annotations_count": 0} - def _dm_ann_to_ann_id(self, ann: dm.Annotation, item: dm.DatasetItem, dataset: dm.Dataset): + def _dm_ann_to_ann_id( + self, ann: dm.Annotation, item: dm.DatasetItem, dataset: dm.Dataset + ): if dataset is self._this_dataset: - source = 'this' + source = "this" else: - source = 'gt' + source = "gt" ann_idx = item.annotations.index(ann) @@ -836,7 +1001,7 @@ def _find_gt_conflicts(self) -> List[AnnotationConflict]: for gt_item in gt_job_dataset: this_item = this_job_dataset.get(gt_item.id) if not this_item: - continue # we need to compare only intersecting frames + continue # we need to compare only intersecting frames self._process_frame(this_item, gt_item) @@ -850,142 +1015,183 @@ def _process_frame(self, this_item, gt_item): ) def _generate_frame_annotation_conflicts( - self, frame_id, frame_results, this_item: dm.DatasetItem, gt_item: dm.DatasetItem + self, + frame_id, + frame_results, + this_item: dm.DatasetItem, + gt_item: dm.DatasetItem, ) -> List[AnnotationConflict]: conflicts = [] merged_results = [[], [], [], []] - for shape_type in [ - dm.AnnotationType.bbox, dm.AnnotationType.mask, - dm.AnnotationType.points, dm.AnnotationType.polygon, - dm.AnnotationType.polyline, dm.AnnotationType.skeleton, - ]: + for shape_type in self._comparator.included_ann_types: for merged_field, field in zip(merged_results, frame_results[shape_type]): merged_field.extend(field) matches, mismatches, gt_unmatched, this_unmatched = merged_results for unmatched_ann in gt_unmatched: - conflicts.append(AnnotationConflict( - frame_id=frame_id, - type=AnnotationConflictType.MISSING_ANNOTATION, - data={ - 'annotation_ids': [ - self._dm_ann_to_ann_id(unmatched_ann, gt_item, self._gt_dataset) - ] - }, - )) + conflicts.append( + AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.MISSING_ANNOTATION, + data={ + "annotation_ids": [ + self._dm_ann_to_ann_id( + unmatched_ann, gt_item, self._gt_dataset + ) + ] + }, + ) + ) for unmatched_ann in this_unmatched: - conflicts.append(AnnotationConflict( - frame_id=frame_id, - type=AnnotationConflictType.EXTRA_ANNOTATION, - data={ - 'annotation_ids': [ - self._dm_ann_to_ann_id(unmatched_ann, this_item, self._this_dataset) - ] - }, - )) + conflicts.append( + AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.EXTRA_ANNOTATION, + data={ + "annotation_ids": [ + self._dm_ann_to_ann_id( + unmatched_ann, this_item, self._this_dataset + ) + ] + }, + ) + ) for gt_ann, this_ann in mismatches: - conflicts.append(AnnotationConflict( - frame_id=frame_id, - type=AnnotationConflictType.MISMATCHING_ANNOTATION, - data={ - 'annotation_ids': [ - self._dm_ann_to_ann_id(this_ann, this_item, self._this_dataset), - self._dm_ann_to_ann_id(gt_ann, gt_item, self._gt_dataset), - ], - 'kind': MismatchingAnnotationKind.LABEL, - 'expected': gt_ann.label, - 'actual': this_ann.label, - }, - )) + conflicts.append( + AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.MISMATCHING_ANNOTATION, + data={ + "annotation_ids": [ + self._dm_ann_to_ann_id( + this_ann, this_item, self._this_dataset + ), + self._dm_ann_to_ann_id(gt_ann, gt_item, self._gt_dataset), + ], + "kind": MismatchingAnnotationKind.LABEL, + "expected": gt_ann.label, + "actual": this_ann.label, + }, + ) + ) valid_annotations_count = 0 valid_attributes_count = 0 compared_attributes_count = 0 for gt_ann, this_ann in matches: # Datumaro wont match attributes - attr_matches, attr_mismatches, attr_gt_extra, attr_this_extra = \ - self._comparator.match_attrs(gt_ann, this_ann) + ( + attr_matches, + attr_mismatches, + attr_gt_extra, + attr_this_extra, + ) = self._comparator.match_attrs(gt_ann, this_ann) for mismatched_attr in attr_mismatches: - conflicts.append(AnnotationConflict( - frame_id=frame_id, - type=AnnotationConflictType.MISMATCHING_ANNOTATION, - data={ - 'annotation_ids': [ - self._dm_ann_to_ann_id(this_ann, this_item, self._this_dataset), - self._dm_ann_to_ann_id(gt_ann, gt_item, self._gt_dataset), - ], - 'kind': MismatchingAnnotationKind.ATTRIBUTE, - 'attribute': mismatched_attr, - 'expected': gt_ann.attributes[mismatched_attr], - 'actual': this_ann.attributes[mismatched_attr], - }, - )) + conflicts.append( + AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.MISMATCHING_ANNOTATION, + data={ + "annotation_ids": [ + self._dm_ann_to_ann_id( + this_ann, this_item, self._this_dataset + ), + self._dm_ann_to_ann_id( + gt_ann, gt_item, self._gt_dataset + ), + ], + "kind": MismatchingAnnotationKind.ATTRIBUTE, + "attribute": mismatched_attr, + "expected": gt_ann.attributes[mismatched_attr], + "actual": this_ann.attributes[mismatched_attr], + }, + ) + ) for extra_attr in attr_gt_extra: - conflicts.append(AnnotationConflict( - frame_id=frame_id, - type=AnnotationConflictType.MISMATCHING_ANNOTATION, - data={ - 'annotation_ids': [ - self._dm_ann_to_ann_id(this_ann, this_item, self._this_dataset), - self._dm_ann_to_ann_id(gt_ann, gt_item, self._gt_dataset), - ], - 'kind': MismatchingAnnotationKind.ATTRIBUTE, - 'attribute': mismatched_attr, - 'expected': gt_ann.attributes[extra_attr], - 'actual': None, - }, - )) + conflicts.append( + AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.MISMATCHING_ANNOTATION, + data={ + "annotation_ids": [ + self._dm_ann_to_ann_id( + this_ann, this_item, self._this_dataset + ), + self._dm_ann_to_ann_id( + gt_ann, gt_item, self._gt_dataset + ), + ], + "kind": MismatchingAnnotationKind.ATTRIBUTE, + "attribute": mismatched_attr, + "expected": gt_ann.attributes[extra_attr], + "actual": None, + }, + ) + ) for extra_attr in attr_this_extra: - conflicts.append(AnnotationConflict( - frame_id=frame_id, - type=AnnotationConflictType.MISMATCHING_ANNOTATION, - data={ - 'annotation_ids': [ - self._dm_ann_to_ann_id(this_ann, this_item, self._this_dataset), - self._dm_ann_to_ann_id(gt_ann, gt_item, self._gt_dataset), - ], - 'kind': MismatchingAnnotationKind.ATTRIBUTE, - 'attribute': mismatched_attr, - 'expected': None, - 'actual': this_ann.attributes[extra_attr], - }, - )) + conflicts.append( + AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.MISMATCHING_ANNOTATION, + data={ + "annotation_ids": [ + self._dm_ann_to_ann_id( + this_ann, this_item, self._this_dataset + ), + self._dm_ann_to_ann_id( + gt_ann, gt_item, self._gt_dataset + ), + ], + "kind": MismatchingAnnotationKind.ATTRIBUTE, + "attribute": mismatched_attr, + "expected": None, + "actual": this_ann.attributes[extra_attr], + }, + ) + ) valid_attributes_count += len(attr_matches) - compared_attributes_count += \ - len(attr_matches) + len(attr_mismatches) + len(attr_gt_extra) + len(attr_this_extra) + compared_attributes_count += ( + len(attr_matches) + + len(attr_mismatches) + + len(attr_gt_extra) + + len(attr_this_extra) + ) valid_annotations_count += 0 == ( len(attr_mismatches) + len(attr_gt_extra) + len(attr_this_extra) ) - compared_annotations_count = \ + compared_annotations_count = ( len(matches) + len(mismatches) + len(gt_unmatched) + len(this_unmatched) + ) - total_annotations_count = len(this_item.annotations) + len(gt_item.annotations) - - self._per_frame_results.setdefault(frame_id, {}).update({ - 'valid_attributes_count': valid_attributes_count, - 'compared_attributes_count': compared_attributes_count, - 'valid_annotations_count': valid_annotations_count, - 'compared_annotations_count': compared_annotations_count, - 'total_annotations_count': total_annotations_count, - 'gt_annotations_count': len(gt_item.annotations), - 'this_annotations_count': len(this_item.annotations), - 'attribute_accuracy': valid_attributes_count / compared_attributes_count, - 'annotation_accuracy': valid_annotations_count / compared_annotations_count, - 'overall_accuracy': \ - (valid_attributes_count + valid_annotations_count) / \ - ((compared_annotations_count + compared_attributes_count) or 1), - 'error_count': len(conflicts), # assuming no more than 1 error per annotation - 'conflicts': conflicts.copy(), - }) + self._per_frame_results.setdefault(frame_id, {}).update( + { + "valid_attributes_count": valid_attributes_count, + "compared_attributes_count": compared_attributes_count, + "valid_annotations_count": valid_annotations_count, + "compared_annotations_count": compared_annotations_count, + "gt_annotations_count": len(gt_item.annotations), + "this_annotations_count": len(this_item.annotations), + "attribute_accuracy": valid_attributes_count + / compared_attributes_count, + "annotation_accuracy": valid_annotations_count + / compared_annotations_count, + "overall_accuracy": (valid_attributes_count + valid_annotations_count) + / ((compared_annotations_count + compared_attributes_count) or 1), + "error_count": len( + conflicts + ), # assuming no more than 1 error per annotation + "conflicts": conflicts.copy(), + } + ) return conflicts @@ -994,14 +1200,20 @@ def prepare_report(self) -> AnnotationConflictsReport: this_annotations_count = 0 this_attributes_count = 0 + this_total_annotations_count = 0 for item in self._this_dataset: - this_annotations_count += len(item.annotations) + this_total_annotations_count += len(item.annotations) for ann in item.annotations: - this_attributes_count += \ - len(set(ann.attributes).difference(self._comparator.ignored_attrs)) + if ann.type not in self._comparator.included_ann_types: + continue + + this_attributes_count += len( + set(ann.attributes).difference(self._comparator.ignored_attrs) + ) + this_annotations_count += 1 - this_properties_count = this_annotations_count + this_attributes_count + this_comparable_annotations_count = this_annotations_count + this_attributes_count intersection_frames = [] valid_attributes_count = 0 @@ -1013,36 +1225,48 @@ def prepare_report(self) -> AnnotationConflictsReport: for frame_id, frame_result in self._per_frame_results.items(): intersection_frames.append(frame_id) - valid_attributes_count += frame_result['valid_attributes_count'] - valid_annotations_count += frame_result['valid_annotations_count'] - compared_attributes_count += frame_result['compared_attributes_count'] - compared_annotations_count += frame_result['compared_annotations_count'] - error_count += frame_result['error_count'] - intersection_gt_annotations_count += frame_result['gt_annotations_count'] - - mean_accuracy = \ - (valid_attributes_count + valid_annotations_count) / \ - ((compared_attributes_count + compared_annotations_count) or 1) - - mean_annotation_accuracy = valid_attributes_count / (compared_attributes_count or 1) - mean_attribute_accuracy = valid_annotations_count / (compared_annotations_count or 1) - - estimated_dataset_error_count = int((1 - mean_accuracy) * this_properties_count) - estimated_dataset_invalid_annotations_count = \ - int((1 - mean_annotation_accuracy) * this_annotations_count) - estimated_dataset_invalid_attributes_count = \ - int((1 - mean_attribute_accuracy) * this_attributes_count) + valid_attributes_count += frame_result["valid_attributes_count"] + valid_annotations_count += frame_result["valid_annotations_count"] + compared_attributes_count += frame_result["compared_attributes_count"] + compared_annotations_count += frame_result["compared_annotations_count"] + error_count += frame_result["error_count"] + intersection_gt_annotations_count += frame_result["gt_annotations_count"] + + mean_accuracy = (valid_attributes_count + valid_annotations_count) / ( + (compared_attributes_count + compared_annotations_count) or 1 + ) + + mean_attribute_accuracy = valid_attributes_count / ( + compared_attributes_count or 1 + ) + mean_annotation_accuracy = valid_annotations_count / ( + compared_annotations_count or 1 + ) + + estimated_dataset_error_count = int((1 - mean_accuracy) * this_comparable_annotations_count) + estimated_dataset_invalid_annotations_count = int( + (1 - mean_annotation_accuracy) * this_annotations_count + ) + estimated_dataset_invalid_attributes_count = int( + (1 - mean_attribute_accuracy) * this_attributes_count + ) return AnnotationConflictsReport( + included_annotation_types=[t.name for t in self._comparator.included_ann_types], + ignored_attributes=self._comparator.ignored_attrs, mean_accuracy=mean_accuracy, mean_annotation_accuracy=mean_annotation_accuracy, mean_attribute_accuracy=mean_attribute_accuracy, error_count=error_count, + mean_error_count=error_count / len(intersection_frames), + annotation_errors_count=compared_annotations_count - valid_annotations_count, + attribute_errors_count=compared_attributes_count - valid_attributes_count, estimated_dataset_error_count=estimated_dataset_error_count, estimated_dataset_invalid_annotations_count=estimated_dataset_invalid_annotations_count, estimated_dataset_invalid_attributes_count=estimated_dataset_invalid_attributes_count, - this_total_annotations_count=this_properties_count, + this_comparable_annotations_count=this_comparable_annotations_count, this_annotations_count=this_annotations_count, + this_total_annotations_count=this_total_annotations_count, this_attributes_count=this_attributes_count, intersection_gt_annotations_count=intersection_gt_annotations_count, intersection_frame_count=len(intersection_frames), @@ -1054,30 +1278,34 @@ def prepare_report(self) -> AnnotationConflictsReport: def main(args=None): parser = argparse.ArgumentParser() - parser.add_argument('--gt') - parser.add_argument('--gtf', default=None) - parser.add_argument('--ds') - parser.add_argument('--dsf', default=None) - parser.add_argument('-o', default='report.json') + parser.add_argument("--gt") + parser.add_argument("--gtf", default=None) + parser.add_argument("--ds") + parser.add_argument("--dsf", default=None) + parser.add_argument("-o", default="report.json") args = parser.parse_args(args) gt_dataset = dm.Dataset.import_from(args.gt, format=args.gtf, env=dm_env) this_dataset = dm.Dataset.import_from(args.ds, format=args.dsf, env=dm_env) comparator = DatasetComparator(this_dataset, gt_dataset) + # comparator._comparator.included_ann_types = [dm.AnnotationType.bbox] report = comparator.prepare_report() class JsonConverter(json.JSONEncoder): def default(self, o: Any): - if isinstance(o, (AnnotationConflict ,AnnotationConflictsReport, AnnotationId)): + if isinstance( + o, (AnnotationConflict, AnnotationConflictsReport, AnnotationId) + ): return o.to_dict() else: return super().default(o) - with open(args.o, 'w') as f: + with open(args.o, "w") as f: json.dump(report, f, cls=JsonConverter, indent=2) return 0 -if __name__ == '__main__': + +if __name__ == "__main__": sys.exit(main()) From 56c588ba5b86414fde961e74c880daaed9810110 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 12 Apr 2023 12:51:47 +0300 Subject: [PATCH 009/257] Fix import --- cvat/apps/dataset_manager/bindings.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/cvat/apps/dataset_manager/bindings.py b/cvat/apps/dataset_manager/bindings.py index 195a4df2bb21..ebd77a077b54 100644 --- a/cvat/apps/dataset_manager/bindings.py +++ b/cvat/apps/dataset_manager/bindings.py @@ -168,15 +168,15 @@ def _export_attributes(self, attributes): class CommonData(InstanceLabelData): Shape = namedtuple("Shape", 'id, label_id') # 3d LabeledShape = namedtuple( - 'LabeledShape', 'id, type, frame, label, points, occluded, attributes, source, rotation, group, z_order, elements, outside') - LabeledShape.__new__.__defaults__ = (0, 0, 0, [], False) + 'LabeledShape', 'type, frame, label, points, occluded, attributes, source, rotation, group, z_order, elements, outside, id') + LabeledShape.__new__.__defaults__ = (0, 0, 0, [], False, None) TrackedShape = namedtuple( - 'TrackedShape', 'id, type, frame, points, occluded, outside, keyframe, attributes, rotation, source, group, z_order, label, track_id, elements') - TrackedShape.__new__.__defaults__ = (0, 'manual', 0, 0, None, 0, []) + 'TrackedShape', 'type, frame, points, occluded, outside, keyframe, attributes, rotation, source, group, z_order, label, track_id, elements, id') + TrackedShape.__new__.__defaults__ = (0, 'manual', 0, 0, None, 0, [], None) Track = namedtuple('Track', 'id, label, group, source, shapes, elements') Track.__new__.__defaults__ = ([], ) - Tag = namedtuple('Tag', 'id, frame, label, attributes, source, group') - Tag.__new__.__defaults__ = (0, ) + Tag = namedtuple('Tag', 'frame, label, attributes, source, group, id') + Tag.__new__.__defaults__ = (0, None) Frame = namedtuple( 'Frame', 'idx, id, frame, name, width, height, labeled_shapes, tags, shapes, labels') Label = namedtuple('Label', 'id, name, color, type') From 64c814084dd252d1d9082a36f8801eddf2173cf3 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 13 Apr 2023 21:53:44 +0300 Subject: [PATCH 010/257] Improve metrics and results output in the script --- compare_datasets.py | 481 ++++++++++++++++++++++++++++++++------------ 1 file changed, 351 insertions(+), 130 deletions(-) diff --git a/compare_datasets.py b/compare_datasets.py index 243e5ccd45a0..e3767ee3d75b 100644 --- a/compare_datasets.py +++ b/compare_datasets.py @@ -10,7 +10,7 @@ from collections import OrderedDict from enum import Enum from glob import glob -from typing import Any, Dict, List, Optional, cast +from typing import Any, Callable, Dict, List, Optional, cast import datumaro as dm import numpy as np @@ -718,10 +718,10 @@ class AnnotationConflictsReport: estimated_dataset_error_count: int estimated_dataset_invalid_annotations_count: int estimated_dataset_invalid_attributes_count: int - this_comparable_annotations_count: int - this_annotations_count: int - this_total_annotations_count: int - this_attributes_count: int + ds_comparable_annotations_count: int + ds_annotations_count: int + ds_total_annotations_count: int + ds_attributes_count: int intersection_gt_annotations_count: int intersection_frame_count: int intersection_frame_share: float @@ -787,13 +787,19 @@ def __init__( categories: dm.CategoriesInfo, *, included_ann_types: Optional[List[dm.AnnotationType]] = None, + return_distances: bool = False, **kwargs, ): super().__init__(**kwargs) self.categories = categories self._skeleton_info = {} + self.included_ann_types = included_ann_types + self.return_distances = return_distances def _match_ann_type(self, t, *args): + if t not in self.included_ann_types: + return None + # pylint: disable=no-value-for-parameter if t == dm.AnnotationType.label: return self.match_labels(*args) @@ -813,13 +819,70 @@ def _match_ann_type(self, t, *args): else: return None + def _match_segments(self, t, item_a, item_b, *, + distance: Callable = dm.ops.segment_iou + ): + a_objs = self._get_ann_type(t, item_a) + b_objs = self._get_ann_type(t, item_b) + if not a_objs and not b_objs: + return [], [], [], [] + + if self.return_distances: + distance, distances = self._make_memoizing_distance(distance) + + returned_values = dm.ops.match_segments(a_objs, b_objs, + distance=distance, dist_thresh=self.iou_threshold) + + if self.return_distances: + returned_values = returned_values + (distances, ) + + return returned_values + + def match_boxes(self, item_a, item_b): + return self._match_segments(AnnotationType.bbox, item_a, item_b) + + def match_polygons(self, item_a, item_b): + return self._match_segments(AnnotationType.polygon, item_a, item_b) + + def match_masks(self, item_a, item_b): + return self._match_segments(AnnotationType.mask, item_a, item_b) + + def match_lines(self, item_a, item_b): + matcher = dm.ops.LineMatcher() + return self._match_segments(AnnotationType.polyline, item_a, item_b, + distance=matcher.distance) + def match_points(self, item_a, item_b): - a_points = self._get_ann_type(dm.AnnotationType.points, item_a) - b_points = self._get_ann_type(dm.AnnotationType.points, item_b) + a_points = self._get_ann_type(AnnotationType.points, item_a) + b_points = self._get_ann_type(AnnotationType.points, item_b) if not a_points and not b_points: return [], [], [], [] - return super().match_points(item_a, item_b) + instance_map = {} + for s in [item_a.annotations, item_b.annotations]: + s_instances = dm.ops.find_instances(s) + for inst in s_instances: + inst_bbox = dm.ops.max_bbox(inst) + for ann in inst: + instance_map[id(ann)] = [inst, inst_bbox] + matcher = _PointsMatcher(instance_map=instance_map) + + distance = matcher.distance + + if self.return_distances: + distance, distances = self._make_memoizing_distance(distance) + + returned_values = dm.ops.match_segments( + a_points, + b_points, + dist_thresh=self.iou_threshold, + distance=distance, + ) + + if self.return_distances: + returned_values = returned_values + (distances, ) + + return returned_values def _get_skeleton_info(self, skeleton_label_id: int): label_cat = cast(dm.LabelCategories, self.categories[dm.AnnotationType.label]) @@ -903,12 +966,16 @@ def match_skeletons(self, item_a, item_b): matcher = _PointsMatcher(instance_map=instance_map) - # unpack to validate returned data format + distance = matcher.distance + + if self.return_distances: + distance, distances = self._make_memoizing_distance(distance) + matched, mismatched, a_extra, b_extra = dm.ops.match_segments( a_points, b_points, dist_thresh=self.iou_threshold, - distance=matcher.distance, + distance=distance, ) matched = [(points_map[id(p_a)], points_map[id(p_b)]) for (p_a, p_b) in matched] @@ -918,7 +985,38 @@ def match_skeletons(self, item_a, item_b): a_extra = [points_map[id(p_a)] for p_a in a_extra] b_extra = [points_map[id(p_b)] for p_b in b_extra] - return matched, mismatched, a_extra, b_extra + # Map points back to skeletons + if self.return_distances: + for (p_a_id, p_b_id) in list(distances.keys()): + dist = distances.pop((p_a_id, p_b_id)) + distances[( + id(points_map[p_a_id]), + id(points_map[p_b_id]) + )] = dist + + returned_values = (matched, mismatched, a_extra, b_extra) + + if self.return_distances: + returned_values = returned_values + (distances, ) + + return returned_values + + @classmethod + def _make_memoizing_distance(cls, distance_function): + distances = {} + notfound = object() + + def memoizing_distance(a, b): + key = (id(a), id(b)) + dist = distances.get(key, notfound) + + if dist is notfound: + dist = distance_function(a, b) + distances[key] = dist + + return dist + + return memoizing_distance, distances class _Comparator: @@ -938,7 +1036,7 @@ def __init__(self, categories: dm.CategoriesInfo): dm.AnnotationType.skeleton, ] self._annotation_comparator = _DistanceComparator( - categories, included_ann_types=self.included_ann_types + categories, included_ann_types=self.included_ann_types, return_distances=True, ) def match_attrs(self, ann_a: dm.Annotation, ann_b: dm.Annotation): @@ -974,19 +1072,19 @@ def match_annotations(self, item_a, item_b): class DatasetComparator: - def __init__(self, this_dataset: dm.Dataset, gt_dataset: dm.Dataset) -> None: - self._this_dataset = this_dataset + def __init__(self, ds_dataset: dm.Dataset, gt_dataset: dm.Dataset) -> None: + self._ds_dataset = ds_dataset self._gt_dataset = gt_dataset self._comparator = _Comparator(gt_dataset.categories()) - self._per_frame_results = {} - self._common_results = {"this_annotations_count": 0} + self._frame_results = {} + self._common_results = {"ds_annotations_count": 0} def _dm_ann_to_ann_id( self, ann: dm.Annotation, item: dm.DatasetItem, dataset: dm.Dataset ): - if dataset is self._this_dataset: - source = "this" + if dataset is self._ds_dataset: + source = "ds" else: source = "gt" @@ -995,40 +1093,68 @@ def _dm_ann_to_ann_id( return AnnotationId(source=source, id=ann_idx, type=ann.type.name) def _find_gt_conflicts(self) -> List[AnnotationConflict]: - this_job_dataset = self._this_dataset + ds_job_dataset = self._ds_dataset gt_job_dataset = self._gt_dataset for gt_item in gt_job_dataset: - this_item = this_job_dataset.get(gt_item.id) - if not this_item: + ds_item = ds_job_dataset.get(gt_item.id) + if not ds_item: continue # we need to compare only intersecting frames - self._process_frame(this_item, gt_item) + self._process_frame(ds_item, gt_item) - def _process_frame(self, this_item, gt_item): - frame_id = this_item.id - frame_results = self._comparator.match_annotations(gt_item, this_item) - self._per_frame_results.setdefault(frame_id, {}) + def _process_frame(self, ds_item, gt_item): + frame_id = ds_item.id + frame_results = self._comparator.match_annotations(gt_item, ds_item) + self._frame_results.setdefault(frame_id, {}) self._generate_frame_annotation_conflicts( - frame_id, frame_results, this_item, gt_item + frame_id, frame_results, ds_item, gt_item ) def _generate_frame_annotation_conflicts( self, frame_id, frame_results, - this_item: dm.DatasetItem, + ds_item: dm.DatasetItem, gt_item: dm.DatasetItem, ) -> List[AnnotationConflict]: conflicts = [] - merged_results = [[], [], [], []] + merged_results = [[], [], [], [], {}] for shape_type in self._comparator.included_ann_types: - for merged_field, field in zip(merged_results, frame_results[shape_type]): + for merged_field, field in zip(merged_results, frame_results[shape_type][:-1]): merged_field.extend(field) - matches, mismatches, gt_unmatched, this_unmatched = merged_results + merged_results[-1].update(frame_results[shape_type][-1]) + + matches, mismatches, gt_unmatched, ds_unmatched, pairwise_distances = merged_results + + def _distance(gt_obj, ds_obj): + return pairwise_distances.get((id(gt_obj), id(ds_obj))) + + _matched_shapes = set( + id(shape) + for shape_pair in itertools.chain(matches, mismatches) + for shape in shape_pair + ) + def _find_best_unmatched_distance(shape): + this_shape_id = id(shape) + + this_shape_distances = [] + + for (gt_shape_id, ds_shape_id), dist in pairwise_distances.items(): + if gt_shape_id == this_shape_id: + other_shape_id = ds_shape_id + elif ds_shape_id == this_shape_id: + other_shape_id = gt_shape_id + else: + continue + + this_shape_distances.append((other_shape_id, dist)) + + matched_ann, distance = max(this_shape_distances, key=lambda v: v[1], default=(None, 0)) + return matched_ann, distance for unmatched_ann in gt_unmatched: conflicts.append( @@ -1045,7 +1171,7 @@ def _generate_frame_annotation_conflicts( ) ) - for unmatched_ann in this_unmatched: + for unmatched_ann in ds_unmatched: conflicts.append( AnnotationConflict( frame_id=frame_id, @@ -1053,14 +1179,14 @@ def _generate_frame_annotation_conflicts( data={ "annotation_ids": [ self._dm_ann_to_ann_id( - unmatched_ann, this_item, self._this_dataset + unmatched_ann, ds_item, self._ds_dataset ) ] }, ) ) - for gt_ann, this_ann in mismatches: + for gt_ann, matched_ann_id in mismatches: conflicts.append( AnnotationConflict( frame_id=frame_id, @@ -1068,28 +1194,56 @@ def _generate_frame_annotation_conflicts( data={ "annotation_ids": [ self._dm_ann_to_ann_id( - this_ann, this_item, self._this_dataset + matched_ann_id, ds_item, self._ds_dataset ), self._dm_ann_to_ann_id(gt_ann, gt_item, self._gt_dataset), ], "kind": MismatchingAnnotationKind.LABEL, "expected": gt_ann.label, - "actual": this_ann.label, + "actual": matched_ann_id.label, }, ) ) - valid_annotations_count = 0 + resulting_distances = [ + _distance(gt_ann, ds_ann) + for gt_ann, ds_ann in itertools.chain(matches, mismatches) + ] + + for unmatched_ann in itertools.chain(gt_unmatched, ds_unmatched): + matched_ann_id, distance = _find_best_unmatched_distance(unmatched_ann) + if matched_ann_id is not None: + _matched_shapes.add(matched_ann_id) + resulting_distances.append(distance) + + mean_iou = np.mean(resulting_distances) + + valid_shapes_count = len(matches) + len(mismatches) + missing_shapes_count = len(gt_unmatched) + extra_shapes_count = len(ds_unmatched) + total_shapes_count = len(matches) + len(mismatches) + len(gt_unmatched) + len(ds_unmatched) + ds_shapes_count = len(matches) + len(mismatches) + len(ds_unmatched) + gt_shapes_count = len(matches) + len(mismatches) + len(gt_unmatched) + + valid_labels_count = len(matches) + invalid_labels_count = len(mismatches) + total_labels_count = valid_labels_count + invalid_labels_count + valid_attributes_count = 0 - compared_attributes_count = 0 - for gt_ann, this_ann in matches: + invalid_attributes_count = 0 + missing_attributes_count = 0 + extra_attributes_count = 0 + total_attributes_count = 0 + ds_attributes_count = 0 + gt_attributes_count = 0 + for gt_ann, matched_ann_id in matches: # Datumaro wont match attributes ( attr_matches, attr_mismatches, attr_gt_extra, - attr_this_extra, - ) = self._comparator.match_attrs(gt_ann, this_ann) + attr_ds_extra, + ) = self._comparator.match_attrs(gt_ann, matched_ann_id) for mismatched_attr in attr_mismatches: conflicts.append( @@ -1099,7 +1253,7 @@ def _generate_frame_annotation_conflicts( data={ "annotation_ids": [ self._dm_ann_to_ann_id( - this_ann, this_item, self._this_dataset + matched_ann_id, ds_item, self._ds_dataset ), self._dm_ann_to_ann_id( gt_ann, gt_item, self._gt_dataset @@ -1108,7 +1262,7 @@ def _generate_frame_annotation_conflicts( "kind": MismatchingAnnotationKind.ATTRIBUTE, "attribute": mismatched_attr, "expected": gt_ann.attributes[mismatched_attr], - "actual": this_ann.attributes[mismatched_attr], + "actual": matched_ann_id.attributes[mismatched_attr], }, ) ) @@ -1121,7 +1275,7 @@ def _generate_frame_annotation_conflicts( data={ "annotation_ids": [ self._dm_ann_to_ann_id( - this_ann, this_item, self._this_dataset + matched_ann_id, ds_item, self._ds_dataset ), self._dm_ann_to_ann_id( gt_ann, gt_item, self._gt_dataset @@ -1135,7 +1289,7 @@ def _generate_frame_annotation_conflicts( ) ) - for extra_attr in attr_this_extra: + for extra_attr in attr_ds_extra: conflicts.append( AnnotationConflict( frame_id=frame_id, @@ -1143,7 +1297,7 @@ def _generate_frame_annotation_conflicts( data={ "annotation_ids": [ self._dm_ann_to_ann_id( - this_ann, this_item, self._this_dataset + matched_ann_id, ds_item, self._ds_dataset ), self._dm_ann_to_ann_id( gt_ann, gt_item, self._gt_dataset @@ -1152,44 +1306,58 @@ def _generate_frame_annotation_conflicts( "kind": MismatchingAnnotationKind.ATTRIBUTE, "attribute": mismatched_attr, "expected": None, - "actual": this_ann.attributes[extra_attr], + "actual": matched_ann_id.attributes[extra_attr], }, ) ) valid_attributes_count += len(attr_matches) - compared_attributes_count += ( + invalid_attributes_count += len(attr_mismatches) + missing_attributes_count += len(attr_gt_extra) + extra_attributes_count += len(attr_ds_extra) + total_attributes_count += ( len(attr_matches) + len(attr_mismatches) + len(attr_gt_extra) - + len(attr_this_extra) - ) - valid_annotations_count += 0 == ( - len(attr_mismatches) + len(attr_gt_extra) + len(attr_this_extra) + + len(attr_ds_extra) ) + ds_attributes_count += len(attr_matches) + len(attr_mismatches) + len(attr_ds_extra) + gt_attributes_count += len(attr_matches) + len(attr_mismatches) + len(attr_gt_extra) - compared_annotations_count = ( - len(matches) + len(mismatches) + len(gt_unmatched) + len(this_unmatched) - ) - - self._per_frame_results.setdefault(frame_id, {}).update( + self._frame_results.setdefault(frame_id, {}).update( { - "valid_attributes_count": valid_attributes_count, - "compared_attributes_count": compared_attributes_count, - "valid_annotations_count": valid_annotations_count, - "compared_annotations_count": compared_annotations_count, - "gt_annotations_count": len(gt_item.annotations), - "this_annotations_count": len(this_item.annotations), - "attribute_accuracy": valid_attributes_count - / compared_attributes_count, - "annotation_accuracy": valid_annotations_count - / compared_annotations_count, - "overall_accuracy": (valid_attributes_count + valid_annotations_count) - / ((compared_annotations_count + compared_attributes_count) or 1), - "error_count": len( + "annotation_kind": { + 'shape': { + 'valid_count': valid_shapes_count, + 'missing_count': missing_shapes_count, + 'extra_count': extra_shapes_count, + 'total_count': total_shapes_count, + 'ds_count': ds_shapes_count, + 'gt_count': gt_shapes_count, + 'mean_iou': mean_iou, + 'accuracy': valid_shapes_count / (total_shapes_count or 1), + }, + 'label': { + 'valid_count': valid_labels_count, + 'invalid_count': invalid_labels_count, + 'total_count': total_labels_count, + 'accuracy': valid_labels_count / (total_labels_count or 1), + }, + 'attribute': { + 'valid_count': valid_attributes_count, + 'invalid_count': invalid_attributes_count, + 'missing_count': missing_attributes_count, + 'extra_count': extra_attributes_count, + 'total_count': total_attributes_count, + 'ds_count': ds_attributes_count, + 'gt_count': gt_attributes_count, + 'accuracy': valid_attributes_count / (total_attributes_count or 1), + }, + }, + "errors_count": len( conflicts ), # assuming no more than 1 error per annotation - "conflicts": conflicts.copy(), + "errors": conflicts.copy(), } ) @@ -1198,81 +1366,134 @@ def _generate_frame_annotation_conflicts( def prepare_report(self) -> AnnotationConflictsReport: self._find_gt_conflicts() - this_annotations_count = 0 - this_attributes_count = 0 - this_total_annotations_count = 0 - for item in self._this_dataset: - this_total_annotations_count += len(item.annotations) + def _get_nested_key(d, path): + for k in path: + d = d[k] + return d + + def _set_nested_key(d, path, value): + for k in path[:-1]: + d = d.setdefault(k, {}) + d[path[-1]] = value + return d + full_ds_comparable_shapes_count = 0 + full_ds_comparable_attributes_count = 0 + for item in self._ds_dataset: for ann in item.annotations: if ann.type not in self._comparator.included_ann_types: continue - this_attributes_count += len( + full_ds_comparable_attributes_count += len( set(ann.attributes).difference(self._comparator.ignored_attrs) ) - this_annotations_count += 1 + full_ds_comparable_shapes_count += 1 - this_comparable_annotations_count = this_annotations_count + this_attributes_count + full_ds_comparable_labels_count = full_ds_comparable_shapes_count intersection_frames = [] - valid_attributes_count = 0 - valid_annotations_count = 0 - compared_attributes_count = 0 - compared_annotations_count = 0 - intersection_gt_annotations_count = 0 - error_count = 0 - - for frame_id, frame_result in self._per_frame_results.items(): + summary_stats = {} + mean_ious = [] + for frame_id, frame_result in self._frame_results.items(): intersection_frames.append(frame_id) - valid_attributes_count += frame_result["valid_attributes_count"] - valid_annotations_count += frame_result["valid_annotations_count"] - compared_attributes_count += frame_result["compared_attributes_count"] - compared_annotations_count += frame_result["compared_annotations_count"] - error_count += frame_result["error_count"] - intersection_gt_annotations_count += frame_result["gt_annotations_count"] - - mean_accuracy = (valid_attributes_count + valid_annotations_count) / ( - (compared_attributes_count + compared_annotations_count) or 1 - ) - mean_attribute_accuracy = valid_attributes_count / ( - compared_attributes_count or 1 + for path in [ + ["annotation_kind", "shape", "valid_count"], + ["annotation_kind", "shape", "missing_count"], + ["annotation_kind", "shape", "extra_count"], + ["annotation_kind", "shape", "total_count"], + ["annotation_kind", "shape", "ds_count"], + ["annotation_kind", "shape", "gt_count"], + + ["annotation_kind", "label", "valid_count"], + ["annotation_kind", "label", "invalid_count"], + ["annotation_kind", "label", "total_count"], + + ["annotation_kind", "attribute", "valid_count"], + ["annotation_kind", "attribute", "invalid_count"], + ["annotation_kind", "attribute", "missing_count"], + ["annotation_kind", "attribute", "extra_count"], + ["annotation_kind", "attribute", "total_count"], + ["annotation_kind", "attribute", "ds_count"], + ["annotation_kind", "attribute", "gt_count"], + ["errors_count"], + ]: + frame_value = _get_nested_key(frame_result, path) + try: + summary_value = _get_nested_key(summary_stats, path) + _set_nested_key(summary_stats, path, frame_value + summary_value) + except KeyError: + _set_nested_key(summary_stats, path, frame_value) + + mean_ious.append(frame_result["annotation_kind"]["shape"]["mean_iou"]) + + mean_shape_accuracy = _get_nested_key(summary_stats, ["annotation_kind", "shape", "valid_count"]) / (_get_nested_key(summary_stats, ["annotation_kind", "shape", "total_count"]) or 1) + mean_label_accuracy = _get_nested_key(summary_stats, ["annotation_kind", "label", "valid_count"]) / (_get_nested_key(summary_stats, ["annotation_kind", "label", "total_count"]) or 1) + mean_attribute_accuracy = _get_nested_key(summary_stats, ["annotation_kind", "attribute", "valid_count"]) / (_get_nested_key(summary_stats, ["annotation_kind", "attribute", "total_count"]) or 1) + mean_error_count = summary_stats["errors_count"] / len(intersection_frames) + + estimated_ds_invalid_shapes_count = int( + (1 - mean_shape_accuracy) * full_ds_comparable_shapes_count ) - mean_annotation_accuracy = valid_annotations_count / ( - compared_annotations_count or 1 + estimated_ds_invalid_labels_count = int( + (1 - mean_label_accuracy) * full_ds_comparable_labels_count ) - - estimated_dataset_error_count = int((1 - mean_accuracy) * this_comparable_annotations_count) - estimated_dataset_invalid_annotations_count = int( - (1 - mean_annotation_accuracy) * this_annotations_count - ) - estimated_dataset_invalid_attributes_count = int( - (1 - mean_attribute_accuracy) * this_attributes_count + estimated_ds_invalid_attributes_count = int( + (1 - mean_attribute_accuracy) * full_ds_comparable_attributes_count ) - return AnnotationConflictsReport( + return dict( included_annotation_types=[t.name for t in self._comparator.included_ann_types], ignored_attributes=self._comparator.ignored_attrs, - mean_accuracy=mean_accuracy, - mean_annotation_accuracy=mean_annotation_accuracy, - mean_attribute_accuracy=mean_attribute_accuracy, - error_count=error_count, - mean_error_count=error_count / len(intersection_frames), - annotation_errors_count=compared_annotations_count - valid_annotations_count, - attribute_errors_count=compared_attributes_count - valid_attributes_count, - estimated_dataset_error_count=estimated_dataset_error_count, - estimated_dataset_invalid_annotations_count=estimated_dataset_invalid_annotations_count, - estimated_dataset_invalid_attributes_count=estimated_dataset_invalid_attributes_count, - this_comparable_annotations_count=this_comparable_annotations_count, - this_annotations_count=this_annotations_count, - this_total_annotations_count=this_total_annotations_count, - this_attributes_count=this_attributes_count, - intersection_gt_annotations_count=intersection_gt_annotations_count, - intersection_frame_count=len(intersection_frames), - intersection_frame_share=len(intersection_frames) / len(self._this_dataset), - intersection_frames=intersection_frames, - frame_results=self._per_frame_results, + + intersection_results=dict( + frame_count=len(intersection_frames), + frame_share_percent=len(intersection_frames) / len(self._ds_dataset), + frames=intersection_frames, + + error_count=summary_stats["errors_count"], + mean_error_count=mean_error_count, + annotation_kind={ + 'shape': { + 'valid_count': _get_nested_key(summary_stats, ["annotation_kind", "shape", "valid_count"]), + 'missing_count': _get_nested_key(summary_stats, ["annotation_kind", "shape", "missing_count"]), + 'extra_count': _get_nested_key(summary_stats, ["annotation_kind", "shape", "extra_count"]), + 'total_count': _get_nested_key(summary_stats, ["annotation_kind", "shape", "total_count"]), + 'ds_count': _get_nested_key(summary_stats, ["annotation_kind", "shape", "ds_count"]), + 'gt_count': _get_nested_key(summary_stats, ["annotation_kind", "shape", "gt_count"]), + 'mean_iou': np.mean(mean_ious), + 'accuracy': mean_shape_accuracy, + }, + 'label': { + 'valid_count': _get_nested_key(summary_stats, ["annotation_kind", "label", "valid_count"]), + 'invalid_count': _get_nested_key(summary_stats, ["annotation_kind", "label", "invalid_count"]), + 'total_count': _get_nested_key(summary_stats, ["annotation_kind", "label", "total_count"]), + 'accuracy': mean_label_accuracy, + }, + 'attribute': { + 'valid_count': _get_nested_key(summary_stats, ["annotation_kind", "attribute", "valid_count"]), + 'invalid_count': _get_nested_key(summary_stats, ["annotation_kind", "attribute", "invalid_count"]), + 'missing_count': _get_nested_key(summary_stats, ["annotation_kind", "attribute", "missing_count"]), + 'extra_count': _get_nested_key(summary_stats, ["annotation_kind", "attribute", "extra_count"]), + 'total_count': _get_nested_key(summary_stats, ["annotation_kind", "attribute", "total_count"]), + 'ds_count': _get_nested_key(summary_stats, ["annotation_kind", "attribute", "ds_count"]), + 'gt_count': _get_nested_key(summary_stats, ["annotation_kind", "attribute", "gt_count"]), + 'accuracy': mean_attribute_accuracy, + }, + }, + ), + + full_dataset=dict( + frame_count=len(self._ds_dataset), + shapes_count=full_ds_comparable_shapes_count, + attributes_count=full_ds_comparable_attributes_count, + + estimated_invalid_shapes_count=estimated_ds_invalid_shapes_count, + estimated_invalid_labels_count=estimated_ds_invalid_labels_count, + estimated_invalid_attributes_count=estimated_ds_invalid_attributes_count, + ), + + frame_results=self._frame_results, ) @@ -1286,9 +1507,9 @@ def main(args=None): args = parser.parse_args(args) gt_dataset = dm.Dataset.import_from(args.gt, format=args.gtf, env=dm_env) - this_dataset = dm.Dataset.import_from(args.ds, format=args.dsf, env=dm_env) + ds_dataset = dm.Dataset.import_from(args.ds, format=args.dsf, env=dm_env) - comparator = DatasetComparator(this_dataset, gt_dataset) + comparator = DatasetComparator(ds_dataset, gt_dataset) # comparator._comparator.included_ann_types = [dm.AnnotationType.bbox] report = comparator.prepare_report() From 4fef567ad8d01d3c92222877121b5ce70f4b7e17 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 14 Apr 2023 18:13:16 +0300 Subject: [PATCH 011/257] Add test assets for gt job --- tests/python/shared/assets/annotations.json | 6978 +++++++++++++++-- .../shared/assets/cvat_db/cvat_data.tar.bz2 | Bin 982845 -> 1130078 bytes tests/python/shared/assets/cvat_db/data.json | 2964 ++++++- tests/python/shared/assets/jobs.json | 56 +- tests/python/shared/assets/labels.json | 61 +- tests/python/shared/assets/tasks.json | 43 +- 6 files changed, 8988 insertions(+), 1114 deletions(-) diff --git a/tests/python/shared/assets/annotations.json b/tests/python/shared/assets/annotations.json index 8ccb3292d2e9..a0a427f96108 100644 --- a/tests/python/shared/assets/annotations.json +++ b/tests/python/shared/assets/annotations.json @@ -1401,25 +1401,23 @@ } ], "version": 0 - } - }, - "task": { - "2": { + }, + "27": { "shapes": [ { "attributes": [], "elements": [], "frame": 0, - "group": 0, - "id": 1, - "label_id": 3, + "group": null, + "id": 483, + "label_id": 64, "occluded": false, "outside": false, "points": [ - 223.39453125, - 226.0751953125, - 513.7663269042969, - 377.9619903564453 + 32.62534262708583, + 20.60098154936127, + 54.70276973433946, + 42.65809723800925 ], "rotation": 0.0, "source": "manual", @@ -1429,344 +1427,728 @@ { "attributes": [], "elements": [], - "frame": 1, - "group": 0, - "id": 2, - "label_id": 3, + "frame": 0, + "group": null, + "id": 494, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 63.0791015625, - 139.75390625, - 132.19337349397574, - 112.3867469879533, - 189.71144578313397, - 159.23614457831354, - 191.1030120481937, - 246.9048192771097, - 86.73554216867524, - 335.5012048192784, - 32.00060240964012, - 250.15180722891637 + 108.53125, + 181.1015625, + 142.66406158880454, + 222.9093914860714 ], "rotation": 0.0, "source": "manual", - "type": "polygon", + "type": "rectangle", "z_order": 0 }, { "attributes": [], "elements": [], "frame": 1, - "group": 0, - "id": 3, - "label_id": 4, + "group": null, + "id": 484, + "label_id": 64, "occluded": false, "outside": false, "points": [ - 83.0244140625, - 216.75390625, - 112.24759036144678, - 162.48313253012202, - 167.44638554216908, - 183.35662650602535, - 149.35602409638705, - 252.0072289156633, - 84.41626506024113, - 292.8265060240974, - 72.81987951807241, - 258.9650602409638 + 16.165617100664203, + 9.174072385736443, + 34.292834517618566, + 49.1800330458904 ], "rotation": 0.0, "source": "manual", - "type": "polygon", + "type": "rectangle", "z_order": 0 }, { "attributes": [], "elements": [], - "frame": 2, - "group": 0, - "id": 4, - "label_id": 3, + "frame": 1, + "group": null, + "id": 495, + "label_id": 66, "occluded": false, "outside": false, "points": [ - 24.443359375, - 107.2275390625, - 84.91109877913368, - 61.125083240844106, - 169.4316315205324, - 75.1561598224198, - 226.5581576026634, - 113.90865704772477, - 240.5892341842391, - 205.77880133185317, - 210.52264150943483, - 270.9230854605994 + 9.683607669644278, + 35.54745578773315, + 17.07658182436379, + 70.58735623784703 ], "rotation": 0.0, "source": "manual", - "type": "polyline", + "type": "rectangle", "z_order": 0 }, { "attributes": [], "elements": [], - "frame": 22, + "frame": 2, "group": 0, - "id": 5, - "label_id": 3, + "id": 507, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 148.94921875, - 285.6865234375, - 313.515094339622, - 400.32830188679145, - 217.36415094339463, - 585.2339622641503, - 64.81698113207494, - 499.25283018867776 + 401.25005136424625, + 21.437188999945647, + 401.25005136424625, + 86.07529491001696, + 476.49277230117514, + 21.30941055245239, + 476.49277230117514, + 86.1453633191959, + 482.3813022073682, + 17.222011508036303, + 482.3813022073682, + 81.74829255695477, + 407.4789834561907, + 17.36159481238974, + 407.4789834561907, + 81.69191156113993 ], "rotation": 0.0, "source": "manual", - "type": "points", + "type": "cuboid", "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "5": { - "shapes": [ + }, { "attributes": [], "elements": [], - "frame": 0, - "group": 0, - "id": 29, - "label_id": 9, + "frame": 2, + "group": null, + "id": 485, + "label_id": 66, "occluded": false, "outside": false, "points": [ - 364.0361328125, - 528.87890625, - 609.5286041189956, - 586.544622425632, - 835.2494279176244, - 360.0000000000018, - 543.6247139588122, - 175.4691075514893, - 326.9656750572103, - 192.76887871853796, - 244.58581235698148, - 319.63386727689067 + 29.29325796839885, + 17.76290795533808, + 42.188980213015164, + 19.15690194174448 ], "rotation": 0.0, "source": "manual", - "type": "polygon", + "type": "rectangle", "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "6": { - "shapes": [], - "tags": [], - "tracks": [], - "version": 0 - }, - "7": { - "shapes": [ + }, { "attributes": [], "elements": [], - "frame": 0, + "frame": 2, "group": 0, - "id": 27, - "label_id": 11, + "id": 506, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 448.3779296875, - 356.4892578125, - 438.2558352402775, - 761.3861556064112, - 744.1780320366161, - 319.37356979405195, - 446.1288329519466, - 163.03832951945333 + 535.3916015625, + 94.59912109375, + 570.72265625, + 66.46484375 ], "rotation": 0.0, "source": "manual", - "type": "polygon", + "type": "ellipse", "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "8": { - "shapes": [ + }, { "attributes": [], "elements": [], - "frame": 0, - "group": 0, - "id": 30, - "label_id": 13, + "frame": 2, + "group": null, + "id": 496, + "label_id": 64, "occluded": false, "outside": false, "points": [ - 440.0439453125, - 84.0791015625, - 71.83311938382576, - 249.81514762516053, - 380.4441591784325, - 526.585365853658, - 677.6251604621302, - 260.42875481386363, - 629.4557124518615, - 127.35044929396645 + 9.23320240197188, + 14.307138152377041, + 25.845440820735742, + 44.032847830632605 ], "rotation": 0.0, "source": "manual", - "type": "polygon", + "type": "rectangle", "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "9": { - "shapes": [ + }, { "attributes": [], "elements": [], - "frame": 0, + "frame": 2, "group": 0, - "id": 31, - "label_id": 6, + "id": 508, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 65.6189987163034, - 100.96585365853753, - 142.12734274711147, - 362.6243902439037 + 22.0, + 5.0, + 143.0, + 8.0, + 140.0, + 10.0, + 138.0, + 12.0, + 137.0, + 13.0, + 30.0, + 5.0, + 101.0, + 13.0, + 29.0, + 7.0, + 100.0, + 14.0, + 27.0, + 9.0, + 99.0, + 15.0, + 25.0, + 11.0, + 99.0, + 14.0, + 25.0, + 11.0, + 100.0, + 14.0, + 24.0, + 12.0, + 99.0, + 15.0, + 23.0, + 12.0, + 100.0, + 15.0, + 22.0, + 13.0, + 99.0, + 16.0, + 22.0, + 12.0, + 100.0, + 16.0, + 21.0, + 13.0, + 100.0, + 15.0, + 22.0, + 12.0, + 101.0, + 15.0, + 21.0, + 13.0, + 100.0, + 16.0, + 21.0, + 13.0, + 100.0, + 16.0, + 20.0, + 13.0, + 101.0, + 15.0, + 21.0, + 12.0, + 102.0, + 15.0, + 20.0, + 13.0, + 102.0, + 15.0, + 20.0, + 12.0, + 103.0, + 14.0, + 21.0, + 11.0, + 103.0, + 15.0, + 20.0, + 11.0, + 104.0, + 15.0, + 19.0, + 12.0, + 103.0, + 16.0, + 18.0, + 12.0, + 104.0, + 16.0, + 18.0, + 12.0, + 104.0, + 16.0, + 17.0, + 13.0, + 103.0, + 16.0, + 17.0, + 13.0, + 104.0, + 16.0, + 17.0, + 12.0, + 105.0, + 16.0, + 16.0, + 13.0, + 78.0, + 9.0, + 17.0, + 17.0, + 15.0, + 14.0, + 75.0, + 15.0, + 14.0, + 17.0, + 15.0, + 13.0, + 74.0, + 18.0, + 13.0, + 16.0, + 15.0, + 13.0, + 73.0, + 23.0, + 9.0, + 17.0, + 16.0, + 11.0, + 72.0, + 26.0, + 8.0, + 17.0, + 15.0, + 11.0, + 70.0, + 29.0, + 8.0, + 17.0, + 14.0, + 12.0, + 68.0, + 32.0, + 6.0, + 18.0, + 14.0, + 11.0, + 67.0, + 35.0, + 5.0, + 18.0, + 13.0, + 11.0, + 67.0, + 36.0, + 5.0, + 18.0, + 12.0, + 12.0, + 66.0, + 38.0, + 3.0, + 19.0, + 12.0, + 11.0, + 66.0, + 39.0, + 3.0, + 19.0, + 11.0, + 11.0, + 66.0, + 12.0, + 4.0, + 25.0, + 1.0, + 20.0, + 10.0, + 11.0, + 66.0, + 11.0, + 9.0, + 22.0, + 1.0, + 19.0, + 10.0, + 12.0, + 65.0, + 12.0, + 11.0, + 41.0, + 8.0, + 12.0, + 65.0, + 12.0, + 13.0, + 40.0, + 8.0, + 11.0, + 65.0, + 12.0, + 15.0, + 39.0, + 7.0, + 11.0, + 65.0, + 12.0, + 16.0, + 39.0, + 6.0, + 11.0, + 66.0, + 12.0, + 17.0, + 38.0, + 5.0, + 12.0, + 65.0, + 12.0, + 18.0, + 54.0, + 66.0, + 11.0, + 20.0, + 52.0, + 66.0, + 12.0, + 20.0, + 51.0, + 66.0, + 13.0, + 20.0, + 50.0, + 67.0, + 12.0, + 21.0, + 48.0, + 69.0, + 12.0, + 22.0, + 46.0, + 69.0, + 13.0, + 22.0, + 44.0, + 70.0, + 13.0, + 24.0, + 42.0, + 71.0, + 13.0, + 25.0, + 39.0, + 72.0, + 14.0, + 25.0, + 37.0, + 36.0, + 6.0, + 32.0, + 13.0, + 26.0, + 20.0, + 1.0, + 14.0, + 36.0, + 10.0, + 30.0, + 13.0, + 26.0, + 20.0, + 4.0, + 9.0, + 36.0, + 13.0, + 28.0, + 14.0, + 27.0, + 18.0, + 5.0, + 7.0, + 36.0, + 15.0, + 28.0, + 14.0, + 27.0, + 17.0, + 48.0, + 20.0, + 24.0, + 15.0, + 26.0, + 16.0, + 48.0, + 22.0, + 22.0, + 16.0, + 27.0, + 14.0, + 48.0, + 25.0, + 20.0, + 16.0, + 27.0, + 13.0, + 48.0, + 26.0, + 20.0, + 16.0, + 28.0, + 10.0, + 50.0, + 27.0, + 19.0, + 16.0, + 28.0, + 8.0, + 52.0, + 27.0, + 19.0, + 24.0, + 21.0, + 5.0, + 54.0, + 27.0, + 19.0, + 25.0, + 82.0, + 24.0, + 19.0, + 25.0, + 83.0, + 23.0, + 19.0, + 25.0, + 83.0, + 23.0, + 19.0, + 25.0, + 86.0, + 19.0, + 20.0, + 24.0, + 89.0, + 17.0, + 20.0, + 24.0, + 90.0, + 16.0, + 20.0, + 23.0, + 91.0, + 15.0, + 20.0, + 23.0, + 94.0, + 12.0, + 20.0, + 23.0, + 94.0, + 12.0, + 20.0, + 23.0, + 94.0, + 12.0, + 20.0, + 23.0, + 93.0, + 13.0, + 21.0, + 22.0, + 92.0, + 13.0, + 22.0, + 21.0, + 92.0, + 14.0, + 23.0, + 19.0, + 93.0, + 13.0, + 25.0, + 19.0, + 91.0, + 14.0, + 25.0, + 21.0, + 88.0, + 15.0, + 26.0, + 23.0, + 83.0, + 16.0, + 28.0, + 24.0, + 80.0, + 16.0, + 30.0, + 26.0, + 75.0, + 17.0, + 33.0, + 26.0, + 72.0, + 17.0, + 36.0, + 27.0, + 68.0, + 18.0, + 37.0, + 28.0, + 64.0, + 19.0, + 41.0, + 28.0, + 59.0, + 20.0, + 44.0, + 29.0, + 54.0, + 21.0, + 47.0, + 30.0, + 47.0, + 24.0, + 50.0, + 31.0, + 40.0, + 27.0, + 52.0, + 34.0, + 32.0, + 30.0, + 56.0, + 39.0, + 19.0, + 32.0, + 62.0, + 45.0, + 5.0, + 35.0, + 65.0, + 83.0, + 70.0, + 78.0, + 74.0, + 74.0, + 77.0, + 71.0, + 81.0, + 64.0, + 88.0, + 59.0, + 91.0, + 52.0, + 103.0, + 42.0, + 110.0, + 37.0, + 123.0, + 20.0, + 135.0, + 5.0, + 3.0, + 5.0, + 46.0, + 634.0, + 38.0, + 782.0, + 145.0 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", + "type": "mask", "z_order": 0 }, { "attributes": [], "elements": [], - "frame": 15, + "frame": 2, "group": 0, - "id": 41, - "label_id": 6, + "id": 505, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 53.062929061787145, - 301.6390160183091, - 197.94851258581548, - 763.3266590389048 + 191.880859375, + 54.677734375, + 244.87726265758647, + 74.96046080888482, + 318.8110270353427, + 38.32071917035137, + 374.4249205938322, + 107.67451584329137 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", + "type": "polyline", "z_order": 0 }, { - "attributes": [ - { - "spec_id": 1, - "value": "mazda" - } - ], + "attributes": [], "elements": [], - "frame": 16, - "group": 0, - "id": 42, - "label_id": 5, + "frame": 3, + "group": null, + "id": 486, + "label_id": 64, "occluded": false, "outside": false, "points": [ - 172.0810546875, - 105.990234375, - 285.97262095255974, - 138.40000000000146 + 12.900324218921977, + 31.61197536878121, + 14.59391078431892, + 36.29094511026649 ], "rotation": 0.0, "source": "manual", "type": "rectangle", "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "11": { - "shapes": [ + }, { "attributes": [], "elements": [], - "frame": 0, - "group": 0, - "id": 33, - "label_id": 7, + "frame": 3, + "group": null, + "id": 497, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 100.14453125, - 246.03515625, - 408.8692551505537, - 327.5483359746413, - 588.5839936608554, - 289.0380348652925, - 623.8851030110927, - 183.77654516640177, - 329.2812995245622, - 71.45483359746322 + 24.730337557305866, + 29.62228497877787, + 29.24857191530591, + 70.68451297781645 ], "rotation": 0.0, "source": "manual", - "type": "polyline", + "type": "rectangle", "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "13": { - "shapes": [ + }, { "attributes": [], "elements": [], - "frame": 0, - "group": 0, - "id": 34, - "label_id": 16, + "frame": 4, + "group": null, + "id": 487, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 106.361328125, - 85.150390625, - 240.083984375, - 241.263671875 + 2.813694128785693, + 30.20761291442227, + 18.7208158667625, + 36.10507213674266 ], - "rotation": 45.9, + "rotation": 0.0, "source": "manual", "type": "rectangle", "z_order": 0 @@ -1774,17 +2156,257 @@ { "attributes": [], "elements": [], - "frame": 1, - "group": 0, - "id": 35, - "label_id": 16, + "frame": 4, + "group": null, + "id": 498, + "label_id": 64, "occluded": false, "outside": false, "points": [ - 414.29522752496996, - 124.8035516093205, - 522.2641509433943, - 286.75693673695605 + 2.1121019722181886, + 13.869054700136441, + 11.324617420574125, + 19.972173011282173 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 5, + "group": null, + "id": 488, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 3.508318958955836, + 27.7047096625407, + 26.54219559642832, + 45.905198894448475 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 5, + "group": null, + "id": 499, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 40.030467384964794, + 14.766168952345382, + 56.1585086234919, + 33.38318513200221 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 6, + "group": null, + "id": 489, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 25.14030189623754, + 5.6733962996246055, + 38.20236513837561, + 50.107446648679 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 6, + "group": null, + "id": 500, + "label_id": 66, + "occluded": false, + "outside": false, + "points": [ + 22.669744730593095, + 49.829940784412905, + 49.045918115614874, + 92.87818219175908 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 7, + "group": null, + "id": 490, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 31.485093194422202, + 6.652309747763773, + 78.90159992771716, + 50.14729730944946 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 7, + "group": null, + "id": 501, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 35.06714303007967, + 34.81749603873695, + 72.81534706452, + 60.62236529733499 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 8, + "group": null, + "id": 491, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 30.907609343908867, + 26.920657464053736, + 61.021803468648315, + 34.33466966738635 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 8, + "group": null, + "id": 502, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 33.949231044002076, + 43.79253250986025, + 54.84733296216899, + 62.44618575550419 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 9, + "group": null, + "id": 492, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 40.67588165005975, + 44.16433216489991, + 72.56184147619327, + 85.5429197134128 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 9, + "group": null, + "id": 503, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 15.01664682667706, + 24.951413716977832, + 34.52619994974882, + 60.389045841248674 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 10, + "group": null, + "id": 504, + "label_id": 66, + "occluded": false, + "outside": false, + "points": [ + 19.74201544469132, + 30.437730521261773, + 43.478177450860585, + 38.85138665770247 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 10, + "group": null, + "id": 493, + "label_id": 66, + "occluded": false, + "outside": false, + "points": [ + 16.097754035046485, + 4.573647979622352, + 58.8933879574248, + 31.93095871390559 ], "rotation": 0.0, "source": "manual", @@ -1793,149 +2415,387 @@ } ], "tags": [ + { + "attributes": [], + "frame": 0, + "group": null, + "id": 217, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 1, + "group": null, + "id": 218, + "label_id": 63, + "source": "manual" + }, { "attributes": [], "frame": 2, - "group": 0, - "id": 1, - "label_id": 17, + "group": null, + "id": 219, + "label_id": 64, "source": "manual" }, { "attributes": [], "frame": 3, - "group": 0, - "id": 2, - "label_id": 16, + "group": null, + "id": 220, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 4, + "group": null, + "id": 221, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 5, + "group": null, + "id": 222, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 6, + "group": null, + "id": 223, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 7, + "group": null, + "id": 224, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 8, + "group": null, + "id": 225, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 9, + "group": null, + "id": 226, + "label_id": 64, + "source": "manual" + }, + { + "attributes": [], + "frame": 10, + "group": null, + "id": 227, + "label_id": 66, "source": "manual" } ], - "tracks": [], - "version": 0 - }, - "14": { - "shapes": [ + "tracks": [ { - "attributes": [ - { - "spec_id": 2, - "value": "white" - } - ], - "elements": [ + "attributes": [], + "frame": 4, + "group": null, + "id": 117, + "label_id": 64, + "shapes": [ { - "attributes": [ - { - "spec_id": 3, - "value": "val1" - } - ], - "frame": 0, - "group": 0, - "id": 39, - "label_id": 25, + "attributes": [], + "frame": 4, + "id": 479, "occluded": false, "outside": false, "points": [ - 259.91862203681984, - 67.8260869565238 + 33.598779899537504, + 47.72613723612956, + 72.98403755948176, + 46.37989500312985, + 30.124643891237035, + 37.121847333246016 ], "rotation": 0.0, - "source": "manual", - "type": "points", + "type": "polygon", "z_order": 0 }, { "attributes": [], - "frame": 0, - "group": 0, - "id": 40, - "label_id": 26, + "frame": 5, + "id": 480, "occluded": false, "outside": false, "points": [ - 283.65217391304554, - 276.52173913043686 + 46.51991234215712, + 46.432609873899786, + 45.655675472283754, + 16.25754165859492, + 43.56714102707272, + 49.98897944826618, + 5.709001866044616, + 94.02221983606873, + 50.4674845929161, + 3.8063308724888167 ], "rotation": 0.0, - "source": "manual", - "type": "points", + "type": "polygon", "z_order": 0 }, { "attributes": [], - "frame": 0, - "group": 0, - "id": 37, - "label_id": 23, + "frame": 7, + "id": 482, "occluded": false, + "outside": true, + "points": [ + 93.4636235933026, + 75.92351333549601, + 41.2227627513351, + 34.350331204602604, + 66.3432816308487, + 54.056702329000764 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 8, + "id": 483, + "occluded": true, "outside": false, "points": [ - 135.8260869565238, - 118.10276296228554 + 5.0376184452136314, + 30.9548987882599, + 43.94144681021965, + 21.128727976625083, + 48.469900205179414, + 40.057149554521985 ], "rotation": 0.0, - "source": "manual", - "type": "points", + "type": "polygon", "z_order": 0 }, { "attributes": [], - "frame": 0, - "group": 0, - "id": 38, - "label_id": 24, + "frame": 9, + "id": 484, "occluded": false, "outside": false, "points": [ - 172.10450871201368, - 274.6245183225243 + 20.627812291540625, + 77.71815966193307, + 21.07255019421953, + 54.89527252097782, + 44.701168842121064, + 35.54993705233812, + 21.962376189353606, + 41.33264342135886 ], "rotation": 0.0, - "source": "manual", - "type": "points", + "type": "polygon", "z_order": 0 } ], - "frame": 0, - "group": 0, - "id": 36, - "label_id": 22, - "occluded": false, - "outside": false, - "points": [], - "rotation": 0.0, - "source": "manual", - "type": "skeleton", - "z_order": 0 - } - ], - "tags": [], - "tracks": [ + "source": "manual" + }, { - "attributes": [ + "attributes": [], + "frame": 1, + "group": null, + "id": 118, + "label_id": 64, + "shapes": [ { - "spec_id": 2, - "value": "white" + "attributes": [], + "frame": 1, + "id": 485, + "occluded": false, + "outside": false, + "points": [ + 14.249043106539217, + 92.98784111986599, + 75.59995790885854, + 9.882230433856531, + 74.64478290627322, + 24.288343372649436 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 2, + "id": 486, + "occluded": false, + "outside": false, + "points": [ + 20.40678024726209, + 91.07758232974479, + 91.93855431428733, + 55.64212246699361, + 98.18754824554128, + 2.366735096391437 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 3, + "id": 487, + "occluded": false, + "outside": false, + "points": [ + 64.07371618788767, + 51.165624193155125, + 16.507577217122392, + 35.26978776115228, + 3.3675085977394215, + 35.92980168264138, + 48.890071365309076, + 42.285059057475024 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 4, + "id": 488, + "occluded": false, + "outside": false, + "points": [ + 22.622019526627223, + 62.31679157489255, + 7.435732676703511, + 0.9774883731428763, + 33.48515389987684, + 67.80446095923271, + 29.811309771691985, + 27.34743520630969, + 94.97786135262317, + 92.53355214231964 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 6, + "id": 490, + "occluded": true, + "outside": false, + "points": [ + 0.8530259402693807, + 44.13296596268512, + 92.264556499544, + 81.80448766928922, + 31.08882580838178, + 20.301451961901908, + 31.47038000360235, + 96.67947680961973 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 7, + "id": 491, + "occluded": false, + "outside": false, + "points": [ + 5.076584858511457, + 53.839003005451126, + 79.49480345687792, + 80.4262644422021, + 97.57877446416717, + 73.8591873826985 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 8, + "id": 492, + "occluded": true, + "outside": false, + "points": [ + 46.487048928881734, + 74.79726052811286, + 58.89940649861379, + 63.46132083800071, + 79.97978567976963, + 37.370343440303344, + 0.9690229199726064, + 94.25236542125029 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 9, + "id": 513, + "occluded": true, + "outside": true, + "points": [ + 46.487048928881734, + 74.79726052811286, + 58.89940649861379, + 63.46132083800071, + 79.97978567976963, + 37.370343440303344, + 0.9690229199726064, + 94.25236542125029 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 } ], + "source": "manual" + }, + { + "attributes": [], "elements": [ { "attributes": [], - "frame": 0, + "frame": 2, "group": 0, - "id": 2, - "label_id": 23, + "id": 122, + "label_id": 67, "shapes": [ { "attributes": [], - "frame": 0, - "id": 2, + "frame": 2, + "id": 498, "occluded": false, "outside": false, "points": [ - 381.9130434782637, - 355.0592829431864 + 153.27734375, + 110.2919921875 ], "rotation": 0.0, "type": "points", @@ -1943,13 +2803,27 @@ }, { "attributes": [], - "frame": 3, - "id": 6, + "frame": 4, + "id": 499, "occluded": false, "outside": false, "points": [ - 137.0966796875, - 156.11214469590232 + 112.478515625, + 36.544921875 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 5, + "id": 500, + "occluded": false, + "outside": true, + "points": [ + 112.478515625, + 36.544921875 ], "rotation": 0.0, "type": "points", @@ -1960,20 +2834,20 @@ }, { "attributes": [], - "frame": 0, + "frame": 2, "group": 0, - "id": 3, - "label_id": 24, + "id": 123, + "label_id": 68, "shapes": [ { "attributes": [], - "frame": 0, - "id": 3, - "occluded": false, + "frame": 2, + "id": 501, + "occluded": true, "outside": false, "points": [ - 461.9389738212561, - 583.320176176868 + 229.1739514298206, + 141.25929642527626 ], "rotation": 0.0, "type": "points", @@ -1981,42 +2855,13 @@ }, { "attributes": [], - "frame": 3, - "id": 7, - "occluded": false, - "outside": false, - "points": [ - 217.12261003049207, - 384.3730379295848 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [ - { - "spec_id": 3, - "value": "val1" - } - ], - "frame": 0, - "group": 0, - "id": 4, - "label_id": 25, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 4, + "frame": 4, + "id": 502, "occluded": false, "outside": false, "points": [ - 655.6465767436227, - 281.7391304347839 + 147.65302061127113, + 49.58072867662486 ], "rotation": 0.0, "type": "points", @@ -2024,13 +2869,13 @@ }, { "attributes": [], - "frame": 3, - "id": 8, + "frame": 5, + "id": 503, "occluded": false, - "outside": false, + "outside": true, "points": [ - 410.83021295285835, - 82.7919921875 + 147.65302061127113, + 49.58072867662486 ], "rotation": 0.0, "type": "points", @@ -2041,20 +2886,20 @@ }, { "attributes": [], - "frame": 0, + "frame": 2, "group": 0, - "id": 5, - "label_id": 26, + "id": 124, + "label_id": 69, "shapes": [ { "attributes": [], - "frame": 0, - "id": 5, + "frame": 2, + "id": 504, "occluded": false, - "outside": false, + "outside": true, "points": [ - 708.000000000003, - 586.0869565217404 + 162.24694184787768, + 160.67163694048395 ], "rotation": 0.0, "type": "points", @@ -2062,13 +2907,27 @@ }, { "attributes": [], - "frame": 3, - "id": 9, + "frame": 4, + "id": 505, "occluded": false, "outside": false, "points": [ - 463.1836362092399, - 387.13981827445605 + 116.63550211839356, + 57.75242869223621 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 5, + "id": 506, + "occluded": false, + "outside": true, + "points": [ + 116.63550211839356, + 57.75242869223621 ], "rotation": 0.0, "type": "points", @@ -2078,15 +2937,15 @@ "source": "manual" } ], - "frame": 0, + "frame": 2, "group": 0, - "id": 1, - "label_id": 22, + "id": 119, + "label_id": 66, "shapes": [ { "attributes": [], - "frame": 0, - "id": 1, + "frame": 2, + "id": 494, "occluded": false, "outside": false, "points": [], @@ -2096,75 +2955,234 @@ } ], "source": "manual" - } - ], - "version": 0 - }, - "15": { - "shapes": [ + }, { "attributes": [], - "elements": [], - "frame": 0, + "frame": 2, "group": 0, - "id": 44, - "label_id": 29, - "occluded": false, - "outside": false, - "points": [ - 479.97322623828586, - 408.0053547523421, - 942.6238286479238, - 513.3868808567604 + "id": 120, + "label_id": 63, + "shapes": [ + { + "attributes": [], + "frame": 2, + "id": 495, + "occluded": false, + "outside": false, + "points": [ + 394.7080078125, + 132.537109375, + 423.4960031454393, + 133.1914787701262, + 458.82718258259774, + 118.79729455498818, + 458.17290148191023, + 152.81991179076977 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 4, + "id": 496, + "occluded": false, + "outside": true, + "points": [ + 394.7080078125, + 132.537109375, + 423.4960031454393, + 133.1914787701262, + 458.82718258259774, + 118.79729455498818, + 458.17290148191023, + 152.81991179076977 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 + "source": "manual" }, { "attributes": [], - "elements": [], "frame": 0, "group": 0, - "id": 43, - "label_id": 30, - "occluded": false, - "outside": false, - "points": [ - 120.81927710843593, - 213.52074966532928, - 258.7576974564945, - 643.614457831327 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - } - ], - "tags": [], - "tracks": [], + "id": 121, + "label_id": 63, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 497, + "occluded": false, + "outside": false, + "points": [ + 266.92653575077566, + 24.86851007975565, + 266.92653575077566, + 117.68501668390672, + 300.94915298655724, + 24.760093290749865, + 300.94915298655724, + 117.68501668383215, + 304.35141471013594, + 16.30584444966371, + 304.35141471013594, + 109.01393426480536, + 270.40413416463343, + 16.423849249653358, + 270.40413416463343, + 109.02402735721262 + ], + "rotation": 0.0, + "type": "cuboid", + "z_order": 0 + }, + { + "attributes": [], + "frame": 4, + "id": 514, + "occluded": false, + "outside": true, + "points": [ + 266.92653575077566, + 24.86851007975565, + 266.92653575077566, + 117.68501668390672, + 300.94915298655724, + 24.760093290749865, + 300.94915298655724, + 117.68501668383215, + 304.35141471013594, + 16.30584444966371, + 304.35141471013594, + 109.01393426480536, + 270.40413416463343, + 16.423849249653358, + 270.40413416463343, + 109.02402735721262 + ], + "rotation": 0.0, + "type": "cuboid", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 125, + "label_id": 63, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 508, + "occluded": false, + "outside": false, + "points": [ + 457.9970703125, + 146.17578125, + 492.673828125, + 99.39453125 + ], + "rotation": 0.0, + "type": "ellipse", + "z_order": 0 + }, + { + "attributes": [], + "frame": 1, + "id": 509, + "occluded": false, + "outside": false, + "points": [ + 628.1103515625, + 72.896484375, + 662.787109375, + 26.115234375 + ], + "rotation": 0.0, + "type": "ellipse", + "z_order": 0 + }, + { + "attributes": [], + "frame": 2, + "id": 510, + "occluded": false, + "outside": false, + "points": [ + 101.4140625, + 125.2392578125, + 136.0908203125, + 78.4580078125 + ], + "rotation": 0.0, + "type": "ellipse", + "z_order": 0 + }, + { + "attributes": [], + "frame": 3, + "id": 511, + "occluded": false, + "outside": false, + "points": [ + 142.6337890625, + 241.046875, + 177.310546875, + 194.265625 + ], + "rotation": 0.0, + "type": "ellipse", + "z_order": 0 + }, + { + "attributes": [], + "frame": 4, + "id": 512, + "occluded": false, + "outside": true, + "points": [ + 142.6337890625, + 241.046875, + 177.310546875, + 194.265625 + ], + "rotation": 0.0, + "type": "ellipse", + "z_order": 0 + } + ], + "source": "manual" + } + ], "version": 0 }, - "17": { + "32": { "shapes": [ { "attributes": [], "elements": [], "frame": 0, - "group": 0, - "id": 47, - "label_id": 38, + "group": null, + "id": 384, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 106.361328125, - 85.150390625, - 240.083984375, - 241.263671875 + 21.771535357816685, + 38.10394839707063, + 46.66121542795621, + 61.395778976883435 ], - "rotation": 45.9, + "rotation": 0.0, "source": "manual", "type": "rectangle", "z_order": 0 @@ -2172,47 +3190,23 @@ { "attributes": [], "elements": [], - "frame": 1, - "group": 0, - "id": 48, - "label_id": 38, + "frame": 0, + "group": null, + "id": 373, + "label_id": 64, "occluded": false, "outside": false, "points": [ - 414.29522752496996, - 124.8035516093205, - 522.2641509433943, - 286.75693673695605 + 128.70000000000073, + 202.8154296875, + 174.84953117370605, + 252.62294394632772 ], "rotation": 0.0, "source": "manual", "type": "rectangle", "z_order": 0 - } - ], - "tags": [ - { - "attributes": [], - "frame": 2, - "group": 0, - "id": 5, - "label_id": 39, - "source": "manual" }, - { - "attributes": [], - "frame": 3, - "group": 0, - "id": 6, - "label_id": 38, - "source": "manual" - } - ], - "tracks": [], - "version": 0 - }, - "18": { - "shapes": [ { "attributes": [], "elements": [ @@ -2220,30 +3214,13 @@ "attributes": [], "frame": 0, "group": 0, - "id": 52, - "label_id": 49, - "occluded": false, - "outside": false, - "points": [ - 326.2062528608664, - 107.42983682983868 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 50, - "label_id": 47, + "id": 510, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 136.46993006993034, - 138.72697241590762 + 325.81183481270637, + 169.3732236381784 ], "rotation": 0.0, "source": "manual", @@ -2254,13 +3231,13 @@ "attributes": [], "frame": 0, "group": 0, - "id": 51, - "label_id": 48, + "id": 512, + "label_id": 69, "occluded": false, "outside": false, "points": [ - 192.9001336620433, - 421.9659673659692 + 335.2453776397853, + 246.57839351937508 ], "rotation": 0.0, "source": "manual", @@ -2271,13 +3248,13 @@ "attributes": [], "frame": 0, "group": 0, - "id": 53, - "label_id": 50, + "id": 511, + "label_id": 68, "occluded": false, "outside": false, "points": [ - 412.07832167832197, - 337.46374412038085 + 405.6341290966555, + 216.82961195061355 ], "rotation": 0.0, "source": "manual", @@ -2287,8 +3264,8 @@ ], "frame": 0, "group": 0, - "id": 49, - "label_id": 46, + "id": 509, + "label_id": 66, "occluded": false, "outside": false, "points": [], @@ -2296,33 +3273,21 @@ "source": "manual", "type": "skeleton", "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "19": { - "shapes": [ + }, { - "attributes": [ - { - "spec_id": 7, - "value": "non-default" - } - ], + "attributes": [], "elements": [], - "frame": 0, - "group": 0, - "id": 54, - "label_id": 51, + "frame": 1, + "group": null, + "id": 374, + "label_id": 66, "occluded": false, "outside": false, "points": [ - 244.32906271072352, - 57.53054619015711, - 340.34389750505943, - 191.28914362778414 + 48.12463059940514, + 49.56415639855863, + 86.72866669447971, + 79.88534367799434 ], "rotation": 0.0, "source": "manual", @@ -2330,56 +3295,39 @@ "z_order": 0 }, { - "attributes": [ - { - "spec_id": 8, - "value": "black" - } - ], + "attributes": [], "elements": [], - "frame": 0, - "group": 0, - "id": 55, - "label_id": 52, + "frame": 1, + "group": null, + "id": 385, + "label_id": 64, "occluded": false, "outside": false, "points": [ - 424.4396493594086, - 86.6660822656795, - 664.8078219824692, - 251.54672960215976 + 47.74069002745097, + 8.979945307737525, + 75.09009579972003, + 49.944377666156775 ], "rotation": 0.0, "source": "manual", "type": "rectangle", "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "20": { - "shapes": [ + }, { - "attributes": [ - { - "spec_id": 9, - "value": "non-default" - } - ], + "attributes": [], "elements": [], - "frame": 0, - "group": 0, - "id": 56, - "label_id": 53, + "frame": 2, + "group": null, + "id": 386, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 35.913636363637124, - 80.58636363636288, - 94.8227272727272, - 170.58636363636288 + 31.519108441498556, + 11.487384732875865, + 33.9677855625604, + 11.741460365690042 ], "rotation": 0.0, "source": "manual", @@ -2387,163 +3335,4202 @@ "z_order": 0 }, { - "attributes": [ - { - "spec_id": 10, - "value": "black" - } + "attributes": [], + "elements": [], + "frame": 2, + "group": null, + "id": 375, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 1.973846331831547, + 45.77202532553066, + 19.359541493051733, + 49.59142754572273 ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], "elements": [], - "frame": 0, - "group": 0, - "id": 57, - "label_id": 54, + "frame": 3, + "group": null, + "id": 387, + "label_id": 66, "occluded": false, "outside": false, "points": [ - 190.95909090909117, - 100.22272727272684, - 297.7318181818191, - 209.8590909090908 + 47.626061974587216, + 4.742902857127573, + 73.6431946747958, + 21.98893892047218 ], "rotation": 0.0, "source": "manual", "type": "rectangle", "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "21": { - "shapes": [ + }, { "attributes": [], - "elements": [ - { + "elements": [], + "frame": 3, + "group": null, + "id": 376, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 28.151068739966007, + 25.472817252545543, + 69.01675105692789, + 39.17582104149861 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 4, + "group": null, + "id": 388, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 39.9552116305673, + 7.099389830892683, + 81.50568347911505, + 22.91276365749088 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 4, + "group": null, + "id": 377, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 20.82859485196533, + 20.20284211999498, + 65.06449540153316, + 36.586720678222335 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 5, + "group": null, + "id": 378, + "label_id": 66, + "occluded": false, + "outside": false, + "points": [ + 33.79061149513946, + 8.697799034160319, + 66.8603743960803, + 56.40259427136259 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 5, + "group": null, + "id": 389, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 8.490724513815634, + 4.967537330256527, + 33.879170648858064, + 41.48246323545371 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 6, + "group": null, + "id": 390, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 8.238478163045936, + 30.506885409533453, + 24.199550828477328, + 52.470067436160306 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 6, + "group": null, + "id": 379, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 36.59042217067678, + 11.640939649375332, + 56.356138094129285, + 23.152580340218726 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 7, + "group": null, + "id": 391, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 48.699397805843304, + 25.414220926373016, + 98.21088655300638, + 74.12108955171448 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 7, + "group": null, + "id": 380, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 40.84676019536735, + 49.73369769438821, + 86.55210348083034, + 92.67464655715418 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 8, + "group": null, + "id": 392, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 23.44786013239356, + 46.61655359142538, + 38.03525661308419, + 63.989553927693194 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 8, + "group": null, + "id": 381, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 6.6512404187989596, + 48.608637853937424, + 38.47957672845558, + 63.01814316203485 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 9, + "group": null, + "id": 382, + "label_id": 66, + "occluded": false, + "outside": false, + "points": [ + 34.8591781560674, + 46.909805505807725, + 62.76884975235831, + 71.15370887744085 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 9, + "group": null, + "id": 393, + "label_id": 66, + "occluded": false, + "outside": false, + "points": [ + 8.39848796382615, + 21.848706178190497, + 34.06199388884364, + 58.755093781932075 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 10, + "group": null, + "id": 394, + "label_id": 66, + "occluded": false, + "outside": false, + "points": [ + 49.33379108044891, + 45.87438661706784, + 97.62187411104203, + 94.75916402425524 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 10, + "group": null, + "id": 383, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 40.01964032220059, + 28.210223404990387, + 63.80243197711431, + 77.26899546998015 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + } + ], + "tags": [ + { + "attributes": [], + "frame": 0, + "group": null, + "id": 162, + "label_id": 63, + "source": "manual" + }, + { + "attributes": [], + "frame": 1, + "group": null, + "id": 163, + "label_id": 64, + "source": "manual" + }, + { + "attributes": [], + "frame": 2, + "group": null, + "id": 164, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 3, + "group": null, + "id": 165, + "label_id": 63, + "source": "manual" + }, + { + "attributes": [], + "frame": 4, + "group": null, + "id": 166, + "label_id": 64, + "source": "manual" + }, + { + "attributes": [], + "frame": 5, + "group": null, + "id": 167, + "label_id": 63, + "source": "manual" + }, + { + "attributes": [], + "frame": 6, + "group": null, + "id": 168, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 7, + "group": null, + "id": 169, + "label_id": 64, + "source": "manual" + }, + { + "attributes": [], + "frame": 8, + "group": null, + "id": 170, + "label_id": 63, + "source": "manual" + }, + { + "attributes": [], + "frame": 9, + "group": null, + "id": 171, + "label_id": 64, + "source": "manual" + }, + { + "attributes": [], + "frame": 10, + "group": null, + "id": 172, + "label_id": 64, + "source": "manual" + } + ], + "tracks": [ + { + "attributes": [], + "frame": 1, + "group": null, + "id": 107, + "label_id": 64, + "shapes": [ + { + "attributes": [], + "frame": 1, + "id": 428, + "occluded": false, + "outside": false, + "points": [ + 89.16625482373604, + 10.760448971018688, + 21.130943971024195, + 33.264143636745125, + 82.08266620234568, + 57.27050026015028, + 31.61462894960768, + 91.61837979864868, + 61.318808891867995, + 5.2591005982589145 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 2, + "id": 429, + "occluded": false, + "outside": false, + "points": [ + 86.12227563556914, + 54.78519030863848, + 5.965437872325186, + 44.415919636543535, + 21.508219614650393, + 77.71533185704882, + 56.56030517796948, + 80.49138661336151, + 92.11320758706701, + 36.23616592947234 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 3, + "id": 430, + "occluded": false, + "outside": false, + "points": [ + 43.844133439202515, + 52.766337685192056, + 36.06107102732473, + 41.86726929430576, + 10.476592440122644, + 76.08071328170251, + 12.350073636556836, + 42.14361527808913, + 20.030324015224398, + 97.33574207745058 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 4, + "id": 431, + "occluded": false, + "outside": false, + "points": [ + 46.32363927321131, + 89.27799405888287, + 11.543344424530844, + 28.859146282381133, + 39.954518702075006, + 7.7721058829602345, + 89.55146184028104, + 41.32407558272474, + 65.71210278333133, + 4.723941407484478 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 5, + "id": 432, + "occluded": false, + "outside": false, + "points": [ + 63.75444524182796, + 83.38994368964245, + 89.86483302169569, + 76.72264053847121, + 65.79043486042822, + 23.786207640718814, + 77.73570584702074, + 67.1092531599958 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 6, + "id": 433, + "occluded": false, + "outside": false, + "points": [ + 42.08516199103318, + 29.942896326510805, + 40.39823943435537, + 49.37947128117274, + 98.88115268683107, + 79.11696631188182 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 7, + "id": 434, + "occluded": false, + "outside": false, + "points": [ + 81.78520462265138, + 70.56947279185766, + 73.77379910176585, + 76.65691380291577, + 78.13598264354707, + 51.951762879932886 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 8, + "id": 435, + "occluded": false, + "outside": false, + "points": [ + 51.12165640102631, + 99.11084197328293, + 63.84797882103561, + 45.89089381970446, + 33.434440460259694, + 19.765429813835755 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 9, + "id": 436, + "occluded": false, + "outside": false, + "points": [ + 60.89406682712508, + 49.404300661462685, + 10.175918797036033, + 22.69300466402857, + 13.636722568044934, + 24.9397151458307, + 20.52105176191774, + 40.90671260779596, + 57.81882237238361, + 93.4250359257492 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 5, + "group": null, + "id": 108, + "label_id": 66, + "shapes": [ + { + "attributes": [], + "frame": 5, + "id": 437, + "occluded": false, + "outside": false, + "points": [ + 56.70821030480572, + 38.20037623588232, + 63.18175989344238, + 41.73070749428784, + 2.4862395912330637, + 63.95431832704548 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 6, + "id": 438, + "occluded": false, + "outside": false, + "points": [ + 12.005563467361247, + 51.17651673396597, + 26.65775387838101, + 83.60637658227678, + 9.37445361764302, + 98.39883962537608, + 11.544015694368825, + 82.39090054978801, + 86.56240502418258, + 88.15659541170685 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 7, + "id": 439, + "occluded": false, + "outside": false, + "points": [ + 27.49753431280614, + 52.642159328363334, + 88.61671771042018, + 29.506649953484164, + 99.84757744084266, + 66.51086041463735, + 98.64123905514187, + 80.21191374336696, + 12.032866200086401, + 59.74691350332406 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 8, + "id": 440, + "occluded": false, + "outside": false, + "points": [ + 45.66798986781423, + 4.961587842360249, + 28.891554322880264, + 88.49284935388283, + 42.04171004313141, + 52.41974372296537, + 79.88779494689628, + 78.70227858399868, + 3.134998177462567, + 60.093270566831016 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 9, + "id": 441, + "occluded": false, + "outside": false, + "points": [ + 69.62777852757223, + 25.046431964099458, + 59.00496511489233, + 12.15728994349642, + 10.618682601907793, + 27.135941155386135, + 24.750684503833043, + 72.1563422338744 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + } + ], + "source": "manual" + } + ], + "version": 0 + } + }, + "task": { + "2": { + "shapes": [ + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 1, + "label_id": 3, + "occluded": false, + "outside": false, + "points": [ + 223.39453125, + 226.0751953125, + 513.7663269042969, + 377.9619903564453 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 1, + "group": 0, + "id": 2, + "label_id": 3, + "occluded": false, + "outside": false, + "points": [ + 63.0791015625, + 139.75390625, + 132.19337349397574, + 112.3867469879533, + 189.71144578313397, + 159.23614457831354, + 191.1030120481937, + 246.9048192771097, + 86.73554216867524, + 335.5012048192784, + 32.00060240964012, + 250.15180722891637 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 1, + "group": 0, + "id": 3, + "label_id": 4, + "occluded": false, + "outside": false, + "points": [ + 83.0244140625, + 216.75390625, + 112.24759036144678, + 162.48313253012202, + 167.44638554216908, + 183.35662650602535, + 149.35602409638705, + 252.0072289156633, + 84.41626506024113, + 292.8265060240974, + 72.81987951807241, + 258.9650602409638 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 2, + "group": 0, + "id": 4, + "label_id": 3, + "occluded": false, + "outside": false, + "points": [ + 24.443359375, + 107.2275390625, + 84.91109877913368, + 61.125083240844106, + 169.4316315205324, + 75.1561598224198, + 226.5581576026634, + 113.90865704772477, + 240.5892341842391, + 205.77880133185317, + 210.52264150943483, + 270.9230854605994 + ], + "rotation": 0.0, + "source": "manual", + "type": "polyline", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 22, + "group": 0, + "id": 5, + "label_id": 3, + "occluded": false, + "outside": false, + "points": [ + 148.94921875, + 285.6865234375, + 313.515094339622, + 400.32830188679145, + 217.36415094339463, + 585.2339622641503, + 64.81698113207494, + 499.25283018867776 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "5": { + "shapes": [ + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 29, + "label_id": 9, + "occluded": false, + "outside": false, + "points": [ + 364.0361328125, + 528.87890625, + 609.5286041189956, + 586.544622425632, + 835.2494279176244, + 360.0000000000018, + 543.6247139588122, + 175.4691075514893, + 326.9656750572103, + 192.76887871853796, + 244.58581235698148, + 319.63386727689067 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 0 + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "6": { + "shapes": [], + "tags": [], + "tracks": [], + "version": 0 + }, + "7": { + "shapes": [ + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 27, + "label_id": 11, + "occluded": false, + "outside": false, + "points": [ + 448.3779296875, + 356.4892578125, + 438.2558352402775, + 761.3861556064112, + 744.1780320366161, + 319.37356979405195, + 446.1288329519466, + 163.03832951945333 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 0 + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "8": { + "shapes": [ + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 30, + "label_id": 13, + "occluded": false, + "outside": false, + "points": [ + 440.0439453125, + 84.0791015625, + 71.83311938382576, + 249.81514762516053, + 380.4441591784325, + 526.585365853658, + 677.6251604621302, + 260.42875481386363, + 629.4557124518615, + 127.35044929396645 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 0 + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "9": { + "shapes": [ + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 31, + "label_id": 6, + "occluded": false, + "outside": false, + "points": [ + 65.6189987163034, + 100.96585365853753, + 142.12734274711147, + 362.6243902439037 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 15, + "group": 0, + "id": 41, + "label_id": 6, + "occluded": false, + "outside": false, + "points": [ + 53.062929061787145, + 301.6390160183091, + 197.94851258581548, + 763.3266590389048 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [ + { + "spec_id": 1, + "value": "mazda" + } + ], + "elements": [], + "frame": 16, + "group": 0, + "id": 42, + "label_id": 5, + "occluded": false, + "outside": false, + "points": [ + 172.0810546875, + 105.990234375, + 285.97262095255974, + 138.40000000000146 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "11": { + "shapes": [ + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 33, + "label_id": 7, + "occluded": false, + "outside": false, + "points": [ + 100.14453125, + 246.03515625, + 408.8692551505537, + 327.5483359746413, + 588.5839936608554, + 289.0380348652925, + 623.8851030110927, + 183.77654516640177, + 329.2812995245622, + 71.45483359746322 + ], + "rotation": 0.0, + "source": "manual", + "type": "polyline", + "z_order": 0 + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "13": { + "shapes": [ + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 34, + "label_id": 16, + "occluded": false, + "outside": false, + "points": [ + 106.361328125, + 85.150390625, + 240.083984375, + 241.263671875 + ], + "rotation": 45.9, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 1, + "group": 0, + "id": 35, + "label_id": 16, + "occluded": false, + "outside": false, + "points": [ + 414.29522752496996, + 124.8035516093205, + 522.2641509433943, + 286.75693673695605 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + } + ], + "tags": [ + { + "attributes": [], + "frame": 2, + "group": 0, + "id": 1, + "label_id": 17, + "source": "manual" + }, + { + "attributes": [], + "frame": 3, + "group": 0, + "id": 2, + "label_id": 16, + "source": "manual" + } + ], + "tracks": [], + "version": 0 + }, + "14": { + "shapes": [ + { + "attributes": [ + { + "spec_id": 2, + "value": "white" + } + ], + "elements": [ + { + "attributes": [ + { + "spec_id": 3, + "value": "val1" + } + ], + "frame": 0, + "group": 0, + "id": 39, + "label_id": 25, + "occluded": false, + "outside": false, + "points": [ + 259.91862203681984, + 67.8260869565238 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 40, + "label_id": 26, + "occluded": false, + "outside": false, + "points": [ + 283.65217391304554, + 276.52173913043686 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 37, + "label_id": 23, + "occluded": false, + "outside": false, + "points": [ + 135.8260869565238, + 118.10276296228554 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 38, + "label_id": 24, + "occluded": false, + "outside": false, + "points": [ + 172.10450871201368, + 274.6245183225243 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + } + ], + "frame": 0, + "group": 0, + "id": 36, + "label_id": 22, + "occluded": false, + "outside": false, + "points": [], + "rotation": 0.0, + "source": "manual", + "type": "skeleton", + "z_order": 0 + } + ], + "tags": [], + "tracks": [ + { + "attributes": [ + { + "spec_id": 2, + "value": "white" + } + ], + "elements": [ + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 2, + "label_id": 23, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 2, + "occluded": false, + "outside": false, + "points": [ + 381.9130434782637, + 355.0592829431864 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 3, + "id": 6, + "occluded": false, + "outside": false, + "points": [ + 137.0966796875, + 156.11214469590232 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 3, + "label_id": 24, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 3, + "occluded": false, + "outside": false, + "points": [ + 461.9389738212561, + 583.320176176868 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 3, + "id": 7, + "occluded": false, + "outside": false, + "points": [ + 217.12261003049207, + 384.3730379295848 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [ + { + "spec_id": 3, + "value": "val1" + } + ], + "frame": 0, + "group": 0, + "id": 4, + "label_id": 25, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 4, + "occluded": false, + "outside": false, + "points": [ + 655.6465767436227, + 281.7391304347839 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 3, + "id": 8, + "occluded": false, + "outside": false, + "points": [ + 410.83021295285835, + 82.7919921875 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 5, + "label_id": 26, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 5, + "occluded": false, + "outside": false, + "points": [ + 708.000000000003, + 586.0869565217404 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 3, + "id": 9, + "occluded": false, + "outside": false, + "points": [ + 463.1836362092399, + 387.13981827445605 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + } + ], + "frame": 0, + "group": 0, + "id": 1, + "label_id": 22, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 1, + "occluded": false, + "outside": false, + "points": [], + "rotation": 0.0, + "type": "skeleton", + "z_order": 0 + } + ], + "source": "manual" + } + ], + "version": 0 + }, + "15": { + "shapes": [ + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 44, + "label_id": 29, + "occluded": false, + "outside": false, + "points": [ + 479.97322623828586, + 408.0053547523421, + 942.6238286479238, + 513.3868808567604 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 43, + "label_id": 30, + "occluded": false, + "outside": false, + "points": [ + 120.81927710843593, + 213.52074966532928, + 258.7576974564945, + 643.614457831327 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "17": { + "shapes": [ + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 47, + "label_id": 38, + "occluded": false, + "outside": false, + "points": [ + 106.361328125, + 85.150390625, + 240.083984375, + 241.263671875 + ], + "rotation": 45.9, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 1, + "group": 0, + "id": 48, + "label_id": 38, + "occluded": false, + "outside": false, + "points": [ + 414.29522752496996, + 124.8035516093205, + 522.2641509433943, + 286.75693673695605 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + } + ], + "tags": [ + { + "attributes": [], + "frame": 2, + "group": 0, + "id": 5, + "label_id": 39, + "source": "manual" + }, + { + "attributes": [], + "frame": 3, + "group": 0, + "id": 6, + "label_id": 38, + "source": "manual" + } + ], + "tracks": [], + "version": 0 + }, + "18": { + "shapes": [ + { + "attributes": [], + "elements": [ + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 52, + "label_id": 49, + "occluded": false, + "outside": false, + "points": [ + 326.2062528608664, + 107.42983682983868 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 50, + "label_id": 47, + "occluded": false, + "outside": false, + "points": [ + 136.46993006993034, + 138.72697241590762 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 51, + "label_id": 48, + "occluded": false, + "outside": false, + "points": [ + 192.9001336620433, + 421.9659673659692 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 53, + "label_id": 50, + "occluded": false, + "outside": false, + "points": [ + 412.07832167832197, + 337.46374412038085 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + } + ], + "frame": 0, + "group": 0, + "id": 49, + "label_id": 46, + "occluded": false, + "outside": false, + "points": [], + "rotation": 0.0, + "source": "manual", + "type": "skeleton", + "z_order": 0 + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "19": { + "shapes": [ + { + "attributes": [ + { + "spec_id": 7, + "value": "non-default" + } + ], + "elements": [], + "frame": 0, + "group": 0, + "id": 54, + "label_id": 51, + "occluded": false, + "outside": false, + "points": [ + 244.32906271072352, + 57.53054619015711, + 340.34389750505943, + 191.28914362778414 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [ + { + "spec_id": 8, + "value": "black" + } + ], + "elements": [], + "frame": 0, + "group": 0, + "id": 55, + "label_id": 52, + "occluded": false, + "outside": false, + "points": [ + 424.4396493594086, + 86.6660822656795, + 664.8078219824692, + 251.54672960215976 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "20": { + "shapes": [ + { + "attributes": [ + { + "spec_id": 9, + "value": "non-default" + } + ], + "elements": [], + "frame": 0, + "group": 0, + "id": 56, + "label_id": 53, + "occluded": false, + "outside": false, + "points": [ + 35.913636363637124, + 80.58636363636288, + 94.8227272727272, + 170.58636363636288 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [ + { + "spec_id": 10, + "value": "black" + } + ], + "elements": [], + "frame": 0, + "group": 0, + "id": 57, + "label_id": 54, + "occluded": false, + "outside": false, + "points": [ + 190.95909090909117, + 100.22272727272684, + 297.7318181818191, + 209.8590909090908 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "21": { + "shapes": [ + { + "attributes": [], + "elements": [ + { + "attributes": [], + "frame": 6, + "group": 0, + "id": 62, + "label_id": 61, + "occluded": false, + "outside": false, + "points": [ + 155.7276059652392, + 30.260833689097126 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 6, + "group": 0, + "id": 60, + "label_id": 59, + "occluded": false, + "outside": false, + "points": [ + 103.73647295885894, + 51.085564225393554 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 6, + "group": 0, + "id": 61, + "label_id": 60, + "occluded": false, + "outside": false, + "points": [ + 125.86783527366472, + 101.86367376801435 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 6, + "group": 0, + "id": 63, + "label_id": 62, + "occluded": false, + "outside": false, + "points": [ + 199.28775272671066, + 114.13029555429613 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + } + ], + "frame": 6, + "group": 0, + "id": 59, + "label_id": 58, + "occluded": false, + "outside": false, + "points": [], + "rotation": 0.0, + "source": "manual", + "type": "skeleton", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 6, + "group": 0, + "id": 58, + "label_id": 57, + "occluded": false, + "outside": false, + "points": [ + 42.63157931421483, + 51.228199155397306, + 106.13274329786509, + 138.0929989443539 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + } + ], + "tags": [], + "tracks": [ + { + "attributes": [], + "elements": [ + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 7, + "label_id": 59, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 11, + "occluded": false, + "outside": true, + "points": [ + 230.39103314621025, + 149.98846070356873 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 3, + "id": 12, + "occluded": false, + "outside": false, + "points": [ + 230.39103314621025, + 149.98846070356873 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 6, + "id": 12, + "occluded": false, + "outside": true, + "points": [ + 230.39103314621025, + 149.98846070356873 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 8, + "label_id": 60, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 13, + "occluded": false, + "outside": false, + "points": [ + 292.80597636674844, + 284.1818841927473 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 6, + "id": 13, + "occluded": false, + "outside": true, + "points": [ + 292.80597636674844, + 284.1818841927473 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 9, + "label_id": 61, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 14, + "occluded": false, + "outside": false, + "points": [ + 377.016603158851, + 94.95407858346152 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 6, + "id": 14, + "occluded": false, + "outside": true, + "points": [ + 377.016603158851, + 94.95407858346152 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 10, + "label_id": 62, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 15, + "occluded": false, + "outside": false, + "points": [ + 499.86507710826913, + 316.59939612801213 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 6, + "id": 15, + "occluded": false, + "outside": true, + "points": [ + 499.86507710826913, + 316.59939612801213 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + } + ], + "frame": 0, + "group": 0, + "id": 6, + "label_id": 58, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 10, + "occluded": false, + "outside": false, + "points": [], + "rotation": 0.0, + "type": "skeleton", + "z_order": 0 + }, + { + "attributes": [], + "frame": 6, + "id": 10, + "occluded": false, + "outside": true, + "points": [], + "rotation": 0.0, + "type": "skeleton", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "elements": [ + { + "attributes": [], + "frame": 6, + "group": 0, + "id": 12, + "label_id": 59, + "shapes": [ + { + "attributes": [], + "frame": 6, + "id": 17, + "occluded": false, + "outside": false, + "points": [ + 92.95325643333308, + 129.2954675940839 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 6, + "group": 0, + "id": 13, + "label_id": 60, + "shapes": [ + { + "attributes": [], + "frame": 6, + "id": 18, + "occluded": false, + "outside": false, + "points": [ + 133.81649280769233, + 195.4883603907146 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 6, + "group": 0, + "id": 14, + "label_id": 61, + "shapes": [ + { + "attributes": [], + "frame": 6, + "id": 19, + "occluded": false, + "outside": false, + "points": [ + 188.94942364574058, + 102.14894385926891 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 6, + "group": 0, + "id": 15, + "label_id": 62, + "shapes": [ + { + "attributes": [], + "frame": 6, + "id": 20, + "occluded": false, + "outside": false, + "points": [ + 269.3786601426267, + 211.47877807640333 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + } + ], + "frame": 6, + "group": 0, + "id": 11, + "label_id": 58, + "shapes": [ + { + "attributes": [], + "frame": 6, + "id": 16, + "occluded": false, + "outside": false, + "points": [], + "rotation": 0.0, + "type": "skeleton", + "z_order": 0 + } + ], + "source": "manual" + } + ], + "version": 0 + }, + "22": { + "shapes": [ + { + "attributes": [], + "elements": [], + "frame": 0, + "group": null, + "id": 483, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 32.62534262708583, + 20.60098154936127, + 54.70276973433946, + 42.65809723800925 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": null, + "id": 494, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 108.53125, + 181.1015625, + 142.66406158880454, + 222.9093914860714 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 1, + "group": null, + "id": 484, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 16.165617100664203, + 9.174072385736443, + 34.292834517618566, + 49.1800330458904 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 1, + "group": null, + "id": 495, + "label_id": 66, + "occluded": false, + "outside": false, + "points": [ + 9.683607669644278, + 35.54745578773315, + 17.07658182436379, + 70.58735623784703 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 2, + "group": 0, + "id": 507, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 401.25005136424625, + 21.437188999945647, + 401.25005136424625, + 86.07529491001696, + 476.49277230117514, + 21.30941055245239, + 476.49277230117514, + 86.1453633191959, + 482.3813022073682, + 17.222011508036303, + 482.3813022073682, + 81.74829255695477, + 407.4789834561907, + 17.36159481238974, + 407.4789834561907, + 81.69191156113993 + ], + "rotation": 0.0, + "source": "manual", + "type": "cuboid", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 2, + "group": null, + "id": 485, + "label_id": 66, + "occluded": false, + "outside": false, + "points": [ + 29.29325796839885, + 17.76290795533808, + 42.188980213015164, + 19.15690194174448 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 2, + "group": 0, + "id": 506, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 535.3916015625, + 94.59912109375, + 570.72265625, + 66.46484375 + ], + "rotation": 0.0, + "source": "manual", + "type": "ellipse", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 2, + "group": null, + "id": 496, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 9.23320240197188, + 14.307138152377041, + 25.845440820735742, + 44.032847830632605 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 2, + "group": 0, + "id": 508, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 22.0, + 5.0, + 143.0, + 8.0, + 140.0, + 10.0, + 138.0, + 12.0, + 137.0, + 13.0, + 30.0, + 5.0, + 101.0, + 13.0, + 29.0, + 7.0, + 100.0, + 14.0, + 27.0, + 9.0, + 99.0, + 15.0, + 25.0, + 11.0, + 99.0, + 14.0, + 25.0, + 11.0, + 100.0, + 14.0, + 24.0, + 12.0, + 99.0, + 15.0, + 23.0, + 12.0, + 100.0, + 15.0, + 22.0, + 13.0, + 99.0, + 16.0, + 22.0, + 12.0, + 100.0, + 16.0, + 21.0, + 13.0, + 100.0, + 15.0, + 22.0, + 12.0, + 101.0, + 15.0, + 21.0, + 13.0, + 100.0, + 16.0, + 21.0, + 13.0, + 100.0, + 16.0, + 20.0, + 13.0, + 101.0, + 15.0, + 21.0, + 12.0, + 102.0, + 15.0, + 20.0, + 13.0, + 102.0, + 15.0, + 20.0, + 12.0, + 103.0, + 14.0, + 21.0, + 11.0, + 103.0, + 15.0, + 20.0, + 11.0, + 104.0, + 15.0, + 19.0, + 12.0, + 103.0, + 16.0, + 18.0, + 12.0, + 104.0, + 16.0, + 18.0, + 12.0, + 104.0, + 16.0, + 17.0, + 13.0, + 103.0, + 16.0, + 17.0, + 13.0, + 104.0, + 16.0, + 17.0, + 12.0, + 105.0, + 16.0, + 16.0, + 13.0, + 78.0, + 9.0, + 17.0, + 17.0, + 15.0, + 14.0, + 75.0, + 15.0, + 14.0, + 17.0, + 15.0, + 13.0, + 74.0, + 18.0, + 13.0, + 16.0, + 15.0, + 13.0, + 73.0, + 23.0, + 9.0, + 17.0, + 16.0, + 11.0, + 72.0, + 26.0, + 8.0, + 17.0, + 15.0, + 11.0, + 70.0, + 29.0, + 8.0, + 17.0, + 14.0, + 12.0, + 68.0, + 32.0, + 6.0, + 18.0, + 14.0, + 11.0, + 67.0, + 35.0, + 5.0, + 18.0, + 13.0, + 11.0, + 67.0, + 36.0, + 5.0, + 18.0, + 12.0, + 12.0, + 66.0, + 38.0, + 3.0, + 19.0, + 12.0, + 11.0, + 66.0, + 39.0, + 3.0, + 19.0, + 11.0, + 11.0, + 66.0, + 12.0, + 4.0, + 25.0, + 1.0, + 20.0, + 10.0, + 11.0, + 66.0, + 11.0, + 9.0, + 22.0, + 1.0, + 19.0, + 10.0, + 12.0, + 65.0, + 12.0, + 11.0, + 41.0, + 8.0, + 12.0, + 65.0, + 12.0, + 13.0, + 40.0, + 8.0, + 11.0, + 65.0, + 12.0, + 15.0, + 39.0, + 7.0, + 11.0, + 65.0, + 12.0, + 16.0, + 39.0, + 6.0, + 11.0, + 66.0, + 12.0, + 17.0, + 38.0, + 5.0, + 12.0, + 65.0, + 12.0, + 18.0, + 54.0, + 66.0, + 11.0, + 20.0, + 52.0, + 66.0, + 12.0, + 20.0, + 51.0, + 66.0, + 13.0, + 20.0, + 50.0, + 67.0, + 12.0, + 21.0, + 48.0, + 69.0, + 12.0, + 22.0, + 46.0, + 69.0, + 13.0, + 22.0, + 44.0, + 70.0, + 13.0, + 24.0, + 42.0, + 71.0, + 13.0, + 25.0, + 39.0, + 72.0, + 14.0, + 25.0, + 37.0, + 36.0, + 6.0, + 32.0, + 13.0, + 26.0, + 20.0, + 1.0, + 14.0, + 36.0, + 10.0, + 30.0, + 13.0, + 26.0, + 20.0, + 4.0, + 9.0, + 36.0, + 13.0, + 28.0, + 14.0, + 27.0, + 18.0, + 5.0, + 7.0, + 36.0, + 15.0, + 28.0, + 14.0, + 27.0, + 17.0, + 48.0, + 20.0, + 24.0, + 15.0, + 26.0, + 16.0, + 48.0, + 22.0, + 22.0, + 16.0, + 27.0, + 14.0, + 48.0, + 25.0, + 20.0, + 16.0, + 27.0, + 13.0, + 48.0, + 26.0, + 20.0, + 16.0, + 28.0, + 10.0, + 50.0, + 27.0, + 19.0, + 16.0, + 28.0, + 8.0, + 52.0, + 27.0, + 19.0, + 24.0, + 21.0, + 5.0, + 54.0, + 27.0, + 19.0, + 25.0, + 82.0, + 24.0, + 19.0, + 25.0, + 83.0, + 23.0, + 19.0, + 25.0, + 83.0, + 23.0, + 19.0, + 25.0, + 86.0, + 19.0, + 20.0, + 24.0, + 89.0, + 17.0, + 20.0, + 24.0, + 90.0, + 16.0, + 20.0, + 23.0, + 91.0, + 15.0, + 20.0, + 23.0, + 94.0, + 12.0, + 20.0, + 23.0, + 94.0, + 12.0, + 20.0, + 23.0, + 94.0, + 12.0, + 20.0, + 23.0, + 93.0, + 13.0, + 21.0, + 22.0, + 92.0, + 13.0, + 22.0, + 21.0, + 92.0, + 14.0, + 23.0, + 19.0, + 93.0, + 13.0, + 25.0, + 19.0, + 91.0, + 14.0, + 25.0, + 21.0, + 88.0, + 15.0, + 26.0, + 23.0, + 83.0, + 16.0, + 28.0, + 24.0, + 80.0, + 16.0, + 30.0, + 26.0, + 75.0, + 17.0, + 33.0, + 26.0, + 72.0, + 17.0, + 36.0, + 27.0, + 68.0, + 18.0, + 37.0, + 28.0, + 64.0, + 19.0, + 41.0, + 28.0, + 59.0, + 20.0, + 44.0, + 29.0, + 54.0, + 21.0, + 47.0, + 30.0, + 47.0, + 24.0, + 50.0, + 31.0, + 40.0, + 27.0, + 52.0, + 34.0, + 32.0, + 30.0, + 56.0, + 39.0, + 19.0, + 32.0, + 62.0, + 45.0, + 5.0, + 35.0, + 65.0, + 83.0, + 70.0, + 78.0, + 74.0, + 74.0, + 77.0, + 71.0, + 81.0, + 64.0, + 88.0, + 59.0, + 91.0, + 52.0, + 103.0, + 42.0, + 110.0, + 37.0, + 123.0, + 20.0, + 135.0, + 5.0, + 3.0, + 5.0, + 46.0, + 634.0, + 38.0, + 782.0, + 145.0 + ], + "rotation": 0.0, + "source": "manual", + "type": "mask", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 2, + "group": 0, + "id": 505, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 191.880859375, + 54.677734375, + 244.87726265758647, + 74.96046080888482, + 318.8110270353427, + 38.32071917035137, + 374.4249205938322, + 107.67451584329137 + ], + "rotation": 0.0, + "source": "manual", + "type": "polyline", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 3, + "group": null, + "id": 486, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 12.900324218921977, + 31.61197536878121, + 14.59391078431892, + 36.29094511026649 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 3, + "group": null, + "id": 497, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 24.730337557305866, + 29.62228497877787, + 29.24857191530591, + 70.68451297781645 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 4, + "group": null, + "id": 487, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 2.813694128785693, + 30.20761291442227, + 18.7208158667625, + 36.10507213674266 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 4, + "group": null, + "id": 498, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 2.1121019722181886, + 13.869054700136441, + 11.324617420574125, + 19.972173011282173 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 5, + "group": null, + "id": 488, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 3.508318958955836, + 27.7047096625407, + 26.54219559642832, + 45.905198894448475 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 5, + "group": null, + "id": 499, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 40.030467384964794, + 14.766168952345382, + 56.1585086234919, + 33.38318513200221 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 6, + "group": null, + "id": 489, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 25.14030189623754, + 5.6733962996246055, + 38.20236513837561, + 50.107446648679 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 6, + "group": null, + "id": 500, + "label_id": 66, + "occluded": false, + "outside": false, + "points": [ + 22.669744730593095, + 49.829940784412905, + 49.045918115614874, + 92.87818219175908 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 7, + "group": null, + "id": 490, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 31.485093194422202, + 6.652309747763773, + 78.90159992771716, + 50.14729730944946 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 7, + "group": null, + "id": 501, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 35.06714303007967, + 34.81749603873695, + 72.81534706452, + 60.62236529733499 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 8, + "group": null, + "id": 491, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 30.907609343908867, + 26.920657464053736, + 61.021803468648315, + 34.33466966738635 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 8, + "group": null, + "id": 502, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 33.949231044002076, + 43.79253250986025, + 54.84733296216899, + 62.44618575550419 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 9, + "group": null, + "id": 492, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 40.67588165005975, + 44.16433216489991, + 72.56184147619327, + 85.5429197134128 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 9, + "group": null, + "id": 503, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 15.01664682667706, + 24.951413716977832, + 34.52619994974882, + 60.389045841248674 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 10, + "group": null, + "id": 504, + "label_id": 66, + "occluded": false, + "outside": false, + "points": [ + 19.74201544469132, + 30.437730521261773, + 43.478177450860585, + 38.85138665770247 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 10, + "group": null, + "id": 493, + "label_id": 66, + "occluded": false, + "outside": false, + "points": [ + 16.097754035046485, + 4.573647979622352, + 58.8933879574248, + 31.93095871390559 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": null, + "id": 384, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 21.771535357816685, + 38.10394839707063, + 46.66121542795621, + 61.395778976883435 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": null, + "id": 373, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 128.70000000000073, + 202.8154296875, + 174.84953117370605, + 252.62294394632772 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [ + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 510, + "label_id": 67, + "occluded": false, + "outside": false, + "points": [ + 325.81183481270637, + 169.3732236381784 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 512, + "label_id": 69, + "occluded": false, + "outside": false, + "points": [ + 335.2453776397853, + 246.57839351937508 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 511, + "label_id": 68, + "occluded": false, + "outside": false, + "points": [ + 405.6341290966555, + 216.82961195061355 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + } + ], + "frame": 0, + "group": 0, + "id": 509, + "label_id": 66, + "occluded": false, + "outside": false, + "points": [], + "rotation": 0.0, + "source": "manual", + "type": "skeleton", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 1, + "group": null, + "id": 374, + "label_id": 66, + "occluded": false, + "outside": false, + "points": [ + 48.12463059940514, + 49.56415639855863, + 86.72866669447971, + 79.88534367799434 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 1, + "group": null, + "id": 385, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 47.74069002745097, + 8.979945307737525, + 75.09009579972003, + 49.944377666156775 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 2, + "group": null, + "id": 386, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 31.519108441498556, + 11.487384732875865, + 33.9677855625604, + 11.741460365690042 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 2, + "group": null, + "id": 375, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 1.973846331831547, + 45.77202532553066, + 19.359541493051733, + 49.59142754572273 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 3, + "group": null, + "id": 387, + "label_id": 66, + "occluded": false, + "outside": false, + "points": [ + 47.626061974587216, + 4.742902857127573, + 73.6431946747958, + 21.98893892047218 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 3, + "group": null, + "id": 376, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 28.151068739966007, + 25.472817252545543, + 69.01675105692789, + 39.17582104149861 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 4, + "group": null, + "id": 388, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 39.9552116305673, + 7.099389830892683, + 81.50568347911505, + 22.91276365749088 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 4, + "group": null, + "id": 377, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 20.82859485196533, + 20.20284211999498, + 65.06449540153316, + 36.586720678222335 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 5, + "group": null, + "id": 378, + "label_id": 66, + "occluded": false, + "outside": false, + "points": [ + 33.79061149513946, + 8.697799034160319, + 66.8603743960803, + 56.40259427136259 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 5, + "group": null, + "id": 389, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 8.490724513815634, + 4.967537330256527, + 33.879170648858064, + 41.48246323545371 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 6, + "group": null, + "id": 390, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 8.238478163045936, + 30.506885409533453, + 24.199550828477328, + 52.470067436160306 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 6, + "group": null, + "id": 379, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 36.59042217067678, + 11.640939649375332, + 56.356138094129285, + 23.152580340218726 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 7, + "group": null, + "id": 391, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 48.699397805843304, + 25.414220926373016, + 98.21088655300638, + 74.12108955171448 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 7, + "group": null, + "id": 380, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 40.84676019536735, + 49.73369769438821, + 86.55210348083034, + 92.67464655715418 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 8, + "group": null, + "id": 392, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 23.44786013239356, + 46.61655359142538, + 38.03525661308419, + 63.989553927693194 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 8, + "group": null, + "id": 381, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 6.6512404187989596, + 48.608637853937424, + 38.47957672845558, + 63.01814316203485 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 9, + "group": null, + "id": 382, + "label_id": 66, + "occluded": false, + "outside": false, + "points": [ + 34.8591781560674, + 46.909805505807725, + 62.76884975235831, + 71.15370887744085 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 9, + "group": null, + "id": 393, + "label_id": 66, + "occluded": false, + "outside": false, + "points": [ + 8.39848796382615, + 21.848706178190497, + 34.06199388884364, + 58.755093781932075 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 10, + "group": null, + "id": 394, + "label_id": 66, + "occluded": false, + "outside": false, + "points": [ + 49.33379108044891, + 45.87438661706784, + 97.62187411104203, + 94.75916402425524 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 10, + "group": null, + "id": 383, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 40.01964032220059, + 28.210223404990387, + 63.80243197711431, + 77.26899546998015 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + } + ], + "tags": [ + { + "attributes": [], + "frame": 0, + "group": null, + "id": 217, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 1, + "group": null, + "id": 218, + "label_id": 63, + "source": "manual" + }, + { + "attributes": [], + "frame": 2, + "group": null, + "id": 219, + "label_id": 64, + "source": "manual" + }, + { + "attributes": [], + "frame": 3, + "group": null, + "id": 220, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 4, + "group": null, + "id": 221, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 5, + "group": null, + "id": 222, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 6, + "group": null, + "id": 223, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 7, + "group": null, + "id": 224, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 8, + "group": null, + "id": 225, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 9, + "group": null, + "id": 226, + "label_id": 64, + "source": "manual" + }, + { + "attributes": [], + "frame": 10, + "group": null, + "id": 227, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 0, + "group": null, + "id": 162, + "label_id": 63, + "source": "manual" + }, + { + "attributes": [], + "frame": 1, + "group": null, + "id": 163, + "label_id": 64, + "source": "manual" + }, + { + "attributes": [], + "frame": 2, + "group": null, + "id": 164, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 3, + "group": null, + "id": 165, + "label_id": 63, + "source": "manual" + }, + { + "attributes": [], + "frame": 4, + "group": null, + "id": 166, + "label_id": 64, + "source": "manual" + }, + { + "attributes": [], + "frame": 5, + "group": null, + "id": 167, + "label_id": 63, + "source": "manual" + }, + { + "attributes": [], + "frame": 6, + "group": null, + "id": 168, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 7, + "group": null, + "id": 169, + "label_id": 64, + "source": "manual" + }, + { + "attributes": [], + "frame": 8, + "group": null, + "id": 170, + "label_id": 63, + "source": "manual" + }, + { + "attributes": [], + "frame": 9, + "group": null, + "id": 171, + "label_id": 64, + "source": "manual" + }, + { + "attributes": [], + "frame": 10, + "group": null, + "id": 172, + "label_id": 64, + "source": "manual" + } + ], + "tracks": [ + { + "attributes": [], + "frame": 4, + "group": null, + "id": 117, + "label_id": 64, + "shapes": [ + { + "attributes": [], + "frame": 4, + "id": 479, + "occluded": false, + "outside": false, + "points": [ + 33.598779899537504, + 47.72613723612956, + 72.98403755948176, + 46.37989500312985, + 30.124643891237035, + 37.121847333246016 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 5, + "id": 480, + "occluded": false, + "outside": false, + "points": [ + 46.51991234215712, + 46.432609873899786, + 45.655675472283754, + 16.25754165859492, + 43.56714102707272, + 49.98897944826618, + 5.709001866044616, + 94.02221983606873, + 50.4674845929161, + 3.8063308724888167 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 7, + "id": 482, + "occluded": false, + "outside": true, + "points": [ + 93.4636235933026, + 75.92351333549601, + 41.2227627513351, + 34.350331204602604, + 66.3432816308487, + 54.056702329000764 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 8, + "id": 483, + "occluded": true, + "outside": false, + "points": [ + 5.0376184452136314, + 30.9548987882599, + 43.94144681021965, + 21.128727976625083, + 48.469900205179414, + 40.057149554521985 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 9, + "id": 484, + "occluded": false, + "outside": false, + "points": [ + 20.627812291540625, + 77.71815966193307, + 21.07255019421953, + 54.89527252097782, + 44.701168842121064, + 35.54993705233812, + 21.962376189353606, + 41.33264342135886 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 0, + "id": 484, + "occluded": false, + "outside": true, + "points": [ + 20.627812291540625, + 77.71815966193307, + 21.07255019421953, + 54.89527252097782, + 44.701168842121064, + 35.54993705233812, + 21.962376189353606, + 41.33264342135886 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 1, + "group": null, + "id": 118, + "label_id": 64, + "shapes": [ + { "attributes": [], - "frame": 6, - "group": 0, - "id": 62, - "label_id": 61, + "frame": 1, + "id": 485, "occluded": false, "outside": false, "points": [ - 155.7276059652392, - 30.260833689097126 + 14.249043106539217, + 92.98784111986599, + 75.59995790885854, + 9.882230433856531, + 74.64478290627322, + 24.288343372649436 ], "rotation": 0.0, - "source": "manual", - "type": "points", + "type": "polygon", "z_order": 0 }, { "attributes": [], - "frame": 6, - "group": 0, - "id": 60, - "label_id": 59, + "frame": 2, + "id": 486, "occluded": false, "outside": false, "points": [ - 103.73647295885894, - 51.085564225393554 + 20.40678024726209, + 91.07758232974479, + 91.93855431428733, + 55.64212246699361, + 98.18754824554128, + 2.366735096391437 ], "rotation": 0.0, - "source": "manual", - "type": "points", + "type": "polygon", "z_order": 0 }, { "attributes": [], - "frame": 6, - "group": 0, - "id": 61, - "label_id": 60, + "frame": 3, + "id": 487, "occluded": false, "outside": false, "points": [ - 125.86783527366472, - 101.86367376801435 + 64.07371618788767, + 51.165624193155125, + 16.507577217122392, + 35.26978776115228, + 3.3675085977394215, + 35.92980168264138, + 48.890071365309076, + 42.285059057475024 ], "rotation": 0.0, - "source": "manual", - "type": "points", + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 4, + "id": 488, + "occluded": false, + "outside": false, + "points": [ + 22.622019526627223, + 62.31679157489255, + 7.435732676703511, + 0.9774883731428763, + 33.48515389987684, + 67.80446095923271, + 29.811309771691985, + 27.34743520630969, + 94.97786135262317, + 92.53355214231964 + ], + "rotation": 0.0, + "type": "polygon", "z_order": 0 }, { "attributes": [], "frame": 6, - "group": 0, - "id": 63, - "label_id": 62, + "id": 490, + "occluded": true, + "outside": false, + "points": [ + 0.8530259402693807, + 44.13296596268512, + 92.264556499544, + 81.80448766928922, + 31.08882580838178, + 20.301451961901908, + 31.47038000360235, + 96.67947680961973 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 7, + "id": 491, "occluded": false, "outside": false, "points": [ - 199.28775272671066, - 114.13029555429613 + 5.076584858511457, + 53.839003005451126, + 79.49480345687792, + 80.4262644422021, + 97.57877446416717, + 73.8591873826985 ], "rotation": 0.0, - "source": "manual", - "type": "points", + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 8, + "id": 492, + "occluded": true, + "outside": false, + "points": [ + 46.487048928881734, + 74.79726052811286, + 58.89940649861379, + 63.46132083800071, + 79.97978567976963, + 37.370343440303344, + 0.9690229199726064, + 94.25236542125029 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 9, + "id": 513, + "occluded": true, + "outside": true, + "points": [ + 46.487048928881734, + 74.79726052811286, + 58.89940649861379, + 63.46132083800071, + 79.97978567976963, + 37.370343440303344, + 0.9690229199726064, + 94.25236542125029 + ], + "rotation": 0.0, + "type": "polygon", "z_order": 0 } ], - "frame": 6, - "group": 0, - "id": 59, - "label_id": 58, - "occluded": false, - "outside": false, - "points": [], - "rotation": 0.0, - "source": "manual", - "type": "skeleton", - "z_order": 0 + "source": "manual" }, - { - "attributes": [], - "elements": [], - "frame": 6, - "group": 0, - "id": 58, - "label_id": 57, - "occluded": false, - "outside": false, - "points": [ - 42.63157931421483, - 51.228199155397306, - 106.13274329786509, - 138.0929989443539 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - } - ], - "tags": [], - "tracks": [ { "attributes": [], "elements": [ { "attributes": [], - "frame": 0, + "frame": 2, "group": 0, - "id": 7, - "label_id": 59, + "id": 122, + "label_id": 67, "shapes": [ { "attributes": [], - "frame": 0, - "id": 11, + "frame": 2, + "id": 498, "occluded": false, - "outside": true, + "outside": false, "points": [ - 230.39103314621025, - 149.98846070356873 + 153.27734375, + 110.2919921875 ], "rotation": 0.0, "type": "points", @@ -2551,13 +7538,13 @@ }, { "attributes": [], - "frame": 3, - "id": 12, + "frame": 4, + "id": 499, "occluded": false, "outside": false, "points": [ - 230.39103314621025, - 149.98846070356873 + 112.478515625, + 36.544921875 ], "rotation": 0.0, "type": "points", @@ -2565,13 +7552,13 @@ }, { "attributes": [], - "frame": 6, - "id": 12, + "frame": 5, + "id": 500, "occluded": false, "outside": true, "points": [ - 230.39103314621025, - 149.98846070356873 + 112.478515625, + 36.544921875 ], "rotation": 0.0, "type": "points", @@ -2582,20 +7569,20 @@ }, { "attributes": [], - "frame": 0, + "frame": 2, "group": 0, - "id": 8, - "label_id": 60, + "id": 123, + "label_id": 68, "shapes": [ { "attributes": [], - "frame": 0, - "id": 13, - "occluded": false, + "frame": 2, + "id": 501, + "occluded": true, "outside": false, "points": [ - 292.80597636674844, - 284.1818841927473 + 229.1739514298206, + 141.25929642527626 ], "rotation": 0.0, "type": "points", @@ -2603,37 +7590,13 @@ }, { "attributes": [], - "frame": 6, - "id": 13, - "occluded": false, - "outside": true, - "points": [ - 292.80597636674844, - 284.1818841927473 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 9, - "label_id": 61, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 14, + "frame": 4, + "id": 502, "occluded": false, "outside": false, "points": [ - 377.016603158851, - 94.95407858346152 + 147.65302061127113, + 49.58072867662486 ], "rotation": 0.0, "type": "points", @@ -2641,13 +7604,13 @@ }, { "attributes": [], - "frame": 6, - "id": 14, + "frame": 5, + "id": 503, "occluded": false, "outside": true, "points": [ - 377.016603158851, - 94.95407858346152 + 147.65302061127113, + 49.58072867662486 ], "rotation": 0.0, "type": "points", @@ -2658,20 +7621,34 @@ }, { "attributes": [], - "frame": 0, + "frame": 2, "group": 0, - "id": 10, - "label_id": 62, + "id": 124, + "label_id": 69, "shapes": [ { "attributes": [], - "frame": 0, - "id": 15, + "frame": 2, + "id": 504, + "occluded": false, + "outside": true, + "points": [ + 162.24694184787768, + 160.67163694048395 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 4, + "id": 505, "occluded": false, "outside": false, "points": [ - 499.86507710826913, - 316.59939612801213 + 116.63550211839356, + 57.75242869223621 ], "rotation": 0.0, "type": "points", @@ -2679,47 +7656,253 @@ }, { "attributes": [], - "frame": 6, - "id": 15, + "frame": 5, + "id": 506, "occluded": false, "outside": true, "points": [ - 499.86507710826913, - 316.59939612801213 + 116.63550211839356, + 57.75242869223621 ], "rotation": 0.0, "type": "points", "z_order": 0 } ], - "source": "manual" + "source": "manual" + } + ], + "frame": 2, + "group": 0, + "id": 119, + "label_id": 66, + "shapes": [ + { + "attributes": [], + "frame": 2, + "id": 494, + "occluded": false, + "outside": false, + "points": [], + "rotation": 0.0, + "type": "skeleton", + "z_order": 0 + }, + { + "attributes": [], + "frame": 0, + "id": 494, + "occluded": false, + "outside": true, + "points": [], + "rotation": 0.0, + "type": "skeleton", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 2, + "group": 0, + "id": 120, + "label_id": 63, + "shapes": [ + { + "attributes": [], + "frame": 2, + "id": 495, + "occluded": false, + "outside": false, + "points": [ + 394.7080078125, + 132.537109375, + 423.4960031454393, + 133.1914787701262, + 458.82718258259774, + 118.79729455498818, + 458.17290148191023, + 152.81991179076977 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 4, + "id": 496, + "occluded": false, + "outside": true, + "points": [ + 394.7080078125, + 132.537109375, + 423.4960031454393, + 133.1914787701262, + 458.82718258259774, + 118.79729455498818, + 458.17290148191023, + 152.81991179076977 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 121, + "label_id": 63, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 497, + "occluded": false, + "outside": false, + "points": [ + 266.92653575077566, + 24.86851007975565, + 266.92653575077566, + 117.68501668390672, + 300.94915298655724, + 24.760093290749865, + 300.94915298655724, + 117.68501668383215, + 304.35141471013594, + 16.30584444966371, + 304.35141471013594, + 109.01393426480536, + 270.40413416463343, + 16.423849249653358, + 270.40413416463343, + 109.02402735721262 + ], + "rotation": 0.0, + "type": "cuboid", + "z_order": 0 + }, + { + "attributes": [], + "frame": 4, + "id": 514, + "occluded": false, + "outside": true, + "points": [ + 266.92653575077566, + 24.86851007975565, + 266.92653575077566, + 117.68501668390672, + 300.94915298655724, + 24.760093290749865, + 300.94915298655724, + 117.68501668383215, + 304.35141471013594, + 16.30584444966371, + 304.35141471013594, + 109.01393426480536, + 270.40413416463343, + 16.423849249653358, + 270.40413416463343, + 109.02402735721262 + ], + "rotation": 0.0, + "type": "cuboid", + "z_order": 0 } ], + "source": "manual" + }, + { + "attributes": [], "frame": 0, "group": 0, - "id": 6, - "label_id": 58, + "id": 125, + "label_id": 63, "shapes": [ { "attributes": [], "frame": 0, - "id": 10, + "id": 508, "occluded": false, "outside": false, - "points": [], + "points": [ + 457.9970703125, + 146.17578125, + 492.673828125, + 99.39453125 + ], "rotation": 0.0, - "type": "skeleton", + "type": "ellipse", "z_order": 0 }, { "attributes": [], - "frame": 6, - "id": 10, + "frame": 1, + "id": 509, + "occluded": false, + "outside": false, + "points": [ + 628.1103515625, + 72.896484375, + 662.787109375, + 26.115234375 + ], + "rotation": 0.0, + "type": "ellipse", + "z_order": 0 + }, + { + "attributes": [], + "frame": 2, + "id": 510, + "occluded": false, + "outside": false, + "points": [ + 101.4140625, + 125.2392578125, + 136.0908203125, + 78.4580078125 + ], + "rotation": 0.0, + "type": "ellipse", + "z_order": 0 + }, + { + "attributes": [], + "frame": 3, + "id": 511, + "occluded": false, + "outside": false, + "points": [ + 142.6337890625, + 241.046875, + 177.310546875, + 194.265625 + ], + "rotation": 0.0, + "type": "ellipse", + "z_order": 0 + }, + { + "attributes": [], + "frame": 4, + "id": 512, "occluded": false, "outside": true, - "points": [], + "points": [ + 142.6337890625, + 241.046875, + 177.310546875, + 194.265625 + ], "rotation": 0.0, - "type": "skeleton", + "type": "ellipse", "z_order": 0 } ], @@ -2727,118 +7910,307 @@ }, { "attributes": [], - "elements": [ + "frame": 1, + "group": null, + "id": 107, + "label_id": 64, + "shapes": [ { "attributes": [], - "frame": 6, - "group": 0, - "id": 12, - "label_id": 59, - "shapes": [ - { - "attributes": [], - "frame": 6, - "id": 17, - "occluded": false, - "outside": false, - "points": [ - 92.95325643333308, - 129.2954675940839 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } + "frame": 1, + "id": 428, + "occluded": false, + "outside": false, + "points": [ + 89.16625482373604, + 10.760448971018688, + 21.130943971024195, + 33.264143636745125, + 82.08266620234568, + 57.27050026015028, + 31.61462894960768, + 91.61837979864868, + 61.318808891867995, + 5.2591005982589145 ], - "source": "manual" + "rotation": 0.0, + "type": "polygon", + "z_order": 0 }, { "attributes": [], - "frame": 6, - "group": 0, - "id": 13, - "label_id": 60, - "shapes": [ - { - "attributes": [], - "frame": 6, - "id": 18, - "occluded": false, - "outside": false, - "points": [ - 133.81649280769233, - 195.4883603907146 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } + "frame": 2, + "id": 429, + "occluded": false, + "outside": false, + "points": [ + 86.12227563556914, + 54.78519030863848, + 5.965437872325186, + 44.415919636543535, + 21.508219614650393, + 77.71533185704882, + 56.56030517796948, + 80.49138661336151, + 92.11320758706701, + 36.23616592947234 ], - "source": "manual" + "rotation": 0.0, + "type": "polygon", + "z_order": 0 }, { "attributes": [], - "frame": 6, - "group": 0, - "id": 14, - "label_id": 61, - "shapes": [ - { - "attributes": [], - "frame": 6, - "id": 19, - "occluded": false, - "outside": false, - "points": [ - 188.94942364574058, - 102.14894385926891 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } + "frame": 3, + "id": 430, + "occluded": false, + "outside": false, + "points": [ + 43.844133439202515, + 52.766337685192056, + 36.06107102732473, + 41.86726929430576, + 10.476592440122644, + 76.08071328170251, + 12.350073636556836, + 42.14361527808913, + 20.030324015224398, + 97.33574207745058 ], - "source": "manual" + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 4, + "id": 431, + "occluded": false, + "outside": false, + "points": [ + 46.32363927321131, + 89.27799405888287, + 11.543344424530844, + 28.859146282381133, + 39.954518702075006, + 7.7721058829602345, + 89.55146184028104, + 41.32407558272474, + 65.71210278333133, + 4.723941407484478 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 5, + "id": 432, + "occluded": false, + "outside": false, + "points": [ + 63.75444524182796, + 83.38994368964245, + 89.86483302169569, + 76.72264053847121, + 65.79043486042822, + 23.786207640718814, + 77.73570584702074, + 67.1092531599958 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 }, { "attributes": [], "frame": 6, - "group": 0, - "id": 15, - "label_id": 62, - "shapes": [ - { - "attributes": [], - "frame": 6, - "id": 20, - "occluded": false, - "outside": false, - "points": [ - 269.3786601426267, - 211.47877807640333 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } + "id": 433, + "occluded": false, + "outside": false, + "points": [ + 42.08516199103318, + 29.942896326510805, + 40.39823943435537, + 49.37947128117274, + 98.88115268683107, + 79.11696631188182 ], - "source": "manual" + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 7, + "id": 434, + "occluded": false, + "outside": false, + "points": [ + 81.78520462265138, + 70.56947279185766, + 73.77379910176585, + 76.65691380291577, + 78.13598264354707, + 51.951762879932886 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 8, + "id": 435, + "occluded": false, + "outside": false, + "points": [ + 51.12165640102631, + 99.11084197328293, + 63.84797882103561, + 45.89089381970446, + 33.434440460259694, + 19.765429813835755 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 9, + "id": 436, + "occluded": false, + "outside": false, + "points": [ + 60.89406682712508, + 49.404300661462685, + 10.175918797036033, + 22.69300466402857, + 13.636722568044934, + 24.9397151458307, + 20.52105176191774, + 40.90671260779596, + 57.81882237238361, + 93.4250359257492 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 } ], - "frame": 6, - "group": 0, - "id": 11, - "label_id": 58, + "source": "manual" + }, + { + "attributes": [], + "frame": 5, + "group": null, + "id": 108, + "label_id": 66, "shapes": [ + { + "attributes": [], + "frame": 5, + "id": 437, + "occluded": false, + "outside": false, + "points": [ + 56.70821030480572, + 38.20037623588232, + 63.18175989344238, + 41.73070749428784, + 2.4862395912330637, + 63.95431832704548 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, { "attributes": [], "frame": 6, - "id": 16, + "id": 438, "occluded": false, "outside": false, - "points": [], + "points": [ + 12.005563467361247, + 51.17651673396597, + 26.65775387838101, + 83.60637658227678, + 9.37445361764302, + 98.39883962537608, + 11.544015694368825, + 82.39090054978801, + 86.56240502418258, + 88.15659541170685 + ], "rotation": 0.0, - "type": "skeleton", + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 7, + "id": 439, + "occluded": false, + "outside": false, + "points": [ + 27.49753431280614, + 52.642159328363334, + 88.61671771042018, + 29.506649953484164, + 99.84757744084266, + 66.51086041463735, + 98.64123905514187, + 80.21191374336696, + 12.032866200086401, + 59.74691350332406 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 8, + "id": 440, + "occluded": false, + "outside": false, + "points": [ + 45.66798986781423, + 4.961587842360249, + 28.891554322880264, + 88.49284935388283, + 42.04171004313141, + 52.41974372296537, + 79.88779494689628, + 78.70227858399868, + 3.134998177462567, + 60.093270566831016 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 9, + "id": 441, + "occluded": false, + "outside": false, + "points": [ + 69.62777852757223, + 25.046431964099458, + 59.00496511489233, + 12.15728994349642, + 10.618682601907793, + 27.135941155386135, + 24.750684503833043, + 72.1563422338744 + ], + "rotation": 0.0, + "type": "polygon", "z_order": 0 } ], diff --git a/tests/python/shared/assets/cvat_db/cvat_data.tar.bz2 b/tests/python/shared/assets/cvat_db/cvat_data.tar.bz2 index 7acdc635457f8114ede7defc91836de70289de6d..35ad52990b75e8d043297b5833f10d338bd4a452 100644 GIT binary patch literal 1130078 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

MK63>W5f`5?EsP8F_5YT#f2pKd_2ie3_ilD^HBN zh$a82AU^`alYYLycP{N}D;S3QlpN}4ThfS|1pR(^4snCIF)XSQD7EB9xSsUS9p_%m zRuemp22UX{4}zV=_y z$^2H%e_nIJaij9v+H`9EP6ePx8fd1Tw(??jfns|CQxG%a_Qusp095BU#4SNptLf=4 zyB-Q9q&S{CN}GazM(_%6IW{z5$S} zRvf^PEPutzx$gfN_JV-p0-JfG^ZG*5x*vf-b3M?14Ee zj>Rkni+c!$iIBngFA%{QgByicRGEcJS@JCLNn51z3vX?8~U zB=%-lx_Co)yKr(-$O5 zt__$igpY3;I(1tNc&ti`xH+>KB(1dl)iM4BE2SY+#IM=5JML16E`BFo?xI~d?{BfT z&6ytK7T)lDD^d%;bdY8F;lxdJK5&%Z7I=ua$V{b&^g9#*VG~dx{4p;b<{t$Qm{(l> zAZT~?WXtVzv`pI{b0@p!nq*t=>{v26#~U>vppg^_|1Wa|?V&0lGvDQ$O`ARA{?(5m z;Kak*NI~7h`5mTTRyB@dxMgR_eCDAhuYgbhzAOIx#G*2K_8q8kEsqoD@cWE+=p>W7L^yqi&w-c-94@#<(Yj#9>p(lERS6*VxSnIUT+LCBfq-D7yZQ=Er zHGf~&>O6k?go!x&<1iAch1owI)1kH$5B9^RURsea5Xfew<+PzB$pVYZ7dRP@#2$x` z+d1i{2y4ndKc?3UZuWM1;rx^MJ2CDLXpu(ss4l0<;uDo{9|XN0y*|z%AR^QZpzsKo zrDFNX5pz%U31md1dPqe|jp zH6EjlX*<}uQch(``cT8NjX|xSBWzJg%KNkGfFYpV9*!quKL`#fFx5ea82kV^{ag%LU;=qrE1dpp!nx5jN~?Wi zVb3=a%n9|h2YtAr`n5>$5G8UfB17*G7LW}1ENc4siIuh34RT~Z%tva%nzD%fhILM0 z!S!jOUrhC00#A=2d-6tL23tP^BO_Lt#eaTS@chRdTqS?-n3GHTu1tc?G1z3Q{2q1M zYE(hWG^A&FZRsh^j43Hk98f=+3d{ffa1<*%(Oke+DS|RxOEjN->kQ7| zMJ?6LHV!f0qaG&|CVR|MJeVyloQ#SR#$=*r(vX>8G04CE{YHDyNsd|T6+hQ;9MLZM z5XgiqPH}g}O4M1OP&8Owt;s z7)9@Z=Czs#;`WVVQKe>yu6iD(Ka0X!9>mF*w@xt~>noPt?s(zFUD)$I$lLgD9Y@+` z5I3S4X6ZvTH?{{uPcW)ZxO_B8gXQ&o{Zklm39cVZ5$w~|Gu2FpI?G9)DB|axxA)rH`#(tF=o|@By;%^=R5*J2m{_+j2uz1X3R;vW^8~7!p&4PSDI?Fxy z;@G(c`uyC9=vV~7?0&bD6XFL#R3~KX;$zOP*MAy#@ZsyP_mCcF9@}o;ch_~v!*hKd z#^<;8qD!Y%Y`Oa3vqPlQ4|<6X;&V(aqO`aHB)SQ4I$)c38hUGNN;v^K20v})SpZT8 zow3GZ7yN$ezq;+dPdtP-|A}JAKgo?uVb2G(KxLw?FmL4)E)*Xwssu+ePmDsfKisEp z^*`?#3 zHQq5JmS|~d{>|urg`6qsuV2bcLKpyHaDZaaTK9l40C*wTuV$}j>C=NQc^-gGnKuiU zf+xkpX@#!(mpkmwju$^&O9;qe0jHJ5$*Hqffb)p|Q?Qxj>ETJNnJHtG zMqtC(Q6mb&_g2(~Fnj%6l(0uQ1VlvW z$CwBbxg^Bf4j)W-I3GRMEH0Oe;@k%zc!`Xr5YoVe4?}ECM#OgitW3F>8LL$PQ3=e7 zao;UJ)US={Rv{^5$@=b7aiPd>6n%vLc@}F28liV=5Wxo218qwjp%iAH`!KBHyW$m( z#~7?BPLypW)~``F=psnFUxdN8B)czVMOBYil;!R0c>zxYntg3tx)@E%)Pn_G{yna# z-r>lSf)YBae-UpJm;9ie)V+kmrlUu6SKti8T~bv3o|(oduLAgwYlmRYDGBp+D2|)> zyv72WSVsj{|6M`6&`(BCeSn0zkOFlt9ivPAMiP$(1S?l7N;KBV=}o>>9(+;1KMorg zaCO1p?-8>Ws3+&Csra?rCMUfravjm7e4@CnWv0OUQ)M7v$Mx1*4{jTc0UC-WP!sX3 zc~$p9aO~{z4h1O*SgBto0{hh}6Lto#I^(P3xQDUCZo^9<)K1yV1nE|4 z&3xa@4O&GgQ_^+#G#$(VqskMO_x~3S!De+O9N={$T~$|$(|Nz)yIzr9?>m?G1)$ub zj^U%1(#>aplbGv3++{m-IuT>4QTJ|r&h%=M4uw!oJf!VjEol(s*_f_KgJ4jctXm{B8 z<_UMTCs#@Q5%&p?Ydxz0Ao~2~iwITbpxArTPx!$Bvbf}FPJUY$i>)mmW7#0HqHNsi z#jpMJOT{3spZ;GJtNu)}7yl{mT?y+WNdHg8Jv=J*9l77=@G8wNk(Q| zU#jc?P%HrPm25qQN{R^GKGZS%I;&l`cHP9MWa^`Zb}W2?FJle?TI?b6*ThhTloIPR zwx}SfFh0FWEpGp14rUSA*Mu~WPcn$JtNwy{V29RfGNn|b?q*Mu@nn{Ok|^OYUxqC- z|1b_%8>n|~dDdNZeaIQ+(5rEG6v3;h8V(Y*ZGJ-@c(os3Y*Dt$b8!?cKzC@S&>BL8 zj%)q?kADzP69@N6X&JDH8cX`C1h$rE(wkHMPQaKI(Dcm3=%tN)~)lr!8Qv{IqN zNSHk0;9K4(W)C*ZPU#0|(Vy2*+t_91kSWU#ixRR)!F1Z4vj>JlU2=zw&g!&&ICn<^&>yDGcd?M$_c?|LKu0<#&t zuzKs8xQkV~0+;Lgu!#d*P(-FH(7XY};28sJoD9_jDPBIxb^n-X5Db-zqQ6aM8<%A8 zXnMjGsJI!ZcvIBIU{C4h(jCsp8?5QwGfkv!{)Z-3t>GcHY70|dl=U^N5q6zS;+!?A{1%fbSv?>{Um3tkmz zNokJ97BUto7kwyH%~n>l^; zC&~K3_#t2On_`7z0s2Z=$}}n!Ql0@d``Id%jNh}e(Raf_r&*D0k!2_*E*>2n9TWKF z&k9dcs>JzKW4Y46#T*>J+Clv%wAmFURDxRBLnr^({xwob>)2a?GSfcZ?oH82cL_>} zxgyQRH(qZ{3H-X%RL>}>6E4oEui#fR3BjIcNsyC3{`}ToEj?n6rst(9ZgYUdK4U#k z=b(5|fgbZ|P~J2sfG7)?TBu7uRIkZJ$1r#GLT6BGtM)c8zshaSHS~1BX|8RBJCRZF zgJ}KMY7erQKol@UgbtLTxp(i;Tx9vTuJvqVnREUFnb-0#&)&ioTdsPS!B0~ryaTy7 zYrC(fDAf*jZWqd3(5hqr0)+tpGGfSy&H^4oC`F}QM!9i9JH+p=3N*^y*d>&DiutE4 z_NPcJ3GJ&MzswJyG(S<%kH%R$P2Cb`vL}ixY;SENv*CE`#hKCT%g+NNrfc)ve3c55 zEusT)MoLdBqGP;sz_Q9X{y5m;J$8UY$TI-nBtJk%_TlTfZ8Mzy*t`O8Pk~JwK~(@Q z&Y1DcVLbU!7zDBoS6TTq)iO4H5$P+VL%9`z0hHQjr$Jpo7+jiN@0%)TFOxs6_y9sR zI~321_R;o{0jxxR!1SN;MA#7guXH4ryLhR(!8O577hR5z_=nc-UJgheEE~@mJ zqy~ToK4`_Q?W58zDqQ8WkXaJH)MP`nK4Tl8>x}Uis|aC)75aM@eQNX?`zoh&gJ-D+ zR#rFF-cGkVHy0DTtiIjOwx%PRsO&8_yv28E=p`ld0Uqfd_#*?ywPaOsa=y$s*is(| zRrK>;j{ypvK>Xwm>wijrdBivP2|Q!KH($q9Uxc-N8y#q)&9P_M8gT`}q4j(5lUr9Q zu7R?sFl3O@^7m%5SJAo$GPvs2=DNBjNpyOtz1N~*ygCUs{3>0>TLVo1fW!CCml^P2LTvuA0G%FutSYyA<0z1C1XJLhlYg&`X2)`Xg1y97ixzUw)D|zj}TQZ$t2IM)*}KU(zKnz z5h6Ve?n3eH*o%h2b(_Hu_6wptZ=wG`W{r6_enDRIKmOzYE~yMN2^5Un;NKB8Lw|yc z#!4WoSgNX+U-taZCz!Xand|z0vaN>xtF5 zWh);MK~3LAc&1Bb!(j}b^M(Gc)oT?COj%1@uGLCur=LNsi$Vdn3mk`Go9*JEI;jJ7 zM7cpM9Qn93v5*Jt_{mNkUHY6LZ>E}r=lNG9i0johP_;FE$_iPYK6{4-RUJu#K3D=TO zRvBwM-9o<-J6&1+@GGJIT>@Hq0xGTq>87aUGat&ZBsrS4OC4J&rK7bycuggMX90SQqy_qNmsweF8*%ZgQQhb)F)bww3}axC$- zW()QeT}qC-4eAB#>I>@2s!!ZFXeQ4SBi{OTqH{_T;#=h-s)P478Q9q;NCqpK?A4DUH+vYc=4S+pIA|U! z`q94%9b8LYZLAB-2QitvlUlz#=A7IQUXoMTzVh8ds0Ftv%CD&Xaa_qklY`>Wel5m7 zR)#!I@8XqUvda8J<3MU<7TT6d7j174Sy!K{i}9RrlYQaDU@~2iiax!E13+!`tB8oh z-OOf)P}Sq^(b}@zQ7wCB4|t+peVp_6aHj+d3qN{NsqintlIU2X9-8Z^PISqjFSDUP zBJwLJn)n>Ae2QdCSie~ijaazZ-@!sF$rnDb zI&2eW3`V@3Q{$y4NfFfTwVZEKFi2cyoE2y`@ytK$v#BApoh`+-A)moj7}Z6kEw*;y zZN5uGBOTr*H}smpJIb-X3k70uFo38_!c8j0#lid#H$~h< z*KMR}Mcfq)J{KIPIHW8Y?C3xe^sxx>5#W8o_~iAGTtFtqV8i+eSHJSHj+yDb_9)Er zhZegumxhJce=v6N`75@fE3FMX(ZF{(S7jAUx1oPqjnYmrP&ZZ|ETYo~OVKtov(OLhN6l8$K z7!mSmXg)NsZTPC{&C&O_aPl?wm*_PpJ2Y;<8-^|E1Bs*QofG1y&`qMsX6X=gjzt2@ zUzh2-5g^uqi8tiWlD7|eem>58*SExd(@cLh-r_Oc|Bh$UL3JT4vz`lOJe7!*v(FwK z7)S&mQ2yuqBO~Fx*G(F_J}m8OYU?v&$U^v%BqW4{gBR0w$t|2`d17l<+0gNNPQchwmPJc54vZ=hLjmyfX)e6~u4~GEtwx5@mIGooT-}fS zgc^RI^Ll}&^qd>{wSLQzlIMWb@h1&=XDxTe5S}Jtzz^QF|L4d3Nm@S#4qqJlJFXjg%uhx z$GXnPc@jM$GyYa@>wY14u|})7>43Ej5rI>xgh-&}1Pu`f!qgcEG(-2crHLl4&N_T} z6P*V~4tGH@{E+w;JE`E}&=GZh?E$0t5vRM-9c$RR*&&ujcUNAiC+FUz?UuW0ZNv?6*1F3y{L1=L|r z#*J%2#99H;0K&O#OA1K*s3v@qn^7?AM}tr7#^G<~ALbuYP3v~3ivGS+V@&edb-u3K z@F`zPbRZL)M_G1`cZ|65Rr|*OuE(6V5zl-A3LFUeR`B$v1Kn6|{B5UdB-`r&_o-6z zM}Wue4$Hz6EDF*Dp=a=h2RSV~LYb0%1b^cO&ev)C=C9)um*#n*kMidPW-Qt=o*(bZ zQ;9kF!hT;k&d)BmMVJHM+ERX!eCUk6+1=-gc%(+ULA^_h!SNEue?C5@J!%0h`SCzc z++4EOWAJLyPW# z$xRAUbKe>o(tb_dsMXIu-pVw>-*;>q(4UoU=P9@_{%U|DLC|)EO5{R+swml0@y5@I zPlIAEg&@bi&$v>S)fzKv&oe(P`0ULQegn`i5+RfkwewLqSDoSAY66Pg2V9*?QzeyZ zD|;@7Pi}a~e6JUAaJU0j2WXA5z_xJNp?DRuBf(z->cVE{w+;u5$h^=9or@qZD8}x4 z>ni->G!m95kAtK8F|^)rju-5b^#?ZFOWlN8Ketb69>uiL9JV$bo>IZC^m=cvR9PWH zv&S|@ZxOR{8?W;=-$)!vJWJQfnR})*rhVHAq*UGn)x`h3(9lfgC93HMk!++Sef^~MH^1>=3nrKb6+4sQ`IvHGdAEN8sFvX*hoo z2OtPKb%XM+-5+d!&cOI@_Cq%4N*Rg|7=-!?A%m&7D06FvCx5;=-;k$oy8MV{WZtD7 zn-cbG8GZIS1J4@>lGQyODW&4>1Hf6Ffa-vvfjuvBcUV?${%sl!{ukwE#!s>4d?qh1 zhah(=$`0?bz7$B1u}Pip)Le!1<0=5x-x3~C#n*NEoR!X(_>v#4En|pd(_$EM+uqE9 z3kNTe*slI5|Z_8h?le+UcNy=;@ zX|Oriw66VYVoG%xAoTu?by4v&cQC;sVvBtIWrx<}+1wQVF9NQ+A_uB;VF7WVb$5%k zMx}${gJl&B#Pjvo(08?UZSpS9?)n-L+nO2;pP92g51qP!eN0_)B8#kZo5IC(vB3D3 zdetOWnZ=k|rYDB;NvHSmC0G|YoM8II2v$j=ciIVaD?{X2bYXlmd?Ct z_>U!4npPX;UXCFxFj_KuWL=xC6s;F&V1Yd6Ba4Bi$Np5)U!|$I} za5DXBcmylWE)&NRE60Wnb6A`%dj5o$_|0q__o==$mGE=)iR_)9iFRm%J6LIEHBcBH&w6R@ zpJ&ILXoKVaJ?A28Jx5Q~KXHDjf!8{eW6K2}$%MzApK>!0zy!mAm9px&Gsk?@(Q4Ruz9yLT~pbM?47^*s~ge z6ApC7^&>je2h`JZ)+h78eOd2yZY$xwY=!rFyNhfIe1szZ>clug7ZjwxJ=)*T zZb!$S4ej?4(I$fpq=4u9QTB`EL8uz5Ku8<3XLl4QFcfnn$l>&eFMmR; zt+vwp*A=b(?=c(*Q)D}!=f|bV)%0g9uCW~VgvjBUbuw-Ku+7&~qVqP|P)6}txPX!l z=rkyd*|rhLNcU`b?2kUe?>HwTF52AIBLBR6+!h^c5rPFdbu4WVz$novw_OgVtGTF@ z7xVoMF5lWdG*jrh-Z|WPQ?8BoCph>Q0SMuA@w5t+#Yw}0^Uv&gon;L4dRzs*%o20P z)5o?pl{U{a&nxy7L=dh6R+obZ+Gjd)94GhWrR zvHV1Oa}t#|XbCKf8{<5;l|{<0bioy048b(gZeSfG*x3qP5D2<#A)&#;nH1LCpQajI zKd)dDd0a2aGyjNSR(pHX@}y$otO?M|*Fn)p7E(6=T!z~d+oRCPg@cw9HjX#ZgbtYK-J*Ln>fD+|w4ziC zos5D7d_oq+(N_h>L8nw`o7A=BxNM+1Cl}qhAc^RFu%Q{%7QMg?LnFi< zxI-&U!t*grPxU|WfcEeGJN19Sd2t>6zM&xt4YYoZF2+k96u?=%H`jU!qwdX}Zd#A4 zBLYHh%VM5mLQ+6|J>><@$G2=dc<7@)YjPicZUL z=Ari}s}{M!O0&!g?5P*z*i|ZHeX_#ZQ-4A20LQV1US0Nvpn*&`cN>Ayo&OCc^{%INbeCtf>HY&P=)tA561BU_ z3Y-MZLOuLx=W!a~PfpH5go#zP(jDs;uupf}+sD$v{%BR9Vw3umXWOAKzFjiZP$?R5 zGqgs(%%FlH=v!nE=`He$bvKX0cj8__E?+Ln`c zfz2=M|A{5nRK+5v(P=E2g6;p|+oWzcM_=_}?65UU_En-(U{x%1?;Uz*{Rf?FS<@OQ z9CW^lAoOso)uMsUh=Oir^p(&DH92TF~qOBg(HJHN<{RM#u)WR|ZEjb~1e(HHt3UtW3$Co;XH8)cZ5ASkMw4l9? zK|{Sa9t-xvN~#S30Z+cO0>XN<@m~i>rP&!69U%3?X_swY`}`Paw%trHwS=GCCsT;X z=#6L{1U5vz7jJEN9zB(zxl;X0Iw3^Z{AuSlZejjxZFB!Vh>`xwfMhUzV z_*IwWH_rFQ{#nGDah;Ry+aT;91`6|@y>LB_1h#=fo5-e}v&DsZ3bHkeR`X%!{T3uO ze#{P4%@o7yUf>sd&Wbf2{W!$)^TvIhiES^3&=tojZb}>a`-(bR97vy^xO|m7TFM0D z-AUSUqGf-vqe|Ta*FIl;VAaX*5$746ySPNkVdD3`75u07Q`!&YQt2Vhk$Ij8x+kmv zIct%R(+C23~op?QC2n|Laj(Bv;ACr@%1~&q#2=w z-^6;g=9dH~8Uy6PYgd!Mqz_MrQX_n<3+efS*G&2MY_oo|O5o6R99Y)-@b3B?O^1*i zn`pyo7!Wc7%4dw~g~|Qf6@mEGY&d0?Lh`?}>B)-B-iA;6mR#fWV_nnlRHgV})#uqL zvb z=p|JQoQ^G$3Yaky_t85}{d7cH-P9b0BP58Jhy3B}z|jM~K|9L_kDu~^Ci%Wm&9&bw z`4$6ZDXo^yTPB?;yFSUarh-M$gh1FP^V#n|FC>H(q8C0{QS@PX97N83qV;m`ww}w> z*eW)70-ymieaifF!XPP>wey2RsfY;rztQ$q;c@gpyWrR{#OxSjW;4>Nr^6 zT|K&KJEtCM%&1Jt^qkfF+Ofh%OkIzwvesoC-}G90E{q&=;{;F8#_Hdp=xv2$;7vR$ z13qjHNa-T2g5tRE{*Z<&b2}4cH80DO`-?c-S-NAb91tQ6xJA%{SWSoR;_{B0_#PcL%N5U2`q zZ9|DRTH2%I)DoiZc<#41bc^|1KisiNV|H(>6a%E=Df zciWU6&G)tLe_=Ct(u32f(;l@8FigHFU(+ro*58D4{C znngif_>o!3xG1ZDs-5_`S81;Y;vqyH(Jl6uT%Ab%6HW7wys7)nPnNDbt`9DM0e_%Q zIrIduv&)T6IZ2GuW(6;~S~Lyt;>Sx~k!xIO@bQyz2bN=>W?dLphjmW9okG1ZrU~#- z0pv3BS*gD2guI9B&@BhS$Tfx@uPdHam_ev%2_^ez(%8FxyNwY~WEqj_O6R^d>}6OD zH&kV15Tl%Fz5~(3LR3MuC;z|)6Rd~rigUXy?`i;f05U}^u)H}6g52;lug+so{Ho-| z_nW&-Hv~$q%!qc5xFIyS8@+@Sv>gic+)Rd^wVR%mp*hj;8RLYe*YmO+9_DLPa^_pU z(i?`XFCpfXczJX)t?{}EkvMG~lxTVsG$T9kw&mwrD$b6VS{7z;qQ^7eMt`{zvxH&A zVfDN3$Ce2_82XP1-j3Q$p&;siU7-J@0cij-02B{_&2@_1y!j^?_w2n}(?P?WfGgt% zTu1RH2%UW8thXG{y36Alv7!7>It$q5Gbsj!2dEiom%a{nw4sSZpl+%8wZng6pbXS= zGoPHh<@f__jd`fDkG_GuM7tEv8;<4IgWql}i~D%pB{us#bKQMwi+uxJrAl#jDMR1!R*}ue)8kv2ZuFXD8&=!V% z7Dp*`RdNRp16TNK85+jrVO?ahe19latvwM?FL6xQtf6Z9`=xw1X|veUQQ6kukk)y8 zTN7#?*H;MMUS$pJW{+RYkgDx2I&o{%y3q1*CxcmAqAdl9N}3s)eB>#a0RK`^{M97` zKvn>N#hJO5n}*1W;Qrz7?Cw>q30P;aIXac{GHXY^qoQI4?*7}JqvtVbqav)%xH?I= zcxB|MjC%iBdn4y!ge8mWe_kq&DwSe>gIr8sVF}kB6^?GE2$w#US zje)%gbncUgX#*prw6`H7M)hy<4gBQ6{DKz^J3MXl+^z;tn25DWIgi~P64|;F2iXZ0 z6MQ$*04ZIZINWf0e&N|WA_uAr<$>s9Yf-}|6x!1pw6QTcPdRHBrEikmMfD= zx9x~`^NZp7x5ALhR5*D(^amzRWpNJkCztpy0LieO%AN3>kl!SWdZXK=W)&5FOZ=3a zPwl4x{=jXQc-8Tl0V;VbJ2kZSVV2tj2YPVj%Z@ z7X5-ozjo(qruWp<5OF;~dkhki4=N4R9uV{6_O!E?6q^)>Uh2S}_kPBrUzo#3w6?fb z!rGZ(YPeI}UJ@q&ZPbdxyrR7KukCkGqoKdPh`DcyQ%5&R%pZe@(1CrRwtzG~3MGnB z@OGwy#*Fkp9!rEp%GgJuwJvYSc$7=1BDO;8TaD5FbEXcA=0(g%2@!Gz30+bvb!%Q~ zFcM?w_Jb}FKksO8LTIzz5$bY1-Ly9ro)ua~LBw15uvUQx<&jcLX-B4IT9BSG(NN%N>z-xlJP5iIv)b^C`aSHucsI4rHkB09*{OF0I!cmghr*kh3mZl+V)Ac(PePa5INKw0W2` zKcQn~$?i{Rd-$<18b*=>(G8;M*5W2_L`HH@{>XH&olgiDM+T^Aq(z6;j-hkjg~9t!_d89n*Y)NoH`-O`@$ zukzPY&ic~w&KR#Gxk(GcF|TQ+^zJWTHU~#5MfFzk0ci<%*MEU>D{)isx?}92;gHL6 z^>d(Zu3762?(6RqnW5trA0XU5Vv}2_>Js^;k7;8s{6r^_T8y>-B2PcKArrx0yfqFa z_6@wb1XxZj^e?cpw;TBGpEgW{8!5{N|A0dI=_FC#qBu6S=34A2m+$euI7#%dzdPVeUI!Rp~#|HQ8>RGlmLHNZGJq;`~7jJ2c&I zp#LP}Q&Y76+s zE>--eWAHbKF9jM>OL9dWQ5Z$6>%|e^Z#X1~K@u{D;ozEW?)xsg?Sp|N=w}mxJfHwX z0<>?f=Jv|PO1&a<8e4LM+q+S0-uYCpvY=`#_F8St z*F7dlUm5$}UnO{HZ%f935Q>ZZP<5yPu#C&)&Cjtii7g;p3I2UX$cJgbEe*O5^}fkD zq&rQ2v>x}Nvzw66z1iiYSM`nD-#fpEskfIAIDVG)Nl#L%S1W~uKNb#l2>cY%_i zEU*fg%ZGNoU>UzeDdZmEdcSx`VEBp&L} z_Efb>B+HXHOg8~!2n<~s9tM@oDoQ;zJ0AV%dUr|9I~*m2wm~jtgMpgOm_E#0g~03R zenc9R7yyH$?18&rzq8bi?esk1_(o>X;sLwSsXeh_Xt|*QYSib8cyf3<8Lp6vFAOc;oA*}v^mxYM<#^5`kI zMyYid;D2muUnRBR9e}ug-QR7!iA9mb7#fx_VY+<_TG{wo{HlPiuLrki`8(Xg3gu0O{W-#C#=jMU z$6T|f;=en&+ zzSpdTi5a#T|Sh6^`(a6<$5dNkR-<&?f?wdviG+c~n<@~Y%MYOy8 ztOg2%s{*#EvoWm0kp8$-v#G1*SJDi_?5ll?jQ3obcrdM7kRK%XsM}<27Op<}xc7S%#?kd)z z52^+aHTK`wk-Nu5S2hhRUhlTPmx=SpyjB*c8c6tiSJL#cS{x_?YdzBQw0HZYuyc;U z>hi9h2i0@Dj}++r&RQK{hHL;S9h5v{1_+3KJ4J7wq2{}5LJNH2Nq+SdxMZ5^(HO9z)Eii5`whMfrF{`P6dERvbl`=Vj7;H8;?rC&>2?KIFDsLxZN zt>QP>lAfdWXWBfQ%sQhM_wWhLlYJtKX2}>u7)f~@kvNV2Qi!`>dd)`VI4ppfnmgQ) zQ8YyzCP#sX@)48Qu%$)w25qZbcR+GPUf+k<@qzKBKZ#amA$Nni06M8Zn@=**Aw@s5 zM~AphS(0bd>t1cc#{>q9$Wu5yqM>LuON1PkrYtDi4xzackTv*Jn&7Otc{>JQ2K?+y zm`Dyqm4=2om1vGjeJuD%x@AFAlEG8c8n-FTIwga<=jvX(sj%JA)0~Lb?o>8zsyaG= zU}fLcoGC)IS!)@=@0Ooe-&cbN{|=k}wBbto(Eqfu5k=%NLE2_5uRrE@P0DNb=-C&M8Eb_mojkO8xRsc&YrLr5G_PV48{9 z3(m4YV9+7cGNqe^$tDB1jS0AjMxCk7Zs2zM_J-H!PTzhbUcuOPUhmrY*a`WpJ?a$o z>AoltqFu*WuDbJ)_E+rqXRDo#Eu3z}pl*sOpz%YsN!qA+2(-mt94{*E1h}-Sp>cz1 zegU6&U`;zP((af)vrlW^QeinlwIV1KsmB^S=90)MK``$zIj^dUUpG?XalF8!9r;}5 zzR|nX8ujVsQHPGC+1~|2`tYR@4M3k&K9WBtgVzhlsGLsniskOfec4BgkXO0KbbX-= zvx}o(Qid$cZ2x3zk+$6+hTMU&%reJwkoC#w7W4}RZ+D$=_pGR>SQ+EW7vo0?x)J1_ z-pRd@qCaSeU*(j)My5!$3e)&R`bWu;WExY-VwFgpvePze&Jgiy#ymU=sTxfjF)TvV zV@HQUUgf(c=WC(6D^Q-GY*9KJcWuKY4Om(^Zf3AI9t}^hafD$K`@)jErWOdAd+w$T zdc2N=95FB3P$%(}T24MWjPLEMa@=qJ7KI04QzgWoVI>DhU;X=mBZU9`RR;V=16(m# zrOzn-F8@k~QTvwgG||N6;Z^3zFLo1pX(4MVTu+f9^DRkL9g}J=_x&O`MOKoU*V5G? z>*;iXB8N05%;lzW_V$8U=7hRwzZ~$2z1C46(20&AM*E$NXYy0i^2d6RX^AhP*n6qI zrmkADJaEJK_vf~8q|au0TT!?=km!Hma!C5B@RlIcaaW2Y8WtKKi)Db9D(z-gm^*q$&C)BPvMxiG4z6N=&VClW(hM*WMq>#{lJrYn3j zVqG)Rm{7O+`vo7k%U-iqs9ffpYd0VS(xA5B>Riz4V|T{fl2>32lnK+*9|)EOmsUK+ zp;E= zSHAgmHcdGmtLeO3|jl-_nvPGIGJS_@lmJ zj?xtmp4zStC}ph)$Gx382B6c|O%M42-x#3Y<0r2!r%cuBIe<1M1W}zH>oz6R*DLlT znNQ}ume~(&>@mmOe-h&VCgbxHtf<~R$%r*wHD$f=zrns#7L~pw_56;8PbjqBIkL|w ztMxOVaLUuibJviE^Mbk`5LExFUbOr@SE5wi(DK*nq+QQ82S0MJ-y>$cgMDQ zdjKKe6-Di)pfr*Zx`C*tZ;2-W`f4LuWc6#=YXKk&6!bw#8T z9NhS@o4cna+xm0I4E0szVb;tCd?7r&WdV4=XZEROY z?|I!l_h&`GHb7W?B)5>H3NmLyM_C=}AFU&T{Z*P6DbF5%OHboAAK#A|&DYsiL`E2E zXTu5J{oS2#IQps3h_=gxd#2anZ*{+PkXxoXVtetSTlw|I6K-kilOXS&#HX8r)Ga@Jy+{!Mj}Co6 zGB{zD9>zt;FYvjLGe?ru!VDiO&(SFGCPlj^<*N_HjNsi9^U^YN2C}*hCL#EEaV5gM z4pU#!ctTArxX#JQ6{8MZQ@4#1F_|eggq@=R&hZnStC^0X$IrzosGnhUy&yh6OG@Gt z^Ar^+%@h^p72EPIMky8Z4HSyeO3KaDN~j9zEiFk<%GF+iogKx*M%Cux z#mZGl#LB73&16ay&E=FR=8>XFkQ5RGjE0zi>HN@4cDvT7%<&B^c z=0sa6wk>x`S-Y_|KjTiT*DG$?V^c=Ta(^zfD(cgJmcr4tHcrf$PACb~-nfSsmB27z z%zrz6J^-W*Uz?aTPpjdxo{&L)EKB8pqY2j;aa=k+BCXW}IT3oUhoJf5MXK=np}Jl$Bh;mZ zR<3!Xh-m^5snP+z_!IzTO^+j$v7)!zPge~dA3$(M@VErOpc>OrylvptrZ zPUMy~4h0RqoR}-v-+Y){v6TqbY5}6J??D^ZiumxXTJ~W@l%wo2l0NOJ;c(hn{9>5y zSOtbI&L2%3obmcPZ_12VVOdN_5-T|dTu0iI6fKj&A*+{(jC&z$uReX)-=c)T{(NVL z67?>g4@(`|r@}WnH`Z%>|pmi9TH5wNT1r z&n4qiqU>4?{p0bbKR6&Z_3zrAZLFI%JOk6GJ>HZ)G97u++0GLz=y$%z45=~*<=+;A zlc0GfFsxkAJmKoCH+(d(p6_LJ&f= zIg=^92-s`P-RYJtsqZYOY0Gy)$U}>}HGM1Nd^rg2x*Ej`SHjV4$;a zWO2yK{H^pRf}{Y1N;ROt>O66WQq-M#+H$$_${*OcU!>%DS{Wvv(b=w>=iY1-`5^H` z-ee05cP#$q>0BA+ZEmruVpXiWe!RNhEdXaok2ezV%)+BQHbHi~vtpNu7kwdc@-71ft%Kai zIv)l|1kmI_80iwl4Kt^SO>AGz40eV$BzU`GWhC-f=2DHy)5YbBm$AGS&y`YYcdV{< zLSUmzGfAQkS1`6}o;ti^X+%eZb3y&}B@pZ!0(Cf6>-=z3V&5+ls#SaEFm0!0zS<1s zNjiT&9#DQ>xAOpV0#EaPPv96fChE_8+uf9PGLMRgAQjR`q!=}f$wknNOUkdP15b7g z2U>Q}L08{h;um#FCB9>mUSOz34~%&F+%))z?f!u4#iOw~M__~>oHgte3S7x*HOzf$ zb#i#+wSK(1Bpvysex$5G@?kuFk8VLzaw%)?ZkBAJ^L_V|{>t&*%U4 z*s7b|zT*ObE&;y5(zLrVKxQHMeD?%dj; zt^yF~OpL4cDB^tK9sRS*09IQF&KAWK^|kzxeg!ER*V4{eHKRtEEO#5T7AdM0@u?=@ zIB?hVfJ1UEf0J@771LD9Qy<5g9$#rbYaNhmv3N!DLmx07kaUfO?!WO}07)H?pD1$B z@ymI|M60Osxvg3NPLLUXS{;M%NQ?Z1vU-XV60ty4K4<_FzaTefHE=<}iBX$Op3Df(f#9tDCX#)6i z5dPClaNNJ^xh3Y9Rw7025oBiP0HCOHfp8d1k((uP%b3!0?+UKWj9``@B|h`Kk|!zT zXE|<$^a$jI^}Gtgx%cuc#dY^gsX~Q0`tq|9;mC9MxbyT_ga*?e#j)~|xbo6MfA3P| zXIv%1xg`u{xQV3Y4d(9XVrQp|LE}Y)z6T7!0Z0iLCBh^yNs}^C5PM9frluf#B$86N z0bx+ZTS;PGVM56A(=0@UF31w!rAdQ=k}+7aW`)8T^q3gEOG+ZX5y0(!19TDizE12+ zG5G8NqFS|uh1VO|6wZ0X(+reqf1C)faZ0l|D_zVE1d|AGJts9NtLJX>A)&~jctjDP zWOap-YHGZow2}E7xOt2B9&XvKBx&@ZG<(zL()1=DI5k`P)uL8+tQQ3g74#$6k6Yft z_B2q1aqSq^EXevx$KP7*j8~zwwMX5naEvl(D5>*ko;#n?i>V6zAa@QU-KM+2*(JVK zVfih@G6M{_0iw?e6jqa>pf>CaRd6MALwI zzo-a8wzNOCG#}pHYwz&#i#J-doeqd!&FBB*!S{bM^Z&`)Y`*XNiql`Yp3INa=8w|0 z8ZU?uNU^T8ZGa8_wdBzzdh!o@1^i!^y#zzn9+BK{nvE!FIiH@+ZQO{N(L=8v^>}21 zg9FaSyd#f1rMx%s3?nPW>YbSL3KhyFBWvWHWuruAesPp_G%qQUj)ChP@anNa$LIYO zH!QPvtx|D3Nl0aS+PLX+zgx6#Ybr2FlZCm%LQ|<%PT|+sYS!UT9lWqH>nz7r+|Z^b+qbp!I$LaG70`01XYvC zR95SdC*%yy(wcYy9OsVp)xGHB=$1ySo~BZzl0=KXS)M&|HrcuVR; z9_gR=7f%mRx$n2IyWGYEj2udv@w{~PotMp>{ku)eF0H4vY^0SP4%)r_UL%&NS`D|U zmiO{$Qp!fVItMX@jy9^jcDPblkNfb0n>mh4{>;-x1xi~>#EY)h>^hw4IE#o@$qPPzTGN~E%H0xj~s$BI#JzN$zh<3j?$p)>jZZD@l*8DZKOleqV zRk0GXJB^J`#Sui=RFD03uKBO~UOQtBl_EU#SbgU^YxA+?W;YYpJYj0+TKzP{a;edw z^{7=uMwy`?)k?^AWWY~VuF>p9@d`KY66Sohd90&CwUSMz<9V*9E1@&9{6+!u>PVqO zFfLZ32Ts$iQj-SH`;o=bqEP+vf<>1%;(X=YfY*7ivE?$hU8SewMjU10$gANR>r|-9 zX_a2I<6I;70xeo}g&XzqOXMM2&J0(DM3x<(vFEhrE4g>R{7oBZ)riwnMoO9q{<1Tm z4YJt92Z^Zs-ZLQyn0WpKi6kB2z^>94yYv23R*$jaWN39SZF91SrDbRp59yJi7ZtL~ zCH{z6r@2-*Av3XcRvkYhQc^uaLc&lwBiLm>Lj}#>GV0hPMn#Gs*@(xiW$S`(4@Ci} zc%DgPiX~$RRdcR>%pmlVI0_|%_&hht{rG5mEi}mVmlxKK<2tbj!Hb5Xy+#I{(vZ=# zk!PtG5 zS3i2Ch~0l8H(6xfJh~$0z^UbG{!aIYUP+n(`~Y=vv|ajTi<%*vq2n&hD_c7}V~rrpkD3Fj{C$vyu@bHX9ACY7lM}naKfO0x5J?q5ftU z)jr)0hC~6ufYu4BW1e!9t0xmTn8=cj(TEj@X_J|7Xs3|L$beGA9STNn1&g)DvP3Rk z6jNm{qpOhLmDB5TxJ>gSs8J|%VVfjzV@S8Z$|j6cfiBb-ylTl!W%6l!J4%R@wz4t< za6KZ728%7xxD_Um1{243pHtAK!trTySgf| zK6S9nu7qZRfn7>~(nLB)pC|w))g3DzV8B@mZ8u&}N)@6G%c4R$VI*15R#w@mV3oR+ zpp@)qQNzGU*Lnyxwv}A!r)x=1&m-w+3{2B&$!nl{^#94CllMq{ASzh0$0+vAs@&Pgn$Mb%+za3X$)o=Hor zscOM5H`VJJP~|l6r_`l8y1kSTp1OZ5tpJ*UaUSDJSJohvilHjQ89Jw(R=3BUYp$Nt zN|ZT%!;TP=aPQ{F%97R9Ee8f|GbNPLDCFVmT3oC9b&b|Iv=;X-ja_PJ^;U%WGf&}a zceLIn#QYT?a6-docyKL$!U#&oTN&I@B9VgINO7ytCx(jDL04Rp8fufl)susjaRWM< zD!7fJU{$^WWtFa`-NUi(|1TJ;{||@<=K6x<|GkCJ|MwrGf&1#Hpn(VK8VQKgvk{I; z-bPbpz>R(Yi>K)is+H_t?fNjOzO@S1(H|tZmEIYk+ihTEn-<9&g!4(3Rgw?}+y1Ga zNzf1Fw315}XpXe|^OuVe4kKis?!K07Y%gm-CF00jpLOaUD;yX^SzvQm&jbA>-mg~_ zrcPLlXkX|HSYrA>BIpj3oil8`uCez5xPZg5MA(ssvS!@GI6KU=+&Jr6$Cb2w0lSq{ z#TL_<@su@J2&IgTi4nuQ3G0ytW?MYC92B6Al7aRQ|1MWyQA)}=H`Zsr(ZzLUS!+>^ zI-H4|BT!4evL>%nm)-Vnp+&88m3BSK-Bun%P|w!G2Cl3iNcC?!fr4+naD+mpB(LDAV%BD|lr0$D^>rz#ADMrTcb?hq5tS ze2tr)l6iCLxUWr7Ha@jG=4~0aJ@}+Gu|ww`mNuie*4WWeJ{D@>@bv2M#pgS4)o^DkcP#5wbh-1pD!myp773p4Xm*vEHy znsw0^Jl7t)woj3b3XyN$W4=`ZV%~!tU(>E;n!d|?gZF|!z~}Jm!e#4fqV6sP|7{1~ z#qC5f*o0kW9A;q+iI!ed*dTH%R6?b*4+NRpYgfMWA6m0xIQ~YneGlvN<831HoKBI5 z@}LUJmbPm6Vh!QJTPh3-r*PQ~uVL)t0O^Ca>6NOIu;-oj(crZV9r;k(_0|k4SZ3L~ z_1h)Z=T%ePHLP>QFvQrS$`&jxdA9+VY)9-<=-o?q3aqhcuNYcV34OWv(&^XOt-@6MY2>cxu-cgy z>;<%Bp=TYdt(=>aj__K_ha5q)i`%wd9aP$$$6EKz{d-F-gNF0G&zWer@te~N&SfE2 zROGSaHE2}N5LA$U-YmbbRj5>`G-{ugnl5vC(Jx(`X!(}NH2Oo)dmYQ;c{ux8o#*s+ zs`dImB(=B~b}sRj`a{>>3-3P$Xjsv1$Mp{GJ~+|ILyNTN?`&Q1HeC{^RGStq(P-tb zm#ST2P+DJ5+8=1*p;bBuk1nKXKBdM(hqJ}eM#3}}o8Ja#_Z|=^0;#l#&~ZZ1XS}Uw zn7e_IRFw($5)qr*Djl)AyrE}JV_L4EtBp?dJ$Ci5Y9GNjt-Mrw zwid5s6#a?lRc=&T|7NRQNNEK}Bve|1uX!FPpDR5!9LiLHWqx(3w&x+KM58@)&kogh z`7olv`?vI5K@hr7?Si{ETR8I$LAC53^MFur#|BJ(!ZDCBUCv8>Uv2GVYa7T%`LxuYC>#+&=pk!cl*S3FbIK6r0vv$?Wt(sLxLnhr=nYrrZ% z)=hA3Krf&b(N5EfYP)vRyX(*0^E_zKbhV@R_D4HJAGvRK&jllQUR%>wwM9^Vs%hUr z>42cMe02TX-EB&<9GC^2(P%+wbPVm^iw}j;+8%8^jX(_zrnwE>=Iupq(|e}UYQ1}+ z73weDVr{C{dw~}XZQ1F+)DjHc*6R-~>YsRwdWF?Qrd*)cTXo=741Hb;MNa_o`0o|m z1#R7HMQV2&x4^AR`ztW{b6W3CwT%mq6$kXdAEN_rP3`nA0hzeBv3>!(b>|sP+2_hi z847F~rThsr|De_P$n}n=@f!AT*l&Y0pM$pyv^d3iyz>1)8;;pUt#o>(;#N zoyF|IGkUM@rS(pgknb1sE3L}+EuM>J=bEK9oJp~lcWHzhZc;!4s=;~Acfi#aPu$oB zdGRz}k<;U!++=ycWc3c}t%t43X6M>{=PI>+iDy-cB%f4xS7U=%-i6szbi=8#MN=kB zT-3ext9Zx9_Viib6Ys(-`v8d##L*``Sr7s%NH%IcLX+_=A2-_ELbWe9dNxyW3!S-7 zZ$MiS8I;<_Z<+C3&%EugKXv_a>3i)w>qh;FZb!qZYwiV4#TOC}6UnmkN8Z6{`wXhR z7|}UiX_3o@c9RkFFWob&*-qFZjF5M3Hrk1@A6G3tqNh;9M&JL6kwb|gmW@Td1UgmV z2U3Oql3NI*nO}1@k=sGcKU0HoQx&hbn#!MHBPO?nY*=FBhV+ql z%jd<$>B&GP-y+|T$ux^wATP^ijx#1tD{wek$0|=(nrLuT=V1LkEKwv;ED<*nH-zo` zpMN5JVM1vFE9lEE`M$+}XU4b*d3K3?i-XBv_w+l=de(a56=?E@db7#v1zPKMz59!k zhR?X_kB1VT=)`8ua`hvIn%B@~ghnK5{}IYhGxS<#{%7vi67RmUO4swt zTaKWPt4b-+aOT4^rqpAb(cnx=DHZILa;5$>{?yoV#((#5MP;XuS19}^W(D$k;w~nC zQM@seX@aYOCscSem70QV&+pqiTxk5 znrq`YIF{!bON_0m?&^V<|a><*eA${n}By@oJpRW*{I`{K@M0`YXx;%$GgFJ;i2}3pmIc(AYRQIsTvC2vEO!b!= zF-DoN*awnAiLJy|W~=gLjQ%Si&t4l}yXSR!cetV5?ip1h5I^wUCX=3yxXVXGsV8&t z<+C{w?_WXZ`?br4%7C%WGF1@m%>BOg6<6oq8|>cIRY4`m(N%??WWC~!w)MwOIe$Md zsqL2*9Z{r)?ew!#$z>*At-`#T4?_kNHR>jf>P|DHd4|#*QRJDB>5n({Y#haEOPU?wO1yJ+Nc%xQ|ZwRe=^88M!Ox*4&s zZZI+>NfJ9wm%C|Iq*UMzy;h`AlSL}WVTNH0iAE>jzwUlD?9gOx2(eONTug%>F+FYJ zciEc3xXNX(X;4rm2rVg#uAKH#IZECM#LRKacRR5RDY>z^uO=c@4H)jfYsB1GfG`en zX&c~rT1OUBwl^%cDiz1`5*3o>b{a?8TaYNH?kO~fecom?%RVU^2qe__Qh;b%EL~{} zi4_ct{!>`vj$_$hHHdt(*J>sHU~sxo6SwMjInlj1TanTka#6`?@2|9~Wtoh63MW61 zQtFt%@?@I{hb+HR!6ZqQOz4pvw6s~FY^YvTqDmJ?nG11B9-HmgQa*@MjZS|wo4}-O zVcSh(6=+%gW188yrD#{6D24L6!aVI}+EOF~D_YFLAhs3E*e}OC&rUf`u^V=Ym)iff zDg6!cv|jyj>!U%EfnE|>Hf>57IZu3%(4^W*wEE0ufNOu?4GldPrpl;E8hl05L(Z7n zp=Qj!QqeS3e?gJLNMvzn!INYzok!hugHuo23UjgLdh(u-%xk>jCPTI7%QQdLu zb+NsyRHC>7l~rk9f`@YIWIL!1d8yLT=~RQMwW{X!`|^ zDurRf0wvy8{A~VvKqk#@%0kIsV+v!zKO9<%$&>|!)FyvtCRm@}LJT=VKEeb}M`?}H z$_#ssU3Jz0NXD0QP+FJgptK6KDo%%9W(ood9U!?f$t3WS1To1R5e>QFsv|(LZwBnq zlvdDReL9t`?0@L@YlQYNU+5@W>g5I8)=n0=-Xrj29~J;F9M%8#{u6r1 zK#52Sl!#w4(LfFZNFlT zxHSdlv$?88Twmn9Ad}>i)ZlfXU8nO7#iV)~^%~A4&f_-G=F_XCmI^J4&O@B$I4N5o6Q{Xkg7kuk~A5d$429q`{Gt7)r zk`Ls$R=MUTnHiJS?Tw*VLyTGerzofq|H;vmVCdDj2}4%$G$r;@?B%h7udEnSQ-Xo< zWk4QCe6_R~nY}3tCI|&mQGr;2a)EsPa)F$NQ}Px{tB_S7t>i6pKn9UFeYF62Hl?)@ zE8r-d`juV3ezGKx&}#&}UZcmwn$=}X;emR6i#p8wtaqFIWtmi+{8ez8m4HLj^px5L zdADZCrSeuvpuWska6Y}k$;@h%)6jC&*iv9GZeo>3oV?Xi7|6@G^_1F>L1uVnV2R=! z8&xG2<{ayBWP#(zFA3mWA;F(8YS;uA!juS#C5`&JL68lcLP#2Aj~5-x0jqV+ro3rB zZN$oul_mF!M9f;?S&Bt>VXYyUOJp=W+VW{|YDp z11E!C*_%bq#p$n{_werm?Gl&E8)eS3U(MwpyI((1ont-%2oMV#a zs3Gh)pf{Vr1U5xLsX!1os{Pl-cB;o!fb$wGU_Y>z`Kk%>v<_}RerH<4zXco-#6s%0 zEI*s0A+VF_-c_t+?1Sluvpq1?LJx8l zVh3^DdLCrP)6QfSG>2m;xHKZ65mc^B-PlWk`%YvgSO;ia(ydBkO*}5p%RMX2S<)aY z_i;C#>xRziT}BcRRva^IuerVK;~ylBj`j|a3N8J9(;~xrB#r?<#LL{$qViwxRu3Dw zYvY!owetdL0Z-Ijqv#j@w{nqSxjG)%5JKMxr|eP=A}eAIP-Iz=EZtSFkthyrJyy z;LZhPA5X$r^1S0o>`Jmd+^XsR1=+Hh#)IquBq92_+bAfVtT(YzXd$+Op21YnLTJIZ zbYN{>IKD)+CTHj2m$q!YDHypwrfgV4mhQD%w>yI4!sy{6A-m9~ek-pR4pFyO-|5j> z9zpPQC=&Tse)#)dTH2t~*Hd!6rzX2Q__$(l+4b*V5Z9tSKQOk3Pf}|mXy4a@2cY@q zI*|x^xQbeemu%g!~Ih8v^z zr35>}oC43Vxb3;Lo9|Rz=^#|Xv3lp+LwEZgw16UeYapn?AGqHJR6%^(1NHa-B#Pi% zjg*Gehc=VgSyF?Cal&<0z{$x^k_>xqzIA8q%*{>{mqG5t{2o%D1}vP$rcoPjbJ(!@^XoLi($S6e zNe=t}FE@DAO03NWbNDXX{taKWXqYH_-Q-Gvv^1s9*!%SF3u7cR^4Ba6jLHYNsjB!2 z`RLb{G!ayjNeY6{&GGa@D{kHxNaxx~lseQv$7tYAXYxix3{S}nbzDz|MDtjFT5W=@ zt@v*f+Oj|@@U$vwlBmwXZ8K`YA~o^tW9nfQ7*TIr{smR>*~2-tP??$pTZbkzyRJGk z{t4Alw%UYYEO1|o1pZ~}m}RtKi%?k=v|$~M2)_|EnBOL7elKp{m#JXbJhc2n*xuxOTd{wDAruI!j@8iR}c)sPE!@MSInEyN0!2G!9gS83Db7uutPP<>fVD0{+{cg+=) z&e{m7zj7NtTBu-TjcLh}8W8i_w?=K${fg^~e;ZK$lG{eiUpz1whRjH^Shp(X)lI(ba{u|*B;Yf2TE*OE?>r{R?|CG=mb*}6;co1(${Z9>GZ zqXrZGS=OJ|0o;45u7Z{`N89Xc$01H&iN-%F>-aMIcAt=KMooCtgr-UIf06bTP;oR} zo7g}Y2oM~C1|8fXxCGbW?(PJ4m*BzO-QC?Cg1fuB%g+0K`|rPdcF*pf-KjIv)73K5 z)m3$$d;8w|T-7AhjHpZQo6&49&#HggcL3jFH3V@}TBr#PQgElL(X5aMcgXfbOus3S zVQ*f+yOc0SGunxqXU@Q)_R^n(#d$TDIa}bf%&H6L)&8l{#QNuajHY0cA$0`9ItMcU zM~{P>msf`2#QSDtY$gtCEWN5F6H~h$_0hjB1A;@hp7`B~-Y%pd%S3H0SI0eTfHlAb za17-V1ekPp0wBR3&QwcwJY7PQTP_+3L#4iku!odF0F`ptDk3Y5{9{+wo-?v>;p_M* zlp(!Qs`Vks&OH()hV24a${}f zxKq>D6MU-ad5T`QPPgP>iq5YbdPgb@eE(>@ZAEUpVsj<$kl4+2X#9o-JUW+{S07caOYmFiQb&NgAgO^eu+DrOA0cZhqoLrtj-{WF%qW3y1e1oPK~$gr+jZ6eqDJ%YF; z<{`)o$_{4x6Ce4dlrJml&zq)CGi=xIwL_TRWqa#;OBYi$62EWMCoOj~sp+PD{R;^r zXK$3f72;k!$$}hhkRBTRxU;if%!trQokBcHzYF&z (j(yh_O`v0tJ`s>K{SGh6* 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%0DBWL!8` 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

ck zKw|#^x9D{N&2aT<`-@r;TUkqRY02r7{wSshSy5K`=nx2q2#Xyl81Wdz^*xw#;cU`z z6-jJ#sb9@wsI&O-?XWWnwjG@Nde+vlIQZg^J0HxL1v%66Iv12=YN_+Ryr`&v<8~&N zTC>@GkK?$SJ6AXe#PM>sHfD^nMD*PeJI=B$UMOTB!c^orxy8~hUR`v~K`K*TWWvNH zU2VHx1^L-*p888yGv6y*7Yj__L`8vLlw zbbROM0u`zpXN#JTZ$;p!imA4Z=0chL{V)yR-#_ebDtlrXm+hA#sU7ag7J#Gl-(MKj zdqfGRq&DbpZF#eQYvth?c-lH5ECTshC zvb$)29~7(<#>3XJtxE_c>}c9s(!%KL>>UpxU6?X_mOPXqrTBb>P z@5uU?$jfZs{l0Pcbawb7XcLyy$0?jJj5gvzg@7Sy#plAtg=X_>!&SzY(c`=}_+^mz zpA@tUTB?TR5TC^UsMZ;Nwd~L1kvXeFi^Wq68fK9yfwg7##cj);@^ z{G9@D=ddSX&l@V|)P47fF_}WVyO;wxk_P-(9X>Qj*`P=S6;>(FC=9xj@C~3~b3h%_ zt%iI&rO^4Xil&OIeJ_D@oB$A#o-Wk)I7l5@oqR}WYrX@DGHCG2}ccdx_o9HzD z^t@=Y26#d8X?i43<$xg2XiWX_;`xG+C!CcGQlhLkX>hs_H8KCPmzqs@STFBQX?gavrmpLydn3|@?!DgUt%$1 zY~?G1a!w8xG>p!$pRXD6Xt8OVrMvao{Z6X6Xu-;E@WyIRL`dP0H(K@sm=jx}PDNND z%+sOv&S#5nw2|0JMjekUTXW|#E;$!|eQU)o^fBL{$=ti4!9S)eWQ=qrLJxs3T-)#D zCuTYDb043?x|;dBr4U)(8}6P#x-?Fc^!41k50%*lq&#AefRVFa zG=3Z|DotZli=6T^M)iXD%SW;!yc7Je3qu5QpO>cIn`O2Jy%M0`Y4^hwge?(-Jlpy+ zu~%KG&5#z*_MdfzH`BY*J!yJ3F5P6mB+kTmJYjE**v;I&!IM9_NJTB;oiCSJ7(V9y zl0isic1iaVnPQos?(MUHBfTWKElsLFBzMJjO2gF?u^P)G!*$|H{R=K7;k4_PU@J~@ z7oqlNetqB(>C7kMFQBe7#z<>x@T$z-??DJGvx8clXzldE_XTg4+pnZ%s&f8CEH@Au z9Xl_nee!km7VbINQqJj8wj&__)Xi0PWM%K5I(rF6e3Ro1yqm_T&kK=inl-d(o_Z8~>uT?%OEpS14&^vjG|^ou6m6J-O(_6o zMgB1|;oM9Stw}+pK$STqp(KvhjU53pX8mV%@0D%p^bkPf1^4!3&W7UQY+h+Z!;=AR z3l_?!OPJ~N=!OJ~kLRdav4pyMok!W`=fn381vSBhB@IGxZI&52^!xv2Ur?mCUO51l zItY6J0Psoy05GHIlSQW?^z=`Hn*X=}`UKnnTtcp02&drxT)y@|`MUzZ{Qv+A*y&d{ zmwl3d!EONfKJ=uDl)W3Sc&L#o09)OR%Jt@Rs7@V{LcJd_B3m8a_UYES?H14qtaE#w zb4q2WEA9-Pcdnk%2Ceb$jp~-=P1(*m&K4D!tqsZL`IxmlooOrxO=kJTf)_A=MvIvK z$luahWxwC_NLkSO{`D0Jt5`WX*J;SJl&6x(m(%MPRoN|h&2C!`71V3fNdN!}p!i_g z{*esQG`v~1flB!(C^Qqd{?aj{l9g0Nd975_5h(m13TFiGiuSS1-*a$F%x&&(%L$Yu ze+IxDKu=^5o(D+F30lWu!C=P92{1GsPlU=KmM%>fl~a;VW0omIl%Y2#W=;bD;NXCb zAD9-hCK5^E+fLXwQhZ&0*03!3B$p6@n%N*Qq z)*=rm4?MKIvkDq3FT?$c^$afj6I9 zUbOB}l0!Ccng~Zhq(}q=<i>=1#Dlv>}m^6BS+}b6&`3LuP5h zO)NvcpLkD}xVTz^AQ8{QXgpUE^79rRIns%b(sJ`ynPNrbtfCTcqNPa>%TBQqF{;FTE}81|CnD?wc11Nmn_hLwIvIpp@t14v#6+<`e^?O*hKRshnutKoFA2z{ z*vF&pUdr*eT*5uiSiS$*@Be>C2##sTtpCIEPFI@o<#$1E*5AVOKSI`W&6Sce?OlZ+$l$~vuwpbOcY(Rjk+nQJgY!r8#lFeoA zima1zSu5I&TG6=tj>fvoDa%hEYfmm!PPk5mR^vgH?9hS#0@Kol^?4ABQZ|d+ zck;ZB7;hYOf*M!cfUBLsVbjZc9qgGT()Rk@MQK@mFQkhk0(UL_wl&aV0YzV+(R}z} zQwjge#z?1?Lh%y0PP)xr?KkWsJGM5Z53_0wr0clRSxSY5=<7j2+=j88=~%wk+sTFv zdaLDrM5KB~O46C5fr=x4`q)h=Y*R~b|DrP~&JJVDZ)?e~8)Hk9QbN9bYmb~^LR+o* zq4o;H#nSRqt&Gy@ri%4WR%^xej>;73im7^?=5QSs>xt@$iq!@1JQbv2_!bfE9Y>;6 zgQ7fhcN)daW#nP3zxh&LXHf}ehkH`^rl!UybqaEHj8rbB=EcX-;_HTDtMfU^ItcBlo+-swlOA9jmZCxPsPyux|$={f5CZpdkjY#50K zeGsN>JR=+qrl}Qm5GuRuM`L}tc1`%P4^5Ra5u=H zEAon;#@{wI)f#~<_){7efqZ=91hZy1%pWlgcw}hlme=&k3hNL42OgKbF zDl2F~FDi~F3x9{Ns5Cea_axKO57V2vFL08|G9Sk{IUbE;!itI-fy13c_XlP&AV_j& z>p1IXxihRRZCc(GF2Xz14AflmemFL}uy`1rD9x+PmFCk)sgWdfYWPt)y@SR3oBZIO z?C(z;@TAXUU0loz^~cVq$DV~G>g;mqXaB&SiMZ~U5)Ed&3Y*hfO~m;zYF|6CrgBx*dCCIu=ipdrPBRDM^}Y zBD*t3sU(>E`yW$Lv9c*F(t+k$0st61yJ4Mrm9HMj*6)H(p$<% z#FwN{ddjD9d&@ec5*}#vQ@)TE_ugWGO1)VgFqeoAYyCw_xiygzQI{rjMO`{mASBzThlSon*pOP*y`PmEMDP}Y!WXkaHr0FUZb21EBA|H}*CQAPR z4(3Y2ct_F%6P?0V#!=b_iS%H4d3pibZz)c_9H=ZAlb{e7pe~Vkb2J!D)3GjDn3}&Q zuo8-PWGRyBj?qXaI~k<%*Cv4n=$Ul=be+G!7l-m?p&MkL!_h+hK-F&pNhA!bh*6Cz z9RG$GPjmbUt2#GhP(=nICYmTgMrC9y4v}P(Wr#PmM2pbC98RVogE7&IWTM%xSM@Kb zwu8%}G*dH)o2UUjO;2A61RFDUTR;V2>?d^`PS!;oMGH*#G!>BQA%j$cR<6@8`WYaR z0y@q_pO!{9*Kb2ZW+Dw;XRLME_Py1mF_3ciCpf9y^ACDQq8yb|o0Fbi|Ze|sr%be0biPY> z!wi~GU@y6YiyfbOn%;RAy7hAS3s^#E>f(k&FIDS?O#{4tOLWZYdPXQ&B&aGaSdO$r zYhzk3)s%$w1@%y>l{odKmz(2a6X`sLNsmSt^YNr_(er=|7;}~&O~8t=sO35Jb?A?_ z*da9kC}__TKWeqsdRlL{R%UR2w`MrtG^_lWT3C^zG-O;HMwllGPXrT37GcixqKa~b z>V%5qbWjU&5{=;7uOHKCE_6cA14#zTu(q*wO({k4U$K;BVq|4XrBg%QX1`)8cMENI z(QRM%w}Jx}Qd8mWBH(c~Hx*zreSPoa`9V32~^R;LLMX)bC|;;c)n+){jw zQk>R^^%$3~7|0PQ&)|CJXRHMI+nHw?wLd_ghCS*8ei<{jHs?Qdx2Uvu-zExggs@^{l-5X*`Y0n5+$$A}K>{^yf{x8r#Jw!bWs91eh zla~J12;mQK-3`DotQ4h&-oOVvq&^In(LDSy~bKAD3|d37Q=OYkS@`$AK$@9>l9Nj=MdJ;6teb>ZN8yS>ma}4 zZcs=mr??Kzq!~C5M)frbH@U%oM(d3R8Eess@Sm-43k?&>x{W{`$|GK*i1}S+IFvb` z;|a``QXx>Ps=CIUK3U6ge5ElH%IgxI@{lizCySLmW`Rs|oLWKG|B!Xk2+Ai~&To58h%h=WJ}*9R>)sd8?V z`y-Q4q7v!OiTcI8F`drkKHRpCSUD<@GsP>W(|@E$_qN~s7iVt)9mmcr44OH%V`hq( znVFf!JjTS#%nY$(W@g5inH@97%*@OTJNLft-~IROJA2-4X-}L4Gay!^b0#ZJZE;StdbY-^@&OQeHRf^%<(g%G(I%B`+;-aZv$Vf<$CTb zOXh7|CPH$%8|Uj7zFPxR zZH-#*mbsX>)<$|;XV>bTocf!2;QM`3E}x~`+Z0faA6J~+3Y?}6`*K^g23a=mFMOH? zlMfCP)x8kUY@n!+o3R_>vgTsmA)odrH z`37{Sg?5X~wcQKzwYA6goaiG_00@J7{0z{Id(ZR-V!p4fo#1EqjX5=5_;~fVy-!)R zw%)y3+B&yqAE$haJomV;wOV^iVP4y5DLyz5UF&%~ACH=t@?Sfi0Kp{ZLDVg%LZ=p6 zTU#sqj4aB7ASa>KA1tR?8i>&0HK}5#wco%7KzVZJ z*4EytPi(FKEze(opMC1|il6=5`Y#-1Z@1p_M?`}1Y}(GOtsTY)g39~@IfrtGx{H%r ze2U+`?SBTuXSaufKBa4L6vD9i_V?y~)+d?|>!(v2bG_0-N*>cgN(|FO@^w{JRp{6U z_Jai=@Hb14OWGz3D2mhzzu>D)_qgnk`^DNF()VTo2lrv+15^tgF{zWn~8~UPEJD?Fq-dh{38vimep2Wp$>#8t5<`m@QB+}ZN=*EJ! zZ6fM~*l{u9l#ap@S)cUA;hlZcG% zmWV>OZQr4U7}EFdi;cK>^=~nPqZZxqTqm@Et@wZ~3dlZL7{`EoWo~_5Wo}(2xw#}v z2D1Erpx`QuR)E$lL_$_wLg{OanwnaHnwl5)Xi|Q$PUakX@HH>3rxb^TgoF&b4lOOM z5QIi}cz6aX6!vL|goNy|1!{XZoW_enODPC?lGM5o!n6OXs16E{k^B==T3Ut-AA|v_ zRV@?q{{$jowZmM{?TbF*?o}^%A@cK!moORro`i>IiKqbb!9Yocpg08;6&2Nsvalk) zlO%DS{KD_~|3IPre^p#s_G~cFcSp?S)UfYmd#r}y+*ig_*qe-we$I$xOF(md^@Y90 zuQs^F0d=Hf*7y%qF;hEZPbZJ3<9t!+mbZD0T?-?&=AXeoe*`108y+$lFKe&dHWAm% z`nDbN+57_o0+n7{ToSqN{qpcY+h%SFgK&XpkEk;>&HB4hOp zw_=naW`k&PbBj^(BAS92GEA&`vAO4X&~ve|*jVgWo_04k$v$~2|I9ww*5n3r{@~SS z_FiFDv-~k?#=+J#EA#`%SCuuvc4v{*$<_xD=wy4En}U}=D0W*}zL{9JerlN9Y4UYw zIokztXGDXl(rdNIY^+aQYv-}ZY?#zB3-nsQaM09uloiZUP=f#EZX-KotD!kWTVG|# z6zC``^!Ur~5L18Ca)V0+SVgCC^-|Y7KHuC#t!}z z{++9br&(IDhv)LG!Y!v0fTt{TZqjmj+}0*@zCM+|MIcsaKuJf0#Tb1qPJWmtiH(&e z4Zuc%J1YP+MUx#Xe-~~@6F`y*1+uGC48{$%MdL616Y8HhvQ*)1nh=sy@h~Ga_+VtT zRPjI~$Y5ktZdoJgLw(zBGyO`3Vh6xKtx0P}=Qzuw9<5`>z?P)7Ukp<0MfJfy(_1zp z9$``K5=Xn1CIiC(U`CgfR}M4YeqVTX)cTYw-&F0yr1Oc;yn1r9pZ|D@xVj#w|2WOM zn_0F@mH;HqXicGQkgvC;dwI`@zg+$?c9GJIAB1N5WmJ!gkD07p_re^(=wb~re@&Mm zE}qyGe({}AU1#%mDQj|tUDL8!IaN3QZuGw5!ZD*J%ad6ibntAs$8EOuA|z>2rE8oz z0*Q%2S(LL|lVy@Ox3;yLjMv44?daQSlyYx&hgOz#^6QVqkX8dkoNy}_fO?dp5UsPE zll7xkWWIXyA^(bz6)un_?OvkjUgMp80*mG({Do{xCXQp;gx|HSaj_V)8^>-G(M;i) zx5%hyqKbRAPUoVI-!{PnKK=_a4DPYy&lc9MuUuBe9;IE>`cJ!6W5qnRgEIXg}S+s#S9yL7VU~nQBQ|s?E_bu#{1!@d3 z0b-kZ%7LkO6pW73#f{ZJ68Bh;RW%w}E&+)lt@KWZ{R?FNIK{DFNJ-Kq*n>z;F&fYq zYbcs^=d+vuE~~ufV!!A9@rqpr#rtCw*hp{!$acsh!iq_xTY|{Gvx0|7|0EesQ;u^f z4Eru!OqTlVn+Htg4X(mq+K}>Ysl%u(Z;LI$5Jc0~+#07noh`J@ALZ?eq@#L6_l0X* zh3&*C#QOe3e*G!D`5eXhY;@(TRh8}V)xPiz9F409?IL3_`4UuCP(QOGF^c?E9;YCi zUMKIqR($Ol8Zl~z+epM_$!}h@L`UcWbp4{xzvk*dXUn6|UxJJav|sM6;5Oj`2l`j_ zDW9m_J?L0wf(EJ^-wc~WETrFN=5 zM;Vm!ICI}-O8#(8Fiz`oC6ou~b}rTp;Jc~aEX#EH5j{y^Gnh7DZ;Q{ZG5KGIB>}=} zh_jglTV4e(UVV2WfAJJ}sjGy|GG?>1}zhM!U|CmAl2msp8asPu#V8@^5v>L&rzs(|I zPp`ZPs~!7XnHqxi%AkL0V)M7Yz!HRIf#qaW7QV`Ku}{}zl-AMm-^6u{$-t(gmFOt3 z0y;aH`ZD<=Y8Ory&VtfnmoGzRgr&QUW`vpQE!;Lz5KY@j&0jJRR)aL`SE8XkLID@8 z4^9;XCqtmU=x2w;F3yuxS||6&An!O!KX1N*P|y10!D(UA36xrud2q-jIO!vnoiWO?DMVO`7Hs$s3=DH{a7w)I*Mf=)ti8**PglXSx0NEXX~{Nx~4nfr+hn6njuR_ zWfyu$xhJ$c(pM@=QDN9iVPanvu-KZcn5=3!GKU_bM$8T2WiUR-Qel->FB_ZK1IT1n z!BD3iB{rWN&>l`;2Ug{9(YgaQK|`*)sfwNP2$N7K;gjCZ{tAT0x&9_nI#CN~X?}CR ze>!#*O<7!jl{FTImR3t}9W3KRG>@PS{i;ObC0+3z-6IYI6NPlBNv{0cT|%g-CMdEFp!PlA<;xI7@Wm+z0N##yUx$0a`B zFMQDwom}KOroP*>hUN7>6+`r>mRBim_<`1wDoyQ>*DstFC6*$}mOCf7G}MOVXI~#tCQwMx(++knK!D zy~jViNQzc{yJttS52zGN&|6}zkqA-fi2|N@45+eyP2_s<13JETo1PLk48F>2)wXVW zZA?lxq&f)snBRJRBs3K91P;)gk7j8*$k|=k@Z`POy4f*RCvSx?j?`TH!0MiNCAtX7 z-MSQMY^uF0kqsOad_v>jy3Y5e?fY8k(?AFpv;)7PPURje&?p)>w5j zx>IP9qH|gdCMB#3I%BLiI1C}BQ51o5+F1E>IueBqaUEI=6eHt}Sou@RAdfv6QN`Fm zO52J-^n@e1jspu(+gK+;#S+_bPA6zVe#s0|$ ziZRd*aC(U#+xrrdX3Y>%14LBuAwZM?v56!~8?o{%8OZIBofwokx6Udd?Z5PJyP5us zogB3=F;R;bQ*EwPz4MV&ezMbt9( zx9x0T(;p(HM8r?)g^H}^ACnzLs8qJ0T_8MU6RYWwIt>iUreGz$`EKU6`s|blYtdSK z3)5m`v9D)MD(uFk%KO+1Cg!~@vXHpq%uk(Z~=(U z`T&%(u)(TZkdmt6NH(ddV=$>~jL^2g-uV{=clj|;M=+@Y(NG&t4tj#hm^1mGuBO$P zTx%_l72j(~ACU^`RiNv(#<&1b{U-l*kA`AI6-)XZ!zN|}iwiuy3=8*^8qTTTn_gwI zUP$pV9djFv+UlQC2Y(v)0 zhq^1RYIB8ZSeXgb@ zGiZOc7)CbD)5hB{xG=s1PW zrqB5wlp)cKaSbAu$%E(-=@HRD2YuY_-IR*_8A>siO?`W@uL;}x=umI5kBjw9yU&8@_7lDb=PR zY=)%N30zS#`{+}3`YB-+)-AjNN2E`ag#z3!K0A;#hMb~GK3*3IvBP}>?VeiSIr(Sl z_g_C<+L^rc8TB$_9Q>57)*qa`e5FS<0zNUj2)pztDr{b@J0R=r(wZI7z?(ywaZlqn zx9x&GEmtL1K0Y|}Y{XDOp6I9GMo1@;oW>kOslj^g-qv1vWBiRfKh9X?9)?ES*yBAt zx<0Lk2hmTfsHwuaaYt4mO54AD`}H+{tU7nd$KAPH?>f``W3z2o zY-0MhDZ%k@ufmm5ngERKxo2KJr}x?nuu>Gj49c=Ngln}V8%(!eL4b>e4+u$*6?~q);`+``s0w(61f--S^Gt9T;s}HE( zv(hv$aN-q=-v-2Q#i`p&-d!J(xPjgJFQ7!DIDcu2`5P)2^y~B~TjhS*Xdo-3hDRcw zaYrxCwY*(O=EARj_ExOqB@Jb&2kqT}bm3)pB!_wU{{j8|Bdlri^708ZiT@Rh{1@cq zivcu=qtuDA6llNDeu4uDKGqG*~ng@qHdyNo}gC2U|B|+SfSIPQC>tF zK36`XPOGX@P9v*PWtl`aVPQf5!AznV8 zufRT2UKkc$q@!*jgJqzx=crSh93dxL#vnUSN1?6}Uu9WTp&FhfBl}C6L5{{mt!~~@ zTfI!(gtkyJKE6zcL8C%rgoaF8BV65bo;@-JBFgm60Ap8O|KuAF`>3Ko{rU`!MBVx@c}DUFq9dH~Oj+8*`VQ zG4J24AH!4$WuPhjD$lS>5K+ajF{{e1wr-0?pu zb}1AcTa59E7a?mAt=P_tN4hGG`$LQd(2p%ljr$Q~=f6eVhCznsb;H?&OHmn36_FK9 z&tFs?_&TYyj{QulE2!>PZ=cWI2E3l$i8@`TT0_@FMTGUt9~0IDtGmlu`@I`I`B4TE znx5{mqe{Zvrbk`?!~^TwW@R}bb42Mr1mpJ#uHn6%<%g?n*+brflzdf#M;j(Lwl{7z z*iv8Kdp3kFITA{YX4U9)Z?&H@nSOhAK3aLyf4*3iIF_`{_q=T65FZ*-dI&1Sj3_8* zr=R}Vzb9NfH~4evN01@N2>B&?XhBQBQq!godk8&aMNF4b_fwFo+sbLEXSKs%!1uA} zqmdx%Am^d1U{m3OAqH#c)TBNKc&pQ#fqnRHYbqCYW4GVgYT1gzf@tO@n9QsczMbfXYjIo@v+(H0OS@BDlQ&~-I4QKh+r6sbAGXSiM!(<5H#T1UOZ{> zIFEXGeD=k$V{|+2x1nR<4_}9&BRY4g3JU1|&Vt$!DLIRF{p+XOd#k~2`3m0h=*r3p z-p1a*C#hc#VD~ANo}v3>@#HzO(_U?EKDByuR^rg5a08OeOzo}fCTdH7J8$38>@8J3++891cuWkfkHz+En=s>q@+Sp$ zU%4zCmX z(~AiQ71HS=tgZSsqnH3wiQPPpR_qnp^vvSuvYJ^!=2qFiVbJrFsJ7zHP8&@8tHf6* z(HeweOxBg)e_GB0<+=CGV{Mgq0NBuR0CzkmJrBuNMLy+)EQJ%sUG*5;F2^-8&D zM>az?O*Q*)*h3+)q$`BU4ne=P48(EO#dNd~>^{4e|DIIWq%pb-q%*Ou`X2;S|5qlK zaFCiq&(m*t8Xtq#@XSuiS*W5W0F~7JlnH`fB8^K7-o;%B3xX!(O8-Tm#5P#m-7@Mq z#yy0@b)dw{4RRcpr2`uL(QwHs>?KW4tUL|WjCAoE@i|~1P7zbSA>0IfGiV308+IPH z0oK0+o6==&3ReEkrT&c5)p;rdD3ouPX!n}23F(iLjdBfGk)~Xc*zN^L`xmrB#)i~4 zFFzxgjhpSxqhu!tRp#AE-df+9tYEt^o~XU_m8kE6G(3+#W4c9CRC9U|x++VOXZPPj#NMLOCs+CiXZ<#>#An0V04xN_Iz{tpn(Gd9)RKZOd5BlgtweC zXq|Asp)-VRER1&a&WFnGN=!?dgO~i0KOsz&uS}2ctR-3qjfwp!Q;G=2uXw7xEsOR9Z|&1L*Ui=W-EZFR4TQX73Ka%H0}Zhz1jK&nfgvV2=3bQq`ON657n@kmm#}ePF&$mcO}1KF!ZTAR9pr=H?h>- zZJCvV&cBaR6PA~2UJgu1g)n7}VZ|oC4%ZNlgG0Gosh_<6UMfXqtmIAf`25J_W){*r z2Nx9bjvgd+2U$vvX^m}l58%y(FyOMSV#2f11)|ac!D{G{muQXmk6laK%JqP}+OmHt z7z#2OOWW!;ye9WHi*9(jmrf#fCFZf>US7Q1{;Y77U*lA4Y!d`ZUaV&6!N4lq)?wOv zMV4P`DS`1$Ib<1B2lO*V3e32R%*DWDAy}5PWK0Z*Hunt3bC+$Ks^wFdGB>v{1#|%f zk$s%D*1+8cRP;BCW*8}7dWex4Q2I(WfvG$lSG3bw{d{mC(<#O3EhFum6Ip^_YVC%0R?saPjgz*Fu~AkXr$kLW`DG{jMwmO+ zJ#k0GA8dnknG~K?@ND0=CverY&hc3x912&WjK*|9 z{zUbM&UQfS9vWqut77@gB0Em&b>E;@Hh2e|)N)A%LWF6c_Qw4u6oTAD%8GEchyzUZ z^zXW?<1Osv&c;X~v^^GoR2)cfe`XwZbMxuHc?DvUKcl|j;j#aJy5tC>{J+Y9YGZ+; z5^6tb58U)fS@rqdy{|p%E;!DTyQ{`$8^WCHSyLDr2O=S+cr3Xr284fzgk=V#ynP7_ z%A|f+910IP;Vuc0`*2Q+m7pBJr)f%2VJ1lzmZ* zFc;c^d8|BgR>wYn6xx2U ziGU^ll52y^q7*}xLywPOR|rUkRV^+S;b4W&kDY8vTbSjY|Iq{BT`_CY5KKq15xmtfknEM`5ke?D?kY?T?p0_HzYaeAB~#&012kt;TxOoF7tEM_=vd zS@BJ){#3)9AX)8&+LWW+ulgMmu0tECy?xJQU;Rq2i5&AvZ#}V{vMh!y2C>3Q=dvt{ zA4L^}3|X|xGhAa_cJ&wYF(UFG>TK-*e#I&DQulPTU&YKasJ+Hw(DGQ~%xb-{^0-jF zaq^hV+Niw%7&#dWa(q>Ib7MI%k`>h%>88X+$~D5)TZeF(G{J8hP9&e_L-)vQQx7HC zCT{_PO_I_+(Xp~_Tn|E0e1EpCh7p9wAc}=WgC2c2sb^GL<;jAv>?jEJraw>X0o1;RI zN9@FrQ|2dgPZv259LVXKtBscNGeFUH^DCk?JiIY{+WXRn8TKg8&CW+RK|QgCqpxPo zy$H<`;1m%$@W0az^Tj4@{qjH38nbXqUR}RenE$_Nm@#es$^aB8Uy)uMi*MTKlo-+- zg`Mip(~Q+@8QI|Jf2iyTLWa(G-*rw7yCt|;323q$?EDux0i*SOIU_XAULil6;vU!Uw!r$YsTdYN?+6EgoB=|BWO=k{rmX7e77GQ6`!Moanx=cn82h-mcx&kJZQBe?P zw@bUPQX%vui55qIXEV<-S|ZaeO*EvdQN1z{@zCV5tO1kz`Yr4lFg^LmegKmX9u-Jf zvfaf^NpgIvACW287XBr(e!hf)XbQt<&!zV2Am#v-!xt!7a61TZ?6&N`JQUjrwG|^N zJ&FQ4V}Ivgp!en4XH#HLDbUEJ<5(%JZ(G>NEWt;EieXhAs%%>>iyn_qsb9d|<7Wo=tsr}mBZ^r{Z zK(COCB4gOPBj()AN#)tUHdX6*wj&Ctf|K%~PjA@=`y;l2lQQ!_?V-mi-q?tcK%(R~ zy71uI{KRdcM%DZS5n!N9M+3$EE9}B(yN@su$R2nwhRkm_qs{2(^3z|7Ak^K(aI{?sle4t1<~&M zXG%EiiT79D!e+TI5{R9CbZw(JyVO98me_g+V3K^f7Tyd2W;lw1K95jM%~j7nZ%%J5 z>y{1coMz@@3cMMBv9ctfm%{INO@Z{~?XhPP0cI>?uzy$#+wSAr=kVY%6p$}8eREn* z5>prXn3^yH6SXsv#?@q9j>}Ywny?O|MwuVh;y@_l#XT^Z$3c$tdfnh+VBRNK_f$b2 zeto0THr*9Tj6?b^7>xayaSHBNZ`Y;nS4RJz$dhfF+SkwJI2ZchEFK2o7;SxrSr#q@zWxO#`expfusM;MxYHzW7=*Bz58Mp|&rKrjoMIuEh;Bri z{l*W>>QhC+ebqOPyi&Oap(As*01g@FC;ISfYHotSFsMCj*nRFO55*fU&@Z@h~ zgO;dtn)`yBFPn9n9+$wmE9};2M{gymi>E+}b5TIJz}9D<96uR2`2*}C1@c?`O%L3A zU5(%4$c(G7t8a6&YajzX7)o#}J%VluG$Z0>9Q3;tq3LE7+c5g6%*qe2%j9+xNhU8O zXa>DVG8HQ4PX7SJ%5N4%>!Kz!WgRm-ih%S7O>Po910JCesAYs*ah3m zyuO1$8AHE9q1fPbYvQz^)XaJ|(43sg>wNJWDJeYzZom|rUFBE9=13h&MH3;ZE4@F- zhfF=`1C{>#ZCN6lrVcc$QGkM@$v4NCX27HFqN)KmGxW{U0Oa;S^uv2lO{1|>A&Ek; zCHQBB1&jQ3d(Dm4y}-wx0XqSV{T5UnTku2^3nsA)LZ3%T*^J6E;9> zquY1GF++Pmy?g?geHD=w>NonGF!_6*ZQdh=G9Pv4P=>tqG35q)a4f-6thdQ`8`92S zk6Rtcwn0(;p3DM`YP>kMMrue$0s`26unPg-;SIGkZ@!PHV+jG?qB|Gc1$&odVcGRO zT*297NFbMHJBTl^>cFrbgRGG>#&>}yT`BHuDOcXe-Cy9raHm+5gZ;m_lx1@+_Vj6Z zv#GXBOt?l&F?|Jw-~UBJ)WA{>CWVto);9U~XDqH&H%4DKl7J)Dilcx|QVgF95bpMD zr)z)(M41ZL42EK%+39SnAz6&N_WSIK2BK8cl3#0)!rgbFuYSwz&Nt8ec&^@_;@DKS z*!^M&jh9FI^IJZb{PKYFrD}g#SUhz(z4B08`Hp4%fotC~2)#K5JMW zqEO5%6`iPM*{;1R>8}Y1t+D|HGp*4}7EqYdEePa1it$Vg} zVb9Nsg#|w?5n|+(6`TZv)FdV@R9+@Nc$+!cAHE0RUjpBwfNcE6q;s@B)`kW~3hpgL z?oB?2Gm3ip zmwqxd@A7ibQs|zzOsSAySllZ@Q=@w5KkIj>S2MqM$Y8L~(2#ovBYyLNhAhWdR7B%t zwmMzpqN!XGAICkU6l!2S8*c~N@;%YWbtd>H)=q~zMta}8fx%VA{J=kDBiruAV}Z-Z zcw`rw(DBK+4bRIbvyL4x2{|0bt~MRjuLXzavi8N!t(&Xu6<5u1xm`^P>2K&o;2ZlfXevXk6yCY&rK4lXmZ7~q#|`JiUQVIyYOOh>(( z+eTmffvy$7n2M{G?b%=4k-i@4+@cOco%1QRAZ)7KHqBhp-nFOn?pkc-Ur7VQ?~kr{ zeQz~M&RTxT4%U+S%JGz;9`?$@#Q_Rr=56O2V5v|KFuou&X{M7&zI-?vmsBy7!B<9E z^|_PD06D~$j64qYxn%{y2}NB-<5K6^=*csj$g>5pxTIvabVw%4!qw_?qi+r?wtt#d zOwIj5{ha+J3mi4re`Z1RA~<6lmB{KT9`4@!y^e)PeDDo`Li@~MGTpS_|3Su$MYB;^ zZ}m9)N2}MV?a-7-af)%Wn#oRy$<7fhGG>~Whsg)$-d;s6Kx{(TJ%2V{bgaOfJ%%ZD zVS!fDcQ39YsDAM0$;7a(2Q`+Nfyz=afPaSV#_v|-x5_5u*Xa*d<(3M$lyy0 zf~gxG?hT4m#4Qh8LipFw83jz45G||s4_TNq_{TFMi*Oaf=@|WbBQ^4@nPoF2u&&r* zcvPesf6^k#xkw#4BAhQ*q~qNk_*wTyk|ESLF6X$dX=2qQwPUdls$Uq(P>z}+ z32hu6jd@6^*S)UVWlI7U<&4EOBQM2xgq1c=t&H&AZ3?v0xCy(Bz=6F;d z97H6mXOF7(LvA>9Cx|0wF4QCRTxH>`FTJ+<{?Oik_1aP}xA2uX;{<(?lJCKJUps#y zMAf)*5V=R49|<_(gid4xi~oQXt1+wjk>77Y&5tZ13*m^MjFEe?pI3AC%0|-m6b6ZG zL0oa2k8vhccVLQ&wrUax30>=V*(&(`Oz{I{j4R^uBH6iGMgG91`0{Z1i6A>tEb&mU z^1mdP8G?5F`WgG)mypj)DA;vyYCb@~eu72-U#{jJqT!5Rq%Jm6o-)8`8>+WI~Gn!y#D|^`AU^N zia+|n+8rEmGslO$i1wfc8(nZebTS%KJDtnN8%RzW3_kavI9V;R!-Jy;7YDOe3@849 zW;aqkmHQBnf?F(_6;*<)q50?e39d+-(YjeV=>7X|SJpy4G%37@r`Q&K9^2xTU%@kI zp+==p-AK#Rgh^bs?HpV(we=b~rU)gM!=hn;PThP}GIk>%<#CKyLKP`So(X&Z(M$$zw2@9MQa89Y|i1VhS#;f zdu8M5r^3Yb$7m^zZ3hVo5h5bBIYH&1flaE}=6C2q%pa?o+kwuR|2!_*c22Xs{PgCq zeW(czrH;G9cNrH_nK+8Aw=SU-t>{7%_Uuq1VcqNsSpqZvnsB}%!#a(-k;WlSjCNX! zBuB=Wd}W`5>N51e{{k|ZYz=>e;lTCSVNK~{V|REYBOH_mJN<;2y;&~uw(XhqJemB+ zi}*W+>N&xU*~kJuGaln{MkZ$7T(G)l+{$Y*d6NWYRS>0aWsM>b&VRvNWIBi*K?_6V zc~1Y?d+c6=M;va;O>ysA1OBIH@m~g;AXK9tf&lQVa|gZ0 zS1oeqkSX_3T`4=)M`b+`7mB$Q)zeN`R7@MD`dV)^MXtEqS_pcXJ=7kD8T1j4)s*9oReH#Pw+ejJ#PdX^sIY zE|UR^*t&WSE(7~7k7B(5p~@FLyYJwdZ_2_18c;Yk24i^%`G}r4r4rPvVq`GLN$b}T zPtN#;xM6XduiidQ_e-E592-@<*zRBsUjc@8(D_&T2&0F_9{`qxTPCa?`v&wU551#4 zTcE)^@GVfmf`YpIPJd*N9YBDp8?}I0!wf|lD-<;S_hO+S$HFLc%$~PSNGgm>&%qbh zyNlN~hxk`U^umc;bBd~7N4tlO*=-wi^!+=O58TAb{bHLgE3}2Q)?LlkpTe3QdJ@gA zH1JwfygwC%CLFE|L=5n)~HLo_4cB%QpK0Xn5)%tw)`-AAK#%At2 zZhucd`wpIp=}qo*h_W~Y5Fo>XWkA@&_fWxRZ)U_my`l`*fY(Tdpk#ZlHgT$Xd6)l0 z)S6{FID04Vbh#fTOwBzJ3uJ>bh5LXT_v{Tx{p6Bm28P3U4%Mvhlgu;Ia@&(6q)8*aeRVG=fTqi@t^! zgH<=H_$OPmNNKR&wh^To4*bzo>$~GSy%e0DeN*AV8VvdTA<)4rgty@?0*F6p4jB`) zG(Q$y5)5_9cG|pir~-JQ1rfZ_e>{CoY4gFpw{IAhshEhtar!w?={!i6sc++o9Hxin zWydXl(HpfQ(dPZ42OgJ?N~Z+OJf*xpzr5q;+QjW(xkCGqHw~II|LtslJ>EAiZt)MR zc0fj1?_QsD1R7&3oLL6~P}Y4}`@Q`uCL?}{A5r?M8;6He=Z905L~I=Vo;qJ8E=1|3 zscF3IRAS2Mv;lWs{fk77Apu8A@~?s~vD4W!6KAvB$6?#;0>kgsCHIu9Aiq}+edk$< z%%UjVdh4%*s@{cFE=G1GEwJX*){q*_qY8S8ijM|$&P1NS7v=e6`mEC_MHC>?p^*^G zUGJ@`30`o3{7-Zmvn7PtAwicqFuzUEV>y-Z*0{Y=iKskR1YK*fc0_7?R#pXecd9Qq z8@y0vsZNjis`vi#D+bykxMNV$?82afrPBCdtsa);v<@#)qb=y^><{KbLxy&0;Z0Q; zy4r8=CF_}vKW~Xzcoe&80nh0p8K2`Gn1wB1#2!`RT>r9Ca9k{|Cnz7X8*8NsSrpzV zApiR(*%8dE&M$I`S$qaf{f>;6u+PZ)fBKnXJma2uq*qmMW$8I&un0lJ_$;y-oQKKyWR=*Unve>u zUxq$}AFJsy%YenU)!(?Jx6CO2BnV7|x&WeVK6Ia6*pu&9(?zs+*S-YxP}3cJyMD=oXFXdQYld3Gu&2&dm>jQ$#m0ay3fZuJ zWF;JU-)s|jhF%nCitv6OkL_k@S>8Og>{wo;#t9_x#t-CzvV~jw+Uig+?vmfEcuP2X zME(vH{YrI1M%nw7S<|PG=1e`)I|3vjg6ixPF=X|wI+izDV z>JQxqEKSAOiCy%4N3g%N!D`&_o-KR}Y?vCY$QjdJAoWv7xjS%1W!H8p7Q^leC2<J_C|G*Ufq+pp2RT=0=%+XCmP0))1)GH2nWt%K9IXth~5*|Nkzl{m#$?>uJ%{ zGYH!%3-kMYO^7Zjhpzvz`|IbU@a;#%Z^bP=M-#}0FjIE2$Yuak$Y}R_Hul^(0Jg6dk=BbaI@LR$H#kT>RH*Cjg623{EKL0Nz@G6 z?hMPorLHG0Uk!bVp#z(ayS7w?b&Sy@r|vl=1iXSi1>|;B_P#xJEG37$xWA+3s-i>S zpynFAzzd)1s0N&8zfE^=vQQIAP!nApI?D-;Kg{6G1XSLBq7?WY{sN4Q!ctoG6Lf{; zdeSQM5gN*qS|g?M2X|t_|NcEUj%@9{Q8cEsIk|HY7hozHjDhr%rE!yuw9F_7OV4wDWK=rvLt}q+9$h#Hm4z(o;1v8C=47Pd$h>La=|9*guAOT_N#qP zqd^Vm3%;XBQED`+gs>lXBJSWW?7u`ij+eJyZCqISWxF)YNf1P1S5;MOkeCxNa?3sOP6FL`gMfTn@L%%9*&t$4&ZpAtYTKduyNO0d|*Km7U z5RL**c0_c#LZA;a`@rpXFMK8C$A&u!8>kK$F+i-`drARWm5AJu`&}8FKc1j4j6L=S zeaqMPiVwz^{EyLv3QtT*(!{%~V7pYweH+gY@jIF$B@J^{!ZTCD-n8kHo2;Qz#qWN& z^U3v)AiE|Y7-eP>W0&pAHAh7N$;rsXD@jlalS(WJAYK#xljG$8`i)I|$%R};uU zc5Tyr=hjJB6uQm5xH**=3p;KqvlerOOc1MI+jmDOQJXe6JJMu#Y7T_`1-$GjU*yMEpy0KhuWUI<0CP;Y`G@Z*#OBM zQW>Mw&QDHup7IRN1zG9=C9t)0WQ`0$-%zg?DVRE4ow~s4{5Jk(ZW?0&5?8cmqNMy%2n{{P14UbSfm=LR~*)4G3 zu|=uO=u{^v484y{ZWuTh@J(x|g!_g?ZI%98@13}~xclwmVL#$U@>i^0dO5;ld(|zu zK#<@H0hz$t8q!c5pI`xUzs4s;%3UaXEyAAzo@6vw3)mk^LeU3>0X9bFkIU%(v?`V= zAgzwLBt21>=S=2LL{GUX6xF*-_i{OpR3d3@spCS@4l`N1m|H9@+oyFt`Y^CEKVQ|4x|? zlrTz7pwx5WqiH?kT42PHS_BDsSLo!-ovN~GXDnLha-dK3%S1;Jqo8`=`t-pJ;K=D7W;(~oZ3LliL^gzAw; zhw5cUFa*6!2LJNcYL9$8RN_Z~?PQIMi|}t?ZQFXs11gh}fX7g(P(M2^Pd0~Uz=5`# zxIW)|F38OdW9a-Jq`h@i9Kp9P3Il@^G+2P(?i$?PCAhm=aM$1v+y{4e_YmCO-GaNr zo&3(Z_n!6sdF!oL&FXHZt9I|I+AYNi`t^OmZmAO>X5UNBakcxm@24BoB*n#WiVSxnbpf>EO3mvBif)v&d^^2!&ZDYT3 zw+6R$Tp@S}ED5;w&xRKdtp{l(q5P z5-K&`Yu$sF9(}K|FK>e~&6ixD4c!idkD5f?Z9ZMiloRY=h7bXYiov|{!?^+Nd4AqS zwcY~Da^_O-R4)_pX|@126tgfw@MkzG1688VL6x4G*GuZQjbE)FwAXDzllpXU+DT$3DCC+d!_$# zEpMg_w*h@(*x!^5u(i!^$*S2rxpY&Kwiy`cW-R;x02DcYgUH6^<0-MO)4s{TCoj15 z?}r#C1vOGMxJbc#YLW=;m%2jo2?a+ZHke1$Qz|*dLOg(bL0P~r;F0yFGY;Nl{z?vz z5;GoG==GWQl2qe4rZLN7Z}Qm3*2}m2tgQT!)j+d`d+h3P3BTUvc~%}h;9w@8Bk|Lx z`9U~`z!iYM$yY#NoyoFI=INi_Ykhm1u+$Zvo7#>eb>6xOgN#4s!OY|gM?A#@7d69c zx^wNNZp!C{>oPNZZb0f8OcaT^BCwlLFZc=ZKkxDXUtWvZI~l!S^vZd9{;QDKe}vIt zAA85zE?(&FdY5*oUi+N3&CF7L*@x==KBxuuiKaGt^VzH&Q8z%etyW52TFeZTso@k7 z#e^8f?O;><>Vcp^Q?@sg`WePlRvLy_rszDi>(7+yvfv>CjQpiE?C|erce!K1^SXcs zE>+=c<$wig7%9PNDuR-OmArr**ucb3iz=!)u6Y6Pu$8KgwTW&r&7%x1Q~>Pwb()(*DaOM zD+LU-XLit%b6vm~<|oM#_D07#( zkUA-T{zl!ShN_0D?ki8rwUKz!Eu-Em9Jslkl@@r^c=PlvHv+MT!M;u!7MF@3jObk6 zdkE~lMW#$f2BEtSp2SsvX}t+87XL!rYTW-b*CqJv3S=LB^5G!SkMr5|_Q^_WZ}KVa zGa?iWj93y0X{nN)MC8l*VD?|cJZ@I)LaInU92zDC!IEC3!1+J&mTY?bV)<|%!U*=P z7X!zXzsX=X)V=APQ8%t(!=z!?2^EJf`H5y{+>9d{?p7D0jX*Kb=FIAi0#2cc1RHU&zlYXR3?>CWo28Y zlCf#~!u!jBf@WaAKw#B3npeAyE)?hY?#np{@Aef42RHeu?#P2hRT*MALGKBf`-uFC z{`J4j0|T9-1Pk0}{H5>J)|JhkWbjTJm@U)>$~}d>it0q@pYvgcF&4JJQFHg*cS^Z` z>_2AJwRIz>6eObH`+V9{6g$~-rsItg$|V9c2n#~ZFbcBWEp@^U|2c06y0gV>n8wKT zNyclu#0&gJ8nzAg;XwcPpM?&cU8m^XJk+?6m`wZzcX4@#GpE6lO3y1Xg=Dl8U64o| zGPDv3-`{N&h4h`NHR%V=`i0?-7rU{}t9Zu9oo95>-~fO=_^aaMXY+3OsOt$6Ge}v$ zq<8AkWF5hEd)OrKXpI9;VdF4-|D_XznMU#LOW-$XhkxD_WZx+BFD>9#e|1~idv2lU zK#PhpqXd{jXF@hBAJkcg!n&<67Hqw+Y(~63XQ}tVh}3WrX$MMy?{s7cQizvP8$K;Q z7{An20m6S?(fx}J53)OX-r5AvsEQSDaAB``FL^ce|H#}<^GzPHo}Ohbp@E$wZkeK) zq7hhr-_>Jq<&jirSrOXz-AYUj+1rDN%r z zTs|5>5)hXzRd~?RpzxM6H8qBaK;T#Z;P!}7%5z&;jKhdLGI`J?J}33mST*+5_nu_) zW+C}c0(+R2`&7GxKXKUSXVD*+0x$~~aCeC-5lvZ)pdK3MrI(|U# zXt^aY$my{_R+56h1@3pj!t|bVbNWXi1hC!a8jTgzb@8EyZ$+@AyCi886c~JpSaq4pa`8ARMqGihU@ZB3h?~(KAS!36VY3y;ENP@9h*U zZrOvwgsx#X3=#j#S%pu@0W{7thkN3v2tXLXi;}7FFkYoxw)L`~GSl35UAE(Q0gRUc zJ}fh;p{5|J?a;*c+;gzV{V_Er4mJ=x3XOi_$quTl(Q)D-#85Dr;s|Iu=OMrnh${I` zh?3c)7P8ZBiWaf;k@DJmcX(}`_EG1xo?o)$&C1(?Dv2r$>kX7N{Z!t`igE+xtKyjK z4FF6vHe~%-W%l;GIs_fJ`5;YT;h+nO^udh@XQHd3z>(-xxc~DRh~ka#;wt6CIT<{q zJec1L#pO@Zz@49(AN};EUcyU20VRvz3@_||9s*yn-LX~D>y?nz@xzOb4dsW&Y2(66 zaX}Ruyk5s+0^+v%9?DJBY*{H7 z`hNrkhFOdGUi)-IBt?6La5IMa}tdTU#fe>*Ouw@y);+`!)=EC^ z1g=Wt3kw4Pe1fqSV3!`LcTZ3%|Z*0lT)YiPpi8*2hndN5w! ze%UW*9{mTbof&J21ZObKX-r1^N7RsJ4W@F?8Wpkz2V($lSr!=1z~I_{9Wguv&b^}V zm(zLsxRgwZYQC-KQ-BmWc)KzLYP(|1S2Qwlss^!ZdG*KM=fp zJ2|5_Zqhs9#DUp#eTV;P@{JN&kP=$5mAp8EQ9tcR$OJa)1XkcqWSDL?YP+K&qLc#` zBDiTRJ$!&&^w(#F;Ku#eQ(&D7(`>N%z&e7XE`mY8V44ceqP7AO{pVhy4^q;V^e>KxWv}j81dzUL52KQYc zxUi*}w#>8vxD}g{uiV!QS{gQSMXJBud@1d}c(Jq#5 z{fhf$_kuRDOpI<%Y2f~7tUR}+;5$rOyh5Iz1UCd8Wx?#g*Z32N0L0;V5ep7pSsi|r zhi=WM&cnks+waQC4UHuQjnr1Os%51rVp88}hLu%rGc(iG63YtW)60|ugUN{D;b~am z6JF-++Af_enti$+)B@U=nR})#yraT$nlr~^cEgJLu^(+1Acb6nU8uJyk+R{r zsOJ@Wvu{B}i)`aRbap|`7lRjax0~544)Rc*_7t}p8ME$>Kl|4*(T7dvKj($6@@X8o&nsayYz>`@P?{qGMwyN*nHBGu?0qp1va0 zlI2kY?IBCV^JlOq?pJ(jR8c&R98g9Fhnv95cko+g?jv@y_j47an{5Gmp1}3Z99gRu zEp}&}4|6!gFR9qfAxmMt#*-a&8QaF;>PJ0e$>}-g=d;nBg;usp34jQVAf2ROe1e1N<5b1@PAl76VSfdk;!J=wqC!wnQ6rUiW;f}fhR}-0z}lL-r_S{C ztoWeiw3^^DY`w_TlRE>kjyC?*S&ja)%Ov^Ksav$Qg%-INOOSH2;M5JFzDrPP&U`C) zXtv~!=dcU0#rZVYWwSo`V0S4LjmTP`pgf~`trwfg7(24(tuTF;EzxUn!22%5>)tD4 zVR!jXNrm+4c7@_VvT3u37421iNDN6l7$?4ytuVKQG22l%B<(}EHUYYeE_wqy`;K;M zvD#~ef2w>#W8(JaXJx%T-RL^VcWhbqmV46lkj}uGInjeIMfydB0Fh(egN6o^1Cm;l zB;O*(UZ&5z$zq?RM8GOPne6@py-K->gBT@=j%gwih5zuk*fyW>>K;F2#BC&-Y@aK{~|%S z9B^+H2PBRT0*dB$x_q?vC{I`=fIH(42F;b@S-;GH9W9pePFC1XpWlLN85A^s^ zfHn^(u20!cyuYBNyyS~Yi_Ti8nH1Ws3GOyBES2UUwZ7q1Rq>1m9$!pa;dk+*4mvP@ zWJrxu+9e-9tAxt>ClyL5YskQBv5By;il_VT=Oro!=T>cYU%l7~aRI}s#sNIv5Nz>h zOF#b#It>wSU%3?xwJWqoMiqKR6BLEul$~DF8yk~R0SAL60+8tA2FkQ@TjwOZ9yU>h zHHtD{ zO*hWb{Mik~@g8T-!hp=D0Lh(!!1rfff|T&TFi;|blR(}cBUkyC76)kIu;H+FKu^25 zZdhI4CA-&}I3OJQj@4v~SN}d1JZn%Eg~tVF5mG`gWQF+4sj+iq+ed4avM|!&;rO`K7z=s<76Op)YL9%)`;jB3$ z9-$C^yGTHI_^4Y}@bjo0IDeh+&~o2F3Xb85Bg#GxLl?^@e8ETb8ZhsplJ3QUBvD1^ zVd4J;$0^uD%#bi%m7@QC9+`b*xzU|Zg}5{jmXcCKC1pGSoj z5~y&!h^?RPm|z$Ax*D3H%vaiYReN64=3Fr8(@~|*qNJw59R@sI}N0K`wM~X-#L1dW4(Nu^> z+O7QZg|V5P(#AOp;CT1p2J7k_VSiw4z3|-Nvky6~pm$FCpf_j5PT5sX>mUv}7>o!_ zMLx2$?_S?EznbT}!Wp0NI%FD(Nhr2`axAjUHriSv7zu(Y{9^QJCx`q+MSL0Q<@e{Z zNsqpk)j8v$fbC+l!^+lcuEl<|Pa?nm@X#N8WCGZs&B)l+eShHUk}`MGBALo^02fsX zo&7tszK;f9;qSToc2kt~5dKoc1VRcbVxpm;8U63ka9G%XM#U7e_4ieA6pBND^lF=C zoQq%=bzx2#ma)>CW&5~kV zu18UO^lb4&60pSLOums1k3-JRD|ie~cFFcCNdOFzXEcD>ov~NP0)toW=Ih?ohPOxu z6@t1257cqeP;gR6M8c><*r8f4a^AMVZ5Xp zeE&O9F({{o7STY;wt`#2JTU-f9W5l(5v4_VMlSMH$i*be*paL(qLySv)#Z36B_Sj0!&aKN*esm*mti0 z_-!`auWq)7V1EyQa2);$vI25i4Y|m>NN(z8pOHyp_NfM$23b?kv2W3$k-!jzLL`Lz zUlQ}4L$VTdb#c((mm5ESfc;GjfFA!QA!1=7?=(m9P$ z-t1`s`)xLMZlv4=K(9eW07R8U1OF{jJa)7^I!J7r!hZ($7pEkvGLC`;1kyqaodUBf zf}pK9$ztC#^LqmYfqz6X!zh}l$LyToe<7^qi$Mub*Ntttbd8f}w?2|m@cQ3L^A-r&PK&*Cox!V(w!))T2Hx8J|T@X3M@T)%x@ z{93oYRsZA3Ll*3;zUZFY5L(pC8QyrH4KVMz1My{=B|<|Ncg=~WJ9&2=FB+hd#g@@; zj+%k-z40b#gu2h!Rni#;`y%E?Lh^y0z)ffVfgZ=7p3*IAd~sDAc$Mi9yUnRjT#Jhy z22w;i0=B|l#&tYPxjwxw*4cm zou?0urWqXHPs;eAw5OvOlvEDl2EPmv(&a=6;@~LlbW6=H_Osd#miDtO)|M)#7>s9- z9$pqwZ{LBL*MCTx6p~CR9DyhvH&8O3*0~G2tIO=_ePJ{ZYz?+_@cw$*F?AQm z7M5=W6iQVLgZl?PQukNy!>p6l`wq=$`@Q{6T>O>z{0yt*#CxIxIB@k5Cs~YxzBZq+ zHdVXYuL_C^{l>c5wdd*z#X;SJqr5+d|Lfrh1qTmXqJH;u@hKIDYXdW-iHB4LAq+I+ z&Hlqip~`{{4}Y|f(E9q_Ylc3+03VFoXmpdFKanI=v1%pdpN10zYLSS#1hYcNOU#FG4K7%=&NP88&1959^MCKNm}k%Q znerFv|Kvdcee2#J(Ua|TkVP#L>r}hb#GWne$fjzXF9qYjRHU4TJG3!~Uk_JPQ_~|! zNg@6HiD0*jMl=W1jZ82E75uv^6=+E8ctSRxj#{*iUpj0CLDn>rUdNjxkkUW#MC+u` zMHp|a7js7++rg7WzyM(TW24EpHvRf?s*e-lCwA?rdnh0ZNByEH6zR^(kgp8T_W7$I!x z`56Za^_~r)Az4Ecsz3UMSH7DBvM{Cr?zF=*f0a{bhhe%3p~5j;gCAVXO6 zk}obZyTeUFa;tz%sn88AA zy9F_O(S1%@q&@VhL%cih%isayNyRgD&h_t@w$5>O+K_;<>bEyf|w9gQ<94^ zll2b77!9usnJL9QKZ{RS=BtN!9Nb5%3e>yxu)alwzT0qM`rrnN1d49d6NQC<#~eDN zix_zZl=v=XZtWRwNoZV*D1T2I(b;Mq*+%zNwE zvF#KfVI}0|`}hWd9Y2%Pz050&gY{h$Mmf7oqh6TUj0BB?i@7bg76%JRg)~N`44eP^ z^R-#2CA2fnQV4N5gIrgvjc!Q0oruLJTLY zo^W|mKt}a%*t7Oyhd!-~(sjN6DThsAcKH(}{~_LXV&_Bs=f%Yq@{ezEaR!%mCEE?z9(1tZJJ>}c4FHiOJ z&RAJK2F!9S#S-G6%LX-25%Bc5e9B#w*}QnCc$k+wdUo`W^G`&@`X?D>MTVC~S;GybQoA3(?>@7UvEcP@_xS*U@;YtG{ zJpU;)G!VSzdb@5AlwvEc(oNEU}|Liw>ub=%MUhX?98mLbafDe%UTjg4^;iXIZ zQF|B!j&z+A{aio#%A?Tk*V4nDlTAoM1hY&6@#%vbQ>F&)t%8e2I-9||V+#X}sS>kj z@8rdY*(Lw$N+d$yy?kvCPbc%c|??sA3o2e?Uo@@4^ZSF{5jAE^;FQf zIRy{@)I$kTEl>!%pE{3Sdf?wV+AwLZ`*P>JrQ`be%HPNASOTCD41*(DK|%w6`o26T z5yAslQL;9>S%z}b7JNS0%`z@Dx#CiRIOB9_slVT%Q?>{c5))dpH01lSNF-kQx)nI-Nr`!xqiOELfp?`ZeBqCICnXUkSqo zMH;hpW9INu-XIv&LlAo0Js3ISbr>+yXvTH>2>Nl-<>r1Ir}VYOS2GAkSZcP-P5$zI zlCkzVdwdkzj={O%h0*fqjVjl9H}AVxa0kFV2b(o=(T`8x40?6Zxs&ct1jTaBmfK5Q zA3gImQc(JM3Yugj1zM7feS-T#)5{H7loXQfJl3t0I>g>zzm%cf0seTsf~z)A}dy4m*Btb`32SK2S|MShp%k;)VFalZ5$Yu(g?| z$XxIn0-st6@7(^n`j5)-i7CVLyF>ZY4BR*sFVxkIho6)7499vk!-;!~RNx53Kb`wT zDNg^Ej|WzHanWF|YGd0)T<~sOp6j(wdt}sWv832m!j*}#fwQ9JSr8Vf^nu|0(@lz_ zWP_I>i=tA+MZ`s9Q{ju`aNwAsDCF4stUTCeDd2k9M%;gmjR%G{WO7$N4Himg(D zWsVh}9E#LF3h4|8Sv-I4jt#c7E}gJw&cst3lyjYKM&c=+LB%Imaz~gO%??P+lbs>@ zSsZVovSKR^j-(qroDLL_;w(zHQki>WSC~%Z1?86c7K4MESlO$tAdy{R%*wG)KdHRQ zmj1Q49sUafm7Xd6t8sAzUrsb17@uTus~`zVFark<2gg^>Lu(LvjvFZCl#X<4^PYV( zfBN(z!I3~o$ssd(J$#+;*CmREJ7p0sY330^q{negk&8q`2i1NS>^lC{3kCkGs=l3P zetPtPF7brwZDYwsJNThBdMnmO&a>#N(NH;$;7CFEvrahZEtRVHj`_1PPExlyLBil| zhZ&{yd=G@Qa$>>1?gDT9QH7vU|I>B<|5kVa9K)!5Bw{$jVDVs2KixFx)VBH}?&!99 z|8o=)yU21*Jay|3u@$CZBOGJwgo&=K6r9+}{3|?{=DJ0dSU(~Yxpfrc4^5=OB>qio zJjaztm7bq@S-N!u?9o4+J1>T!RG9cro%>v3+QO#N_$2-+ju?BoD>r9lpwdVk=kgoZ z(>qDGkhFmh|B{aT!YG1lhrDX)#zQ_mKJuOZyFr~dLfaTs9j%H_xiw-$;}}x{ zCs`vxHB$UI!k#Uur+zZ4bhvOGw01z6MMFOb zzf5pkdl02S=P`Sn88n+Qn8UQimsS$8f#ZuCuDs2H;|dm+7`v|1!c;bHA3ve1iF zA{)(%?;`(hiork*H?im!ZHgZTk0sXBW*V&2z`OG2PUcisDuGTEgJ{F-)2kB(XQYW1 z{o;dk2gnCU8{oa0;2SeS{E=Lz6n$OK{oFtFA%zyvcSChNZ9SzE^kh?Nk!=Y%F$eOe z9c{b~Sx!0;uIQ~8H8L@Zt*O8Jjk`Dy7|fhuCBDirc(UW9b3`$1L@^!7N?aOGkDQWw zrrtR&jhya#2K+FZgwus)*f|8o5WAp`=1IVe32!PWrlcfIe*P}-+b3>i@KyoeD<3>0 zMkeGvL-~OZOY&`UhLa$m;fF>_FH@`r1kkzfX$R}lh2%u60m>Y82C)_^Q$!8fqI*e8 z355uE+6^wdU5&4vn8ugljI+DdBs&QT-P-x zU$4!-?)+4*w@}VM-P?V%6_z?h8{4BtABjO8uv98zs;QGxtFwfe>(%~3(~z7`9BwNM zU&<6`4I^4ErirkCj8*599B-$Ue9WfNpiyhlC=P5(OB|&hE?$;Xu_z~n98FB8mEwVC zqlYbZZ@-Sz8e$3@0BD?5S-o;cG)wNtpwr1vZ6Y)zAJfT1WN5|rw=oH?q~@&+Np}EV z%Pg)M28J|6bhH)sk>DDKWj0D$-||zm%=1XVcInl?>}RPnT*KY4~`3rY=Y$;9`^D zqiEb{N5FiS8N=E~Fr_L|lg2#2WJza9Q>KgGks-&5CLgy+jz2DF#*;~)l{hleCXW{j zH}U!TrOn+ACyx391cr;-sG=Rysx%t)gTg*HsD8v=ZlWs-`LYr`4!_ z8#OO-;gu`nXeE_#&V3nKP~g%o4M{X&Nka-o`X7nzeogS8iXiO1}Eu z75$~qab#YMO#rINljc_37+NYk^`z!nom8|Hf5Y-kLwFbo%nrz+-(qRw(0#rkT^^S^&TDT>Gkeh zHq2s}N;+NEQ93)l)3k@H;gb@S?I)+;>tU+ z`89`?wDbEa<5;LBsnj}FpU5q83lW^9cVOS$#iS-NnZMgdg&PjfP~@X8j;`<^ZBmdo z3jIkbQe6lUSd3W8jkp#Udb6MZz<%>-duH$GZp;qJZr6OH5RHg_S%^`3N{~=9aaURd zO&ycE{KNrYg*XmNc$`*^&dU0_?penRFCf}*a*t4Kss%{qs};ZBCv3(D5ym4OC`Ivm zpX!@nNXR@OU_g*&Vl5#411d#7zL+AM!#cEE({NQsT52WdrQBup*|&$`5B_Hto%)9T za|Mj00kMmS$gcB<$YlU%B!utJn}rGiA;Tu{y<6e1QTs(Wu+#2>e#1fK;$OUa}MJqElFk?d&6AM*l{xZZwO!P;k=Nce1*;cU$RcUJoTtlDw;Zu^lu8 zpP_{K5H2c}f?Ne{;p|x9^r@o1m?uXnJFc0Bi%z}g9~cq`CRtA+?v?1C={HHRmsTMH z*T37mdCb+FRq9PIuLI}X(-w*~+6G#7NDXNUdVy4)rEPUHQjz)CNC*}2TLX}?LP{?C zVuultEi??eysb(;GnhM7ZlS{2{x4%A&MCcPF*+k|m)8-#h1Bb%o64XNd9}oi(yJqd z-9irkTfr06d(~p^PkUdDP;5|)ioR24!y0{J^7AIVl5Y#jIfA01Dj1PTkj2o+!JKlY z5^KpVR-8u}*2;HEoPO(5kLOaf4jGugsr&^T z@FOruC{abK7(hDTfcai8Mpy3ttH_ubBA;e{LyXE4L26 zJd;HOx(~iMR*)}ol8A^-F_VnD5otnsU zBFJBbD%WX5gduoJInCfgbu5?VNVZL-Ql*d@X#|5Mcr2HdN_GT;DVG&EB#E?r~+#{L=l;u?pi&+{^ZqhHy?>LPIqu?$ zs#7%86?~ZnR<=~Ca4Z2`M9&76krg8w^q$+4-@8l1Vv(S^vDM14v=nxA!F|R~L{;UV z`6{difgwsJQzQsSa=|}T=n*?Bn~!(7v$EUn*9Q>Xlun9FI;K;*k;Yupg4)>9X)r{U z@hJQk3qMunut!5yTOgAPTF->)3mfM$M^msB{wd<{|HGC#B7!SvE}Zg3&=?Qj3Vf)c z<6+{i43KWRh)mI1T#kogF~i%Vh!2j9CF!)K=rm%{mm)cZn@Gtrg_n*oS;&~DqMXPb zk~2S*A&qgh0<{uN(Ln7~s-S_wQe-S>l@6sT?N~wr8KR&fi8tf_mM%vvXatM;E#P+% zh5v75oDx|v;_w1y>hK(9#nf~tG)b!!C@p0|&%|5jTg~uUR@&)$(z3Cb(p2ukdBSN& zOPPU~;leq1kvJ+R%%9@^Lzu02P$Y_b7AWG0T_T$ltB<%`5cHke*Z z4g^z3`5XjSW2rg>-FU^*z!Xy>3}t0lRf@*qJ82y`NbtEae-agfwTTcxSKN`tSEV5N zH6Uzci6m{93qCZI%X^*moqC=+OPbJ<68r;e_gJE1)ukr#QjXdrSmx= zv>1h0&X6)LOejejRuHM637(v_q!*9{nZm)6g&tNgkqfNslpn&B&5DRov0@_EbiqA2 zaXlVEdIo#WawQC^r;|T-8AhfqPO4B}5&EybDI6^kxNkyzpFT4s{zMP{uiw6KW0+03 zXojCqpWw#L*26ZNNvJdb)2E)a-0Z80Flg}42gbhV#Y^b2VzE}&Zmkx!DE;*tHf9uV ziA;S~aAzus=*xW;A3d;$-8RxeLx$4+eScBrmwShBwxe)XznK25#gyvP3fH8cg0J3d zhhgi<%HW%M!O~lY%!|j@ zVHu)hr_hlRT1&{~}jnMP%vZ9v|*} zepT%DFbgjX&BAJ?GC+LZXb_o^T{mScpP2oW2ne+Xdlc$XL~}HeOxPa}NClbA^pk=M zhq2yZ+x}Sr%5rUMWY>|Y>BYOE@>Y4fD*}NAwf8{T=o!PyPdT>qEpy3f2d_hHb)aPV zDIJd*#Hn9W1T%-oZzdGn9PTIHg11i_(3}`zsiQf92Ee68*?xMqMfWc>T@e?vBiRK) z%GoRkYt5@vkunk%Rn_^?0DU$H&Y2J>Ed;xYjd;W$?hnD3f4=Z_zNPHXoh-dgTvu*e!T2HUV4?6@$ScM>qGC|IR>(%H%$taiwR`5wi3;p+-TyYpDaJp zbBNoa?0oe8;Tk^Fs}gxZ(Sk4e^h=QP0P>|50tBSq4eEwXP>IXsj!^jn`v+DMrAftF z+E#V{SgwSxFKYmPSQ)f0TZSPb{fyxIZpx3$-5UOi8*|wS&6#4Y?{%kZTym2;IO!oE z;Nx)N_{{b82^LprWlTZ8)i*l1_(8YMTR+3{`TEEGGo1iKd6L|Flb0U9F-GZ@#?293 zljdtRDUYdte16IP%4;VBUIJ}OWbIMk)#1nQlxp4d$l(Vzg3a>EN3PA3492YN;RoNZ ziw1=rnSLG0$~%n>pNYP8r{o^@#iQFy-iL(CSJ3!~Hp=|Dn_shlh|P03 zk4#tK$zCZM`lo zh%l1$YVMJTObKjd6!f(Tydm%Uuii2K{yAwv}#5&x;)QA5A|)PkZjN8m1FC5CAD(lh8%6BLjG>qbJH1 z@xosK0q1tV>GEpg7=FRIa91U2K)#+ZgODPqP;zxeZe`X}a`xWr9p4hxI`|L^V*Iv# z%x@ZXyP--IkFDIo+A0)PC&|R8>VdRmJRG)kpnhhuWC9I!$Sta$Q)$T|4&L|XO~USRC2^_-V^$hCa>i(Fs7k1wTztGRUTsM zP~EujMZ}R!R&Kbb1u?*mv7^_Xj($JafdPz2h^=*C)D7Iy(8da>wb4cluqXXh)0`aA z(RL1ol7KV!jnVIi^fZ98f{Xs|gUw(l2K~+zQ}<|31AV0MQWJehEjaWmSS$nZKVo$d z-P>Ln^?Mq?;0LV~^c@|Uk*6%g)RvUBtO_l}aEtqu6fFXy6KuieMZgiZU~AtYcBRMS zH~p`OMt%GAh~bV5tM{7^n9cly~SO1HOzR23Tm1de~!KZ!ju_ zbkww9h4i#wLpsp!IbmU!ZE2+dw!ko$&MO=7>%J{5Z18`G15-HKV3bP~12AM}M^9XC zU___zw~mYv7vg_ptvfIPcD1q8`UVUg=s)Kg>dZLO4^(8z7)@(qNrgm!t4I6Rh8SRI zqlGn4>kT5=(Sh60&_NUiOLhkj(!o+ZJdkC&mOAF}Wk~R4;F#)U!W~Hi3?1nav$U}W zwjII6@DUM>Ug>3wmRb`-pFZbplQ5%`k8~DS?4QT$ z7qrb$A*co^BO3x@uG)v!jukGVjJ~CF(QSM|+}UMYV~}SU?_c>x-8sm3m%qMM;k=M7 zFQIZetMR@fAcK~>y6V~a7TenRp+>tV%lV~cbH4Fi;BIq7|LQ&pc+*(v&T-y+Qh#pU zQjr~6f2h`dQAisX?)%qIKPJXapR;hpo?lMy(`dxwHQ{2RxnV|Kr5%Q6Jr&jxyQo;?;?uk2LrVlnOV&avfzJBA*$&bd! zj%wPTvFmb|HVe?ZaQonqBO5>VfXTb#morA0&vN;*JM1`Tx>~as%tLpN;OR_exr5!Z zjj!DEjvw5}?EQubZHFxSu6hHN^X45kj3|b8UIYgTeyr;&c5Q78gTU!F&1>KLz#!H}rPZY7GT^K2b!}?t3Y>zFZ_|95^=eMqv+b-*{FRhc}1& z?!V1w`rYkmGk{+*FV6O$Jh)NyeZ2pC+dqNDcHDN=gYZ1DMm1#V)8!ePHS@!xZEdX%$g~K z)U5^_eieQ3BJ;eYw(R{NF@6XT2a;r~{uFsynJchg$}?~%5PxfxO{HTx#m0qK_8`l> z)%H<#`n;xNR91FTgz`~TOLd>iRbqgc0!3sjauIfNsVIW5u*8S_0%QawXj+i&7sT!K ze@n`H#^^z@|LTK9*`}>LE_i3YQMz7+@G@;jY!RW&Jyxqk-<8n=!O@=fn50f5~jT@xeu=2o_|6W`E^R;-K|i3W}Vkdz3V6@l>!fIXB4`pm5SDR!hcsY z#yFRTGDyg9Roh*8M!bfw2v$ui`&q=`4ARhBu&5geK@J32t)X6g8aq}O_4ey@>%5A2 zVPaoA=Rc3U`@T51sX6Vh;1=%0O!e?1C5KJyi^LO%7r+{!{k+mcJDNQD8WvNQw9AERtAa6iIQfTxSVFI>R@&Lcsit{@Q3FEqc-{&BIz(bXq-l&Lm`0X@380|R!}rn z$E=X`Owb)f(kPAMF<=&&sn7)JRLBM+X{V%8hKNn?O_bGhGD@lF;6;%~_fJ%z7yrfQ zW>wei>|u=eNbM*sf)tt$Bv@Bhb@h)Q^z=A5h=|YuzCGRgdjHRF_{31Hy?;C=&M;y5 zrB3^mLZ+E&<>#LQb6}A0$o!5XsLv=-RoF9Fl^*xM0udnn3zbETvGz<9k!f6@v-cp9 zoUz(iqjxBoRsekLX_}ZkSe;6yf={##VbafZj-$e*uy|R?*|h#d%`Ri=ECXb6h%W|3 zKFqQ!JNm`&T-mhm{eG!F7!;a|;^49eek|_}*%R2I7bmjALdLPP&7MY-6N;%3{hKl}B%7o+3=AP$;@g9`<4NH)G z8Wdfw!``IhNJ92nlK&=9s50IH6P%4<2NmUYTf4n5g zJr=&#J#jqzS^!(Kx;AD3-c}xX3EXW4Jwqwb9Pz9XJL!Gh6(JCEgm5ahjrZxu7t}7| zoO;%m{V)~1ABgKFAfZ*P$7;uj-o^^5qD6%>afjyelir_7N6+7k4}!|)eZlM_AgL_0 z&ljMTvM!dtQn^fpG*Kd+A`vX)OqT;Y?xp^fPOVHvCPW`0b5ATpQ*3^!7kEXGucs7G zNlBTAfdR6d`JcmoXrbxT|py487jUWn2Xh7;SkS794+D|i2a48qnBH}{l96?$IX!!eL zd2IM{8pYs3I?NCe%TP=_uI_zRU^m2HlX&QF-Q8OT58P`}GW5YgiP)(OXnaO{Rk{T1 zmh2`snIvk%vN6|xA3P=vRdwed)(@e#9Er2SfxBIwy~9dHJd6bhP5~RZ&Y7=4qEF)c z1FbhE*<7`-*H?eAB}qQrxn=1YK0PQxytXv0+J3D$fJ;xAfM>&;uYv$ckR)aia;g!t z3n7=X*+Viz+RREF1R3qTo$HQS>J>L0CZP&fEn(B&+BJ&eo^ab4?KAZ{Qu$T040J0a z^3Ro*q)+lcH2KdmJxpp0`orGXY1eRVw7YGiv8r}$8Nptu@J1})_MpSRt*r+6tEDeA? z!Yw`0#NmM}hd>};7_UMeZymEXd|-vBg-b{UGZD^#apfaI?cPpY`3yV#R0&387;e() z-x8M;X6cN8F-Qh{*#eE=D2KJT+kOc|4frIX%@Gfdr<@<3 zZ*4N2&M&OjxCk37(}S-hKOa9f^OkrN;=&Xx2G&-qJlIOOagHN<9mBfUmlReuPF0>4 zMb*sAR!z6B$sV57o{*| zGqGwG18xKs=gy*CYESd0bs3&NkxK>M*V}rwTIOHAOmDq+l6DS1ribt|!t5gb=n1lo z&4dB9kMr`f2j3GP{8xAqS=8m!*k`kEXYx=sEQmgk%?D%)@R!{Lr;plR5jQ9bZB^M%E_AEX5huJxh!@u*kHG&`VjBfU~g_n zZ#fdgKC>r|uC2Bq2L{{vt)1ip$=ISP)3ti<=QtwYsG)_}x8@+7kKcJ-;Ig#}xL7{A zOhb_uZ^MK1{rH(aO1s?pqQXY|hgHIQvtWequPkSUR_qfrlU1E9ib`>Wl$e43nuOSFD z=dfPc0YiuO%k=uMni{9!$Gt?@d^}%Uo;H8uW5R`)1_aEtUCKVTM#oj=C{k&6yRa?< z2%z5NNNEBu3S~ns2Gk&J9_dlXmn6KnzMYI$f(C1QHtpor-}d!Qz+=1Y;pOwYu~WA0 zjZX2uHVS|0gZ8)n6+!-l{+09b2@*p2!L4`w)5Bo`3y$PqoJkV1lwNdh2vkNWcSoQ2 zbSfj2tvh^~nyHX7qswVB_8vYU8JuUVv@8mG60&m&G8>i?wQcUqMab5eIPJ2eT5*1> zb<^X4I|UTZ_=1$m9@Y%Ze@p_cG`G41bdMZ$ZU}=U1{NC22DGBu_7(@$BfrJ@s~#Rk zjcXcG?PfO|z)VM>rRvljAN+jtN=tZJR<}3R^9>YhAPsgAxsYvTFaf-cDHR3nd`#9e zin)k6XHoB%J!+$DR^WA?@V&bb7wmnY>X`35Tu6`2@~$xraBiCq$8a2eET11^o|>TK zUATB&=1kv*ozUEac{C_UAKnZq>t}+Sn2w8(4C=Ld6nnHKV@zr)+Z6g}*a^%jTvOY95mq$u2N7jB{0}B;sNYmTvZf$?l(^=)Y~K{vT4i4Jk{AY z2MRn<3!giAYbB49)D<33cZUypqz@Ceuvk>{`r=%y87Q8noS~=V68I8W7)pSa3UIe~ zTal_2lDvc^wi873X+^Yw<%EB_pr0m(fw-z_5Td&R?71SD{?Do|~l~5nK@O0dW z#9c%$;|zO0^v{i51n930C(=qv739^H}ulYk-HLqDrBRDn$*=9Z)pPBXev~1$))nj*6I~a35 zid#@Flsa3zH!KAD>t+GUU*X^^9eKl*5JiyT*hx1&EfbhL8m|J=iBKyug2?wXFZ2cu zzuCOYO;+{QS>$m$wP&EQgL*IZtP;W7%7rU}LP!(LRazVWaa(^U$u1cp`dgL@mFf2_L@s5~QB|j=g~yASyq3&)P+G~rS0o1WO2* z?R=*Ok(B}s6z|(fn(ja9&h}Mw25)#UDrb9VXpm=qq6N!5ebz3{Z5QI~&yOFm+ltYj z;~vXwfK~fMiUtcyiuZXHH=7FPwf%Cf{ zc23Uqdy`RwpY#aH5Y6pSoRGDcKsQTU@{aF=v29Jkf2FViwp-Lv;_(c{u)1vQ9`f2p zid|x0nsL~KR(HX;6c1{$6MXDyv`0MX#p9S7}@?esYoe~N+A6v8xsC|l_+p=eFOb>YkUmjllFW%$`Or~;7PM96 zJezLYs;-YvxRaW87im^=^DUezK1-+5B63aeZh5cpbJ4m8Xsu8vIr;9Lb5Ei$Vow@hcVq9*AZbK1mfk?WZn_=6D%3c5#Z30fC5@-271-Aw<3y}m+m^&h z8EU$fgV=apd#H%krwDew)tVN33PsQP-B#2|-ty|J zC?RRm70+#L29&H*fAH1YGhDsKoveI7E`x@j05Ucj$HvCEK^_d>bC(!1bqXG4G0Q0a zgc2i%iT#7BW;e2iXm&_2aPQ3u%^Rx7Yu{Ae8~@6MuhbRHw7n*r%c!t9!kUMaNxp_i z3?UZ-3=Xq6&80y@rurVU_Pc49G5CO~%dGby1-V(*`&tyy&gbxtogt_GE4*?o0A$su zV;OGr-R&cRRia&5{o(IB_N`gJdt2vpB`rbZ)neU?m zo}9Xqu-}XYkiou3iP#gJFZSoPc_xBU0}y+20+&?eBCBzx!6Y%hR>Nc)!rBNbSaPPx z7tYQDiVKV2KY!mUjtf>hQ{DR7PH+!$rrYlp7J(1grW@lASaSmy7^`)=kQOwb+Dy_r zJaN|`W0Em2dy@$<(d+J!DE(we3@h8} zSAmp5L0K>3{fr+TN{H=r&dRedM&-N_5v)$$NLr=8~CEWRi{&t4TS zPsxP6++GWz$c)cK{xi|JZ9^{UWDp<-vXlbF!jC)5oAh6mP2^2sd-uy_Hk?~-m4vc` zKGv{Q*OiX7-CrMhkqRBXTWcxcX7g2pJEC3P#1w-?>6rROx81V_c?)Ly7MTcjM4=Ls zeySkrk$B~)SIYIkF2{I`Ak7)W@D&uA3Y|k198I|42~wIEmOr~=J+W=AStO5uIWK~{ zwKa)Wbi*)-br_R>=h)Yz0qR6m;PZf7Yeo{-5J|WbLpKN_ZpW;9eGC140I^%rady86 z`*&^o8JGFDA0a-!|Kst7lZV9Mhx(A8d$#Sy{C8Wl2T>4?>Lcl_(TOHmMw)260%I#= z1yTqEF<%eA6SBH~t{OP}k`#wFFLu=ffA$FQe%xMi3;V|d(1af!(iT@+lWEw3X`$5* zcz*LpT8tcbaQk6w!l}5wD5*rdznU@2I zDYJ=*O{-xt0NDGnYE)IHlsPEXpj4D8m4ua5K{Y4~iDUI)&0|6-qsyt16zG+jWry;^ z4m`F@x(t%hp&B5PlI2_vfMJPMR-V0(Si-*Ew8^V^!Q)JY2u!aEH~J9`>bD9G-tWx% zQP9B0f{Q)9W_?+z@*++QLN}>DGpuk8l@Gra!y=vXYsw4DfUQeCI*)|U_Ww26npOLx zETqE1E2Sj#Xb`|Fj$mGC{4fAlG@2uqT+PfnN=r*Bg~t59hJP!a{+(v){a-=;6R`W>%L^DD(!)P8pQHaUE8?e{hEoBHmb?H|8avsWTsInkbA z711xgH!S|5t4zGqyM&EvsH($PTwUB&s%^<=hY=}n+P_imyIkJ-=sJ3Spjfjk9;ZWd zDZI_7X26)&9udyG^!Tn3CSa=k7jTrJsYNAGD3`)&_z(ztJU(k%tI5j2YB(H6wF|i` zKf9Mj%OqxK_D@-{k6BRDD%~%*7o(R}=czX|p(YPW7OB7m61mhBKhCx$kTOuEDcKS* zE0>yw6kgy;4%w8#`A^Okk06D+Hg|--B&L4I2G7iJr2hzqNkseD6>BAc*ALbRFHqUH zHbprhw69BFAMb|*4tjw9|B^u*+BW&$p7`&V0?=PK9*;iHax`F5l2VG0RJDSlD-7@G zmu)Z379CP;etW?jL|OZf!yglub=?d8nz(T@#_pd0zJoxd=VPE@NAS<^Gsi%dz`;=t z9x-Ia`$rF<^q)id|1ga8hOwqaGXGR8?Bvd=Y6)mGbEZdiZPrxsTv${l?`}>Nmd>;S z3S$(!_Z;Sj+{rvJu#Tq+|4zIe#QRM@>im}X0v7}nd^Yvn8s11qYO@jz2ZH)V;KuOr zGijD+&S7iOPp3eM$EpYSsyOA&Jbqi7QMZLO8Q(l zWXAP%T-Iz_S6*rp|!OaR!v~e@e{)Q+PGy@t=eJv%(i5W)niCwkZ zW3^WaTvg_%=QVgPOfUh3qiXi0Rfh)ztIj;?=E&g^PAkynG)l&EdMY0mpdF*^Oeucx z!H{AIg@%U4EIbj81x;yma(60*jEu%#Q5jBHfco=rXuW;1=RU)wbK{YiekU}nGc>FO zl*)u1zpm$9k5#_g<=rVZR?*NgR-am_w5TGu-vkK6h@^jN-)HW&ZR*f9$Ni?D^<%HX z(icff42uDE)JSn{XjtPe6g3+*E>$pW1j&a!Ef0y%1}qw?GQU$EojO9773rGrN_M=CR}SAobrQBsC9e+AlJc$@BYC zVIh?id-SmZx^Bx{?;_$VAx0+Hql!fq?h}PsH+Av+AK7-JGRQRSq<1F}nLu9*@4`cp zk`O8693d6pu&ZDY_3)hx)>e)}_a|KdZv%p70zzH*-Tioh_^wGY@W)raa8(_Ptw>1! z-J;=BnXokno!R8{H~YKelG&Mf!nIoO!qY5xA;5JctVhV+XG&fZ7Bt=T?|sw}f#NM~ z9Ibo$PIsq4Wo%p?>&)!ZOd(ln!4mtDVFzc)n5rEMCYyTr`=u-}9MOi-LmaeW6k@RANgpF0FkL zOv74Lk*@LBLMKO(ns%voem3oNlzRJ;Oa4H+y14kJxOgiaqkxv$sH ztLPVO%-SVchGCO#|7yh6XFBjAnCz;?W|=S$>_Ku0hYCA-_y=Ag&i^)G{fF%Z(tqxH zh3gzPpDMQod{-)b!MYvV770P%>h-_a@hR)=XNZP}@~oX=S|lV3g@|?G0N3ggF#-L7 zbn=!CCR>6=wo^TAUMmeCCwN^XYduGC*AxRaLL{T%pVi46?c$(;u zcvk?u+YP07c#8pz&o6ue)&hGiceKy#CV;>99+Iavd>OWtGu67n?^aE5If~RG8R&Et z+f&np2`UArf%^!KH7f-x{o>u&xW0culaT9CF|d)2{=SGp+0AcCXXJB``R^eIHZC&Z z8U=!$HrNooPRu<*K2=FHk4qC z9~(OJz||}k3R9Q0YnbcswYyk7^G6_f zNa}B$iliG-b17kv@-UW4Fest=#n}WR=0!Ps6#Yf*_94fqOMoXy78YH*vz{T^BOFHb zl;p0z`kTUlD@$MRJ>yqdq|o`<{6P{NBv^M?~Qztb+bmgcA?~h zeSNK7q07ju#OsH}->;fJDcZS#rD8ZlEXxnEpsAcr((h@~LU6Ft9OR%-H5aya;d=k_ z1LLyQL-5Jf`oi*o7pwRg5tk2WaJzqw!=SzuTsNW!Nl1`VK;`qUp~#v~RK28*5( zvo~eC>^_*X=YhP4TDNWacfzGKI3+I+oo~b4H-v1!KK=?AG;>2_j6s7sz!OJ~EKX_d zybRBk6mj57@=;Ev$u@1Ch4%df)__qQ1I&VS5%C4XF7JHr?I#!RT;7IsjXS%80izjK zPgo1=ozI(^N47L;%}>&v1cE$OlX95iIf6XwTy_S-KC=qhZ{qGHqpZxm_BPXbzmZt^ z*7nygDO!boQ$5G{QP3CshTi_{Xma|XEB*eoIaBvKCE;cdfj`Q~dYyx-g9s*w`y5GK z@xtRk+r7AJmFc#)T4!_m>3CQymWksDj?~wk0Ljtydf;f=5dC8#&j#^xFeY2Y`^%E! z)wa&ZbB?8W1{G)d$Lx;wATDr-qS<)kv1lXt-PlnB0q48 zOzXMf`5eB^NRrX!7hIi~!?^MS^c}x{7oE%i|7UXt`YJCVp97jC6UpCOb-~IDXZJWf zO~ryp5a-c7NeOJ=!fg6$u1Xl%FB(X0LfzcX;-S&c@Q!TJ2xGO8QPJ4dt1G+~qH}_H zy(!0-H`&IMTGaK)m-n@#sEFCX!KVE!Q!zo_Paub>%RaTwDLBe%I{gQ%KH^LsY6Xg5 z(2g0)FA5I@<{?caDx=e^Hr+(vB2xj+bxlfu_mr5=F0?K;XS%}@yI@ATjY z(nWKmF}B@)@~kL30q+I=7~=OK$}5Oe0XKEG-|>PqzM!7IyRPa5olRB&frC^^8FeGS zC6I!NYX@N=uX=fDznDSA7sVKo<}iO{7)C2X3vB3+`FI*2HyyovvD_PcnmQ>Jd~Zq@ zT2$1n=-R6KNFAFvVq*@dTy|k4Oiq^@;zV%GeU;{&_i&aLpaZgqV#^57bzJ{lgm@8m z;qVe`$8vYDmwkcjH~ab!EQ{EQw!wrZ0=-XW9WYaMk{gjz(hRBM^UgGzI$=2OC{w3g zb=k+2>^hAKn<@Cl+9~j>^m)h7{1N*(_|z&FW;Qr#ehf0G_WWzE0r~6Ex>r`x8(Fxa zjXz^2Khm!`2tm~$Hra)K`brI=Eva4ZjOw7}tMj9db^n5>%0!$F_YDso2F17r;1mNK zkK(3Z((U68WrASR`sxQAnuY67%J_GZVzxfOm(0!HRu##JgL5`4u<1(4G~BNsCKtK> zJ^j^|6iw{~q3;Ua4y+CLoVlbz3I~74>kT1PC2&MfVoFP~s@T->>_l zmNKE9?_TjY6?u8t9w9>* zzTfI({pHysNZBJON{GeI^EuZgv|GjElTspBP@D7J;X>O_?B2pRUr8(=6{CN_8$~zd zIF$ERu|I(bpMQ`uX8AD$t?W@vak)$)-bc`l`CW>pRfN1=cBmRwl4?6mcAxZgu0mG5 zvuEV{7qh*8i;~3_qsCPxTHF65sTw?i5+E_H()Dz?t2<GomidP~`mL=vJEOoz~d@pzHsyRhhA&bFEj)mi}ad`z^y2M=DI#%UfUB0>~{lVTT ziN97oD_I6;I?7lx<_j<$St14b3=o<}SXI)!cuo*bftbr(9pZer`%C`f;L?KN*Cp1t z7(2gkc9z=Z5ktHL<6C5H?ZQB5d?#CUOBiB&a}vf}bJ+Mz60yo70nW`nJrmKG76=s` zmfS&%%kmeO)()3eAB2_eYXAYTE&jO?Na`?yxkeD+*y2~1K@SMJ9Hz1a!XVdJF@zx+ zfQqvEpzHdZ8|fLsx<8mk1yDuz-*s2tnQC=dw8@Tfg<3_9aiv@Wd9K!ETU!nt$fWB(bcLPDg(f^UY38(*G;)7_y8N!a7|EH@% z{`^~5gQW(Bu=buM(8u-|DFZ?3^GLg0hJ_J375@M2s; zD1%Q&Q158T-ZmxC>f0sJ+WkxVmN-!VL^mhmV(co=mfMzvu2@(#8o%&aFT89b-UzM_ zKLoV>UGK+FpQB&w)^9N45O7%do)YAa2DDMT2LAJzz(2?aJ6nD(0dFNn->%U7pkPFYyKhO!>sW;R z#4?ws7B82)02X$nDbBD$W60iWv?aYJTeoFoqi5qpXzw4m7I37o*&}{6iPPfftXX-+ z8aaVn6KyPGPuNf@*8^&lOzVWlfu*7KdSW6!U96IIuR_4svo8||6c=J)YzS;$8i+SR zUgxt<4l8Hz))W>I*^6OL-HazPL-WqBFP{;mv#L5yfaV}wwf);lyI?}&s+AY5O62&r zuESGzT}N$^G!M%?huiFv2M0D*he|>L#W>@>!P1;L^#FN?C&rI*t`Sx^gh?28VwuB+ zWw#9(9&f@a!NJGwm=N#&uoVcOIJmK1C?idx6@>Ejf#jRb> zXC$Hb^=(SaKEntPI1a~a(z)XOg;PM38al8Yt(-_TnFcr8J=)DsK8uZ)Xjh+IrTJ&q zAJ9|%a8xw+buRIe0TN3f^8o3J{VJ1(sYe-fMBmvbp|JuXYT9YSig1FTn_YSF;;f7Z z7Dp?8)pBCAyfh!d`KNLU(D{ZnWWRu=*B5{Kl3s4cQto5Oz2l@9l9q@3)KUAP-P zvth3`9hJd(^T{&yg2wNgkog@@!4FC!U&VcpNNE-6t9506l)}sRQ{%1`z|f;XMi}=z z&t(s89X0S(xiVcJ{CL$_74~R&5TU#P$H=|)!4b=ZjWA6Jfm-6CNt2z^jpndThCy51 zsd-N{URZj~GI|_pcm(LJg3sh?=8foZbpmDaP+cBeKe~dDD){Ab$QtRpIIJP6k`iDw zB(D^4m*6tTs-NEZ@k}}@lD;s#%0vDD;bj4OOViZ$8RZF$C^&~fj^QBy`2?LU-m=M2 z(U9=m?96?NBkp#`-zD9Hu#y8eyLazQO+6?Hx0jP|T9Z4sz?8UQ@lWk3ML$j?BkQjp ze=5Fo%pX244UVsh)<2uGCh)6U8Ily55No8Ey>e97|00|}m1H3`a<8!Gz0$f7d<2Gl z)%9#Y>$u2B^(O#xX}~=AZo6*xj*4LL-dU&lr^l_eN_Eg)&?xK&4zv#lJp_t||6Z-? z2jUwg{`glO1_r$IxE0?8f6Le>$mf|$@N(kx;J$fH=IpkI2oH+0`RzPo@(2FQ=X3(v zvkxbrMCUkFrsmr{OEPtq~KYx$#wuvn(T zNc7g${TARut@`G>Y{p)r2HcEtem=N--wI+y)fN(6NrI^C9LQdI_1r$@I;kt!2m(Azi;L1;a|)z5T6zLv7^CC8ZeRylx*6$2s)5rWa4i z-F94U&7OlCJFRMl`)r+@N>xm>A*rQI7Delf?W$%txBU7+ zkX#`o9Gz4w9kxGt2Smsr@kRMv%$t-I6Tda9cVxlEMGahL?3fkBUM%+Iq5Tre?H37? zDSjl=f||3u`z#Hk=fjrupf8BpXo;JP#l2%0 zFmcg>57rGM@*CV)Dx-)+HGxcw(BNX7jJ1T-f{))0<)4ze8o!x z-+J^^E49E+|DHsS8VAN))LJ&D^f0fhC2Jjlh)sop%a85Z$Moq;T_+W?CAJcp>!?lt zuBKs(`TkSDG#cb_4+KR{j(XDDx8+0qK803rB?f*@)1^|&8BwzgvvI>P3DPe9TRS*n{s|W9*?>jaiL`;tuZ*w`K(@%rPab zv2nawZx`|8D7Q@o zN?2=Fo=0X7Ev;@|AD)V(2US;2oAn9W=+WYaZZlYa_5E^SNU$s_> z$$pwQ2U+?h6s*E_AGy0{ypYn)O+nf(?A6s`cuoqy=@=ctI%CVueH!1t$HNw6<(eub z;(3iT5GX^P(o44(22k%i^L$V1KT}$qonPJ+=#(P&5hr;MCJ4(F8RaH zt3RV1nls!5JO-}n_}2>mE#w|`~NjDzVkKSM*upisd{M{SV#_C14PHjj6>$V1@b~yp0*E(SB+*$+#0k1)8&=7L}dT2E^b&p*lz?5t6pszLAq7g|jjb^@0w}czXIi zfiQTWLqHfZS)y_iGyx6>+IruefG z^)JLsZkF*)VdsYGxbwlFLxQ`-_w5q}4P0e^= zI$I|tYtl6;HwBKm!{DzgA2_dD#bkEUgxw#rtSdGWbIr+m+zIXTtAQ(qAr{<_+tWZj=#qTM zepXFiei#Q_b35N;D}H{vN(%lFfrt|l2LJ$+OG-`YQ&TxOSj{5j0TS|Z86`b-5g?UJ zUPh(S16vy8!PeX4?aSxNr{Y%~_8O+{p~^yR&$+PTc-NNI!C!D+N_Mx!-nZ-dE1}Rn z+(l1pN&JFuT8I{e9ScK4kHk8TeG5VkRC8lvT(qHhZ@@9=}0VLW~`J`Xhp3cHs-ehJh z(cS3QyDGUtWFpX%IJvHS)#?)XcmU9E3?TDMwGf{&UMhFVTU8ic1`k_|pVt^caedO$ zV<<1a`udPgP!r5KG4pjlW!%QR84>E&xoM8wn@6L6>yw}%1jW*BI z&6kOZKZqwh0pF(9qz_L@b9CK3iOS|<(+&;yyDv-F5Fp}j0BKxTw;AkYt+LRl&2PT@ zeZ_A5Veg1DZ&irX&K~blX6hm*IOO`C;dwVv<-6uQZbz1I)w;-;C3vzm%#J#*lIYfxqP0xNEI}foqNS0P^$sRFp zW^ac*gbLHj%A(5#zD%6zG%>&czRsfu5{HLPrzaqD8xE4yL=b-K*kAjVGosg?M$bk? zoyFatZ?<_ghSs`ca`{hu^Wb7<(`0k17*L99KbQFg)fpH8PRT*be#vRTxy@a2aKCQ{ zP_&w~Rk+4*1b0bU+gi`W`4Os(AD_9Ug=0UfZC?p51c-0ta8zDHTc#lW=bnBtwq?2O zjhvk~)0c}b#RVLWObt|k*Lo|dvO=5~{0g+;JaC)6n#`GR)QRW}OaKmvpfqh0>%&c8;P-y&Af3)9B5*knTI*b+wKdUBn*70brwT6^kseG7~wy`gv7iFXDDQm zb+9j~HRtpwnwruo7hUQDHfV4aszg0@CzT*4_Kw7lTTyr2NLmhrF&+k#17*aS_LQUH zf|`ob2B!bgIHj~T`c1~}F(yV?d!KvIaZUZ&YUo9sylrpK^ww6>o)LAs zB&@tT8IDdwd+}nNO7<1HJl5a4omM9QX1Jy5@>|76NU+IN`D3(3Dl#^WjXh!65X& zlG(w)nMH-bh6}y%35t%`GrhqStl&OF(?W9im|zyLAuup1NKxqssJjtns4kdP0y#{u zSs~M$uc}vHKR|6xAU0R%!IUGZ^_l_lNhM z!f-8-Ng$tbC7)ZO{VdHoDfuid`aCHtDwQw3`!knS@V%r1fO*e8FWIRk-@un@h$*4G zou8HKnOZ0>d0ey)0KBVMDgtH!_mU-h$fazwsex0}@yofQD>)}_Qki6Y(~97wp83mh zbD93{aw;y-bMU3A(uID~C4oX5a-S+irJl6)MaPOg($DfGM@999(dE@Rg4WF!CEP z_mB$U4B(e9d1g0aM~ID17K1P`vjk&@lxM}mq|Tv^pS$OikVj^p>Z79SV@;C|PsQ^o z2?->pJ?2a`%_*tP1ejU)aLTykx?q~H&x)eQ$;rVXr9G6E_!uzF+(`X7kqS-<35CZr z`QCGLp%{Y|(b(8{umi^F%&E*iEGJiH6oD z#1O*GY*wScv}vE;l@qpUDODz5*u)eoMU}#eRkgTNmX^Yd)558wuDL(&;savF=EF6D#SVy%ea-wBHp)~`D zbTXWLSmrd=o?j%7am4kzsWN{5n}XOVE-{yNBfV}nf$gaJzNUR@za=*MT=<#n?>H%z z8J>eA-lt3P$E(dmJAUik0bZ>a%0Fp2q4X`}0Y^cBO*o3!_;U;90j$~qDK|~PcAKJr z>2UsHj=E*hf|^UH`G+pZ%8KZ+O2s^z;oe zC?{N3e#kvB?cCBzDxZID>MUH{5Rx z!#O+h*jceK)>`JYgO8#YF9*1U{mFCLeLHem7;F9{KMci`6j13HT}!7vdNu35U}q?d z*|@-49dTZusolgcx3b#*6zZp4Mc4nlo>K)|XO7mg3ZVG&Az$mm!KkV$|M2PbKyw-52GCH`ZvFW5SH3nN-O%CTujFAb-Y)Qn1PgAX zsV{>fOl-V=s zO>a25iLAD%UI)`WjwCe-2GFWFqDLWAO>JDqtdv^*A~vQxKYd3yv9U39(Fozck@ntk zO*G%5a6l}GAYB9jL7G%S0tiw>dIt$5G$~36q4$o0(jvV#Dbh)#gkGde6Oa-}=v{j6 z<*v_jzwhsN-}m$WaqpeU&d!-RW#>$G=j`m+9qs^slbh@=c;B{d6oUzWbFzKU^*u^C zm`Hy0AhRS|i@pBmpI@I2>oim&6k`6A#3?yag%v(9Z`c1?kde_LgVVXon*WHKx0u<$ zkRY-AM|5R*K`J%rht$hY2p_&TpAy7P^v=gpXY3ASmY zm8zgmseIxDp;z`^%`70mW`~hJiFgt?5w|7sZ2SYc(|Xx*`GR7%9}&LFdxEd=+I0wc(aUrjr z50TRRq!uZopF(-bUrEcL;jl(h@QwUQ2}K|op32j%XLKNzFEtx(1UrKu;!rYXwk`{c z4uv8LJU%;48HMwFO_IU0Mjv;BsB@C&>o4)+mkIJc+AK1wlrfB^6Ow->nuf)$m*-fR z)yldqt3}ry6<zG-=tglH2dPV3wD|=#6x|0m$3|m zeV8@h-0}OR<(IvOc+4J39>4zd)-TQ6@Akj#v7MN?bH%r~W707$Aa=CAP-(x6GwJX> z&m6im>336*IlljNsmzLT0`Rv^NMCB`Sc#fgaNAz@L@aSfvnVo2=Fs(dD(ik-LGKMb z#g$|P)pN_1Qf^NR!43wPGTycpVjJ%1zANsfJgJg&S9fdL>n&cdo#+eQY+nxXcI4xm z{n38T-RtIuiBs?WST%qIH-4GI?G@|P+MDNYNaVqfE7IFeoE#JqDGqt8CNcEc&}M>A z+zT-%xMYsU@(vU|$phVTS%+4|z>5uRF!DB|#m2B)D0;q8qJI&K-e#QS@y6+tdZ;pE z=Fvc<{wPZ0CmOZ}of|9l>ot_d(A!{`&)phnM~k5tO7wvzy8(cuQwqJTYFNhZSCx8= zqF#}P0&B^H^4PEhDZ+jy8yC)&dRYM3WhmMP!{5!qtgKVRWztds9ei$mCuX!bT&Jcu zT)$qY)Sjma!-38{Q8q#&gJB{7w!r{EGd7Nf^*D`{LKmn@os@M-eJ~n}UWspbpvS#{ z;J-(yQ|i^L0{}3RGT0wcfQJo+`%0*p9u;geic&nJZZ<+b+!DK4Y(NA#KMF3^X@(RZ zm3oWmprB|N+UUHh(yd;63xh*%C6qcRR4t+20c0cSCLSnyxw$yrcd1yXoCkhX4jjTv zLMe1-tPW0JY|M8E#g;;kk4pUsmpxhb6tg-vP4Eapl|Q}y)>>m^lzgaWp>FjW8`>8d z_48+*@P@g$xg}vz3>lmC$KBkSpgoK23Iv4b&<)^&f3lk&$4TsHhh|8pL?6*!=1mbwN{u6)|cVcU63x7j5 z&tC?FCSD=o5kMjk?2|D3bw{QEWm0G7yx!D$Y3IPdHRcYXcVg)xhjW=#1*BOz$8wof z?9-}7QQD_mI`v}ELqM3pJSe{~OpPiG zcM~?uhCZ<_^}~l5w}VmB378<535XW6mVl{8z$R%i2`QMRZ|IXe^l^8oFV?`=YOH}} ztl23Av&M$r(!yTefO)%w!$*kVBdS$v!H^M7WER}5*#ABnR%o%$dMy}SOkfQPJZBu<+Wh7`0K|E_BkPL=%p-i+$Q zcd-J$2)-uD`o{a(xGv2=6t)((7ab^FNumV2@LcRFUYqO;@41v2}yIRp{Ti z_BX;^vHxuU=1VcK!v93{ST%GC=K9}@{#Ky@lz%tfR1^ucK|~03kIR@w=bsFsxQ*Xt zrw`ijY^*_~)WZU9{7AOAEf%`(0&RG~Wz;H!oTEZ6(djyc>pDHL+0wMxQiN{FK%1%YACCMY~j3;0&!| zg*j_%=q&4jrj1O64j}?zEO{OK#COkbj1F-qniB5&DA5ve7vm zNtF4d2^nza%}A|~nMj&EbxKIU35~zXjqi{V(74c#=l!fm#MP`%L6S1WKwPInAy)Zj z;R8!Y9+bMN%MyWYtmnydZzK4K%U-Mcllf#NhVyMUl{&BM0VHXHUpH?~h^p^RJ^z3(BacCn>#nsO83acw&M@@VuQQIze*V5k6wpBvfjSgR)# z?%JjBlc(G9Tb=ohSg#4BNN0m}4#&&~wdhFNE4C+A*8)-Y?gW)5~`vu;u8ZcAjI zq94k_W%yk+1kMqwG{d6U$TJpFmY|r)sfpg#efJ!Eu<``ma@ZypH(PczSehf}+(Icl z7RsCn8!fvP+k$^ktT%0#I*U=}bSnLQha)e&*g2XdToxuf0^=NxbKexQ`8}R^OQlPj z^CW!s_Zap80&?2_DXN(WS=R|K+Ha%DGk|r($*K&Foj*arHj(8Kv<9Mktzmh=9$gmW zbuV4(>CKEW>Le=f6`eBT#HdZ=Vl_*ZeuJ$)*!HDZF@nm;H?i^*MQj?(4TrMT2!z?RI2Cn+Q5d4Zi(BV_Qm=INF2bJfZPn(GUbQoAxN*3-roE&r!alMD zx?2gS-YwI^b(YE6Gs?=L7z#S7zra5f7XpL7Yk?4tkt@(h)iODZUO@w+t^|qyZ1V^j zjz(!ZqoJF$ob`GLU8^C;m5UY5Edp**Q3k00FgIj~U?k5Lgv)utKPD2Gnh zrb8D-39pwELXL(ZN68@AFwS~89;1Sxs!clTsT^5d*sakyt5FZl9Qd3pqB^+DW+z*S z2Sr3_4tM3Ys;V22!>-wyVb>9Cqhsv;ux4%e46qO`LJs4vDTllY>uh8b>TGt`HfXZp zazCV^-o|pdZ)ihivd57Z5UQE+0$h7RnQot1XLZ_;Cal>OG82|ve^P0)-8l|$Ft@wn zp{+mTp>tmy125U!oq3TxRGl%TS=_@3ZYcVS^E99p>Zse$*5Sd(l@(OK(HnuT7v#uR zL;0)CM#nqD?OM#?<3n_I?b_3Q| zob@zirQ_jrb{#neWo1(wD^w4qmZLM&JPn~r*h-7H7fTW|CrDF;3c{CmA+ z;PpcV*lpSlqfIK>dMqc{Q!l%?xvXlhL=U}WYlYpbihvty+v=fRhvahL7`YrOBcN@% zP#&7G^$6XRMj6a|?8YLtUL;)Cl1|s6qqySM=tMVkV;()x0jrQLuAmupGp9xNnL{SJ z(Qf9{$X`OpU;L1X5Ny2=XT1oIQIZg{8$d%8SCH9kbWi~>iU3jE(#hFClLMI@f_uCW zw3#N91KX8_asD$7nbR2{LrPsU%CYF`7Gsht7R0Xny~1Q|XC+%Iw~X}HL#qisb<30~ zqjIOKTe@w^-SP7S%EI|6o2m_kD0y*}%SDs{pHSf+lbIYtuS0oDl-_}oaJ-088urUm z#kEmd;QRCPq&YF#Hu1e&DTQsEUJ${xG#onJ)@@6dk1BX{P9Pc={M1mfC z)I}VlHEl}cQ@?oasFk-Uem}}0V-w*`etZu@MoMs}>hW-5*LmzWDPBR{nrEL+LPA(7 zmYW(E{R%^>SMno5+#&P<_dxg$_~Z#knD3PdEIy)1HiJv@$sX=FH9Q%u*>o@2zj9Xk z*gko6FY2-E9T2A#&8OgsGw{NdLc=nTc}On-f_`ipSumj>mmGkQ>2l`|O}Sz6-D{_r)ZG zqwD<46?k+%v;J)DqA^G=Ad>|T|K?TSBT)Q}aaF=BZQhcHoS%Qj#Bz3Kt|oa;`S#zs zPh}g+Ew{ScmGN`U_zllyo`c2EQIlK*=Wtn64OY0G{qxr=fyd)8VmzA1_oeW?K&n0@ zchqhN_NKkzD}A59Ct@IwXt0t$bACNhNTC%&HNNw=pEbXJLhrzIxB-YmpJ~=bm84R-m~D^aO4opGAAn?dG=jK(c<&@NyFoiO!Vf< zNQ2f(lZ83=dRWZX(WDHQ@04RxpO)BJ%rmW*tGQ0C(bvWm>8DP^8%HTqx9sZfo6NeU zB?dMvaOSE2{-sMBFPof?mrun9ntP;WCV0Mm>FTfIUU=di+s+=$+R&G1pUi`_Xr>S_ zIit)_H7PO4OfodGuR^Z?>(wMQI-<8={%)88Ra7#1Iaasz8|tOa@(2Q z56rwm&@a7q)U-c1#)d7`O=p5eez=xicRjD*_zKK6eS4jMoY^Hg?Md(EEWn<6L`(3J z3rifP0L&I~$fyr%D5OsBPh6&d374A8xCM)t12;v$B?lP?@R0<-8Yc! zW}F!-jdjBcp_-;g+86mLzdE3F%3t{7LINJE{1PUz6<#K23csT|7g}9CX1d8#N%4~% zsyZ!?EQ;PUJ+!pcjvVRZTi{)JR&(YqdodBSwa+@Y{J_fO&9mB=-yr8tL^k=gdIG}3W5(ynEm>S;DcaY1Y_Ars zwZauJ*^zu&SIY#`Pfbj?qP1Sa(m=Jq_~cI_+2g_ye^wj+g}(gzLd=D zdq1k^s4wC9Mb-(YuCsdP@$Dtq_7nT8qPCh}ZglKyBz#qD9SZdemyQz~?~HZ7vaqgo zQlL#v8r)hIzWwfU;N+YwWg&a`&~%O`qj^iU{(wADe{S!oH`ndW=#zmGRX5!{ZXb93%Dk`G^Kz2{|R)h2pn>c@lnk4kDsm4=`H64oNud=R>!?RtE@nf8ghwUC%&l3AS8vpgzv5b^{ZPA` z24;=Rj#9LyH33sG7t?pn^AqW)u#_< zv)wn`QSOpA4K_dCx|SVtUf}b4D3ZQnn|FE-3g55R_w&B>ysD)Z{Gy;^UJN38TI5rH zb>-%;70dtBXT3Y!{EuF09ysUsgp~=b>4X;9Ci@6%FPos&gO_YkEWX=S=9P(M|o>|}KQeD68Cd1h45k)eJeV?q0%f%k>98dYudlLXhx-DZlw znWQ7n22Cgrc>yG+e%Ei~O0r&CGNMs3eF95l<+}iR5}bWyvu%I$c@SN_6*uxg0Z($k z6x3jFZJY#Lu4E^cPHO#B-iwm3=2q9abvcPgGj1$v(!FLJ8y4Zw$lFM$ee>s~KjvU& z{xM_pPD<77Ft#)HCJH0+x9MwXv9DL^?iZi!Uo#o#nkz?4i?FB?g6T={cyFtJU9L;z zUgGy>FFc~#obp$myL>--G0>NCATcNUBbh);K8W>$1z{AMluDog0Ux2X1>xId;r1rh zoy7Jgil8jMQ0ceiEiX#&-%@~7@J$G@hgw90T53&S^^{m*bQM{5iArJb&`T?Lx zY&D^HEWMMF-NF~@pgeCvev*L%s&+Cz1U0Fi%6wO0)?*`k78<}#6{I|GHHpv68Uzkw zBZpBcm(?Iciz#&20#x*-Pw1{mehV{dHKwg%BOgqIz8KIB*#n;64 ztY?I8lYqv865D^0Hn2y(O>D1Wmk&?@n(Lee9G3J+92*`taL^=p|LE*qAcqP=@ts7O zR@O-X#|gj*`WFXiYWq4WXhrxDvnd7J2UGH(cGeGO6r@Sg|0p1iO)7!#6cyU>mg3jn z-bjIHQ}1ITwe9~e+x33?%KtQC|GPzdA3OU0!NmLT2mo+n_q06#L=tc3_`gn|>7Wb^}Y_Rer{?St%3r6Q)pHS1<_#H8Dl868flxA0tEKLsU^L z>ZvglEGp3?T=ng&Ezj}w*q8t1=?Y;Y_RZ}cms z{mMv`X&0Ulm-MBQ)QDi;)p%m=dfc}E5N^Jhax&zlx8s;IrY&md+I-n%pt*Urv9#20 zK%A(XJMp`)U%{ANm5yWd6FfL~?!}yFl4V9!waI+tul2=<$`>qNh?`}}Gn>^^FJ8}G zMu6Yiw#gk%JhZ$wCh@`KDN-gFlRT{G*!xYXrsbcRt2oTF9E*!{DIcA^oZ z43T$#%$z^}<36)hL1d8jYz(jON$s#per4X&)d<8@503m5&?a{>^=3xU{w(o6&*|z_ z!@B(`3EejqrK?o3j8PWBK5pv$%1U4Hp}4qCKwUGr!&OHn@#Z7Qf`VSBnX7g1m=^(; zZo$_`CSCVDSVz^$9$K{UhSzlMr>e_05}BTL74|C;2hZPB9ttu%<+FEUJpRW%}2MlHpQzUY{ii=cB7D`%~e%Ri^!_!ZI1< z)#mhC;+zYg_v;nh_rMN`Yt~-yXJd%^T=>ERy;RN^(;VNXKh4BozVWkb3Dx{pvjzib zh00-V@VCsa`n^1HvoY%@62zBWmJgdvL$-QqpSypKKp-4rrhi=EeL{;FS>8Srj8tT} zCuqC$a{g}bM*k<{MEa#K1FH!&nGckRl@Y9q9S30-u92K5M(JK(p3~`%!X6(=BjOm8jv&XG7Hs%g5+CT3*|(^p%(AuRlk+yQ|;N+N~QgkQr{!JhU>8T`_YC z{ryOuqqF~J$_&>Hd2gk3Ld|Ez!PT*Ei%*z7mR$_FSGkxh87y5GPsmRB3~(8A&M(!w zwhgpgo4Qa5dP%79-rL69-hi`fndW%*yAR?sI><;V-oOJr;Ao+Sa4_=#PIZZ(oEyP- z0f9UgMGfM7*csoSe=sSJI<`L5TGMvMqb;nQ%DW$S;z-)TR}p^=1K)!#Nn=5`{sM8Y z6TjA?5(r`a>5&6r%Ah}yQT;5+)x^ju+(aGN-V}78o|V{~+Jy1=E`7zG*lNSQiD-qI zr?ay$M?IaWmNGNUh-Mjj-z@~awZ?&-(<_6Wb`HT-cxXn~H*9UL2Q=kSMwO|?k(zWS zMshj2E+sZs)7e5z{$?F0lS;VnD1y$|pB8~y*5UD<$3&Me=+5Y2lz#E}i{`kL%wxXg z*u^K(HYXO;>8uDfJBHQi7;0LC?G44S=TM9gq9|@tG$~yB_bsJMLUePjUFywM)OUaU zbfUauP*=1ZT;kpE7+@SdeJFwJo1$?xE>e(5w@|2=Q|RGLx8>Thy0XvMI5A9oxGl66 zT3!ruuNp0FyuWt7iH6w=ADcLV{tYrRGXFD2AR{C7Uxjb~&EhjN173~)1Tr$R|G1h0 zqL72f%OF!BD2oSB)s_qiF>=A21VK?9t$3)F zAz|vfe75)>@5N(=V`WxXQlL(gm~TS^V(5OaHzwvou$0p$Cdzf3%MF(gnsC{*sMw(^ z<8VVv{?M*>HWGHMX;KK_>?e5B<>;!qnKh3g5w$2y#5uN37`&GvY2X6scPI8*Tg9cE z$C?!D$}KlFas7r58DfxONA)hc;Nu~avrPc39@>AO24#;FTTs&pZmZy0!8$@8L~IE8ul1Jclv@y1Q@se8oStn{ScG@By9EptovAt(7DS;BkA> z5Z)_wv1wSz(D|47g-3Bh;HIn7p#P>LAYt5Q>Fd=pAezy;!?5zcDS#SS^(K*ay$IvS?unbVwO@q-`zu>b}lH@`ONpH;>W8SMeLGySKX}Zg8jm>-M^#K zwbT(ktuiX}3XZ_6(7>zjgllfsm1VCdwAUb>96o0<9qdn@ZEvGkccHdk9_(*$u&7ui>lhY_ z(T<%qPHi|)3Y~SzT)ZgI?TTibqdM|4Qhae$vF-1wDdMlY*4nTbDzu7(9-vt+dAqiX z*ncni(S`~!nNU+s0d%3|6V^*=KaOU08&snz8RxA&}H&&>F#dv-XdceQSb%~<0M#wye61O1F7fJ$vJ0jRA=dBo zojI-cF2MN>wYZcAuB3NDZh~BrKNgDJu&@dY90#fW0Ih-8-{L)*45* zP-Yx-;B+!_&{#kUTK^P)XS7C9X}!Jt)=mAClY+KD(+?^(L6S-QjiNJrcFJBaUW!dB zi0Qs6Qwc~l0N<7XNPe#9yON6DZTCE!XBoW9IypgM!6vDXi@*3{g!J&wt2FDeHy^($ z=Q~N$p?gY|ab!EBY%n2?<4?IboD@AwEu@ciNS<6Y(p`zzX$cLUJ4A1M(n~gb7t5`x zn_PAE#WL%dJ5Vsy5saIL&A_J_OEFu9NZ0TYOBWd#JbXSkJ8b^#C*5i!g(Az>bbMti zSZ^`zNU)OTDAP_G9U<|&ZlFiJy{`w^QQg8LEPX#!f7Vfgu+Zn9dXrem;!bdX&SKSK zEnti}$_qtCBkwK`?bXevVHd{il%1_Eo92JP9WRL;zrYz%9jW?r_C17_ht|ODhFHd2 zNPkXyHQVygVO^~=EHdgZ=_PILi%QS*u?^`0jj?{=RyzV{~8lon&<*Rn_seCX??M!|l{u zEm5DuFte#wcHHLPGh@}xz0wlXIl6tv0?`>c*IWrWF%`$!I3mb+_hG9?Z${OKmN@Il z885M#U;eF{7m+a~!nI$nR!4iQD!fHkaq&J=e|M=XwDy)pbk08Os^=-IxJ=QB#`K}$ z`28L`Z*e4K4VIp4C88f0Yu#ZbE@Uphneg#@pJ&SOCtx=t>teHfs4Dz&48t|}v^f%B z;(J5&3_MgVJXkpc@N{Yp$vgiQZixFSd|1chJX&SHH$_`(&nkRbEr+z9ubg@JmxMy~ zatpv&?O$KdvGade;XDaVCR)ii-a7E?sLV(OSd5tykCib zoj-Aj3KjQUKmGCsb<7a^rEMdi*}ml~ksP(ugu7GB;qm$#(V&`om11Zuk2%%wX1;4x z-NTnE(PJ7nL7*%SR>D^tN`%rHO5`6j;>d%(#<3FopB3h^N)Mr9(7=Nwe-U zNohR32l~vQOg&(ZG%oykAo#|G%{3ct>Q~3AqR!I(=<~7_Jy`($0sfBd%X&lX%X&vc ztYmx*E>(WXu{c$JVjbaZb&(oYTj}51iG(xoF4(~t{gJ@QunX=4PKNgY%wW_3{OfKz zRttSu0&*|az|K}z`Lsao0Fa2M17yw!0AmKgh?KYEN|jIi%WC*92>vVSpqkFv>d4Rr zI4!&Z@e;#^FaYPTkO_D@+}T>3cTx@`6n)}_K*HG(okO}pu}i{~FlTGso7`F22?|B0 zW140TtzLM7)(zX|WBV6ASAUkT-84c1T0juf0|ZEG3oG=Ck;h{EqVh}Yhi|HjXhpEtdb zsQPvPDw&|rE@6%!1>na{%jAdyN#&U>oW4SP352kMTXoX&}DnS1slGTl_v>Nrv1CybBz5r&rC#5X_ z${`fdKFNBWsK;K|=@r^=lR0o$V?P36oN8`{vd`|sERGixFACal9_R>x{WMD;d!1#v z7eL-S4Nm2`S_0W{<0zdUr=`=s$3(ux7Ou z6uKF$=#4X+c^lNYEsIP&*HS$bmP1wTJO`hMQ`ec;RRH(9#i<*L4^He5Ch%F?NN*RL zbGuLcS426w%D$cq!!D2w-e{_AFCO2nK-LG*L$JK*Hbzsx@N6!RJ~PNh>W-94eg+o`van8G} z!Ap8X_?1nS=PHZphxFI0hxe;}_hn8N+9}m(^`%=~tF*Y;EXs4gr?|!w5ia&}=&7^y z$Oc_?#Iptsl@#cyH@{0?GoER9q`Q_X1z;|tD_NH50NNpb4f0^mQ5g3zh$;C)+qc+r+dKT z$N7@_2PQ$_7MtKLC<3^;sui_xlLuvSD3J#h{cpScxBMl`Rtn_^Ce5b&kEcIrK};ye zjT;gA#s0LZTaPj=<0^glq5}8j1x}vYT)C8US7$u%nal(zB!j?BS56K_8f^*({u@Nv0C+DKcKVn1DcqbjV@S5VH0FWjDYy z2Fm3r_IC$1R?VS8u~XebFAizwG*4!Ca+z#smQkVPWg|#gJIR?rfz&Se#`1e&Mf>6$ z=`!}7-|vjpeU9Mw@R+O5Q)XA<9jP~S6e ze592sMszEy(q#O_ZN}f%v61PUIv4##*n`J-ECC>L1<-%nJyntmTt?eVU}Ij}laa3v zgsueP+E3`_)s+Z6gM$a}dTrh#t@IN-JO3+pwCL`KuLWfI%q*rFpm-3W1}HNm1pg-Fe0%)&7OPGm z8DQsfFo^yRuDHe{JPaEYNE)-8Ifs`P{i;}*R0rX4rh69F6}Xh z^s(k_NPs#q2;T}s@e`C5Ldwj1^nJH1L4?f(A~1bwMde+#(%%$tR~jnGRH1h|meTo1 zHI+y%<~y3lI!1@=QsmN0^e_bmk+a(*<2Z^OM7oHiFI0#+k=aJVR)I;b(MO#^Wz}ee z1&ho8_=8RR7@>3LY;KS$W7eThbt|xbZo(!nPSb`#jxKf(KFF@Bl7kv&Lr(bm$oSEW6vW6Gf>8j8n=h@fX9X?z0^&7 z5CWz+-OmpTMJPa1it&D!Q{4k3dzT!m8xHdESz>5FKiTK zk{uM{revnud&$o~54A8`DBg+1`uMdSteo&hj$gp7GM!V7(-KjJo}w>T?$$qx&Kxh1 zbvPMK%{UjoD0)X;Sr_MYFIFZ@uo@ZGlK5n45mug>KdQz*t&5lq3HlPK3EryIda*8R z{4uMJ&aWU1($kJ1L{fa3os9-FyBe!4EuK}Woj1&!;=H3D)L(8sO7xt9r%iiS<%`MG zrNmt)I-RIf?~iAni6UCt9_N?H@=3IXTfa8TjQGOD5Q#6YdeC4fU{IXrqf4AA6l?vA zn*XWn5$nj_&{x@cBiV;bOF@UdC3~X3_neH|eq7PQdmru={ODuus?*X6s5WLI%fh7qI5SF))`IJ zoU=o89v1d@tJk0|Jt#RK6g$m=LQ3s-rSSMdKzLFhqHcy`w8TUb$sbLwo1-U$gv-0ZjW62~ccvlquD?~~^9 z)xJvW6TSVcisUva9w&(WD;|7Zpnrr>f^UENmq-1Z^WMiYQg3E|+)OJ(RQ~$3_*-A~ z*8H2#WIqvG;>JACuPZ3C)dCU$v3bc*)z^YU+htc4lD*cYC5Kt z;a?GAes4e~#O%;i{kp+!+P@Z9l#`5N;@|<{!j_-2mlIX@^b{lA?9{Mlz^RZxXY*j? zTULDL$B#4F`_zh7Z4#G^sPgcV86fRjN+x(QdB{+(eW2Qk?qsmL^}|j>Iic5J*9aAPDq^ zyIy!C!X?v(^^Mid+8;Kze(;i{+)fje2M-zE%U#JcwkCn!t!m-TEQkQ6Ac;eR@bDk= zTbE}}w}MHKZHIS~R1oG$cXDG@h6S^&Q%nV0Exdhau3Ry|IH{eS*kOZdgyNuYYA zp-lxMtOUtRf5mf?kL`+0UcIUmJC?I`-?R26<4X$$JrH?wtEe)kG~%|~IB(Bk5neg% z8|m`ude)$A8^a{GU!o7vNG144HM}BOUpUy?z(1!Ax4tgf;s+_*cxHb)fZz+=4}xhB z53`@-uhLLAeh&QR!_hY51uV%{mv5P_`vVSyfC^S>vGefUwxOBA$k3|9s`yqqZnV5cxAl z5Jd~9-EkQ{I%VmRQuWeq z>R_g{{^(nH*-_1x?WEC5{c5cqE?DyX`8MZebXg<|Y zNN~Ey38si#5SD0Hk`Caft1Yo$Cb6uw8*R6Y;C+03uC{7&;);=tBUgmh|f!hzailsWgbtLmG6K6l4@(HY`m#po5wb z6INaL0Qyd?3NmJGjPC6uycK2eZRbvkq+>BeoOTh{&BwHpx9jMr_{w2&v|X<_HkC26 zXWHkUj%%Sae#PCtlSej@r+X+f3tze$z7-PiabDY(?-R-wFUvw3shd;X9qivE{0NG9 z!mV~sWlS$olZ-uZqw;#agmn>^6mYA^7(F$4(0Sy4gNr3y!arpkSYlx3h?>UVt+X1S zM1h9o9y#cSTp;P1+D9px8^*|OrAVg;3yS?Ebp;2+s~0w=Q=ZDMCpXAo)p*xpnZ>0S zJ}=YZO~I4~Y6hI6$%Xt4_`?Asq@U+bmgI#_lL6U&$IW$xQMB!zG|OmcHiZtp5Jd6$k;#g;FL6!PkQ~1O_xw~Y zJN5@Vsf?6)l0pbRfu^vf6x%?@Ez(Y%xf!8#{yRdoP3NM2c2oR&>Yn8edS<&Nq<%(& zQKHkgp9bO^Q4aLL8#%!dIK4r_5(+)GcfDx?lJ2cTTbXUT=wpMbB$Xq}JU6)(BF5iu z<$el${(eK`77f!pB6!`x{7nH339# zD9L`&cr{OV{(HfVgQ!r!H3gaYdHFrSm{c;i_`1#-%~x_zstb(K$P4}t4x}Qipsb08aN}(BRjRZ@8as&G0Z%-D(8rvc?#3Vpwc#;x{=D^leK2oKT6KA$ z);{~@N3V9dHl?#F4;eW8{6&~{(iZF4mXSb~QTWPp^ZS0WgdAQNb)g@0vI`D&APNpp zEQlcL#l{22XYL{|9xUdpy#V0}cXw*qFaVzbH-Ah|&o<3y#n3g8Q0irAXvs9YvQ{tq zMHLH)m{Y@yYbY$9;uu#H3R^cuf3oN6i1KbUG~P_T%k~ya^73;4-pc^OMUeb0Rrfa@ zDa&}`yT4LFNqjr8hQXu!u`~vwzUq{(9Nxwa-UhpGI*!r6(Gu83Nn%G5qWt+ab^QxT z-C^(hrW*nQgc~6BxA^ZKaq;@lu^akXOa3JJXmHm7Pl?r*K;%OWI}JYR2*npRW-n6L zWasdV5YLZBgn~f^6b38|$NG9C*9jA(3q)3_*0gfbxfBX)Q7Y?$n-c2pQck>w1SwUn z<^Pnsi?&oZSr*i{?$cNY5o>j|)CL`#sD8HD|guTf7F z$ZvebcL$M6;W3d&QKS5?3Kw*rn4DyR>Tx#q8~C@!;+}@IY!%U#z|q8G(jc#k&5wZZ`LMPhp+@TC7H4Dim4G zL>vG7rpT;N;OjP&vD`9!9*iwM*DL)*6^JUhP1lz*ty`y=E#KIN2txa&YScBR2KLTk zQWh(IIUe7xDxW~ZiPYWw!l~4qUGKRbW(z#|(wZ}Hx$5;AHyWlWJEy*&nC?JwL)BuD z`Ukq7r5Ake()4m--X5-*7_s~#f3L1Vh364b-i(t`pmHgE z2mzsjI}KS}$#i2gongjl_yX`ot?!Vn%+@g~bNdCKy8C`5^d928bxGLB(!sCY$trjA zEdKK%E6Dzps>2d`eFJ&^bUatT-_6PU?PBEM;?Ejo|7Aj7bX1Ig)hLSPXp2;DxytI~&z&2MRXuSlSWpa&G)U^^ z>R-E_kcL1(cKr8wnfW8?B2#b)p}_8!^!-_U6LN#eV<};^r|Kk<_w3SN5pzV?JXlb; z|D{O8y=L6d%k>d6C8kh`+Z*y!$v^Y;@OIsO{mDb8VWgw;8r6u&n}MD`3Yo_q!*zA; zxc8k3Hf2lgMwJXt;nVPC!+TY@UanQ*Tr0Z}ZGus5#dSJ%9KRx*bkmEuu1( zEV{%PFW{<|9{A$`-nw`dTjUl_OoP`mDYO27?VLiWQthm_@Y|!DdGD|luXLxWN}*4K z*@VrxspH9Sx|+x54s=gcuMe*idbQbQvAgM*--8kcjv8eOncZ}L>z*ey2K8@NuaC-T zG{MBx3kM$s5CYtMInYE|^0+08&Q5r(;slXjN-nrZpfFFUV!v_(x{B{n}7eR zzsax+vL?7kPW<+2cH$u6{~+zGgW8Uoe*a4v zT7tW~)8g(>ycE|`yv5z2IK{14aV_o?cPUWZ-QC??Zu-3Mow@h#XPC@n!kLp~Pmb+= z_p@9QNv5lCMDX6o9TOH38G?5+@$kZ7R;2MX-Ru@Dzb{@IxfolzNB-)3UQSoQ$(Ise z4I4f?hZ0`>ziKN*<=b+N;wS`4nK^WX1I5r`>CN6njN|DBggoOOtC zz&e%?UXk{7cnLs^1ErbH7o6}m@>bJ8@O1aIRitZ9p2 zLzu%R2apN&LGXci$QoAMevI(G9j^sxd9p604jx~;&{bPzc?9$%gw5DWP;V}MyVDYO zvJ?=a4D(9~jbAR}MhL*pa`-jC&9sVFXW&`rE(=ggzk#r5Gn z%hUrAddTtl-HS=s8>za)0O|KSYB7$hoSmy`cj!~i2vOQSe!WYVcpedd?$~pZ{mJ1a z_u#>1!Diw^zh?$2mxS{MABkquxQ;rW^09XtFYn#-fPEnltndzkB}SmnDpO$bh*Ivd zPz@^O)b+%8EW%07prVyoMJKPIXN2Wi)3Zl5?!bFddyyB!;f^$VP18}8gz?clb@D}1FasrP&}cNQ*?`!~`W1i-7`Wd1%I---N8kH6YG z3cVvHA~B)#$G;EcqjS!lY$*Hea$sq-&g>96%`rrgS@0G%*ad)$4;h}=F3@^&a4>g* z3+;UDy zTz}v8Z8x^F%#z%qHt6uNs%cTGrJYkWGG_OW58`VOunAD>+hh=KiiG8iKOe$0No>vL z8V6;pqabD^Q**ety49N13cMxL48MDQU6cxVY0iJ05>gRvWDMB{*4Ua&zLaH1bGR%` z`&Cx*LYD;kj=CnRUS?)ru1-6)G=zenRaRQGgc$>ty_WuSAx?j*bx)4&Q9g2>*RxsA zIb)7_pu`bY(xa?6ReX=$$5fPh;Y*jpVaiTFwn;O|!dLGOf34c0r`u9q<~QN@b>t(l zM#(DSv~JqpMZG-Q(R)%6GEx!9JwP38XS0)@{N+SJ$Or2E4S;ZNjpJ;`` z>946#);*1adBds3Yd;dp{LH17QRzBvChlY(nqI5CokwZ9J9i&p&-k0O!ejZv>!HRl z!wJ3FDO3xW6}~Ic3-!+}7*ql%w1Y)So+vPsC(Oe3D;4aXWO$OxH+tc0_2Im)75w4M z$wfs_$pYS>=cS?9+z% zj|i;uW9eht)goWTyihYOyuupTZ3ZR*U&tdsl(2$hEC1F|d|~Bm1h$j428iS8KGe1* zP^IECQ<5icl{$pA{-Ud(JY&y;J152OVv5hqN(yuEGk>tK8GT(0<=4sOju zXPl?0SWkDWe46M8(hA2ZT_=-(b^GU$s@2bV-l{9&3y>+ae*5&GgC`*rDCV3K@pO*3 z;-~iyrv=OG3fXT$_H}xDp*4%m>r0R9a$7y@3C!ghX2`>nNr6h30SC$tg4Z_LO6i}Z zL2nU!SI+@zGO#iT7^jOa)iGg=_W4v(8$9F|!L4Hxb|-kdTuyR9FLJu#yCUYjWlwQ` zAlM^J=9gHpm^AO8tI{%W;ov0{bC*L7FN)@q;+p&g@3Xa5^Pp?f^dqfU?vB7v%m)+~ z;X6Ks5tr>9JI^5@lM=gvp78Fd#hKyP2F#RPP2Q3(6M@Y)g`KPw$rOp8hnQlwIlF(^k@H#fru|PadyI5+J}l887Z~*1~OFEhTcQj52;USnAhH6NBHM`JnSs-VS_4# zlk~LnDdF+sGXj+iV*QGe8NNrI?5Se{_J7a;Ump_W_c`NeEB-6~qr$J-to!cLgLc$c zKb9;~iEp~`=WNsMmpEa}2C->UYvtd12tXgt)iIXK0!`j1A&mguu~e-+^k3tKBx?^U z*lSv?FLSGEO`dB?mr5-Rxv8mDi?F6cYM`a=jCDhfx+goA_mfjT(64tc%FI2MvTvUH z+sdjrHIR`4-)k(UMx}i1+w_6W5(*x8$LlbL3@BEl$~r}KsfDIdeJe`92SS((vr<## zt&wbD9NT{f&!UIL)iRa;!_E5Nz*>|tg6Q|0?*drLtXL87ITmITlwYuZFwIj$52+(a zJxfrMn`@b=s~Ksk#Tluq`TmzG3VIBm|4%$2jujopPzQgg{IJ+^u^r2eSQaTc!1YC&4$gRDkIhimGZI~Q76CIWxBv2(1&kn2G~l9mzRuG7Ag(GcZsb)&Pw+?jUT^mXcUM2ho-W6EdO9zx_~@-A zMf9)}VQ3qkGH2N{&M+Fxi-@WD?`Bfh4rN%0Tv==|3)gM5{1fTFe=K(P@xsvdz_e=k zqIk60aE5cp;X9_boE@@lGBdkgkaF6v5(Au8u36Cl>$h1T;yi!;Vkp)4v1WYEH``^@ zZHp%Db=~2b5(z%#ZzUWowZxU9unLu}YwC{^ip?!y53UYlv2Ve@OE`R>pD45eA8i0v zWqWR_)dxu8_|YCb3%7B2;yUq-F{Z2QN@40dYukdJ>T#*WPsr!*{~V_YTZY9h=S-Q( zd_@~v!3AD#=?VD_l?BJ?Nkwx~JCqqy(n^ZAPq`}T3ExX^e~GS_pp>O2P3t`FV5QQ% zH(X1tRDM$$-EPe;@3`!bPe5$_X6>SW^}Fw=FCY?1B%mJ%FBVdX9E}{6$SaKMb;`7M ze|SQETx(E;`N$D2NNO~Ht6MB~@f<&5v0M)t=i6wI_x72E58;~r1k?4U;A2Rk(G#UA z3q2~c(UXq!`>>NivcNqxqaPm{s%NjuxJWS{l8A=Q{@#I4IN8R~Kixz?=32w|U~1&v zS$e_)El+pd!2GqzT_XpqQr{1JF6sFZAHP$mXd-W~%dRS7QNt_#Bo|c-fQtV2PqCrW z(c*M5M(^m7Wcq28D?@&k6tb{MxwM}?+RSY^?bXDq^oh0_ujv}+&PIi>Lr?yO(&W>PX41Zu|hTKCsaIj4nL}dyIxk zjz@izHT=H|NY;P1f++s{0E6!RKT&yb2;EQB;1Gsr>233x;!nzar7St$j(2RDn>Pvv z{yb<%F2&6C!NfuWuonzM#y~!+Anv(pUDgW)o%-wPFm>I$1ErbYI zzjpEn?JGy1$a)m#ZJsWkXh|)WEDoCHjY84KQKSwS0|16Zpi&>L&qu^TP|FGo_avLq z*%=uYqMivNh0s&}c$zrlDO#)-LQTfBb=9no`ZwF63|PFs#1j&Y(~KDxFA?THTHH1{ zS|+y^a+=K(R2(Qya-wb&V!B`|M;DS8FJHFdX3Yy8+rVnRuB1#tH*4q#bOXYw_DV0B zMo6;`8zLAbxdIY<*_17-nbjS6m zVL=4ZC=eZh;R6px2A1HQ-#uY;Dj%sMeum(|yoQJwT;~%tXBUKdgQdUpEO=X#&Np?P z1>5Q*C}9)zR!MpSL8`o32dQP~4}w%kO|>;Bqu6_9#+Bd z933m7k)BXonI$u!?T_@~QB09?ooS9y_u(%YjVGRr(PIh)>8D}^5)Xgj{B0pswY1^w z3etx{An`sE5kex))8T`N00N-^bhaQ~L9bZjCp}@$K^90Oh*>2Ch&jDefAiCe7hx}b zJ{my8>n>IDhleF&C{rV$XUULS(bV;QsL-^PD%of#X1;e0X0c?FXE%#AbMtmST^7*V z;B3~R5b1g!D2n(uBp);2)ZO}kcljmbT@j`-Eo#<@kV#V9F1KX_vwNDj|A(VG9YA6f zdDRpi9kvE--q_yr#qwrTC1u}bEDl|g+7OeF{2>uy^4*%x+w_e-!2a41&qEutvUc@sJ2g1fvr?)RvvtIc#(@$-m zLnV)}A}1zJS_8b+>4~tEg>UKc9k3l2Jz#V)3ChDb<+z3xH+o{{n_dgm#|r5q&zF?@ zRFgGNlI@|H+*N*|FujzccmCJ6uB8d9M=cvB*+zr4pOOrDSlPNR8Y^9dHJmXp>~SAk z642c!#M5b0FHBvbPng^UOoKQ^a3N%$4F7DCl6~w`=YaV{Z2jc{&n_bl#%US)q06Ne9-W6dh1!Y zyI&i*Gis3~N;O0#JvJGP{iMedDn$<4ObFJcpL1mkEghD;=CC5n+kT5j_)2fqw|)I{ zwV2@j!t8e^5R|j!*<*M7@UpP>6j@C~I51#T36pTdi!sOr2CZ&cr|1^)?kCAxgl%~V zt97eA=w@eJ>ygjwO+t_|(cnjr5(<^9m%h37SLW=EzJt&C zrvER*S5e`(Tv`Hkc}-$?ByL!y){wjMJ1#_P5@ScOA-oA*R6p@w=r|kfxtRpk&un)4@D&UMS@ zP9IJjE*dk;CJvVmrfpnYZeFw`7B09#HC=@Fibd&(v6sJTH3NGF()}@pneo9n`Z-Q6 z5{7#;$qjfp&Z5y-wNDJ8QgyfYXVP16l*6A9ptcf}lL(Tb^aLHz)tm1Oup+OWD53|| zYC@&3{w=NC8ko+`VXpA8D?-@4usG+6Lyd_ZX7^(2)5}Ev#lmrw-f zvYrVljINrB^J@QIAhNIgu%S&acF6mOZEFTLvw_>fuLjecZ@$vYInnLwO{m;j&b|g; z`atkb#b@LgM!&j)TYBD0cPR__FwU=tzs%=p}%_H0W=C@0TEa*R9qiIp=N{(Ckfj>NU4y0*pIA!Y-C{g*l?0-dvzkD5k|N#z|@$wA)PQ=vpuC6jCEV! zz%^^xf3RujwG#YsQ!#xWoa1=K1Crjk&G0?-M0FZodRZR(tjBl|Ev+K(;B9qo7J~1A zJ$$_1P;d|!$F|`rPbZJSNd={2!IQ*8qLS4&q@uc=uj`&_dAQCve0+6F`hMNh!}(TY zN6!Zi>zfFWKyyslUMFj+J=T4QCm;U#+OCG-+Jo$0Owl6V(f~~7i%q0ek9bKG5w;=R zMhNhL=P zP9;l)3XeoBdlC6lZMS;*8)Jw))+<|a$cm3#x2RuH_2$2a?Jd5wI;A~EZ7#x+H}hQ{ zBv%5k)JpNzf1@V%3Rg^#52;WGnj*KfxSp;;&ys+8zxh&i$25QjIpjA7&-)|-G5{nK z3=6;%;yPi@#_ADyLL#&uZXr#!T_6H3kdRs7=H`W+yxkidbo^GBCJGJm`sY*6j45&> zE7^X}!##F%>2Bf_za}xa!{Z-Im=olGgg^gQ?+E^KJ3hOTs^)DpM2d5OQUtSnoUdu2 zxpA|3fV0@&dX@aRUS)^jg>`hC8CH4@J^e0Oy&!TTY<9f5lrH%_M-E4psW9KJU_U%1}-AN z2Ms0o#bWvEabaLa@OS)V$s3mi9%I9Y*UmO^>{M>~L;6;~d%oCEO>*P>%Ewfs$&`DK z>a^|kc*1z}A~`i~xZRfu?kX=|{9_dRA=&c*Udu{`c?`H7c?w+SNKRRJ$?6PT}l>}=e1?w$qNnGMTm(4MAGc;z_ z?N|(5Q@0ZMZ_D2MOA_}WF)QnZd;-ElE~3TSs8lKD<}d*{fU zXLxmPAqMz)KO5&fIGae1_>%X?q5mNY2*xIX)ztvN zEnz#Rb~7zF?M#V$U)fAKLW)Wk${SXrSRu7PUZJLNL)1?78{zNmEabp^E(7QU&I~`XrG)x* z3WU}@+8mICY_ZpVSx*y|Z=CR2O3(7!;m=F&O3QyP61~A%d2w@CJm^<(Xfy=@*unRP zs$<^G6qz7bZW$lAzlNo08S4k)0vB%|&^YJ6`MA$ooCrc)-yFqz#JFhONhdSWUpr3c z>F41Gu%iJ9Gt7ltLNGlZJSOq06VC?0sl8pWV=+udt1NKs$)tY^7kP7Uo!6|1U?JRt zShtusaOD<)q4`IMM^N%8$~k;qBS5q3@bZF&QEH1@?)Kz&<;PW8F|Mlw@|F^;+ua$9 zV&7ZgH~y>8eu>KWD>wl72@gc!qe}1P{WKphx$k*byQI1QF>!#J`*_^^Ak}9zckzZ_ zLC`(N?ouJuxZN5^>#TRd^SWY4eINh>=wN3c9wri}9$B()lFZUrIT6fd7o*7v&Cee; zqfrVFiOpT|f|C%ke2eJ%qlfu((?+W8_S?sUKj>)qxO7DkqW2>Hf18J?=gT!; zCxT^Ry;1%qL2)4OUvy~#8&6&>lngGv3P&;jJR$RZ-3Alf>LUC;?#tgZa*6&SmrQTA z^qBDNqbfh?N#K`9ico#quGw~Y5I{SkB+BcG?{1ReL#xRy0*ksaJjT#D=g`nS=2@uIFXvbzJ2;?OJFFxgdy|8cwNc7N@cA0 z>-70DoLb@G`b$q7haYyQC3iBXh_yrZr7Y%~FbN!&F97ot4&T}oyyLD( zX*2qAG~OE6RyAW@Rdpmap=D~aox%T!p>FQ)ud%k%DHrh#65?4TN7GB%hE5@fjjtmD zy2Y(KfGef-`>8s8a1fy?)>g0bH;8@q$ySI_wyIlc7t`xVeV-Bxzi5 z^A4!n2|F;G|LIsBn0K)#ir!l>zD~#6G>Un2vkl3x^(=G-52( zyUPl-yqWO#yN@%Dd~e*iO}#X%u2bTZlOkKi0?+a%3aJ6PU)5aUgYzruN2IZ_W=5^6(O>m zt`g~q>DMKWyl9r1oJa^4b47uSKRNIL+%9f~NL8&-`XJf-nX($it~3vXP958>D0 z#~ex~8Y@E+40S$wv!sZNN7^YYbTrJjzX~{!BR_@}1lBmsEaw0z@x5R&kqF=e0C&1f zE&&L8w?B2OjnWyOEd8ppM5?Q9y}fw&w4)$la}rGSyPGYHJZ#TK$7kKS$GxY_d(exz z_HAU!t{e|fztYUX|AQUzF#KZkZ={hY~sC`Xg_HtVqkBL zqnO~|2Mv}L{SV0KA2CT5tc}^hbqE4DHbNu{IzqEcaG~~?C6ML9hL}6T}1V|U`4PYFnF&3!kw?zu~>NL%b0SyEi48#utk$^BxXw6W=C#3CjfW1qxR+Jg zV{*_K%D;*@<-(^h?lA5e3`xP*O{(AvgA793Ly|DrXyn$|L=8h?Xw8ltz^2S09mf7J zOj43BJIo4nG=40!n}aY$l}MuhFV=rn(#Awn=nR(2hJE}0YntGX-@m|^QDA+{fo9sH zE}ALZe-`e;SWTiZQv5gKKdIMPp^qh)Xeoix85xJ$kdYNk7R*^=@qKntV^}xALm~P} zzt|~^ptf>VbTrb5FgVpea~k{`gL)c}knWE^|9NvmXs`?>TKdlB|MUsz0t*3@t6p&(#1-p3i`s%xZGHhg`c{yX@2&Pel4Arah*; z|AAKzY9nm8XEPFJ?3!2LZd*w}?CU07BO$i3yGbw{*%$+PLJG!dYPYRydjbUZ8U(ag}SK8*kQSTLK&{`;^A;_cMXi&I#a6grqiU9_#ggwtULaQf!U0^MbY zp~UoMyJ+r`#GmT2yoUEA2ZeyQTru^S+X3#)%X5@(9~ z_o@Y~Ibs)^v=WjyOVq_|unzpIRWxk1-hI7aA4j#`cs!-#+i;(G(G$k4`$+6jk))Xd zKSjuhJI0V5W{$;qxVFWt$s2mt*Q;X0SY4V7w2Oy> zCE+On2_lFOSQGBzY>zWMq_N+Qzor4f%#jt|Iq%%FO~WF*-5oW)H!ZL{Q5@5uV_c}h zj#NR|&Q6VQb2;?TD8?l9O0+-%MdVsXs*m5Ns{qh;76EygoUF{1*&{_?2qf&2ELT5; zF{%7%ydZf<_Z=`UnliX)T-JGmyw-HVVa9SZc;&zS^zULc8MEo6@jtX!G8eJh&}jVoTLveDQ>Fyc3tjLj=^A+U zj%A&KCp~^~^WO6jUZy(mJ5o4 zZn1pJ({dX@45jE|j5_|XsC3t9Z%IMIphkQGwLW!83IoA81N{f*nkqIN<=ANT%vHJb z{1zD|)8r^jcB5ta`o>}r)5=ETgBvPIMpLhzsd&YD$DE4bav$4p%8$#^lkmZ0Sb7nU zuoJ!zqqPXv>p$KzCP3kOj{fZXQJ9ieU0^qeg!OvD!h46`rMJc^@$`})GOJP{ptj2_ z$N4B2Od2rd_g3C0q6{AV2au%#C?Na9V)~y(e%}=z!cN=$>LPEo{ku)P2mjs*>CvbZ z7hkXNAVwD3Vl&%%Vtc39ts8=6xkTv zm&x5+wy7Mb!aRhS#uZ-@~@QaJUWp-KeSf=sm=qir?4Rhl*!bcCJTFZ zbG_8bq)ervG}3}p{;}ECVKolAzEL_C3{H3QpAi|aS`;et01Wq-ac%x+W0y|*1*jYaPc&;7M$2j>@w+c{$4yPVqnFlR;TzabuAph~1{tCPpC*9wB&eXpZ2HN@E5~p1FwEgkPJ? zbq-gOQ`zX*`f4_~hPB+7W%Dhp>cm1KVnu?950A3De|`BmZ1)t%Gqznul8>`aR~kdyQSh%!J^hapCW11eAf@;?o3u*m`$Puy-+MC`)6R)!7}f7%Vk@>J>RfK z236Oz_u{{z;tOKV$(XyT@X-fXSjv#Xk|WBE#C|slWOnjTHnnIyzwpa?V(zDfT^>`0lHUhOQ?0*b~TnW_L39m zZL!{UliD_1kFhWA)Zco=rx+cnx4JdBNzoBf+BT|8zBt@Jd4)d3%tO|AkOCoVXh1b; zBPrJO@m`jn^fN$@-6*M(<@Us1=Wm)>pK?8X$a$PRc~r+r8tJh&F@JXc(6Eeziz4*L zPbKQhlt$en)+;PH(B<6>q34k2#lcl0q6{p1l@7pm-a1K)i5Z^|`)C*GE^SDSwNhMm zTbJ`|u=H@(chlX27`gi7sxfj{fPs(U)OKf4gjVqv%M2~z;=Gxlb*a`YELgHn0A!Ki z)mmN8?67IzM{+Xqp6K%GbsI-JJ}$R9IN_YTT2x_%H&~_PQ7aKIjxVHr`ZTPvk`MLU zJuo>ax#X_a(qtOu+5)9|Z25CdH#o5jp^t|IhcZ!vhj$eULS(j99ProD`m`P5l^n z8Ht&<0@JsjZoj+nI7*~sM~WS^PYSGUne%8r)|@<~HW4It}g1F%Bin8UD+BWSw6Y#+#pdZuo6EJUvJ{3&iBF zuGou>RXfm_{=lUBZ4&$$2nP}gw)7pGOtm5(aqDN}BgJ+|ZM>(%JB%u~k4|ciB)#Il zx;%KkpR1So7;mbcEhj$$BID3*37U6v-O+XFbT?|hGg=X$8Cur|5dxW0lQk9t&vdxv zfk+G?H7bHLo z$Ny0ujuOQbe8BAkWwdzx%E+;BTs*1Dw72$CI`=wT722j8-f53FCZ_th6@$f^^L*27 zpoj+>qT$sl0_swE319W?ua&I#%@eF>KrqHA zN-%8`{dh+q|EUos6^?IuH&znzm6t5|Lce8@muvFwekRZsnhNG15)Bq5ze%p=)p+Cx zHa*Fdfie6ThmMt%2oJgI7ZJnt-qUCgIn}rzw$SG9^U)6XS2PG1a3^}1wc`EgT++K- zQ=QW2&@6ARoahw}WO*ihX{N2K8ZaMMlrC(6C8plORc~8H_^1`7vFb<;{H1p2j%gD{ zR{6Rk921trw%s~>Ms6*bSGcyEJyGw|aCvteBcxuOqQ&^y?rKo_-xvH{;^e;P1BvB_ z_70d}F~IzdINgJ@Kzj18!@E?S{Zd>zlsd1<^_TeM>B;#`Z@1Q>gO$$w-aHcnC4XrQ zh~J>yP%Ekmv}og9O@^^f$5pHkLbN}ixf`;Ckg$>LD=!?)x!C`gBMT|c3n7Q8&%0sS z;7_Naq8PYq$Gr5Di2_OM+g23i z9=?aYHvPM;*F8$ikAMZ#~%ohP0lhq6H=PuD3KKexjjiBBCcPBNqfgVm>Ls8jyr2If6n zD!3jfMLd62xs!?%p&5Mfi?^`MEA?Q(Z>+Bk#Toawe8NH^VHP z_Nquo=b+)Ym9m@4{)gS>hm6jh3$vUwi~^Su3_N>z_uhyvq4;!zEktUvRosd$?{cG#tSr^r&qNs^soe*X+Mem?p`K2O`!^GNcHcobL~#8vbf zj*^^A*RM<4$l3b1YZnqt8UvfRm3XZ}C%oJz)jTGCxF&u=Y<)O{utM?-m4^_<(QK8TV8?abYWqmYczs8g!ji{+FO z!TrG{?C-QV?=X~vD-?}-ihVm|PWCQCABcX=8`VYK5FRD8K)JksDjY0s2o0NFujTgg zz9CPM5fTA*yk^j8vuhWeIEK#uF6&MR08nMii>!(c><=xK@&mWtL`M2EpT8J?k%@Pr|0g2BLVNY72r$LP zXB>Q7+A~|WFwE61;>Uv(Q~3}xYndN)*|zlkBg%*lZ-A*$BdXGYg40w6rTx9r!EC@P zR74ije?I94j)vr{xX3L;A5t2?@;kRjb?nM9`S!ylc2$45Jnl-pS1GuIvF+TLqE96< zvYF@Nn%KDzJKw?KEIzU)#&3@f^L%Aa5B$vSK)L0T9+u`T z)#q%8%CSd_$AR)fXBV?1d+L}aP`iscK3B8YOBAj`_Y>*P9 zuQu^lb6gx>=S)6jM~*LRSO%1au0qVT4c|Woo9Etg)-nS+xtl&9?NlJc0*9q~SpmtT zY(eOOuMKWO{qctE0ENNqs!>-N`yoJHqw)hQeKuQCnn#gBNB4b=|L8P|jT_tbQ!{1K zjjp>X-1<5<06z;9KZPwc|G>Sdv_8_EbADWm-pn`#%`AcTnf7wZZ>N6`FIX_MxwDfN zwL5RMwsWm>YVF}zGN0`#;!VQw$XnXhZh}u0i zZFt#fC*m6`#@tF6C*4)o%JHrTJrg3^caI2 zn@{Z7wy)R~m;BXgBW2gp%;#dV={>Hk>cRHN?|YdannMXEH?u36y7a-u0EWM&Z}^~Z zq>N2VNk045ewNhESF*WsHyTGUU=2{^UQqLj0A{laN7ROKk0B5_@u;M#T)~) zu5NLpJbFC;b|ZXo3AzFfr0_8+c7vo~sG3YsoZO#Nj~V0(`!<`I=gp{&KAU5H{>0|P z1+}HqAiaZ;`I~v|vo^fF_Fx}@MS$uFAw%WKZdt^6#P;Cgi9M{Qe|s-SXG3AP*9Rif z>gvdO@VXh_O8ZHV#M6*G&NTb{WVrObr-$*J>oEOa*33s#0#?!>Jz>j`U0D0(lT|d7 zpOO0Dh;h979`PmvJsV2VlVnlfk+VeZ$E;bY-~*Vs-TVyarZ* zI9dz7)zw$y?6V%O@7&dtIKjceI*H=qdd+-_KW$062`1KXCT^R|od6sP@+~sRo7!51 zfr(!VbC&fSl`SrBA5n5X7d5TO_umzqwy#ZnVbl#(;9xQf@H-tR5R+c}Cqu2{t zXbKq_-QFMd(Kamqb>Ram#ogYf?2Vr2_Ox6W`pIc-65m{}Sy#{BO>8f+@W7&B-(rkD z)JiZlSy66ul<+2`uctGO@c9QZuaplI)5XE9j=0249>mdgpYip5hx60Uqpgs4qKUZp z0S`GlP}EeES}|3Q9&eEGeHx!{Ov6rS4^QF8uP^xq#HiQ(eWxxfVS=UQV|B{7umFh9 z$ITp0|8?+dcfE|^(`6q9a~2Q*P*N+MnrQd%9KGm7zQaE>BWBRrXx=M-achev9FJSt z>5g+^$E(M%$5niw`rU*3ey+kZe9{-D5XP|m&|%xfHscYv^1PDKId#qJi_QtTD1T>M)~2>a(Q?FU73 zWHI!41HUboXjq(9wjImY2X`wK3`}E4{$;n!Xl~YfOrKpUjIg&@?hc`(@`7TmRna29 zZ!cUV8nECeE;$r+{e<+M>;t2Z3QfEesfQz24)9qmve3K1`LTqgE$oa-9OrnLzhtM} zQ7AL47oqfGHj>dH+{~4rS(>H|J3uovk^MA6%G`y!+djN`i+C%{w9f)DqXVmW`zvM5 zx9@8vG0@lwPOzw%9WBN_s`jJ4M)a!j>uGZN3?#iGGbBn2!%^QBi}C_$3*JquIFSrZ6`Ka;4B8Zq_>Sy9_DGcpLb*4lz7jijdZyX3`wPhb`viRI36`rSpgV4aMv6l z34j0UMkDx49$Do?Xk@dgZle_cnnd{0kzm=^5K+7237R+zw|l{xho8OQDacsHka*%q zb#coiCTXEPx*Pq02Y*R_&3#Ls0ub2>z^_6mqYOSJWG@WoZ>(kY{pq40%6cNWDy<}B zLwa6*r~7N5L)|@teIN&;iKDvxD~}0=#VU9}fxB|>k1I8yoFqA8(=0f)h212YX4iV$S`?3fKXLmvH#J+os? z5eU4z!kGn*1;O9QryQe7$6njzd!WumNrkPWNa%{TvmEo}3# zN83I0M(xs^N6r1S$7iqfjK#&P%Y!|xMtfB!w=cGG7w%>**EKUo@AbxhH=j1crWHEB zkKCRQm;+>>Q)6ee%PN54zTD!-J*NB7Byo2alhwh#U)UKto^LFP>+zx&6+|W(rMNhJ zy{1)^U36#JDh4ok*J_5qkOd-evuP_<>lb#Xr*?Fls3qt8dGv*N2Z(+7R^u1A4(V;J z3j4P7<=l?a!V1a9s>uhx=AEpxRPT5_YI_{2c6I->#WF!LcR$JfNDVl)IWy)}@V;qO z-ow=!A+@JIi)BwxPt3F1qiwnWQj1%!z|YZSuJVyLX)M(gaV?Vr5pu1FczfpiBO`YX z=I5qKcp^WApM`+^C{n!3e{OL%wp^I0;Jq1A;%BjVGcn`3Uw_=VC>T>IB+N7w+KQr5 z9X3_B?B`ITkBJ9?Wx|RUwnL2?f6hXVGKE0SDevYc?AXmor8chiKbq$8j8SM3-45GW z;?kQjD}N@j;tUO8#mF`hX#~mhztKM=KN;a|${tYo{Bb+K5fK2Nj>0moXTd+Zn^J&c zPbBRRO_T8@I=wv~noEw}j>uO9GyO^xjS)5Unk9@b&o~4x zkQ#4{l7%%1B>mR|m7A`gm5S@D2*x1Wm@y_qk_J}lnj@Jd#)!orA|BE&_6kGpl{lIb zgCC{@CC4O(_~1{;57hJ=?TLOIAwQwM7?O0xF~NbBzvW^v5pY;o=*B`2**^G(P_l-9 zi1yUG7Fg-_;vVvPn0&(h^Q6vkbtJaVP-20Rijz#c#nBSp9%s?oUkdkom@;Ea;e@27 zIwkDw?(0){c)EVrbZ z$dwKGk^~`KL|kXRk7f;w%ESiC6cR>dxCf|2Fn?ttoT#@u6gI9@8I&fo@^$|xZGHjE z)D7QO6W>}hrJmg0$l0rW?~}^=uq--#gUoYD5$5B|0 zwZJm@($*bE&7H+RZ2y%E<~DTzuu|AgftsptehL^bkDOs|B?)cgR znIU24tJ3O`zH`#%Cf`92?qK*$>K{M>B%;V+;aqVa)J&=_D36>U@nua^BQb{;1+;=#Z$eHZwoJ-koesK2J6GAlFYb)za9nm1D^h zgzk2vvHPPZs%OcZTqwMp3e2y1O3CHi^{Z^0%hCJ z;$K#1ZeuPN2+OGiYF;#GNgPXCHvH~C^s$H zwdzFh*6tY}L18b#C3@B2>!&oAYPH+HFULwfr9nGgyr}vZz4Dkr+VYb-`Tk}AP=W<~ z_5+w3k(~Uj_d8;t4JIor+bH6yg5DnV(t`=%6S_%WcKX{)LD>tidOmfTw@Srbvv<0! z0=Q*@uDhch-zmU@^i*r31n~YU@DRwR2k}6OU;s`V`qO&=F=6YI`igbh>Rh@Q-);_v znKO?2fZPtH)0t!Tz>9ldfq>~CCQF`aR=>2pepV<_uJ6}d_VOe+ufPwped-8DHiQrMh2`!| z6Lg|bum3FaQv{NkIz}OoVUvkc;jacn0~1E8ZYy~Uq!V>WxM4!2_foVCyT{oI=_mNk zcFMj|lZ);UH+bu@{0LVtHlL|6%T}qv8m6Bey65)q z-jc5Fx_2Gr)o$4Oy%>S!A#J(@?Zx+jQ|DVDVqgASBL}?ce4gM^;0w3o4PdodU%vU# zylea)8KMz=EY$?pbMZJ*U#;hPc<9gmCS{a-Whu!Qom>Q5l#2iTzX~VQ+7; z{wEFNs`ac~uB;7k<~pzAvsg@!fjVdRY^Z*Qb?N(Ag5#0@QNzD1K;}6Q*{zrGo2BB` zgWbAqzjE6aKyTUQeh1C2GC>8jQ9@^Bx&>d3Fp^J3|W#`EIn z>fO}kA3yuP`j(5-`N1+$!*ajI&GD?oMH|P&nT@TxSJAEYZMSWAJJZ7#$L`I|t$tpG zo_>By4%1v$WlIZxuIiWVZm*m7%B@Q;Pj1>~4%_^!4a=??eEELPwenjvyGp%ME%hj` z7WGT>KdNtS9A9kO&J#A`|9;teaO@L#wlqI_w6r&fV))9aMGZC3D_wMUmQz`nuGMQb zJ3MMl@jre#-8Nln^{e~P^Vsp={E*rVAY62;Rqk_aH@`S%5GLnkq9)}LI={43&{}U- zy5w|WKf840uHs&@?-wm|RNd@XJFjs#hJu&d@Tw)giJR(#z@E!$FaC)guEHo{rfG&x>QP$|HWSW=~4eiqs>gZBjLlBh)OGm*2v3 ztGw1@(JkN7?KFV!!S6RN0FpbnwQ$%0rHGd^%756@l(osy!&tOX>R7wb6Tu-W?z~UoOkS+_ie3P7(O~`^cepBYia(i)1hupZnal) zxz!=Z#_++u{fn3*_Bg$gdAr%gX{WiY(<_n7wz{ExPlqGHMlb)*+pW$%jf>L_$L4uH z^_AbxzB#2i)si`;*#BC%J34L6m1-J~8y7R&f3xiouV@I_@Qyy5HmIvZOuu=zKdrdi za&#!<+uHK0@@T&4^5{%eX@23VNAX|HLGP*g0RW&%M0f|v^nC;zor}xt zKV$#^%8L55{Qne^0Kg2u^M6^`c`PgF13_fTw!xOR86X)91;~F&V#5LG9S|PO=Rp}j zBxV>Kjmr$poQr21eH5OAotH$#2ZRNMz$9)nRLGLCV|Y{)4!&WACEFHx zTkvw(d5=F+3@E(K-|4qe$rZ6hj;pZTuxx$fmD_|SI;M#4LDP-N1j?2nM415^C6UY&fo>r$LvQ^}xn}G$U2z5UmNA|v zk+#~hO&Qbh`!8RoP6Jab6JgpoZD==c4WY9TucNh3xZ0%x`yL4wGDA8~+&{3pp?xkX z#(lzZVY*lgqSu{?Y}8e^#*xFerEJ-xN7dMwnwAmY8LMCAD{#XUZ|9?g7|F8LZX*i|u&lun5 z8vr`pv-fC(K~_XV`3UQ#$3(5m5<;|ln2N(+X5F>t_5N*fq2pJl%F<+uySPBg`63vA z9*eAP5E6aWKCU<8Ip{P^S>B5Br1G`wU^X%MxqeIHuj6Biv)#M*$#qkX-bGHNjK#kL z2?BcjKOZy~y~QS|CssZv56D2=ZOQ=Oq)HXTxURdTT_Ax+p8r$fx^5=k|Tp=OfU#~ zwEXda^>TcM+)=?(fxX>#zrI36S9k})UhSXUspt73GgF`9z`N?8~QXx z@!TI4u8B4s`#9L%-fw3Nx6(&UrTMF!N+!$ZK%G0?^lB)N?Cqo-`ttajGMsMPronyE zn&)KY#}#^&4Kq$U&5l?3&A5rR8D)5c`o;dlymV1U2`wacd^j%`%RSrBcy%MRYaN2S ze@jWfGS$u#bY?7>eG_0;_fnYp{?+pGLYB~oQA<@yJlnEfp>B^&1sT?Hsj!I8e}72TD!oZ0JY*?4>zeO60C zYh+O#m1!0II%cv^PBhtsWC4n^k7Cg4zt`nWEiE zI1al$TGW({25fGZj(H@E20j<0&NA|jaB0VrJSipA0xf#|$I0AuO2>&Odluch=1;Hf zpfaq*jyFvP;YqvZMI)MQZu4w{ii856A|%m1f3e5}aSPiNWX-I+d;x)KsHBFIT7X}p z0|<%AfP~QnDOjp|f(`=@em&!-xe7&bOs_&x*=f3S^$c`ix=;*4CQCyJ10&s92_4u7 z53vTFCXRwU3q-rfP{tvrB1^p{45DMArH~aChW;`$7<1J~H$g@+p$AkktqlPba-D z6{(o&WFV3S8)>ciBTc5sGh;X|JdLEfl zX_=vA`_L7@k-@AY%1D5eaqP?8t;=W49bPk0Y}tlgUOiUfRsOt&56>vz*=$&J*@0L- zv2CoZ-wi&x_I>vaW1dZWUBH`I$GbkqYu(1dRC@B+r~W&+8PzCmE(ReIdCHtoe9Fv% zB?-ihhhT=?$pd9$uw=00rL}Ppl_a_obIKBwk-E_2tdf#v655l*R<6cqk%4Q$P{I%f zv?yj~3|K~_ls*eI#GIHI_SEpz`4}{a&%h9cv7yXI7i>A6ZwyF=RCjItYM_idmN@qt z;!q$(|757XIi}zNpuZaI5Y|Aj16}y*APQn>4tfa%7Lqkw1r}Mttgw&}MP@Q}42-(4c$-NG zG&U&2LCruR2hT1!uVD$O&Z6l&0p;C1sL`3csEgDoXVH_=SGPjL=qkz3=+@=IDp;DM zuBrR1vsf9NVJ!vK!O3D5f3DXE#oDPB^qIYL7Ft00EJF#%-)YtwS_<{RUKvLpYt zK7Hm$Yjky`=PS|}H1Rkc+Bj^1-{Jea)J~&QM%OfTy%sSN%IYyd*$NG4u9pMNNj*h{ zWsuke22Cwq5-SFh7_AkT0qt{M%@d_rbcrZ3;$5lj$xw(%ObL$kTPz)8Wt2tkTqCr) zkohM99Yu!9oQ5l7iVB#Vl`}j)vkDJapwx0*rY7WeTs37ErcvddZUZ*bd5{d=A%EAp zVeM3oJ>E5#87CPYCI|@c_IfZSe)*tfo^O|1_s!ZGb_vv zn(A)?YLi76GY2r+IxstEoXQ*R7rf_T(t#IM%t= z-!&yM+Nv5I7q9D9FhqAZ0|>jG8im9?VNOVg{U)yH>MW#I$0Nz4SsDlyy#RvzL4T`% z`_dRAguiU2?(Ro($JZO#+Q4XoJIy{8x-)}zOBxnaZ7U~r-bQkmhi8w?2;%wdf6%iV zZ{;MmIwZOzwJXDA53PLX?{;d>XZRD3*tx>Pa3EFDBfq^y-6Y*+04$<+nnAZqmW4;x zHUCWU>&)T2BST3sTWCa!^M$RR{)k+RnoESj?17B+;gBB9X-wag@8u^3-AW;%e%*IP zUCV-oMe}hsEV}195{5tKi;0`BbwUkcAupYg2iOL>lR;>;*^u;i!Xa-F+AlQ01yn<4 zqnKZ8Sm#DN(6f6+!=xt+C@IUuK44&yKgA=KRW9QDVNwK#2DEz?Tt_&a?+kXW)7uT> zvu|0wZ{I+@Q@35`X?SJq|GMEhZU2YlieVNGMu)DV$&KF0x4~pi^I3kE9|c1GiZ-b4 zG}G;DJlVk)v;he2Ls+W|C#`B`0!L^co3Fh^dqW+WiPKi)FRLd=Us)~*u(Q9pbDtT) zd_LrdVPg;xzw&F_{^ri1-Fh?OP_@U@v<6BOlU*}*u5d`HL&~L-hJ9krAy#P6;4|T6 z6(Iv^3wyD~760wmm-yU0WG%@pFNyS8KQ>v!VfvRZ)X}tI2QGdJpuRcMWRcLrY6%HQ2o-1cy<|Y1*VaVW|;Hu(UQ@M zW_mG@aUGqWH|t~9H0~z+E8y#w`eUjz;OZmQ)GO>*=JcEyj4yFam~YcYeR+|2A) zAN+tOU!j5oHhyAA`d^rr+%zNMzE1D6dA7OuZfKbnSY6kHwFW|by0R26zeauv5`4|c zd9BK}&Ig$FOb^^)$HEbPp4z0BrWU86PgA%%*2iFiHahf(@x59%okhs)Mh;Dm!@Vb! z7%h=rY~eG7!6vEV_$upXHRdwPh!q&@S_%xTJ?ITZY(7E9c+vgC{h``-d3PM+P9#09 z?QaRryG`R4!*1k?*}u61esOTjc)zPHw^OyNKcKS?f0TQW*g2nos%`rUc8G5#tJ>K4 z5sXld>mEoOzYK`UqBLrU?Nj;Pgsk-Jv_oXS^yT~G;S=a<+)(NK4dGj;_1bgN{xVa! zA@Hgrw_zwgXN$#y(YTvnp)DZn1)^Qojw3D*T)&nks#Q71@zK`h=b`a{2Rk~xR#Jwl zlStV;JX>OjB%pmXB{OhSR%o)x-+7YV1Awr!l zFRwqt^q}9p8T~={nPVS=Gp7Ph4;)U2wz~Ri=U)*Kv7L+&7~3{MuvkVD-Woo1pad*CJ>i4NS}w7u!w z*X!8gwBXR_#9Uu+x=-!+@s_LE?AraPB>PwZ#{|3eaqC&?piAJY)kYvII%kQksuAGBF3fJbnxlEy_Ued;+ovTY%lP{SsxoiQ)w{lGp*RJZtWi z)3J+QqRp8$v+CXDk*zx94H`u62CO9(eE69yP1+J*81ckXm^SyG^BB=co9)E7Eh!5w z-lH4%av<1rY}@Pb%ujwQ#TOvR5n}U9%CCbavlqw%r)3JaRX<1if`mSu;JkixVMqJg zg0GYVOD#p7V>sTOh*1rEn*74N!1K0OWFl*dNg}gGzdnL#`qy$ybCAD!X30naR_(?7SQe$l$ z%bw>LXUXaKU)4sQ=zquHt8PN6LD#)0md_i1w=6^a1t(C3weeuhTB0G;)c6ON9d^No=WYif0^Idh> zBn?JKlQ~b|)g#X~w)6h4`lj~#`~-IsI77N%!ztCrNO%A8Gl$`!-4n7m{7io+KN8w~ z(LN(Mwm2EmT|RKWpZ;!lIdA3!5XPhChKFz9osF21_<}r{4YCO_n|mw^R@52=np*q7 z0|;~)xQfL&di0KHG^l9h97AZ_4S*-R+G$0H#=@y_1;2;ZJj=^`gi~l1nxQ$IaACoB zl*_HX-?pY~UT+kC#OO;XlI^zhMhq80G#dB5+*`O)WUccueYt8JzH;DxF#}3GH-!;g zS_fg2<+U=|k3d{Mh{5;K0@3wFf#W;q&OTV805Y`Q{bQJQIacb&F^%6dG|u%!oRf&y zeWC23;gjj6ab3avi#P5qg6rsZpA#R&t1ZV8+QGh)6tskcmsGTMzH`|TVjpM+HWJ+Z z2aod@=K{`#aA(PSIpH#NPu`mNixAD1OkZsir2qEb?AmxO@J!p$c+?cxctS;dHLx`3 z{S@B1gK3oqCwZEGfL3M&0O#0uoP%xvTVxRD2jI3cnlsGz10VqR-E(!KV+3|7nI#VF z@qrn(ub)T<9vmUqM|=AC3=_#E(D``>u<{p1KPihLf*q1=D)p|_U05}4^}tx;-RNT& zSh$EM0A(VQ+D`v4Q%oTJROvymGgQ4M;^#D!Nh|86`DanlNcL>zQvc^??chdm2e^)J z#3kbxcIGj;8N(LzXT+}NHv97BSN35q&uY8fKQh%7{ zgnssz#YH0M{DLC6SDkT~Pv$^dAJ2^07XV7Rar7m;Kt^t7DMNW zQW5H*DgKG7js`TRAX0~wAz}UHD5{BQA8jX_mx%5KAGqI21>6Rgp9!);NFl07?}yGE zjF)EKXxiEnbkgwll8YmNYPklt-%F{^PZaD5H0KteU%WYN@la9udOon69?IUr; zJATs_M7_7n@@!QVGM{s)+Az!SxBJ)EAkggQ^#{k6mcQvibL&UP2g)YR-LGXZ*CWv< zNws*ya2VhsWq{T6ZwF7SU{EmQ4*_P6uJEEtFxeh$1_3!4T^{=NYYHWyAV+;{mA4`% zT;O1-*yADm!1)y)4S;aa3C^e)Hx|K)OqvrnNYI>)Afgj@2Yc&Vb;PNn^N|1DHXwcpRa)%G`4v+*W()TprgvXqp>gZmk-OJ+zAE=Gj*9bONZ zGQ$co=%2xO5}o0NxOlOH&AJSG>ySVT_jgDfp(I~|KPw|V4Ml$%uTLfl{7Hxga^dUP zjl}m;gS`wAETORu3>Jssiw1BS!xgb#o0&ZewvZ+^<3+#JT(Zs(TS*5MKs(d~v(N$v zZ5)6Zra9Pe;FBclhrDv3McfTz<5{9&rp9Z(YM($+K5%+RSi{%Cp}}p`Pjutu7~c6S zKWG|fknogdT2q;^DAdRp%0w|4%uPZyv2;jOcW5SPPAI)T5O@=~K%%?#M{1b@ht+xB zzc45^944Ij{w<_dKT@{m(n`3hgc!7W`I+S5fR6cZUbFJg>$>cU^V8{Qn#rHufxBLR zRr4WESKDeL41a%l=u`2>I4PqAJg=cr^N`T>o))bdP2^nyT>c%e5*(3QTYs-d{a#y! zO=c1(JLwM7m#0F|#1FWyHsZAb@@N%*dWk>BnXvqf0-$f=IWI zoy8f<^FVd+2@#Hs$3G;&e~hE7y|St(d5?bTz0rB17JhqkgMOW(oYL z0lkneo{=ag!d}XN`?=iH>yJ%bm^(!BDY*0u4sdy8a%o1|2Bf8+2J-nxoTPMb#7#&9 zeKTIrANi00c68Se21;CphbqRP7&HZOGo0lCxS>I^TrLZS)yWjHVklV6j*Z670sVL zQ?_JeiHeFFla)-CmmepB{s@oNQb1F5Lyu6#W@KfI(1bA-pg+^VX5~VUP*;q=iYHOP ziDF{|ETBHd`K#2Ghg6f4;m6=tfEH`r$Ec2~VoGpxVXw*OqY>cc8Orc`@C%~b@AqaG+DKn`8+T#8%FdFq8!Lz58Rg>D9&X#W?ZVC@*ia4j6Wf5@_^{CE2= z!ko5+sxmAnWZnL!1pb#KP$=8VPmWh6S!Ba-2aG-rH@O_wD3FE1oUnNC24 zGnOR;jFm?u@h^w*>3@zw!p%0cu=4sCQpkiUQpg!7|3$hKGF~W(8Eo`|Tm@(~bR}*g zpDu2IFrOi=GcT7*nx&sf5FM46$deEKPf7v3K%NO^2m0Ug#+(Yi|_pN5B(QVaoe53YN-Ls za-9HN*60-IxaT`1H(W2=T=TcT4GzVRCu zG&v-*6ua5&)m!x)8aLgR)RkZ^a40=VIH>u#nr2_MkC$j3J{kR1#KlNw?viz)k*Nn< zVq!d%U6LIC!n5m-iIJUdR>_bRiI!%+19UO6nx2y{>8Y(!Q?br8b<-JTNx5zc3r?xj z)&Y-_kVWQeaAxEa@ADchS9LY3YkCI{vWAShwdr?OLXA?pzLWARDth|Ug__0UP^)+w zpBby@7jbuv;-Fv_M16cgf&fbllFy4Ouew}Mi>}xpwwKw>8o`iTrlpB`C5|$Ycd8{a zsmD{(R6rH;s)tHDktGak%Q%zQI+wFHDz^6Bx1#1Z*){D%3x!IjU801wJ2J%7dA1hB zQJ++NCrNpJ|Je0#o-Cy*(+&=Qll+z!$3*6JY*EtO+N#6YS8k=lk|vT(#lm8UdQq{A zPIP3`#>>N5KZRIr8GbDqOln3d9|nq<{-o0w-YMzVE9(<|IfySvWnX!LKhm#v>DGV9 z^hHH{!6r5Rm)CIdFKbMuukeckn3gUD-k*pGGt^xhB;}n>+AkscNSOJVf1gt8o%0Yx9`;^?AF0nw2mV?2qZ`REuu)nh#QV4VAO76yRsD*6a5qACoD z7}Wov7=_DE#ISsR9m5h8q0DG#CO^(7`HcbEEB)UZne$0S(IH$*GpQd{YYSo_Fh)BR zmq?tDaBWMpjQ)5)Od%UC8f;Syr`@(HIVFB>BpeNlWe`#o^64E?X^@UI0rt|8=udy> z=D!3o#(o2pz}SevHD@6CA^nOi{Eb9Qp-+s`&%^}SD>nEW13*hZ(*~na5M81ShdINN zBKx4A)k`%w!4&rgd&q< z#iPmmAJiC}AchH~Vg%iU0%n#xFOft+KgNHU`j1+vGa8~alhH6Ft~)PR5FLdT3cr3P zo|u0uJRNBr?3HEsn^{0>70?f}E*@IQQm7L1-%b`AC2thN zmXgVF1L%3VD12k-m61xEJQFAsQJiu8Q)5)sVI<0mXEZXL+p^VwR#H*dSEt|UR(pB| zXs@+X*>;f5uTD4{oLQfGW^-5^=XN+0JfVQ!qDxtEj}VUpW2rMpihV*K^PRzw8HQVD zG^m3SF_BMg;UvEl@nso+Y;1TvrvMkJw-^bU9-OZ@?b%m5Dmg%*uaomSUgV)^=yR{E z{~-(dSsWcqK$wH$La0oG`}}h}Cl`VyvH9yeg17<wk-1xhzdFfBYww!mH0JwNDk(=?R3FGj7BEdvT=pKm`G{8rC7Vwd_; z4+Xy?HY#mudiO%PS3oa+IoUaCexPI6nVa#vP%S^-mzz&F1C&llLxq=aT%G)>CZ_@K6 z2SA*;o2Te&w0~+oA*}9N*eZm6(lwl{1vyRw&pKxhk_{J+-*$O_r~Y!>X!ztpZM^>V z(ngtWg){*MGi+@vYJAQkLvZq?Rm%4O>HvXOc0&8QBDgwL| zeoS|1XAy?`E4OLgK5hf{+Rjt>o?*sWcnW+tUX3W>PY%>!SN1&EwpwuU2>h}*{5aQ^ zZS=VRaW-0rpI%yPWv;1Qwfu`Bre3zXTwgb{QZ=Pch<96CqwjriOmAC`T#UtN_cni< z?-kFA-28w|?bC#cal>yM9(-7TaAIx^yV?(=UJ<>qQR;D8XB}=ae%(@$UPaodPbLSp zV6;2Pk-mjHHYtA&=BPU!_ZLM{=tY4b4AHLmC*#KR27ct7o6Qfa`4rCiuhd8~JFFsx zD#HInmHoOjGn?H1k!uisz5|gc{w<7lf%TIvsZC zrbX$bAWg|HGu0PdUAt!aHcwP~Tbg~H`dvdDokV)c)#$!u$Ye4aL=Kw}=@Q)N710N` zxPLXdYFJ!vcsQZt*j{xo0S~sA`-xxv9>4rn;*#*WMKmTG{n{*W#_SDEDK4$IFQIFOlc$dD&tdS)599!uE-fv8&w%RG2HMm;-B2wX(u-8{}CqtU5lI(l!8gGHu)HB>l zEuHMV=^|e?7#fStitK~Eny;JKcs~ab#Qko<@%Z}V?t~Zs=$p+1K{^CR0dBFrbn_CO zpv*54 zU5`tZYQfP9)3$8v-PScS6;-{Qwj+L07r=6*B7mJ-?rneyPAmZJh{A~i;Ee@pgATZZVpA8Ni7xfWwODft@h z`;}UTzShF!MuI9RX6RNk87}{;&q8jt{-aOD;`A~};he|i?*qpRLMzFfV*w_MQq#K| zjYaWp%1-8C@44E$_J`|IRtx;*(5S++_g0#{V(0p{3tD0tW}oT7G24o9r7@0rmP)@J z{*bK4n=w8USjx&jb(KE-)$(~u1c%&!(1+|SvU*)jRau6B$=w|5bv(8L?}9bbob3Hy ztZ(u^-*;sa`S&FGU*@^OG(0XDN~U1tKyF*D(4d(GtJv8cGyK&(uyY)RW^KYu+pP$t--VqPQ9d2|h1c9!`t9@lIBVx%(EWlq{-p1W27h1EBFd)*?0Z!tF>R=T zxf^km-)t&H+aBFdr6KYqudTPM5?>{^kjmFyMT$x_mVGqlT(hP5vO$kl6;xA5wnwk~ z76O$nA9qWeKF_%~O-`mmJAu}pht^&SpkYxpU{fanFCgI)(XI%MBs{*aL-gd&80oPE z)xD8E6Az}NbTiQ=J`l@X4p=VMQ1=-${+;zt1InJ@ zUq<3MK73BG>vGU8F;tQZx_0=h+BLg#+baG!a9s%2hVT{{#z}1U?fjNLcL2w73ti|S zd8W_X)GbO-zu&te_JO0;GJoLGt1aY}PU>%S=lQwaH_0;*k-JZ`n+AW^DP0Tl9IX#o zQ4zO=(k`wU=9#R%`Z-lc<`EDV8lCi8ZSgdhU044X4IvO)AG0i;(Zco*A@i2G)zyO~ z(@k@v<=d0vS*Q6Rq-T=KD#=7VxahXL@okH__nX0uK|>6Rebs@G2Pvu9wC6$VLT#1! z@4d9#JBt+)#uac&eXTLk=}jUYq=d`PX!uEQyj&d#tDKKBC@2*0Ev zE}>#l7c5$_3#!1(UFx6&_?U_x<`598P7sVDrW^ddq)hG6+36lyJm_2!I{a=s0xudU z%|sp#XZJ5xs6OBBI)k0NOdVl!8QiZcHNh|J!EcW863HV0%&a> z*l{?y^1w->W!mIM=F8eS;M}P6Tf>ZC{=te3w!_~hwn5Nlcgg7lU#%A|5ZHs?%`dxJ z7h!JaG$XEbf+-Bm?!-&g`6|5bn9M|?eLHB-rXXgb4+(Hv#2bh<*!{WyyjO*Q316gA zz?K|34nEX!x|yb>QgvgFK#qn$qaEJ+oTC18E{nA7UuzMDkOFFmNe*qhZw;u#fd^y< zCbkAQ{V4!0*dpr2Fh>aVS|<@FbFZcVcfxIfUTeh?muvv9G~T%de5KaV|2o9+b?wUR2~8TD*M&A+tzy?@*`tM~Y7R1w%)soR;ex;CIb2!2FB zP=bpQR3~iwsfPtNBl)8x;jUs<9kfJqAi34=Igl>j?K?jgk-EP#dZ35Rqm1jxjw@PG zn12A@a@)~tvnb442ZLfJu#ZFiBLg9B1wT;CcvC^ez7PYe-P1gLcre9TMsc?~&G=BiPVEE)Ae2%x(sqqhMfv{c22bK1fzWI?FM3XvX59BggfH_A1f{9W0 z)94v&mFRTrPjh-1djy)RQ>nk_JE8pK0NzfhknBU`LFgRKHebd`6k!^4j=$YSSb;;1 znK6IoZ?XgKj8P81C}I5Kk#Glf+OHvPbDa%32!}d^rSIHhUIV4Kh*!EZxb^h)6@b!3 za2_VA8VnCOqz$w`b@hNRmYSU=rt1ZikZeGr)Jri@iz}mw*jMI(10C-@SKR$D;xHTT z%kHeyc{<^I$;hIqydLvE>mWk<$2i*Uts=~!Ip8k4PR5#0v$|M*)bm|?@W+``l92$%J-8!A3#B?_J0*j% zwt%__DfH4sXxpfC3Q_ym#@<0i)B3pqq;z$0qvV3mw}8KI28jm!g*h?hP`;4T#(&{Z zk2ujqbRY9|IL`g5p~W?=11-Iu01eI^cFceH1o*InuN!#_n+sazwSz5Gw3T+yJT_3e z2z^l#cE0ov#G>_Lnch@;;SVFtSW=~Je8K)5Tdg}S!-pY&+Ehjl)c91Cbqz=JI`HE{VETU z7D{PH$m6RuHH!~KK(Jog;^nUQkCBlRVMN6Y=!flVzg%5JeTQ%i`rrIbaw>q zXE$M$T5~dRos;SmT5pCnR2K%uXdHj}@OfU8T{%DL&?ud3Zb?=?;6qKd_nTfCl%1+i zcyUn$%)-?ZQkt6LWGLI8TorH}=iMEadG#*CqO!83>K_hI1L$8(jz8ff_MYW0d!|x2 z-~*rs0A@PiVhfb~R>yDownU=A{a!<=* zS+N#*($`)y^L$a5`VrhGWB$H9FnTGPkV`=}X9bQamadKULiX)l+}9h;P9 zTE{cfLB0HsdpxaQNyUl-GaP2VNqoyKuaFpC65N$NUo@m*L>6Jv2`l_4JGitd6agtu zv#-6LA@W?UkFK}VH-(l+gj9bc(;4omxf-f>{KJiM4hbuR@Y9Ds5)QNXk{>JF`X*yk zs=O9H>av?y_^Z|vD6acbn!JW8%odmYBC=AvIjvii}-AVZ%A5M?AKYu%}MISMO2n{QSDL*T_CO+@w zahy0l&cvH{r``}3O3C}m857`gDOz>)X*2ejRlfL8#Gq!84UP5Slx z@h4fBM^V@g6UpRT0$;-&OlhkF1|DaHd%liJ7DEf|#YAlMzhkJ%uev59kSkJ%J}RFtl;%Xn5^bhx zq=e`V`c=-;%^0;CwdXQoOycK}K6FQ{0ae(!F}?3yaLvR=1k3^ezUtm59_DwRzi9_% z%LIn4d5y-t_g1?7v~a$rwfjRbI=m>N{3u8MaSv9BQM4Yj%-sg?|xl4F6*X8T_5TlXV=%fb`MAnMgA_6gFfu0S#{u<99r0L3{pALH=;Kj z1pexE{&F+NbM_58=!)vm(09A+C7*zh+9$7fd8ysxtlFNgYx1w|$4=GQTB2h`9*K3= zBX}C8#~dpsG%==VXq&G~A7t=rO{FMxc2?8h>zP^>hp0|twI&LZMSCtyNtT2soppwE zJ^Z~)4;nK-{Jx10D=Twex)zOiP4Jpy^*HG}pBrB|pWjQ92DQH~9!RLVyn49B6C!$~ z%ue_y(VCbAQwUdh!4o*0O;8qQIK}_too&UqdAr(B{luxLI2K(B0M86a%SXFn} z^M?Je7wG;{@Jo5egkdvk;_7G?PNj??nJC(!ev7A<(7>x;Yi2GCNM}a}p9Z#ANeoJeODc>L{BDL|+%z2U%`|HE+6e`KmCmF2J~L`h%i{) zH1;xo^;1vCMmw{6uR2>p%{y~c8p5G%aLko=8|c$_^E=cI7bgVVKHYZpI%f{gf>##J z|N94hUonEN(9+~W&(THnI7f@cC1YG07-=)Z3vH>5S0Hicr)+)9=grA)?iz!l8awiX zcM%d^m)zFr-lv8Fx@nSBXjpE@`CqSF)TTEDhaG66sOdz#MFHY4amh^~A2a;>pb^oD zF_$q*I87(v2#5!ebh)*2Y$_9h69orS%$es)D}IGZkgvmmgaDvD9Ps3DTND?~Ps4WU zp||jd+j*rfX@6(E-cjg0yiEMhFV&RQCc*w(+~)$vw}RzGD^~%<@X04ul2Ygg`;0mb z1$;FCB)vKvAQ-ibR2zA8+CcYC{WA~4yB$Mi@eiDjkYO#SCnTX4xg++$%SxWqT4|My zwbO{phRC$%uM;prKS;BUmuE_4=h|U4c!()Cs|qXMr2Xy)E$|zhRxkT#oQa<@P#vM5 z24bH?93Rx8)=AYMlA8=AdSDJ8YD;LYE~*hRgX#o&z(wcFL3#11yR?VmpxGn9Un5zr zUi^XJ(?(zTwbA6#5d`Mtjo+wF$zOh<4{GeNr{hC0y}zFTj&%1Um`UQ3fVrR?{6-thVf-`yYS4s*Xc25Ss2t2Ypbm05vqc0Jp&ln9 z3uuK`Br_&I5^*?LjX=v>gFcvFYZ0X1CIYOp7dz4PVEHR5_4$9l{LMXvPN2BLKb4phW{&VS;8a zb>Uui75+x@Je>`*omCxy&c4G07}?c`NccGXq^2{20yctjH(ia8Nu}fzHOBl2S$C}h z)m@?N%zI)%lzpr*k)jtlG|p|sm=gr;skI0@)JWG7Tmy2-E2RrKth(0(S5CI8R@8uM zjy+{gedP5!Pl2bvVMHG&9P9+n0Q2pkO?Ygm?L~0B|c}# z5d!LwP{7p$2H>AJ|-=Av@6muYBr;gkBj5}V(32H>e zjMK_wdZ=^e>Y_wN{>}=gu}sWvaZq+~;@ymxNeAusvQX6&{_6$lmdVW20(3061TQiC z#nu0y>@0xlXu>r;xCD21f=ftncL?t865L%6?he7-A-KB}+%>`7-F5l@y?1MOZ|&CZ zIbB`nOm)vpP0dW(`@CO#4oJR82;dEdY;qGpFc|STYU1O8gz7SVmBQi}7nkkrV5qVK zCxkY=PAG$fNI0#j2ML3LVLV>W(JJ5Yyzq@iq4ssVz`}DOHG&-NV4Oh@Qz&hM;@QVH z%TFjkLxl~fQfS7^F~zjNOECO8IM__=648Xqd2CoGd4tU37|kHMxOhG(u+8E(wc|6F z=E2q{tpw1cYm1otKW|7Bw+_YLvO6xa&-7=IW|aM8T5jo?sdFh23DUV;t>eG*%N&+5 zhn#MweJ#YK3UbfZuN$cyVkGxw__DB+IvijB1n3#K(7Gq~oCr(Be>!4sLYMtBQ(qDn zZ}+yTeBbU{S39jfGB^_WWKD1CP$>YwJ&ch6V30skk1=#}FFosE?XR{oF^Yyf|FkJy z0qzUlE!=E+VtV`(wimrBkH(GrPpssrZZhd3t#rrsO7#ni>g5pnh_?ux;=i8V`5|l; zZgNe)A*bvh!Tb|rI_UE+TCk*89Td%JU`LK{W&@~Qzv%bj#Aj=H(3c!(k7ze%!=6A# zzG9;6GvS9Cg}Q;t^t{9anbj=kn-arid%tLCbJ8jia>A-ai9|yUh16tNzJtb)4_`= zjXUpCUQDWmkgOR5yr)(=?w3=y=QmgxUX-)kzv2+^FvxP4!oS)>J6B&9yg|=$;nJiHH2G_G#!W|McH2U|e{tDik~A=Q8`sj`A|f0c4-(~} zG0IMD98B3?g?}VF;^;ay4v>1ui6#ld!=T`g#JrrGxBlAYk*UV@Qb9Xr0eVxIV|^yF zj*rHDJc2w%GJdRbF~KCaRBw~@RLIb5wbzamPITf`5q^bValLO^;U_3EEyy*VkE!$N ziwZ&RT`%itO{T~+&YWY;vBzucoWR?DVS4_&Uh_qWG6Ss0<|@dh{SEfs{6V%6uUXTS zPr_T;8)47g0j8gZhj=%EgF_>>XS81JQ;n+logjkGPSHc$82=&h@Skh$W{N#+?eaYw zxnRje?cDEqu~VgecDv79`kEWFhQ3{6^mf;Q3uel&F&(7LZrJzZo@47`#f^)3p+fE~ zRdG8f9pHynZ@j7fW>21zGkKQ<>))G32 zZ?m zMIdm^qT5ol;K0d^;%|vZNpoFuUCVVB=Xz%_Awv|k-gMgYY2T!Afqap4LB7M%ld0x% zZ*GM+#u}L{FW(T@M+jk95)fdUo*b(vY~MWvgE?%3wHQIrFQ@kV+#F`Q%Bq5#57`X) zL)QyJ%mty)LucXD|KjiZ@lGo}ev~vit)sqmeR*U#w2VEPF}BEIf(U-VG1zB)`0YHj zYRFoYZuPnA0{^U~G}ipJLaH(b@$dBl@=j#k>pY7t;Rj9-ywQq&qzi+$eaWTd1FKOW z8H8V5$BPic@L*q(CqC>i!O#RPHkvh)LBzb|TI_@=SF9l@;-$Lb;AVlswxv%E{kwAUGBeutY-Age(*41a zXz^7gXXVMJb9LqMC-2NMo30Vx^x=SXXy%6E7|x)>o5#(oC)Us&7Y@n zd-}e5i%KtOQU(@Gn^i+;c9Suw7zA&UvDbg)70(*1B)Tq~&i)$VIc`SwG?G4~{bsb> zw`3aBT)cXATX6qG2J8zI{J*crUa4bB}mZ z{(N;o_a(~q@8^9jT*)1&Bm3gBcK=!F^ue?rUADORG*tQ|Fj|O*kxJ!om?i~z>sS3Q zZ&lBO0o+7G$)fuW+a|8W^q2OU(h|)*I+AX$S>RGkg z%r<0vc5pwodX=N=x>;}f+M(vW#BZy0a_*yY?|S%v90w5zB1^i!|4}M{Q~}1E!8e<- z-y*fXt{qNw3OJ%Fa8|Wt6@*w`oM$qrWvzQ!@zuP0YOb%^Jo2s8<+VJf2CAmy(V!|I zMPi<|+Tf!PyVHif{S8KqBd@Yoi4Wkp>Ne--L8k}Sgdrgc1nInee2c2VKLT2kfWE!~ z;O2A!Lqwl1zi=@N?}LE?!9oKCKl1-6ef<3&3GBDgbJ)blQR=#<(;K&S2blQc7DyNs zlR`O8QB)Ez{&1}kzy;iq=%NNJ-L>DnouLHg{p5M1qt`8FRh;HaykHHcFnp|MW_Lbx z;(qdU@)(vVj}KYp6$h8@QG17t+LxM>lP^{c&wB0fewM~l$&5e*1bl5~=It-ypLG$~FpBC_~{LZYuC5Z@`XwuUm(GKR?r zd&r2x$nd(+I2}Zo;N`~P$@dEa9&5q2;z@gRNgHxWVvi9`!!EVC8JlUl+d66A15^56h>M@pJbMdX`H z?kAvdI{?YOkAh?@CxnVbi;AR)DqABXNkZHo4^~PFY{LrhFH=AalcLN^gwzUwP4>b? z$046dq70ysehAO?W05Q*fgwo}oC6UKArvHnK=c)K0U@}ju#wnM<1pZgB361S{e+C@ zCLSy{Uf^p131M?i2-*kRARWSim_Z=GgTn9aD+m(4?f$UlX(FMXe>8*VkBR8h=bU89 z--4X-@UPHM>8FMgVZTr_>&u~j0+kRvfk)}nLM;j}U2{mGfk(AD3f1$-Vn0C%3@d$1 zTy4S>4Em(4kG~!L&0d$s1fP7pTYDEgCZWCqN(j%vgUUe_i>w_>qL7{bO_lkC%RAQ# z>#tMCU1}}$k9yR!&{T3V(%?j50 zR(DwuY-IkHK*iJP{IMB4k1dT|@5T#pz({%Vz1{f5zfGTdTX$Nmx_5-*YFq72Y5dVp zMnNyYS}`@F)Il{4pS4T$*7kYy)h(mzOOM5Kl`)yWzMoDNP3{W6T>Bge_0^K@119+E z&$ZUoa_uvI{^GtNb8jR5%gc_Cln}~JB^LEjz1LQ~#>oQAxqfA#yYOe7ihKl6{>!cI zX)$ZP&59c>OtIS@LuM84sq2$fJU-v%h!deti0QWbsZsm*$%g|eD8Em;Ge;Sj+*?qP zX(-na)u>;G##kzG7`9tVSt?mT0F3En@ae*wWr$D)o)78fJM8pT)z3S^>JQ5*l&z@u zu=*wN9N!XZ%16vPPmPTA*L&}D+o%f{YVEV+N$m4+TX&+#+AUrNU&osZLe>5DAFKqr zzgs@8W_JnRyH1}f- zlOmbFc8}iRqkF?Wx1J9u|NbqFPHukWiinvODhcUaZ}L9tEMRAH0TZV$-kA8aAQ?*W zpU`VX?ngz+TL^6ptt90jFvt)4tQ!GuueNb;06^nK=4=eRJYnb7t23{Yp8RzB z;`!4my-DlBnm{zZ)9M0H@D)^LvVRJKqJ-tb>)Y9MV`xg=oA4}e!OsJaAwVuc4i0)C z)F;XzK;a%lJG{9g@ZBBx(J&Em-%mpQ*O%e`Q~JCe*9;DFfN(juBVI$c$+1^e9kx>q zJXtE^lb?u^4wxXXTyfjbooYD;>k{A&Si4qf{z8>mTMeu~Td7Qks=uCdSP%{yKH?k| z6RUFi1poqo3`Rk>)1PdIzHBmOpjsFba?a^DJvf~YA-B*A6#@Cz@qsRV%J%wFna#E` z39hHsM0@!{grbg)pvRj&Dt=cOfbJVCpgvg#c|qahs0bC+-hTn%@= z<}kuI0Fg)~N%jhJB(p%%F5)Zo~VQH}-9 z(*!AK;=CXn4UmHQ6r^C7xBINWZoAS#!JL44aVi&(_2Ygs0($sC%Q~zo_vjAYBt&|- z=fO9!7o0bLVsFLAI0s9O((mFHhsfQX%d5hDF7c@oX&7FexDb6ox|1V`Xe5RM%FAmU zb%pV32bQC4gdId4skpwp<^my~&zFtWQF8$@P&mB2PC~}v>+3E@K+wanV#%m6^>;BR zB4z>*=Ej4-KG=3ou{K`U261QnYs_m!X}yDQh}Mvmw{L3hR*PI+(`9p~t4+Nf?@xp< zt|)g;HD|!Qt*k-)H)- zo4X5yaBZA0h>}$sd~$yE^cceD_V4biY)T!q;5d8tg|QcI4rMgG_SAst8csQ}%Gb-^ zM++h!4LOd}@O*8<0Zr)?`Lh3I6570eNyKZ~I~-QfA1c0^hHXpLy6lFTUj!v7ke+H` z4bX%^^TxdaA4JRr>>#QnUEx_`L%qs-iUa)O$}=gt1OOV9&GkVPs1 z=)P)4|BH_G8Hr|r%7fWp=kh(dtsJ3U!&uOc=r8fSH^OLVKRuhR|3vQgXg2*aajt|&WzrvLda~>Xm&*=jLu>n7!S%){~#?tK|h$wdQ zRTSiNZqPyKX}#imyjYhmpnz(1ir_hpiwnF_oM(};46BzpvzdD}_{6*gO-5C>M)!wB zI3e)TZ^tuuKqTw9)*T>pV;KOZbC9q8BW>8~Wl-RI42mQ;E&3OiJz}^1w5Vl{Dew~n zXxZMWZ{S~2h(NrW85>-74kY(<^7tY7hDU6F1xv6VtfVji9NJ^>&2qxx*sB8o&lp}8iz8BWCfc?2 zIKOV+o0W}`spgA5v$Q-N8~hLpdrn1{S?Dj3Lczz zZ;op-Or(J)qVIoaCuA}x9JCGP4&=+x3yd8~0`Gj5q zRmLCk$H%YnI3e-?Y{BPS+)e_)I*cmrM>yCaA?7p`Z)O*LhrYvrw04#IE3uTeB`0Ak$ZOTu z2$<0*d!@5}}lyDPCSBbR!x)@R1Oj^~8tB~Pksyx#P?%n+wQyEMY zyMgl_BCH|XUXLerODr`*f)hjVKI>P zcAn{b+x(NScvv|EqvjMyBhWjCHpvB#a}X0HJ@-4Aj;<;4`T>OU&HZ}VHmB3O!}z1=MRr)64M_?*C}_d#kgz29|@PRk+#;34iwywMp%cw;?#4;(VwyCbbT{%pF{m>cMa;#son4PFq>6fYie-6AB(k-tFf6PiGRn#ahKxAZwJvo_KVDQK^ns7CRBr%DxF`Is@+jQ*bw`nx- zn>ZwD1Bh&cK3;RQC1e}q57OBa0oL4uuG3Qg{}?7pp1eux@B z(WbPXvPR_z7(Q zB&TzohT5u-`c_;cRRzr=@ZOF7Lam?+z9)Gd5(LIM>0YI?)+7xIlET6?Ao9RV z=RxYYn4LI?ZmyvF`lW|1#I*TmL8uu9(xC(yIhX`HWZ^KE;q$jD{@z>SirPV=oI^OA z^gJpb!&PJSul;pJoYPRE-1OyKx%2ins`0o8mJ!ju3bJT>NB%x`-_MO|##njA+~c;N z$fq0bnxj;-I91$Jz7;xVN`08v4CN}=7GQl8-cE~d>P8b$Gs04^qm?Sk?0na)Hwy8$ zPbp@u@w9az`^KtB!v!(3K~Z&SN16Ke9HRd3#Cd|L{53kfa!z7l6*+H0gF2QrLu@6K5F~}E|AX+Uv3=dGUN;zsRtak zVmuO$@yB2><0%DA`wo{>e$?X;CdeMjO?q0K^VlH44$QC1KF z?^hJT$c!NXgN8~(T)-NyZ76mG=gv#oJ5ADb5}OOc?0B~mKV!-Nu}@|v&8?czl}?Q= z`PEy|corf>Gm7VJ1@*=)=iFMzy;_^#-sC}L$av03c#4_+d)Rw)kt51FiyY9&&N4wC z&t!#Lnh5;lz8wr%mge=%>NZCy=DRJ=VM!&qs#how$Z+>P)m)xTTanCP`{a%+B(I#^z-h9($+~Yw^=9 z$ZuHu5bI}jOf6(=W!cp-+(`TZ=fs%p6T!7c>2Lqm$F9W1#<;bv4BkiLpWBOe0dxak zU?653L>zdq0)!9KJ)D0sVp)*cfByb=!~ZSY>?jkM`OnhMC5XU(-^c$_B~*|pxiWBa z-D6~`0{HhJw+GOm|E0)(9QvPa7xlo@Kc`_eh4;_7eRu)>&lwFkUi##Zr+F~dK(zIk zKTR*^*hYZPGsDB4rPJOdm4zka(TRAbnT&(O!j-g>>kdbpdo0H_evk1199RgU%Nq~KpI zz*V1Lc;zU5Rd;PbaxmNB~=RH zXmEk~#IYf&Z!Dkr1ldJn`I2He{6#o7;_N^YZ!{!tf&R|4hEuW6!zh2^1+OU3oxsK8 zz{S-yAeN0G*oKtA(-L>kJ~-eHPB|X&U(WUeUN#_`)d2s1mp@q6c*GCBH8O0D-Y+m# zmOc(4O@e>LU%yv?BZ%`hj!S<^g0P!IbOCGwY$)Koy<@xJ_3IL&WBS(fvjES)g!!xN z#>XoOfF^~E1)vnh|F$6=oqf*D`ONsUO2zBi7;rp97_!1?wI;Qzs*vjy!=qluLXg4$ z0o_IG-{tf7m9qNMG6LyB&p|ki?am&{=k;@_3$MxCy@8#;({qycdlqyu+?B?O8+1RnGj2B&j0Pt{^ znEK#N;y-MfhFv2az4-kaFBR`N{zj_phBA@NbrekigRM?e4; z^Kc-y8_I;A^han->(!p8zH|P*nJO*duZ#cy6dLf#Ap8?B#9H7nRsiDW;qLkTTD5#d zK!8ieA4KpAAjX2Tyr!%1rh+JWVQ_gq*SdPAoFqPZbJbcaHhR7Fj#=n14E}Jjil@y+ z^%fhIjnji;Tx|Sy<@^E}((8lvT)Scu7a?=QYYoRZH{ab>Q7CTrJzt^D%k(!hJi4wq zM=a)xDBMB_lEk1|@>ui*FONu^=NPm}`A~sDI;n@2Ve&|`!DOU^s=ei&B(tiixR!qS zslH?uLUxfiqLvAMvE&as^HD>?2H0L7Lugn41^DPy!T@)2In{1`E^YS9+^9zZF)(>V zp?DT~mKMbMQEem684Yd}jdX12bDrq8@0L~|3(5~f8BXTA zai~(P&yf{U->qDRKcv>VHG8_N~I5sk$mW5gjFOLB2y{7F35Kv_yW^%ormBaZ|Z55+~l zqYzFM65a$Cw-FNlj>cGGESL1*5)y|HJCxZT?rq`SN9LsnclFD!6^%627@{^#c0lIi z`S`XV@Nq656Sp6Ly7522H@LvR&~-c_bLKc=N%nh1XC;b*i$9|=aiKA7#3R!Wg?vL^D@=*|#3I3O zDAC@V#VpaGKEzj>1unti4%rtO79xp_R74Pmz)6PVAi{h|vbhZO1xAG6q9dU(5*SN! z3~@L!?-c#hCjSQo{*O_?KW+v8lGTBrf3In;XdUDSUa!sLZ!nC~7f%`zC(V`evAa#O z&0%a^9S^x!e0?quv#)1!-u(;!2SD)(xuJle|H$l^{IRbX@WA})HI+`*$a0`qn#r;S z3j(A4edC4uO>!hMoSrr+7oB-h!1gDQ-VHPX)sP>9YzTTF4`sKfoTkneD)03HdOeMq zh}_7>ML91AU3w~x3lFML&fC4~=X$*{ggu}3F#l=|iIr5CqW?LOH8DFJG5Ee70@o35 zuxjp)KFA(NIPF9?%U1MFVTW)-@bJiNGVv4JsuTl*7HMhbJSflUhOdD(+FV;U0cvXB zYzHjO8c=fA@fRbntM%3_3A;3hg}5{;R<);i%G<`FiYr9+>&b18`u*BO&utf5HITO{j%Srk(hyB$qcm5zg1|EP2^2m!1Dey?vE&I{%`V6jWb- zg3e{IiN6h7uC*WCdFEy*CwR60cQ0Io?S%zX?JlFtx2uRVe&6c|Y|(9-pX^g}BhpSg z7NM@_Fq`j^`l5y-dZc)QiJ~YgCnh(%tW>+wtfDOZo%5kB?5&6Hu1+bq?NOY_$Qz`r z(uX*Yu7P6>JC~2yu{n@0iTzH1zdOzaCC*hp7Lhh%$KP2RWIBxUDv8n+PwIh-4vog- z5RVi^L6G6^As}%gAaO=VX05-eycRFm9T+jiLRt>dN7GLcFcKIM1TKDR452Ft(;O?~ zL;?O%oJ5lC6~+94@Bg#hK`M>+@kn6(ciV}0#BZ_YAI=FBnjdaJAHBp^7O>xFq#sKs z{VZVd6vF1l5LdGnyp`w*>(uk(r`6Y}hN_Mb>IE7?Knp#{W=MpG#T>xt{Qa?a$| z=qWOoX}FHLj%=!Nr^HrfP>@&CevX2A*0x9>=RzCA$R-w>B<;06K5ny6s8)FGEPR0* z&56$-M*hRTx2oaWNvluN{$;Lr14+C<$<>}$>Uny)uOO|1ztyH`m1l)BBF59e`$iDs zRCz1_4D>t)A@E;Kl=(3~dR6~NV`V($k2*wqAhZ8k0)}&Z20Hd*hg5R8n=f)mDaUCO zRS}D?o~{rw-}V2oX+~ZZ`1a9D``;a#opbQOuFRl8A0__lfde71g{B}Wx9U0UC@LlNpq5$gO4 z>5Fuf2y(4uM- z_lw0;Pt{YjMXt%bIqeVnMPT%AA9WZocyd3omX)E_EBW=@th$wLo{7%$1Ysh?^=r=u zj?HQ8sLZ8`i*w7oAra|(cbj~JwT5LRYfKOTsDc6TYX&C>H9*Y)M7P}Sz~c?j+3oT^ zNwg!Ais_+_IW-8tnB2)j=z-}@fD?%pJB-f*yakXlwtl$)pWA>ERN>$Ld@@#~bk%il z=lrw?12!IsGi8Mi`;WLwcmZD?sP;bTQ^sfulSqrZp zlk8pzet`d~9f^R4|0Xg=*@f`}W?D0*m^@WgFRviEcCLT16jurrmGd0zxyf7Qu78=! ze4BJ#(yFIWUd#OhIm%a$1zJzkQdMt4&dM*}aM#nK65sE&=}mZdYH`_lB44<{v8^c! z-tRCh(9$5K<1#I+yyjwhFO69lF$igH#cw!3o>-dLy)$6ThM;SI-<8NE{x$u~CFWVB z)i$Ej>(a68M+X}fb&wB%AC*l0jy^M0x*q5wrTMzP}3-29yow% z^)E$Y_nE*+8TOi&2Ei*aqaWy#t2soHu0;rHWN+QAbv<5#(Q!!`YKOPC;gRk{a{Xa;?>WJe2`!8Z7A>jfffAnvYab zl8xMMVyWoD;28VPVd0b*KV2faDi6=a{Y;kaXL`UP2<0ayXqMMUAPxm5KuqBhHeKRT zhu@Y{^V_lXxbU5PgrQpprtPE|33aG~F7JC9nRS?c^G_`-eATmpF;SDQ5Es4d4MTe$X=v##x=J(Iu)bX}C3AoF`CkVSYdZ1q)k}?6 z5s-y*D>eas1K1eDepOc6wSrlb#D4zSzbL7r>TtzE(De2hnNOUe-nkmF zydzIvdQAJW!%6GL-0rJqzfk}at^gA)4OIWP&uEb z-@kn=O!m*H4I=AjLVis(WF+7UF|6cCsIfJ!MBVyaZzzoaZWbY`xhKb8Z`tiT<6@=$ z73xxm!?<*uCBF5zN6+RI?6N^Z{zfcMAGh>WZDM__;^0A=ANTyd{dT=;VKQHpjc~5h zaVcx5@FRA1i3Qja*fQ8g&+eE6Z!x0rBcs2kZWrOOWg6UJ?e^j2Zs`YHzWHpUGJ>Wc@p=vZfu@;XE#n-tobh+LNN&>Dj24P!{uqK>{i75 z=}Wli`o2;c+K}y$L<@1zSi_h~1w_G3#pH@Thqv{PncD8U#slJXoRi2Utv|~*)q(oT zcZ^Ys*ZIOa>`GQ|j7puQQWGsv2Ju6qsiPRUb=82($dIeM6_RO_SCryle|_b~_bY*jA&^d6P>AUx%r@@rGzAiP(udWGp~GK|wG= zjjiZA(~UTy#)zKnFbR96SPo7mT0jPI71uLIWI1qX#yn@-S#fbukFj*RjvIBlwwB3c zYbDo=@oq&zruHj7j0A=$j6RE47fqSqd*H*haTebOTuXjOT--m9D?Py;Z$ga9B{pFW9z8KDe~@^qgn>!5gB5 z>OSfjgII3Q7r)60D(z8%Hix7Mj{E6+@mreve?A()ln7`KxDRF9n+4oUi3!3 z-ju4nxu6LQsj5k#n81eqy4Gd z%#_^4gUx&{#!o8~fn&9+EsGTpxcOH@*_T>iQ)H0O;-$TwB+bNM23n*$NcB+b+`Y10 zmVAAs=hJIW^8*jpd31+S#kaisG7iP<5f{`uO^SP!T~e(DEq~c=S(qv8{8nzIRs{>) zxu2P@pH?Z;!}qRx7KdYzUC|~w*840}A~{Ee&+2|Fq*%}F80UkvdH;mh8H~D8<)lA_ z`vt#ci!CI;W$rB_KHFVN@zUVffgh%^#*U-2F8hykoFD(}4_-*tI#-zak1r1rEZ(0# zyn4^5>|?I-kWj`POk#F1lf>{hy!=rB(s+4*fvFoz z8DI*uqgJKO4DOEt=N)P6YJ$)+vS8R{;3JWvYI{pN)4u=$xuh?w8_r}LA?W?kL8hHA zKF|a!-ifUO!RrXoyKu^;fk{F8y&TV}ro*3qH8)YC{-$4q$Xw-LT$p0K1S#HRBHBV4 ziYx6?Xs9fiA#p!{?L?tKPCAo9kR|#x_emDZJV9%GGv{L^AKLPLk%9}Wm${q>)|JG5 zhJVmmmcFLi$-9NHfmX=vHf*G{;k|ad;3C!+Hwm=#5&H5SyXC&}G>PKoIBWIqU_L|l zSDfcc$F?;KSLN{QrxfziPr&V2LB+4U@U7Prp5Npp)ym-5mWo<*UpHI#FV3J_>3>C- z{HST)2?GVn(}8IhD|sV*qV+_rCx!vPw}BKJMzo@ks`*)@BKSbvS1s)S<`8wd`Zc@1 z?4)LnmMe#g{y0`4=eSHC!UQ0y16$;^ne0yYGmp?6!{>QuS|O=(hsb# z4Z-gt+k=ijhtEY@^IAF7NTx|0elo-d%_)GRpd3YG4C*&rSHMg_A0dtrQxj=jHQvqh zAk4o_UY>Dvb5=#9TzD}SgY*@6)8xy!)`Rc&0Wj;`v$nJmUJwoy%|7ZZ##&~DYDg%nyl;X*pmt+8YCi_<9OdEUDE{@)i|5c13&u_crI);7zH_i3i z9vn2`r|-HGLlxz0lS9xyQw0ouchl@+X+bwS+LM2FM zj@0Ccra$&xrP-KiBU_S;qpbtq2ys6xbQxtvndG$&hwXM5M%4yNC#v*YjrlG=Jr~zc z8C+*%83~SO-9Mx z;1(Ff&C3-r=CC$_kwk{f5S%Ex?J&f5(~PL>7CGI?5Kr($^qha_1+(6i+V)rW3+%LA zw`o%bhY|Xl54gQCS2Y%Vt0hfxmt%=l!9p_IZ~|OMmI=;$#=qBymw9!eBWpyBkKnsy zCPhRjh*}MGO#Wo_m$!&+9x>Dg`xBM_8&}Q`Q3pc8v@#4nuqS*~@|S%s zn9{X$7$meoFtLh_Wlu=t1qV!J3FGvWW8Y+_Jye!vT$`*6Wdb=(1nNnpz99nl(o-T% zK5p7*2=_P{2fVmOYlOY6I()X8llVJax;0h{OfDh^Ot9gOyc-q*jy1_lc7W$l11)U$ z>U*spIeD?bKv}Vh>v-i2Yfi5=vP5%zq7ugVr%C4J-nXP@$7m2c&#ot#tst*Wh~R)Z z1dB7RY0XxE*)xG*i%DaoJZ0nB!7_5f1rH_ZKw=Tf?d~~I-@Q`ByG}p(Qf=0U+1;c5 zr$3qqp6M8(G>D2&3a>uSA!P3Q58X%IkNOV+kN6?N$t^Qqzup}jY<^}`b*?uyUEKH7 zzL!VTxEPrBnIov&H+d_I!nir(N2EC0@}AAvIAFmcXu4Mk3D(6yEDF5NsXygjZ@Y5O zmZh9im+B^Ws;V=O((8`%$ei(*yTeZcdr9b|3VNa4ZPXsQITQ!yh6FHR;AYAunh_b_ zP>B0EsnT+&~_+D&2NVPbeS9nGA*Va9u; zK93fM4mE53Bj2oRmX{2vn%IfpL!5&q^dI2y>~H$;6k6nh6Y>iG7F}n`9}%1`MrHG( z=r22uVhKM|0ms~w_F-bAB>KG&+fAS5sPr>j@S)mSYxyvuc}eVtaWZ@(>p36|gh$lz za1(Kt&y=BgNz~zL!_+a73m&PxQycnBQ&V3iObMOnNnM$g-L5@DjOyiGYkIDnxHGJ# zEO#0F*Clv{i_#ZIg`30*cqQJh)vwB~xuG^dv*d*@oYG&d6(poja!-v<&p5Vjd4%!Zx}KKb`DSr6Xe8-&S1@+`4m(cQ2c< zn{jCD3IFh$76S=^sxs z%l-B;4(pDBRLm2H2FhjtaQxJI+f zPT%zfd)7*SUH79;PHyS1#6DO7_6ug8tPp=fZRr|;w#=AU2$7Q!w|EDc$Qy57bxe3L zq0_w3!~LpXm9b~3?bN@BC^eJi(WLn2(OmlYgoMon$m0ntU^6>y%pJR=F79x3=;hb= zhZe{5npJf`A6DG_X<9FxKYry4KF_`EijD|u-{HSQSHs|C2BXpoX^D`?w43D^4>RQf zz^UOfr`(9E!DXg9>HX#w=Dq*q44R3^#e7NZU9SRn0;u3ox&g%Bd;s5pRv1S3F%iDk z%K^q)#gI}tsx)e79S^j;FXG^@gJ=nny{o7sI)7Go)-n6-AE(_v%~xdpHc+eu6mR7G ztT4HKHc!#XQ@zDx%>Og+z=pg&y_37AgzOj+FM=$9|)WU?%j2PrsCULb)ria7?NSr(4Qy(9q z;GdC$M1l0!-#fb)o`1NRg5RM&-Z7!&4W%p@FY#|UE!53*QZuJap)x$|X{Y_t(xZ$( z+tn3w`4o9ZYMDidj8xCW`&(5})2`oRE7yFSH<%M+rwF?$^aL9Qp3|-TEBc~Wp>|Cc z!Rby`c=iI~MKa8Bs1|Gy8RLy76R$~9#lYL>Oam;|;$Ko4|=jT)t5OC)@o5;gB;cZZ)5_S&2 zi<$=+(QWT5;))%47RWZC0HI(6dIGOrOy7b>R^;SF*&x;gIZH$Q*Q{I)tnxKPqOp+F z;>S?uf)h&D?r}ARt{9KcdF@n+17dF ztE2=lKdBao=)}G=(5=k z?Cm*jk<*52KjVJBWH((&*uA9;wTdf=2xo%#9)^aM8A1e=@&^k(Ig$hk%eHfj4Oz>l zqkMuPQcJK3TKnt2wy3{4A|y5q2B-Afw~*76dBCc0-|_IJkpd?y^E8;`ib>4}N6FI% z@6$`(gejZ09!!+1tor(OZH5AZ+;RTTw>Nm#3!1#Uxlu2voCR_8AlsR<3Pp7E*VydF zb9y*zbk}}W$avbtpzQ>@PhSLL8L9iTP7W2M`ztdW4_|K<`HJ;Ne3n0Hj2=8E2%kN8 zWfxgI$p&~WPD&Hta0_txJP^9!H!+N#U`bpAAkS>idxq#ZqZ zVJVN!g=VCEHmwp-Q1K71?K}2O^U9z#g`svW_awkTJ3hKhc|0872c|v%00_te0U#8CAJ80M zgm9tUB=tuRwdANyZ@0#;soaa$tq2J39H57zOtLzg3Mfy$cNMB55;hly9MgV9E8Hj% zAv``hRPZX=i%f}cRd+QZn`oc)rRomM`k1|o#E(L)LHqM`XuaC^>$Q!*C1SeX~uWRlh>C-!UcMGxE+9|4xmW@7;XTTGTErHB`@Z|5j-w@ z*%^C{V|LbOmZGL0_iQF6(^?ztCZSLgFy7Hmk~x1{zX5P6NK#cBsUHF9Zyi4S4DM>_ zAag|n5lD!CL#-*e;OD0v&kFBM`L5Nk4;Ca}CG=w5?AbzVS^hf&Q2_7c4aL8n)gKkbt{I&X+0{xt%k1Gk{yGxN$N^F}*=FYbe z6fEsI ziwz4{VW`u^o0PNZ_!>QFNNQ>@`qC+?w9wg9o`7XodD^g>T9utGX_K8`vYJ<%XW}#S zwMn|x^J;DL!;55qQ)b0P-Y7oY7p!{pw+tg?@Yuc@(`$T>h+P7E$;szUSRc~kMrmpP zSSrW#ZIvq`Ia1C5=1~33J}BCvQEH-$GRSnzWl?k0$z1o8 zEvTZ{>*oHm^HIk$$yR`*H;C|MJbNM|Q|23Y(rjU^Z2#kUS$Pzq5?y>#eT2O>_cSp# zq9&?m;$|n&G3kkdGm8bnBvs6PKF(s*@^Syv!(H{dLg>#k>lsRnE8+!A$%+2aUeBjM z6lx(|@#KZMJz4LF=-9ZtvXqLk6%i)hkZSVKmr~2+M^BHs;6-Y18h^tU9t$FXK-+#h z;z2}Ya=jzHhO9_$YErnJGw(*hA;LM(V#qZkFx_W$82tvtRHuH^XJqHm$8Xadi_KQ= z^_)`RBgUoobBv&#N9#xloo6yrWV2(&-ZQfv*hqbtsj-g zf!vsz5umo(@=Yek737ytf&HGLa{gRO+PhsnJ!h-$30e(P%zt*+kw;V0WlMFCh+YWoX zP=@e+T|$(OKMRxMH68w@j}1#{pSQ|jh)`#V_}ey6$>PLo-uHW5T1LeX<1n?DT<%V^ zAtI3|!xt*{$aqI-@w{KN!62zRVV3)Y&*<`y<{DCpps}VPCG$XwNhqula~r<|Q0`^M zkc5xHSj2A|;J?4Anj{A%?+_ZZMw4>Ab&)Hp<=jOReCcGDFvt5&kZf^~qu+ub>-XsN z$zBA7=NiR~<>OGZft|KKha!Qh<>&lGYJ^SqJ@>QO9 zkNn^<<--_opI@+KyQA0#*az4LoZ*4W1G;#emj$8Zc)ZEK8p8i&yOq1KU{6#*KJcH8 z`#Xns2X;6`4_>Z}3*Z1#zyMdT$KJ6m$HcM+Y+Y7JUej%W3m^iE@f4{{wbwaD5C%K| zK-8t+007II%JRRR#xgU+ab7kJHKNsvZ^SVs<@2Sa7tE<3T^~cXW)YH;pFgbtIViGM zUfB)ORJ(c=j)OaO1lqM8LL`p`m^q>urM`>0%!}c+&1>p^7oBDlf&rIFH*YmD0%>ii zz>sC;mSsvjq9oXiQaYVK@EM!;N{TOfWMmtGg~n^gsZ}VEuwo8X4`V#nY^`3r5zfu8 zVHd$)IF9#G8CkjVx{Q-}c!jaT5fe|X$b*8R8_Lvw^kdok4v&(RbDy#@#Y1RVG{KnDWs zD*&Z$s#Qy;tltR6n`cg<_ zxsGE#r*Ed|Jv58Imn&yR!cbh|fncpB$r%gYMu16I+lG?&dz?qbJQ_y@M;m6RUYb&> zprNvAr|DQyk~}SiU>?g(Bbww8E5iXf$YQO7rJYwNLe9{-2on!fjA^SoP_ zJLo!NIqHMOgQf?5snKZr4F!y0>e$i`eCDZ1*{O-a03d957sqOi?UeurzRIruV2Seo zvuDvmNMOy3kE8$uY5)XigfV3fHl57EB24V?0Flvov-C2rc~y!~006r2B%HgUWBfqT zK&)O+(IA3XxcfD=v)u@o0BbF15iyGr5uP{j7~E%k#;cKzl_Lf8*b$KQ8TID*@Qk;2 z2Txl|-naSP(eE4{qNhX-t05DXj=*-6Y2S$g9nVC+2WSl9DOx22Vu8>yA{mL_>9Gx? zC>YICcGdVCxtj1XCrzMKu9#*`949(RrpTO4)I?+`BfKpo03d=0FPao6 zaLMr6002P%0bGU$MMdc#-v4ej2(=v7@oRMRl<;jua70~*|z!3ld77P^ahnpSa^_`ttS5>5Q2y*UqNyZy5q`j`^0$xvgz|q z<3FDEn(KCEBc6UNjP*(_L9Kg2+al@cS|H6B1R8<62%v88hyZWN2WtnE2TTsuc_8^# z{!2r3@9zBn$a=r;g{$x0UZ(@{?)y&Fc=@@_n)lozognjbQLqTJeyxd-ksV*_18PVB z4x0mUmbq2fA4Qw+03k77=l~U%b#G4NHJTNTZ&LAx_pm2#P?wJmE-@krE2iNI9kpAI z`<}ir5vMEW003dQ0dtbI00jT^kjS>|Q!ZCj_{HCLjA!K$Y0dRb4Y@spvG7QaYJTf; zba!nIg8;u_G5o2Qq-}~m)eU`Cx#3i13-F2$9tWjc?4q=g3v*m~#ubMEm%dooY@z5= zLJowfRRPseE#ZfVsX|OZ^S5Dh-4O*I%Sl)#(9IYAk`^!{Yn{HJ{#v|1yPQj3wyquY z|E%WG;e8Dn5;XXte?p6kPBiZ)i$H=C-gqXmwun=hr~pKT?E{K4#^35MF$GN|X`EVs z`7D-$()L`ncXccTlWG+4Q6-fg=TjY3!RwKo7l-BLkmOh_Oz+KhMO_$k`)hkBSqUW< zoF(rXSL#lVUFNRYXDBt>{!Evl-{mU^i0z*0#LF%+p$7WeI8Qjw&@~+2a=? z;*^4jbZpj`0u4bPrPMRTdKRnXGwctvrdzfVbNSO#x+f|!tP*LD@quOUQsqJr>8O

E|`oJZUS2u^ZhSg^A)5$`>6at)Dc=_n+-f?AJtk5BYoIiQaugm!a=98QYJn4pbiy$Aij)a|h_$ul(pY-ctvy2_(MEy+kGG-m@_B zH|f{T>rfKJfB{!cD#@`-RLqVFzbAQb84~vc_dzi>PdMl=Xm==oB zKgYLvi!OdNA@yMgZ`=30dNXigUqz}K;iZhwzbdzUc1ll$MMcFjRe%y9fCEph$stAJ zKmdV&^d`$=5=cFKk{OiMl#TKskJw+HRZv0QWI|W-lD8v=oy5j#IYtl6(Kog~hR0Eo z;MGbtWOA}>-8K3A!^)84G?0c3`%lYRPEmmAzlTOYgSbXJ=gq|0moP>v-xRot8E2Ih3Xp7$wj!az+bWDU4gKTmfL6(MMgrM_8_d z-tOV}KbL*x^D1FOzf}zHB@F{YL{a<;%A92=< z?;gGKVAg?`6)4GFZyw6j#&#m7$e9K~u|>{C@zu~%6k}g##FNIVH;md4>w z!7p?70Pcsd^={!1z}|Ca(`)oPzO|bPt1;_kH*D$duPw{FJ{}q@LK82gYbYt5S^uD)KgLW}e zyL*dw$$^h1Vx&=_&;OvU*dC91JO8s7VfLTnSi2dOL{ob6LBNAZ+5yaf0VaR}WW2y1 zd(vwhNH$}Ao5aNOG))>)jQ~IhAOIjwjuH)~war@h7oVQ0rhot!?$lH1#cic7+4zzd zzt3jRR8wy9hggA0z5Az?Y!Lt}O_BY?bB<5nHf)@bqueTYjRqq$z{Z2EWd-Mr6;E*f zq&>9a5s~iw>6>r@2mt^ffmQyJOT84qA}Z;#N~hML+ei#&5=$skPZJjpg&ZCDrXS>n z%7F!ehwUC2Tp~3OnrUPDNukzivkv)JyMxi;eDF*C0DL&@QJ{b_p#qw7i@ z&KWgWnVU;A1hg}gpjOLwzWbWLDThY-uHHB_7{C>Cv)<71y5=`%Of!H z>C3Y9D{;-1e)DIECQ3hz>+~&NTeDF`BIuv6mfujv-!w}K(881ADd-+;a*3a^>+M)u zsEK-Wgwk(7+?;HB61ZC(jdBkG9lo5TNq)unK=+ESqOn_eTWFbbVmk)d6hNX)TBFI4BYFAJGWQ ztn+OM^PPeQZJ7JW#Jp2Q%ryGQFdY9#`PNq()nfQu`7c2f`AUDDmziAGar}tX`sZ%3 z??bpvUMpqTIWi|Fq4nOj%S-9a?%h%nY2z`Qh!SN}d^J^CtiyJ-QCV^1d^EH)3hCIs z7?fn{XACBV@Fi5|wxQKXA+3@^AxI=gi_p62&?tfC)BMhsq| z%D0HXnL)67Ibf8^?5#HHJVN|m(d8Ou;El48Wd!~SgZ{uOB z{`2{ST%O+&>2IX!sV&-m(NF6qNmL?sb@9VayXE)V=2U*uE=Sm_k4e14=-AwN*#~$m zly?>W`g9j4cC2;dJE3S!$JBSap+CcWUgZXTgWIGfqg{gi2bK!lneT7@7g5Wu3n^bR zTzs)iQv5L$I&jAHAhE_*q)YVCz`D^%wA-HP^wAWk)QQk%c1X`)<8Ab7XU+oEZq5s+ z-)XoASd&%QamG;<^rmBv=|I2KBXA@UDcfi)w9Z@*ti3v{&DIz0ODEF1P)lPb06_o% z2!j@o0FXro$Kk+?3x;ia1JG1OEnx4U^&t8H@<7#}rN+ldQ53uGUM(%=;g)A#Zf9{Q z^gH!l{Hbu1GR9h6Q~Euy02L?s4vOp%2cQ5_UnT+6gbG(pS?Ia!6L^_s_6u6`ZVnr>&=!&7^l|%UCcn+K*lk{zS4-ed+Y!%e zDX1lI6wGQvJ~|Ym+L5i=(PT!n!so~T_^tn(RSH92s%58&6Y9!+O`+PGshz z^g8)bDD6Kt%WV+HY*0u>vp6qCmLt0n>3OMca`J74YCAc}L(yam(0)k9xPHpNEe_f8 z_@^UpV>zyEh=dI66>G6$RG_A|FTW{;eDG@HDc1g7qsdhs@_q1oWN-_y8LKbu)Xm52 zlc)S>aWSM~DdpwAVUwx6ACjhHTqDfd{aT2A`{of@3T|lqkzi?m9Q-{qW@{Pu#zc-g z+53Z_+s%s(6xw6yCe<$4Oo_Ty7s|9-4n2op^-bK?9}?moxkAewowlizb~wyukimJ< zJR~6s@3&G4*bu!Wk=)xl?9cae-Y|Oh>%-+e?o82Yazr5rLP;c&NhFdINhBdPqoy<` ztPfykf$M?QfzgB5_nEKPDdqiofBMnx>v}76qS&SY0#3*3cVep%SNsVr_Y4gw^L0~z z0Xfe)QZ~l=xKV$a^y}pVLfZzbVaUjXywd9HFtBl9i-4I9@!bFv-b$eN-eZz<@P7Lv zqZ+IE64rgrTyIJB=aeZ@1AX@*O2(f?D_Qjb9{HhC_LBc79Ch_y(ujiCI-FF>SkA>H;8ne=~8&AqP z;;qRK3EmVD7e7h*#`S6bbh9Rdo^~VKOJ^-&5xSL`7#fBtwSUG#ynh4z*eD5K(b_`% z_-@U1A3LQExXAd>q+@khf8&!5^tsaQDf%qa^~MzJ-JFMxu;VQcTXa+x0$h&`>7fK5G5$pKP;%$pI^Z%Gp8%jBf%eh} zQ55;UZ&)0-J^(dkKzWdGemB=~_P!5R`3r=##uup}lar9BhpmpDdK?7ny&L5p?fwEKQ zI;vI9pUuH+p1+IIU}hR+O?%{kiCn5604)^simWM)fP-r0%CeH0og~5;rg3BVK%uK& z$omDDDt5OA8??bv+_EEks)D3pxDTpk5u7V3JcGuvd55fYj{Oh$AcaMqEl2fI-{7Q{ zC!(D09qI0f(a%+S&En=+dXBfKn1@@}tr+H(`9}Y5<;|IkexkDJl}Y%OHlC<)Fn|yM z0EvpUZ>Y1>7kC`;YVd#ppaI*`5I_JM02~`ZBc~#F z$Hm|CewLgbG`NGO2PO{|5B<;KyI(7L13+ zv(zc(*;o0?7r+*MMfL%Lm;e9-56C>zN_sRE{}!!zlHOm#R#a?&hj&YN{;znK!A0wL457=@y=kREA4S0njVh_Kx zcg;Zn0s=bLH(||3!K%Yw;{KeRInV(U)ClW0hLeu$Wn}%)=+Ep^2!W}q^XB5oSHe+r z`Fc>M9^>8{{c{syyR>d{)IWi58n;;c$!_b@7GG4J`cdGzUf0NcsXu%e5o!<3@!tKa zrW9IjpSysQ^yJmn!Uv;>*$lqqWVv!V=+3daocS>~bBESX9a1dPb`Dqqd7NyuL<<)V z$WJ)VL)?Z_Zo@kZdobQ<`;Xh4ZPI4RB@RPV>+ZA|o70q$)F04rM=tj7jDj50F2;^a z=BSNUKqEeJt)6y{e+r&n#$sj0l8bMQU*T^b*O!O?H;f=XKY_JTcI-{4;rfg=Gf;Ji zfFNUgUKkvZI_NrpbpY0y*U3PlDSOX-_CWGG9y8DUxNe{7uLTiJw%IW5Dw4dLb|hIh zyt_I~iy7DM21TNJ7suy;Pi@&C02ej14R7GwCs4F%*<4vt#@^1znU??`d?vnG``sNr zt!183;<|o4(+d)mItF@!=wmT1VS=M4nradNB}24|V+&|J8XTUMp5TF07ETG!`d5R0 z%;53%BrH?(vm2-si+g>b0l3xlm1jee^>^)$=FWkM>3t0zR{`s5A6FWn{r!?5a_+8y z-so-qRr_t?$@WXT3Ub2vPb_nh89QjFg+FJ?8OxNQ;_M<5R3MxncpWq-%Qb@&MX@4- zzAbY12_zSJJ#$83g)@sCIyS^MHHxPaMZdFFlgjP&GpaH2S zPug>N;?n5#(I1~9F%^FqK_5ez zaGNGMvsJsn-8RoFaghJ4Kb(QCoU5~B3DAIm7d?aq?++mM0qlY3LFs|c1B5=i-P;wD z(sO%erv>9@{4Ij()9c+|x%qi_JpBo+Uw5~iNpSzzi68A(X|6W4Gf!;P-!V!z~^`=o1}5C^h2=cF3sv8 ziA{{@{9PrIpG+CmpL(-Hn>}5a9riOVngg5lb0g8} zTh;oT>>L~l02?k=00IPF!vitU1k`96HlqFmYOnGD5m1o1{n&WZRIil(#(#UoHr7qi zdQ`2u@HT3l$22cPWs|_Inm-<}qBz&>)G+_A0 zb*+lbXP~G_u29+DylG~($~w&r%u#x09PrB$v%EU~;}M67X4}~ft;uJQ2IC^1^s?pr zbYj!K>w!kRHIs~*HU-sv96+LB5r%z>DJ*XXm9K!^5?e9b4dCX&*|^ znn6V{Td=8(K&L0cf2A5A#)%bPxY{c!2lhvglv2REC1Uvt>(3BgS136sx3egUmZrE5 z1*-vQx)+JWkUt}Q)PhKFtKHfz1p$K*7BA4}PH-#4e$ zb3A@;l?6c3-nBgLF60Cd0suh+KX`jfI?r7ioqzxdTmTD7d`5GE6>f6GP3^sqpM+0D z@wTKG;uP=w#$s<2auK>RT(Xbq%6s1=R2XSumRVrzn*o7>OaYFE{r3lup~33>cF>Ep z6^sHL5x^HuCO`u4uSyu5wFf%{q}hjKMcMPE3b0+aaxJx-)hjsWXna^z;^`p7N#e=q?-JjerhWgi9vqg z$Dmoe+4X9{8CT1p=8JBEGm;R6<^HWIP>jzUM}&kSL-RD1@+--wUcctVdN^U~!tGBge-i!<4k5%dp7Cn$s!xt;qKk6=x0OjwEpk z#c$cL#5_$FKR0ze!E-6Cd?!q>WyTt={p@UE%bQmmQmR+2Wl%+XN6RnCV4AsW&b<2% z!U!M)5C9EG1ChQ0POqu7bEDOd?7Eq7*AsC5;SjvkgII-G%H*_EZlALxK!U63)6tFXbDle!V_btJS-pgqyyFh#yxhG<-F- z2}<>32lU2xI*6w5gBc9k}VD+WE$EmH9A5kXN?w^%d z&~oWWVAfktPWHVA4RtLLY1p^EKgO#Ad(!HCinX%4>J_2Hz}SkRY(WC_m;%5D|6!3x z09(;&P*%zWGol!2M}_@rsw2s1^Np@a!tiz-g_Sd$ZzFS=*^juF z7_EJhta6qZW40bJJ`E(_&)%Msy;IV`Ph?LJxWj1(3MBjows)fL_->QiS?>mZS-afs zN*v$PU7wQ`m`~rdjBHo5J(#4UJY?_0tZc8RC#<^(;WjbbB3Pl4Qs_;u3Q9eZ1lK)P zKdhEyIs1C%SQ4oSa0uKlDZM2r5C-wc6@`YB2&*JY)`w5sOSK2{A(cBCY523%gtorueKmZ4x zu~C2kS_gItz+$4PA%GGhoOe`EsET1h-+|Xb*}?fit2v)IX!ma#t0l<4Xik(y4}^- zaiNv2)-*fqKie&JYkZ5HkKVGia3k9OS-B3t0Av)nla@&n1Wr-B03QGl$+pU$t(FXt z8xLpESrP^keLJj#;NHSbLilZWi=@>EJYz?ukv936A7Gi8E`hhlmx7n5g=O9Cz=oWS z;Etb+%X+YPYCvIKAm(maFY7csV=$L|s4r6Ty$Y4WXCIA?`C!u3P2)axXa}8x%%>bg ziebh#O$+adcXydoMh{imXxaTcDn`@bWPi*oB!LjDsNXYqQA<9RpW|chdlh(xJ{NTy z%U@DFy&H-WZQ}n8sfUC)7+)Ds@8sCIMpA)N@q4nT;OQ3ZePG7~Sv-m6pxc#J;UYm9&edtqh6J@G zq&cEl{>;A_OfQ=*XuktR?9Wf&jAuL2$)8e7X6HkRK2IAgire#RlEWK%(Z3xW3NWa~tNbsXurP|v1ot;YS4Q0jEJ z@u6xOQ7M;axvr)afUuVq5HKW3g4X`~*aKU#ij^1u8G*n9Ef03>$$fSd@+eWL!t-@@ zmdqIIKg&(rem(oYJ1^qHva;7dl`uaq&ozWP1MuJUcK$b|@N+1{Y~7QV3E%MF5hzP! zn(Yx~C~GCZSxIOjBlLLDjHz+>&3203O#CH7NEb)r+Prb!#NZ_?btuuhub-uc2H9j4 zQ2vUmR2=60+|9(F%^PwImlBNuD!^PQ3(3b`JzHuF{5;A0z?1pLf||mle@Wy(apha{ zp(*q!Pn_p#CB03315FX}EOWyFJ-1?Y<~*fDM9A4a52dA#eIa)#@09CJcFI0^^!5yM=hb5CF>n zIR8B!<0|62Mc+O%Uxp9{b5Z4FzAYRb@7?+ft z{pu-FiYbf~j_A`JJgPZNJ)+SR*p&du4)ZA^i*^bc%-=j0?$B}a`uP6{02sWnZ^{o#L4V9JgRf4c6%9 zMTQ@qK!Y50D_*h6Dw4g3l}Jl*EKTF#+qQ@;0oF(C-)v;0`qh+CVX914AF(*Fj;UA{ z*G$>n6;$M1HIHTwkKbl!;cqo_${YmXb7zx09 zX1>W>(L|KZCzN1JF1^KaAoPIi0Q3OvAo)if(ADsoUuoHHyf`>5kK?{^zqe!4^;U#l!e70MHDE9R67sAMMVfGlKe=r4+L@~yZDGKC8OVAkXs7*G z9{VJrm+K@Y%fJ^o(YTV}2Ev%QB~u+#z-G^>_D#JRAmS{o7Duok&jGMZItqmS zT(yV5036s(Y2^~ye)}Z=B^SxX=ueXpg8fk978!xOsrrTQo)5-Cd5gGQX)WHHb4tR2 zW4jMHVyNR4gmaWNoJ{#{pCc>NJ1w3O+pXZqRcW@>Hp~sp?!0M-8;kqtH4#PL5|ww; zjLBefK&KC7V7)VO+D6HVGOF9WipBLCt9nJO-=3$U!u}~9*upV7T9wAv$9nndD@eXZ<(PYLvTt&Tr$CHo58$byxsVtHmFBVJ-EfsuQ9P# z6U$D<3MHxNN{B>!Ml<~IPYXg?m%tN%yWn3JGm&-bqm7AkuN@xW_YYIsr$V|7Ed`%@ zPGuxNL~O|?%95^|!seO%)TC9eZuyk86}+E;51nh_@}d7WAPm(x;_6oHd2i(IVg7SW z!#uwQc8Myu(bGsOh=I)^4V_t=2?gellVi%$D}Hg8QE9!#+%j_vFVd$yg@z|y%Ghq1 z{86V0Tc~B0WjP4t9c*L;tYTsIxFXZN}rwz*yTSv+4@012}-NqhHNq}X%+at5asOaKCe zD@3o>fDy<>$A?S8sha{`QP6bj%0tJgRHPU>KV3Y`7R^9o8L)nAwdKo|~7G2H~5 zgv|njVZLprp9VnnTxD6kbl=oUwgGTI!-4mI}sMV!=js?>S*O^~Pf3-Za_V z)|u~DL}cR|S^dIkQ$D;q!YShiQmcbR-0zZii3fW(GtnZt-qNK4wws}?>v!v}D|T4# z-b6TP0TQJXuf^GVW>^eywo8YI>oR@9F{*j371aVeocw`;vn1t__GW|T98Bbb z0r_G+?yu7a7n1qAZ6%kd*7cmn9j|xz4Hy8KeiMu0C)hKNd0i01lxD+J{Zqp*NhMm3z^=)X+ z$=Rs-*}}HINX5YiZ(INZSoTFqvUhm}w zV$IpPf}3U4WKA@K^1O&*i*`CJ3@W8xthjP7^n@2)07%TU&^1;%C+d@wM0k^RkX4Vm z<+YP7c%yJ0E`}28HJ;UbR;wW5-pAZ_My29;I;x7+2GVL+-5(@E1iche=37J&XO7}8 z5OHSrQjA64BlcKgZ}2Qco-z+XhG#KKp+&>Wi^ugcqtnjbC}vDRcN&W8d7Wq-H9ObQ zJIpWe&QKA8MkSVZlKXTP2UVN7PoE)YD9CrH6-=U4+DZdLDT}tSAWB|6{}}H_nsE;% zeQ^cSMb!IVT7vf_)ZG(@O-C*x63uyYiGnAl()gUTYVm?{3z8JOoVkuw;n!i0fW)?v za>Epr)M3I7yET)uN@OG^+|^Ii0RRCNbU)V}++x(FgaCp8imqM0gL0F0UU%8Scx&vH zg!BcpxSZxB`8^PNuze78fbXF71{+ht?Z1{IJ4*$_@3}3DH~Dk;V%YFH~&pEs0P$HL6&S0AzDsfzCq(9@_2*T6xxf z0J;CQV#V2f%u=5EoHT0Ista;7{tEBx<(!xwQEc}Xf*Zf)eADREV4M>P1&lbXW=5e& znvRv4Bq*8`50|-WsxXKiD*41V&d)&Q3T%CR+10#Sv67F?_sNZSL# zr{}+kAxnil@s&|0RQeS###Fr}eCm7Dc!etP>!r?RZmUz$5rK-uR3B){BA*tn9;YKF zW{YMUqe)`njcXdTNc)MJuE6S2Io+>%hobK+gZ}juX&oW6@u|T`_j{-*UrVMm z@G7c%Sz!9KXwi4`3pKa2@S8skwRi;&kPncL5FyHu6&qHlxM|mr=y^DLs^*sKF-gpAZlf(DEk>&%X2b%}c2dM|qGd*UX7ua(C ze+T}2wkv2r2pc`c#2Q6;m2$8ElB{CEuFQ3^FaQ-!XaEwEL2iQ%*9X73J!0a@ETTxTH_u|1I%G*9`lJKaKwA*`%WAMKsp zdcn1K<7PkqdEh;VMk^5dwOnBxLM?T}HvIRYUFFU>Ss@JyIm216Lj07DRR*IqY4G66 zpGT{6DaqZnl)o&6ShvT5*LycZuaXIMEL(ByH-1WGQR>6bqCued%)a(z)AWv%rw{$5 zqT;tfUY*a}r!IhA6(>F4Ikzpu{V%9rFkD017Cy70W>Fbp+(-02R;x70>__*Z>tU022^7N_Mt3NZFln zjc%RU%m2{urEPsi>7SwM8oL0|&nkwx1RU6=v4mfdij#eu6(Bel_+I++Zc{VSB@Zt>=|&s$tz&wq&zdb-hKwpJD6^XTr~@CRcV{@WiDJwV?6R!9dq|d_?tgc% zXc#o|e6>7JuDC`h>F(Zqd9RUs1y@9rkbg@@6t2Tm2>NCt*wy?Fw;qhY%{YxEiP}yi z`jqG9>_$(mFDXeF`$ED0Kc-jR38k)afBdraRnyDB9L~dDimHmtMUx~7&tINfG^^> z@6qcBw8eL~0;t2`N|F%#9TzIWkqup;CTd!Mr}= zF(2mrrm^vpB~X+n>&9n@m>o21tfdtFlXS%*&eS+X!opLj;I_8H9#ZGBjf|-!b)u8= z;A5`X)Psu=&)uxKhwm`hrw)?JJ=>S)?1kXE9^|dT79VJ!Y@@S2LC%wldbCWem^}OO zyH|V?q1ByR7=7j(j^8Co4KwWb)5!keJY)2K)@k%)x-~u!Qm)9xZerv0M&&76Ge`qd zW}ismkxbXhpmkN7e|4C2(TZpO8=4I<8I1V}1k1E#3q7;Z<)=!+73GycD4HahSd`aq zCKSq$O0;M0aH&QV;C9*(FUZO{&r>&d1$R@19{|$SW=~R z;Cm2vV0J)wV@3KUpbM)gFRWV(5R5v#GqfHwLVkMgD7q{}vHg0Xy0)BVPCx)n002ap zX_lxxJ!O98+abs{s)jR88l^Y1zJO34G@p!b>BzWwalx}_0sb%=m-fED@(M_;fA>?HcdV&hJHkbs=*M8bK`;)qp+>m{$)j>lcf@@uy5QeC_$Sa2Iwl z*MV!jXzuW1zn)FO(^fCpT2xWjwf^JQAzO*$C=Dhwv~U`|@1&_K&?PFPesCIZQ0x@H6tjXC_Rq-RF-~a*u0#GiOL-&V2@AeD@vr<-X{Xs9=?os4JD~aS5jz>LE z4cDkL#Y!Ux7akQh1@v? z&R^%JgAF=f#_?~z)ZT|2&oFh#6!&EkIddbH{ro)ETV1TR^PiU4hV3nR+iy+07Lzxe zKFoMNSUgBRP(D~Yp=7VwfCy2o44HA_^c}XZm~~K|P8|`lz3g|HX=qkYnk1WZEpC|R zKbI3;=^))(D&4u5d?+r;8l9FUc$;tE7auz&FG%ft?>7bOR=eTxM~0FzlpXS zj&}%s7rz3=ah{MkKyhI9;NpStORet@Xdw#Q2V4LI@a8?)eB4rUr%1!`5xXHhH9n(x z`rt!#UAq7RKP}cp=aNEVKrQruAb=182otl(Fr_nh{hF%Ll}NunykVys#kjQod?J%K z@sPg3%ELHe+_@XTwe_A~)0-x1`ejJ9yfmLm5<)mbAl^7N;9`IYbD=w;z3IJ?Rr;k) zSwR1vGw6F^|8tsU-QMMNU#l~|V7q7CGD`=eJBR>3=RSmaO-Dm_OhQs9b17$@<{z3L zFk`;$&o7vITi-fc2!ex_SIjB^;!?l`hvQ>V=fg_lUcxQN;|11uBO$JzU*{7J+uN$e z22o|ht}Uf(;!F^iq~GtLW0I|p9jw;0-QzZUQ(DawiZEBVDCI?Np}b~##am2%3-+){ z@4}H63-rY-r_Aqgln5IZ2201cx4c9-`rNsg=IkackpAAHM7Ik2gN*QxyxEm^y{Gwq zZsMj-_vJGlwz=L~0o8%NT@UM8HUxLTaNzVn_JHywZtS4n&5+dl@L>{$ciNs@`HiNx zCGgC+o1pg`{Vc*jc3<4u^0_-#HT0H;s{MjA|7-olP;OORzKg*ISZ~317OAR{DgP23*$N8| z6Tko!E0cG#ByKZZH9$^HXU41mAblrYE@m4G-RsRzhV=eI_#m)j4#2IEQ3tRQz$^rq z0tMJH&muAxc1jhXhPpRXo8tJq7MJbsZ#@OHz>qLv5ah^01qZr95Qmv$r@m&o4f7K+ zWF6SSt1{4@{`3JPa#M&WGc3B@Z;NlV)?kahhfdHCK5+xM9wSu$k__Iw0_U>+&yd3v zY&EI5SK63vLa(pd-)$h@UHAtqszWLq)_g@g*X;X)tD(b+D9 z`;-*L5mu2fw8d7q;!6SQ7ws*1oh{C;nJ=5uZl$jv^0=#ST=ikdYFHN zWv%%j!w|+alvC1CP4JY5dt)-*ENN;APKI)}Mf)W8-8`WHoNq4B0B%r8l2cqR_LdSP zvSR5N6c}1s$^oh#}T4GLnVUE%%zE{|SjQaq^O|h-H?FXGv&R7F37j0F< zj0fuJYF?vuYn7Q(Wi#~0KU<-Uyiu|ldkH%5ipb)n>)|e%cy?_rCD%G>< zentu|4pM{gUY=wjNns*PB(Aud+*s|rJ~~@H!-rvjiZ-J-v!)O@NrK~kK)`TCzNVV& zC)_dI7g-Ij8or!lET+-K|Gjr!y{Ru8}Y#=MjK9%!8pUdZBl^~L9vWI66WJo{2c7pWzSF1z*K(UA8c0=MF$u;foBRhTIi}@ z6G#k1>c;P$|U{`D8cOTSQ-W3jFaCad$Q?D{jUXB z-qbzV+;<}`F_>V17m=Zfa|n)^&UNljW^fEkfOD-$*wl|XcLKoHIfrRe`Vo|9IdG&j z90Ld_5C}jl=U!2IpE-zNL6pjU6kmzXBY>z~&@P_{4}b*OfyB8n)w8eqvuXM}(eUQ9 z)dZXgi_V2qA0oHw;sgj+r@v~+qs!q6y95zK7@DjKS0(zh{=D$HvJ$0wH-L2g11;Ip zF(j55fMEquI|_h;1SEIxt^?x~5A*+y{@t;JcM`aW+?MmBJts^T0)Cr7<`P$=Kyvi4 z#tGO6iZXQqc3%#*~~+P?ZN8K;dIN@aB&@P|CbXyz#>1?i4&o|$=( z;g|b(Bikml$oT$VD-#D$|^KYovJPy!Tr}T@uLWS0IqJ z5;^~pfrF*vL&LM5>v+5khQy?f5r4`DERiIG?M2-A%2)n9wooLY5UeKQnm_v>93uph z@dv|+s-qh6m1IYfQzWwMtTU+pf?K5MC$T0vm{jy~%Vt6pyeAQLeWJM?++)=ZXr=e5 z3bqdykr@A2k5wU7#?mZNNoE6Pam*6{6jALT&<#90g5y(J`3ti{VSRuTga-r{{15`e z-`A*e>Y&?7+^cr4`s)q;I)uMlECtROUK>_t0ARZRBYnbRyShAv1f??OP?a=PaNZS+ zZCet>y;8reN8W$_da472X*I@R1!ffee^vMhC!Ss1|0 zHlCkji#fGS+*9Da!hB{BO-}$6QbPd|0dMsts7283JLbOh;HoK{8o2=YNPp8h|LBALC`f@A5wmR-)S$`s zeZc-zDlj-SxG+7Qq8TtmJ7nNL8M^}Z_QWtpTNYq>mtDE~z7h)J`+LxVHo{L-E9tc^ zyk^INR^&+MH_%~b3q)j-pF#$@m&$yIdW;0RT-(%ioI}GpB5Dkam#c6Uj^wORsQ`&$ zcar4r)d?CADPsHe9f>mWSj9Frvo>X%a*-|$3azz-8ycY zYy~+;f4b2o!NOg;?JaIl8;`w}RU)s3TiS$P&=1m!4)3~&zsc<8BW_Tm`X1Fi6 z-dkEFpSJHNbmL*`tdohKI{_ldAEtUY#7-Fh==L4pU2ev=TU0x_}^xI|x$GE;g z8q6iyg_iC5V*_@Cwdq{2q5J>@?x3(IL%ymXGyutX&t1bDGt|OTQh$Z3Hca|1+gjw^XaG{|lxiqWgf zAMuy;FwYX9tG+t}megM^+%Fepuk(7PwndHIa=VLibu;1!iD|s$K%{HOPgmjGPh?&2 z(~aE@$UQAzp22CJ1yGYdtnx*Vypdaqs>Hw7FU$@B!KU)rpLXs$Pj702JyU{euGhzQ zf6mLa30YO4Z;o``Lg!XsxCsNZuAF9ptHN{o)USoT@MBHrzd4f$ycxZ9hNN7J@KE52K=AX5kGS1_)Z_<&`t-_)sye5@vSY& zuU{6?CJ#>QV$iYLyKU%E2OB}0*Gc% z)P&ay3uE5zQ?{w60R;MMFZpCLY-^&w%J1O)6JPK;G}37A*@PL9F(7S5=f@pVpR3&? znn6cp3qDWKK~z8#OWCF2B%9f}HI_~5Q&Kve1+%ZVw~30&cq-SLJm~c(^Lc=PqSRqN z@DKrLA#WF}Ln~>tybwkFthxx-VfK74gyq&}Bc7Tfis6QoGbKZ~= zOjM{!KCn!a2P_tG4lyVy>zRjyfw63?0+w94F)Z_l(9Ps6YtH zTH4;*)!(Shr8N<#Wy%e-(L+q%()E>JtiGd6Gh7EtTZ}h+&&n5k9n;0#b@f%_bNu5w zpJK-*i#a`gnqablCk*~eoah5LoM9`5yQ^)fbwOpWL-s3rjVe3^R(pqBF4#{pIhQ<49&Y#&EuLtz5La zi0vHq{*aw-8+mk>+S{Vbf>mT9?g0?he#iPg>_{KX>yf!cDrx3cex8#Vba3^E5syCZ z5=@9YEf$9}V)cF=Mg~=#vGm{nczPl*Vx&rCwD~5!&iN!ul{p?caf}p`V0PV_;&kO_ zwpxj+SB5ghr#-yGbcU_Op7owx_V2ekzK`jYeEzL$QQ(|}(35@#Y+bauZ`rt=dwVRZ zB%Te7X#jCkiybi`{_ac06#$Hf$M->;`2MBtoqpjm=4MV!WMCc>!4J<|O}3eU#GCxS zES#6E#t(BG59!=1ApqqLve}l5_)`1#j#-i-KmVSR{(4X!G%oDSRI>6%oL~`e=ZKCw zUt_jyEV(|6X<3p1z58w`ep)??qqVJdMQjAVcr!!#U$eyhs{+$xC^$XdNZp5$cQz+< zVX8OBD_dCoDDMlMi~9mn4vz3#ogJR;N9_w{g{et3^HI*MHD#p2u^cHQ*Zsh zyDtsj^PjMHVLmIr2?u{Q6MQ_xfj38SWh!AfaY<+wr`+GR5znE~O?yJdk_qgGe$B}Q zKP(=rjp$KI#GA>J5V8;a1q|#*dBN6qZ(B=Tz1fdZeF+>Mo+S6pJB-^W&qB3$XyFbJ zI(Qy;b{)RG9-RM{;e$E1TyybIF>$8X%gbUdGBb#s!cTOu2hQ*SQf5>MFc63kjYVXV zD&m8!LEmd(aKTNC9&qXDsu*vXy0}rSw_8mY21faEZl1kbB#mUa;M%TpKJloupqxJ! zC(mp080@a2&3sbEJHQ>mR_7aGn@h7F{Nm@EtvFA!G4uOulb`d_l+MFHMmxMtXjID7 z9~nrEMxFrxOX;ISPE`uoi@+B#ni5MRbeJOCgkviAlo;Ck8mfKY!WVQ^G)iu+q*xfR|h;DzzaZjexweSM!Iq{^W(&ZwA z@5s6P+`{M!Vwb|P0yG^U{0HL`!;ZaAi#!AfytoG=sk2t=5zr^sT6H&y2mg!;W-NV{ zFT%T)x_N0PD1(^&(0gRtq@1O_6Es_2q2c$Ek-vd zRpSbbXP3ufta&u0=PnN8P=^Jv1Bf;ZcNH1y&&{;)h&qL4ijPwg#*-e*8tf#W{{$!* z-Uc#fOxH=L5l5}XolV&L=5$8VwoS&5GgqR7Px>1pNY*~Tvj5U9jj8>RVq%@;(b>N3 z6StA2xV<1&MawKPCWxu>ru1#S1yESWU(rC;=5!;&e`Ei)Sf6L>Wd<%E4*qxR>+ z8#)P50Cvu49v)F36o$=nPS^uZ>QYyujmA4PdNL?Wz1uVtnl-(i1tC6G87VN@53VY2uXQWT$ zscX!H^tznT9gTm9cfl396U>>XbV2I(qlt#X}uGW31#KD#jkdYxpOV`VQa;bV+@ zzuShN=!$zs@mmsOF$N4Q>2DWz;&=2Pd=03u2X3`4xeNO3ur(1D9z?)ATaUF+5UT`f z$#<;REg4_bSo)*GZOry#riT4Hhb+rkJDu;5`xf@Yo!?gPd_dz5i`tXXhju&th_l0L zn^|xEW`Q|o?d66}P0BuAH=e9US}dlViA;pkZ+Z#<9Pu;CESsrHW&Q^4SY25aZDrI8 zhLQwB_qT`oxEGR3Su%eJj=+V)jQ(!!raPQb=%M8R2Kz3!9~KM;G&g!!(m8|%vb!vu zSlol{>7n&AqY=eDC|1X)`=~=i_?Y_?IqD6PQ2^alP+9AI`Xcy((JidRvJmHmwpmv{ z5B4fRRaXM~XdI!A^`VO)Se-)K=-pL5a)HEVu?P<2y71fIUKNg736Z-iXTvf{c&%0I z*Pja8;zqmlV#Hk2;=@g9kY#b&$w`0VV%5wMfv=nCr2(PvH$nh+`lnI2PLbwThLO}L z1#*||%iLo!Msh~kUYW?vBRt7BkKks`b5cDW`LU9plr*Lf^}^{9bcpJA3_LGOa=1C6 zS_mzCMBzK2c)#dR9h79iPf{0KJGq(2=;hSh0~%VYhL$Qq#o{G5244#q(4_JvT7)l3 z?QzlC2%0GoS6+)$Tf6OoMNF$BQ`3MY%EygFuKh)aFXWdLS?ZO0!S(xNk20RZxLQ(k zZiHUVEPuuN_+%@kT7MADD&XiEQMa9JE5pAPZROtI8}T&ZFV&LF=6)qJ{cESAIbHn) zkG7-ePR-pWSQe*S@(fd&9vz%@9M&5yLt@l0+eSy2Zjt8Y_%Jc&Z*hFCIBZM@x9#~(|qk3UH-9QwJEkgrfD0@HR!lK z;hcWupz5ykNZ=mpxO3mr;R{3u;P>ylx4R}Yj&tM7%#oCW?Dzizfc$ZB6dZ@Jc!C#V zmo#NYO~BQ*#q;+qc6MYS3duwdVM4F1ArV8&IGC#%I3$P#@zI@~Hk1@F%&|!)2I1z_?Rz zt=k8M2P2Uhu)se-4r3}#6D>%G@>2Gxy1%2e&g)A9V+szJ3(9`ay{lS-&%V3DJ{s<1 zeXGi38XOPfZ|KJ3MfF3JR#!E4={_d6OBOK~))`*qexe~!xRG}<+YXPdLBNZP;zA)n$VI?{e?bU` zm!7`B-kO(UHu%uE+2U{iu=rBx*5Bj4R7EKm1^~0x53TFvQAhCiYOz&EpJCKyv?gx2 zsH|B@I@djz4o;>QiW6k+@1ZTRq5NzK&xD)ZF%fH;ql6PXrA0+9a}xlOoA*ylnuGo*FAYR zO}*hS$BK_nD)gtxgy7saw&aX$sm-;J{5q%^*XJn?{%e%w9{~aNXW{D^z1OMx6)<*w zCFaK07203T+CY%V`RQ0)+xI5Pjg{`Z3qjo54qsdJ9Log$U_AuT_K*br;Qa^oH*UN zzdMmyoK9X$tEPGbcySG()?!eLX)=kmesCm&2e9QI4Ognrd}ibPz><+Vr*SN^-h~0n=BbD%Ap6Y#A1!R{QE7fjCCXu5&FZ&c8%&%2I{V3JRXTC;Ah~w4EFR>>4Ee&-0>eFTxWN!@ z&D^r6k;!!$Ma9NzO$Ef1-zB(hk%D(}ET0yMvVFU4_Pe_jdBRfGs^edZ%It<}&>Ka% z(d{Cy$I0S8DZO!^Sxr8Hd(6A^`1vi)Ba5{HfR9e3W?ak{g)VKNk$~2K9groEHmu8h z-`$F=t@8f$`^@J`v#IayW_-NIH+$wslM^k#`SZU~9tfa!dF+-3D3#o`)C~aez?B=E z!;&GGHDTii&0-M8CkhzX71|7m+$wI>M_C8mSt5PDl5jbHm9zV+1%(o}X_$5r<%$P+ zSi8~wLv?;0nR~h5wpS|8^PmI8smbSGRuXM~Zv-h}0U$vM<(WE%spA!En+Y>=snI{U zIVZm{TA6ZIAZ$KaGcvyDe_o_dh%%u70Jw~KDw8{U_dc-Vr{--R7Wpu(zXRDk~y z2@nX}p>aLt`axoi)M-4A`$Yh}&F{*Fr3~LZ$*mzYmG`vu!h`OfF3eM0#r#1-bAQ9F ziGw;z#gT=PDnH(8OeEKji0<-qAC1U|5cjk$jNg2Jl}@H`S1?T`7KSsilWbZ}S%JE` z?M8l}6#&}H?9>E|B~=bZw39}hRu+g{P(?~{jv-i9xp3-Lb_a>J6Iv}b2qbz7ra1!t zEmv?#95IGe-yE>Dc8gs=T8YuUR--sN?M5vJe&VIl>Z<0M^|n$>bAa(ynB|S3-cA7* zJkafc0&rf!wXnWE;UtKfBm*E zM)c&2x@Sho!kOt!%}sp4@TjiSeJ?yA8){(&PQp4i2!&XdO>aG<+PCb+h_vI1_9uMO znQVw?z`GnE)EV<{e_E^Qm+ZFGSxyZ5CJy(=ZSIEOmf&IUV{iN0HGZomtGi1lgwO4t zPdRe#yO;Lrs53*s*M>CN>cR_-DC>R`J264r45o?wjvf~MDq;TUF0H*Fi{KLgQiq+l zJ1Wj(xV9HPv4LgZ_pK~rcD@RRmcL&be77c83g2m@Ba`TvE7*mTJ&_=QfM`n316c6~ z6o;GfEPNyad_A$OD}B|@^Nr{ox)CY>BRol2mt^V*M`MN~)cn4}?=CR{KsgzcK5h(y zfuvM()h<2_Va62>wT41zvW~&{h#FDc(x|n ziAgCbaleW3m$`v~GN~N04ML+ru!{O*Rd-Ok&ZXCs=WLgHS#erl7ha*RS&F=@HIB8<&ITAPNv}EK~bO_qy7^Od^u(jPD#dRnus`DM`BxTLXm1P>av~w z{>@j}X0J%P_@oMR!PxCfpVrMRei`N3Yl$1Y~M_< zq51yDC?@nJM&AU%aeaR$k;Lbfl%2BGEky;*h?{G)YP*CBoq6$MU&odFU$1_{oTu}9 z$B@oPi`Or{8@Hjw4?Um;5NilCh$x644xOU@4!HG{NlnHMCoZk2L_tPxY2R7j#`NBO zm=$uaOH*iS0YJ3!LW{GonB_(fpal&jTQ!40EGK8(Dp7pwE4Ve9zZ2N089YiogyCT= zW+1O=Sy%0osjPuWFHbtXp(xBlppi3Tu0J64#D;d?Tu_di@lDEfL{p^eU(QPQ@MgN` zOum*^YACKZ?C45}a*cB<%eKRd_R`Bn9r;&<93*D(V3{po2rnpZ-oD|7j`6NrpSWF# zl=VAoRxkd39LE$Ya(D+n9^)Vy*T|TV4lkKf@|iG zqQk*d_2E(c-Fx%0iz-^DkQx~a=AQlc0wu+BDD58$=+v0xk)P5EhS}@^WPoJmL|Ub$ zGuklG#WjF4B5&B1MJaFfU6=m#gkNUME7j_|I(MvVLyTv6X%T^v&VI>>{ zwl|+ce^04p%||9%j~~al9uL4ec%cz87qNdJlVjS~HH-a=WeCexLFqn0fqJgb(3K1S zURtp+A5nNh>=^BVgy^es-?6iUlXCG-ay-`|?z|g875b(`M_vAIu*4Kx#Ll|b8SF3& zVr`W6aVdgV3aV(#7ZBNqkG5qI&PX=L$a~3IQis^1uGD_G4o=m64esk^tNf zd|x~gTnr9f{w*eLmG(}yEdJq-w-k<3KIys@ zf*~j+>K~2u`+if)ey^YzebTP4efv+@MHv7XoC8?tXHG>azmn7FL4*ZFIhwH{g&MD9 zC^8R&=R%^=wnsErHoDFI#>v|O?%rYl)bvEJT#N?Rd0EL^CVJoe7cAPQE{ATTN_}s8 zvqTYOl%?T87z(oPA=wmzt>62tM$0ZfWY1f8T)gU_E-U5LZt7+OS{ek`Cm|#zAt8Yn z&jd;!hDb;>N}?};ED-AlE+Yv|j1ey;2@V?fvtd9;@+Z&_SqzATBn%Q6F%TH^XNzD& zATTn{k3a}nq9-se3{pY}kt7~8{wG{-VEj)=WHF?8F{U5gK>{(P$S@3KWC?~i5{W)g z14tocCLtjqNkU*`P|2SW7#kP&6OV+%fJg`_Hjo&KBruSKuW`h`z)GLw6TiZxFYPI=VH4C#ovsrOpzZ0>G?~`EvUWog#M`pQpe-wia@kz zpHzemHlVok)wjuU{88l!Up5BNr(^xaXybM~G=KIqz_&=qKY?(|3+|cGu1Ke#QE&^L z%gv(#_(OJX0IngdUr7Zxdj-P5+j$;P5R{aJi|RAPVPf^Gu6Y|KX>w>!W!P%M3L{L@ z-(nvy=N*X`&59moL|A*;^Wg=MrF-QqATf9D*J8K zo0a}v@v-`thHEXq>XiUCEYA;`U`s+0yNmBL4U+s#8Z-WnuQAr5y=$)cD`A# zs)cSM)MsS6+GhcIKRRBgak~&0O-As`Hi2pXcWzLkhdtq@*1qF?lt%BEAyKB$3O4|# z1{h=^EPHFLxTboEU*0QDN-6})hOky$=O_gSYW5N)Y~?L`DS3%Fe>Jg)JKEl(fbmfD z+FAlJA}jO-Y0b_57dPC_oSlH%4^+7X+hHQ5a;~o_)+{BIGOrbTZ&!E);b_Zwx*RR! ziN$*|wE+|0X*5j1FN7FK2r2Bb+Ss`*b+StHp3K=D9Z|@l%#KEvxP@3IgCCaH=c$B7 z68W)-l3{APLrH#@RECMEW~er!Evq)lRuxUQNsTAYRoQ$ggBBy#9rp{vtzVv+7%&@C zRaU>|loW$IYCBERaX4BW{5OPjZfIG{$OSx>RVcjxo!6Nj#ng%V5`yEHYkJlNzO+*h zxR!{%sp2$a739wsB98>lLYdqeVg!PstYJLHe7sM7T(_v(JEu9CFo;P=E$VzTcO8pQ z<6#=%^*73;Vm&x9pa*gxY14yAFMIl{RUT>{G-aL%uI(UY=jqj&40>(STqa z&0K@(pN5eE;75fJNFM;?E&xb=0K5k83t}^+QT#oER?*nsS7jG=el`#2BK6jO2rxj} zb{!{kO?pu_RnPQ^P#p7@2cYT$P$4@ncIH5yj-W<7(u$F5_X}thbj~Zqe|ngpN?<;tSJ?+N}KujhoIQ;skp$~xfkMdgMH09@62gbgqN1v!EV z$(jfEhV{HoF{?m+t_F~Sy>c<%TUg?#X5lkKGzwYw$4TKC_&Y%xad!~QI@tfo9wQM| zfS~1gx=@}0QmJFl?Gd6P3U{P4 zty>$m4ndn8(#z`2+}#KK*HkA+g0D(zv9wS)51FXZNIk2)(6qi`u{@p(4tUS<&vFcM zi~LxqK-l7@XP7r_h@W6a_n_(8Tu{owny32gglyNY3$EJ>7XE!sWI2NV;w>3wPxDAv zSBKM3uDZoHy;qkOHf|fT62AU)4$3gPspA`)JXJaqf%SdFIc`^9*Fl403g`v<2g8gd zYQPJ3jN-~DG(JZ)+t!a@0@Q?vRje7ss-P48q^5{|-f{4{R3H&z>2T20a$BRL9@F2N zOR41}AEO!nj2&jCVFWp0hlPzu)61Ld{6x%gnxcVeIuhiw1tWS=y!Q9T;0w0j;njH3 z3?+N02ulhgopM}cxmJ5-iUIuQ_j}E6UilR9xAo%5ixl%(NE@ra$r^c6tASzx&WB=qm^K5(WTOEobBo+_cW1k6gWycv__qI z$OuG-MDx1G!`K%~K_w}CeE{DEDK@0hCJujLa?SSco@66TSbjXjUwzP3&piMm0^%Yh z09dS%;`bCu-bf#7KN%eW;L?}HnI+9O%@)o1K-E`(X({C6a=@C zbc-dnR^7lY*BT_H{g)IoOtCyopXk(;qs%p97-=lV$Q$aVM`P%tQ74ClK9~o$Ox6*x zIh&6Bx7v@4)uT&@{PpPsfm~(M*&IGIAY~wvw;DW6);U)VAr$f$_IANaf#&b3xf;5* zY)lp7NM;whNN8dseM7&_NCvtYgmGRaQ+d&|T^N?c{;LdmlCf$4sB z$nPIi>%Qb-TrVa`C*t&YfG(4vTNu^mEz!DiU{7T5s(soVCmrKvazmVPG`gQIIO)ER z?-+NmX{|qke9$py@HW~I=0a$*v=~Dov4o`+zin{g2Rn8_+_DT`m%29d6Prde;MevS zaai%Tx5G(Tmi^3w?qw?!W835}hgkiB!zN3z&(@6#agFN?@h`=CV zy$Ac%FBE>CadoQ=ewxZM=dV=GkbJaS0cmOeF#uRRA`qU+1dXrO()15*O{Kc??=H>X za|&*$+I(+8{``qxP{M^P%?$^LK9G$YT&RN|wbv?8R?BkaZ*q^Me+FsD*8Uca%6f}% zTK-Mj19Ct1axr(=J+yIkA@91w50X>c#A|Cb1#&D6PC~l{`zu5hM&@(9e9S|wYNV+` zfB2leusw)d*B!$EQ0H?S$oeC~eT1_nh z@9%?$k+wdYSW!?ceCcCLpIWKSuw{NZB*NWVou)j+&{zX^*(#B^f*-g*Z6PbQ39*uS zq{y4~At(%w_#*8!GQp-e)Ib^9UI_VxEWY&3@qbnQ3i{}z z?)y~;Q~gF6nddIiEsR!3t2TDNk|SWgyj#}bqDw-u{0h>%+G_W!z$|Y1@bdH-&PbcC zfw@%elPiUE5KWO?$It;c^NM0qI!Yp#2tPBf*8WNnl;^@@17|}U1}OnKp(c;I>n6c zO-{in7=I7yatgxw+pe74u~tirE@`f{Dmm4RSbZ?H1TdHOq^ZIQ(7astg4O@=JM49u z(3u*_KGdq#cuM}&kMuGm`OWzWau`ne;NyvByg`UH8$!YA#fl8ZzyYJ-vG{8173-Gk zGUJ|W`MK&ocC)g*P&H+f9HDZ3F{IVeAwF97Q`>a~9a%5j0YWEEwtI#nLHN?S;!^E^ zS~!evU=Vx(O+A1j1)uR}793{l#SS7hvqu(Ks@`j|azC#=fbT_|+fez2ol9G(U!BL; zYR%?MRX)6G%)pilxDI)%R@FOu_lAx|PpUSLd*Qh+y87iIxy;8&smbl}RVv^0LRa9u zQdPp&GH!rciX88@sZK`k)Uu0@uVep5q4I$E%;$wilo|brg~fwiP$k{2(gXn{g6hPdzf5%xm9E=qIS#$WQ#0aD^dcIlDI`OmI^r0NM#K67At)*AVNA!u zGysT0^+3%BeRHp7s3 z8@Loy>XG#R&a$qN0f}j5d>5$O&|6|fM}Jn=VOf=~IQ2x+9sa z$hrxK2h6bTzEOc~!}y=bxg&xDs)psu9b=q z6h7K%+WNpA7C#G#e_>|{pZLdesOn0waJxL}XDUkThMfA|A;H!ZRQbs=UCxdH-a5(X z^-0#Jc?RtcdR1F)9B4(5tEzNpVc>_S&8!7-tt*b>8(I0W*sRAAw3Sd5c2_{+DYtvO z)-s4)cUK?PNlWkEUIl+vnXoUUu&4wHdDd)yBmO zUS0I>5!`?@1uT)MN-6CyWKzkZ)D`M!!X7OLlT z5Yj}>^oQ)4Qy{r>lB=4B9uu2pHBKu>A=LHxHVKm)t$iab++IY5y!>`A=A|Kv)^5-| z{h&VDN)e7<0(YB~;2M$)VI%<7;Ou?-w=`qrHm;QVhA)7r5{ptRc)5=FtC{5G4JUz@ z(s9(|`ULnlWLKV&O9z-duS>G*qevA$<=SBS6-Ut!eA=N9Us`eW=W6feq|GuTI0U>0 z_S>1`CQv&$%9vJI^U1XXI%nuY>7&REwGc9syokk6&n<0#LsOxhHbvw}m~m(wY<)k1MtR*n(}R_mxeq zQKV3R{fm}`sjWjG`7YNpBK0}xPTCoJ=FESt!peJ4;Ov^VFi$+uq6z>R`rzXCjiiy3TaFLAdAPIpC&%jzBa)> z=?xy4JV*8&pj95FVaqX2+d)&_yN>0i)gzvvE@!V0xOsWaOUPV83|PTwx}f*BkZikP z+NTs@8+CPmBXm-$kn|t!R&;g+D9>xM-0{NbMvPcvYBT=!9uleAGH%zm$7-^}aEGK;*bqa>d!@1%hKaKW zsx}ctCpGG1R+xy6=tG6HzrfEv}52@kt4M|gDqT%^V z0Fd53SUd&+9tA;nf|E42|NP#&t}sW2Kq5|gaT!z(-L{hto`26f9MF5rV6aGC7@%_~ zBgQxXYl<;%;J5bE@+4^Q<9#>Gg#Ha18JS=`7L|*TnI5J}tYy@@!<5#Ky}w0@gDKj6 z$xw?qA8GAfX+mv4`<$R6uh9fu=w?P>!-KkCv7k;QR+NHqMR#Ojojq}5!a(GI-tF*V z`O#L9%prVQdLjh-)?B7SzX1RsSQHB;K|j!+Nmv9mGlf`>BnG_>^mP&!8nCa7vRYI! zjUNA&NNMJguvFnEP%X_KgR;kP8cF{Z6J1$$9q{)`u5Wj1D-VItm`;v15kEE}ZKbCX z>`PJiM>rIzJI1|i4OYZpmZle5g{rHpXt@gxF%6L@L?JD1YEIEklj zVv;1Uk-M45B#|1fzoyx2F+sk06FVM{MGqaewu(j-~=j>|IK*l)~iGF54;6{_PaKat>1VQ zznA&_n?xU4@7KxITmQ+w%^oTZw__8_mF9^Mgl`3=W#~iXOsuHH1hwPZ4*_Is1wZSG z@Az&ezIt3_yJ}{L^+Vz80@JxGBRN6yg;!*$ITD3P*oqK2>%%sAp=8I$#lMZ5mZ2-6 z(bTR{38o*+$CLui3AYE4SZmDJ+Ki%Ka9o+7RmJ!GuiO`(-b1`!}QIvT6qTsW}v|NM$`VP5UO%2d3K zDn1m!bK6*3wvcbrR2iM+#1KxNweC{E$zMa2~DPw)blV zC6@Y2w8{eB&~puPB(QC7N@om8z1#i{F2x)PjC~S~E2XwF{oeXqKCu3Wr->%=q-$mJ znR&xWeWMsZdh=xnrk_vp%sBIkx-@Y*>#8gQlIp#tuj`t$KH%sp_z+=TFKOT0#WVV4 zgQUOV;7ZCSy3n5#)EU27-H3rHD?WW7%`4yk&gN|~e$n)v!=CinC9CJqX4Hi*{rNhM zIj%o_?Zxd-e*v`I+XONda1MZ6K`SybpZ9*m5Py-ndV>)x?&-ymqP7JPNo%W|_Om*B z$aX88u~;=+qmnd1FQUmX+U8*Z5W{mMO?`tCpqo&=4Vet5a*{rktK;#9Uy3VK;Qd00 zRe8?7Ri{?(^$K5^&A(aSIoxXWJ)D0nxFc0DI-lzH|Ndee*@7qI z--G^#Zr{6s{js}I7LTW&CB)*7coW1F$ap||GL}bmSp8i+ym6 z!u2r@{SKkuDIbYXXtgQ{V)lUz(h|h0 zVASa7IrVQt1L$0WB!+7)rSJ&W*+C?y^F6xj?5#=m{&>}CDjhl^9kPV7TND&Rt1{Q^ z%jFHBmf&o8X7eO0RPmJM80YuvQN=ZNc3a1v9E>YQTq6gBWva7AMcy_Sc*NiiZ!E&7 zyYcxw&*>!ORE63l%Xci~^76E%N7mCfOYUIp@;;{gL6c|q(RTD}dD>)%DQe*< z7SL48n3HdtB|eUl(g^Ecx&IQco%sXX8;`sBho!qGL;n3X5k&gDnwO~jEZ>XlazQBs zrW{dA@tRS#oGE1p!f{JcWLCx}Dfxr>i_*#o>he+kb^qj6(Vy}jI@`q{B#-A4gHKd4kqbp^sLq8grrmISBjqMHGNk zdWf~~W^;OVM`+deE&Aym{Mr%R<(J-MjCLBBI!k*S;FQY(=y`JJXabnh$777ttmq%IdZ0rC$>Vv4CFqcsqIT&%N zeHILxxexMyFpG??{7)s-Sz}}o*9aMGvu1Jf2|nu2R1@QYnn_bB9{0{JMOxY%M@6UW z7U@*_+ArdSZy_+YSwI^$Qk@Q#nxbK&_}fnSALeE0Hp=`Ttc zkpt>1iwKY3FQoEv_@H4gp|1Et34a|J->kH_eHa&;tQAT?Es!&wZoaV@y{N3`S1J2( z34h^L!Vo!bt^VW9h+|`oqH(IjW9ijxHzYgOnk!NUG4L~``i>~3UH|Gw-8C0YB@xWk z5&#llQZxgZ>5|~);ECmv;C)SNcU$u~+ONKH;_~u%eDaJ0uaDe2Gvv3~o3C+ShF=%} z!07VV#kT+6;+6(LHbl3t@ZBPo*R(@>gg(OGw06i6FaKe~Po&q^AJwgaR|L-Fz$zo{ zNEtS1f+N__!UhdpAbq(@ZvV^4M^w@HrnWWU#Lzoni5il=NB{q25h|#x2rBX4L=+Pu1o(#*uB)~Yg%-yshZ7~4U;v8M4)T&tz1ikyJEU|1MbaXI&9TvP1@~Zah`gjX|4@nal+8>rYi3>t1VcXD3YVLZJ z;8b8LTYI;yR;)656-^9`+NngF9DE*c$6c4n8|l+qo%cm-qdSpylRd7CtZhkypeyRW zWRQ5pz_!c~U<716@HgDKc=9}m4gx#9H-hE+jH=P?Z7WV!*TR?U{kr#TmcP2M=C?W` zty5;MJZcC9}^U5n%BRz{F@2CqgiYhXR zeOw%Tjof-YW-9Ez!CI1`|5`hz@6C@~@umjT=1gRJ?w`}hT*H`{=2I2rZ_0vU{e2Di zSFoCDWh<$Q2gBbx=}Q-ym%7G$`d(y0No3sH$mO(RME!1cEdt|Vc zvk)_EhFxc)=i^ID1Fv1jRjKU@F!2ut+9L#71xfHvZ6N={+B*hW7Ie{qw~Q{^c9+>@ zyUVWXvTfVdW!tuGcGFOylOl5Lm9v@vBAo@y*gCsi|I_o90WLv4m4UWeN0Hg)Qy4#uj$BK$Fhr zHT-!>P;%cWFte^d?I(|uwTJa}to5PcLVLs4yWH|)Lxq+AbY;uK(9q_q3&PBsd0PNC zgbblv=+);1M&PF#A{4{t_S{y)^Pa`J?9grv2rh(qt+iBqO+>(b zGR2Hpsc@yJB2j9u<0#*#JDJdEs5n{D4#+WtRD4F}EZavLtSt~fa1Xh-Ps{6D{!g6C zh}2Hrd?Y;6v8y=Yge+c$onavN{N48SI)Ch60A?C;ue?xCyTq{jG3 zu9l|i#-m*)5&*F|^Pe((BgP4g`yMNe+0rags!O;(1X6Dut0w44KaW#i1Rsrpb_dx;eB0LudvBPl* z4ZoxNy)^BrYCMBX7p@YGv!!8?h`t^nb0X6xuZV61U+9{S(Wtzaak4he*K@E?C>NrNDyCBVY z{;#yRS*wRg{4sj|hWASxulOameI5Ke*;=coz8F|;NTY0e7w0qvwx_dOD)!{6^iV0d zYr)0zSUK`);IR`VWtu^(u8#sfn*C}@ww*+(z2qUu-M20LY#aZ@%<&(#G3#Mp>T+SXQ@ztaGg&n^;Y#mYo&>-O8 zbt0RxppGYZ?6gJ^jX!%zTD}4tD~e8dqCX?-ez4mpwzR0PZuo(oo4$~96}VkltNqJ( zsZ-zibNOSsiF^m!IcWOENx;pYlLxL-F7iig8Xdn$DvUN4?t9}}w@FtQLM*zB0Oa$m z0$H9ln;pOefHIU*5EeGLYTQCyxhelwwrwd6p}AilI`=HZ8<-`@i@jCv{m-&^&;Ns#=-IOP40(zMzTShcnxChDw0!`7FvX>G_4m+-vE05mG%3U*b^usbudJ z!(uhMMNZ90HF?H%c~5Wb>f$erb*%Q`wr4OBPnag);c;2)X0!+4%h!Mu zm7q1BHrUrEgGe-B0HVGI0YG3a0K{GB$L0|Lv;Y7~)M6Yhslpu3yy5GyHc-OsD`(Tu z^YUwNkAvH9wR0KTnLjCGjCkJ9!DU|MYTKS!N?r2i;jG(KHOX&mtEru-%SPoNKz!Zke6Muz>= z@8b1(=`iN*dfWBuOog5*pSlM>)YYTJ_S9OPvE#;dvqm0Dh$>tylqvVDImd9ZKAfiH zESx0eCj<8MDjVD^3Fkfa$0BvZ$=IK1a~m-&KK57ZS9w2g?q?d~xdi2_%HPfj~!lt22SB{<|trtD-1qMI4M zZo9i309#SYRQk-N!n21f&~mF+CH~u{YPj2ym6$6yez$7=te=00KCNTdNiJj(%ESC^ zebRE@IbP|GvC@Vgy)qzDVAtZtpk9b~q#Ypej$UTAuYw8Ku5@WmRm|q7(FZa!pOX#` zkg7au-IH}*u!>~d)=zJx7-+3!ndy)?{X`V=8nOf{UT}J(@MC#$IkkWBjS!6RAc1$) z>T0K*uus)<)KjfaW=28O{PhO8fJTr{jCWj0bz605P+cMdCBFa)XQTqa1OOB?Q^iXn z`?PQ9vgH@!fVtP1V3M$Daym$FKlSwiAj@fBP1e#@cAQ$PKyq`FaG8PX6u*gUVOPcvyf@G6y_y6XyX+;_!)gNo&pA9}*3!*1_w z)@R^F*f3#`8+I76vj{7BMj%7*f-M&cD;8A{<(fj|4ZXKdk+U#7?xza3u?Q=cS3nC7 zEBg01LgWyJS%_HOeQhxd_K0+;FRD!YEE)N=?Der@wzv8J6 z5-PedY574F|5ubpvXZyXlgY6WFR-IYIHB;TmsW;XS#iLh#jbV1kfh1TA7c~Ts}Rnj zyT#}zP32kFuoZK{Hr?wiSqT<=QEkM7?j7JO`K<9OHnKU$G9QyPP?|M*);NqPUW2e; ztsn!Ci0*(Dc9#~2Qa4}jb^C#@zoG`1Rn&IOo6KLxKB+S^zGfylLj6K`x{FdB&wUsF zaBLI7-XR1A_ZZ;6&?L#uNF0+?l+%et;-yM+-pUV$+MpH4;!jcI%j?u6MtD1`ag-%S zeyvI{DV8Tj2C7j*o>IX;^A5_Ns*T-p!vV|CrX`)Bm^ay!SZrWIC^uQ zQ05|fAbcRQBjO+$g+l32h1+uL+~Jwz2UOYS3V?!vK*NC(F(Uc(3V{JU)!_la|NmRl z|GXVk{J&apL?He2h(Y{)=kdTh=90C73$M8X>woZ&2-9ld zettySbw#haZElDr%875}37|$IY}J>LmQ*$Z2~;&}*$y13AUviN53F_SAs8Cbm>f83 z!ib%H%rfyzT&*-56@fiK3_h%?84IV78>Mq0`-aFJQ~yVupZE0Yn-Y5wY4BLDA6R2Q z;1Ws{4SQ^1xrQ#b%bCUqKyC%Z0t)&liyiz-(Y^hBGGgB4C$Gja@V&$%1^%-5hpbL6 z+`o`eqx(CO`D$`<`|2Ui9VhIubK97Dt-0YwbC~w+d2K+`kR#!%Cz5|K%kApYyA_;O^H_E*I>^R{Db- z-%UQXmiv$|uZoRhDC!xQ`5bWeROFf;F53oR`5>&H%=y$);Uwv`C%VP#pkYPnBvd8i zHyQq|iRj`fvEa82+)ptFOTJsewwqn!kLMS={1+wK2bPa(@MrfMWA$Csn}gTTY%fUl z@$@yedwtO97#T6Y6k^@1Jifwo5z2q|P1-M0Fh{igM1Pf=Y}_|YwK{UR4P(%Qy#G}? za)&grNGTfKe${q31tvO6k}Ja-zPBIj#_GiyG>AP^UyYy#<;TbZ1`g-fHvkDg2N#z& z9y<~gb(w1`m|yT^)Iw{Ct{XT*iDK}6{jRraJZpY#npx|tNhiWW1XW3;?qrzkOP~>g zhSAe!V_B5ul{?b9M>Zv{qeMf;%^1as-ky~7d+4l!^#lJ+H7YX!)@-J`3XvXb_PCcN zDk@w3+fIvkc4;wB;MxT0(u`jGvHRsG>fn>@BV1qpONXsluQ`G#=E807yTC1&KU6oc zFh2n$Y4=;lXHMyvH|yKLu^!)z|CQmlN#zwkgM_*9ZVU1Mr*g*i}JW zveB5n4nh)GjsFQA0(;|;*>5OT+urrl7^>>!&YfUMD$u?dOyz4`$SiTeCX4|pMoSWf zF?ZWzJ8ZTw`qU?N{c`T>_uqFi5Nc>RImlNLk~PPJPO{)DF-&kaZ1w6i@!|m&NLC1i!+8}q zuLB?HoYAmi6cLnAXASBk$zigykO;%?wOIwHxV_ECSblLRpI~?I!J?B@uf&tqZ#(Ij z+T3%5{-ocHQm0O9Iai>vx4%iy z1o;#q{B?blG9D`(G1Lerx2U0B>BPc5IZ=sJtgusfHa3C>)y_OSwYn=w|M+%alV9@E zm^Sm5xX7q$KsWgk(X5Q!u2D)5 zQ?(W4{j`d(XHW4Tg?k-YD}{$fv$TcR866sD)#tw2#lT3R#srZj*ucyK;o&k{Z(N|+ z+AnZS7Yg-Vb`s(6qcd|sA8VtL>SwOB;wR}d1+*OGs8YZolep`PCqdh%6Tx?YHPJO- z7t;zV5Aq)(WYIaD!%2tj@!KumKOuUMBgBYg|AID5N0SkVJ6rC!X4J!zhc~P>UrVsH zQo}$F6d{UW8y~fv@|l2f0O$fV5v*tK(^S|^R0s?zv+NAh-4W8fz`Pk;BO zHeAb-VK{u+1d8=`uAUp*hce=Yf#~3XnR<20y9x*2o3E6HMCG(T|Lajf)~HpQo^>2{ z1ULelgHsSIUS-H}Lpi20)yeaSJe|Q)QYW8!(9gAs96K{1f!BW1e)tBCD zIncTeFDp=5%rEKFKO(w~F6iFdsltulzUQ?EHM`4~?NISgm6p9Pr@aokYHE@{gP!jQ zO9{R_Qs%RpT~m3o2L?9SD$y%+t~ zT&%BH^TiDl=8zXL6eT{Bs=SnFDU$=mN>G!0hvt8;N9)a`8!Bc=gia*w|a|mOgmS(x> zwVtxm_-}?v^kW(?P{wI|=aCKfA``Waytn#w0vHCL)v^tVAICx>LYB_BxZhk7GP1Th zg0P{Cf33nI^@l9JR5;0(DMk^2CvH!I1(2aj7Ee_lAMFPOsFLy)yR0u5XmOOeFEo zWvrmeqREtV(RG?lP~Xc6Y2B#+IF?kQO-2AEBj6{-{uPN5_Yh*^D45aK-};-QB|0t$ z(i59@T`s=?#6(uOo0SbbB^KSSM)8h?f@h4^6eH)mlbJ5bgJ0J0I{OD>Frt`CKC2f6 zLoqySo=i9jln86$&dq%DvKn=V-_ivky zg>h9yFJH~(IISPn^bBnsz=K^kwAum=S*D{F5+zHz>8h_R5u~@xUUTV$T&|6bd$y3ct83C(YP&tQcal*Y=4~5DbzGb`p(XC6!&BwuM(rdM4g~88#6QYFgUL zLpQ@e@ma2Xyiz$_w_7md8xuH)8_aHBT%(2aH#ZYS&4b7x`?cPX3Fmr0NXHGft5uil zE8i+IhSOXnc~?9}vqB}3)IY5Mx^%5VKv%$^FLP^ib*ErGK7A8g#5*SzT3M7J#bXPr0HcQUGH(TdMcWI{cDB}0{hb7E$Q*S;1Tr0_ z4OF!TLc`|=!aYrVcfG6@-x@-$>l9aWnbVE?FC9B1Us5pH4y+2*&9zLphS8!KsxVl2 zHT-|8U5f9sP?YCq?it@t2P;F!{%BO1aB=hBG8#38M;a|$ZW29ab@K4L+Wnpyq=vw} zm031Eq<4@qm(XC~vPnmB?rTA41LyO3k|>BBHyG-$tMyNM&XIXbK#e!XT52wpvnkYY zVJSAvs%@AQ6;~CMA%UfEDv1*8-W*AOTa-ql33aS-`|U1y9Q$4RrLA@`t~Bylo0^X|=8A!>_%@>Rv=@x1S2I*UfE~xSzC~Pw4er zJ4~KK7B1KGOT)G82%gU?IrM+5gp;Io)f|W-%VDF5GMEZ^1xGfcr$5GmSA*4lvotNk z4k@5j;yvTn@hm2QLaOO5d*jrhiPE7brz49fj)jwCw;)RZ2RpTv!h)^=!A(pA-<>&) z`~#>{MVP;$K(Gx-5CDLtmfjb0BphWPZ;dQp{q2f{?^<~h;4FcVZ!ES{U?nEsOw(WR zfD1>t4}#Yr+&b@kZlrH$9{+tZnyhr+oKiGp#EfK7_!9hd)20(i`2JRhKcR;MGcCaj zIkCXWyQEv-CQ+yDbT&?=dbY53$%EzCk8_o6a^AWA7M{JB+FOaa zC}f9I*Q2Rw9Lb71{JpWBT)QGDVHs=cKh=VZKq$f|+G%$jy!HGw&~Tno)c zE6pnDxkS@}7^942_=(MZJRfxT)_(-i0iy|k8^DY0lLd7OIbRz%0M-W64mJR`yGE-n z_g2$1Zs)>Nw{p9U#Rb3K`dO>u2dKsEI$_D0Pei&fJjd|escY~WejiJFQ0R+7=7A6I7An=mh5Dn(qI zox2Ms)1jRQ%+|`KikVWzaD*mSlsuDTG@aRrDcB2Dn-&GiQs1iwWZrSf(It?e=0s3=c%ruuXrU+!cG>g)%b%bBA_zE`xyJjN z@v!okPJh@Nj%jn2FjwH}Rp!{F<7rfLG}^o}7Wz6SuTk2kL9rAK-r0<4jG0UGMD9P6 z&aRV-!Ob7|SyU`{2!{Vo`tlVcVTv~`Gc7Ku+3+ajYSSanc6Z(|vSqi3P(3e<8P7G+ z=|gTd`PSTmm(&FH1~vLrR3qw`gX^ICWWi(p#qv9g*ry6TU!btW3&C~s-DJ%@HEzb$ z@G$F0ONZ24>6h%=$)WUwP_yTK9v`xI$iO0yx1<79>-!*5=035nNij{ThAdf#O0ROW zf$NC2E}F^-I#ZB6OLyq9jahxKFSCXZZ>%dHyABqpXIOm*rH&zvbDRN2H7q0=DqySWz`3MPka9D-iu0D9+w`s@nLGNU z5mVZ=A#?lI*Egb8O``_@3%2?|Vn;Yvp4_LV-j*%(Z%hOLIsi>X=t+lCn9!^d*HIu` z%FE{@WR^yXpEds1*B8vi!eIb1Dib#!N6p?(5EG4LB#246fsBR0{g15d_8-ZwzR$!$ zl#E|vqFkqqT_=2lXbF?IVHMq8F?^Fu%KS-p_C>m>A^u8$d396mxu1}O5<}r4z4L+e z>@6qxo~+_?2z}aKxXN?|KOlbkqF8$Oh?YtE!ub+YMLH83re~ezra}v(VBYTb9-|1 z&tbIJ6B=90t_JLoT~wmTOY*U>)EL|||4ERv<3RYYwHu9*^eC|;VuVulu4^9(HQH8g zD=)K*=HAm{^fcHFc_ziaqwAg%oz}B-s)ZH@Tr+QG9o%mbr6dXmmx38uEAd(V`(+XW zk=;Y0+|NAs_46ecWL6pN*-A0X!eU`Q*2d?DFi@I;qaPo8P=OfA6-mRLiPPl+sakaO zLwhQ5xsG+d_)oELsjRK`*u$vm=aYH!CJuHWWVJ;QHp z^U6j1+2ix*s&KiDU)8attaisI`qgWv)5?d%W5=HBm1~1PlTV%P$L%F3*l6G_@1FIZ zwEXh6133cINrpHfKV^#U{TKXPaSU#&HKADgaINA9Who7Xb3o z0%rL)WpuL1n^K8kV`Ks6NNW~K!4*|ULTXzJ)srsU3IR3`|Ko*~;)z+o5}1b_x9s-k zr$JQpcQ;$B{YTAZf~x4G&tHk>s1dS)?x~o?<)!VruCJ7Zb(XiIoc6Ek7QCzVliSzH z^`((`PO-k6RqmhvtT=-d&|31tN`k1ug_Y_-o~*nk=ld^j zC}G1%vVd%YYzMzwx{-}nTe0P}Bi=J$X!F(MYCq_TSNfU3VWU|quWN%>y2_fa!><+a zq}C@QZ`*%=F8_{Eb;duTlrLMvIVLeyBu`{vSG`?n;8xUN9=ECC%%s;8(_$@xawJL5 zv6UHrN*Ei$!}ESWPv8`fy*g2Pv!>__tE#=b=s3*z`4p6E-lacObKvE?mymetkZVK2 z3->kAY|{kNYc!xY%fBhXILA4pnopA)7}?{A=ABh3UOJH}zELw?WxInQz(0szbuR*bMH7y(u>VD+~-aHOMHdI3PZAE$sr?yJD7-eKRj zjaE#=)pg2lUoSX26_^xYB%k3hx(OJ)Xj^-08Y{)f(KRj%4_Etmr?_=K@u3%*agubW z0zhy_1|B9^^*rETY6t^B{{cWT-0BA_&!{=;*eZ!^P`%0U%-2RJId;!0g$a$N2#Fa! zLgt&EOcfcA^>3?Q<6Fs( z*p~F+6aE2S2E7Dtlmk+MnC09JDnewz*dX*@B!&y5-+nW+OMm%geT!g(GFPC`AFO2R zrUx>AIHei5u(AwKAdqE)70_ycW@3%>!}D9z^lBy0T+Nx57!0a?^SH?F)}p=is+KcC z&AMq%_=rtXeKzZQ7u56wNF`2{YSBvv|C`>sHe)VTqSqQGl2ojbWxKEnQ|Ss+Z&%E# zs!4DEox*6z;EOpr0)agBo60^#IQi-2U}Z8Ng!JL zg1jS-J=M$bf#9mnE{rp-Qk;c%BARy@$!UP%i1H6?B{Nxwho2Q&W?zm00U7gkhr(Wi z5UY;eXrC%PXC-j8TotpTN%U+Y3i=clo;<;&D-F(=%8ARWYk85ZJkK!RoOpB9cy5pB z7d30GfohXBUWdt3^39al!*88Pcmmh6+= zms4N9-awH1FYuc$cbx!N!H6b(M>x=fwtHd|MZ59BL9q4hSuAA}pb$z1Ypo#R6Lzus z-APO{U@6#ReySNMnsp_vI7b0I*Zy<7sf~hlBj4H2A1agrApBw#BWPNKPtXYU%kKB>*k+vQyiJu-VdiMC7K!LRo;cuCS@=ii|F2~6C379P};V)*`A+X z^;Xdfl$>g{WjMZq#_wO9XG(myXJw!b;6jxk+c976hY5Z4I;GbI6JnjzBgw#4S|gRx z@)lb@!qb`tJ4jdBu;NaZ;|Xv+{+)9|0?p{&QkQj(0x`kZSjX*iwDTE z-SF-HkkV5-v~83L;uAyvI+hSY+A0*LsQT=tO^{i^*ADby@6eI2hy;vG`mM!=-|dv! zr{_fDJQWq{$-E^&J&4!uJWEy^UJ>G#vUITIIJ=>BkO;~hE3|)Sv!H4dF5k)kNB|fO zMy>!|$5v1-BD)y}aDQMelGtDYw_J~2yWBT{HKvWrd6u)cM<2THJ@=(pA0`h-p%j(~K${C7+W}Axr{gkS(SB1tM8lCL!^Zrz$pR!J#6S7aD!kjOa{I^L zGZpjnmRg=PN#!_svg1GMkBfgHHou7D_%Q$ehMYqJK-E0=T$rg+9C1+k!}~3(5_O0V z9q8kTF3vF;zB6v9H|2KU_Y*!-LC*Zpczx-1->|;ETw(vn;jmotnOr-x7?ch{%y|Gh zlJiBq*7J3*A6yFxXvfcN3TV%sTVs`5?p?O)Ev6i@bHEeqEKWr6KBeLkiCX7HYpgWf z*jrfv?fQ~K+7^Gg`eA`KOfc#pQ~E=79><&Dz(Xz=W*muQ#pkkDN`gLs*#KT6Ac$6fn*Q;`&qL#)mn_r<@Cg} zefYo$%Xczm-46)0m*P0Vsv;kpOwx)gcTn>XV@V&2GAVwjh<+Q*9Gu}o_W)-iXztl> z)-3aNU5UoVn6i2@i+R0jD^Y#*xt~&GG#4Slb@$Uq%m0yobR>H1eeHely9R*TjELE* zubXKSzM&E?IHHvEsiC(qfXUecHRQtRrRBPhWCCH+Kgl z&-NcVyEi^6kwt{SXWg`Bc}YYApn;W3!I2moidU;F7~3Zoy`y!iy%CzPpHNL6ilF3r ze-B9Ws6-9;q3#9p$qEYZ`Ivn1LT9}eW--1kA#!9(;+vt<)tA+P`Tw9LZcsK$9|Jf`7IxVipOuc)P zF|vAhZ?7sk2-OHT2!jYgxW72%eXiCfhcDTbopaP^8H9g`AWoyuM1Opj>x34~n_;A( z#tA^)4P_w#x{gVx@TZSDR{jUyW~U4Q+OTZvR5t#%nc}1RDg17=h}Ldx&O7%V5!yAT z;WW`J!m-0~7in0hi}cTW9FFb7YuE%C>Bl6PzT=Y%w*0Tu?k`Efdp9vyW)d zyxk?uTRq|jyj#P3a*{!4UoO|vPej;>CQ)1cd~7X;K7x^J$FjJ2;_^17{TfW4x-hgCeGab(U9c(S2MC0O@mYH z5ubU3`(S+%nqTG$(gGCD4QC_9$PebxRGGg6KRw=Fb=D}iN^2e&tm!=u#RIy2?6N4g z7xAk%=QCJti;mht2N=cvHc5{?htI#4ksxI^eoS7GaX44m%}~V7_CiY-kQ7c-qfh(* zl^d|XYH}>8K7kfGCcwITO?w`+fkY^l65iPg7tstMo0(!d2(pd7BVhBwv*=de4oT*( z>~Z1$H@^t#px(oupuXEo1asOHmUh={%{x(10!2i16{ro0ek6$W` zBa0`~#|Bo{8YPn?i)TiTjF&`_7$q7dh8~e5hQWp*lITZ~gdsDKBqh@uB_<1kAtM`^ znZ=Tjgdrv+#S)WX0@m;%CX0X$%aiWfscikA=*LqQIm9(hgoLhy}U z|J;C>zd7c4r!x(7nKI>{!kk6xe-k$4{8Ss){&P#=CbNUB-dyI<#a3j)VI780sS?g!*Jg&O+_S#XsT{FNa z`x{mGAD}IEr{1+K?j^&N400@mBoG9L#M|5p2Lty|3qZenm6d(pq7)*vdvznML$S;t z#>(UZKv2T`>oj+>uW)%3dD~~w!B!CJQevK(a+nBHS|cbcFjU*-+Ho(NR#89ud|MuE z%&gHla_t(2AsKp)3;wY^k)ImK$JYn5vKyx=+TP}6L%PSH?K?@@?|O-e;9xg5@j12Z ziB6^b?tiCAQz|U*^7cGWSZ<;(QwbZmw1u>@{kGeJlD{7nLs4ljr;qQX=bLnfoSJ5Z z$lX=DAXV4e0nOnE8j}n4&i`()+ei_`bnj5JZ+4H+knLuhbDUcAwlYhm?)jMq+#ZSi zP%}m?I<*?R`Rn0)?PetCAXg?c6#qhqv6HT03CeFcdg0PaTap$+P2AbU&c|H6R=+=H zwRF@53Is&*;64p3WjuHESZ3?{J-X3`fS-C!$J9ctKn+2SLM=f}K(#?>pZ#E16;vzz z*+J4;>xA`hVE2iJiduD^nQaD53^#*0pxy!s-!aeOsU6vCk9C#N?g-K~-@UqYd7) zO-A{Yc;`-XgmNfP<_b3>WSumSa)|IoM+)8SlMZ+^e*_pPQh>& zNEYgcy{Tt4yN!4oCRT?o)(liBJk-1zmd~j#SA*q}b@opqqfoVCHqh-c5MSZYLQ=!0 zF%NT^m0V5qx;_Jfg<~uI zZ{zVi#(q|Ns?;y`_31n%?%#1w_EjVm1`s>hq1{roJ${x03**dHMsQLr5u^z{Z4`MJ`_FiyfY~V4 z-wN48)iSuVET~Z^AbMq>q6hUn+<-|bCWVtp;N+>|;LU8pFV0>D#`FC+kuyh9h+&my z`J6Ay-ggU!#zH_s=hrs{B^eu*JQO?F3q&Y=n*) z@%-S*_iwn~HEQ)KxxA0o(t7mA`}C8iMQn?}8pV738kfD-g>~1>V7(-MZMg^R(RdED zYtlZd?2g=<@8`2{I*O)&gx=)jZaksm{fm++5Yp;GTU@i2W@Mc59_x#~Z;>=ngD}IR zgVoMUm#5e4pV>n*0su>4I}a?-N^~&f#Y7^itKJWRi{2}}4}m+tGttYN)zY%|u^Y}9 zEN-SC1Y5-nD=bMis{mM<9}(6`Ic1%mUx9G%fjyf*DY^vCwXfkL+s9^l1IwhxX0r&v z1|bsu`|g+#H@A95PgD5R%ZCs6i%{$P&l7;}W}$7+T1imsf6Y>R3#taXt;t+wT5V^Gk9e`d|8{rD$^oD<%BL1llv@tb`A_hitvDTg zsk5jRy+qo>Z`e}qm^yHI8oM;DueEeyhPs0_Y`OELNJd@lm8d!$?ddEc|IW>)t_d$K z5ob-}*F_y0SyKAJ6i5XNiv|JWJ$vz5WxE1QD)_CMD(nG5Yibcr5(nhRZ9Q8|+P`LP zJy3<~cdu974*+|t0YN`eOLS4jWa(kVj(6{tTta}}c+@V4I0%S}7L_`dACM&9dMHZ_ z)O6*uE)U36U1i?wWW6RUQ;(!wn?Ys4pZa zQ7-jNt38M(p(C8pkI_3KMpqY>^EdAg=#L0F)g^T4tsjOmX-cy&TcE&zsiayrxi`te zfB})K|HajVA)hnW?}*fwxSTIDt@%n8%ySxf_V3wC&(&=?q6+<$^XgLF;Wl-6b>o4! z@t)ElBe-sktI0$hpw=Lr*9lv);w#9R?N`zjZYb1Oytl8` z#cjI;?VMhMk!x%yu_{NZx4mS4aRC$(3I4rkswQi_D}h_0)4mG!?m#zzuyk;@ao&>k^hqPleIlYmVY%No#s=L<7b1jUD{u@p9qpTl z>o*@8CGcwFfCq1We3ON%WgqVIdlxOZub?blx>f^vHyiHIU7*W;8MQGd3spj*{#(4piwxNO}% zk@iug=v!`V3y+SGGdrh|O!F5GP|=l0bGyI&^~(#Vc-;PGy%?_JYCj3iXwwe&yR~WW zZb)^4-0^y*ZAPfDvz`!i-0g8~VWwb-_sJO3Tx9_z-r(Y>hg{h;7_8?Y`X)LFe z0qo^~hU+D((BX$UEE!k{pR6T(M{YzOw?(>M_@T?hH2lw>|8DZ8^A^H3CKg=iQqo-DjY=$ z>Q>KK^HSAMOaKVwr2zm$jeH{3#@>o=KmyI+HvoL+>R;A|Dq$o_;5#4ksnaqW(Wztu;!IXRG5`(2{qrj);?twFbm}A5 zweRNn7thn|U$&^4g6F1hrTu9mzvIj8<9HJxzFh=1k4ez6S;MGkx10{@60qIPXbOnM zT5{wu%i-qdT5?~m&g1b-1L;!^KBIM!yPq>ssl9aOXI`EK;oSX?=bgdWO7RDyjljB%Qd$Ma6^FwE`PwT!e zs%_@8ZBTcL}3v|<7p?K=7(9jjjAeN|=!dzJsrEQ`hwi@S~Z z#k5dQtse{%cClbHNOB9pPKxYcd@V@5(y@+@$CW*AS-t1w&SuKGt%tYo{$r5TjGj=b z+Y8o0kGw90H!%fUA{|<_qXOF1NTAU8NBR36G{q3<2YEf&62u@n+`l-zk?-84+lR>% z&pD7%6#*cL**X^k%z3FYZ?OIA&|~QdC0yE>-RYvY>(TZ0dv_*{K92Vgvcp|u7r$$$ z88*J8s3`63eVEY}u|^CUoUK8kG0H#j-0Za!H(0QmlMmORi)JoqH#fpT(kI*eXd8=7 z;UxByr#4R>=BoyXVsN{t2Z)nSrc&b14)Aw+|H{{^Qv4zwm#B5m|4S!b^)fcY=-`3O zjR%j8-Lc$^Wzq;N`9_{5TA+Yikyb$V?_59Ie{_wB8e;*^+i246XXw1UHhErCp&%-` zXY=+AiwpX1jVLa^tCef@|g#ZHM#mW=}OrFMK z9z2zX_yDRk_NT{!eADqc0gS!A(gJs)Xk0TzBz>Zj0VOJ3mHLTBp41NAk}4iNxr|Ee0)1~I3v z(**#$NC@)d-vJjMWJB*d*LbGJSZrQH(G1Kb#Urr*08G*0Hauf}DACObD{sFovFq+4 z_wLwlTUOC_oUOk(&DZd-Sp;zelpPwf1YbUPb$P^HQHqbQN;5?62-yQDklHOx#PKy* zO;UHEJLE_F`0aJGK5i_+QCZk!7{m}UgpXYP#Z|%d>B+ZPIfb&Gf9+pad(P%250xBe z(7u*=_tYYBpod>6y0ozZLw=o6WBD({;adKpF{J9Dq=CILk+)fd&OZ@+{!}yKQ|+Nh zTunp{u%~AZf{;71$*lmA0TfFPloeB1r`up-{~6*Y@_g&88ueT+(&L&~MjiIh>GneT zbD`|pFc3ZYJ?dTWoa?O$UM);Jyyw(J9@zT0GWg$i{;Q8n0fHc`?0=BJQ&lNL{{HdQyzD$V zm^Dju)q7}^#&_FQCym_8iq=x2jj&DW6e!T&-M0RN(&~C+M*U*IER>Pq%vu5j0pxZEirdx9!+1(g3R^dHV8mC)F+c>`9)Vx#IkD)PZ~A!ki56zYm)3|&hDOy zc;>9jB-mj1-{2t8x6qdVe>Vi&a~M{_6BB&im_0fwP_Cz@hCN|?$FiaaO=DI+0C&J( z|J!v%11TlbacU#Q56r2)vol}RT4`RGTD_v<-2&;NrD-u~cI%YSGqu|us1iHLD$btC z^5L$n;4ph}wVzd!V%dWMpH(g)Ya}TmZd`@N?$zyiBdU+@q?UnIvvnlxtj%s0$Gy)Ri7aecG!LW@Ax z(2tb-&jQbf5%zzL*71u$s6L|@q3LZ~EtQ)frmG*Ke#DfpY<#3_{%v?BqUS#&8Zx&SlhdM)oFEc|@4g4zG-POC9EP1AEES_B&kbO3yxdjTQ;1FQVe%-no>sSW~g=FwR^ zUlpWex>+wrXe@)%Tet{Z51tu&xMr94XmK-~yq8=fyhjxp6{Cum$wNo)8Jnyu7#}>J zu!TrR_O`o@3b{B~x{6HJ{21OZ*jF_5kNJTAa_k#Qkn$jGB*Il)l5j8ABgI7v6wf2I z^`Is;pL}{z-DHBGrehb6&y!YzI~ed(p}s_Z7uFfXR0=3$n8O3G`z|dl z2WJ&0j7>=ql3U=+(hkLIMOeLUWgxUS5~PkXyk(%2}G{X>?x$;hc} zK235xHU&x^53)DZ3AR^Io1!X`uBD2E@t%q?OQl8S%YJli>xm}FDaG1hAxKc|!UrZO zw4JY%0$L{y2Wcl0!s)0JSzIcZsS=3L<{};3mO$%)9?1PKmWtei{Ss7DaVf4xXaKAL;0GKLKznnNkU=6O z4l6AwdU9SgmAlGe(_&geTdegLXON{9DOhCs!qKJtp@G(7CDtw=HC2&ycPt0lQ%Hls z+Fa0cVJo_!q56-6v17ERwD}XG5#j(jJC4pe2R-ua@QG`Wa{{5dYz%e5e2B48NE9MV zy+`0%bE!T5#_nLfCZ7>Xa+Psd7Xbb!!URs`On!CAvPwscf=k!-*9&)_Wbz6G($(aT zYn}FOf7XB~(O)^!3n7r5{hG=Xo!M%0R}$+NjoySY7UH!{U_I2dv%J!%q&x!{uJZ}@ z=`HJ%@#udjj}`Cz+U!B8SNc`6!TBTnQ9L&>Nv^cNkjY_V87%oi!kXE+!4kj^s&m@v zw$K(SHs}gdLzNCF>zLX`hm!I0%bsOT5YE#=jH(y+`Q9VwcP&&DFFhN4i-&ej#xWI5 zZvl@)&jMS5lYv%H?V!c;1xHWxpr>Om&RKlJjV|Mqe{c*sj#fwg0Lm@B0BHa~bqByY zn`oZ9<^wnR-s$n`$X;d1U{?7)L5)LlObczjWCLDneYpOq^MdNdjq_rf+3d4;^>~G{ z{8as&=eZYRb6Hs`H7`_^89L8<>j&-v2!JN?k3Xo4kzmkeB@4tkr;BiR6*(CrWj=ox zzW%ii%a;@P2|xf%JKQGw5hs9os4aZ`qBOWMdZM9RBcEN|^Ao7UsP}&Wkw9+0rjm<1 z)8yUEF+ZX+-eVPJdHgTQ#sj=LQeft}q8E-&=6LwK;hYQR((rrMlgawLhjbY6hOZ2o zE)ouS+|b3`1G12XKsb#dV*efMv9_G{VO;DyiF%C zk3^CQ;?Q?io;=SiHN9s#%v}d8!-nq%^J^8V*fY>4BBWdfW2!{`n1Qf zKvd0bdNNI$)&uD$d&Zr7)?RLc82m$z-$eH>R&#eAB6(`vlw_AZ1K00@I} zVf&#+T_6A`Z~!Hsf)$QeoAa1=c$ROjrt~+vk`lNf75#fnVRCsl`S4s+_qpc-jbKlr zYgwsQVcSdYV!V@kp9Uj?etdX|%&P?dPpCD}-wC`H1xJJ#o)=jz=aLL{yPSHlDHMLy zZ<(|k1=;ELLSwASXrnB?k5{7|_8U!a>^|Fkrzl7PDD+>U8NL^>4w-f+T~Jv8$9=N- z>XMg#;LISY;%i!+Hb;DVM^}aBmR`xfwb0DoXa)a_=|N+pbyM-2Vf$lcMJOY^o2#>Njhn1%X6ft^HMJyA!P0J=Vr~FeymG`#X8*nQ27czj<(_Z&mk-?q+StdYVvO> zih2W65mWJVoa*74G-6}azo@lTNxrcM0j6?-#q`%2wj5Q7oVnk`N5JrW5nxh`P;3 z?NGKe>H@91h@=wCZ#QtB1->U*k9tz*(+qD+1nstNgA43=Kh;oY?X)6;-%eERxWl59 zs)0k_;;ns$U52vOmbaWN_Jhj@4mf~s0Q2DLz~aHac%3-bW3#rOYt-jHT$j7O1DMUY z8)U8k0cd~$c%)X)n;8;wvTF)|*?zF((|6#%pqkQY{Vt+Guf!P>=v2b~Ac^Z^M@umy zxCt6a#HR{AgpLf6TX~ENIRh>JG`ypKUe*b5YlLwmBk9s}U0-r(z&!b`#ET@*$gcER zVebYjosx#k8F)t@FNez+$#G(}yc}XhbCX)$Mm*NBUlC^#0SYvSNQvjp8GB1}pK_Aq z+=Z?*Q0Edd5IZcoroXQ8tx3{Vl-dOBO`j?zre|?SONc=P0D=Gk&}sL`_4&8AEI>&L zNSf2^d>DS;mdPJ8JnPpt|8t7DNeAT8p3kRez8Oz_hEE`L*y{+{8_`JIdTRJwPiKG6>#6dN=zhJS-yQHg zieACu0q=p&1D*$uy=#5o7@R#3w+izYrFr-;@t)FDu9;~pGovmr$C%k~fd|dOHeh*O z+uKA!w=-<-FJ=s0TN26qw7nZ}00k}p1xx@1IFSH7*Y30!)!I3RF~5(hdAC6z!x869 zI4Tx_Py8!5VtFc&mH5d{GZB#7j?!h5q?8X!r9nIvAqbYq7EMElD+O(9pg;fu00ICn zOTz##Gywo01P?dYj&pi4;!TSGpum5r(r_t}0*2zi>Re&H`0cH|D*TF<4dU^I+kHRF zh{^qoNxcCq#tNW2qIMSO#HqdO@$&KZtfus6R-`a}s3*R%N_6SY!sH*hh)H^m3}ljS z0XqMtI@Vp^>B)pt=ef4dblc__qb;v@(3ajZk}RRv>E&@?YyzmPFBPTQcRkz{g=SJn zyUpcL-fj0NdJ|>*Vvz!%dE|uDT6nh!aCFs~^Ig}R72X(NSh=tL4zlpy&JXB9 ze8=P9GKCCCwDBx7vO-aVtY}=&Y#ucrww;8Sl*#zqY@A`^`qxv5;n&6c(ie0d@^8); z)t?TX`<`ZvAMLg~LI*fNO9e1Nfw~4zIfQf;SYL33!Suc}TzSqsR>&xdL<6c#b)-XX zH((HCB7_7|sie?Eq|!=EC}=4$q*5gXckO3LN?I?uC&15rQI0+5(v*ouEo-^%GroR5 z&lbW{>})WYA0y24A>Mxg8EC{0zt8{(AOImcd^=dgn#|UE^%Z&rpHCf;FOFZOLm)M@ z#gb6~0_0KR-aUz200K?`0#8}=f!o8CwuYWn+uR-WI~dtmY8n{w63RAz6tL^P07&`> zC}kBN3`l^IfNp8rQ8bsZA)_ysv2J*ZTvYhpul?9!7B)>VP=XG6UA%AnMorBg&E&xq zU$%V)0L|7Fu;rOn8Mt-IVcZtDe52s{;ZeH^SC78-R`no0eIh7j{li3Z>We}XPoGtxbCh3Lg7(B^9`eRL>qA!)JP5BM!oDZry7d_Vc=+xT_SuN{Nq^IN_*|4ng$z z)fnx!4JL&hUjC2=MO}`l%tgw{5sU*aeRt9{gEC>e;f&m%`icgC_rk5HG)bLqoB31f z{cPe6*_dEzV;Piq%EWj$&uxp^I{i35KQ^Yl?nvEn9%)5=nnT3wuxoz)t?erzx0`bZ&&=c z0V8DNvW)qVfbK*KYA>Ohh>+@|x!;!e^MWS-HYw>1cX+YCXa;})z#5$UCdLt{e~@gn z#f>;=j<@NSus$(M-`S;5Xn>d9l{^NCcZ+V*nj-)LZo3QTp^CaG{Tg1lBkZ;w)^L9` zGowK?R02_e2v*O+1+(z5JfOXb?;T-nwwGVTk<{U#HBf>u)0y{oRmm6fAp_*G zKSVv9=I-Y{;(Fs*1_jD@>`p$M^vgqfxqZzy#T-&NyJ)E$OI0zaA0s(rx(k^lLQUlx zCCGV~d%2X3CKbRzT?xs0Fim`TRCNvU-gc^@&Chz|@xnU2M+?dNM4?FX0oIVi?QY=N zm#=nO4%=Sy3M2uThb2uCiO=dY1uNSemIgwzjH#eFk<|_Ie95dRSeXD8qfJeo4oSch zNX=)2=9*&;-VU_hcd23OWJaN{J1c5x2{&$bmU_GeQg9vW7hBZ z+GaG~;~YS{WhZu@bQx90GPw`%c{zJJd&Hf&>qj!=mgXtsRgbP3V%+4@U+kfLMg&Xc zK`$v!)Fixs>1Eg{fior=Ya*dduG?^^i|4rN?fK9(YgobYyI(M9SA@X8Lss#f)NNUs zzgtql^^}fIUNSU^$h+`6h1(Cn`5S>>tnat|!=<>}`mR5%^sm|b>Fa!4sV_uJNe4N_ zZ4{8Wm|6$6t)aDp<^=}t9{PA%z%+Moer$aK^U7Q;6_LmhOr-JR?|{J9q8vP;A^H6j z9i$Et4kicD5xv8F%F(|~^WC5|$lojijN~@B4(-0_=@v_d1H`I-S**tW+fnjGrW2Zm zwGiB_|ATA(}Bj?DQ`JC10gKXJjn5oIGMk~#dp4N_tSrw3cE~q2w>*rJ-k&4bWkmy1p(AgZhKSPywG|xrqxg#%v0=_x%WY^wNNKDt^bs> z^Zf2;66ZYo$wBzV&1We7B4Z+!XnK=hk0CLA4IYOXLsuQ;AV{9mGNgD(Zf|8jj?wA% z&#yYga=Ue66NyOrxUi-Er&f=P!%_$FPUdo4bp>ny=B8_JpiW5vU0gXr^AR>izS z55;Qr)mf0_o`eJ4J7YoFy+6RM(-b{9!%-JO1eq3{?uh6@!quway6PM zLAcEARSCUAk%vVL#CRBFt&|4IE%PN3=cA+Houdo}-Zq?@eZdzv279w*;~rMOGXa-XdqcUMQ3d!X9y^fgmY3%>b6aMS$vC^&C2 zhoghCV_qw3_a#&spsNcPM6v#mN;PTSNHb|D}WPGiPkbFA6*-M-3B$7!a zl1U_zNhFdthc|zGe-OuYQ%` zHKN*1&|GYydtEwH00QGe-We*jB@;&v=1>3v#V1|RvSgr`O5Yt@%C6>0oE~ht(}}S2 z)f%MMrtF^|c`F*(bVp=ZX{968ZD-QhdXBeUc|IFUfmvEghXeqC00nk3lVbVqn`S+uYlO zE4>-^V#hfm;6Ay|uR0g;HioQC6`X<~E8;-FA1;NqUOPZ1OtR|#bi3y3=3paV&v(bR zCoaHY;t~IM4%}~JfIfXR^AUW8heuF{wt973oV7YRY zk!vbClyuI4JgO5D8s27fk!WhQ2xjrpl4YBz^+@JAB~ORYfPlXz8_e6d(2}EhjcrfG zSb$G;f2l!x1zI}ZI^CqR0TZ0aK3FgE6+w`G13r%v7Ei*&Zh2%d04_5rzyKg?`q1u6 z;GkE+04Z1n;YEM|v!L~{8O1Sx0G!b^=+?0x8~rqNViGs59wD&lb9dTr^7@{nkETiF z5+~zk+R*N`jWH1(qhgu!Og$gqv)v!lMHLISB>TuDAOrv@``$;iWYLg=?irRnimv(` zO$I`LeExOX%_Kk9}T{d?^? zCpQlEE#$lCkqDen>CA)lhnyURiv1rk_BDrCwrzG0s{!f|)T} zTlSks6*H9ma;4EdT->TOaL*qFME+3Me4ZTS9}w;QoxfQ>q2i-Nv&~pd(&{B%8aGPLC7+$rngu%lKiI&R zVC$)kX(6@w1&dnnBurnu`ZLP8rgizZ57L&Gx9(_pFd}a{<&^!?=e2RtSCM)C&-)ET z0#aH4kOHbu^j5n>llZ^@OuJNVM|t)%n%6)8M!*0=oDDN6yS{;SgF+Vb=^E|*l4Q$Px&8@OMP+}?Jl%jI01Wawa9Ft!9bzw>W_Fw_i|0<`Ui{5m&Z*9BFyqW zv*3UGk_{9pI(w5#?@DH+V=;_o)brmhL?{cSpbB2-`D=7(_%ZyIR#bbv2apvghs0a5 zVo_uNT#hdfo7>!woy{`jUx{?|NRExGgJsq;H`1c|K@mRsiZByEN5AVyP~6(3UotrT)yUtBzp@zsiR+y(*n2}d_( zfiD=GLt^{J!cmO}T+`=M=eDD@p}Fsp446N3It>^uSq44hE^}ul!L|>VhOZ@3azs7Dbs6o^nCi%b25*i@b>63bL zm@q4NWqNWAj=PHSxw9>NGjRBrw*T3W<5DV^r$7^@$RNo90>xdJZDn^v#2;CWl~ywV zJvM-sfC%P=sfDlV#878qxX5Y{S#*y80^;-o4_>{rGu1-xCERSHb}#@D7yuEI9l!k* zC6R7tRJ4L3p_H+Z;w2Kw*luIKf#Xzwsh-93kH|XtUipmWC%#fDaRmzJDYnIJc5YqZByv~+o(jihE zHG6CBv^D;i?{=*GYm!a)C*^gx${d;d*GKQ86u$OMc_^;l)IviST*HZQ02g@`&Ggy! z292($HE-Yx*8a!Nn61GV66prFQtFo|cBh|mM=VbUP-d2t2%y9|Z_3NWN%K|?qt9@c zrQ-fncI?}66R*mo4@7zU#n#$&eT)kloO|%&o=M_Mi2n>Q&NHnwDcL@xPUR8*s~i}D zSudLu)wJ`uW_*0%WasAXNsXmOk&JJ10pmJW+RnwfqgEIC{|#j@?l6oPB&FRhK&mLS zGaNVjVGq5+DGi}ewg6oJ0ory9f4gR>&I*=VAsr9KR`FGAPm4=;68Ej{b^;A00n3O1(k7r;%#=uY;M4<73Z$N{+l?y@nN+M%7Cm#Lmc#uZ1+<# zO6i1;vf;PHGiyr!DGzLNr~I@OA?)%hKxx9t>0)tsKz@F_j$DaB;_(YFPg5?;56+523F&a&`!qs99;Iz3rGpoNNxR=0q&%S8U`OqLJ!S zjuvu6w(5=m0Mh$GZRxj=w0&>V2LmTXJH~fjM+pSoN6(F23P`s7LhOrwA}cpoby#&# z;VDjHoBi0!_C|&#Y|qAvuDzI?TNjIm2@cOhhK-_NX+-}f7tx@W9z@*Znkk}g5TA_2 zNWfRDOaK5uGf)0>U^y;vuTC&OvuoO8gdu`9Ml5nruytcC&K)aswfnJhz9;^ojjST9 z<2l7dgbAMRNb}7S@<_>7OF#f11P~Fx(0>L^o!egY!!10Mi6|={0P3H!%XNC^*JVWm z5k>0V|BSaN$Nv~_Ldq_shty=S*705XAjmsGg@&e`00KrA1L7D95CpM+V4qM}Ct5kP z^cFLBf~Rr0vR`tFcuNe*u3a5g%wa0wzPy%?$DK3nDR5>Yv?OlU9{>U+00I?E`v+4{ zBY8vmrkTmFaM(?dNFctKku{NJRioQYudSaM=vXVRT`ZxGu6z$~5qs^($-b)5i%Kk! zy6^)A0N6<;9te{mKW-h_x2}QOvV>X|+Lp%1%uZ&tg-oLFO;&uO)m+0a+gfmiBk{%< zd|KU6)2|b4G+9>mewBl)VDn2bvgjiUDIgUI05tjBA?+b}sWUF6wccsdx39z>U`SMs z^9YAM_&}F;{bA+oLke6wBI}blhxE`Nlx2xjk_w0k`8fApW5Cf53;(-XxI~MJ3r?F4 zFCY?^UDBpX2^u0qX-oL3r0*EcM}CQ_|M{QGJ(T*XXp~*L_H`Z$@35kkx-Y9SXXEtjzuC09wABdl zZ~Ddl=_%pCh53C}`0m|p?K?i)M={v%)*7Uu$ur}T@g&Z^ zO-X67iSv%jM|-K$F5lB6-^~WHWn5Fv#tD8Nd42~*Fsrb7ZW|;+ihtTXuwf}6-cY1a zMS(I})Bppu5mwpB9T4!6UjWl43tdhF{xJ^GB$GdHbZj*!o9WSMvFHM_bi%xP7=OR6^RCwvYlIgji?C(9^rV5M z(^lR1NUIuyOr%$ewEkl)rOij@lr1M|RRI2wEp=&7$YHsG6Tto}=aM+8ur)&+jN2Q2 zMwKL2L_}hcRxtB-xG1dq4lXd>30_6rFLU=xK#Tg}B4<+HS9ubbh2#B+cALy#hB z0ItXC->mZDEVY=D;9z-eji&1PzifdU8N*LyWAuORJv@ouA6kla00ON50!jb^Cj9fM z7^lOC{&<5@t}Dy_~Z9KU6UcnRrh*g_G<+;9dvn`7=H7O7c^}8=9F-*rm{rsgeSI= z|6l`zi&W(`j?e-zHBq&z|65Oab<9HWusgi9E)Wqa|3l+ptfn&zZdPpOwlUr_RWwTu z{m!Z*vGtyzX|sR9GpANZfAUwfz9eR;IzL=n-$o$yw{r*EF~)iJJD%QFnan*^yAi`y zUF#?$uo@WAz`skil(jWhy0cuq8*=dkW}X^9(yBq5M=#U&)EXdVTv3(T5l2JVa0Q_Jc7bCS!H z5u$K9*K-aiBSguNcj$b#BA40*TQ7c&_<@Zd{Y(j z-*?d8J{gn04r~O)iBjc1*mUfN!cIBB0A3IPDnI}vB?>D%*Tw?$m8oTE=M)a3uGA)# zKN7tUeuUMuxY70~ZrpE7Trc8H18Y?jS*Pu+RIuSDux5w*O8hPTH#B1YDcE5juS`!( z5@BXBFwO-^jcm5Ub*juo59rLy*RM48Vkl=N2CDH2yVHyT;o<4+00iss z6~`Bl#du7_`x%T_kPa5jOUm6)F=evVJw~PuH--hj_eoG|X{d^%;*1noEA;Ix`uL=B zp{zHlKYCJ>?HlG6!ZG_wPda{hdjDF?=L7)q3?UqZmNG<=%6b48)NMV|9VDG1vMU(_ z#lgvDYkzTc@+Y|oFCmOdfDGumH z#de8K&a^cqDQ4Wy64AOf`?CKbEpu9PXI+y(4yHC$gAoC>d0i6jU0PP?5b5}5|4ZI@lNselu&}pnwI!(N5sQL8ZRa6?W zc83wip6EH`YkSH3AJ!L4>^^g{r(7%2Wi}s{tsMV5Oe#N*GNs+MdzEwT)zc($;VNwQ z0tc4rPOB6UFDa#*NNQ|f#pi3_k+*Q`(BCAzK8tUwtmyf%2OnfG;i_hf-NUKGifshu zK`hS8?*P_ClWUE-4nUC~d0&Q-?>FW?R1%fsZDWBC+pvbnpL6c zP%D367*+GlpL_Cv0e-mg!T?bq09O{)Zl$Kyoehlj?G*%~rTWrNG4f$@%hNyScT5zt zJ%&9Y_o7eS$LB`KTK<}YaA0mIUDmYPA20nPPWk6DD45{Pt;wN!f@CxT8W;X`bjEtv z>RhA40gKh>!Hm0umr7uZ+OhuElMyyLKi%6)8-f}D@WOv!Rf41RYv8`SXveSfg#KwW zwM|)EJ(kA{%{wAWPoWBxhx@mRe$pZ>t|>$(LaZ=e21<;nk3XaCA%j9bPA68W9wIO4 z;`ExL(iZD=tn7@LeMQo16Q!7|RMc6V4)N=q^fS7d8?t=uLv+3Z^8(Fqi2@1UEAqLu zmCu0J9qS!^+5;Ej_fe{MRq!tT)ZIg(J0NT)`w1w07Gy^`sP@MSpZy-8K0-ac=$!EL zZ-vQ%A?7Y)7h2HL;yfdSau|&IiTm==L+8qRJZwF+op_3__n&q?Af-ArX*zt0OK5>T=^a$0Pf6MF`La2* z4YSK01iur!wZDGyEwpb9Mh4QAE`(B~qV8yZDjt?>`qiNg>B)37HM!zaxU0Pl$+vX5 znYDu1#ngI)Z7I?1-tK8D#hYur0gVj`r8b2iAOv;~a9^+{0E5OH2qX|w)Hb7MtusYK z`#s0xDV-|{PPEy<6caNbLB3%(g1{d71YlFG*n<<+edJ<^-Yu^7rtW|NIJfcl-fy=6 z0SHCDMYisxZBVcGR015XkB9&WQihtf?jf8*JcK^)8b{|L+Q|z$;r%X=!6)c{LIc*HO#AF=k?dA22)e(3eup2!c7%3W_5`Lq%RHolLQ#>I_I?8fm zkn0~g*$7VY)QPR?jb&}cXd90(ccAgl1L(9^-tfWp3zm+W%hcKWiuKApA=nT-z07Zc zgW|X>hg@X-EKBCRAbp9fc)#UP`Is$A{GM1GpAM|a)y3SoEc z<6Ei+b-RPNUBS0qL8cEcbqCzi)dR`>Rlw}rRwMHBZouzXV0|kKC_Hs#qVH}7#R2>@ zR{(hZE}xaTgS*`U?|na-)D55?gO&N}f$4RNus3b`pC97yyEiS!ecxYy-0(FzcKUI) zJ&Z=I0?v6wv6p=OsxNPS>KNI&J};;FJeQ7LIb7GPCfd>+9S$Rm_W70DlOw6zjSQ{Rd;WPor?MGC74!Eag8!O z{<1qwW%CBL`6|cH+|fx6H;ApJQm!lYCyznUrdn_srWmA&Ne>bc9_*R1S0{wSHE3xf z9F99!37QhNPwl1=R3xZyTuIM>0Y?A<83UI%00rRy!%zX~4d@!|{Q%%OkZ$1gK{>p1A4`Cn2>Ei-D&SMfwtf6fZGAPcbfgY8#p*EtINh@ENUKwRMah zyJhyhT7dDm3IW!27B9D)zI4~HZW;>D%K8ol`VU`T4cH#*>7);Ba0fSZ2NhdT9Bn%g zIIDmx(=;{N?;Xe)! zW3_`_>)|;64)u8lntrgyb1>bsA!2er)xEpXb;Bngb z4eR_rZIB!tw&D*_0mfW5d$2XP>!?2kU_1ALWd|j62c)D7(_8`DJ+FTCbO%?;eYcyq zJH67FKfQInT*1rQs0T}P2ILLI8_u)Ie?CTQ1|s9Amvy>qP}Vz)GQnFQnuP?hOFf0!YI3a)<)ti^xoWA@h0jGe%Fi# zspYd8FmZL@`d{Dk?&!dDVECFXPZP<5k_Q#l-T|f#(al{!;di`d-C7Tm`dxvl#N9#j zE`ZGCh#P=6dxQpnZXn*U6}Iqgpz`3@!RqYx&}}xY=CB&gTC5)Kz#rP!54YCXfv^Xo zfcw_ae7jA6HURu~AaOjtF5C_htQ!D%D*$a^?iFC}eJ43!4>|qN4%2N0z#9N;VC(jf ze6Fj(-s=I`Er8eq_}c-(=kT8Gh#OcpZ|;C>0k8(Z9Ia?KTVON;f3$;Z>@8s0f!4IO zwZQT`?Vtx4>HB^bxoii8^X<7X zfOp>)qPSc^`z;{b!N}PG@;}c;-VGJ?VBW3Z-1tj~Isb;-4RAYUv>r+Wuk6;)cdKYN z(07X%H84BI<;h$DtOsqk@pk}jmDcchD{wni8^w?xn%)ChZ3n00Z}#wfj&s<_+`;I2 zE&s8!1H9b9&Sa{AyWGLJgXMdFdZK}E2ekP*-fK0<*+JTFz~DPyr-jXYf3|YC8msU( zux{Y=mYnsR98SY_2hyqr%XHmzoEOV@2H*A8gLu1x(0P6hm>(YdatFEe`bzuHzrymr z6PZR$qY7Ed@U-jGn-(~sbq_$kZKr1!Jm8}^z7xwucP_4ddm|3-ngf#>2uY4RoY}pf}+&OYT2$) z-*FLBEv2-0qSm!ucf?eK;JB>j71+w9=oL9)Pp+|}G4 z3>;R;cLwMWrO?-dyxhUh>vzhqeC)3KZQL&)`1;QacLtBo4Rr^Cv)Ji_-qZ$hnkqp1 zzunjytw3r6y;%XdgKz6;BlGWD_lKUk1Ao8xd-VPE2>gDntjm#U6 zH2FK2K2JTmZQ8w{ACv!H0lZ{BI>3ED4_Ge%@pfMx?ho0wZa1KM{pQRL;o06mZlK`4 zJGejP&g>6{*#XFTw3>kJ{smw@H#eC2`fI2^P7a_pyO24`?uP4T2glrMu3+4{3IV05 zzyF$T=I{?opS=V0UP1hAAo9O96Po7rYv?|0a6Mh*9($|VFF@eF9Ic-C4%M{vf45a< z2gdbqm(YHw4wG-a1BLQ`yVyM*KKKnVY<)%C9;X9V4vT2KgNWF#0Q(r*usK|XkQ+CT z(Rw+1PTf!+cMImy2VJ{^t=&Pq)CV=I+JUtLW%;sLAG)v|CD<8I8<;*_Jhk$;AI{nh zd<9$O0aG2J$ z$ni0KKmwS60I3>@7o8pLc()c651RQ zh|=^W?du_GoD||byo9bcM_E*JLHR29#ryRt%K=F~DAfgfF`Td#H+Sv{Tb^fG(VDWO z>EV7zMDh4$wiW5c5biCfMI5t#PHwe|myyIdbyy|l{B1v*QTo>~RcJnLkAw5&h1%~) zx!SY6YUjzy0*99qe<+`c(i&wMN63tIk_XQ=EZ{doZt217jwBzN1J-BjdeC#^*aQaW}AUAn(4#ey!K^n@uo#E2eZC zNH^eaeP7~$qevU*IlP_mPCGMw6MD0uy6hLgILf8s?xRsVd#GY-ADgwXHtLq`MOS6d zYy1B3zw#XCmyWpkdw;qaJBG)`UE3d4EVONjbKC+}aSmZ~<(BhpX{{4Ew=PKK1qFi00~`)TF5>y{;ZQU{RtOOtkKN2Sk1 zbi`%e>*Pvo*?Hv{mUbPT#gk zr^)@pZ-01E3I;96Bd+JW>n0NmLveI-8;b#pa25UbI7TC zZupQ+e2(^>^6Z>)e{dpX<9({RzwnCYT?Ju5G+g{Vq_SD3tCm&vXow6B7n-zNG0X|( zJ}x=;bw1hC%d(R3FD>?6@ZFpiw$MZx6o8vj$@|mwH5?M0X8iT5@@Q4z;==$ zyvL8(bbB2_4du4;^@=w_{fM80;lRbSze6{8%0=dcPEKyW^@HuKB4v+Azr`E8*-o9~ z9XowiZIPKL;#&vQVG1A>zXz-VK2HQZ8|5l}B9Z#W(pHn?dy<6ar4B9KZlD^j3>5;Z z!`tw`Tjh%9rMuJcHC<+>ckS|B7B0uvU~w8hM>phy>w`6W>(`N&yFV6&Tq=C;YtR@S zFqFy-8Lzff9?@YvYAAs0yF|r$;&tGTO1^_v`M<|vw<{({(711Q!)yIg=#3B6=-f4?{Ugg_!>%Y1Vw}A-uN`mPE;erZFp?17(IM+Gs12s zaPTC8uqirrGHGVG55*c^vKAr!W~mHZt?s3#)n>x9E2rSB+l) zn>fzixet%3y-E9%n)lp_^B~sdn7=kp2btTtu2;Vj^O9^S`_PAP{|U!q$eht@_{HljgwzdDh7!l4rs>E_Z|gUiH4^ zotJ}w!hSr+oTe*2nfpT$9&P>V`9m&;sjPl&t}ioRW~u(izWO$ZxU}UxPHhSQnr(!Q zwOC*C6;D=I3%0(qj@eZr#8Rojw*z2SY}?P1c^0qbp3VK)POF{#T1=ovR;^G((ntTA zGh2+Mz64kStWb6)0*jv2i`=@4-pSN8?|HRO*8j0@pC8OwI|Y(P2&Zv#D8&G{sLy-A zLS8G|bE#59;g`X1mgr;pw@~r-dwVDiF)NI^l%~u0Qm@_cw2&p9 zrscw%1A2!tFjksHfS^h5vaMux+=$uNbHO}p+{_>VAbTn3rLg~ zOqC#c_ZXO!Y)mgFa}j_T6q`9sH9MdaY7{JiY!rVfk(Q3ZT?qOQ2m+t&CeUf5h76^T zUO5uTn2Wvl8V~{*lyH>)3IGB(Q32xm;bQ+Id-ZmYYLV?*^vZcT9Ue*F`ZttcE#Sfs z?3QAuLo#65Qp3a{h@S@jQ-L&;(qshmTLxi7YK$krmK@KvTGvzBC0O)igoE?p~gg!(T5@Xdn=*SULYsO znyV{)M1}ma51n=Q)t0X_KbnP?4HgSK9c%Q#w4XWOd+Sv0WI?I_tYN=&f0}=qb7v(b z^_~OKyVzJ884ivAJ8RZ{M)Q;gZjZjt00Q;6QPKwo;hY7Hpc3kOdN|dK?KRT-C&Fex z|CV1jJ#aHp8W}1bC+^I8fUI!XqK}T{YdIik)=^yecXNSqy8SBke=cq@H?26_o&f>8 z01MCn1=cWQJuBM@8rjCU_%$jDk#o$xqdC4VO1yz0az6x~dWza0WSgpM*c(G$vmLt= z^8dXbCq|JB5+7=16kSqg@3@YxALtnuDtMfr8YEBthtEup`6omT6PoM}vctT( ziR8LweY?N!{QE*c)^&JMn|-R2`)bwYM@S-cRr|W2$=nnrz$)DDELh8u+06?h%q)iJ z9EegCEy`>W;Tq4e7&p?}-{hW@rJl(hWb8*H<+;E?U0aPk!JRs%QlrywB{iBukry_% zKO|C`^A=&y%ZE%LiF==64x~H1@i#`EpRU2id>FMMdLTbsbBQzbk2ED zV;!6|K<-RyJ(!|kA=S;VSUZ%Imon{ns~~TLBus0I!f*f#{69k1wRcU>&wrz=(LJP4 zxGGh`PkeTA$o88dh%>)$M%MR=DV@)@^YXIANxPFke}yKdsw(OlBAk2!Pvo$zO8c^R z>CZqJ)*&%CIh%qyJ$Yjn9zbjMJKB0xonpa$gT-DGO8!a=5!-`qZK5+=>+OvXDSAC> z>V1BGb{l?>>Sx5iZgO!Z;mV;AIXMEf%W=z{gVvirQ8@8&IK-n!tRI$ppq3IIisUfL z>6G_&RC%Z};qYMhAof{@kr6@%?aq~W@zCWU#`f{gW)ql(H?Nd>=85pWo{68S1Kn4< zha7;l^`d4qbn<06aF+r`P$GT6NxSRW6exr8o@|n#qK$sK8an(N$3>O;48$hF00o$2 zk%t~1Up78e01C_i33CQF7!4J~t{i$$r!y@8u8R?MBuQ9&iJ|TP zrN_>Tv^w9{Td=G*sx;O{rhQ_2{txtKmmE9{5*!LK_I!{66>h7n)s!)vj?eR4j39vF3a4 zw%N&0v9(*kH;d{0L4W{iSJ#*nwMfraY~ zH{5BWh>;7_d1pi9M3TuXMk?B7%ljf&@3m?>!^&@B6cB5KQsOqG7AMlQvQKk^=Z!<< z_~5rXLG_qCpPToGhzCQediRJRQd94x=rV^yXbx>)yfAe0Q*WD*$g`^Vdp1-9fJg)(^{6 z4{=}($^&<{1KZbHL9>H%v4g^Pc94C_pnC6Lv$cc6bN0Z0y^9rwwF5NzdoVnez#apY zpc^(WL){~gxs53!oO1H#zB-K*}P*H=&vW7S=O{c^ZlusY4y z9m1GBy~rH3AZ_5{tswQ5&}zZ80QuhSs2`Hh4^QgaLENsEKx(ZZ((&^3Tt#3z2H$K4 z%eDhx594R92VC1byLddL2HXv_9#eVqYUsEF;@5+O!|k^)ey#?v9qQfg z{)zdtRJsSoiuQGkM;?sIGsw49#`H90!hApg6I8tiTM!l1Gow3Zgou z6e(AuCC*4RdGdb`7>>9OH=1+K44EQI{o-PATh<0nhSTzhYL5|vm0)3(=};Qx%;Wr^ z2@}4zw`&J@-gjNx8D|GG z?s7O>@IBY@S`WL12S@N-f&Mfe)>gm2FChMUfBUG}F4mBC>owpWbGYbf1EakI{@#I- zUIE9~gL>O7pzr-KHE7*I%Y)o$`Ad%^cL`Y?UKo} zR|Bke7Z7td5OxcQJNwyWy}~rN|nvb~|`JHsNpw z^0)(N)^%78$N92@%Kw=w6+mxrAHT7>gI~2>?!edG?x5o`7JzPG>L>=Up4+MeFHZXo(QafvXgs;(?xMUQEUE@=IJ4K>F}hF+Jf+xFyl+tXQw- z&io6TljqF900!AEq$n~wyUzLa_COD-lEcKID(dEvfb7 zytPS**}H&Jpp(ex|C}6k3+tE2Gm-@H3`$Sp{{?3v5Tvo*LR;w1!Uzx%S$o396Wk)W z@$*dAXEmY1U6o$wxeH%wD4dZj&wFGXE@d<`=umlR6nsak6LHafA{))CDc!@iG?s?n z>719+geCxk1Y=T_!XXDY4K4Ub#m|0H*qP)pa+lQd=lnGbYj*>hiyjAgXIjG3f^VGo z*1Egv$>ffbL>D9>c*s2I={HGHP^4wqT(upi z2<;o$XE`~BNqED$7jvKF8;;bqtJpx_iooCiv}GI<^SO&9%;D_a4(OzvLHyVp;vT@rfER@bi|ewy1##VY0PMg1O9 z9tZ3sfK9EJ5_woDUiJV0*yE+!^L)A*w@4ufZM^lQ-erNb?PK(v#RQS3D1OE3ej#b)ruolGs-U4wAE=Y<`c$MD&!q7D*7XJZ7=e)O z|IQcoL6LUP<`EDJXtevo7`bKseyD5G&dK%$zq@rY$7G?;=wCsm^QO&TB8P(y6rat} z5^}#RQe?|4msNe#5xk6=W$-9}ua3j34g@qk=_Anwtle`3jy==l*4PDCxeh(Y*3*2B zRLVpTl(@!87L22LE+yQOOik?!EoS#BpQ{r8YTRUllX4VkaXDmnSXh|*O3 zU>W?kwE`E#06xi>-~dE{1A5hdm;egQKVtEp|OMGF8!MT7)zP0lC)5U>E$CROBstD(`63Wi0ZYU)T>c4L-j zP+5JjnrnE^r!5U0EX2Q9W3aC#rwM|IH1UYAh9-uV1@_`00TEYNH0tWGsRI^BTekCMGwg263Ek-k|3OoJo~3o&Ae9;oLddDvSzdI)jzCQ~W~wM%SYlBI_u zh34p&D8h2N|6vcHb{ZZOpJL$6E~IeUMWHEXOR0*xWcxFrJdlfxzQfAZ3p0Gt?PMPs z8Rn6iuqC9-FmU^p`+X_)Y1XPc_YOW+;p4LS#z5&_MB$07n@m_irF--rCzZCksb&%u zFrqmB(|gry>47@J&Df0B?Mt zgc(DtwC(I2@Rk$SYq?u0=;8gs6x$KnUONMfP5wv6i zsJ5Zo7;dW)+;oC6QIbkfYhwgdB0P8LFId^j#&079kyxy43v;s8hEjHs%N|?tPxI=c zE!L|~cdDA=UbTNbmfE)twg=XMXKAu0(}wpOWtAP*h`MP6JB7-rSBHy-l$%SDWLtZ6 zoFciHIvT+Tcl$TU2XM>9FJ8ZGgtqtIAw4}TK4d-ep=NQ}u0^zUTQ3j*3fv4pYmoqu zz_)D7cgx5n42EVy$lD8?Lt5L+uowUfg%{?u<1?pkp^Ph9mP&E}1l}-`^!rhRl8POzBDI zEHF22&|TrRY%oz%53pg_HR9<5%T!;CSw55Ph}{d=<-(exBtH2U#HEkpb>ymw12GrPn7{P)r{Mb1%&W1nKMvPkb<)X)I|Z+cgltM~*5Vsr>9pb5KhN^jVT@HRxIBQtp?+tifVQ=iWB{IFP zm*t_Zo@obvubEbM`}y7Qs>h?}5hcTuZpp5(ov-RK!I0|@$;$v>CKZVRLuT4Zmwlz9 zGxpRa%$BkIcmNmUPX6+;#EB4yN#AAI^Lg>1miOZPHxd8@%C`LKlmG>xsI}mxzs%To z&(?K!hkaWO|0Losy&T!*%Mc|rxhe=WTnu^pfo;r-Zuwa`O zKw;wOiq_Q|nOtKD4vG)jojgaLV84&Gc`9IwKe?*ZipMjm^x$NWc|ht6t3Ic@S9eY; zfciq^@uK~-M`Q9E5a9V4Ztdt-d7j%)`W0h|;K3G;`MrF=IA)uD^hLSAhGYOAk|yv) zTB>);R$C{|A$%0SMG+#`&FwIA8b!-QKDmSRi5@>leUuaAPyh%tz-9Hm<%whyPpa$1 z)uFIokGPR4Am%3d~?HgUJ+!cHcr zG-KG6JhZ7e`LOSkucTZP{|~5=RB02ubLXxf%B8F@{r|gwbB_OklI)l;x7GlJN2S6^@cE^B*ATk!!-!21LYw;~F^@nrD^$H=CZ|D-J2!(KQ{{%2OkW z#-FUCb&SDST)HQ}rfp5G|JAD0ED)5+Rqp5PxX@=YIEJRYW-2uau+YsEQT6kt@13dc zAmjHl{jVSZT8W^-^8l03us-VLDwteD*6&0ABvZXKwK~V&v0Qx3*QW0CJnxltKvA_* zLzA|7H|`4OboM+SP#nka#^n4BI62Qd7G5GUp`8RUn-{p=thhLq955vbK4Am5x{BnJ z+H5q>!^VSjv1$B?T$8I(NU)zfYGag}dB^hcLNKT^sa;3_VPtE_kN2I}&QXzUzncVX z1T6`lXM2+ar^Z#4(x)Obw9`~^@DXVzTQOwVdZ_KxiK#G!BvW4#*LFw6wK>$NPCt1J_-=c-`tm^@nklRVPKnZS5~_LY#0E51waM_5CX@700||A2Zvw#?gs@3 z6nS+-oH19Li)*KO#LH)IDg`YQA3u9vz|4hyj_0b%_L=9fTw`>lHTq1Z z5+*L5O20(cBumDWvOg;a5SuZCEJG%x6^l!Vwl)0Q3xNjdDH0*O76ekwLHlNbqyAFq znzQ@oIVFou(0zQ75XtU>L!dl)hLvM^8mp)|-30IMKg?3zC}i$-%Yx663nh%Bm1z5< zU*lU><#RE6@4|@MR7-pl9Oc&UhH;_hHG#B$n|iRI6TP4 ziYTyh%>V+i&ya1OLV5rKi~s^DK-EX48^Plpj~>vLQD}~~gT0ZgV{~|v70SplAQ|(N!7(_><`p=?f7H;h`>^eJysE4mL7A) zPocci1hFsM(0R|(!dmu@dWqEPqA7E-QvSJ$BlpfMrkYUPV;UhC3=xr%5qUEXNm*R> zTLp4sqpmtYpvBwkBF{Bs1@soVnP2K)0(B|%lk>4mEOGhnzvp1TTyjgmc(8BIo2NS! zkoZeW-M_FRA=h^6`?I8$Ir-E)UCaB*HTR@Yru0p@k?w>j6?9qjR390S-focTP14nu zn}JOWQnYQ3?ZDAomn7iMuq$HX>p0Fpy3cTKJog`53F$_L1KO%Y6ndZlUhny8v-dfDhho%VI7>C}XTf6RCL|S3 z*G=Q=pU=ye<-za4*(z(?&jYe^@>4qMy_;Wmesdpjle^6YSJE~|_f|11ITGY!H1^?< zpv*(Ne6Ncd<;_`tXz3#jD{+;+wg9c*L2K1w^i$P#p}J9CgeWGjy*UvmWRow%M#0s%`_?W z@b+V4@N4BUr;XN?(1*)Cd^_jQ_Ow81i)f3};%}VkI?g&3Wi=)-iooqI%MH z*G<+~Z6z+GiH7PO#r&*Zhwou4QmvIqAnf~zk&eG;D_4YPPZ(jWUjj2^|DFsXtvzN! z-PqZ-Tn|exN@){KdY5P1PIZ%~^E~1WYNKoKC@;VOR2R4?HO3GGzMEg>$h;9MjBgM? zHV6R#AOLINDyN6R$^a6Gf|P!qetR`^-7HuxSAFR&HQPU%-11!yd)v$$G0n}k1iosD za=*L8bG}H)V3wzNVO5+?rgqjw#g>#`^%nxoQ$epbF6pbiACci%w4U?JuV78*L_>B@ z6c7aj7!_a)1$rj`>3}U+-+&N71QDP<2@s`ctB_9!J>WoQn|in*oem?Luv!GjH^e=@ zxv@r4kKY+7Ip~2O49<+x%_`m#XsEA3rC5L}_D_d|8hN%+yGMgs`?)C~?)?fPy>TD_ zTrwyi08*d;Nxt$WOgG9nmvBv*sI|#7>%^}NS&zl#ihXyF1k`%Hogwyd!NGnvE*j!W*iDld(h~ctcmcLEn^d;qCgxE>Jb19*%EUnq@0LMhWc}K!Ni`MgufK; zRxL9w5S7BCNo9lY1NOVU5VV3AQaLQmsz;6KhvTDL7&JWjABE6S0T!tr`Xv zOpb}FL(mAr6)qmCu_NxSEfHzKu3`X>ljA?Upk)(c1KE|Jrd5E*0f#!Rq+U;hFy@&y zud-Gma{;r6EM%JrsWV6=q0%!Y>KoIrrY}#Mol*;K#3v0;ljFv00(chkuYRIaJrK|> zvjXTCMeHuQRG;l1UPVh$>CCuc^IiLx02T*)^}qlXzyJ~%Uxawi7k4`tdUZICue7Uh zTAjm6PN5wrl>JzV-$PFp6HIr{oz2O zhWd}fJoHUJ{SyZ(p_vy@$y8K9h`qAmfY_(+pTu;J7uWjFXJ`&ymc(KXUuO$qydlZ` zh*U>ATB+SaXjO*#k})vVFTBM6nzpQJ5n|rbk~9TMgbV^dD>q2qbtnK3Kmbs>4q?}W z0OHXBmM8X4h{MzB?pCFc8tQ4Zu+peJdhXb?=D?lt5vAfVnd>E?M>1 zRyuz5H)vrR;o@o|)7-!STNw+Uu|WC~9*$8f&RtW+;j=yPrhPyzHeMAS_RGS{ORsYB z2G?Pk)>AK8O305@Y4(guo?L|JWU73JatD%5_su##&lOTJ0JC^ArBM}o6z=6mK7B*NEQbYbF{IEGfM9W zTKbTe;GlG1v?l$$)-hW5mNRmBP$7%3L%9Ik_6CKLp)WhoJT=`YAAeQ*JAa*L@@a}S z{^REl0eK$zoReQ&NS_|8H$mX7=ATbFIVMDeMo7%@t5R-;Q>XwG@BkK202L+CnnPP) z$PlBy7vriQx1S`wUj(n2H_2sd@Y)V{B&s7y@3x&M!8+Xo1izhgzIoEELh|J2jofx7 z_&Os6&zh4DczF7K&hTj0bn`+D@mDGfXLFC`5^|nIj~qasF>9n;zv$)7iy@r(p!rAZ zQQ^yRGvusaY;eA@10W{DpKkwQ~^r!P>hxy&0-r zRT&3%MX2saDBWQzRMaFE`<;X@X)7ZgX@b8NRqrX5ru3Pik6)gp=5>68R_VQ}RxBw6Y1#%WJJ3uhkFZWf&9^qFcK(flF+A}cE7e2&%{`npP zsN{`i8d@?!JI1|un>lq%pp*{ey1yTuG@PtMTKs_J(EYnBd4xIu0eJIU>6zIh2Y00n zm$VPpWWJu8+K|l{c3EYCmQeDjsNGp!q0AUT?0g+_7{j=6mH3uDbbkCBo|;vwDa=@@ zEpFB52X5|x_CD@Srw;)2#9wZhm+~F!CAg9}iAs_Kgj%R-v3xOgg>Z(`DY-IJ-?gV< zAorEMluLgx+v4`_GI7j>p}L*E_h{eiD808tJ_fIE8z67^`tR72aS2mPPd~7#k6MA z?0sI&s;A~3>=QZNk2*{5dv=M=8U9k0yq5g44z(@$%KBpnVheND6Pu;>7kirv87h>) zf3sbHYB62T;2J{ebb4=i^Zt2l*;6`;e}UH~@g))heFMfZ6aWAMNQfn`S?=Xm?Hf}I zt~H^DzHc8SK3&9PS1cV!{NLo2gt2U;O2@w+twVx3#(qpO#9?hPdmbcfbaAS?SdzIy z8^(R98pK>y&D*@|>}!>n*4|x@;<6ZJ`}h~WUNpPsd;oyq#YIF24j#iYvQ{=t z6yFHs{v*e>tY?t6z?*$tb%VfUUSZDmD^f5RRGtD$o+*`Q_5$I?q zaq9@8l2o9HUZvv{d69xyLWtCDmI1<> zQ7gyKpP3C251+`#(3yAh4=n3suj2)Wur`;5o9)R^HESpN&h5${nnQ}2w+c78V6-8q%mWH@1C%!0=1AGap7e^d z9rUtF;`Z;LAbFzWTx9F!R42u?Whvy~>H;ARhAf^Xc84y_%61b38z|dr*;u z*KR3u`D|-OIQeV`lQ472YYD3`jPZfGOw^+-Y_1`$ak^PnISfyMz`yBf9kGR_@$g3h z{}S)rxZ`kIbjBKlKZd+e;O_}^vyxG9>#hQGd2g@Sc24}C82>`!NT0e;=vRhD-nX0pS?}~tQ zdWCdsG!`+*GN3~;TYnRD866rzZWYEL$mqDuZ4d~{Hf7j06#MDPxC*8hRKkkjA5n~K z&&&M$zTVrRHDJB))rX19*|98y(h)rUG7``pshP-Y z|A#7B*^f5dbDSQb3!)=xZXuit~|hf<``11XURmyk^jOkIJ03$&}w9XEar_0?t;aeo8m9%qYp zgVr@~Y_Rj65sP*vv39o|+yDu6w(3QTq&#Wt&~&rr?51#5d-PN;&hOY^GWHCw2CAsgDKf? zx%zp|X7G$!saY5I7cZSymfVlx5(pj7MbHGW-3)8G_EI9KL2 zM)=HQ`P_9WRA?yuYU`)a7O^3I;%Vvrdpdu!|JUVSx>kPk*03HziuAlu-9@^;$3;`V zMRu#VoY>OymL#6gem07dMB|y=#qGpL{XMn+j46a~;$2Uckq#aM%M=UH6=$mPo&y-^ zIyu$Z@+`D%6$~Iy8?dw$l4%}ozmv7(H7&#n@TBT@q{JJw$+Qu~KyRy&a^)mnN&o=? zx>#pz_!_T;M(uQ}+Q_|I;5hZ+&aHt+~?{2Ye24e|FW}!ORaT`*bFA{|I ze5|(&V@k+=*14c@T?zp$_{n=Ft^@W+AOHab0EZ#;H+-b*C6`t3T{OS|q-3mAm@l9}0Ez0fXQmIu;`QtOD{eLZFeK(` z_&(W;RdcP9_iKYA>eDxgxQ7LO{#-co+x?o!)d8xSO0HcU#3<7_E^^kC9fz3)ld#9| z#yILLB0}1dZzFA{(ZxKqiN6Hqzd-@vZv5m;9$~EoSuk1dT%snyCVf4w3|`IOOS5px zt%aGL?T%MKFehMELd<>UK!~dl2&U7qMa{=&axp%$(c^l?yifNY6Xxru+QYUZyCF#7 zq_$FVrXN1kzZaxv!!cu>UWy?MrBeO?2AAZ(o|L?!SIect|t@JH}#d08y<}@L#wv+?;a#!yr z&RdAJpRfP~wf;v!KpE@el833K863``thu6RjfD8D%zT}!E~eOwka~VBORRM9l^@Ry zxy@cgWCnU7^|Pe;D@Svub(tzP1ew}zjcDffdQTyyg7c>M%W5^B(lW`5kvO%M`j+p? zwJ&yG6%~!SSCictmrva~$0F@0iTEM8xzLJNmum87GyQ2vY6}^l{xBGnMp&De;)1ce$tEOd4se#QNdlEnNH8Xl;;T-I2X^OK^W4MDnQQ zlw{2Yv}+aWtKLP|%QK=OfB=xe>;=dv7Y{&iTVOz|G&O#&na#joE!2v4_xE$*q@$g+ zdEGs_l>h)%f@DU88noeLYQO-T=yA8}3i(DQ1JA;*veM!07SSpn4MO}= zC0?MNUN`XV0p-S?LiuhZse9v(HnnnEx!X``@~c&y7E=Gyg#_f}}x#dZg2wz?J-;$BI23$jN8(!N{eqUjb1E>`&-^PRyZ6=6%q!~L=E z;fqegTTZkkcjivUw418x5vcyJY<~nVgLaHj*=rnByeShVZR-r5pWc($syo)`xR{tD zg25UX=Sj82A#l-VXyMsf34O41p|)u9F9kHprl$H41)KZW96!#jY7{bk;SsO5I=+<6 z*7#$*PSWpK1w@^nM*Rgd zJ^=!-{F{~?w{touP1$)VYztWfZz@vD+zDoHvq8bu*iP`PZ0}hq8n_n%ba5cIfut8l zQxE2q#+t$a0oz{dEn?zXmluB9D=hRq7*AJ@CTNW6XCI{_#RQvQc~Z!2SsV7_vkks! zXRw)LnPf>kK#6rM+wd%N13?>@9Ap+n+%8s5lqt!=SiE;;xa51zK}2OzDs@!q~iXe$(7>lW5K7Dou3 zR-QSNwu*=l2o+%U2qVT)H9Um}lzBmL#62u# z25H~*hjLr+qx)X&>dKoC!NAUV!uvx{)YU8pa;TtjL5UHnzq4##sb<#-_`P5NQz&Ly z54ICv07@VLM6l4jkVZMpA zY3@?ZU)-Q1fS4@lh&qGEuP5Ar{m+-EZ95GmmW_^$z&UYQG}%4u^-W=I$=lgT<>_Vw zHa`iZN6yASFgJDVs6Xo<;luMrj8ChdHcTAKA2{1M#b=0|JK8Wcq`~vw?9isF-5C%_ z__%kSlNIP&8-GO-khU9?R%n*?IK@6IDggJ?Wz%>yF(j*Aa}8DhC&f>@+|}5fM!~*T zS3EZ&?x$B9SGmbL%bZjZH zGEhWcBm4;fB#JFaH>p(AxFawNZwZWnVb0W09}&wY+9{`?JPy)l81^uBDpG)UJs`Ha z9=N&s_C=FXH~#yg4K6|0TH)C?xOhm4c^QZI`-jPwhF6eJ6cbIlCn*M{`DhD0 z^vpGpmdEW=A3{z(z=|ptT#ulEF@8FEFcan9tUmrg#3gmZfexi826T|1#y`=d$6nk% zxX8$lyQ57cqBV89ymVz5Bi|0aF#!BLInBTT652=t0kD1-_Q?v-=>LCv5(pnFH{eYn z-#`GizyOvA8T62|g*G#EN4g)kTBZIe;?_SSzuB8ZrMt2$H(CV{&0ZQ^jh*BTF9C3r zY2b&;ArH$T;#v16mAWLM&~0ABVA3|_g|zbmF~jJD@b3xL9Ns!F4p%lG<(lc8=T(dA zg_Y<1lNKk9G5Cf;hlEGATsO?IhtGgnYZG>320^|crSyeSJhyyNIi?iP_8MOv;)}@u z{bu3JvDwg~QP`hU(Q3KZc)>ickols$k1QPTnR|;-{?0!g%a0t=wxziD947s|`O~^w zu1Z=fx5#Vu8ls`1avS`qPdzcW0=cVkZ_y<`GPsb=hi9;IOf>5pG|HE+TL@5%zZvkQ z+DkXRBq#M`#ZR&j`$H?GuLqIlfthT*`PBRz788Z2L2LqJ>gQD`Pi(xBtw9P^AFl~f zBUuok0hwI~qjd!h-dt@3$IH}Y%Q7m2(HZ22tj&sl($_OwdK%fFX4?$exhxci{|fTH z1kn6ynpH9>Vg~T#2+Ii7}8~Dbv*d zeQw5;MSQOtC!F1Fze{HGzZ()U!5-QL_yQy7&dJp%jI))3u|Rr`R{IrKs(C|sV8t%= zh4+3hmU>jq1|xv^9y@~ovTqkiK)JlVLUUt*W_Pl|=}1Hw6j-u^l^%Jq?R`E(ec+&PnU-tgNMXfwv$_ZxfR zSq#A$#{6MAh6Kr!W@qAZ++Oti0i3-B-+E})oneu>XYk4b4fZcsAg*U1%C=a579Q~b zK^--H-M6pARHxiMwmZb3E#!GbCH4+#b}Pj*=Dykee%5DpN+cXATQOW}aa+g^s!Hp_ zj8b`!>i#6;amkTzbKM}rU^x|Pt_##e_nA+72Mq1#Ryg`9nXxX2ppNpIZCpY^JErBcd*#w8;UOkbq69J_IrUR zszAranUxWZ69;-;H1H9$?w zVYA9Fm85-t-2X_rx9=kwc(`G+&M#k8kqXvG@ZV~|ToB(2xtK_$1o)yDm-D;e1jZLj$2(fD*7md=AZmDPfYu%?q zSkGRQia{gQ%ISZ8ra;s%5s21!eek8LxgoWOj8!k6R|u26dk|(P@mNBLHdc-yUu5%ZK=s zRJzC$2+wttK+|Rvt!=YnoQ2mY%KYt&eeu|$^v2-5Z8IVexKx6ne8j~B2m5&v{hb0G zkl@1khG}hr-{^`*@!-HR5N6G-s3QH25J3`MgVu}d(n!+ZcK&fu(|;NDTc)E0N?*q+ zZW}2%1%LR(QZ?5I>k&jVRQorD_eS`!Xmqg1a{ry*isG2J71*?2YxkF?PL)RiCrTtEO; zcHJ4>V{3OcAJFt!Z1bNGD{QfMB>2J{k`D15vrNsL{6?AB_z8zQJ-L_)iZ)je>*?!R zt^zpwhx=#}uaGxsGeFV#l3OU+pY!%cM>8X07h7*=eXjwI5G;XiK;|5@bCQn$hv#T1 z@nr0JGE5MO~99Nt}Pcw0AxYCXoXKVz3Q?}I{L^@}CNvC~FqkE_fFs5x6?4s2oz ztL+Khdv*h~JzP@Aj47Xd`1^95ge3>8wwKN)S$8faiGjA*oM-5#)}Tq@06+wg zV1N))OI7o8LUD#@i!n|=^ulQvKxhD%-sLn8T=i*V5ZrY$7bi(OEM_vYjS(w241yUb zOx#Lb3z&~-@pZinc~H_;uF=vKm6negjWq6)q~=c2o@3p8;ekd*BNaK{o3j1Ne$W{R z4@wv^%dPJ@kA~~=TrO69HU6&s*zs5YpJ&Wntd|5({gMEHEKwi;2rs_^=MhCw>>?@G z?HpAcZa?@dQpXs zcO3F(N1N<2S|$vn`QY`(vC}vh5C9M+!P5b^ln>4%wpXt91e~f(JS-^Mb})`yAZE&a z(|N(uPS~e8wXeVcy`TV8zyMlKP!|f7M_kMXf>fBi`dx-C{AWg`$N#KX7M&ubMu<`k zC(c|bH0^nsQW^bQFj^e+>gGK_P1NY-x)}MF7|pAxENn*Uqhgb%N||fld@+B-NbKcc z;ENq{(oy>CU#Yj{N2mxaVkI{>@C4B&qmi zDd0S(_b*dI=#hhQ@7=@vnUYoS9waCcPQNefK%(QE{vMk~HGm`{W>(+j_Vm#ZyI{tMvxGAB|M=2+8wUw{56FSMYve?cNPTA*ZzV z_=$q6gtvWPLQL0zLqkK~_lYd2RQf9+JH+gt8Hm1$w|4c2tsp1rrd#}wrcc6#OIPxe zftI)Yj!~M9XhOM|B-meYV|u#{)WQM3ezsh$h0C`}4We#y}Od z)u76Vmc?|(JbuMSpOb(AEC90<0CJWdV$7L5`%|r4jn(b7v1-u17c2hpJ(3W0A+wSI z1(E;-k^lvSl}3qcD##7s{E_YiZDqO}U0y!{)C|t>aW;U=3*bwnhdx1&<|UwOC-wEGHHY`<7B36TB7 zrUNjTIHfAc;+NQn`J7cn60${h!f-$-8tRIt^1`^a?Guqk4KFN%iqVYnzfTNOOs=c7 zf$N3e-GV_nW;x=q93Jo8Q<#;F4yWhCS9E>+QR&p?xr+7c!Z_3>Vc~u(&pg_-Nqx;j ze}yyY_JX7`EG7@n>(I-KE--m;hX+HvP2*sijX%}n#^0L}prI0jV0E3IlV|ysiZU|i zf*)8W%bXw+yb$r~8}-Kzh_75t1%6fth|D&Ah~010!N@Bj+% z00_1%#=-C`hPZ1Pg&iaU#jiRHq1St#7olS@3|6pqM|Y#)3bL z0MslO%3k^5oaR9|pWL9)wJ0_+*vNJ9BsH9N5^GNxP5VeTa~?fyk^QlTGTAz8#HZ)u z8zLF^pKdFO6DFJInx5tGrus<7X6QmSKj&ut6xj4Y2`$^0IHJwq|CD!TInH-=>#ld)|+-C{g) z&g0kMhYNCaTKeIi@1@bfB$LHW7~Njwt-dV%;(N6&@lsm9;Zx+ma4(_tOGep{&#Usq zpYq{7$nEVnW>L8%u?Ttj(k?$nmj|>eRn=oAhhxyYbZu&T&eejvWC#-=0Dm$k&###p zm~?u( zC?~b@w-^wdz}7Fj>(gmkp_USThO}$ng_7Dr;0&rvn0z)WMt0ZfJSrX_I+>Aw4-k%Q z*AAdlwZM)lJ+Rl^(44iDoI!RQKWX;+X;t(L2tS+_ngl*|IZ&web3v?Dq+HgR1@OM~ z-YwrYd3P$O*IVm%j8jCf(1x2(j>A8=9j%D{4I+Z%+KPCw1PMx*bCK5Ku{H45d9qws zN$cK+gJ;`pm;DcZK+z0h=))|%a4Di!jI_Tn{9Od!cZI~Wjc*U$hg~;8f|WiCsg+u$ zxuYHdF*brnyu(D{k3sbV6ruHOQQSNVq^urlGiqi1+R%!=dL=%aazFqG(YeLs_R|?> z%GkTtChTCcN*W@@ut=JEmD#VVEFz$^cy4kFBi5WlhfocTck*-_4Dzd|8=b_gj_@X{ zuD0TpNw&+zhdlPmd-0k*Uw@ZMPQ^j%VL|)d*AhICiTeyBA$BV1>lyH*5H~x>5_H@g=)5*UB5up9tvrh?rIuxv7PO5&Tprz=x-c#zRq;@TeUAAkBQTZJ4AnF1@H6AD~yY z^6Q+oZs;MaTiET+O5IM3#yPqc=cDPA(*Vy8SCeLOP-sn3pOW zRie?g=YClnjKK-^-`UZIBHgH*C%FB4*q;MWFrO;t9R9Qb1};B0E_-=_7#wGF*M#QI zZX#~U`HWk3OCMT>Ph{VYsQ@1ORbH&)Mcqvl`D*j0#Irr>;$u0VB@*hxC=`>HE+TKR z!ivOaZu~>(%HheR*seF;{vWR(zN0d0LxDSc9tz2d5pMZV5Br!>*Ihiv9M&022*r z5>L%+X@8h01LZkD07TWp`K$-z1OB z#((;5t*oAlM$#av%O>d0`c=$wk&rWuAIl@6?c4dZdQx0AD2_N;sNSb`pgFlsHDxl* z%fIU`pjRD$ez;$&EnN`+aK{oLu6wOHVFvVNI%=DmwL^}szB^8tEeFLXufl34E}nt& zNu8evj7B;Cm8n}?xTs&E3iOudUUc+|ixLPoWxd86KsQW5#>wLki!!;?WaNDQhg1_W zg7V78VnBC1PH~E9=a7=5`d7d@ILRQ@>lj>?#n znT4n&!*a;Br-`_%Q<2)PV*4+zrZD(?les55jQNU=6Z0fk^WsuZ&~PD?z5vao|BXoU zn`@SpbGxPJBXg}H z-Q7T1dKb?4Q1h+{pp{kMzDvQ8V z7& zE>!lzZy%1$L1JcdqM$N5P9{f~- zp5`YvID=ctq@VO-N3^JoKhd)qIw=tDzfFvjoJvb~eh@MqBu=5mZz{hr`WzDYXjXrf z;nHWUsRd~e#hBv?whx1*xNA9e?WoEIUtc&qladG(I)d_Nylg za!Q)~WXJ0}t<1e(5WQR}P))E|r1+(Ioj6p=h&S%bD19UuIqUR0zdaQOE7;|Ob8t`* zb>w%N+_{`5hdM#m?A|EqyCoBU%hr)>^di&_n_h&~{}cb&F3EeZ2CVdlpa3wAxz_0h z-SzG{+Ha0^71|wzDKm85G+YQPJbYgZWGMC&bDzm|iD`lO^#8`1@05M4xozO|p=OC% zBYVL$at!3?9T86>1!j^ZVy0JOycjfk0{r03N=I;6BE;K9j@{3aUAHM19uQFuPEgun zpedEk%0iVYS7+}XrT4mMLD#8qPLI8=+1`l;m<1cDVSr<^zKAPWY=Qt&Wcj)(evkRH zPXZ2KcmNA%01Ik{{p_GEKfAAD8BRmf=$%seT)NP~aP28zV#YTu?$|-VSk0r1AP}OQx8u;Fquo})Sz2@| zQf+`G6h%I%n^GAe_onYdQp8(=l_YlmkC>>({uGwg-&v}j%&_qm6GOqtTTGr_;JT-E zS#Kw*wWw;-X8i}4FsIVI_QF!_S(X{QxQ(6j-lwY~q= zmX)BaXRyQ^`T0BLVAwRCZV$Yhwpp-M~4W_U(lLS zLT(E*85KVseaXN8EYZr@N4gR6YKmK3)#`L(x5-&hcgeFM{tesc{MkMeiz6v_r8xlx z1F}p1#GxhJ1Uvm^q|>VS$6nSac(bnTo=&+v#XRk5pWAi}(Fm*Lcwrv9?ZrrF-KXD^ zVg(i3@h`Ktw~0jPMl3fUfx|Lv?SJINVFt#3(10Gf2p%Yh+8cnz#YhHBkaYXORd1_; zR#C4QM{8QK;sQ8UiPY~o-YKwRpHn{->xQHgkO?kgD#N}!N~GJ^-G6b%m;0uU>RZi@s24-cdV4%;oS}Oe3dv#2S*KdX@gxo zTD_rmSvdL6#LX&>JmF*Av5a>B0AOghT{UP|p2vhmnNeDW+B$!8EV{d6nk^h-5Vcd@ ziCLN>+V%@x>hI3Bv>HUbu`Mjy2d1Rmt2CUQ)W+Q}`nJwv){9L)3wJQLTeuJfltoYt-tpJv~Jy358B+Ml1U_xl1U_zNhFdGv)Q#YBz_Ft8&`9RL6) zAOIn3G2=6z{A7L@&=X=*#(DA89{i#a|JL1S)c7Jjnceo$qi~WWCd17HxV^a&2ci>O zHqQ~6qmC^7NlHfgFl{uU_@gh)7|iWnGLe{x=S&p1gj%=-uO;cn&8R6#v0l!K{>Wc% zux^qz3()C4JLMTC`E{)-u+H7HOhO2(`w+` znGc4Dlq+gNT^1y!)=<9P4EPeh99N@4kFhsk4x?;r+s`=TGX?7j`Ru7$n2VF{eQpw;F zPZ4BFn)3@0g5^(g$IWR3%B!+%@hCpH!AKwg3RpuAaN}XfVL}_CHPyjyO%+qchc`vv zE6i%g_`M~|SV<;pGW>mScqQv8sBD?DdaUE~bGuG89^WQ=0Ci-hQd>&sy6Fd4iO+yn z!2+BqdL2JJWBHJz!7_3jGA06IFKYj%x01dIjH9QA&K}n9An}??(F@er`GERhZiq-( zV^x-xMDmRAHkz@0Odh;6@0-MW00fQ+&}gW7fcoNB**Wu_8@RV=@(`*Q2mk;<03n#} zgIE4fdj3r>6>*Zw7F;RgZZN3`02Rmp5h_38T7PThuBRno$D1oyNMbFRY#XndwAA3b)LQgKEZ(S zs-i{K&SYDh{OiAwXnr24GC~i52_8 z>y&7C%DjkpYOGq~!tvN5Hwf*~RAQgH9Eq!dRB07s5^*0nmjYOGG<|^i*7Z_RG1NGr zP4fNpBFXANYEjeWCaI2b#-2>FBgvX2nBduA>#@uB){N1XcfY#m6ti@r#H0iOG-bW1 z*CZfn=2|J{+3a30s*s-%nBewXM!vH6Ftdt5!7f^Kk$$h$9@7oozJdvN&GbIN2mlL+ z$E!jDi@KUAjT>dv>;o@m3tT}t;||jc820VH4C@$GKB&JC!xiW1~ zh06zYn8+!cX(gD=Vm&&gY7n&%P}%SdmKc*lLW7@Y@${K99ME7D97wmoH-x?B}w1 zGvg?4)Iz9?7*MMoVI)pjTpeNV<99HitdsopU*Ob)nt4b@K*T?OX`4PQmhUFYKo+24 z4k($N>3k|64s?BTyxlz&JQ&ZfG2qvJDlX?*eOTvS7LOy8Bdp*QC=5(|+A=4||*5PrQ z=^cCZbHhFjjguCJO9TeEilq&A0F;@{NYy2@=#;KOj~5OhfRR8ui!&R|Hu?#7ML>MX zh`RBeP|upuq8#r@;O4f_?V4lEvuXMk&CBOTJOBX*UtsM!{-2UC#zu=@FLKSF zES^Z;?LBXq zE{czxxGtt?Cse-QCFMuUU`0b%8fl<6=zsxF00CA20dAesoNzf(O_k|jIE-sRbb6xF z6Sn-S`^P_yGN}_~xt1Cn;iUWQ%9^KV_JAD!AQ=ZORe3u^Q3&=eCd&o;x4$K2f*a6e zPWpD&yv@_aRZWSV>RZ9){XIRa&x#C}ew0-2)kUz=aD9y$Cg%7%i4O}FEk-2?ipKUM zQN>N&DEH)etdLi38IDrsnIw)(MV0q--|yq$)=a!Ke6CVfSgVRai8fk214Azq(NW^r zx;Q$&zy8NMQjzKI;n7oZVQEd7&Tfk;w1m1i$;8?H$OB}{*k#UlSBP{vCM=ho{MkUY zOI^ClX5pk%CZ=vDY1N~ry+a`J339H5KW&5MwUa6{Y97B^-a9^m7%Ls@LxJ03$v>5^ zBzqcFu7|s9^m?SS@)4GdHr>n@Got=>5j4k5cJfiin4JTc>p$_+MG4jsPr@w=nKlW= zk0-pOz;vkbFFtprLnPcGrS4$t_6VK21_k6qCu26YJX*Gf#eC^nw6E1H~NJ8X(#twFi!mmTLQMRY>D)vvSBu zMVzX1!|p?O@84*0n>u9t|Adw!fIv0PYfVZ>Bmf2ap#TEG00N1wKHGNv4|C$0?cr`R zB4AhW$uTEn9o{pEHt{S{r?54Q^$xnN)U*vv-imr=P2Nr@Hwe39J-BYM`h8#QgpwZ< zjv?uPW5kPSZ5imCh_%XmJWr~-P$#)~N^%V_F|*~E=5*bAGP4`Zk6%&ej}-I0A4QqE zepVY<(SgOph;s)9v&NP$Ai|H*mT#kO86|6=y_uw3L&rKj{gm7Sec9epC^dO+iX3Oy zcY4Ed_9X!nXv9{?1&voFv)Rzku!I!(W&RM3D#a17-eKlK9Z#X>^Y6*)mLG83 zaTqUW%sP;#1k>)F6|df>`);WJ!;-}DmG0Jispy2TaKk+q^Hq)eyJfB|DO8dd>}F!B zxy*|%)xHdu}K0u9jK(gu_o;SikZ2(Lq`9GRS?mX8f z@s7<=&xhL_xRxc_7nLGI>CdSgToex(Zt|v)EGaMkI3r8O;4_EJa=8t+1awF@7B6cj zWo}#5T)#UWdGx&$8ad47a(41C{7B_!@*PLq$l0(=NM$eo-u9_<)E15AjH+VhQK#FT zLkpRvL0X#D??DS6PiHO$6h{;SK5MVO-$WEnF!|PBP35tn8Yu0n+j3F#RrPuIWbjH^is;3=$vw&CL`p(ek2zFf53N%#+1LE`@>^B*{u3?UgsQi5;wmKi zg>FH9@X)UHkHy2GuyMl625$_2O)$GgvZ zrDQ6bM$k{stmehzFzcV!;LP2a7EWlt_6x@5H`-VKi>$n!IjZK5XISfj@G^SfKexwf z-aj1XwkV2i-N~S17HAM%B#ElO!tP4OKp$d9K&FBH*K5GJqCVX6rQAe zw^h4u;^G(keb&QK2iu9bEC!vZKYEKr}s|y>CO0{~#>v zulWr5doFi?@mgWQ7xM3|<`vQg=rb`;5B}SO?63eUVuX4V`rll{ zSVCZYxT8p-_Vtj8d%7vq?P1UTGb{A$J|603+B*U^wpVgF6EqPDv3 zgl71%4LzP;?hMlK?$s~60R#X5A_hU4rP~5hA^na_gyErw7JPAPMbjrNh*S6_;sj*n z)n`-?;XDS(b>T~TpG6YzT~Jg?!yc?Hn+_BF$b+?>PD{buY+!jXxvTZbS z9|$S^FeAYp8<#$G=l~FTCYbrHBi?B=jPn9DK}f4Af`&=I*v`7fSgeL~YQOZ!q3!%x zWsx%1L%I-m@8?(DGx3&g&MeFE)@c=UH1rK9ZOl)fRxev_UDrO~US{A7fcM z*UqhBQt{!WM88zo7+!`CteE>XxX%B3_{D6nSQ&fv40heq({rNX2DUso21F{`5QlG< z;lShFN`N$L%VjUw(AUx9FU5Eo?Z%da0)%3`-_c_-l1DLa{2-Yw$# z7c!N&PlARocl+;k^OTK#U~145WS(W1WSbi~MZg($Fp-qta$VdUF^R{M*UP!GBhyQC zosyNgj++SuBP5UWt)?L$1T>9h(tl}2X!&D1@Iy)2o272NbvM#iDAO2}Nllc0t}r|v zQ*%H57_DouHfW<+Xe|NIW)iGw{fsO+I=4EGikYgU_0DQn#?nwAn>^5p^*ZBuDzBof zW7O)IWDS`GNc|b~%vqxa8mGht`>vcW2MM_J0=(oWFPA5gCX30{CHq#2Kgnuv?$Z^) zB1yp)CiDOaxEs`Oppl|Z^5BEi_R{3L9_5YzUg!PO*YP<5000m`37;_Kq896QRJ-Vo zNo)WFP1Z~h7b4b>hOIPmfB=i7@B^hOxD4~MonY)_N;4x{kHza~P<=iQ&yAG%NkdF` zg2n3hLn{jz&x>DKvM)_zJ5i;c6MNru*=N)?Lxn#KYCOzI4-4A|8wTO}({|LJ9QdsY z_Z8H*^Qz{vd!FgUMTF?&f@!&yy~~;kzKv|_!-|6ter2VolK+KcLB;I+%9`~IdGv-8 zRjRLmqWN1ia4TW-6=ocQpsA%h#tfFF8eX{oqT{YU?l@=C)?&`;#r<%_@Qs;&daB7a zf%4hVKnkDTG*@6*k0oCNjd_@ske$3OVO9*AHo9R}a`c54XDyV)gQ|P-SbWxz@-+=6 zqQ@OIa&JnqiE=Rl={Tf00TUk&MtU2AIP^V7dG>DlJCCikWnZZeB3-ZU$iFe}#Y4E% zJZ=k|q$5_jyl%G}wY+>B{Z_)zrbp@W8aq-Rq48@nnzCqoz-qv4NFpe5>D6Cm*O3UYlL$s-KPZmi-6{#}vd z4YN1`+BLzL{Jc%)qB-7+a~ROwg^uEWWUSUzE3@rQ<%lEEp6Lm<@vI<(HcyCg#j?Y} z4*W@o+R*(SJlfE0%_~K; zT~hVu;bx&vp`r)uOJFgkq-0jsfB^6ZJ}DMue^VxmIT~8~mTX@ygDKE@VB$;cSvmh$ zDF3b+cj$-@!^z=8b!t5D^ofM!&Mq2+&8nL&?l+*|8)|;q818!dQG(YDD|LKt@aUv- zcrEJHd6&f0aX=rPwRHro*d`{DzQ=-0du`(JG1=aH$Tq%{>jgmayelN$Hrw@|@%g;K ze86`*w?B=_ZX9Ljw5`5<{7*5j`x*z#$^9Vfqp}U0UdIt8g7cxS-yh_^Fv47Go|54; ztFsUwM$(nHmN#A0X8f>RuG@{*M7G+J@jr?R=n53-;qg+I)PW<`7HG>t={Nkl{@peLzTxn9E$JKTlWsCp-aT!HtYZaqKwtdXy3GuG4j#D2BesID4FDw86MUahQqu>BTpa5SMrW1jD z3Azf}7Y{Yreduwi3*4iQ>3{N!!R==qrwxZ!Sa0$Lu%DQ$Tm%`E@tl1B{E7Hh9)R`3 zH^KEL6gDnBuTCOA_9|PcRzjNn|_g&;vEWpwApq*NnO%>;rT7l{)=p`M9wKMw1 zwtHxGfg@(xmfy?_!b45VX3kaQ-T$R7TV(K3&};_?LAhpm`Rdhx061-1Eskn#Cp(`= ziVujq1_K`@esURK66oBt(=?{}1g;t_LXWQFk$BSEay6DPHKP$W{7 zSa1L=U;rg-b{29~>!z8e5kifNUGpfj8ub^JHKi3e5Qm zix=2Q?0zcika}YR)IF9$ovJCt22NNHmA_pRgW0h}jtJ+YUs! znfSd}j-SB%)9+Km0A9c{w@s0y8E}S5qdgL#s)%!F!RTvQj_XJ#cjQebS1i6LM%?@~ zF~$omCNb?6fBBtt0NtPqL>_+-x|!GBh?1%wcueGGwCbF+S4gQ2Md4?JA<83e$KIyp zbzGOZxWsCtDl;cmNIFm~-l0T@z^{V)2^#jFSVLgH#YeF2owW-_ImVg$fC@aB4VMcO zy*T`>h6Ys@?kNE3duWCa9j``mQTL2AEi~Z{?!m+ZoZ@st=gLx7sCTL;Wy8 zq|c$Ms>kHVs}tsy-Zdp3)E}hG)X6(Pq&u~ZxYt!20HSt%D;@FE8#^jYe;5*xXZ`tYg4Qi^V{WAgjg1P0aX- z=u8B^xISQzr-&Ytv0ZH&r4yw!_!R%nKe-zvd&zn`G!8pS_30BJ!#N-csDfqIjdf==i27Eoq-o=2YSF4L4ppO}k9)(t+&++40 zX>E@cWp=2qk+UK+=KoNx{O3ye>bvACH zb2>_T4Ksh`@H#sB>}<~9VzDCL!g8M^#{@@&7&74=cz*c1IoX^xe2lMu_Q28K;v_~h zwqkR9gy{x{*uu*jTva*=*B(|2;y38_rup!)JWSH>GWzRp&O6wB;ebTDZJkmriVxKG ztvJFwnM@;rpwOq2Xf>u-OkX%CL*DF}AGY=AcbajC!57d>P_ZqpaMOnt!WpMZL%Ycs zZOyZ&CzS}D!TQSN77EO00A&k8p1(2;>ObP54Xl+=3V{TUwzb^O`hFx+|WLo$XSFFQ%xKa2SG)h zF88F8xEp=*QXU#V9Y&}4WUQJ*2Rzkl*M}S0N}|X=jE--6Tj-&9T^>x)hTlCFw0{IJ00@Wx6gU7Bj>Np|1OC|_oKwRu|HrIv3-UNDM_@`mUDknjxsX)C$vDVhBXt*i!QUVBo~++`9c@Tp z!>^?E2VRgtk$g+wue)p~6(mNg-I~1}L%H}gwSR;+Ta)f0>L}mA zUd{b0NpU9?bZQbTANi<_tbR zeD~8J_!__{0oD#b6bPqlzL^QReoy`J>-O)q`tU-b06~Fha$F5<@fr|DH7*Vt=l}s+ zXaE6300A%kCBI5HGqzdUDR>hCVXZFwaf)9ueB+9E7|Q=%NhGU37J)giwgt%pwkCfD zPd5u~Sw)!f4(Huy)#HZwql?f!jmgPh**oBgQG$sLCo3d^AgQ%jzHwt89B~}?GFptt=LOf6Y>ZC>7AIxU0V%s!UX1o01r-#{Y^~N1PkeXd1c4;}Bg;vk;Ca z_S7LUVd|Q*O|DN%GhTdVE`L&_1Tcr|2eex?>;9%^6UZY@sXXG?C+&!*%pdCOrh)V^ z^8sQEEHM~+HMv<-^k1+n#lDK-$=TV(mrwaRE!(XaPh*n|c03gf5Pb~l)~Gc3QX>2{Huq(M;vIv9r>smloqwTQ!+KTU&9 z>S<4UeoJ0L(#`I@Sp$nZug~o!YQiW00}>qyg}Lsn=#-gO0k*vpHNR#>rWz{=9<_hx zNOY268tr#yUGtc5V5d9yRAWU}FRi`8=GjEr9NtCTTR+kuy`9|oxCwZ&ZgQ-lti>iI zCnKMcK51AE>zPM$u*>=E0S}@9;-FLLEAz6!U=m_^;oxduBhsoN>0-UofCwN20D=W8 zaQ}O@L^>}KDt=S204}5KH~xkNxJa`tzN=kC2!!7+(r0#bF7S090B%4F*2(k`FFNI9)-f+?=V)igVE5x z786HsXh)WMf*J}>HF*?uS8BL1@C<-DRZ0Lu+e3N^>=Ta z%j>?Aa$>`=UbDF8iF_!E?Ye*TZ@M7NvypMarO6vk@Qe_yIOif9Of@`s*yKAGW8S1U zzI&gj>Pl}AhsaVMw5xSB9%@_uS0526moeWAR3Y!pr-Dr6m^&2{q?m;3Gpvwtxz1~3 zzJ5HJ-Q?*fh-7KaMPWqyW#a1+ihDd3GZUug)smk@W2Xe zD$uk9sDJ=1=w_(JV=k5SY&f@B89))#exEtlbNOs@PdRe;AE4h-`0n&W_@qAKsY)n?6{aQ z{W;BDS)}VPR{uK6D@^F2F(3?bzGpocPPm3NIvv@ja~%^#lmCGDkXV>7rrDFLP5Y^v zWs3JypC?jls?}Nsp6^-O<|dTsr#d*FG7=dxpGsmM-~3(2ZI|F_Pw!XHpneajy9WM^ zRxz$GiejWs$M5vf2s}#p%JHT0RhoYhbkvkEM$M-2FHHzjar(T73@WBo1Sm*y9(Yy5 z9b%`K;wX5q4b-awGa;ZZ^%`7%&;l>(P=t+&vyjWSOOj#;)EA*%X+WB$r;%EwcDQfE zGb8#I6zkj*F?uvQfkdO16-QqiTMIsF(cDIWURTvK@As;8KdDTyvntz2d07`wV~g(N z$f{4N=|vj{<$^P?jk}MN42e=p!{ej?0dYcj3vk0{3aQm-S0(&ks?hdognyFTV}EK( zAHEFbK546Amk%M~t2N!@Qtt}xUzCG26y-p<40M>$ud6gWE1g=#A=5>NVlB|XUF>Mv z&gi&+j6bjSah3&~-%ksyhxvv80zfV@TL!lu6^PvM9D}{3WeRvnJ0_ISc@g`g1q%)P z`_cHD_{ewB^gsZ&aII?;b-@HVJCxcnR{!^sE8p~@GL1-~?v*Kp- z=@b@YaWIyfZ}JtVXRc`CBTwGSXtQP8eV4Lg$TA|9G!9w_=GPcves5WA&I&ankR8o> z3vknzdvQ_yW4EM5p6_2ZpZC_8Hl|OZW=r6`bm9;K000q)kWcZ)4{#&qCv0~bCh=Hu z4Y%|&GynlJ`mgq=ZPz-ucVmgt(AQ^E!w*MM*-oeSgM2VQ0_~U?-Y&T#-c1iWS zT4T>@Q@Axa{~lBSgZ{C&W!BDc+|}2@MdhPStG;F^vZA}i(_gEq9^)OI)PKi$ z1Wjsl0H0nPSr6-GuTEb}v!u_)yyz1v{zT=}bx5-{Z1EG#&>#f!{2;1&I9>^==@DK4mL zE9}`fA0v5H+7X66WXWk~4;+TkkM}gsD}xW^Uu?3zJGBE3bb!aHkI8`h!}ykUGx_N_ zf+LzagZ2n4c+`m<0JF`z54lj$3}!v5~{pI{bFbFh9&XM6?Ch{@5|86U&FuW zSnZ{8Dgz<@JNe906xrtql}hO^CR#r{_U<#@`Wi6^cSiN-d>jjP`qj9wx4qP}LCc}M zjoAc+KGSa=r0~RG2C34W0|HtF_sS1%i3@0mm7?~T4GmHRPw#X)pSnHZW939Kx2`k&gc z;0=dt)k(hQkIK9frftE$S-;Feoo|d@KDME?pu(L&POLYo&)ZW)$Gh?D#{5kzfuNXm zkC)ZJ&HXtJP9DKP00Spun>U-J%w&bF(MW2FE7wfK|6-QDfX6+b?U9awt0VKQie`A_ zPtIh@juoPWGq%LTGzwmMq(n+;$;8(q8GxHJj`3eE`&96+dl**sGrMWUA1^t|^n6f_ z{86T!z;@p#NJAx{^dNZkF8conNzWI)@xzRm!g^k?j>7TNHnY6_6dvwboh9o(LdXID z0tf*i^+hth>xg-$Nz-$wi^CtYE;dX&1^YnWn_l#%tq;WgMD7kI1TwaNRN)yOPdq5Z zU)4EUf8WZ4eTyZ|!Z41WJ`<+R-v+t?f#HTE&;0m$#9O`CP;1WVWaSe?^RKa!$X%-K zzqBTer)Sov0mbwHBQ}=++4*A^A?{;M83T8B8ePnjyv7%I?o z!Xm*p&=$*iQpf-T*#H8q#CE`$KAzMKn2lQLWd<-(8uy0J_ShIwEqZH8dG-cS!$X0f zRoZX@s$8>LB}-{I!$4rLLr^8%sj8V(^SiR3PsY#H5aFa!&;@{tz%Y&P^wGkd1Vn5v4%@?#QZZ0D^#00*J@t!-21Kqkrl>CuWV{EyyfQh1Pf zdN`5b)=yp~zs>^ywXYmL0!S}F;13}nzQ~$PHRqYe8~0ltH*f$W96C8Zh9q%~d001Z z@z?+nPyixxw?h{p>(Dn-wnPi6>7mfb5>lV{j_eB3S(HF*HsQ16TD%}VA$O^Vxrl;0 z5_h>N0y;yTUg8027HZ|e^MW~4QHq;jgdcHESz3&<6iNE9@f&7uc1wn{f*tON*5`Ds zblxG_)LP?TL1%EQgj<`eTr!O=CNk89M?;s!7%>_f(rSCzzb0vDG^91Wrym-o#KviO z+CL@a6{M-)v${uZ8!Zfh4-cJ7)#qPT{pgI^ztX{PZ}1c(-SxMmkpJ?tlu_rqI$jbd};r8?Xn_KO<6h0J&W6<#RdcmNg{02ZC9zvnAM zl}h)XjHZ{?l`g?SQMuUup>A$ux6kCiOZnD#eKuw9&LCFTw$YnktUbB9cJ5%%iG++) z7b*!xc9L$0>ein}z59kGHd3ocv}`FS0-ZK|;BgQ8g{LJ*!qTGy7qG$LUbRvq6&|jS z^rPMI$`qR{S)-88O7)`BmAPpm@}aItk%p}F3SQf^l$+5A`UXpFYAtBPxqjr9bZh_B z)BnUp0QmezZ8S*+?`j7H&S=*^lc44XUc>^=pPzN?O2tVzUUNZ$OX<#S1Jqh}0eRk| zw&UKX`y5)GUmQN}&|VV;UCoHZ?#I>G?cY&eH%8y2Ge3aUpXy|Zb5=BJAKe|?P1IQ8 zH=7@P9(Qr%Tr@@)QmoZs+GhfNGB0)obqad~54+FFS?k5cR9EWaNzl>K_t>ZWOwqI( zXI&pZ+1@kGW`&`=wU_Tr`^T31GFpr~RAU^F)s0I;`3lcPmd$}i2P#SY1uD8ybw78e zrnmqI_MyZL8o+y(0*@m5ri6k-NB+0~A9V2JKMmCr63N-kvt$(H3 zAOKn*0AF@e{%iS(sxEEt_Om9|CvRs)MieCZ5$X^5LQ8w^ysFN1A(tB{Z4;|23*vn6 zd4@CHnqofg`s9NZc3aLyZi$V<(`0?A75cTM6w@9(WQFC`Z9zHWcFkGVdjfkLYNzkm zt*Jnj8tQ=_K(M6_4R4|CtDhVFCgqf299AyLY~3Oo1vw!_jlLt$KS*`nT2ZhZ>hC6N zvm5)(ZIRNPJVvUN+<@iRFB`a6KFbW#qospW$6|)zy9yKh<#ohn(XyOhOvjOF$Y5b&cuAr-M4hEM?nb6;eINCDa;ncTq9mS7#$S5o z03fI~#9(0E_-p#)VN1qZ8B+-M9Ouvr@mw=t)BPa1t|?BjaCA`I1}DG}>{96^>!(Qk zWw^qVQ$DH1?q!wXkMtI^bxzUFA3z=nJN%JNJReP(F+J`%!etJ_JIJ84Hx=9S`0Vma zthE$;n94&>dT)t277O++Sa!mzqH6xQ%~2U=&E{UxJLYiaE8ze`-$=@_Ws-E0!E zJes0KRpCc)+%)6KVfC5{_Ts1JSWFRqhplOaMaeCrv6~TGoz^txAND&v-&b~`BX-JGLhUWhEEP-XhTEAs($Kn zdW<@lariIXA&{O{&R3Y|%9Y7X;>{{Nc8cG#`+kBw{VQsA3Gc|Eg(DoL+?7$WK2qPt zx(W%UGe&hq8(g=!oD+{Pw?@p7S}KhlC^Ap>Kxu@o*M{h4$}*8}9HA#WT-Tsy()}xn zaNf>%PyQJB>eV;gtHr=s@#xLjC(&C-*(*){qz-i#`H*KZXyP0rftR_mSfFfWSe3`f zPA603eBj<>7*VIFq`mW3(u?J~q-Xob`%SFi>wK46tb9!5-ZbYJ8gqE$HfxG;Y?7JL zx>RUZt^ds@-=LTn#7T?hzT-2OrL8g%ta;+C{dBvl$I@wXr2b;ntEy%(?WJ~J4L{K! z(LVc)te-PPAcMD$4ofgQ;~Nc?Lxz$J_M%ZI0z_8VE&lw}Q#1r-Lm6>X8e9p26zxX# zm?u+=2pPV-oUF~6*K8_s#*@+#FZ2}hW`5xdY~!AE zwBpphB@c(3S1oUmzkp9Ad%fVy+?O(2PDqokOs+@p5>!eP|c^7+RiJwK%u$;BgE)d2S zeA+7*O4wtMh~I2d6{AE!@$u>UOya{7&M*VbA`(N~69V!-HYVSFHQhc3>bNiKdZdi}WccTjO${#peb}5)eaD({*Bd#C4|LO-lz>nMUQ(7}_7wNiTj;*!weVyVOF1 z%tQQZ-wJnoHxkbq<6c@WMGF3P@8_)iRw?7^1Z=(B61dUTa3TkA{RrE|7(5g|{iU@H zB_X>ttPRN2lt|E&Si`-0>@hBV}( z^2sllNQWSTMe3=2Mvip&_PVYwRpD0)xVFYs+tD`5J^Ct#J~~@nKPxLjOAJC%E#@t0 z-o5=co%W$NFH0{7nu`P_$|tiuT|N80I%l5Ovgl&8jOHCNHI5ZB#W` z1%)peR}UryO_GuX>~!4*oN%Y~_idHI$HexnjeE}9G(bp3!F2a}NVrPEc%0py?GD3D z{%jR|GqdyFg4Fv6>g#wDul0_erkAejH2n0_g6ng9^VAys#?r!600f~Six3#|;;T z;jR36bA|tBA0=d9pztjpksts;1ONi;e+w5qAKZqZ3>Ix$&In6BMo>!`?l@qW4Ac6n@X0EAU?!a-8qlf)1`ksIQvOoZ=006qx z*E}QmuH54NP7+8yp*dnRqzwN7nCzG1MT#jEI%S^f`e>FX`@ak)Q)nCVbg#;Z3MUIM zr?yUSrq)5*Lz)QqRDCt|ZkHH3DXEq4+TmcW{3mml523I! z*IYo0K>k)n(%^*LZI{ZMNs{B?M#o>;LgRozpuEl`*%m0 zwG6o8DCqeVu31XD?x{$B&`Jw)BUFrfzXrRb_H>?SGqds7zl*2Ydi%dqHVcnYoZ-Ff zahv^=I(Q(YHpD2&!a_l!>GX^}CSrcdzfzqnY~HvUZ;sSJeF zBsM~|tVU}MR($-V{!I($k|zQjsm~KStX_!GSx-VU(Y?7L&kr-BqD&cHh4$o1;Memw zgnzD<_~d{5 z{9DwM!jp zbbtV9xKgjj_zk2FZl>Uv8%s%+NkU&t^BHt`O(q3Zcn|Vwzp-v^^(Jrgx<%!+|2^~2 zYeLGHuC|bxbfUxPEqa%8y}a0mlPQE7ux6G$20BvFSD%DUv(cAfGPG+B{#o7`fDW8! zfLs9SU>bWtN9_R!W*3r_*23ubT^HpyUD#S*Ea;a((uY2JjuKScWg$65k{TO}*@v9; zcOlLI1hxPL$^ZqvD*~Wp4SeKTTNjJ078qQd2GT#FBR^oq?)bD$u9}ou1RiJAb}s9m0Iorp4g@g`-rr!v74Nsm@zoie*UEfIM9nJkI;){MrNHs?jxA+?OWx9DH&!CI-jHXW)U zDVZP?z+^8|cv&^yFvy3J-gq*)jt zBq<`b6Aed8``_8SbYGpRKB!FXA@{wqkY{@g14&@*yayV5FPBC~mHT0$I8zj?Uz@b3 z>{R45&i)vXn@S5eNYLK(v^73InX2f9kqal%+PXWyGDJUK)0**_QfcK1<2OQmUCdLd z`>4U4nSR60vCz7=K}~Nj+Nz9p$-U`300(N;J(ShlJl|qB2S3HE9IB{3D2q2$@fpO>l*zW?s2bVN9ZvH|F zO1*#pDQ%DdFPuYm5CRAQ2nim`2lDoX(Eh5HU;reQ&#xg%co^I_O+(cN zGy~y(Y#CNy!x`Zfc@$n(R15jr_q=}DyCqNa%1U}TBN0uTO4wVdpI=gq`B>U=?y@KM0EN8M#>Riy+6#X z5gv#sW1talsTkxXJGJnyIOX9@{X-}4-6e+@7iW?PYAqbQ3bb1WfrdW|teez8BAs2V zzfk1wYJ>I`m`570U!&ZyzIY``S}pqQ{ZZ`XnWb8w)3vn6Ib6rwz1(E|_H&}zSeK#E zkqi;pxBulg-DTyj8n}b+Cy8p2U2FN>lpX%Q?BnZGn|FMW-Dqk7SVqIrZne5E{hb@sPUi17>j*T>DI7j^c2^0JpnCHQ#$b; zkLS6~$$eK7bBxVa03Z+gOEj#-+`+NgwQMESC5+KX+)4X@0KQOQzKAA79sm>Yy&jmC zGzFJ2c+Qb0zZ_J^`o6r;LhP@601FwJ`l)}V*CuffegFj8k@K+scYI=cmb5d>Sf0W8 zNiKp1;{36M3O+NI7`cQ{(8q!R$yBqX(bt0iCF;M+c7h70YC5OY>Unw?o+lgyh7+D< zhg&!SchcIKIk&TNwQhZUJf^1W&arkpR8jbT^8U9);Yw7Piwvww^J zufAf$Q|JsPq%oy$9Hfq40AK_V0q0wxP#G%PC{PtIP->#656{fd)3)?n?bE--+v?of9#o{z}iZhzW@p3kI0m%TNtpEVVcU>LR?MyBOD@M^z7wJ`6r+eSSAh z+J#;GIf5FZt1JBGuhVf@M+uy|k)wJIrbxYiJ0)YzoKI77HX^>@zPNj!01vBOplJGn z!Y0nX2V?Ryu8zJ-T^hXz-sk_Ku{KHHFpwRetkCSIoE>joo);;QxB&=w0 z6=>}JEPfRZx%Nn;mH?9FUi^L^O`N;ZvJ2kU9B!tSw-fsIApUN z(#(n^@m-@b#^~0RjO7@sYDAdatk`qPsbA;4BjMLBs^_ap!GxtT#A`p~>J_vOnvjaQ zh;%R+1Ml^#4}`Ode5yZ>S}vPjrPDL?I^WBG)%bR2B+N8i83(#yl&`%@2PxK@PPEu^ zmhOv_Ntm;U7-pR8@K14gs*GGD%w$a_$+~+002=Sw9_Y>s@M%UdO++KP6~OL2 z=XCG3H3a_o_M*KBiEM1PTK^BnfbGO)#J{&7hq;5u3To_3rg}}9T*9`Ii=X@uEdT(D z!T>QqQ)cWIAOnFQ6>7r_lFY&YB3}0I`kFtXwLlRS{811P0F{jUL)-uYfhpr9iD&n9 z$0Ps+Ne;O)$9oM5bFowIZvwp8zT?`Gwzkip!M^9lQ&hB(&%#wat=V3ZbLdw{Nkhtv zz4-r;9T}1RE=hQho=A_AJF0N*wNatTS&5>uS^+5!Ae^ZVs^reiTkieRBR@EXwor@0 zeoZR;FrJ{ydK_?H1~#7O085E`Mv|2H}`+3TQ?!b*e8J=wn8 zogAWRz-Wono%-tB#~ik9r3@Mov1ORW#z46CMm6|yUq5RUJz=jnhTWSvCFP%jDz}d; zQ-E86X0kbaQ@SoJwMjeaKFLB}-bB(=Z;sghlVg67{6Lg_tB6~$41B~rK4gS-JN>g2 zIcc^sk7GzDGiFjn$wxAp@7x=7poB}V*tC4GaHPT~<&*#cyB>2`*(}1v`$i!qzWD2! zqV_oU{1oj?C06JF7rHwc#H1Ls%9lGI*r#GMM(bHxVE&RBHU3VG?yY!$8viFD2he~c zR|duI26d=>i_i=JfMGQo**+Se%Q$FG@qM)@5CR?WK7xOVHkue?H-^Rt002P%EU*A0 zU;rWQ!OeI>$5L0f(#Y?0DNeBwgfQBg7DhmOl}|myItj05cO#Kjl%=8sBr@?js!opq z*T+$@R7DuPls{JrIC>QBUAq?iL@H=D7g!i6j4i928&+{tO=URz%udVtu+3v2H1(!OuVg|$E!p|`C>QPqg6hnazK--n%sOlj zv5gHaL8_g$ef}nVM!sfbWi-m;XR)h*@q62IElKRI%@R_!7469FSm`yX*Nq+>9xPLa zP5jt+A{>w;3}<@!7jmB6=`cMdALdvgFW^))1tAG@-<#0w&1NZc&Fcfiln5V96o<~MQt^1KUyZ?Va8sfXmcDATh)P~RZp_q^wh#Q#$I*7P;HJFGrI_%ukN{BJxAgG_j)KK=fpCT%&Tc7n5EEdF3j{ zdK{udXL>IT!XNe1gcfrIk$c2IkMg>ti~!322nPTj@fwv;2O-)pSBQH|??Ng336zHN z=WkRzYr1jM4f<~!USsz2b}iEluWB(?zasrn0Y|BTs2$Lm0Ej?$zcVyg>W~z1TP`<@ zEPIa4?q|5X#k(h;;<+xLq|Eu%{71R0Vy#?9v)g`U$qtYn7!?6vr@%*P(hb>1DdDT# zMtAi90?+^gBq1td0E=02WI8S<$l#gf;OeNakH}1-I)k@A;$Qf}*{g*&Md|lM#*Q&2 zsytEpjk~(NBbqg$G=_?w(h*MnG0|=Vm*Vwi<5jx8S_94(v?UC**7E)T7B=IoE~jMo zM?E1dx2VrPD*g4bD!GiUIL|sJyE>!2bqlYb8T3Kr(4$X7TgJ@Wmm}MR3LCV!B~|2; zcE#DKQ?1=a4M7suNm8U_NE`n@=Ec$43h2g)ADNt;>Uc|QO7^nVXGv!J>tWxn=P~7`|*=4qJX1tH*TsN#k-VsX*iJ5uVs6TZTr`msSiB~Hv zaBJ-k`f*7P+7Yh}vsJQo0lzaO#sGYX*tM z)9=fGAOR8eF{#U$KE=tG4aWok3b=)((2q0#2si)|{gkQ9xFfcz(!Ne-7QbN&hyI=Y z)0MB_zj0Hgh;O1fsI3l)VO0ZICNopaQG~(5jGH&CTL1J{(k6g7vdZEZhKACMRn@9M zErvH9#Qk^w(=xCSC?-E;L2p6u?j|VE5|gJH&o*S7AHOyLh(Ut!_jg6v`m0*Q(=!h- zHL*SiUhwK0PsYG-W+0`t8ryi}tabd+lt?M5v|Sk`rs2%! z#_tL4121P{=V{6sk1Yw_Um@-gmwz{X)QI6P@=f@|J%=#)yo{`E8(nTs;9atAC!`p~ z)X5OPO(A|(g_^GeEG>|^5IL2I+G!U?tjxe#r=VWh;6Pwb&6iNX&_xumCT-1K2+M07M1(W7>a#1Dn9aAF2pRV#L4M=egc+ zdW8$e;(zwk$<61XSv>#(M*sr#8q6}ot#o&3h*|P4>6)g~Fg>j&#i}hr-l;5c088)d zwAoFGOByNhMGkLeE3R!6!puG%4;cA53tPqe)1ICE5l4HX6fIeo_ZI9E_XimfIZecE zO4{oypAIFH3@5#)WorNA!kZItV0Al)Y9fz5(IK#mP@D?L(oY*?7)t-Hk;}W=q2y~> z+4$0`y+lMY)<(g{`vSLFe|h0OE8kXVC9IPr^tW?2PpO>tQ8li&ghmRMd=tXtQ%Zs_ z74#}{Yqt@6TxG6*!M;bdzvWU_+%XS0ov?8IP2?6kh6sMX4Vf($eXsf>xcnmM`PTsG z{2ktRF`p?XH}hEY-g~=orGh6KNWvLI7&-6Z5X^A#ReYg?kyglVvPio|yEnCk_@)N7 zVd!h?q`HMmtJbhp1Hei?W@5QrLxJ?{ORH{7Pr>3>rj*;2Q9x(z2kxmgy|*sTQ71U; zhm|+32p|9f1OSygvo<1!#QQd`C^Cz&<{~w1i{&Irn+HXe`bBAEkw1z;YQM49r$f9%(~XLlVbjyv^?ndc9|s-iQc+4adQWIt!W3Q{(}UN zePTS0gwOhTiBdTGF?reJ1!+ijpDfEpGOaqHk|WtucAJXyLjBaPQPlh+^E%|_;h6^I z{0UgT>A>kE3V+HhJ@;O;nqzXX%atrcs4>R|uO8^}tht7^{HIS?-twjIl0?7ujLnp; zqgd7*7}HA3PkS6JDWdD;`UAthRE|9x&#NoJIEP9i0l0<9KK6HCjBhX6e5a<6wY#q4 zE+|i{JoSDce|n$Ds*h2ZXKrGYftYIkC~Nwox5`vuS%Am*rjzf~!!Xw0y^eL(w%pJ0 zX_rUkB_a+zyG8q5^PfBDyAnV7%2}1ZHT7UlR)n(F=eLRwSC3O01!tMNr#Z7%_fx3p z`3v#b_5HFCVVheNRa%o*CUXX0slt48GCv^tH(|?kr5XqU6dy(qE}G-_H0u0Sv8ifZ znkdH4JpO25QGFg-%Fkf4HH1%Ba)gezmRtY{`~VAd01IdB-3ECMcp3o0)oH3C<`ilN zs}BotsZsHzCXc#|=sN!hN4YWyQ}F?5^~vRAS{BFth6(o5t>H)<24-iItPF5hb$7#& zq7*Z)JcEnL$?KU`gsD1EwbhC6E;?@=uk0GYT&&-PY-om$juq9q(8HHA?AU&+CE3G* z>e3s?61NS9ydCVfJJzr-XygnXV`8yB?imOG06+?TP!wPe00IaAl~nrboaJ3jSF@pT z2aX3Z;D9xN;e1Laz*lLB0X>5He?d#vpnJP2cS{p}a&6aFbaO;|ZbDioRbn4e~fQp;+Z|)T{_t<=9IR}eb z?3MwE>Fu^uzNgKfnJYh~%D?>k${}7Sk`Z}d?Pe9L3}+dp)@k_+#cvC1$7J=n2NSr%=dXLO#5D!| z00NcpEdT;R00N_$&@2H8@Kg3(eoCpIm~v@Wzw63bD zRrO2X@c6w)s|^F6VKvQF(3_PnTPTGN_@maSHLI8i`>_6v){Ha_pva{;D9BdDz~Z)G zljf!dH+f#UnCRg>=`t2259@Rt{Xu*ennbcfj>Fl!3A({H(o@?STIB1cT1>a zRADKJQ^*{*%H{Nk%#q2OSg?EVox-J#d+|aL?rUIB)nBCNRA(MR6LNat1PZlaTLQU9 zT)=`|Trdv%u)S*}mzCJ~b{OrFcOU>-r$7KxAOK!eXAqKjv)OGHzyuwCmiw^VBy&3W zo5dnUs(;b$H);QDSe4{LjY3TIQwE$s{Bdh<6#_T^zQ{3G5ss+1TH~{J1sevs)^2H=|^2(i=Au&2p|Ly00_M9L@v^_7s5UVO`{u8(%94dB8`nC z!e$%ZzMWh)boUjgapOLbZe%WMF3eQ*4V_~Ip1dKuP4@25`H>}n=KzoR)yP$uit_07 zRWn-d#zei=c-&n4J+#}JR2a95tC!YXat02;B+?yIX{KMYfb5P+ihat#aSIcB_c@?+ zBE2h60QflN9y-$2j~^v3c*As6n|S4GHf&YvQ@|4{@#}sXv>f^phY0BHkVOE<=NP~H z2a^BrbOI2J5U)V!zCh+QK(P<2lmG&4r2PK!ARWVi0F}j?FB8t7B`v4_+Bak+YgQgo zf0owOS$vb!%m4r=WG@XeDG;@cS@#{qN#^;IpShHDBjK;ZQKZ_n>;xw#q6 z^dwZ?Kzh3REtiRvQ+8K>E}o|GGx%~wY&0@tns=Ap)*7ba)(MA0rin&D0b^Qb1PRE1 zYQIIAN9|P^$J2^a35#6$0QoZX0R#|10-BhxH~{1|P^$c;L~YvtVYT?>tB;vFu8-8w zL``0QUcmWo-2wkcYwy^H_(ov*ZkGx<7ig*IgZddm`)N^@=c>1|P1|3=VH|uWC&Q9E zgiw$q?czj__cbJs)qc8s6m^GddIrA2B0t4dq?Z57FP&t0uUE`>{3guYr^naE-MMsa zZ;#l4WF{U@XTkTMnI`{w&&=a32VGorpGL1o1ll&v6(O8Q0A$&yTxDe>a&MFOZ+`Wv zu3}$4&4spia*(x!vVun$$B|{wx8UjkuYfoDA311I12cl(?YF`1r*{kv}~FpE#vNGV4#CgP^S1_W4pzlPf{TMO<83InSt%%Z&g!IUlygpmMNarE);JOi z6!y~;jrrR>+J~l)F9grj?MCRs9Ka+I3V?_Qi>Ir;lE25dpwCobb5C|Q?4$u6hj?c5 z@qAhsjFyQ;lbENRrl+`M^-54#z>vOC@I<(a)wPpw;dX`k&1a&*%?~>?tEws?dAN(k z((#RM#6OCUP4*(UsojjCJS<+>ps*`NBV*dKpi1Et%GaeR?FcIyGb^-(Q*BE^f0vzJ zZ-&`i)pN`G@xZG;L_rgq)@fVrnR|9Sm=J5AgUERH@-z~HQAHFKP*BP!qKQCJKna5r z25UaBCJY!cFbFL=fB=cp{4-tkd0`~|kC3#Nuk;$l_3K*RrTLE6IarrY1`+<<6DwS) z#z|(Z%ji*}j5%J*umCJjfC>Dmpju3W(9Y2m1@GEfS-jup$%Ka3qCXza2A&SliVv%I z)E-t4004pjU1Q^}ac|%NPeHyA=;yb}9?pd&MnC{21QwfN!(JYTRj+xWt@O}f_#G6& zt)a{%3~au5q8ViMfsfFot3*7o=P*OR(F@;igG5zX-=FhL<)`E@@UyQKgzIg@ERr^jfpbuBH93P3Z{$ihnre&&?;{NhX8; zyDCV^&)-d?h8dW=wgl6xz|+Cy2JT(CFJ&aG%qXSBNpOmx>(O%F^Cr3aSdLk7U#C;+ zAar!!NWLw6^XnlqpmEjtrc?41H&wNol}1{qh|j0kZAYq|#evUL(1|`a<#u>w$}-tO z{v)xsb?O>b$o=g<5hUVKy-*njBU4|+e}dt#xuU);`bP0Hi#XG{wD$v5-!&O@@bGM_ z)6drwd_QC#U6G7i%d`JTGCK~*UL4PQ(-3pBX}*eKogDrmawmx)KLSI?;!`%=GzcbX zmPlI*0ufaWrcc}@%z}i8*)2qax$p_pgnp(yc@GoJ0E!Ns`$89#A6BEfHHoqOZYbU*3ET&=M_z{SfIB zC{$OI;p2xZ$sS#k>4yf*i{3Gnntngx*|F4ZfT$O4gdYSQi6yVGX-xJagoP>Dol<4Bwb>gKsbv1<5p zr1q6@r6QH+4!>)%Mb^~lfb9TaR>PuY`pxY8cr3VyRO#&>FKZTkKJKV$0#`kmJl*xb z>Jh(EDTl$bT)pfHgSwXR>Fm1#QVcK|#+<&f`E0X)BgW(CqFYA1?|NmrF_mqZnm5iy zYD+oM9pP?+_)X`m*3?tF_05*L_m+t?hBb0(;ZIX&`NnF*8q*barNq1^3H^N37o+we zfnlux=E>K@cTD{Ipob!}iD^bOE?k|J_C+Cz(Zv348}Ul3L{?B~STdf?nprKZkz_N$ zPl}r)iAHKpYO8f9ecnE`d?BLramef(MYm?kEv&E2@dpgao%NaoUfnE(e6M^7vNgdVF%IZ5x!=PNiI{IMiq{Y z8|LcMb;{wO09H95pgY{G8Ns_9y1KFS=&FVN(yvQq2SXJ?00B?{0bXb9a>A`Lnm37l zKPlyFR9%)E$agv^G>lHHV=@=0De$4{$d?0jQ+1HXX2(y9e-cNUQq0oKG@cAj(AIw>Foc?P%~L z7Eo?DvIm$LA^R}zZ1A%+Jcmc(@*B3+2V!&lf0?~uFF~JAJ_41xG(K1yc#G^sbMtU;JVb>-dbx`QuAZVa#O+>K=DpJ^=s>B*mWD z0O~XMnTKh@yjYPUNo%8q1=qDXGqoc4!$DvGLO=keeG&}2cDAP|de<9$kK)iTfK_jl z5}xq`m$(=fGS%^p3{2asS(S4h+k5$mhgsn7jD=rnDR2^2?xoPFx1HSVnSWd7#n1PJ z=CBmM6SSjk>%+N5U|?om`L|-EvRJ#Q zGF-(a1|piC`Fl|*4YJAzT-H+wR82{nhqUxpt@|2t5Dg!i+p~kvC41M~PFvo0XdJQLobf#?V(p0R#Y&006W;0#ei2l!Z}V z%@m+s00CEk0d9&(rtDlnnf^a7hlwB7Hd76v#|0ZO~hnHAfpx*8N z#X6l%47g?a5_D17iUAzbO}k&nH(6z))vb1H-1XdN39=c&s-f({UrffRcv$xjppM}0 zUz&i#KPQV0kOu7;f=Q%f%b~_3qJ~&Gwz5|iAtIz?YggH!#_MG~V~02$zYD?NT{jS7 zQa{o?BYAs01*`D>lG*CZ{A?PgV15`ce@L3w5NCC07U;vOzbC&{pL^*_Y#|9R={lA^ zdUk6d$wx61R%e85o1pydBdOx2rV6uFZArogXB&%p?|$ehg916W&Lq-R^xXVZs3Y_J zt(@WGY=Vqc#z;;d9mc`pCI&SuLR@hkad_o&h}ET4qA?h$&CJnNV45 z!@EO~M^LWH(C>!|@@LYfxj|S{T$!k?t{=bU_V;RR#RwgYCDci5Kj>9*hiik!jSysrM@#Zw zcdIj(aLGks4TN}OA;mxRWubw@kn(?s^wb`G#QQwPaC1CZ9mjSISJGx6?J@-K?_By{ z(!PdXT}=xG+Yc#Y8q9N+?CW4TMkG=vC^q=zN62-YmA2#rF8;E^4dI_hlssW}!UiU1 zJ?;%}@ozR0p5t9C^*@A|3lh%7;S3~RYqha_I-R{;0Ayb1i5ylM*cUa&#Xvarc>a#1 z{8TNS0>PmG0cb;DV8TKHAs`eDAOb;vpaRl>sDQrj3(NX8Y;>I6YriQ6kZ)r`t9h8{ z000D?qBNq2u)lNJ78}!2a;@^^kIu<`*2JzT>&Lvg7z|F_v!%LR++7YjV0gEwT&y@b z>C_*&0dNMMXrFJhtoI~N;j!Y{&8Av`Y~7LoEQ0_D8`TEj*<1$*EQk3coR>;VeH$6$ z?Y{aNcsN(c^6M}FEE#|REx-UIct*s@R7;QQPnx=nZeUsfZ)f54#y-|D@thH8BxKG= zp8Ev$Z|x%0FZ(@lL8Ekxw(&{j_V`s~bQnFS=gIK*`mm6Yl=NXiNJ>&Rdu}Ih$#*C0 z%EjhkcdSL;Ps06tb~|tXT!#L-D9K2r64J6?2_99l=XDiQ({Ac4@y`Ow&`rWC=H5wf z(BAm>dQYPyM|!+CTjO6j9bGm+-7+%sGmITo&}U)Xv4 z>s{W&3~)13MpSOlYkj2axdw@|NyMy$3b2cW6Wq;X1l_-|_f&{jbF`D+C?+u3i~N=c z2eg@2^^Z1EIrOh7DxT7fKS#8IL6sz-_8qef+~mF0^xSXdY`VPlIIDP}R^u)apQK}B zV20K=vG=9ae|ROaF%Nye;mD_u%Y0$T4NyhrQEK{|4mW9u>?0StKe|QOm{CTr1#R1h zC>iqx?C>7!>bemhzNc{X!P)q3>ncpc7S&}9+jjCn@u?2b1%vaPZOuR~GTjA@f;v{mXK+&Q&OI6wvkPzWe9qJeO>=MB9|{J8lR zZ0G!jnKB6vqWfnA%lm6248f1TaZtk>H z2w`WYUT8@8e{)0GN80BS)xGUnSAgMHU4eS6OHA+bYuX->$L&m)O#8BL4bBt#!jW#3 zL9-K2@T87EJh>M*+kwdGTdFKLN zBU6>z=ln$A$*T&Hh9$HNhGy_G?}oh2#r}w{kFA)|gCA>-wVhb&olDK5ethM}<~Ren z)s}TKvn_(9Z?M@(d=T+thh$jL2#akyQRKhXx{tX?>s z!me_3+-VFx;g^`0xI_k(%KNLo_Zp>XF3ln=d^AIOsOLqy2ml8tzyK(2=;!8DJU1AH zi+4mXlYnQy(d%h^>;0bl+VB7*{G*FQch}S@bx#~viT14rvLO5VTxwk2UsMT=OP8%+ zptA9c<+!!RScj9a_&Zi^ie6Vjiry_MFAp`YX!1o}jyB2Xl4?CS#~YsFx+;nuVbUZ# z4y9;rpu&)Z*Gf9dSyL6H!b`NvgSeunIqy0Dwal)!@cgZeoCNtO<$w+);ic@BdGXxQldQ>aRTG zUD}jan?-NS0~ZK8Vft{cX~hs|tl}8QmAsiTOjII=>u=)<;v#S}?|G&YHGdI44LVO} zq-j`aR(}a_*rnFpouv=W?|_j-qBkir^R?{`XQ@bZlu3YCA%Fma2n&I|xw_D*_VtEx zixzVh(3^5~8=Z*nbOX9p7J$^djlz;@GZRItg9)f}?L$AIR?(XI^Ayd!AvOP^*t_q) zT*`N- zp7sxudCvwH01a+Ckkjoso|7xERqOUZ4^)d`m@}BP)@T|9;WJt>-}{jDif`8i&lTviD@t9peHYi7atogu;a7DbWvVz z`xh05UTYA$!9r`1d0&h8tlBxLwt{rG?L>i_}>Ca?qpZ~!erAT$&K zn*0!aV7zf7PgUm~BjI5eh8}|<_E{M22PpKO+?f>>p&Cb~EdEP?l2`%&K>z^*OQ>zZ zwd;YKbi)7w_Ymi3OMn)-`$K>Lv$~8(68kNsg2|3mpp>T9E1lTU7Hfd|h@CCe_d-@3eo zL{RU{+&w}{DW9@o2Cs?CqN{+?HktoFyqBu}ho7*6d{kF#wfc${gI(y5hJCu8&j90d zbf9^y+*fiP@H`2>DtD&WjuO@2olXzqxNlm;=1S^**j;t=GaTVPojyR9N6+J(=Rgnf zGiXoWbF-@=i0K2=#VY@R!@=;pfgD!LWCnT(E&(^aNfjh5uIhpOJISJ~ZN7{lEDYXB z_3Gp)BxXqW%Hzn)Q`FI$E+32PD#OJGel1DMy)80-GZ;m6{woOt1Ll>^j*0NqR;>Cr zN(;TZ8*NcYFt-K^B%emRZ07T5zOmD(uCl$1%YMSb?&M=(f#HsFx_BcQ$ECa z{wGHsF9h`x)NF$`r}At08-tqlmXdY9>^T*|oRWU;CLc<56UU(68(@9SRr@&0L7ia7 zm-^=`9=kt+I@*6JGSM4;+@yHg&moA16k$8cn9s`n6IPMRdtHb&l(T~r?DksrD~x_( za!H>~F}|g&t%yyuLZfhFyIGt`m5?nLkNKZ$k+V+m$7tLX*7T~0?-Becz{77i)ONFB zy4Lc7ZEfj!jdCBd*jN02P9f)(yN&8d_k}4A|v(&qp8SvQ-DknO7_YyUHLm<>q5$*!V71udLKXn@n871aEt%;_3{)pu;|n~x4n#^W45BF%1jsJ-&`?T5{}NE5eV+8sJ8PXTBh)1U)1`f zk^`rtKH-n1ZO3RoiqFE5k}ckl!AFpIU`4*#=ZxEYUy4Vjo+?`i=XKtAZS?9a?3k`3 z%Dvt~s(R8B6*F7-6#e#XdlvU-47 z>97@@i9Na(dGV_#Bs4a^^Xxls!eR5pO#Adb!$sZJ!4z-6Jp4RG?~A+1zBg#u=-PN* zw()x5v{sNX-wwsP2MGZXL!<~ICVO3?+vb^!ue)(DLWri~d7QDa=*{!htLC@Azs1Yn zJWDpwyKuCSw9&fpxKBp2eCuyM-#Hn;%lOr301;g4GX_SWXaEsN02N~!Uw?T28qYzV zZym-_&FU%-?GCx*Y>r%a%2Hy!WaQV6l~me8<%L38Ub8GT%`*ay$n{fCPWfddYj5{= zfGT_0f|lt$**12yANM`NDZw!{%7KzS)lkVDv{CHtv4Hsiy!%2Xxs-mkcL3O3<#ijj|c$fu9i zJ?JSTKsul&X3gf%$&*LG>+OeESVtV;-1=E+@R1u0_?8vn+jq987tngv?Q^s&*%HXN zI5A53{m&^l!nv!hjF>7|yv3!u=u?y34A$$B_j^smDY%txF_}LLd|K zcN<0SyC{8?HTIMm*)}7Jsqv_7+kFl3fB*_&s?-`rQnH9`?C&dcXj;4F!Se z2FM}14=Ar7^VgAw&k}!&ES7{=lvg;3343#6&OrbG2p|MXXpc0~f|NL4Dd6r^I}Jz2 zi3gttuCrghZU>pp`S@;!WaCi*{FI{!`~Z$H)!?pZH&>G zVlY93Kj8NDTPN6M)g#rSkE4M)`zwH%`ncDqb7y>{ZD6WNHhuUB#y}BMUT|S4$}U5z zXYS|^nE$W9sSz+I)$pR;u;#qY(ds3TOfwH|pcTnfbbfzT!hCohP}M*m+I1pyy-K~l z(7dkZEtXLL&${G5PQut!>GW1IfLMj25S#|3YuF~WEB?#zOF#^n2!dhFtsBSkbrv=| zr8YZ7X}s<__DavvI7wti>q*ibFN8U#n>3v$q!7y5=T)OR{gGB>XV`34-01)4F?Y!)PWo5k0qE?$u| zN_1{I%PAynh}P&K_peQ*);5(9xK7EPQpZ(m`tRl|C~#A8jO4s~@T5aukaf+zQPq_P z8x9X}T@Xee)u@SKUM8LgM{r0;o4G0JjaVk&W}obOcOxxRV}3q-4f&GEfsB%DMDq;e zT?>UX$5L@0Z0rHYa^3HxYgMe11S?%PjY}RmldA`IJdqKfT)(l_wPIQ&tY&BZOgP>- z3pE)v!YOHFt3-@_c&F~lf|JFja7G*QGc-?Y@_A!xDfWe4c@ za?+L3&Z#R*(Fl-mGzlcOeD*y!=9E$>Bi7$x-qDliVeDa zK_S}z;J{MBM4jRN8CPaZNRJ>TeSF-p<(g_^^I;{F#m_OHZlU%@qLV?mp|6};!iTe} zMRTDVcR%tiJ;`fqX<4T`%)nb}|K3SqCcn?mm&x@voJMyeWZZnl(YsN%aXw!&o2$*h z1bn!P9EKkSx7fIH45l3!elXDa&{I z!EwtSCwx|L+54Cpr|^EVAJ>aJSq3guo8IFnWd4sPg;W3N029Cf7vum7_cgMC3Ln86 zT#Fgyt$I=AOoxg;GS_ILl>U)wy;psC!_5}m##D-{I)cZ?2t@X2OH%QzneBKPVmh)h zet>6AGPUW(40@$#UB&jw&?oX2_pN!ctXAb?6SSO+abZBpL$ zklKl=U40{~ZKM;?1-_lP_ag=swZ|$VS~ zAl&euYZI-VCZOUu|E5-uyBAF_Qos5abZR(;OR71l}6GZ&%yZ+S{@ku zg-C8^*_`MHXK)!trL7%tH?>remS)uL*-9p z`e0SQCDUMN({7P4%D|cvQSK9{9WUVT(rqG+y$v#qpJPID#?}1`-a2Co|ILWcOhyK0 z0iYA)sGu4*Bw88|s%YoNWp^N5=)W!&;m3ij4jKZeCdJ1dhD`C#s-CCPNnO*<__FqR5 zEd0=r%CdC$1vdI};@%Rhy=+=zV+@Y=3Ewto`kp}xphh&_>3!!o`!WOSO^mouNn zz1-;4IZm{cIPVe)fM*!Lx23qkzM)p|`(d+q=T6~pq~$;L8wDm{;QCMPYsG4)(EfJE z*-RO7lwwK|LnQFhJ3*9Cz7LdiSc(1)^gcgvi3c;W@AZ*7B73q+^ke^#Q*if{)f5kL zXBsngihy0QgR{ZX3(`2dhQ?ToFO@zBjGbIik-Lqt}&b^qbGDh zX+W@?Ugpbs1cm8`4vDsD|AKZO#dZR=(cSQ|$C3kSa!GXs6F(TyFsr_MX_}}E|5kI3 zySwP28HujCr;`L6LMeknKV2+?X#>rKpqMXiyds^B+`PZ%Wpf&3Zd2z0u1N|aA-V%S;)I0(a~XH zj|>0_nx2&Bup~{v&ofPptylmOJMnD+Z~zrLJ@#7nHi`?*_saR(3hN9s6kXr|e+%wV z|2I31wGtFz4%=q7wubt_v1Iro;#Ov%W=@kyZlvE+;YeWBhgkhO@eFb1YQ24X#95WT zOCzl6Dl#alii!-jls>$ytvst}M%mXHocncdN{Ix(j0VtFvY~gT;#JEUwW?W zlNzsn-`yVkfF>3yHUwYNg_PyfaZun;T`+h$;v0M1y>H6_qT76%P=W|=-aM2DiL(Q5 zES!P38;;SX!*+iy=kyS*T|g9&?+5_-bN$n<005U#{I&6#5FpGoJJc zTgT#`7_QYc-k<;o3OkQvq4N?nTWX6km-#v~{>&l`_GR_W)BhCovkzHB@&bQT=~7{f+oKj=~Bl25Cll8yTnS?Ipn>zf%=o+Xq%wY1itc1cCS< z`4+{~JLR41-strU7I0Fbi}z(j-eEYF%N+BULPUX&QGaO7+561Hqs=Wh&i9Qy#aN1Dn7gDB1swW8A%NzTMN(*!P~=vU>$7ImV7{xEuQfl~%JIXE?U5tGjR| z2o~?<%M}ZlOUo7-7g&Y;??xv9MK0n9{u&jC+UaLr{U` zUuMqfy5P^}2etzyheNhnENCLTB^0EP)b)A5VrLoE+97tbVqv~G?U!z}jD+a15-#HU zMR9g|Pa`9&=x|(yzWFGo&H*}P!%dLizE2wG==fRRH@)Pq9IB`d{se-mrv?y2ONUX& z$EuLcXUplt9h-d5cS2@n6lfD{_U93PtVqJ5J@KNW%;qz_rWga5s%2M27i5(;sZ7&Z-1>2&vP`dM@6 zQXT5XyR@0HP5!$lX5K|0TsREXc~FDx1?w?UXJHKDtkt`f6=IF}eJx9;$FP(55`+{Xupp`SYPcf3THbd>H%MtiDbNB160|^ZD6Yk6i(9eM z;$GZc3oTGc1H}pM4#9&5r$BIbio3gh;eGcn`+VQ-_w4SoGnsoQGiT17`JHp;%uQzQ z93ETGe0ya7?GY(GnsBTR@7gQ+&Dn2gAhgcxPXSZQzMc00*;$ytJp&)NUTUrv#-uqGZ#H`L z$43#>o}2GtB;F|%O2`q(6{H7`=6Rw$PD$F?>~Bv)BOTf*@DG>RSk^;(`Z%AZTAPHB z?ZwEx{bsEHnj-AI(zn@!wj_O-3Z5 z6oQ~Q38WU8_&M}6_-TVY=Iw*sAvrgmd$E5c z?c+>DaOfL#eYNnc3^j9T^qu32YJHostb``e$aCfV(eVL=lm4pwX@N{>%X-&@fLKGK z0F_wAOniBg6PGc|+9q6aRmGW@K@B#qCo0S3!b%#1EqD=L_%ude8S-jh-~DukMirEusYc|EEL$|IYl8mDYIGxBrO`lbmYw z|CIPo0tTa0-_Q4#x`}+&Qx#_I4z4ste2=NgpkgBQjWk7yTd&RhOBAyI~(#UKuM%+a)^3SiyN4g-lycwu>ijuf}IG#~hK_7S%iO zs+Kbitx?vSUCq52qjM8TS)12MfDUhpV(pl<`RqKLyoxqgBY#ZOp&H3En@F!66WyC7 zlo(-WXv~@Dpf9cKG`pD6!%$Dr&C*)5J)3hROcHzdbFNphZ?-}BbDc2vd>uu-<6q0$ zUFN@b{VABQ;moWvPqAtH*A8eSEz|Tsrp4y)g9C`K%H0C0h`;74O1ajGX)m z_(L~3C6Mg8Vy3>~lK7rxoLSPq(EyJ^6#-V@q)63%6g7f7}H zn?ZPVi|=sMZck75Txg3s|7`A1e;XF0+@l4XB9ful8QahQKdTl&KUl1A~_=(3Rp z7fIsdcv$Kq4CqYiHIf6DrxsYt z*kP>|d0>pQ+^VxpdR0}0G+N?ck`Zf}P&p1=!fE_ACd^y`e7EAb`B_T^C-Kx%pPxy! zgftjFzcvy)$$|t*wso243Ia?sE*w)ZVL_AhiNbGM1kzFaX>xZ!LPI}i2gyarTv@GG zw~^&VK7SKPpu%S1A2B)6Q>P|U4IG@HzBGos9RXYXaAB+BVe1*b$T#E~Aysp!9uX!m zj3RO2m5F{kt@uJq$U|Fea1F((9@x zDJ3$!oi!(F#^G{56&W>9^VOR23)!F2TBPm#l?SBP$Y-AmmfUMwHnVGH78cMmX^mCr zr=B;Xy-Ep}tiI$eG(96V&oaY|a|PuD!d1c~_eGC{eG{kwy0o*NruPa6DG=12I|@=PSh}xI8u@rm zVHTrY+~Ycs|CTh1b{~*#&YT_mxsOg-24PZae)aA)<23u&bO-xqL3V8<^F9t7%;P~q zBdyxiB8oRya&kalOEXn9`pyPOtw|=*nTs-gh?~n>Y^SVYI79b+y}In;XPDkVO~;4H zuEZR=)~VCG^YSs^t?9Mo`;!7yN4`At{b5aQ7q1tv!dcHo5u0Yhtm~eTB4%>a?&VKT zfF{7z9{opAKoG!+Z~5c9C&jt%w^-K}r^7mAnip-QW$C-7nnt*)ca5gozU2<%e|QIy z=&aKXE*^4uwYRE*R<}sjM%2gxk318A)+Z18no}8~KS>tMxpCYR@fsEWv|L<@!~m@% z?}i`8`_kNrY7ERkipin)0GbFqE+?{<8r?XR2tvu{@6XO}Pa<1!Z9e?Q2!3f0Zma&o z_62eC!Y^hC%ZtF3dQ2iisw7$5XP6tlR>?i=T^_^N)u8Abc!on$NZ(1Za)#ruch`DV z7x{JA+m;oQmhS?NGSuh}Z>8rg2dor^dc_Dl-9(KOzRJIp?VvjED*KImbF-Xc9VRgQ zRQ%>S9 zZN^#YWK=`(utChBn>I4{5TTNLB*qE~T+Iyp=&PMtwm09l6ughvSxP7S8;E)y$8+(_ z#rgV|;sx~bImTDQL!7AvvrgTijF(T`JME+ogc65psgB4#nywOmIsU_SOc}Av)wRca zCneYc&ywTeFeGfy4 zD4czFe#PGL?SSQ0INqGG7-!qWnY%qi|N0>2f-^7dI`zztL$_67?hek7&{fly_7WsE zU)xpgtfx{n;yll}{ED+jm*0a;b+d_LlY-yh1C**t@tE<+U_c+nKWaexlggqaLro7(~C ze;vi?qN!RW^3u%Rf|>~#o?a00zWx1C27t@-KKf$^0R2b4c)HX_Q7rP09~oJhRnh&$ zr`~5Uc2H$e;D2CxB#vqtAr|hEIU$3DM0lD&2l@|tMnYyRY`o?&RD<-e0JxkentA|w zAOq8A+Q;>Wh6D?LL9t1z`}qE!b_IN7{0i&=gpw?w5>3*bu}~xd4(~@vwy~Z8p1nm? zH0|RDMj!xt@Z%977V%@8f53RSvhV|&kBpw74ByhCKQgLDW06SUq756wmdU2Qc4M(8yZ7*ey8 zPup_hb--=Qwz%K_=6<^&#r?i`A-d-DHmU#Xf|Cdt6nUuA|CJlMk~Hvl%}LAwx#lDq z4n-Xw2)Ns8AC6teLY}W1<-1jgR?I`!T%9GI-lk$Bucf*Bj|KHk&-T6sK2Te^FiACM zlmE^p50QJz6{D3GI`Ki1dmxepdc3!ZVkjhrzUKRs8+!i05?X(dG+_FFT;|?x^E-6W zBZYQ7^=X&u&c$z7_tTaG?=M-DPg~(1ojY6v@(7pnm>(V1isJroTD*|O4(^;(rF@`K zg{6Yl+qw_D6)DM8CSM(5d4G8^D9SVt{`SDz+`FxYW8nMp1ui7yz#9d`NV6y|7|oj! zm!akGQdIEU#RpNYDgOfT<}{C&Khuo(%zH}hZ5#dMK(aH#h-3N5d5Zs>>)L+?A511(@^R%3-o=p$-QA4{F=bN>Dx z^-@L9N~jC>&4t*(^cesi8 zy;wb=uX$WCO@_Y@=)4Kl}ov(CvRQA z_C?0V8d?BRK~3JOqZlqjcGjx5f|N`zTUFOg@0PH7ubv~S7aB8I=0a0TPptK?JBTh{^4+%?gKn!4Wz3>R z-}T2fc`q5kew&i1R(7)b5uGfH%aUj6#=cwKu=!DaE_2vhzWcgizXc;ioWX)s8R+OW z44mhayiw-2lF(#DXx9-xvpA}o5mpv91R2#1<+tV0H0qKBL%^ll)r#YBdXTWuq=Y(V z*ONqtyj@6V=oaIgQN2XTM9CCC5rsRko3bL&^ zRK};RIc*f$9F_T5T3-SmLbf8EdBWSk46T1cTz0_zpS z)GbdXVV@=nSRbVNP=P}yP2fM38A8bsC3EmUvhFB>{44l>wE$95u*IrFRKjVwOr)c= z^p8T+LMd*c6!%<-DHcnI_gW z)+F(j96f!PhnM>V564RCn|b>!Gt}@_B?vOSs6%;5kpuW?D+R2 z?7T=7IHrkz+>kE0mBF$i*K+kGO=1Gs_XZ8N7PqR{1z~k1S#0KNq^-KZqOlK~b@Z}( z%!Flrj&W}7IsQN9h?tvjDb$(wGjU6D8prhJ@`zxy?A6U^b=z5(+Es(?gF^Q-I0^_qbmvCK>$28% z$7&3)q}Ai-wC8kZ)~X|Ot76}qI)C~}laRYiLD(Yqx2|9)V5L7>_qnoSjlQW{^)m$r zQ0)xFsHte?K^J8ygnV1 zLBUstQ($YGGUwQ|sya5qrb2^5M0nmN#8h=qFXNm)E$Mu2IkAa(sU77It0}Dn;T_Q0 zwAx{OH&X(;fnC7+EafCRIH#;iGK$yR=-WnKnb|UhMAKSC>im;lUK4+Yn?a=#c zRi!>H3U;>K z1@hH(LP|22YbtGAh$mFwp?o_UlZ9YZX{lMeZkMzB{hPb7LIG&283;}L2B|}cOnU3! z5qaapRigp5ql0}f)Bm1nry+G|2{}6By(r*2KPBsjG#OisNiBpx^f@!;owe62f{DHa z^_h{qUdl0=T9Xeo)94_H>44}~jcUy38tYgUkMlmnGUiC@jcTe!ZN|tlHLX!z9o39~ z66>Yrs%B6-@l6(rpF5;2%70j0p{ab{{no!VEBO5eEzQC${xx>AslGfvM2H%*$E<^xIlztMNd z2kL*bNg@W#q_vP?5M9zbURPe1@p>Xx<}JRBv7y4enXaswTeyrkPip}SzIdSlXE;6uZvAv36^7}ZNIYlbo(RxMU7OEv&e-UtRjd5j4NjJU9q z*M0g>YMxUQ0z4%BCkNlEb0U=QK`+6FyqO1Iq+N|d z0tKyWhb!~O*r-iM$z%!Z!vF-;ifz)Zj*>FqTv?f>O5WHsC(2rBq2Oa3=N&36vdX*c zMYY`7az_JY)9QHt8ML@gNR~|hYq%bCB@<=z{t4 z9Rz-dy9?(k$%*o8&rm1>_=_e7ZS%dso9{GKn(}3V5uB!PKdsHmj9{q%Gid+Bs!X3L z#t*mZ$~wJJk3CZO6Pwu&Ix1Yte?lcc*iW#(K9?ZV-o4UPHzx13_AI6`GRf;@mR&7V}9U76;YKPl%9vAr=Nq@+H|FC< zGG(K+uaet4!-|@k>&y3g>p`x%Q!Y6Z$bI3*g*)?4wc6I&HRx|I@RVC+@Zpn-9>PCw zs=|dnuheG!z!eW3)cr$Ts#*HUo&7zj6nnNGBz?uicRj_mCF0I&hTO%!kw#ynah+!=yC5AH>hnN;XRK1X0#pfv$=UcS3>;! zzU5|5Fyj0qm84;D)nj-curA*Ma@2E%qm{5@#0QND3&ywh5IfXfRZFh8_;s%P+1|fy zNM);TBs>t*_LmH(L&u~03W)XZTpH~1sz?(Vn4^p3d%MgRZi|HGto0TzEFx7B zEZxrhU!obz&WY$^E%&oKd0sbgy>#I2?5O%hOznC~CxgrdC}Cw0$uR%cpvn;cQV=QA z7ri{_Vijk7&pei#4p?`=--|SES#t(_#NHoxzAD39`vvuEL|EeNx*&bKQYCw`r-6~M zJKe^UVTZlFBQ>vw2$2n^=5Ke=oXm5%sjc+j)|uFN!4N;Q^upyb+L6)UB7K-mP)Z7Z z**Dw;pBDt+4%2OY?Ctu69Qq)}3%;@;7JRk>O)%Iz#33VQa5CuMuFlfNe zE9Jh`AsHsoho&!v#%7dst|2ScWX;q&TpZv<{)GDRYbr~z@UBiTFR%QRSdlKnTU!#{ zcSw`ts-)A}5u2{gM*K)UOh4==FZ@_nd3hDK*dVlh z8u=tO+wxnHL8ia0^@n=ql(yg4$;)1J&@ZRAY44s?7q5iw_^e&h{EW~uh|m*=(0lQv zJy%ZzA^5=ZSY---kT4^ ze{5~-DbCN({y^4(h%hD0B?w~9ZU^vZe2NjlNA-h%P0u^G=v*eHwwRnyxs^9`dr<>E ziQjl{NV~mCTrL!<^cU>7UCTqLqy~yEVUI9h4sX9^+|pfHMHyJ1?i#B+-7Hd0tzrE( zOtN;42>&OWf`bIVSvzX9!4_@}?0;I9C$)e_gN$6br$v6V=$$7!b)Xc3jbiL58F4ljn z^QIEi^hU&sEg%_N*vU$^^1xLjcWw4wL1;2{fo}P-VK4V}jUlI)3b#J;?croyUv#(6 z!c%yEPF>?)$WCj*pM#Q|qb3OI#XtAX$VYSJZ3>TPm0}8&AGt_X=GOexM8rxQ~?6GS%_$_d`IeTWdR1m7 zuQ)hf3y35T{aDjde)YH8?lJB;>xx^StIuZNjN~ofI@Ijs>PJvl&ERL-$u}Y?=0t(l z>_J}TT|{@0N+FgpyA=)98BOl;rA_tXg~wSY3xtfqY^u6(Id33wA#8GXjq!1|Ex{|) z#+(;#dk3BaE2P{nNGAvxbk@WOsI{2l61rvF;D-yR!iTKn;W45X&upqH#^O5`=iD?h zc?3Vn)ORb?G+}2rUr-atQ!p!kz6%(=i`*i0*)L#QC_yUI#HTE96^|$F^7Jm4$?L}J zy-QI_j&Qn+T&}>jP@+ZDbHK~*f3m6))Z?_ShuyjkM+Zfooo=7@g3mNF@3(0qm0Ls-JI`BBbcW(xC3!t@~fKz=$l~mhWf9 zmcA8-x;WP-V}{N+G_!OREmy|z#Mt#w4>e_m` zn__m-*<;|NWVDsJHCpp3I$BRR>MS5kKl*#!4n66)%0OJLNYb~S18%6@`c!D2kI*X- z{ti~}9UnVNmg{!hCiL?bBk@mzn%@-s4TSwYzy9To%V9OW7YW$}kASFM1az_y9%Nu_ z4|8pK3+pGa`qR+tyP{&r6d`|a7&?C}C~AdO@{dkngSNb(*A9rpYZrUj4Ol*_4ZaoX zXs8CCT=xf7mR9evN~U|49PN|!E*ScxQrpq2xy1%HBg96x*;KDysa~f@*t0I32{R2V3?lJNC1`_H4He6@Z#jcx+$|9MroDEY2Oxwydy& z&-xOhu^H>JN0Yix$2h7Q;GwfU90&?t)B^jv<5D-k!B;gPzePQ-D{tx4adx_XR_qil z(7ao~ItV4`QUnYILUk;v6)Kh0;7vGim=6dlnAOWKg2yh+vSwF8yd~4ES+Q46N7`)^ zOJ}q#r;KeA$=yh2hbzzPnD{b~nCtgdRso0aKVLVz_poD~)b8~llgD=O^UavomN%#dwr<($m zvIg!}#}3)BPfbgQOzRt>hA=1suss|^jL5|PRdd1`m{%o_8tBxXB!Vrxgn`3H37~a* zR@3Gh)GZ4$)KUVB!NPq(X30eH0FqK2|HlAE%2``sG!9L*h20iQW9ztr95rL;5)Cp zw+K0~EA)|SZJpP>M%_k%sN2Y(e&k^Y_8<*l>+z)i`!laz2NWPH=W$KrI;gF>K$mX7 zCBfvtbn96y@VjaKsv13P2OAngU%tSaD&W$rwq$9|pF?uf2fa14W(`2y$9~}?=6ZU{ zOcTEBzgc?Ifr~vG5r0QP?Qgg6k3&P&z7CHE z!GocggTb#1aUa$M83N$6RNi%e$jn;laJXt>Wx6yvc%_WVg@mhulEo58?gVuWH>--Wfy_3n3z zZlew)iR95n)EQ!jf8uGC31!dY%X4PsHm3dOv-A};eNJ&R4LO{?O`mJO^GAQQz6o`T z^ZnpwQf{~O;#hbYy*5$H`SShU5_gi^-u}(t0Mt_^ZuhGu&Ra6p)0U9Q>P4fAYI#CD zM6J}>jVN~p(J{SFxuMDPW5YIljGI-Cy-KZQ^sXwKva&)Aa%@o8`$n_iul+lIPK|G% z3o&AH;5J>MVD|aq(G!MkA-!{^@i5V(3J_^fP#|8J+Z0kkp@g1!p(jz^WFQdhZ#@bG zkLEI^#RF^MIBP7I`jCYXSH;@fzeZ~~-G+j0MNR!yZ-7b*0{hB&BZPjJ6joFBLZ~?+ zL6(hdg-<gp7l)?E zkTsVDY|x~$yA*>0;|S}Phl*|zkr=qLwS7k;k{cWS4$wyVHfnCDe_qkJuED8Bg>Y9a zvSY{7<;4UY_-y4oHct%K$tB9}J6BZwjrl!Ua>6yuL*UD9tSszDEZtl$%MdRiA+kei>UcKM%^mv9PFYjh*LUBnn`TW?wq z(Q+u(+9PFO=2M!fZZFT6t+#k*2pb9U2Z>ib5nvAkq=g4hZ4{u>veQPNXQ%IlU54$4 zg({#qmQkZ;8PfjNXJC$_nY{>Q=@?dt26PSSwUzG)iLKIVZVH=~OL}j<3T3-Sb-JW4 zPsSS2#x{%f65wgTMi$L%)VA+>F@?j$8vvNx*yg7bRHjxV^ZYkbRAx@`1_n&7Gs5Db zBz~5bnVFf?4+|jbTSPjkWR97ciK8s#X{7M3cxB|LJoLGy+-F$YbRW*|@#)N4V`n4F zRQOZGusJHQIUt$l(|rHCgB6PM`n(jo!=|e7wcPk<*1UN!V(Jf0dZ4LptVs8I7%{GYsJFQE_-2SnR1>_{`v{HKscpt3)UTR@u)NXJI7D9a7 z%jsh(c7_Zu{1Ua9V|0dtdh;TeN8Q&uHHAw)6OV+iH?dHW3^Om;_=YAU&vO1HSKg~W z*wwP;USHwvSt#Uk3oPjo+M#E!bxhi@1mi61e`;i=X$)2BOb#>JSz_9h`VaL|h!H{* z8b2*Jewx-@c*W2AKpE!=pox%zry$Hx04p(%&?%DL)r2{sMTUkub& zC2gu^zPIP~2`OA(DZDeOI>>tqmVLh>Zoi7YxiRrE;}nV3IBl^ysYcAp>q`KeGA1Sgut2L_^ohyo ztHH4|&caPa{W3-U?ns0)+ST#!H#Eu@o|G7bh`8Xj&J5y)l9f`@8L`B@uw&0*Pu=d`810pi)+M5>O-n|juSimp@|pw(WM1$v&G%C22;SWu8cFLP)3a)ohA zn19_VMwDQ~&$b}{K0IcxT;{x$t~qnjdw=$u?$_{0K_B-JYsNjXmKC3YrR$7vmq7JO z^WtT*N7inNj&gJ75crZ9xZzZmGzdO z-tc5cL~KF+5#7P+`tm?rDkzm*RHx+Pk==CxTx{jEv7ypZj{kGMXk~4I%_A*;g}o<= z9~R&IDnIpyRjQp(|BY1ZEIbk-H8!%v~Gp@YYb3PfjzcWb5A8_{N z)dbe*Wqt>8)lQ<9tz^qqt2sYz70RcXr__hIj)-fTBW8_0s0sa}lnR z(;#!*Y}dePY@O}MfpxkT`}}fuk8M2qmkVRRWZz+_R{#F}Iwjh+aR;$ePkj@1PG`(9 zrkCDO?u`HQy%0fV4vknnPV#w9WnDKW8ug0rnr7>cmdlR8C zqp73i0mQMs0pN6ux0E5`SZJ-Zk+Ot|Y$ABf)F07nRD1whxakf3A0bM*VPnM?S*V{j z2R<5ZR(MR`V(@~MHLKKPsT%EFUhu?j2D$iAF6S31tb8^MBL4S-T4dmzasg_tZah6; z@y1%{U9dGh>$Qp3%SiSSQ%ZT}{;TzN`0z4t3%tDsYGtp0vM(apFyYA78MUO`_}o19 z?@-oiL(i8771(zc^KmW6*e))eFhg%Fj|6+k0W%PeZkVZ_>^(H{s5Y>gEtN|T!6^du zN%ytzM&AaHgO*1o%ozI27)p@2k#W^Xw!Aup*6ZwrHBcRUH!^NfU>7H@yy|lWrBfln zkXCtxQh#z8j3g*ISqyC~$hh*7&U?L^kNvj_tg3@-Nk#HhkVY>dnJ(T9rz1tC$-T+b z`_Kjb*01accl|27?C3+PCDt9*9oU`;NdnSAXd`X)Bt2b5XKm9A=U8K>rL3)?ToYw_ zwYyq%Ro)?eehsc96WcYPeEKlfl}yBPAzv}}wSPTnX2*I*{8CD%kf>7 zpSyU~v7SyA-WF+`A5GMk>Ejw9n4}htK2MCqqA1UeHS48jdCe$%;$fLzg3T)!dZAGj z>@leS)Hz{0V7)!CmwDmhMhE<0SyFTNjBj2JVkgMD#_Q3cC$HzAX&j#n<`N=_uO|~j z>aVfCcFmAZ;h4ETSY@P#wi@PO#$8DNi#i~0+qoB?jW`f>-E9KB)5oJYw4)@^l0R#a`JTrT{jTs zebaXn47{@Frw!Oo(1)|RqHvx}8-Al}33^_DOw{SNXW_E3?ywCqnvUIvvKAouva5>P zeiyX`d@{CD%(u~idi5a1I`bAZ@|p^XyeUF2NWn9tjoGlQOuG}tnS%uIOlV_0(H2B+ zR%5peHuiY}4jQ%D&9t-4IEzIzqRz}`8}P9qINYeQj_+*O%R#eG1&+vDP*iEGC%te% z7*?T(Z6IFqdUHV3rgiIlEHf%LyP+NWU-BR@K3*~pK9)W*lx$sD`oPxt<*YGgWb~#J zYC$=jDLEa8N0zy9r#|9tpdYR<2T0h8P2DD-P4LDQDuPlOxT?#uI>d)sU>7kpizX=J+!EC zb`f0bD*ii?Q#x%nM)ic3x?=+jV{51#-J>_!<0h!#e(KG(ltPT!c?bGRnp5ak`yNTe zUu4UyS{t%smgIX)ZqUQT1tF9|hPsi2%$hMc#3y&e3lqf)1(~=34fb$Qq%}y*gk;0U%tX~u9qTqYsR)i7ovDHymv7QCrFu596UNz z<|kob6-0L#%#+uv1LnyGJGCJqy3+{l@F@EX2v!Zmu+6rlTWYqz~FYIJK z3~f+>{~TL_pr$qec~Pg&6FXX=9r91J|HTHM_c_cI?$>bW+=HmtqqL{dPY6c8bxw}eaf>43(`9n~2Nf*Jp0-*RgF6AqH@ z{kWLh_4z8Lg#Pzyzc*AB%@r$`BeO4p_T%kod5SuI1r07q1>3Dn^2?qS%}XV*O>A=h z34mdWf4?=vM5p*c1=^0C-SYl@9-2Ji()tu&yFmO{-7=^%512=Q){y3jL5x2g=k+Dn zf*UkxrqN0g)1(2_g?dXu?W)UQ2@w4oYt3UG?PVz#kInwF=A^YIm=q<8eNxsVK9&{p znS(KellF?u!*IS4;$7Y0{Yzv2M0`T-_1cJWBym>{y>BLQtsVo$qa?L5Ggrwkwic*^?i&rpkAR9}OBDbOdvsd4c z(9pF{2AdTaybW8d4U-eez~hH$NZnTb98ZpMFjL;+V7U_)2F#(i1fcw)b21`$ie#>W zBHx?i7aILH*kXpw;-t4dz9!sV8>wKkI=%TU`^;!TFd^Bg$tze%$n|9DKi9$hpCkX5 zt72mQmoB2R=)af$Z%bs#{}(H2%8PJ-*k{f_)S8;|9H#$Tyz_7D*TK9Hc&|SEjrJ)t znQWGUa^$iO=@vhK;$58_WF$^>;R*u{zIy^|ccQ)^8Uz{XhPX;jfszHk=+c`wlSB+x z&}1t`aSEz$;q)9ynYxS{Y<~Hkg$#@068sV}Y$h!WrC{N37vgX(YMFw@3|Bn;C&3vS z^0zlzDFUje&nX-eFXU?C{Htg0SIeAQof(6R(q??BfZG?{5iX&k9yj&FFClZ>G*uNe zb-B)Fn$F0uZB9{fB*mC016PV_auk;+JEu@4SAC9=_o`5iiJQWoy$Ys{_jN&qW4|;! zLYW(uf%8@#(?<;dnq~6#9Ve#AxT&+O(7mRL*?Y>dn}ODeOs%%ruipGid(EtUH^4>C z@N?V7ePNo)Hbu%vxm%cdE~>#deONzNSN7{iQdp)LkfqU<{5`RFB^1>O&WPBb7I@Cm2^Js*IF#VB3T_j!s3uw2yV8gB|_f$Uij0SS`O(s(&N+W{abv>h2qX7KH>uS&LL*omtSOLL432-FzCYj z{qdavtvL&)S`FDq6X-iUg($Qf355XYBUAw74_eo`)NA1dm=jvpFc~PqeOKRn{;(*a z*EgJeXi4xYHi2Yi@9bQuhMMhphT^I&U?^>|n)OwfeyCpft*+Nf=Q?rW0Y?}5_ZeaC z6y}Pq!5>tq3@yq5KT`ps=%|3b;Z;P9$+kyYAfk!Tj>0$20KCIK%mB z*X~X$4YBS|ta45BB2ungNmVg`w+dKEL>$Zp>Wi7;iW8S-{5*U2l*e*3H<5ty8~~ac z`LDxu+dY9STFgPK6Of&gUQzfZxp|UrzL>@uy&A8tBe-IJQ^dvzz77$FWYDmfWp*eL zhS0$H6eCwAnMyT2DlO);D1J*kdpmRbq=sEmk-WI1L^WU>lfXbr;>laj?s0Y?V+5^Z zuJwYvty&l^`DtnFg;@QmMn}>@qH<2-_Ifqj0eQF6ipdWulb7utZ!pE9_%Kw{vi;@J zV*zilK0jHUU&IuTNvSHkzTeFjyLCD23n*Cq+wux6D!#zq;{uOw+V0WQSt=LvKF|D; zcfT;sO->B?kHjETBkbqgQdA{Ib!-U>ewm5A?>CcjE^mZlo?C|=iEREoH~8^PQy=5o zk7r7$m+>TP)*P*72b{v{%F${05~=~&06DDaCrbs?B+Ms7;OYsduj*I2cW|wf2dnuMAU&Ra9jBKxTs*QX!34C;@pX>bTF)|;Id0g0D1;|9LJt#25e&++ zy;=~i7A^txIo zFZ0XbIOGn0J}5!{(gkszNt zck2$7`1VI1 zZIQOTI{Sl5FK41ND8iHCwenLJtEzoI!B-e1Q+GaExZvEzGSs^ZYK&gjxqOLe63(FY z{}_lzFP@1-r7oW5uYx{Sw`{_6bMHF+6O{0i2#;NVhep|1)U!5&)Mex9)j5Iwkni}! z{TpYSL|zhbc%dKY%vEZ8;9$9{XkWnVE8{oCoM!oO>_!<*R==nWuJ54>-S zOTRdCvpXMKKB#_IT)l5`RdRxBSN-XeEua5cZ1en;dzzL#W3W+Ls5k27kjWzwXa0r? zgY@)<)a#F|%i|Q+W|Yv21FqIuBovHowYP`<2WM{q6-TqR3(pJ;G7wxt2<`+A1SbS{ zcb5RcA-G$x;2wem4eo9OK|_$>?iSn${x|PA_kQQYr1FFP}9_|Ew%SkPpR=i zxTwkRDA+q49IVo=9-<8eV;4&`B>55EZ5J|Nr!SL z0)_=|l%Y~7)6{u)^L0$0iC~8vmFDMM=u0t(Gbp0ialX^~=ed6X_YVSMw78)nmdu~O zG5=r%d0^TYX-KKl+O5*I6|X=jSiDeC!L(hX2u|?0tiV;B0Y}YUH@P_W3A_ROJljzZ)qTHa$P$ZtRo1#Mf+aXe4NEDF!$=6uV*I_+KnSr z0*1v$DUfn}tasV_0pSE&P!{vfYB7piY2)?_>6<&`>B@Un_h`9huwtjsZQWza8;~)1 zXF${yVYcrtv-e92Y6+LTZ0klh~`6|JPl7oh^1(ie24s!0HM{0%f zc>fvOBC3RayfE5qT`b@iW1?|Gb-a{=fZWes!sV)1rR5Ub-ai`RPKl$RQuiYC;ZJx zqV69m`SXwa{wJ?`Z0nhtDpFfy=5;!Ni|(w`rf`PWY2M7QMfS2#QQy ziEs;*#z2?EU`TWl^?6$E_7|D3#on>63rnwAhSiIgG`oKH8quOU>EZg*o9N*IwnAkk zzdP*nWZ57B{M`ArhP(hQ2Pt=H4!pp~h4!DJW36-gyP`>7ONfq^y$Hd09;0&89`n=W z9)pw5!elsv`fscUrN`_!FEE$-eZx1nk!PqIS);~^nRu2p+p_2NK<3JnJmDxf0cU)2JwSe~7lRVDZ=+1N>D|2pz5~JQ)PQcq5vP|z z$xLlu|osN??R)d z>c<-^^RH4_$OT$1#ke9RMg;-bc`FQXh3rD``^9pB5n=SDrt z@4M$lD#3d*h3fXhh!Q*Q@@|_>n{T4qdx!J4g%06iI zvb>okQR$!PsVcLd7UjjGnmt)=h-vwKYu`D;CyZ?M(VB`Fd3nS}zqNg#Cg}aa0jb?| zckPeGadev4h%}~r;@Ak9c#!~xyudaC5jYz>l_(slhB%Q3HGrnI?XJ0h`7?BX$_U|U zx$?uP7tw&t`ZF7q8Z|C>vJ>pCV33Bh9{9oE1hhX2 z;V)kMG4?IEDs(YQ&k~yHC-PJ7M^>>^)-&MW?c*@5-`iVUET>hh3nFXY3#NG(dnJ;4 zE#28mWR~Kgvx;$6q7w(;T41Ld#H7-}-zRW`AoZx($fdiDtsWIc;$*UY7?f@oJ%LBD z0lPzF%~xHMzf^dsGF8M|(GQ%H-GJZ4o zyA&3U5!Co!r?l2vt+zZ$DT0Wu;|?b^F+WduU6oWVMKS*@U3{$Y?wxK^-wlX)WF{TL%IJA<-+P%5!+CBYSY$0U|Z_}&3mBX(T zZYSw{eLvcV$%G2P-0_YtMU9z% z4G}hn4Abm=h?l1J`*W-wD<9xwKe{NuTuY>NHddJaHtE^>YO!0bahnX?1^bibEt3na z$;F%J$Zec8N3_s-nIGx)jOBJ|CCnnP5LdP6P%Bmafyqf=I`j=p4R7^P=c4`UwmoOa z)WXx}5}poeUNHX9NQ4!LP>)QF;UXLC7Z1REiYICka#b}MFZoF?m4>DS6Vb$`o(L7N^j_?)b1bIY&nSQeEW zHk2`Dk#d_CyU1&6<~tJPa#%5tlGuF4$w~Ac;EG8x(D!iJoNmE%OwN2k1jS4m9S#hH zE=INSpzN+8x^d!nKDWLl7svY4iMTfBbACA4qc=8vk)WdV$>=P3#l5^-Z<*bTG)*J4 zS%T3g`EeNK#XEOUG{Wi|7#6OG%1TCn0^}|(Cqrb7aTjvK~0 zAK8yZFGcJ|8K3xeW!=TevnbQRLDF%Y^YSEZts-;ky$PH4oE1PTC6_;3m`Tp;7%^O(cyyFD05DZhIaumb9H|byQa|DA5Ok%j(bAK> z8aS7jfP6>%vm1#B?57|=6lVQn^0@9^K3MeLWu6RIShf4M3g2)`nL0-GPjY}?g~pX; zL6lZrxttB-Ex4_1B8^r;a!d}A3gv>~;f>N|tBMpv+TzwkN7qopm~7Rdf1PLoc%Oex zIu}#8k~e{)e4tvzUbb&JG}9H|wP6OmEJW7=!xQ&ME_0~goV#zg*KyH&Qazuv;AqQ= zY}*{4XD>Huu)(82<#-bRQ&B9t6Ns?6()yR>6qXf96rZ1j9fJiteQWv=-9TZV-;9U9 z<`nL)QRXb1GI_P~hqtZUf9-B1?`P@!p>x`uOyB|CC%0dF5jAgcp`$6EhW2wXum5Jy z$?#>XQArnuowq^K#~oyo9VzbUdXAPWCfS zCf-@UD(O@jHDM0wpdzp;AQl2xHvZd*T}iEHx9u1sc{hgy@%PKCu6ytjc(Xz_eI|KK zL&9B;GO~@Nlab^iMbbh8>SRJRoy#Uag1c=18wegvho#i-+s&dFV{2Hm_vbGO-h6Yd zFn@*J5^=8gH2Mu2KIv);&GINOl2-jv&&-@^CyGT+lsmpVzW;xnW6BW!n~x;6>v{62 zxO_7H`U_zc5cx-!tah_hZA=TG7_$Pcefqf%06qFe}ZHDLUAR*arQ5K%M+LZ<%501qh}aDDRr>cuj-SfN4v6t zIpAhBdw;CfxK9ojB8ou~e!yAd%&WS^dpBT*?f6ogK-u3Fi%s=2IywSHHXIJ`tf?RU z^I&WEXAnfra-9CvZ~uZ)lWQsCyk&d-#>&~2oU}VGBx4~A7a?}W2F8qQq_UF!Bu|!Z z?a-Dpj*b!B&x0MO=cTt1N^1VOV3#)whDbyt?MiAnFZU?-5Wrse$%&H4{KHs_JNCrt zk3=_Q%Psc@l&wOk9C!N&^_xkd$c;l>Sj*!hV?Tv#=L@L^lOzaw9Zv1k-NUgA#ff&U z{=nGO{J#fifQ16{pi;2dmeuxwG{w5vRQgJd@Gi3lB#;>!&DQwlMf zW6qdQ4#s$-(aIPIpDnhUXaJ4RQS`l;^WMA1}zruiShHy|MMI zh}plxaEIL9Vubz_O+q{%LZg5$xf+Z4$lv}|3pRK##!50#lboWm7Uw1@*gps+He2po zUy^RIw|?%1;F&?Kx1`6z>Kf4}urO0>ZH3h`9Wl-6FE%ajmvBscy=q=dX+XnQ~TVk^0S#dsm}{yZFg+(;z)igH$MJ>r&g__odh>Fj$^) zhbl%HovM%mwui&sj%PB{8JpGb)FvR8YL7hogl%565ZAg!h||Zk3uJqfVZKh$pR-HQ zXTxv=D?$c-^zmOcM1B}5v(3{Y;-~GByRtnJh`T$j&mM&`gEL=$B zFBH--=~k`2j`pNn4Sl5l)pX(4mY+}WJRHQgORWD+=LxUyuXbVnxE^J@cGb%ST|5t; zYWpCoPr=8tztqvjuyqJ?BJ*${e4&!w#u_}4!4 zgg8Ceam|%-K!d6l4-Pv8Ieel887c6UMiHI$p+Tw48$g3^U=Dc43@fVe!f5_wAr89z z-y@G-zao?Nkq47!gGogwG0S-AthG#}46D0sDQr(T0~N$>(Q#7vL<7+h<2I^R%)~uP zT}gOU@7si8?mM)vu6GU_j&IfG+n4sdJxvk|7=YxY-9K)Vjlo~7mj^duM`|Q+(Sm;O zjvMUGndG2f5l{&w|4d+get#cBTySy{V2mivMmdKe%J$a%JrCj!2=TM?<`M3g0k_fn z{ny`@<0WWEtZxLJ@0fL`^dlt=>Yl}Q_PkY{tVx@*GdzA!!3!Z`6jAdp0;@p&F(3;+ zE*WfY$qH7hUB5$tOweaS-HO3{e8QEL7oGmkoMyyH-&Vj#R)g$xL8^SWE1rdehyoCzxQ3s$nsgE){~v4#>roGd=Zgl|XP+|3cl z@@jnzmg`f-u1*eYnnpsF$cQgab=3Cw=YG*$B~$rYc63eVt;+;P(#zoZ`&9Ju<%6wHXP+I7^gO2Mv=!d66Nvq;8Ue^AGP;uxZX!cXb#@C z2{ls7nP|aUau}v@kDKd}?3YuriqUVn)e~W@=$Sa4_!T9;bx>X+z}*?ZD%7%p1^<#6 zqp7>h4c)gfHX$Nd);kSxcU*VYd#%Z^{xGArsNc*yE?w4Q#E0#$HkkXV^mNJsoxfxb z&hIOx?DAx#Z)Y)_KjuFg_6kEkn-Z}7AYwy*-uI{CUUFeZ=&b16#w3e7H6@|0r*foq zVa5BDj_!6G5FUjXEIKZT!1rCt{ALGE9{BHHYV%x*&*G=+qpD|dT?HxO znoye6*V)N`&0wR5uk=_*HEn-`;h!V@HV%mZz%6L~^Wrm@obrBw^!?4UiIFI?dTv#R z{GmF#U-DE`lfiaV*6l*)d7X~_;DCg38X(QEmv5CJHh>`^r{|!r(Z5-+8hV8McwZEH z>6iKW`c4Z=3#B*swDMYjAxxjI~%LWWF4BzB;91d+6&&fV>1l{BpSsuhUGyu_ z(bw_~oBH;4pZ2MDCR7OKjcY6jl$AJO-YHCV^WqI{P9A4^EggvtjBnos-aF;6Gz@0l z`=Wi7a0v^icn)JJFefwhoYt&k9#A|=QA{1tKXN7@sBlfyO~^o;G7sX84exRQoHby| z*69A_x7FWpe6a~yVGxsn+?)1jOgN-sM}gA~MUDdOfB4ML6!(J zk*-2G>1SN~1%l%F&X;RGBbI1>0T~}sQg5;zaz4;7uz6Xr8#^aYGvg1x^uVgr@yVAh z%e+U3cN$TMrT)VWv%v!<$;zNYwH=1vefx_XU*~oFe7IJaBnJw2)gW0d$_!UT`vtxw z9UTFh;HKb`l-;Rc11Qj>DtlO<$8u&A9CJR^WL5)G{UT!olaY|Llk)owLy?O8Au|O9;Sp_$sjGF0wm(GhyU90M7ueY zvY}yez$~Q6|3*4Y87}<_deA_yo)I}D->OfMs7we#yyq=5OwmZH3`_T_pI^9LEf5+w zJ#i%_#W-i?S+xwC+0Fy=VCAC5(AwLW8aM^TJs|Apkca}%ssS**M&;87Ew3UYXr z3`Qz_2qVXRF3gx}O4mis9-JSq-iZ&ZcdEyWQ1CWFDjR-z4VknFwMP}Mciq2!sf`{& z(xXepd0bmBXykM&(SC(yd$M(zaGy5zF@v^K0XIAKU!nL8!+77y^{!3b!9n}Mn_2ay z8X(=Ny|1pZU+Kb)fEy}jl-$mL-9dP{ZF=I}@OAip@=i~xBJ+q(P24T`DvGG*S{>Wa zms+EsfPF>5H%Y4ebJzcRz-693)A)}=7VWeyQ zL-?<@pYEuT@N!%5a-sC2c)21fQAyYUD^(8DfgH8wVmuQQ732RaqU`^SU;E6#!BO!4 zhH=woRt|($Y7wA8I*p0`Cx~1Xkx85$8e^PR*GVa|BQ*-nyvsrXMtLo5EMexY;!T&f`STL?aiZ9>hc3HiDqhb)7BD}F5r@C#ZBM7Ol zPvWK$j8xLJ>mXNb1hT!oJ$_qj`u)1Lh{A31>MCR+XOCHvh3iFD^Y;l_#(b?b;z3A? zSSo`OP$BM=4P2w9G|D?WsIeCus4yF9$wC7rbcC1#_AYf`i!>^mBpw3W&NL&^ATf%) zTn3|jV#60I(bk&OxjD^5i5{ym{2!*&M%(R?RqKA^<<1#|x4OU+`tn47Y)gmyb#&BNd^c*Q&)wHGlxgOFh-x`zLRcN`lvo3G@DVU@4HL zV@vucM^|D;{6gU&h*JrcM(D*2g>3; zeKn6Bl&$*M25fQKVww*EmbVlmFSCxkqED`uG3ULg=Jd1t=qwALVaimcjGEQ@MTS`S zZ9cmGp&VyH)0jkgt44%KVE|qst@4OJgKnYyN=XCYIN|u`OJ$bdQ`g7Z9N@;lxRxNm z4hjC(4cZA?Ei)AwN>>+K<>&uDH&q&P$>>P`)!=_``Tu$o_()3-lBmUu9oR_(ymXZ& z|4(1nR$aY%IbJwlP-Y@l;S}Grl+w7Y-mj_^d)Q{tJRwz{?^F3ZhOd1Uxk zGuFjMdy=5V7E9`1&nS?IJCgsBbn*mMcAR|gJkU-T$~vpQ_4PfD(>MNUoG+&FDG6Ig zP24VD`n87Y|7f0ocmIP0{O<-0xcR?;tCHo@Wq$s14E#5$4$y|=$ zA9CU?tji;@i6?;JlqBuaK|_j3`Mem<8E>I##+0>(3Kmu5gT=z zDfh-nnp`B2E!^@a8*bfAN-hWU=xrthdKLa|JBQ$+DRWMfi9}lg=5B! z%KnWjHC{`shgK%lELp?`^o>3)j8ZzDC^(oAH7-vj?;AQ-;s7l(QaEiqbsPy^-i%b< zL#C&h1PxXI8b!wXOu zl4+?E#L|NEX>D<&&=8?m!MVz!_dL`0M|*}y@yBWc+Kx91=VtcxBv)`hlzn(7 z%LR0zdaz?Jq6N5%WMRoA`FrZa;`=s`u)Wj-o5`ktZEb6@* z;w%B%=JLh*i@mh{I*;wpvS_q}mipPGobU2DX8jEDR^tj^J_6Y>?u^$oBm#LY6|&zz zgh$Lj^#~v?*>rGG#4NC#y?7*9tj~Jaz;E9Q52==nn~nHHJJCcJ!K3?IzAH$gGi9Rd zM4~xdeas8352k#Ll}|RD1j6|CH4pGlWs@VrrwfoOfbQwX(8*mRUsl6G`z^K8%|dxE zN6SuR*Kul(X9kT+*#oaFnT68Sye|(pvuXg3}^g;$>05DRH;6d1_nVjo3A8E@{(O0f3G2j+h6%cPmW6g{qX@^m&3JG zVCKjDgHsOEHY)xaDt?)aa`}87bu$wK{U)!M-=FrQ#qqzb$W<#hL(3!fElK<(xdIKz z2;nQIf(MJWM=t4wv|juxc6m%tz>A{bN`jQ(ncyckdNtaRg{nHRvLPfNI$N9vb#b;Z zPADJL3Xlv8y{1DhE!BOb#9X%)5+0fTXo!$J<>lx2?Qd72br1b|2>txQLRgt)P8%8j z@@@2{Kz3vIZ=Q*_OoHuc-wA3d$fYN+0$8VA+KSe6{XQ4eNM`lCN20yK@+i3*9Lm@# z2eYW+_0R*LL3kce3@Cuoqb{D6tY1|+HI-+Q#9p7@l=!#Z0L9IWd3Znf`nc)}B7pGt z8vu(Y6uk;ebfipl#J4JtcnhU49XVMED5x0_i6 zNOh$co^8BK%J}7=uHel*&jrqvHt-0tsN;=@f8&n5rOB0>)q9slybk_+=%Jt1l9r^Y zZWP>ZpKs6O$$wNk{s{?57f3sIvUbh{Nxe<~40ZLQlOEfCvRZJUWcU_HrxK*7x7Jv= zA2vO|v@rZ|hcb5G^Kz$CIk0`@T8F;f?B(2%Rw;D-?B+Q46RY~p;k%Pqe`#`-Y0Syp z!ScR4tmv^t+GK(_-n#a`!ZGs7lV!RcW@hRG<3YMm;8*CC#U88XKjy@lcSfDc@PQIb8lamhbKb~C=?P`ymEMI=<1Q86ep!6 zQ8o>AUOa8D6)mlqIVZdSvuBCoh+lZdy;-O34B@_t=Z0O^M|pK8?V7e7@|T9*9h^kB z6+u4EM7`|M6LDHn6%sD?m$W5ec)3B#A@ox)Td)0_3icu0)`Qur2IfrY zXoZ|BmmWP1-Z%QUB2TF@7?6r)#L`Z89ISn`EsO)TIzYpj0FJqf*3bV7aJrQ?v#=xug);7!V zY(6SRIEK5+G^Xx3D*kWxhA;8_?37hXRid(@U`s|?>N1#&LB3%0>VoDOMm z4in(JtSFmwXrzT#q$;MUH6keM;+cxRnuxnnM;xt3gq3?x)=h}pJ7@mR{Z37D@(KI} zz)wgQq>oK<$2C4$==LoI{GRakhx&GCaT8y#@lHvP~Oj;OWkswCAwFk-kV#A*Eui~Ao&O+u;E1kPsWS`4L^Hn z(rE(J`X$gGj~YEH#s|8yYSy3{4up6jusxaBU{p_Q&eayU&WBLmH676}&N26=+d_pc zdli!M8%CFZSUI`}*f_{H17rhJp=?ieSO$Nc=d7kFI88KQG}icIMaX-Y5dq{Uc3h^; zx@dg$l=YwR8=Ct`<^HIXnov&!Y zuX(s_vv@8;@^^XPtW@aMQsV`k-x!%37+lE?rYPxadpMnLZVpDjxNCf~@LIF$d+~%u zt-48-1`~dKnM4Wx_cC#lvMR08x7xv8WIU@L75SxgiHWAVDhWIkDyF$zv*R>11)lrm zjH#Z?STfu*gm!Ru4Y>2s6`h1;*|tR>y8Lh8OO!hZOZW`>$Lzmd5UkOS@MMd!Yp&*$Avr+m=RRDX>3-N$*g-q;hGHIH{ zhI(c$xnu{B8|VtLr+&uWp~kC~GH85GuJJQZE;|MD*6jUT6r6~NXIV#QH(rVN*pR-a zPcDmhSOLu9M+bnTsWUb#Lo}S3Y;PEGDJZquIyp=bdbId3-Z~w+^YcQO`_9^rr7R?8 zeKQND{7npo2%sJThxRQ%CH&+5bKXit66A(u1DsYEz*s=-=$sg+S*YcK(00oIalgsc z6@&jXVd47q{g`3NcjzkBMO3phR8+XH4X#eUxOmk9p6=wFDu6eyqHJm4^PPPS;v4`qy#C4c zPCS`C1HEvfJnubW{SKC;7lxZ#*dDdxPib7akfbQjM~S!?X6i_DH^+B2ffUm0PZ)uJ zLj^#>8|`}^<@T4PZ|Hlv4n$B_0FMK@J?aSEe5{=E3)Nld+C0)?p$!=4xWm2Q9Up(F z)?VG#-@M+>Tu@}C|Kqb_aU;yH<*#ZsBcC8r&J2^pic?)C9KYoG}ZGT@A2dZt}RO$GzL`E5~XO~$^e;>Bq$>Qo!$4n z?CW!NcSjQj?<2ZBDluk)!i=!}CTDglzFXYyktkM4VLc25soN1ZPRYY)>y&dnIxgv` zr788c*jZ*#fi24vUmB$l;Weq?&42e}b|5gO4jGXS7uv?3N19|H1gVf02clxhi&`7@ z4lL-x)dy?~vd(_;_Ll7(&hd-w5DrAhL$hsf}_7_1gG_vpdo zu=4_e79*UiKh6TQpeeLCWuA|JnnhA{!|3SnBik~E<^cD(g_ZA}nH%wO>*s#(M2IH#Na@As`S@a!0jPezd$q-YA%Q3H&w#b+FQ}Y5d zcwJJfTujwwm+`~p{KJM2q4@WIk}Dqxr{L+JbV#3jR>4hU^n`1Tby?~I`9r-0%O-x6 z#PF*_f0dM#Z!RyfUs6q>6;dWmty4H`zHpXmpFKx@kA<>Cg^3LQ&XL~zHZ}Q|sU4sG zH2bKOuQ3XkY$Rfj8<>>WSDhK(u)HQy9G*f5GTmIYZW+nHFPy5-)QfXKx~4b`IYqly zSB(+4_X_?rQ;dexS?a_=gs7OnVFYnKO{$t+TR}x;xrGy*S0zr_%~*W;=x1A<*!#|eU6*7cj#-unSi><@4BqA~h;JAS zyrnbllmTUXur4BhnXYRIHyiNBOsHJIO!mU!6|-Dit^iGj$%sUsd-5s>{wnaCZ=R$E z7NuSm@kY%CK!#;;dbk?+4kUc2Cy}JveCL+}N<7**;E4 zAZ(3H2qImO6%gbRCI9lG$9l9b3AVQ}!}3SbnAQ$`qZqYwk`Md>PL+)~SDG%iEmmKQ zW-XncWG?-6O(4(vGwelsLTijuxT9wbK4O1N`|=*O57HyH>&}Py{tK}oBwqPae{2zA zJ0wYxt*oI@C%z1k43yyMPTi`!`TxO6(y)1Z-c3GEyc6CKOGvQYp$Hhy+yWj*i zdu3Sjv1YiC&}M#tfnq%v7v6+f<}V*0%eQ?OEl0;?9gX7H+tz{^^;%fH#^eIYB;_50 zbM_bg%1;Jy3Co2@av$ouxDm+vat=)zqCBs7qypo>Qh_~h+Z2Y>_wc9f@qb+0X1g@( zPzNhRL{SIi)XAc02J6>HZG&#T47(Ynoh(tJIHdYKi;tdrkfOH<)VLWE%Sx*uKFB3d z5z+FF@s?}gI&whV)1WEIJ;M&RiJAJfNUBG9V;I+w)aEVWdVehI`G5Etr4IPSaX2vF zw1lNxp3;97@I2!A{Z}0F_fa3Or~ZHi2BnUd>Kp)37K2BMQ}TnGAvAJ=!n`lj)BmPX zpw>gibs*DY-_I^$mP`h^U~VDb(ynZxMLpYx=?HWC9>>jQxpm>1SzeQf%e#&0gVNu`?Uae zH-}f^%a3Rt9<3};cq2jAO-$1!E4Z|&XP7m9JGpv;kOE-#^9zN2&GSN)yFNQb7bZGb1QF8TDH6d;~s z9bM5|5C_PH7lDWHION!5tvcVz0f-cvWREYB^>Q{@L^oI{SG1n~wO8U#e37=S&~DvG zv@w!Fpj*saTh>@_b_^9ZSya}XlDjroDK^iPol>%Z7V1*yo6uq#399Gezc`v;_7aj*qJIsJJeb5P<#cWmkxyK(zbS8(Aioz^TK#!e|FdTZMRosIyJ-z)LPx|G$U zS7;u-bd!Px_y!&ptlBe%IyQ?2J8H26WRqY z(8j?R~aZz@|Kf&PR0HDv1dc5S02HpwQ|rBE03z#$qDhw+)p?w0}1u-+7wtm3M_=Rk^$BLb3xI8@EaXXdH(vi zOhk*pFO;7EW;}sAYJmB}>46N}y?S@Bgr&4DMT4cZ^_z?M2n*#+JHU|oBvFKWr88?M{y$-YN`=(_6 zIc*HOP1CE3=!Ql8z-l1y$HsyMTf%}P&?3uNUgFiVTpHT;tPE}n5W5Il95lJ5C>gGY zOr#|23Ks6W#eH~{KS@BS1{53uCk)hDi<}}80qLy2+8q4m04Qu7A;0?*v9_LgYvn(B z5A?-Tmke5Y4WR+*?$%nDd;-{q2Vdw`<6vxMBVok`3$(QHN$odF0p``Ue+w13XxlOa z7Nb5n2O#7GF4c2dPx|zaUK|5$-x+W$88FT5KB=7OgkH$sxR7vZrO0P^&qh!c2k zm<)wyPjy~ED?8kF@7UeqchNQHys8%w>|Lq z?L4u~&m&_2d-oV!4KS^u#XhNW5c2R+ zbV+CM-`4R-#sAYfcFh^kJ&mY`jI}H8C#F!26~Hz=4YfvH+24n+dY+65@P(f5tt>!) z_WU<1(X5kn3a~^y5qb9Q_#8Ey8?N4DU`lTYgE*Oai!#t;O4C1N+5GqDf z6}_wZb7>9A0b>U1VEJ#?NQupIuUs=ALMQ!;~^EJwO5mypx}Cs^;)vd zu|i_K;jev6`}wA7pUv6S?^csXEjBp`Z1N(MY_(u|MmT+}93%`_gHKMVxl}LYwPdxT zAkyIRu)c%3PiV@t@uPzpVJDOeGn*}8Creol_3v{!b^d@;S(CP^OG2XbRx0{G-N818 zu6uRAQA$uV|VMKR7i=9}2CkjvSj_-QlzU6VqUboqyxjrN$F+h%f8bm>_80zHxg6@cyZsE|>75hx>@+<7uRv#+WP$+-xYv%eo|;3$0^ z)Ftv>^0*DAKut+;%skmQ!wNul-S_5w4S#tkf`ukOzWipoc>eZRk6znc4s z*;iG($)jH$be}+SH-sxTy4@Xha9-kKCBu-dIp8l3GEB%V{}9&Legi@me5@UhBa4`Y zZ)Oa61+i8i8UMcL-Se}*1JQn6Sk=$y4>Iz9nLVt^6|^0@+P{3#c-v}3U#V=wT(ama zdP%Npuo+#ba=yvzv&_j~MSFJ^Rk)K+okR%L^83p~aXhdpCkcZLQDYGqyv1iNfXMU4O*$IuPB$YolC} zXq>kuSB2XT3sJWL*dnxLS8u?a{y6JGgH0>*YUhTVi4Qfo?<>-^mq&<2Uy*XDZ-?p z=k)(xFw+F~=c%9`ba~k3Q{|KQe1j+e#stYx11ryWm<-rNC-dxEGVmI1Nd2bx4k9jZ zLwnWaooa^y!chMB$-n;rcgxsp0;!*2Bzujl#EU{ij6tyls6k{Yu~5I?ribG>DPTSd z6jG2#2rdf@V}8l*OW|*aM|`G6t^{I?6ba(T`b)b3lXY!nbs;1^;>nkbIE15Bo9;8u z_-LQgnpKa!M~BxUBE7S6jfW=g@ws~8SV{Zm1;|M9!2f=pO72>|mC%3GDpq9v6Bop;kp`Y4mAi@JuL1>U)a4h;;sV|4yMxJ1u>o zZrCl~fV_%21&}BxXp~sd3oV(_%OUo86x~1!gNYHE6jq*{dd#{|EgKjy2-$8Pt@Ms` zJ~-cCEJpD2I3oA&E7lWU9V*L?-I4yCi?DFF*Iy6XntiNj_|AcqN{eoBZ@I>m4AqHf z)2FZq_^^$rKpiA%C_Fu)eD=lJa>pHgkA|@M_Xn?Mo7RN#P5kd8ncfw(jK*>e0GqPV zW8L5lmCHe*phhrJ$TJ&rMMN7v>8Pb*&dN@Pto^A>5s?s7YFIHU9BaGCzS5Vt z5e=8I$Z)PgtUBj)ozRyL{q=NI-c2*?xpIm@vIC~emT?y?1?yqm3d9A0q;F9lL+)nT4&`B<+zP_x$ zTh?my{T1Lrl`!yJN5C*-J6$8WLCI(%fIqUx=OvD)aF!=(0TPZ9JC0R8b}%uUs+nyQW2R@y=E=^*a!Vm-&MLw&@KUr62Up&LCjY;K2A#J?X4Cp z_u>`KTsuG$ZJ4?`aR0)-;qk(WdvN*av{UEAW#?2NhRjPb;k9OF^n4Z?7Fs8JQ7ZI# zeDW`lq`Q4JhemwYUV!=OFCQhnGlOnhx}61P1g=BV<2y)Q$EG9oZu*?CL#bNoQ~GIbuMhnA=l~^$!LG1e~@# zS4NttKQ)7u+h=e`E3)L1nG&ZJrJ?&r0ZH?x8P;eBtaIsR4E=xK4NkbIUF(%L%40ZQt>&kT5B8i_#2Qllj5}l*B?@e4eJY1T~29HD-Y;)8v65y(H96*f-%=w<&bBjh{%(Bc>DB{lOZUtMHE>_=3i2p&b*0Kf33b4?1J+RAYo6uz9%07$HV z$@F|vho$g-#`VQpp;lYDzEXNwxsO%jQ4<7R(5SlzhUo~0$b%j!USiSu1JZ@G2r#Q9lF<9#Ee4a%Qp zjOlUXt?5daJ9!aowM@G3pINLgStQPxUaE`XT51NsrvJ*WD)<-;bZ$komS< z=kwx9FCQEvH4=~99zNXX33}j}qXZ!&Bs zyVlFGnG0uA$zx#Tk=5`M5Zro%PYwpgLn#p-QYX|e@7lydBahI&3f5jmpTr*P2~Kqb zB#QIiNjp5M=MoQ&nNi=b7+R!!C=?9nD62D>j|DI>Can+6AZ8c$wjk`5))_Dfh}O?@ z#`Z+(5#3L?R|3C!{UNE8xexi=e0JJf{;~nXTYRnfF*Iq}yx=Nj$sVID!F|0)9CC(A zj!KCYFYus1*pW9OHRNfS{Vl(fZ2_i4*jDBq|Nn9J7GQBS-Jj?{Ac2q|0fqn}I0U!g zPJ#!A00RTT-Q5WR5nb8+38c&RXyExe#aoo zrJCcM0#aTmdt##yJv`gY`rWnst6!kaaEG!m&0PkYeKTu})UU%S-8$zHLzK2(Hjg8- z-RU6F2g0FsbWaR6L~7)}Vd(x1IShLa4G-Fl_3T&DXyuhAlM8(6Rhu*+QPnpDceQLb zm<`c=iQW}R;|nQ7O^mjdGVcmY*j^C0NACJMBO4wgOm0K+VnL)ofX4|exBEOrgXVs` zdsTmmr&OODQ6EwyQN9nus|P~5aj1^vJ+SC6qCR0;apel2P;aBMVBE#`7M(|2w-4zK zUd#eGZ9Q0qpGK5lL;EL4@tMc2@Dse9kiz^|zTD+yGNQlaJD|PYVqCf^mrBUoCtD{Q zub0_jw&2E_&u{dHlz&p8{Xw3EyL)9032QmEj*1C`)c_)J9Jsks`*#aT4EX%X(ByN`o)_@vG5D+fg^4zR8( z&r|D}tAo+MQuOGkYVW^8k>Lfb`C&@K&FHV+wFkr?93Q@B#9|m4J!J=g8x$dd3ssq) z^Hn_v+_`GrJiYV~WHq$Qx{@;A5qipI?0VmRN2FEtC65>mZDVk?J=MVqQJ#!wUlf1@ z_<(|zcP_AN0k-%hbbEtI6H8B0g+tla>UE>8G09sj==veF}%K43vZps0-TUp z-Wh1UHT&0y`|qA^Y2~=}@~Z zlymUCH#|c3&J&4=-Yz#k?JKjBDfo{wTkjg>$Og?V3o*T8C~9kEl~FabiUnR%n}U6M zua+jiz%D+z1O%c)#y{u|pG>toT(LjJk0v%+n7a9i6^pWNb`V;u5Nd56yM`{8p6bR@ zeEa4yvZPVeF%pCLbqWs8lf>TiAhyS3jSrgfPM>Hc?qmddLylGOL(a+Ezi`IBveJ4Q zH$A34zJ(?3$ls!0aAk1O1R)i{boB#y>knL|j8;S4R&lTH>7)1$FHte&kGZxJA~N3e zc!DHVO30aoJpP_4fW4ALd5^Ls3R4#-h)ktswcwz9tDYcIKT)z*JUoV9 z37Ev-C=KhCZH-yp-qqY$62r?0NZ21EEyBI~foAP~Yi}%J>WwAh>%>F0F`I>8Q;wpz z_g0fMUMEY|7?d7Vy4`#Gxry?lzR#6O+r8#`A&+V%vtZCIw~sT7#0R_bR(o6UGop7v zKfIrPFLM|Y92YvxCj@4bWaU>Jt%w*F?dQZx&J;~(*TdL+HietEteb}*BggVhAAarw zee_T=iNH*c!i>7@4LHC;U&c>y_>rlmTYkIzNQlo}iCQ=HRyv)r@OrZLPDUGqmRi!@ zQCXB`)p7;=h)4J0lin*yX5WNn9tE>F3f_JLacl_V&X?s=BL>IsHp9%EKe2_U;c zq#$f;;a@7cvOmTlDe5gm%l`Z{!*(&5qCRV%wep;>CMA2me3KI#~^jJ-zaPeD`5LZc~b5x~SxWl|X>a#Z9 z6^}lG42o#D2i?a1`a#PHSHl|xQ9Q8(*%;A8^sj>s~mcc z;xz`$v&kPck83%B6%QgKNCj|wdFW?&SmueDfl2ZceNwq=1CmHKG)Rx$%;yaiFJ77m z8al?Mp?i~QGdNtUPnr?+kVS31KnynbM_AMkLngkjpKW?Wo3fx3msblc?fsUV6iM_B zXNUeZ0;VTzR+4keiPcS!?UGbnY|}uO_Wl+rL2GkzqppEK_jPf1*!OA7xJbZQsd#+v z%Jq!){uiOXv?S!ejwCfN;MDa&Bq2j;c_S#6%fwik_4F~s@QR+L)3KZ>n)I)FhwFD3 ztfV?0-;E8&H&1Wvsb~=9j-#dc8vN;aiF#u4JI|@PIK3C|HBl%Ta&59tP)Iw;YYwa* z$h=%5=^>BWviYp{J-Q|^J3`2i#VkrmhG~=g@mp4_AqD$uER~@S1OzxwVT>|jskgTFj*HKfyz@BlmTaVH_ZAjAAfe+97-CWcrr~Htj?!kHF&)9SZi9ipzB)| z9CYs6%f*C5)aLMp;Cp}AB3!|yi90Sqz=rVmmM(ljD=w6GJo9IHvB@{EH8RP!(@vr$Ie%v`sJHYzree$zPaY@D?%P?n)XrH8$L-i# zTm817+8EZroA6eN*t3V7E5^huu3KO=iw1SIQS4v&AJ1Ty+dQsH5{Dm$`t@PZaGjI~ zysP-UYsb1nET#MhF$5n|N0h~6Y#B?d^3v#1o&{Qqn57=90$B9uON%7pdXS5+=1iRks@JFhU&qVm3Zs$1~UDelc3u_bU9=-YV)c9a5TiNnQ- zlZDb76Vf_OKb^j!Uenf|J~SN=ho|@{n~KCP_ii~;kkwP%dpA36|0;hWl>X5^65a)~ z@2@*`sgD`+BOOUww|cthfzM{KR5l6COw)XUpO9=%vxRFR|H4w7u`uXwhM=fdt`Fk- z*9VVV58-z4ikVj-T?oYRZl#9%)C0RUkCqg=l7U-$Sqkag@epvXakgYtK-h3KZLZ-0 zNuv$5VGDYR`757O$}0}LR||=vN5b{&&%?qT9BRtuUy1(Cq!F7Xt6;hO!vyIV8j4!M zm+<=yylOvZ#Ea<}`kUFS+rM%V=zrJD&%V1{5;uaD4o?mih^AjCP)}6c4BBJq;p$~4 zARY@1?r!~b1)y{JZOJ@Y!wu2NO-j775s#uRN~BlG&-j!k%31K}^xshENF0rh!$$Ng zA1ZNF4m(#aiY+V#IxD1X)GNA~Bab<;i5Xv8wmOo2yFY?fk*zh}QBhjSmb~nQQ8>);T z4eW58$KFWpF+rR$KqVEUyIG>CAlr*0yYJp*Lpg=FPW7nl&@BdDW9y}*6G3aVA|hw| z+z_hG3$fSVEioNw8`Z+?3J;%7(t3wAJxnzTx?^#J7Z%LiRNXzvhs>%ekrLS{Nat`YDH#4#A)&2D>c`GCqvEmk`cOLm z=<*ny2EVrfl-9Whn&mCdr?TVbLySUVa6Og{_xt6zssWPG+l1v=?`FS8waW&E34^wk zZ{}P?m%ilB2rj#F=@KI@Is#hCKiLrBl6=h0hYZZ6thfl&F4E}19>+JU3F}&8;>pcZ zOAa3Rx|IPJt5C1v-tLOs8NyXKVPvAOaG&_%jG}(MI;mJSr8E-m3=s%@_Rd*@%f@-O8*6w^? zhwJvHTY4^Xe)2adey3<<_p(KJc&lRZjwq#DQevdfDm%Z#GVJ@@lcwrNKO~_~c|*~H zNKUnp*tFK=eGhQ9JffH##uX#AwqBZ|ByPm72xi<3%elVx4+r-(G zeMgKdK(Vv|KqmZpFiBl%({xrU%=(EW$o#rh4bVETSE*+?;vYVR@Sd0+<9hV3)$gYf z7<5M- zyjb$FD(x|mO|KD~|0aiQ=E9T_sonm;Mwy|!W@Frf=#SZEj10HzO!}x&DmeI!*qdi&k5V(Nf)O2r{{}uX@_gdrOvoO+wfT6`9#3P&Y zJEHZkBKR1D69|H(;W#{YMDh0`l31@+rxHC$_%9 z$#Hjn5kd&yGn{JD+Ip!6^C#uieV6<4fNyOZjAn|dc;^XQuTYs+Zv#dc!Q#GK#W z*_wYIq-%(M@zK%xo3Xj}IxG|$O4vAV8M{0djhfg+^4)fgV zhHAU>L^UxHp5pu%zFbu<#UE>_o?cwC)k`Hfh9fpzNO(2%131*mU4nX$3#t!=6Q_|+ zm2SPw@MECj-LFp6Y&#DIX1ycnO~X^$d+BBH80;;?V3#R)W6Dd*8~4Lm{I<Evlz(R=4+yFAj%v`GqXP zXYiLF<-9wGD>X|TR~OCF@ZIb%z-|vyeKVCC*#vas2tj_q=CBnlhxhl(z&z4IGttiwp(SRnVQb? zskIx+M$Id4;j)fDW-|1`c=ya4f}p5H1~%~rn)rT40y5I!zcp;fv>a5jaZBWE;$|FM zq<(&eSG@+z9)Tq1JH<{Ei$AGo@VaSWh8$w%$g7VVg5E~+azT!)9nZH+yHV60nNY&k zN4iV>=CmB%@1KZ0o*2)qEVdo+kim-y#AuP#nPRRV-z5!Rdt~iP;4Kqq z`|y4`W7Z#~O=G{W=p&4@g=g^;u|yhzBiS(3Te?*j-tEz=V(GkkG{X;p^DE7=_vlg0h>Gp~v+Cpxvb`H65jJk>q1Xf?C#vt}@c2RFz z-bWnX&SUfSFPi^~376a1Z#iVy#9}aW3A}Nvu(WX1F(%}EYx=gL9IxVBYk3N9;PAz* zd%je!*In&gzWOnZHZZqjJ(Me?qzOvt?0aDHn>G|JDQEvt-73^~{MP7;xS=kF@`O`` z_&nE?ygFOdfmmkkH51L$_r$d?UOiH;py1he zu-?Y(shUk^@_yG` zVB@~@Tt4{4;h<~=0)4N`OR*%_Ur3-RkEx1U0xn_rbJ$je5R6oUf8Eh8RuZ@JU=DbybSrg zuQ{o?M6q}vJj~~70e$nu=FN)zJTCI>=iia{o`xOc-$a6#b&axov(u%RULvQw_!j$? zS=Ugvr#DOR&*)#n2MI5UG!O`(XPgv{@uk!oUr$T{gci(i-$2M&aLl?baX-Ex^?J8y zF)?CfeTyMQXhF`R08+xSerC?T)z*Dd`V2CJCl-6@>j?sl{KLZk?7d|+MCMge%mcw? zNxgb}5S9~oi^oVo`8X-o$?Tpn7l(GCK$wRqSot=GH>%lmmW^^NFm5dP%naTx_xM&F>^tUxJ7DYn$C5V;DetndpN zg~4y0;}l7g0`ieWgBT(|@d)!|bb|!ij6x)m=7Qd%k7Q@XGCTV_j>{$el`+hc3Rk@M zp19xvjf`a9<{n6;w7tx&j)Om5#ohg)r^YK<*fxQj+)ZCz zVkOm#5NnwVtJtmPLX)nbaTkekf+ic`rr{-do4JE? zG+=1t^cU|J(M^pMLwIa$(@palyNpn7IrVb=d>C7_be4j5(BzmFLV4>4rhK~dacNl8 zZQa%)_1pbfJh6;+(?4}S z!U@4khzZ3IW#x+od-|eyH1y` zKJcRD^!D_Up;U)PqB9-t9rsHToVX0xI=|d|HRJqFm3iMZLZ)_6JHYMSs@tMI`|sxG z?7oMIg@~)kYC`x}l85iqgE>o$lS&7axAgXpxNSCUd8_ zhh!o*8?4u#H1o3WZA|MJybdRqr#CJ)n^%kN2)*q6#ol$FRVJnFI%CuU4X!bZ)5y@? zS?V^aSN*I6IdXHwFVm>o5kam!+4=?%$g)yuxjC1XOLgpTj2o7R^1qzHr}6*FR-bTY zcL%98Oj9-P3=aFGyV9?Lkf%-@<##e`8?V&XK>r0>3Ha+QT(n1$TgSpWf2n87d}2aA zr+%Ft;CFSxHf=r+TfzH^M^a}Le!Z&x)=xG! zS7IXTYvmUd^p39`X-KI;KYYnpKM5&Drl$)kM%y1G)1EG8E+Nx+`72}o%z=kci(Q_I zjnaJ!V}{6!wS}3Q=F>*Nam zOFm#A(y(ltb4ioXOik5VuA~O<~*gqZ(2{d*7&C#5^olMl&_OI^n z|KR`c)rft3y#GscxS$~Fe}EMs87uoQr}96z|6rEr9;Rw}Poi&FOn{2{N{KIOa!$y0^#2**-e^1ALwHJU3l7L%IUn9DWl&zDA~AGj}fE z1lFwL{zBK6_K6sbZC~fJ;Z6GZlKgrg_DsM~3getmY#;Qu%r|h1P!4Zh>n&B*=gpMc zLGirL6a`ZR1V$kox2flEol01I8%lm&hB&Svm`V)wq_7!`xOI)_!RF#fqD{^G|0tL< zvSuw$n}1`I9gj{N*+(X3uIdoEDXuNrN9opC z{$KvKL!-u9$)gXECEWTtSDciV*Qhlo3*6nVd&!@>U5`Iv5`1^$vtU`=#0O?NQC* z8k(;rtucGE-4o^tdre3uztef=9?CAtPXCV21>yzb-P@4L#rvttD~Aizz0A%{chMn_ zVi%V?=&ON;S62;BSM1IBE-u?k&5eyaFxY(NfkR!|PG{q@+jV9*KeF(!XtMa%nOfM_ zFGV+Q;=`7vk2TC3tM{80p3|Mx!(fYoz{v!AHQ<_6pNWlEQits~8XLgbY5XFg3t)D! z>7el;=m2m>;sAASgLAj8PwrPRTZ&5g_mkm@lJpm=P5e0h~* z?6S38b>vI{5dOWS3!b1O^~IfLqsAi`Y-#?k5nxdYP||`ewVY}EE3@S*KmrYS%T3uX zwg1$5JDl)bn|;vH)^qqOe$j6!>BY}8(HB3Lc~za$ZUx<_oYOA!cKb!Tr|;XJvY&== zmw8^vhJ7!#8h5K6;=^@ivTbOBnD*y}$EdPNp zdiR_TkLceqqB|c3K|u@#(GtM}`4YVl|ByV7A0y9cyJ>BFfs*mBS_A|HguwVcVLX0h zPHHE;q|)Q{{YKeFbM|Y}_jChs{nLc2f&;Zk~L6&+cO|SuwlrP4>nQ~;c>=? zk$<=hKtJX3`42$dGhZ=41`3@hl#c>lDn_*G|6W&#%52m-IDmIrA@~kl;8=n!{NMA0 z^w6q?5Z(VL%nQVtBYL0o0oCCH;w$@8nsoUJ1k}YT0OSYrfS!F$&r(#Bk3ZWnGXqO+ z;l-{l1u5ssMw#bk%}s37;&ZaMc_~x_OJidL`x@n(!!GpBGYgj*s@;zkE5}QhN;!&Q zb1pJQuU*cS`(F5R!E3{x9}ORU61y1uU2*q^m>8+(Ax&I8m)zm7C`_3YP*thz39W7T z9LCP>8zypMZZ_DV7T-7zYXAt#cd}iI(foPK$O@Ss2-6ne78gFPh~ z^Q@eX5z3$AHppw!Xkzl?So_~^{+Z9EH;wlZrB#UUNViV2af~om$)@QT?U#)HW7bn@ znKtiVn`2{v$>|s~O-IS37K$%IU(;E(SM3+{rTCAcFw`&zFVUo9G|;3-DqR%9l*V9{ zmp6BhfBd0Kx3NgeEo@$2vR@y^99pDX+t6!TjuOT2g0bnwZNKf#_6Wr)mVS*HYOZA? zJgATJ`=1zxS)VJ(q5=BT#9mvcuyeg)7q+^oJ+;DG^}@j-a1CUo^1loDzX;&}CS%Bo ziO;`n0HlK2*Tq9k?B;e&_j0H8--hdJn+|04nGQ(BM$A6%AB9JIw#zZorGvF?RYOPh zMTKJtz`C|Jm}vvS0nA*q9oysSvC@9FM*oS@wl$j5SE!&LOU%;a{yGD0XRJaj8Hjp5 zG;d0J4A4EOU35M3xDMHzMo|v}HacroV574ExDqK6F8aPB5ir&ODa%)eoLNrU4%AKBE zr*LFWI%fllGlw3#SL`oq_*5HZ7%YNoJT!0CYsnmjq|K$DZrDG~9Uo(LzoNl24M&*i z9Zl@FIO|3>^cpC)jgq+KRL8XM{aOVrCy1JrzS|hfJu%HotU-&Nto;;Q%VKyj3+^^v zDSIigL1CnC%hE{q)xvDNKdDMCP?q|Zb&~Z!=*Vnz;U$Z(Pt2Oen4Dx#@e~d9R19T8 zs(+B70&Wnhlirvz^`3kWOFp!Oq04qF(5@#!DX26JfAk|tSHUt=_{Jde+mJXmPhlfW z$}F-!E4Ook#SD@qLt{?WH?Q4BwvbppW~QwlhKE>fh)EV>QbFBmO~FOmIFMCQ$pkAn zQ^GWDi`~oY_-tm5mF0grI=*J&GwiqviX3=Gti1SsB$)1{>A7!u4Dy!;yJf zF~R?`7*CJQF4njKy}Rs9BEgg(-J8*nDL-QKw@M{*+mzEN1+lw6@NDf^#)VW~wpv9} zy3+@5(FW|z%4zZ8;!4UAb9Kmlwq57)Ua`YdZ#F8Wf1A%O5s4gFsB+FzOZIir!>?de zkHwtCC`3z^poyK-DZiMVj?%=YOXsz-S&fIB_~W1D=0ngM_1xZby-9>}OX@|g{8Y1< zn%8T>#b;$@u2z7SYQD~rvfX-JGD$US6Lt_^343kVN3)r?rL0|8Gqg3<{dYDzHCJI^ zvJ;zg`L6K0v$z>d(5-gp7HhD)Et<{c!k2@7%waF#qSR*G9oy(zNAAzjna%}r=4lrq z>EJS9fx^aKD$}3UqFDR!HUq4?YDMO|ip*@V zfit`s$VQNLP;HR<+$Qx#&_A@a`E+x`YEosU{J7~)Idgl4g%hJnQ=Qm#tLY{MrY3e> zo#v$mb9Rlag(emgu&MwTkxmzSD%d9Fb*$g|4(v^TFJLbfH#%HjwC9@|3AG^8tq~F5`Hj-HBvcY=2+OrG z|A$9l+%k!y>th4B!>g?v1aII2{QB2GHmRS-Gr4LeWm=PX>_Pv{P8;o7Kx@*vtD2ft zX<8U>!Pc;FT1U>j;yc|l_npG#RiB+rrjPFL-YR{cuG6qjeABUw8#%&4lQIzO6H5TU zjUyCq+B%|7Nyqh453nvfqAw~0#Bkw805ORujL)P2X^LJA{OfaIHI)lNP#APHzmC-bYjZ$ahq<<(bznf+*oK8PX5hobCJRm6z=x?H zoBEVYHaM)D1+9a4^`-gsCiRH<1v*L-qj`IBReQquMW0}Ht;V~iYIdaamCKOh(&D!w z$8*OM8i>V6lPhu!pJ45B?!&?jY&30M4W!CHP1>;?<*I$~9aW}xO98|1G;;wO_}D8V zi-4E2h_CT}a;0)bWC<0rrvuedhS&fjY-ep{&*byg7X%0}Z8N|I8xSHMFyB_Q)s_~S z{o6yHI%6+kxjx&G(h&A;4jE+CIR+ z5LQ=h|9m2BQsmEC7YSalHLmMog<6Tg3KYNZ3HvW-GuSs?nLuDO4C2+kosM8YdVttO zis7e$kX&`vsKpzlog7%Zb_0qA9^HzL2AFjvZ4o2C9oq#l$d%Uk%5ZW8uYpPVXC)v^ z9gX+-Z9xqvnrQxYQFWu$3h_3=&$rS#1emM4>#Cry@ii{aew+1jM!js0-P_z&?FKNIJT-@lQuA8!Ap@eOZ20=TE0MSt&(m7}s0iskLj7b0_U;c_U7U-!1(k9HD zxdQ{irhPUF@l2crJ)7Aq%$(&^1JDjLsMuUxXrQU)5j;uLxq}f4?Y|WGuuuTU- zo+=JR=)n$AYTA}jP0z3PXIMoDTE1@Lh^AfkCjJyu=oTSOn5+w^dU2{qzCkqkt-5rz zbv6dd04ZtPNn?61Kcn3NCPd+$EwlLh5a&Bm7nu!r77W|FYS2faessm@Ax4t$1c!(Z zPVGJzCM;29R zQ-Z6-Etyne?UW=!UcUcWKhS;lvEHASyZDu;y0}P5xnjE_E}FkaFGn?;_kla^8N7Wg z)O=6Zb+T<-qL)I9%3%{7Gs`1s$=6=gPlc_GDEOQ0=-|S5tw#1ev^)4WhVHpVDM3CP zH;sWG8=3CRK%eI8v>dEI)G0~=d7c^?NgDCRjrZ|t9vY@ku%e96{_%`3(Z4Y3cxn}p z(y^?suwV0s0OBM%{=xiFnSjEP7_{=%dw0!5)#?vI=#d^fmaB}r?WWh*!P9gjPm40# zPa;owy#n5rscBuPZL!IT4ky~(M8{U0M{&t^ZK_r`{s(`L~AJ&exnUYyM4uIoyi zRIWH1HWnsIAT5-Q_IlXx0$9`DE}hmm1ADyw$^=)f@xY_g5wwRjhYEH*{YkBvMIl zT%U*4haF1R&@b1eZPKr6mfS6MKZF?6*B+4}zZ`)__f9ixmGjJLRU@yHjrnFbxNs9E zKw;%Ptdl$@PP67F<8awPsCHIo=e{-S;xN5s}h%>dz={&>U{yQs7oNPw0p!@!7!vXLo+lh=$|CHRP@2T~L8x9L|z`QN&IdO>cl zR|4|1f&y-m?YU*Hq6)lvW#6?puyJ4+hcXQ(#GOl;c5@bUv59TM7sTnN-7D7(YeZQi zt|r!Tj5tN}4}0cg{28c_&(hs=HY+cB6lTRs%my>kg$Jcv37hd5Y%q>UF01TABDZSW zVwZ04lbs{Ot6d#j(N^8b)hRH~r%BRyi`auB-Az~9bauOMq;#nKvXvflZrWXM_|)|{ zK0a2DXDzVWahh`RZuCA*81E%sB-k{xuCsldxPMx>>d3YkVys!s6d%>BndYZhW4Y0r z#hNRtEEh)^55ZucEoklyTJp#47f%{u>{Yqa%u|li*}A(>RpjH$rB0|$>~e`3W~keX zsrS*1S!+u2-%xOT7yUQl-JM;v-vX_FXO7N*+gvq2j+KG@eeQP!g{gkCY0byW%y1*6 z*?8Wfi%FV48t34TV4Q4opYZ`6QT=)J>LHp*tNVz#E3>|6xk5dKH9M}+9s>9H!Z_XH!St%<=zGvU6JMEXQT(ul)nW1;S*szBv$uR`AnC9YAEiUJrqm1V zE{9R7{gBIHA?M=NYw4R>+GgJyW%Z-g{=BgvUViz#g2?rXP}&0ANYkJ$r?o_b=;{CE)3yl&B_~fX~r7wbtZJj9rG~J-A#^JO(`eC_8~WU9G0T8I7DC~G}7tZwb+;DrMR}o-nw&hrCoTfar-^+a@30jv+>-p zeYM1VRXciwpq%#(7UGIR$EHQo^YeDwsd+BT=>ytX>FxoAO-Faxv6&V&mq%?DAx?6T z%T7cJ|K4>@9&2$)O?pzLOoPUa7GA~RPR*advIG9^C#!H4Y9_w8^9%2JMgZ0z$Wb2y^{<`QQ9a3;HD7ksm$zQ5fg#>K3U)}3Q zlsFaZTt}3j!%{e^y0(}Z3#!>&+)eK8AgJA1qAD$|6Xo6#Pm25W@e_(o$lR1`~QslM-w!G?+K(fn~KPn^cGB3)>CpN)*GUyuR%$lT(brN=ZQ~EeJ(X#{5 zq_GVAF`ACe(~PxTmU`PZd&OH{C@o1x12Blbr))+NoYsH=1B^=%ujk@a0!X5j@k;)UqVn?<{ zJBzvR2bD8Z``AUT5Wwp#w3jj|Q-fxS&u)rWH0-#N+=X3rUg)g~Zy`Q(wjus`52~$o za&Mu&rX>1~t{iOghX$QtANvpH43x=`;giNWB;er|Cu*5qe)$;=CBVokU~t7M3S2e; z=~p$$MZNpvcj-unqV=&`%a{&D&JY4Fb+m9xH6>NmGNls+M$=YDDZK&>7|MSSo6s|J z1fT@ga-gW106-Lwo-0?qoQ5f%7Bv(tqm&AUgOMOTpAuliJ*uGdT3We`rXO`@K`{cL zHiT=cqDD>s&0dLvYZd*zrav&4r0uk>-?K8RY>G~=00^zo37>KSyfOIrlvH6%?9&OS z8q@idG5dj4l;5l*f5QfZbB(M4yrdX`HDQ zQ(6X_n#N&d0ImZ-@6h@n>{HO3{!cv&D>G^+gDdVI!EJW{Q#H@HKWQU1J*%|z%oD&w zqpmlpWkRRxETxxI1x`EqOouZ587IrGuyZFqpbsa40jwe0km@9Kk~T%3QqmZ|c3ZYW zpL*>6yMVr=uGQsee-EWEI&Y_Eot9pHLQS%SexRNSfQ)gM#vwK%6>0;JYA)HqZO>P$ zQH(MONco@Zt3uJT3fKguD5?VAPXwS`0(m?1-9!w|qZ{{oXn%EModn-%^YqCLKSFn^ zKM{Zdf=RW9dY(}4L<#LcVrzSR~qIr9Gmm~xr-c(e8eNqWTag7IV!3S0qjZ$qH zZ4Rxq-+)DT1Ml!^nyT~Zg?0n-=yNo1Zkl(daC~=#PaB7xidN|5+jau>IZ#RgK&N^% zMyOartxZ6GbTkeXegH~DmsuS%TZH@xWd)ke)SKI=ve}dX-V7&V@cDAGzkzt@H7HI21T_!G%#oa z?KA)Y1rIA$MPW6oA-1W=&#Q#Zs|coQNnY83Gn7&d>Gx2^w;=&*wJ4qd{LUO5iYj4w zHv?izVWe|4k|7?c{ajF)X~Z!jq|<8z;!~nYoC3TUgmhR1tQdn^Em3|nqy2a$bncbV zX}6k!Q%%98CMcJeC@PwnUQ@I<2Zr=;h76x>}F-v3^Le>tS}2HRS5a-WI3m9Ka^}wPqE#;hbu< zq?=zIexfV~e9YTn)6h2sFAeSF0onwYSUNH?fA#!my5~=3ta;oClzuxU{~U?G*vxQv zH^zTPJgBDceMwfu6(AgD;5v{7Cu_Ud9+h2Ozu1ueI%6c*`S#Q`G zK|4@&L(gmjw_e{?&SP^w&WVK1G5j#Y%5g8#SVU={*OQZ2m}C_>(Ztkeps%8*dCRp( z*PQ>D@P)n2uSCd;S$DP)?bYdO9%{GXoW!0zulq1Yez1p{R{dXt)3y7?r$xR^lJ^JR z!I4K;R)ig3EwHVZ)6yt zQoY}$MQQi&C+G^-NovcqV=Wa#d{4jAJKk65;REst{%f~9D)OfL=}nxrW@?$wh}zL= zg|meUmEWJOpQUAE?1)j}q1h+L$B&w5s*k~GJ8rmCyA+Lvrr^VJ3MJrDl2wQKDTeMImMqMZ)SUNSt*;{B?rzQ%}g68Uv3_xAAYewUXmP3 z|6#A$a9?4sQiIOT5dGrK-Ntl4Nj#t2FNzeKw?+@SX8Z8Wd|PJXQLh>Gi}IkIJA^C@ zaoZVV%VTwCeM~HBH^X-g*WIYyo z{m?=A_x4~=;S|n`lW@8g|HiuhKig^Bn5>X=j$>h<UfivgQNNm`0F901bX|A4k0y_j2tIp z)*ti$&=xclx?-gyRo-gRF~PKkSYrVi`JKEQo$n6D;~In>w3Q=-C^9fscG|SSST+m) zC#x1dICu_c1dtOPQbr(>kh^yaHJmdl2aV-x*lM3STV3@)d_d%)cd?xK(Jd2wR{Ju# zH~Cz5Z)JZ%a_Q_-?7Nkk)B9vaM0=)H@ytaM-n%<$DbChmTrDIa2nLz!oW}vzr#ddT zJXdOmiR1cGGK+ijuFj&Bdz+N(uYYRTV$o#gU!R1*@F9%yQGc=$dhyf@UPwCbq`7`bk9zz<=2p)R0v={;AyJqmjt!5@USZu6%^4+|_F`Sb2F0xp6CY z^>22@cKu;|tz$A~=9*i%Yv1gK?KU6jdLGxDW9G_RoD;5`&epU#-R0X9ck^y~5wE!h z+Z_bCfN8RTn@*?OD2g8`iZfp~$xCUT_`75=^NQ&4=DMukW-+=CG4ngTPwtE<-W1lH z3|H=rYl>xcy@lM6D*vdQ%ddzkY7i=wZk~UhHau?AWp}gy!O=`5;X6 zQa0Sy$K!Y7Vn*nMog&#pTm4?mi7UTOJi~1&MIQE$IH~`x)3C!h>|v;vwDPne@`_*Y z=)zNBQ%K7lv#(jEtB#7?arInpdvv?MEjpb+M6>-wBhWv-RA~AliDvqeP-m}V>59Gp zN$B0$7bG#EW0>IAKXgQeMERlUmJsfytWDol;Z~X;(?H$VWKcmQBqX?Z?05=bGsmR3 zqOSYn_@SL|Tlu<)VHS=Q&VS!EWj(zuJPIWf_xeFj4V3BksawlCr8V~-t6$G1MGc{) zrtwWW4{=UtMQeO(&6C{o_IgPIWyQ$b75G;MFeBG*$_d>ay@M-<*7pp0=_2~mf|h*T zqE;aa2{DhZ9{GGUAJ67@xf?#RpvI3MTMA#QI1f0{^6inIT%W|cM=i)$`M9HMkfPR8 z%AXv4oSWC+XmD~Ii+LA=sE)Yhf{4s8Z*e^675}blz-z?wr@lL-pHzFX7Fg?rkfNMM zvxK=Q^ZnTBw!)(|eGu{OPU*L}-AKRUAIt!F!~1?VTo5VIYeg*3vr)Oc%YYk8cg9#{ zd(@vZ5UmiSfyixaH10~*q~(}rZnPc%je*i}THnov-PZc7?kwZD03XR2Yb4BaTgUzA zj~E*}8b_Tk&bvbx`skONNs^A3lPzR^$0S2zl9nM)R3_8lMnRLC&f*9<=U*mE`Oe0R z#U`+RO>fAx_H;MC##-e)$#f669v_--KWQ&%Qd(&L_Fu0`J26Q&F^T!3K$Bs8#*t(r z1MhmhCgGg(p-kH?BrvmlZ?_WB1CAho0`&{zg zoB6Hz{%_X$=Cb;FH}{sDsyb)a-cuE$?$d8e^%F8y*_Upr^bX!ExWWkyR?ne9=OeJ zJQVl2a4sH7Gif{&%&wDz&jLy-r%R_|n$`yr?XD&bnnA1^wML3(s?nB{1~;MRTTabO zdd>QJO;RDAHKminrTJZ&MZayjPO+n{sOV2I4QkQnF*^r}+Xs@&8B1u4WEd;S*(=`+ zG$#zCcBuw6c9rI3S|`zX_?kc7(wy939L`~EuTFVQd3~C5p6;&oFqv~s#I?E&vASh8 zcOK1~SSnL@9_8~vK1YfG_t6WYM*hsH+tS-T#%t5!|JCTXq2@mHXP-(7PrKf{{sI~c zCM)wU#Z{H*b8ZbNgY_YUA%ls7iG$NYK>-E)cUebjYRvy8>UeP*kXNSitlLOU-`d`$ zt5f!`qyKjQf4L)+;y)sgIx5sCa5^xF<**DelJKu!@z_e;nWhJnS%=)!Tg2%wY>VwG zCwk7dQVeH3!N2Ul*|fLNow!CcMy{23=Wzz-k=j#z<@mhD&5Scjw)WB5s?|~^p~mL` z+!-s?KzS*XUSmJb8MXQHnsR)`q9Lwp0?npyDHDd*H+|mj)V0u_Ibr=~?4X)l&$yHs zBk2yl_bq60?kr)hb%hJm=4+Q!gPGQB7_K=}iPf9Cbj;P8+qG5OwcRGQiE@pTdM!3h zBOvttMG!yXUIZXq;Fupep6&HLO%lKrpy_)I8is zf7u?rH|49>jEU#|sNL;=5sYr} zlch{W20s#m4kGhw4GL>?+GA!F-dIe$u~9yPqc03qr)8>A%olzi>SIX&ZCQp&b`c@- zVyThw^jth?&ZIUQ$2fcJfVKWO)ySUUMwh~=a^)Ji+Mg_rnbvr??yBa%Ne9cd(b@`2 zmvi+V;YG%&q)}`95SJ6>a3SFKZncx`+Mfe5{8~OuARbyhH`TZ%DthODMfpY}5!bj> zu+iJ-_>e{;a#!h-c)X1`?hZ!YuLHmi*Fc|h)Dym*b7<%O&LR`e1+G?F^$v=5d8W0H z@M1*u(XYZW;gajwqcJn+ppezQaA7km3-ko1I=zUXxXqr&Goq4dz{P@C^>@ zT?o#tIt~Ci2vau4q;aAQa|+IYn&ef_{!zBX#e}L3lniO#j5{wQxdOMO`W0fyO2TCFtfQ!HZ6IC`7Sj_BSW zz|YeuSMz2T=h0d(%A-uHTVRE2b%(FSjUcaJTbgJ!C zZam7!TG=a2Ku&47<-uP|T&lH<6@r>MyV*CMkg_Y3-NUjIzIQ=b84js>eIE(inMTg7 ziAF5GLvwTE%=_N@kIQ%26im!u*QLef-9A_nA0c9Rf1ho`)YTh>%i1}wwN#76t23Jv zFyz{#ADv;g>4*FK%gmcseRD={516PrH_5B8W9u^(ttfB&riy4>@IrZ! zdQC75)QklxYt5nlpx8uXEu%iZmr;lv}> z1Yb%dTxRZmaibaan+7cMi+{q=|A(07^NBMS%#8mp!QrZ^+5df5fd~ zr~ud}fV_Ohcs}nuHy~s%w3(=SUUAqBway9M@qsPr=WDdH!Bpqxb8oiZzus~sBGPrK zc;YH|bAU8`?%Z`0I_uhy=mUCi=^h2Atfz9dkg&!>%2T~kEgDw_<&C_#=CH=N!r#G- zfm4y@y=uS(Qe3Y<7I$p(-#CrG3jehdayBw_De7}}IGp*hFb-v+f-=4A9sh$Jy~%{u zjU73Tcc|r$KG1n& zy1+y{I`ge5OiKf}SveM`@sjcY2P$V?!>sPqO$q&Ksad4x#7YB|6RI^CtvL{8(Z<-e zG*@>|?R&!Ae3YUUIXW1;XYE6zI;J|N8!p~iRyt>k-%f-soW2Ji4_MxL@C6oI8a*7& z^9!cw5W-W1^Tq_SZJly&IdB-i^wV*6Ck^*Ni=)b;1auHf(&}pQ4bteKAU6=)1wD$) zwKgAa^XgV%>=tLYlpDSVi@p=}G-E9{#s*#Sr88F=ZN^M);i6*WY>l1s_yK(r`i-}e zUWuyna#8wm?I`r6P6Xa(QFurAc{CfTHa3vQ^`|q<>4(P`<7J!UeqnPHJAh2p4!dp< z5oX^DY>5VQR()-4S#z?W>Xof6oH117X6Sj3K24|n#^oUz%h~sqbFE1`V0P+n6e>V7pmDwrvY(6wnnXG0>*GQD70?0JwT{ ztC+$@KdFNlMPpxpQ~~w6`F%HYEa7h(MH|J4udNxd5`KW1#7krG&ImwgB#(F;=EOYt z2?i1NjVEwx&K&WkGbM7tYWb5sSYx<`rEcngZroo{~M$^~`=aRQKo z-;4m)*zzY?d7oTZM^|hp$ub?mQHO5fV#O^J;k#)#TnDE|VK)|DV>7ZazY&)!tg&eQ z!u*L8mp@f!vu|l#Sw}7UXuxOl1l#)>R$bFs(XBmtnm?RKr(@Zn@9&;wrh%}%%+95V zc7+E`h^)$+$Z>$?T4nd{wL|HB$B+Cog9eUAOnvLDRZ;Gx`bD!NCaBh)fZCJy8OY=* z{oLL1wdt}TYV7wlpzCkO09V9{9ri5L_m?UI{z$C8t{nQ<#W!Am142ePdw z4{(CTv9X$aDx!%E8$)3C7V<60@$XIziXeqmGuqMi-N?}o5>;0sp5eAT?{WzFvE9*OHIjwGcJ z9T4BfR>&~e?<`vfepAI)#g_q?pJ8QPK~P(pp0cWzxnT&a(x#W=UHa|dQlhhsvPjdO zs{|k1Q1U}0Y@6wWH6{Fef-i^3?8E0>@M7Vw;4rK1RAgT3rZK~aMSNYOmuzDKNCWVH z3dK@JLROJm007pR4iT=O5emmUsB%ov)sU%({1b5MX9{O{w&`m-fRE(pG@Km;gD4$WHi#NT>lh%6IGxk+{r$M9k z4RR@V7X8@}(B>=~UuUMdSB~pjqIE8qV_1CHujoF>ZC~NCK*5VW3jNB1v`^`fHVyN% z0s)We5$RElb)}Y9S4M}6ZXiy+ANH%lUkVsh6JmW1Hf_&m*LuZV%?ESl<($Z=!&Ybj z=AKzxu_`IQMEC);ZHfvD^l3T`eB_g)=u&NScq1237fwzN?OJk27 zcJWShLpCNh{G`Ke_JeJfcQhV{-3y=UkbTY5OzP}C3Vemd0 zT39JMnQ)ZCgH91#OqG4)^f6%rID&#R^kO8WeL6m3Zg=o&nN4j&`ndA5gVyup zUdjZ_>;uh%?=penA%(^-1(yI~Mm7P5O=9j@4_!PanI{`yIL49bG}hk6)1yZ?%TVG- z2VBf^gy?tpvm(HHxrDrh%jQB})nB5|NoLHvRo4*uIs*UYHJm{t=smIudKm@85FV8x zLhFJ1!|is5fJ4tueYFGZLWjg@tYxu$O_ z6885(&Z^gUlvobWrwQ&lu-O-@qxHCBht&f%Q8Ng)gHh#lQi9SH`11e}n+(u+@7jGG z$FW*pgbH?6pF(S2KKa*$#;}@|E ztk!IVD0x&!Abq4{L}%bD#?X?cH{)gKE;GVA;A8%KBQ>jiWSsC<@pk3 zm8HfBGnPrQPQ&e)i86*MOv@JG zR~-5KH%k3w-d-%^tQMMW?UD<6?UfA@N9wo-FU!ArMNx!Bz`rbkvnC*PGa{mUz};W+ z!Zg!)$&z+pImardv_(#Cpm^LpV%o!jS-5-7A-Sh^$Dk!G1|-UXu3rGydO%JZ$Shwu zlDswLgQw;8F*F_kfeK#wh-hD4hnwW!2Dgsc(u&>z!3Uy7g$}Yo!2G z9?kSF5u%uHcV2amnNuBmsdk`2Ro&(X1bs$SbQd!Iw+8fNI`Mu+$OJ(eMYVIDcKr1i zHO{lDh^EU5(h)~KNqNjyqJFkxg^|@OoG8Uf2)>@vt~x2&X&zjrABdw`A|Qvct<~nT3!}1^r+Mvm}D<0hY3JJxc*QG{4e_2MnaSIz@Y?G+RF@D%k zBCVVfs@|VH^V2pE+rKWJ;96T~V~upV%kJ|4L6vT=og-yDU(!bO76)Y#w1 z1Yk|WP|SfXG^_E_9VBXKr>mo)cK{Db49a-!exa8R2PV%)V2?ibPt z9r`jKEO>fZ7|tYruA&Hww=ER;PH`Qw;kEAj=7+51nf7bBqfZP&xp$S~^m+P1CWsw| zA7ozxoK}Ag*+;;bQJg~a9uwg1u1cVk*WTRUmf@G6J~B;f6%F-TL;aOaFPUF_TE>EL z@wU|#{=h7FQI>yJl}do=I>+Oc;BI=#Kxyt|B3)Yg0_Dcp;LgEev?-5Q`DIvge9^pk zV^WyFZXP8vxGK*Gt6KG>^qx_aZN| z^X@a6+RzQ(eUXEMfB=^(n(oK%7^q~zGO=fY?QP#DT#}$l;;8big-oq^ysp-u^ep}# z;v;bZ*KM%I;4UV+w0aSVCh_`SA$!WX*^Zp2&29G+yqu*2b@qe&p($gc8s)bySzj=2 zjI>UR>Bx*`BME*1YJVseV8E2xWdDjVKdb$sM{FC}Iu|#}9K2KccI+B}kL-h~rAC+e z1`7t^1whKFjC8ES0bVi>u$Oqa)nMTqLXT!msAO7-n}JqUIFs$kv^2{sbW9#AqB`#6 z?@1E~)vlj5_vBz(*V5m>Ur5VGZG0j>R#?t&lLx5jq~UT2u8-}Pvz>>+cmpw{`I~X* zW#h&F>}&h^fAD>g5Jwcj+w{qwr;3@janch!GVt)qQyo3yT1}*%J+%)WwkE07^fgfy zd@mZIq%R}Mbc{HRkHt4HDvd+mavV1L0^_>1fV7I3x zF^u;e42vy55)5%eb$MpL(a5LfxXpX9(Nf1G{CrZ)UVFsl_(@Ck4V?`)4CuZiAk~pA zCw~74%SPUVjQl6@hszV4AF6*M(C6kP9(N0@y{^#`M{HS*FG(<2RHLd1rql#+s+y}x zI0bZzEGCLHzTA7NAz%ghAP!-7u#3ZlF27enFL){YEGjFHfcs>pTP=5uy`Ar)^mYM) z+c)Pln&3%7N9P$_bf>ns zL)-)BVut()A?+EOn(HeA*D;(5r6(}XE}vmf=%owhDMMPhnbRq?1QXq12~RF@p<*Gs zlhsrY6U8YXa6G!FK1LrgZas-~|F8vn=icSvBEBv)o#C7^9N&~2=w=-1)%@ioGzB)$ z5~ErE}Y50Jk+*w!f$uW7qUwn7{z!)mB{a~ zQbCtcuB2NNN3_;-d;88~8tLd>k^wvDqX&XC*16fM9r~r%#IT8l<8#)xu}icayG|KL z)h_u>{GE+Aq*FKBTwGBH4(eExE23YbeDYzRS&c-IArTx2BYkQXy@U`~U;EO-tl4(%seQjuW3TNT(c$4k+nOMCeYC7r zG7IWg+bt_V7eAb;Q z1BP^pe^cca&ce_|LqkNO$crG>wVMR(UYH|~M)$#>;I`j*iSZ-(55|kDIQc88m&YG> zHLzlBeOOTGDSY|UWDyYPKcORo5MrB`D8$CZ3YJTjVEMp>b^&YBGeY(|42Qg&NnWWf zU1mPH6n%C{80?fbf6bduHXT)s9y%i^pt(>RPE|D{yo9npWla1 z$bgy?nvDWX9*k5QEBySgMU{Gjl%>+95gP+v0hu_aQ!JQH9U@Dl>8p8ZW9xHXRhH}< zZ-%{?^*^aMHXlsy@ve@F^+Y_>26IE~Vz?LH1AdVu+en z0f^*?+%d4BAX<6B$k41J9vFUqM9xo0o^N6q@sKXX+7Mplzpo<4QIdRt&z!{Fh3l-b z1;%@4%ZaTm5$ekx*`k}(P>mBNIwHjnjD!HKvOKa(OI!&u?_asi?P}z{>@Z?|lCDtV z1`&Q(exEeGPE>kq`1huXN5(LUG z|J_XRzSew6Re$~*_KOEd4HMtFwj*wC&^H!q*L?LYiuisX_>JaPY{L_BhLvMeF>ggB z@zfFKe{0_$RXK4KA9uqm>@Kzn4Ay*QV3OKc{*GQxj(T-n<1Mnaq3-&>0#iY}$hA=0 zYW0S5Qqf@67ZE{e!W!hZ6Xu`qm6Wr6a__5o8&RsFHaQE#_wcM7Cxm&`JrW9;sx(HK zrK`w%rQp2bN8m@$_~nFY$>)e|JI>F>`5RclNUcg-=+sJFg;TaW>!(&&&Qt2Nbckok zQBE~t`r6kbKbK4|H>te5!;U8VJy*Sr+{ps<|21;|YrOicQRbANJg0JWpx46uEqw3_ zJi0+nuHj>si(^KNjaFNGx0?p&P)m^JzYI#<82XmtXUH71d{-%7mmBT>^U7WhTT`jh@WNOHz@KMPA8E2bA z;Va~q1z4Rp40`0a9E4E*Wx)>MvyRlq|W6 zbCaf7ES{j9!`^S3z7M)5_6twlbY1GqS)}mp?Ww=eC=7C9ZHjN{zNXZpEOrDPrsa_c z$iYQ{;E;hHF>+dFHQzaP6=4#UWnGE}&3BAN`LY9F8<@;@gFlNIemrUfxW6+)8KGwy z`Y0*tnG6kGGaX{DXmP)z!C!rQJ1X&HfdEIMOY)iQJBhGv`bR_9?=Z+hA5BIe@D(`{ z%s(=8;o=3QaN-3GAd=s(iTTOIh$JB?6U z2qD4@ND(tR)R=+>IzN!g$w-XQJ{h8ahsb3`yg)%B>7x#W_hoqZeViozJ!9O+4Dm+^ zL^O~nji{x|XDjS?rJyfT? zqCYS3eVqq0EYWcz+efd~Kd_h;O2gGrl+`~D@G~eJ^M9-1Nb}VOD>q6ab=+mnu$7%* zo<}v=Zija6T2uVG0m*fXr?^@K1sPuO@t}7R0j%t3I1tzpDP6D!= z-6rlA4LBxaL9|jLf>SnJ!7Z6*(?%^pm^#G{TH5)^th{IntgTd@;@*;ngY%@C@&%l6 zqNhYZM73c%UoWAqkq)oLJomZeVM5b@z80VgCkf}zm!Wz0GI5N-2mX!>`OYBpohfQ7 z|CxNB4dwL#GxU21OjYZ5Nt2(yu(39Y54O2LG;(MAUQJ;28J(ikj&(2&Y!g-Nj7rYl zbj4i@584i^yD<_l$?AEcRi-a6&5C_w_-X2K@BvrDe`96=Xq+?jC{zYKlVT}5Wt@Xh z?@o?ri8zT4+VOq5*&q;>%rZ*-7zVaASf5rMdaPFnFXM;#B$U3*Xyv!ylV+f^5(Y;_TB>c}oPOao zS&S&2$on`9RLX%3q|bBPRBs)1J<0Z&OKoOxiT5!y zfRI{WR&(AZWXo~4BNV07iS0%E)ff8$o#IiAU(!*nzWzbYmnufeS+zJ0tgA(Mc8*1k zXlF}3J@?7zQ!|cnxfAGFPaVB3Z(r~$=;Q$ts|xvnb%F#*h;+v}5IbmkEo8kqwKr}% z)xy{C5f#0l0b0^HIv0gZ9lQQ%o(v_u)mpLrk8^fyA=NIDW^@_i5RuvofK}H3t&YM5 zAb#hUCx21j=~KSc%tjM-MmHR}_L&956W;eK7wSrj0r)`+#f3a(v?tx93b-$tN&#-x zb6!k$29d3YKhA5RN7`H**xOg^vms*5Io(m&6yo#>I{5;BO9osvH}_;~HD-yFEZx;{ z>7jiCPpG^lm2QBBI;@!5-E#Og;qmSC;$jgrS1b8vD*e(_q_F3J)tt?tTESRdl8m-I z^hx9}4;gm-sP^BH4ETBY`Nesc#6?NXh0M>jOfVija;F-Jz5^2Vgs)aDWX5nK4ylW8Zs$(f|c;!bZ?Q$Dqy^PkVQ^I zzkVKLXTm7L=ZcBQMt_KwPctiXc7q8gM5_z5IAi>!0?|q&y7~>%BkQ2o(ImAZlc4uf{Hnd`UVL1DBH-N^Rihzjl>e;^z3^01h=VML> zNAK`*Ca;c-kRm=^v(LP|I_kf9D4W^}E8C&j<$c}d5|)Zq0TG?(KR&=z8ZU z3TW?EfHXNv9l5+LjQa=m)qi%gss0^u{IB6gQp0~PQ9057rv=jfkL5qn%;)WYBATDt z{}HMD8?yY~+6ie%5ThcA7=Z};Ls(2nOi6yN?~(kP_)Yvu356n>F<$=vFA@eow)FK? zR1_6WvYJ_D8~(+_{4Y^30E~th^l~GeWBw*ggA1p# zIo4=H+4Qy!p6G)V&~yDv`0OMA92_85hlVd+$8@oUUa?n4Vt_2>-1cG*tSQqavU*q7 zw>Xn;o2ZqmlCZBRNDN&$#Xhj+kc2ID%Mr(Y6<@{V>1|Z--c-rK|dw131e=ujq`8wLA{Wn9!U;Zi$f%PUtKKM*29pz#I5>2`jr5XCA+;^_e4 zb3TWNKB1>OVFL)!A22X*{4g*PFfb%AFi8J6fZb12n_P-$`thyJLX6buec=z1qNorX zePwHGBQn|@Yt~g>SWEIlB`knP8O8%+dbRV88>byJC2$p4l-N5+x z1OICgM1&MRTns>@hLKYJA}Pv>UK5GL4N}gXcB8{xZ<$&)TN=AR()`Kk*$*zA=;H=s z!aM*$J%I=VQL?mLSZO#v_z8STHInGdr5AJf)*mQH^{I9dUZ5bhx6_w}QWO7cM|^F2G;+f4QTINw3rTzx~ob{}m{jUKj;lr|h3AxFaw7ohOvkP7Tw5!6-<5 zgWMP`JfvQEJ4}+UQDs@`CwL}?mV9NGe2Zbk{$*%Obgx(^iUg{pz`ShG&P&f=mnx3L zl2`b;%YtH>a^qNL5b;02XM!XUU^o=Ul&6U5Gh~dH{11BKdCU0!&;nMJ{d4)t2>9>S ze+*lnfgyd_|LMZ>4ITd-1%eU$|F(R7?Hw4Tz@yzQudsg=KWU+BhbYVcAhkPK-4m`I zA&Ks~ra0da(|Cz^f5L4@Qqo3J91P+TDR!I8eR1fAW7NR%a1^ro)9**S(cMVdK$^2O z#-rDqzW=XJq2~gE$o?45K@pw2PC1`u3%V)el2N!O{ST)cb1;;?1lC5iYd?DEw+$(1 zHJWg1H46a$$ww9!J*{Ri-0>dtDl>`5%(StDLxjNn%67cvtdV|-jyPOB*RHYCWHx+S zxZ^82+H)up{tuc$U>aSfHKbp1P`_C^+aMK$7vTUuL0n8D$yoCFwC-2xSqxj_K446? z-B%gmsQpj}eSQgLc=(iPd4(!$=6u$C@vdgAPP5vr)Sw4y;*jB2!nL=Sh7%^73H$?I zI5XrTz!{cC7hdZee^XQ$W>Tn=3#$xk!IwhLvRUn!(y{VH*Kn&vby3H=mAq;C$pFGG zD0;G>xm5#E*w1<8EHD1)1QuA3Mg{e=MUIQdU78!R^uG(~ZQ3_d`>k4 zAu4^Z0DMe(|qHw^u*b9*4kdxZ85Z4vtvjw*JWp>sEMy9+byE_dVx zyCD_(l~@Bt`ba}-UbxbyK>=wvJI~|CIh7l}T3a;Eqf*bi zmV^cKCIJa6RDf;bKs0uhGl(Te0Lbyuw%QX-)>n0@QSSc3f-xWI452e~=09D?qU9zJ zLf^_4HcxkO-<3R#{}TTSF`%ae4C1GchZ04!>y4*kTDYYXBunewk$z&dm8c(nmnjgY z`4b_@`YlgXM(?T(he+ucyLc~Lk^rh$*IB>vuX#Hnif>55NFbc5B!>Gh10doDdSY75 zB;TJpArhUZa6P~i-R7I(SJW8akP)=R=u36gTJ298r({mVsJnE$3nhbPbNV^@2LM5( zHI}>T9iVi8zl(bZ5(a#2g^!3Gx@%1ZVelf4S6X%_t#cVukT_ypsha^6C)HEC=Z1M- z#UT)nf~1rlqO1c^h8Lqcb>XL2orWl9JvcR|Pdyk1U-Ow>KGFFXG;^(!)md5W77ly& z6pZV;7Ic=avNa6NYl)_xKl_HB!z`%4XPPQ#FJW314$?6OKdX{b^0iiP0C{Qi5<(;p=E^9f=f9{L@SNNfurP;Gh|K?{g@+m)sxvV0yu81{LH z=dx?Ji+P~c>NZ>riJ%9&CiL+^Ihc&=_Q^YEJO)nA0F=9Reh#7H`FdSNx z3H}dONaUX&!p+6OVjnWZ@XZS+`iO;qa-WwM-T)CXfe1(MI?Lc)@Ddo8+{{_Z{CMze zzBsw$VI6v*>b`x;ILh!94aD$C9xeyy5&d=VV9-+}TjriLKe(psC1F;+P2EyGxDxLI zs)B04F*%lbz)puVdFwcX;m~G-vH_|;;bsH!P!mabu`*hQ7;)%vBe-wQ2I`%CcZc8e zW76|y3W0m)7`HL804weX)wNn)Wd3Jxj|>pzf`^-SF2tSnLVIw5B)|`%V0(uYl)8E< z4{LnB$R#_=w7I=Mp3ye^2hsCKW~I$bu)xpK$OIY18b5Ms!DuG!tBIwzd+t0Diix~onAy>F)d!S zp3zlbR}^yS)Oj={Eji0Ce+ym`b1_AeuEPJ^>k5+uwUZu=J!9Cd3FEU3X%r=k7d{K z843AY=YKSaZF(18qE%VZ=_Gchz2mhLV#IA?#E}npcj{6l(4`}7f{nxVwFes7!gF>n zOq*t3|DN)@(L9K<)jr;Dl2U-V1cssjqC^sXWi=Dokf7+&E_yR2I;y26MtssRC<);J z>THY;5-`VX4=@;FQ~@NVA*}DkZxkT)LGMVcPDTHa{92*0JfOimAqi&z%;x*dK3>Jf zNGFM8EwNn@^Yr`8CcG_PJ}NMD#CrbD2C)AHW^eLGTo}(tHzfvQBk35m479<>_MSa; zhwS1Yb1`DdWEtx`=-`*aacAv~e);H}g2V-3T9fpbZTdj1MB-kh8O}iUPllV^(aM={ zP2rDoe;es7U*(}Erdc4SsgO@q%hC{-DX$>*Zr8;C0#$G$;z5TfCb4sX@ZgAH zn`NU$4c)V*2jBxu5qa4=vA8Y~GoGHCp10CQYSu4Kg?F#`F6qLRJ$DtSf9vlow@G16 z3-Ui#tSF36l(HD~pL8^==gi9-_ik;jq_G`y`H83DPc2k(AK6ZB`jL;?CC?DN+I$0) zhpT7pTH$-w%I1qn!coMC?Kk?q@4LEUIYDS_fA`v8-X2?y~1};YO7EW3~bEr3s<_zApEcD5Un@KivcdE z{;*gS;i|{muy1{){!ERB5`2`+Q8#mE0#@q4Kx#@&8A^LUE?H`4>60wpiFj;_rMBXg+hz0RxAb%HR18j>OLft#O&gntU{*NktV&o#9my z$`r96K-a_<06Da`Oi)YCdPPRi6=>sy01_@;u&+=8N}b7br-h#EWX{~@AL}+?4HuZUbb4tlT{=8C&hH zhkdVROFosu(318*a623@ydBaPLBIfC+SKgV4C1c6BPoMZm) z*m&E6ZY+uS3E5ER!cW6si zpLdmY75!Ew2v-j{Kfc3K*I*AVwT*VTk&o{y4T-efcM$FYlm9SME^KXi`M&w+#qe6o zFkA4=ee{Oyb!va!xeGxyghyJFSNX?6feXOWT3Xb`Lo0J?ykgiDQ2FV>f^R(839m+e z=UD#sGzlwrNpHFJ?w->_dBEU_SELtnabXT>Y@rGCKTf*6dJ=beC!;S2YmDFZTHY(d97bAn`s5jl3{bKo-()4IG|by&yo|0T+WVKkcldIf zRb}15WWP+nwWrqOn)8Lg$e-Glx@8sAGh@TF5fh{|GM@yvzZ+_m#l#a!Txj`LbC`qU zx3(Wv$jN17X{GK9=gj>m#mc488is_P)-;8N9}mZxM&Czqr*?>tOBi0BY0j_^Ok`W0 ze;Bt$FIh(Q@$naZ(=qj-=t8TiW>NrtLtrR$m-qB?kLjCKnQNY@tcc;M&cHFbA`G#O6^c~Hxi92|EhX@= zcXX2IaqDfJj|eJa&4k;}l>xXp8Lxd48(4u3-$K1WB&KYFu|}(SOIfbBbQZ?+$rGXfFe@lg@_bvf7NUxn$a(Wc002GPf!_rQsm@#BD{FwkF(Z-+qyUU%Aos z2rzJMjz1iv)z0UWR%_RHi04ysIPb(WdltOGHh<&nYP6Qi5O1JGJ~#+#v(_pbKFP&> zVP5XoZ}n7~a6pK3xt5m!KaUX%{czv@+rjVl(k4otx?(qNsucaRT~P`&guBzR)F8EJ zxI=!VPjIHAsrh`OmU&^5>uLANrhBP#6Z5l=|K$M}lzmMj0K|rhI1h{KLsS6PM}S)3 z(u`xWP-!=B(rJ@dZ`#UAk$Et``<{6DQ<#kchbjQg&iz;9Eu{Q=jhq_G;QSdn46#b5 z#cN*yu7XjB+Gb^O!lqMfE1~wS2>{)$pO38M$;nuJD7v<>izyE4=@N<@Uo2J`mOQY^ z=_%i82nWx0lM7UW&0UOBzLF}UlQ(@{`u%OHK8Vn7ox(N&hJ5P4p`)Y44JI*x92Kdw z<(^iA(wy2Xevp4)a*6HQt;Q*OqF9`{xmjGe>T8pE-UTI_tB%!f)-UZnwf<+EA9{^29enen2bz!&D+=V!W zj!YTSBkb-G#b%}CST-SiRFmqel4ZLqW3|8FJ@IXiYt$gi6RhzBotWwKGh@LC_g)0^ za9!`{c)ud~uuUhdzY(U#Wl^&^R&Z3fjyy+dyWjdJ?^oP?mfiwF+Crln8jSd zYN4K-ol|Tji7ANm7|G-hEOyci4AGVAu98+tyC=5l35sl+%0fxYdaijm3vJL@Xq`L$ z(k2<$mAvwE+SHnR7~vx*K}5Y_WQALv*{1o!?aI`uhyq2(xh>^agZ&f*icp% z>}=}7Vg)uc-GbQc^y5NnrLP{iUHTWLglfi@XTL4Gcx_G4+pC(Rsu>D4E-awg39OnQgT^hNaBXO<*zL_s3s5dd= z*CM!CbQ8GE?qy1pMJiXpT^J!k^QL$szoDjhmnAwmJtt{r({qP6xH~?w%cP&ps_%t< z97f(;ecs68mgupXWHY*wdf?5SbI89>I3sPdfg;#AUgqCiHHUBLBYc(sswL>m_6AKJ zrbVUDi%-=zy?qT22)Gj{e|N1~V^TO&##ywd>2KyfZQ?d=w0AU{VS2LzZt?8smwh$4L2u-8R0n~JeK4_s46KKfn^FMeCH2mCNpD!ae9LX%;V_TB$u;HxJg}Z{#t-{ zbr+lGdHS1a%4lr*1&j_R{ci~xRaUHK1XRT3b|4`H!^v9jydH>a3c_$BMHTTZCxYlG z;M9I$_VixgVNger9npKouyd3w@2G=F#NK}nPww8*{%v0E9e3~%SrjZmDzy+>s>-wN z?Pr{=5+AqK&slRZS5Wh`){&KB^T0eromEk@s*3~51)c57vlNWrX$xgS$ z3h0dtPF9?1GMLdla_a4b zMAb<|G$he}-Jk_1l(GZTq+64H+2I^P@8;vLt<~OY&&AKp?$Xj%gTlLBoBg(f#)Kg} z&XNQL&`zwPRJ%Y9G<_XV%BX2up>SKqI+|PSo2?kCg z*@2&2G_w0NvOBdBpJ|P*hku+j0>_3Y974d^Lr%RlfC}m6F%BRKTA|6Wp(^P{6zey+wgmw9UT)BX}LO+Os1p-<+b;8TWh*s z(`u>WMn8KjGY{te(Y>;gU(Re(fWQ=p9xIZdqWF@ah#?>|qoq;Mf1Ngd+OqF)fbTOv zNBjh%xf4tEIqefFIt)4ZSY|mX;7<&g$ocuLit0j4nuBazhCa?~7}k~50=cXKs!{_8 z9W_YHnqo3WTJ}!nLTqg@SDuN!>Ll1OGiJ3vr<-VyZaIZKXFpIjP)wgokOgM@{c98; zYf(@HN2+MyMgW?y+ngF`S=IOaqX@?4btNVU5Bo^TJSqdYPv~)n(Lko*u@+>xqE*3)pnrl z3og@;Typ6j*MwDf*9@@Ese2XnxTm@va<~#`_S=1^1k>34R9TjGlmhAlkaz%F8jy&f zjc2Mb6D_7tfK+X47OjpPM!L1E=BQcoNORDQ!|jsQj66c_3n~TV6(*%(h2u_w&cHK0~j)xl>GLM=NkNR z9mqeR6oAT_*ZyYr#}R;h3?fr{jEZ8X)hA=yEHAum5^e`)xG{}x6@m%#_Cut?eK%A zwRTNk`;c5Z(soVy20g%rtk4McYJLPt%Glq6X#!NDsyYc%T@x*|UWh8lB9*3q_O(=`0+ehv;hLxid8xsjqEiEA0XQRnlgZ75U6(ldI)vk@av3H z>&zQ;i%g^nnfXyEN}G^_nvhc)jY9!DlnAx1UTQF5Es9M;$vdy%$x~3BdO)3q-aIu> zpD|Z#P_`35X;qkhtKdCLaQgDUPntCHqSyf6sSBu5p>-N{8{S_B6V`Rr(X`Lgw69>U z=+uPhG%pEwJfYUl`OVV__0m;uV3ym3fcofe9NIU)h_xt%kKs413t6@M=NFcbzbbq5 zCths1cbK1Ww%nd6d2h7)B>dth%aTRPM+c=f@;4o(JL;Xloxt75P>j+tc%-tEx1#fU zcEo?XaMt+(4@0yp00Yx1b`R!4g8S%!7ze`--*-do=Taldds*!H%H92TbLn<8siDSS z5FH6o8kEaAgDW8WhtcuF*!9&V*30CxL1}q3iTqUZ-)F4{Vt#GdNw*Y7pmU&paNqdayQ-l{??NHyBo zRzZJ2u~B&4F}j^n?)iAmJt&!m_H`BZQ<4ukx&GYv!)07(Tv1ROR+=}xifSs_ntbr< ziMtPIufiLy=d{(sB{$a50I-EzM)bnT8=<+dPapPpt{Y#Gs%*lLK>pZO{>u;Ed`~?R_cwfyDjJ%Y9w{JuStH*nZ zxZn!m+`T*RE)cDZusFP|g?|WIw^!YF1RK9zu?5AStx%!u^XpQ+etl*?a$+}HLz+(B zT!O=%do|%shbfd5G^|L#GDFw2ak+T}wi>d9v`q(cB;d2BnQte=Z z#$m`$8A_hqvR{|<@*Zp(54Jdd<=k?J!F|<-uyz(2X9_B1N@`2^QgKt+kT3|3JJs83 zz{q=P(R4+})>cq4NRg&Z-AfUn?t0p*g0Cv#oz zrK59MS9AMrBfBT*g-thf`z&=_W${*@OJmhayK;GrUk1Z=N%vg!Dt=Pi`6W@pnOp!C zC83Hqy^16}Tie*Bz@?3q9bU5Z6-#5XppxVvzUc#|L0bm`a%I(6eT*OsBLC-9X(~EA zl$SzfGaODFh^A?DFk%_#3EWU*E}CmZCDFJZcaw}|+_Sv6 zh1=ti$>Zl#n4b_sLj4iQ|`yp9g$IfKoL4)uY}4FHZAq#-P5}Ah*uJ*Vu=q59wWe#&G}y=nvyh#~QAd z8)nl=H$#l?4F4BvUmX=k@T|KKNRW`=8X$OZcXx*%i%W2KcY-^?9fHHcVvD=GySoGr z?(jChd+*=xymxM&In&dig>b*CG8Jr)bEEp(&TmS2VoDAQM28KL+Uw zkMe+@iSyLY-Ox8d5*E7HUS15CXOTD;<-hX%F)lVZ2`6m|f3nADnM^~(J5FKyG-EjE`JNH_kSLflJQGah;kLeP&<~~6n3-3~tXQIywv4lT z`(P7sQuDS?=bloke)>J?qi{&J+lXY=zN?0|~;W{#UhaiI<`e~#qG7`S&$XPSs7wUfSez`AW zTcu5d6{MQy4`!V{Rj|Sx=m=T&{4nQxt1085|thnjqzvCiB>7A-DA~Edy9`wTguDLuZY~zeMmol zX}MNWzuN5Wirf3QYprozi|GAI?_XdCtHkXuqG6{L(s_~D+m&SgGlRn+a+!avJ^FH5 z2JdsblmhbMCE~Mux;<-ujg=9-cx4`E)OiDWb5_m*s@=*w&0hWVmkfKZsBdf=ngq0W zR~q!%DtaF-;e)c4Z@Eytz&9(U-VC>!VOxJ zc-@Wm;2(e}03d~MY~S;y0)UnY>*(ln+J>cMH*VXz?_Q1aB_%|C{mhk_X~2c}NbGf} zoe+t<|D_ObM?Cao1ZrJ-k4%ZnTlsa7ck{pKuuW3uzPAwkh|2_Jyh^1+3`8&pry5tp zM2|AZH%ONQl*lKtBuIrP`u~JMiKi{JGXJN?Suh~KuUJ?hDh|b^!dOK8G9cC8r$1fi(6__sWU{BRB5xp>RWR= z=f?RIBo!VPnHT2kW$|O2t+8#SsYt}sHp{c`eQ8X4>d6P)45dGOuC?#t`>_cU)O}1B zdvFaAaG5kQr>z0#EYs}keT1#BoWD@n019B2hGeA>wl$;A@jNwlBR^AX&leQEK-eCS zX2${xS(4__0qexU^7Zmpp@)@@8#-;PZ^{h#_L)@g!7>r6nRTJaT9!zUlNiDzzZugb z{j7I8B_@x*W|z@;N#*daIHVlPv;Hxf1G zi|?*w0+F@sx(j3QSpb&$umVYj4S#2Sk9p`cwcTstb6QV`OU8ed(KBX>8!1v!=$=Jx{*a(xD!-wd{5_rz8sL2ZI5t%U7SZFG+7? zOjCP-zo>seapFHzOA&-9o&q2s+bWB(pEUrT4IU{;u1_pD+` ziKG8~Q`PEKc4x@}Q2t7tXCB3>;n@-LGQ7&s?t5DV-Slo3``ms^h@(}X2Hw0%>A#=p0g4;irfZ=afFL+>=nEYTH1c0D zttE`u*^WNj;El?jV}7|6p}rxx;pWZS=9J;vsnsSidYEx>XJQKWXuyfZpE^)M#|m!w zY;DM|HNSx;7jN3dY~u?4x=Sa2H~|;}Avh~QLS~l1=nPThoo~L1cthcG_AKKA@x4z! zBs*3!T3X?wK^QaA%9@)RQI}~0XGQa0QfgmmCf!3JWq)cRbwO)}&xp&Xre7N57;8`~ zm-*EudPlJIE9aY}i~JgV-0_0O)zvdEt(Nx&T~YKJh2v0AKr(UL%A@6 z2;Qedk*#WBnoxfcDu1Q($1m3Tvm8z*(IL#7=N@;SWbV0B)Lo@%OT=K+uMesCr(^XqlduQGk&L= z!o20QOSiQ6Jx$he^v6^0kdCg?-5&e8)z+f=72Sb4!TNmQ{NpiugVqTxlvjieZW8|S zC}pJD?P=OAb$P0p6?Cg+{~Cxip5We6t%QL~sRU&9nR zx_>%`*i?E|zp-hJ!e%^b2N(9g*DA2Ln|gjS$Y(^KH|RyV7H4n`Q`)k0YPX9Zwx~wj z*}LwwQu!5Zz!kaA*PTC;8le)cJQQlqkLgB@A zW9`dWfuzsgC{-wlU*2AFO50564}^38xy(u!oC+Wj^h7~?3%5Fd9=+8hZpW-YFSL1| zL`Bb6J33F~3Wj^1GF4uJd*qVYa5sIA850(#FE`%SN&Nw)A-Hjyw4#%}0U)sn^ASpx zf!GEaoHS-zou+-r{1!*lhU@+Mp&y0gDmzYf*ywI^3UBdMPK3+Hf!TElIjHjd&I3H@ zU*Ip-Z&Wg~;qy?UW0h_}0;Le_uMxvwk}$iWu{1#Mo@!u_pbtfqL4 zKt@MuLC8_5W;z9SQ-_#SJJ=sl>dkf#1`hz2A*T<>CPN&;nfq00p3;)xneuWnaGV)i z9B7cEc5yW08KWfiSNEVJknt`pMAvihSqAUR8?qTpS2EmAcM?1e6dyEn_lD3BK$@*p z9kXNTFp<8dGVqkJL(YxQY#nK(_N#EL$9cc_`Zna#Y4XRI5mdvE!Vcl+oIj|w(_my^ zywaw1Fcp>MPc27~+Mwa(C7CEt}^X09!{f=@)6kASZ_b$7&U*;G4WhiQHl{rFy)u%pGZ9N8?wWOO*Ifv4POTSwFVrFDUq#e1_3S zSeGYmanPShGW?V~JN(^;#rJe<#rFkG1etCT>NY4OPyc{3vBSCT9ay~x?zlM@AGgpq1lZH!UC)frHaK7?r8-ST~+If$J&0p%(47fNASu>3R` zTGM5G@hfW?S6)$*)=pz3X?KbLM@4H z9%+7b;Tl`mOSEv*4x2fk{)zUzG}GhfC^0f(U0fjo>4>tpn13w~EBa}gHhSya_bD*c zqZo>ShJ^yAkd0{XoI%s*EM6-kQBFSRA2QF6{#dpT&fR-Gc9@_wu<3sCC95n^l0G7l zoK4Mn@l;S`1c-0K5QzS;BJPPbgvaPe3QEm&e~a>1ihK_x$!IXPX|S6ovr@RyTG*+% zR&TI=sx1Bat@}gQ`O`E6Kg9#LiyR&9=U3|j7svzgUN;@4`rsuL8KHwwg~WwzHw21% z<4Ksj8L`;hO54FKFc*jk> zd^D$F6ErQgYwsW^1}FKz$?xmdH`yfC939d}`6{!77S*T)bq7&|wL~m|I-p|s((7+% zd*(YFkG5LcxgqcIQyjzW)%)VoISXjfr|ww$ zc{>wP;)^z%Hlcdx7Orh#2qBcf@E*YH%B#AD+o+KF30Q?yJJ6LwPP676fN!@mUg5Q7 zWhbhocjbx`+HGzt!k5-=>q=V2!nS_+i;QjaP~scJ$El?5|;ilTzK@uaC%Nf=Bi73*pi%zr>usv+Pu=z zlKM3z_i=SvIxlEUl`8eP6AF8}JoJ9Da$yUy<`nS$=NK&SUtChj(c-i+Kz7l7_{U1Y z{wX%T#`y$8A(C4=rqX92(&l16pL@i4&8eaI2_JFMn?gEb&1foZ=rt=;G2%PsZ)zd9 zq>1PDTR%!!AbVl!^wE-f>1+rler{a71D!VOh&ca}v5CPEK7-XU8DER%5mo>1(PeoQ z`sHwY`R!pYuwD>dJs(Y7oDev*phCrGL|Mtyz#0+QNi*B$K% zAJ)2dXmhY-+R(&-m|N`EO{R{x?yXt&ZnU9gpp+sLW(y(`Jfp{OB zHvMueRy|(4HU^wHKppKyev@?>E?h=0>)*O^$iM~<2>LMN*KI@|nXDlO4rMb^x?@t6 z00|+4K>!&lT+ac;rVVw>L#jI+&B7~W#b)e6w#=1AofGl7&2v9)?EEF`*_5)|%z5qKOkhiYY5z(ph`-6BzXZ9Z3!Y6+;N_k*Wv@1DV645H99(bK6Yc^s$=~ z)$-5SJn|0}^j>VS^ISe?9W#@+kL@6De12a)gHEs%>=V=t%I`4VIPFU=JwFZZVC4%G z7Y5ISY*RGVXMHsHu}$Jp*>U?98HQ7WSJpZ4$;+&X+J=YqREPbVdA^9n`GlE{wN6dQ z_ZYrr3A~gP&9C|^!B{zkH|eFFihwjg1qXGj*{NxT+s+kU+uCRR*f`I6{j)V$!1apz zcXSPSq88*h0(Q)+$G>81(yL+whRjyP$B9s!@kSRjKjWYXjmSu(gH9XyAS1s`G*%U|<^~@~c&V3(A+miLBS3CamvQDGp|dFTZ>m@NtqGn8W}o}tgS&4^ptyEp%t53cyYR5Ko4l=uIoxn?=)1-p z>x%i?`@5VFtQ~emq65w3=O-@Sg3!>@jh*r=oP0^?fmY3Xy;%9%A6PI#qQoXG@+Z*) z-YY)jBTp?q6pemBNisPmq?>-`X?HE#H*@6ZfR{hhO241GOjoJ#0(BeBkO;M(a#&M0 zmF9ovm$pdStQa)*#n&A#+Mz?zfKPLJw6^!!sDgU?0Vw^!EhQdf+1VJHMBzJ*hiS(W zgzA>F=Q$*K(WXllM%JiX0_{PK&Uz>3M%3_tGVESN6vAOi$-7YDPrrLY;dPQ^*Id06cshN3Nl4m@jDk>uO1?Qi~o?n+u8E+45kbl#B$H2!I z0%HDd#ahogGR(-A#OVw7FXL+Ub`C=vmP?7=i~$6 z6aZ-D>>;_Cjtk^9)8rv8KA7SCzYr#22)~m;mL%vc8#QB(L8KXqR-9In3K6dU-H55$ zUxLGK`tjw_+b_0P+^$XMZ>R(-s#P@(S5rp2Y_^0rgVPQx7h5NJ;5(){&+W4HUv{ZDi$kBsA^81C(A>( z;yia>+#03&Q5pq&37B-#?7su3f5>szqQ$d`8xkChFomsS)#*5yPfSR-W}u2Lr*pbm z_ckdX+uv~b8N;cQ>*ki=SI}~qecZ-2nc`~?Er2dJ8W^p=sD&^~XbZ_w%IroeMKpZZ zf^8o(YiD0r2=&JMLt)zP9l3c%g8DR4X)&aY41qR2cy-Tr=jBm0j8_mi5`YwRTfc<7 z4rK=ANi|1#|MIWb>?c4xYGvlX2T$rw&D89yGAwmYbmp}3z+|7`Sl8`BbhnQD09olJ zvN!%0qSXMIPaX1h?3|fl+OxUt3q65S<{w`4@s^8F5$gWzi}qS%c9Lof!6^gKc?Dxi zhas{XGQ=n8JKBd}t9kVA?udkuI|{_sYrTTR69U=2ndc zyQBg6hR5Icw>ha69je!|seTmS#m8lTUf=lb7FsbT?82bdlGSXx)mbI8d8)?&zR+jL znZAT-C&t=?3h_}A{AFNbyUI*+=q2Gtmas%X28^>qg%hb6XOt!TEZZgdC0l(;fJZyNX@V032Mg`nBKR-N{*vF12u0SPy6~T`5fDfi zqss|?$O&`6@H{>;zU?r+r{0ziY2ON{(&ylknDV<3fV^(${idfAP_XUl@!2&RUsJJp zZI#WL?eXdX|E*qHMySVBFoAMTmY05>wP#Iq zedd@Q8@dC3&z@u%vjLe<@AKpGto=b(W3M1q(5!0VInd&Dt@OrDyeCw#na>N z55fp|V@3E@%U@FJp5FP;;$l1Aos$w(o3JhNE1Ew*5pKrb7A0?tdkX)s$9ftDUx;ek z17cZbb-^wgvZ7on*CgGbEhgoft(qt)3ih!%J}^%AZZPLpZga6Fm2!y3)uFGR`=Pv9 z*r@=3+&7`8U2}I$a4(TTPj$lhCES&N>cWE}*P#ncj z$tiMwz)A_h8anI_&&LHT5(K91>X>x-VIBTb`AQ8XA6%=WIux$T{yTVR?YW?TlO^~% zsI_im%%iBA$dy{@#c)pbBkT$4>E5&{B?IXvAq0)NX`>t%qG574f8yc%aY87(i^p!> z0$vaqT7=~RKsizf0aTw40nsEU%?GmAsZ?*@C^wsdyohkJhfSQT_(YW=rjE$mYbIxU z2MiV05Npe)Y^R%s-D>H849cMzThNP19RvKpyRzdUz1 zP&6g5|ICD*Y~LW-p$r^z&41%``J72fylxjMFi!b_g%L3%VY~`%ey=48{tW7F4|PyQ z+VEZQ43-Q(ehkWi}t zZaNq)`O{0v6C)S(AR+3(K}EfzcUagL#TP!O2@crPkwni4PWZ~-@El00fXwoJSya*8 zqpL|4b93c5Q^iMtQw~i4nk=ozDd~2>`%AQL5Z9XDgimG6r{D ze{ukPKncg-UG4ANHkkFQ4|eu|sY%y!H-7-&vqjM2yD@*ld4#TW8+?L#*N`(?wIQoc z0GH?W4Bw1L*0K$4(WwPE(uUP5&=rMp>9obdrnX8ObJ^HhTN|aW-X^z3<6HfJX(Ys^ zetLyeSvA4V9cp+PU2xl6SIO710q{fq2hK_d*$EP*6b<5}dS>6u#6~SYvYlG!j9&MG-(w zBHiLQ3JM#nC*XZLfDM2TRjSb7J2EmMnBRaI;os16uO%XlST6vBGTqRa1;AzjRS#m2 z#cya2lo*IVaS{DtSn!w-gVGWZ{Us3nKphyeyD>`2AGKi?=7r2{4r;h}m5044$W zDA4Tve+vI9{yUk&%L8c&`N&H|H}div@i~W- z^86|jDxxYcN(3r5)Cr2yW=T|!Qa6Hg4eUBxkq`owJQu_UQdin@Ws_`N^b!ZG#5M5JscAB43g=)te;B4g|PVRoVchw3J8!~Ik@%RsFMUejN8 zkp!KN?Bfh9I$SC`u25?H_)h7XkB$^}3U-q>MeN;zxQ_D3VA-!b>Ic81o)T}VILXIX z)t6LFQPSOA00gN^l?+m^tYk--jD^6YH$8EBM3w3{8= z6s*;22;oI>Kq9wKSo((Ne7RA=jA_+L4Fah#yY)3%h``N+i{+;E zRYkNRLtCw`xKZ5_r1nC(b{zDIxIM*e!1ylxm>B1yJtrYWmuvKN3vYkzwzzVH%rt+SelB z8h9~;RoNtK{R!^-n5tsp zWT5j|xb9Khn!3^^4rP(z@s7pwDw*O>Q;Dz574VB2h+QDsxzf@(Zsj(F_Nd|u?lXH^ z5WV%vR@azev_h9cm7paS?MI+ggTj|J{?=@5_w?ld!L zr=rOM^Zoo{#)>lO*dM0`@*<73q-IX@iWV_?4GYg3E6DVsDQSNh$j4oreII8kvzFVZ zR$}2YPTu8&I)So&h_#f5^q4)w*hD9mXTb&UDzBfa+$L#3JjxiGQQoNgG5wW+Tkvc2 zN?eQU>FN@%brK3lIqmyc8%zdg(&L8_pxDuyVNiOhQrW|BVt=ESiz6Mg^31I!b-2`B zI9KU?)6gOJVUy*DYm$qvLOEg~06g4ay4~rS@03B(tAET#>`T(}v2IC75Q74e5MJs9 z#jr4`gapK80vVh$}T^sDOrPDO2xmtugFpa=S${K7_2;@_%_c~2!8C+ z`~_j*PzpveE&s-DBdS)eBv-VYXu?sEnqfUgz)DjD>XM{3kEv^`DCmY0QmD^r^|$J7 zwD(GaDubivEyg$a=3PA?9d+LPFIKa93Xi;J=dcrxC-=aNS^W>pM|{N!Bv=?tTc-pi zYFyf+s%Mvl_L|DBc)ct1$l=vx#u3_k!PI%1x!MZ&@bz_un{_<8qzMs_3-(4@nY|W$ z#ritbIF%vyvsgQCJ;tArHlI{}&L%B z3~Ndp%87G%u`M4f)hIGfb2Q0|rHl3!DZ725~!P|%-o%^KH*cyCC&UeJ*8`gtU z`4Z9iZ07$T8A)z#(ToUtaFF?Aw5i7bOE2g_x!+{a1L2yI@DTk;6{MGW4ZG7`#tBA&9R?&zBS6`$%N&->-{ZK&Dr-N$fr4^EA0 za>21<7_v=XI%>j zlxb;=)C(uGWdCvvy<8nJR@nSE$Lsrvvny*nqKy(W4}?0aoyCo8vpFah^likdy)%XQ z4?XQ~Ved%&Wv26ZMe{uA%XRtS6@HAAS4!s~=_}maVc-n7(zaK9TOHo48jS@DBLkv^l7dZX&}+z5D+?5Zb58qSd! zRDYw(i;eW*m3*_tyiUy833;f<_eSRp-PFFy34Zf)3Eie9L0k!^S~TTtm}lYLQOoBF zm|5X_=f<@YeKrsj`trFIokS6Bhr=xB@ROwdlkLq-PFls`IJc~_=;6|Z@0IK|vBksu z?J#*f7iXD3+(NA&kx{qDh(M_pK_Yk+Xv%)8(tyPf|eWWd+z!$ zq1A55e)KG(^O`9S5Zg!Zr&txW?4t5mrPrLrF_+KgL*&1L{Png;j9<1j^XimJ6KX8x(2Tt9XD{v@dHfn$NQBy1-z@yL7La^(`?&N+05 zzl3w+to2sfZfp9I>VDokg+klgw0D@>O>Q7mhTbhsyc=iO8=U06Ab zo!VI9S8S)SoHfRq#vjL@M&BeB6^ zmAw_=HrX(KbpwNFmNghFcM-$kH)Y>7sO%4DUtf5cAgS+9K9;hOz=BvjUO{=_n<=^Fc~}J5FsxkEuRAd4{n~L^*4a};_;w=>CW;Z>F?a!EpE$4z0*a(>N9AQ z|4RCZYB_Z-a(h}w7g*a|XAXL_SMz6zyBk2A{jNV)z})|Q9dtx&TWNWQ;2cyIZfFdP#sNu^2VlzzkZ<(wk}JnsjOJ?de(!LzHTLt{fr-np1^tMn|{LNHf#I#zF7N= zQ%4K_p#tN5a%jeg3Au8B>9?Qzh;s=KLvsm*R96W%t4*Z4QP?z3!?jrMewdx{Vv1ug znJOfLk*|=80>7CesoqO=H-VN8sh7__xrS7LUkQxY+}Xsi(m-_C)tU-&nn`r9YsT~P zW7C%#eY6TE9-fBg^!9h@PnMvEBT(5L&GR|;iXabo8tfJTRI4=ZhH6FKwJdH9ICDxs z#H=m~)CKFJS7d`a2rgQnGeUi%tZ(iB%VKTspDzA8t-o!gpIe1Ax>=Bmm1TsJQn90p z$+VuWL&wr%xq}pJSb+^y)P~yn%8HlWAL+&bg@^z}rl4#SM7CVYJajwTLPUP>v28sA zyt>p~rkziDu}}GvM%@z7sSbF?pOIU}F$@A#HlJx7c*mi0H-j##l7MQudeSFzz=xdG z6aD3<^_$5jvo@f*3Q(V=(w{tgV-MH|`s?^lzUEW4`Z=I(p=;8zqgTc4I`;Y$5NI)H z2m-b0>cm&R9OCnU{9JFQ>%Emdgjj!RC83^e0-!UO20JZ_gApAtlW%T~9>Efd_XR$iW+= zFJK!2scOWZq>0t@7&90TL-QEZ3FVY*QLfL!=v-{Ejzm~#s#05roAyCSTYuvP2`Z<{ zhi8@oU`Xt83EJW@^*?3pLGFJYjjbi>;4IB#-PL=XNs6*L!CRw#)jEx-xcx%MjiP`} zFVBB=r}!{u=loY0-D0LHFBVBT1OMCKJ?asgBn*EM`EwZg*Yuz*3hF+4f<*GY`j#6^ z$LYii4zK-KoVuCqTB}<30`d#CH}D-bG#+WHzDUlR;-BKdVr2Pn>nr3d+0%WTMTR>T zeNLv1&W>Uhy&b0Z*GvOjR^)S))0qy2C#LqewxWq4a886BHDt#kv&b=R*k*WiPbqUF zP2%RD((HnfKEuh3)(mAV6P&p;487uTtp8WR0c~kU{Xdl`Jx>2AaB{dgkDoQ9-4ZS+ zu1y$DEDh5hu+$0YYC#rHwK_O0H_*YQm!r*VsQ0&V=PY%C;-!iXWlE>l^)D>xZ^F~m z54#y7G@;3T9<8!(D4N<08jl~rii_WhAFCOy)xfV=nu;PSdTxbvytj({&EmGSmQI$d zec$$J(#xFGRO|Qs@@dt4k++7Go-M&`?^UFBlryn(j2l&)u7)+I*j9|>|^afYzwTTph_g))!zEyV_ z{A;YYR%TKB;(Tqq!=5Zxn!)?BJ)Rcn2A>*lhbRYnLhvyeL_sDspL^GcjrpQ`Yxj?b~ymb)g! z%vt{{^Zm=Nt|tVFJYKSHSlf%-h6lXM-Dbxh(>7FikIa1J&J&@(V!dxmE$1M^3OVD4 z|2r>0=sO?*9Y{5t(@L@0V8T5m!q6}r5t z(LN6{A1yZlR~a8T^E2}ME1N(iGj4R$uj+x%b-i|_G0X$+e*Wwy!ySOp{^bpJ6KS|~ zaecoY?Bb{rFMN{&Z~V$y;Wo6lr}j8I@oApB?qYJhzfWYhM(Mt+Ea`NT+m=p`otKh9 znD%as#dMFGd_Ci^7%#^&!+eI*B;HIDwnow{T)MA!bI>9rkDuK5WAI^Zj5y`Bz;RV! zrrS~dd={}hVi7W7psuypNQJ9rRPC0xr6c@-Kx&#zCMj6_CXHu5`YZULaJqzL6oU_a za-Y4zvNT!tstF!jL7?e0*}@>LzKk90ZbHOk99|MYU%q};-X2SYo5c^6`%pR|&D1Q29FTYjnaNiI}*Ji{G z&tbsaqV4&jX+d2Fm81$^C=`gU+H@=1cuY|mC*!$jn!V;U?tW;r#7#z2Z*5ua{XO>? zqRPEyk+_3gi%W)~<^>*J)wAqZRrmbM7DLj2kbD#%@XoH)z z?Ud=&9CjDzov1LJB0$ERe74ajd9B2t%>1NfrHIRE^W~D%S*56Z{lGM>BkjQJd7x|^ zMPr?X;|O-DgT~2&va5e7hvnt-A?y~=d`l%5LPAc$Qa3*-MK1M`iBy7Mxm)7+)%SC(n2R#rG0|39+pF&nx*89_vH=o$euwo3ON6YgaWVj~iW+&iFTM4s~8aV91O>+CW-Ss%eF0qU$p@O5-uLkUQi^FuTJ zlx_KtZKU(4+MfowQCC-2nU#T~0W-6Xqy`g>lNnx`0n@Z4HC}cIG|8Qm5ysa;Pf12K zYHQG|(yXj(dAUn3zVzzd8zZPOQ$Kaq`a!WkgtEvOaF;EovJ$kldIQFF2@GU3dlwG*3rZu8zBPj<3|jvrQIxxLyRYd{0MEz&A9 ztO8V>nqAtd;IYi*7^pfSsm06+NYKuyGnd9n_H);1NwmqPxKt5MUA)4sHF(HteSALe`5cD z`Q1UQ(XQ~bXcDza^T%ow!PC z3pL?R)J@vl5NMm8KnPY3D~|m5V0F zkPId0-=;M~f{qqDG+=zbCx3Rd#>qi`ezDyCT;>u~CT*xFbzg>Up&IHliq?cSS8*ug zE`i=jbzju}lP9h&$FM^+3rSoZwq-YqA09tGXh*KH?H})BttxWmaHYu5h&?FTNT^&=@}bMeC2;rbb?}j%F_Gef>p;#~;-w`UA8r zjiBOQS%Z!QQHN+(+-vEN5W4jm9Qtyty{yZ`241YuVLu1o;n)rtGQS?4nCxF=ydGK| z_()qFAK#{@-&;N&N4r3i>wpb^{mO*8x}Od1#2H!XSjIs2W&>k*1Hl!M9WZI%a1#I%;k0hP>jRFO^O6k9jVr(x-+e9o_v}q_Zvh6#;*#dD~ai z7=~AMDjOrU7#AaV#PjHRs?FkxnG}pOHQ5X1<1Zz&#D{RiqIo3pL9FPM4<5N>zsN=T zb4iddA^W_j1dLt=WPC?}Gh|C-dJx?4`JOIAf+AdDPH4ycEo)1{X|i!?y=zI>)6U5p zgRIc5a9a%a0Jt+=1Veu>0z&v+MBMj=VB$W5N6@$8E+iuhr!>Ef|4L9NB_qSBaZgj5 z!csd6nG=a|8mrUab4T2=JwlTj@9=`;cO1+&)3axX11MzvT>&(5^g-n@8umik!F(Q4-brGP$NwDMKPpEt=2=sS;37{ z?q_pTP07WkFflk)|LWA1cYzmE}}v0L)yq?W&Vn8a+1gF2Q8+gPg^s`M{@5l`ZL z!hSPO>el?8Lc9B|O4!Er;67<6#sw&F_b@gsV$vek@qCUPbC4q+G*hz|NWO~9)$Fcs z%l9^5G}LZd;^;Q~eA*c8J!VBHtLy179)G=oDNI7h`;}5k((9vF$oo&&)#Pc4<=5Kp zgMLn2#VWpjWC+THbtdmufM#aMnUUk7BXj%Pd-RQ3G;?`_ZIt7Tf;4q@1CJ|pVmIq| zcb4B4kQBAWDe}w_%P1u(-)uzCQ*~4@q^6ij5a&thrfvrsyr1fCuL?q{EPv4oAGutg zyt#Nd>5e~3Fi8c#MUg==nBaEe(4|Doo^OeTRvlU9EJuXsTlrUBI^Hz7J)an8mni0H zD6sd>eVP+U@1KKz>#Xbi)^uYwNiF6!cO$N>zD;|{0bV*TP^aDn1*PAUa1;bV>D?8) zJQch%AGj}_c1Qdc-p6%+Dkbxtz}xxuYZ9HAZ8JA0B544Q^Jjmilqz1wUGovFP;!DQ zb{P4JN?g&%rnLz*q_HxiE%M;51>Ix3-=?$2p0$QQvVFqjhJE>TS$&Dkn?<3K_=y>h zE+~jr2s)u{LY)zLeRMKPv z(@_teW*ce~3!JAXcWe_wMZQ>e$Q*Y&?qV0cS3!qE15LiN30vH3k?6b)Zu`?b&M^k0 zU6x07ISKu@1PX6MO1{ooQ$Ck@E^ix;&tsS_zVE+cK@gA;koy;fezG-+KJql7k;3dJ z{fd*P2zaZklVgnF69pk!BumSrpOdzJ|QM ztGvl2x0s8=;<{U2{+R65$lE(5yZRwv)7QI5I`-I_BJGEetU;4Xlv;UaNCICb5Iz!1 zkdy--n^qRdQ)eIPz#`xHaFTqzB)3j{XxrnAE+ZsHt;G!Hb7fkL%GH_hM@A* zU=Q(7^E%gg>qq*9$jNgKt7@A8EBo(WKB6h7FD7;&yeKUlO5oghb@_~x(xEytCrn5? z9}YfCaz`I+mI`5Z%{PY*SV!x=<(nBRH@R}`C$&2n{-p#{Oy7^K`%u|tmAGdFhkEi-k=?4Y=7v$vmE8(!b zR-eUu9Not(+a5neah!xh@GXh+#7n!o&POcQIh8xD8{R+qee+Ly*Mg*P3@%QG%_}cmwD9?`9+&1A$(tuJRMUP`lX(~e4W42(M#n3`Z;Tf5IAOGX*8v#|vAvK0jF=tkc>HFKuM zkLo>#*MDy`+f{rX2j@&Jy<{NwGAgC&#(941K1cqukF!#Ih!dX12u{_F77%vk4nB;0 zVx@Roia&NjzPD&&{J^5O!PIe}7%hM3$6(;9tIPZ7_R68ZAfF`YpV1#BV~;32lW^XF zTBR^CjrPZLyrVy10L8vGdoZqC>JsibTX1((F?b4N@rJxtF>t}1DAK3@^v(G^wKDs> zLnS|8UU(1u*QS1d#Z-H}?{f2o^5Ow^1QFq+EC@VO_H$v0qbb7^q!uc;*RLq(Q*+w3 zI{zRT>?dhBU9Fh2cU0M_p+}X0fCW@bf z`Li@(U3kzWuce>-p>q8}J{?L7I6n}~BzF0Z2-A~6aX3`g&un(*^n3qEE6*B@y?jUo9~od=E%?w)Q7FLWBA>GQ?n zHixD1bsV!RHU;6sgXKk1Q}NqhC<<;Yh~&u-Sumgn2_yQpAysrP*YH1!Ds4bdQBW%@ z9TuYWO-`&TH9Rae{27yy#fT&-36anR28KBSPY^UkPsz*Or?(PnQyE_DT3GVLh?(S~EHMqOGGk5a)_U`lS{p0R_+x7HN)7>*e_c>K{ zPStzP+p8`q9-dJFFr$y_lFPW51Ya}d`5pQ<8H%@z9wQ);OpQKnbxO9%>^pgLdop0> zf^@fCa>O*N@2H$KKj#P8B;*g${$^?A-TEvR|6^0x?dDVu=t4C*RPeww0LCR*|7xa~ zLd|;7Y)A&&EiZ(}i@me>r|P?2d&ZiD9E7Z(A~PzH#V39zUsfZBmLjRSt8eFBo{cl- zwU>Y2_%)JmGl*gi@FgB0QI#D(t^R_OJm5bIcrcZwq>!fnPUfEi2v0HmO)f709w)a< zN&9nXN&VaZC4!*+ewi3Q()?~&`c2yJng)N00J$0k+Qh13x3F2^oZn+FPoULCGbeO8cZ3wkP-3Cy!KRCx@JzlJ>tO zi`y|d$L;K*N+wE<C>ScULH!ogaoDrGn*rSH5Dhsmxl z5=bJnXn|`d^63{r95OHYo>(}}R}>>_EEH9QUeQ*uJq3ywp(uqI-|)0tYw=cc4ry^# zp*d8#6gNL`FdOQw(+W4pV9`!!@_A!4WGx~(_GOfJ^WKafV|6wHwje=Y3KhFx>XuTC?JQ06W6wv+Y1}hd< zq<}7&fc~%)*d)uRN8R`%I~Pmdg@tW%kMNQEaf*kbwDeyqhZ5k0onm~?orq~9Z3!d_ z38bXhZP!tN9R=7vqXl;!vQRVN-Xfli0c_-%(U4zjlID*mA=Sr|_E#syA>I`q*=w$Keq}VG)29#}#f8;y}784nf+p8fxivOS_z$X1aoA3a&=13X=KhDfN3O}|>qT0f611|4)A9x(Blk~_Y_~yE zYGBS?7-38&{3W=#R+-oz&P?k+Zk)MFg%0wipICPf0bOLT8L&=D{a_%$0?59{Y9$eFC6hS)I^OuVZ?~bsdYD<-)51qr;eN% zXNV24r>*3|Aa#53Wlnia@^tZaY0{0zJFndxJjz2X_t%g?6xt095yO=cC$Bz{KqGBl z)vYR7;pSy8?&`T{auJ$$73oD!4UW22mNA_a7HxIoIQ#i6@T_{QhDowb#|*7pV$t4l zU-9)yef*<^RFmYP6)jKD(MVFA=L=Q@BMB~K=T{I@`s7ku>42=>htgq;i#bjuE-pqg zY)R6&zGd}1uTEU*jRkXVa%ro8Jf}V5~g_*XxhK2joR<6_=G(EprSDnrax3?A?&TVSfQ&(`8 zBrP#Fm%r@m$gC)*XY{m)0$sT{d<>!l@V@?j937RZo|!W%IeK16YBPTu{H0>;QP!-# zkJ~ob@*YJ$w1f4>y`t%mBP+D{$IplTK<_UTMtLb6^~SjOn9=6%L2+N!ba;my(nf?C zZi*6>Oq-?b@u@ou2itONjh^(~n+;9Lq>IKEI(ev1EgiKG;6-NF& zNQ-`zwZe08eFGiqcXM<8lw22?s6utZ8us-KlKBJe-wmFYR--QVCV6L){tvIPmnhU8 z^Xsg^W)A+{SjV0gLcfMcll?_b_-5tr)x%_2S4Q43l6|c>v$djE%f=&#}$-*|NhI9uqdy*}9UR$)d_ZEDw7N7Dm zX^g#kjKl*lNQwwXUONTQunS|^p?gCqmvmpHC;fu9Ic8Z(+wkz}o1UTx(7^hmtX8Y1 zY*pV|x?-URT+x7QT>hinxX_you6_Oc>br|E_|iz!ag31yErl8|Qs-IUL3~91i~g^+eF(|6kmXWwa!Rw zJ6Ja>-$Fuig?x`qi^HL@X2cpl$5Us{BP?~#$>VO$rObHhN{`_oYCDKH>;qS zS6r&lbHK9b-0J?c@I8ZZ-iSA)3i=59D8S~p!DR1D^wBBrP`$2ej?=H{;SO=9!DQAP zUnPEnQR?1&=(;xTm0kMPqwpSE9^|CxxmmG_-jQ3gFrT5{q@A-Ubuz$l_ocz0lZEBN zcJLWACW*J*=*^yqF8Ah8bHiNs;N*O45^QtAcosWUQSMb<12R{=Pl&2boCGy`YY8sQ zBi2je1Is<<4Q5Grj-}ol84s84YE4$C@n;J?r5R@yCim0s?%k=zAE+b|&D8mKF9+Wq zidZMGCsD0s>NCXY@2UkHNc=NzqvQG>@FmVg`A43r_#ax9JrHqU;uBZkNXJN3n_jis zz8z1C-c5@p=SJCoi-|8nkTsFbyPc=}U8-nBDbsXsns=j2x&4HHb~s!yC_rtSU}VkE zgwfGn!0Q#tQ8q3S5hzaeN1@!3zIx#FwMkhRi$y`e2IO3X{5f7soB>HbHatGc^v*wc z)zY0*!kQazaBd;?^e5FAx-nd>e~4c&kx{gQQOWUwmDdp=nFEs3hG4@BUNp)!MP9#B z(KV%(2oX&sKTQSI;4B9%&HJSM?7+D2*gX5LjE=UpJP74jxNQb{LJc(Stcl|JL8raq;2>X9yTkXI6rXBmP&ER9i{dS^4r)u zY{&TEwfp-5O{Wr|UtCR#*OjR62=V7NM}4@W$Vx1VWyo$w1$jKVh%AL{_r?v0e==t$ z`J59T@kghqsM8@>aUybfLL5>85@*4oxFH9j!;s4TPt2!Xh{iERTb|^M!*}XJaT=$u z3fTnl)|S~&JwC9l3>3Fg9dE~#5pz4AUz@m2CYfoLnW2$N)t-&%)z7OIwf)UwktN6N zQYKDLqq#mgW1pf1FUo$ZPrn0YAHw;FMMC?hL@bLRHswW$vwWu{^~rOQy0-7lg3*WJ zgPYr5CvhtWQADqj6!KfxslQd|tz*~tR6`YiurTI3?v542E{@Qe3G5JmJ$Sd9sp_&) z9|pp;S5;K%?}%F8h-jC1VarTTJawLgWw`-nXN2$vg%+8|E&5S4WlYoMnY*+3ZMB%D z=zb_i4%#phQ^C_zw*rv)@_PhBu(*Qmx=~pAxn;*4-m_ZWj?`JsxIQhc5)v$~FyUFB zi>OuUjq#C6A}*ElIeD$r3rYDC{1Abe(<{MHgRPeL$?XyL3xmM`4DQ61_1+#bF5`cC zdcuk!x&%PUqy*E+cQ>`t69Z^m4WV?nRE7r-(8h|RR}BuLh6KQ9#9hlj_o6GM&+EpJ z8!%C?>Ym=M;7QrZvLP?TIak{ASJ4O0t{D*Vu~*iz7jODI`dj?On*1{p&`lW4wXs6`f>Pt{wL-RZPX1*{?ZS>$I-%sO zKeMs1X!eZeoTB_WKIln39`u8%gQDU^1NbHo@Ah5t_^8ZdVZQ9mva>6n+C>9Ta~-qY zu9NZXooThX%z~a+aJi+m8A8FY%dc4%Iy8%>bJDmQfPse(Rgr+gvD#8rS{jhO35j&K zH6Y~KvvHruE2^K8T@tS`wq+Srvpw4yO+C^n?l{JHrbGM8IH=v| z8bjDi{dVKx@ou6xLt^F)OcKs{*74RkexWsb&l)od0Ps^t00ad^0wWNxz_DMZrc={7 zdH?O(t2KnF|9fR}MD&zd@JQbGSy;k6K~*W@|Mt`W?@vK@lRpj$`o$lT}};1x9IHI;u%_t@Zp|DIoU%;PA>XAnC`^M(E0c!t>^f~= zj<=)OHAC>=C<~0ApsLwUXnMq|yI@EgDD<4jd0Y;vGM}87kJ79AlhC9AbWCVc({MZ! z>5UiZRrsYxN^w)TSVK-HFvQuOdt}>H}pvoJj&0J0f-7fXE%c4wbTr-Mw@GJ|TArx6(~*^8>gJ z!`MB?^||np84*(TF+*?%Ze=u{^DK+J*i}pQve8Aku6Jq691q>{GGYt8%xa4oh=YW7@sUHRJ=QZ9?U0Kmd=;!7LM_=slC=1Z|?I}8cd$m zbXG>K|5QBxDFQ1-0g#K?;JsY&Py)ZC?wTcUe?Drt5WFaH;)pnc-jO)x1ypqJ5PSx+ z*+4a|?6I~C@Pw4{QZ;(zWUVfTF5MTHPdf23mt=MW?=fW$sE_V}V9(FpGs}(Idpv%9 z7x=QKdWX$(SkZM#Z6hrOLaBM9DSm&fcwP=Vv=VJb?>sBx?T~um7CduAY#6l$x9KvD z0qc(9lS0R1TytEhV{_|@45f)u6QH6aGb?bSyzqF``X8Lfd}Kw2n)G}zSk1xb6ge8c zl$yv3mi>i%#IH#V0dwXxIK~(2swi9UzO4?Qm*kA^|NsF;EWwF?? z3}->lUU=M?wx_7(p6Jw>A}+jQcP_(Aar7!f)acY=pVbq6C~=ZB)-{Hd>^aJuL;>ql zIk_&=6X)T;1<@?^njR03Ja;rh27PFIW&6<;H9UbBZPQM&c09m;I^oPttCR7{Dsmu7 zjVBir`JprAlEw11&0sr^CkzcMT)ueVvwWT0j8$VI%Ani~R$!idC?mxj{r4rr8x5;n ztBaN*M8#jh6YemNuD}b*rS110NkWyg5Jdr8JI}d%l0KGL8KkyRFLxQRdSsV=kyg7# zn;bTu{6lRMKgVmYh~GRX-yu=kg`07r$n_iO24}L7LfNrg^I|^KL2cs#T)(a8@MOGEue)hLbdTSNDfUukyi<-cECkDr`d=D!M-U?x z^AQ7Jt@}fl%105svdTumCfVRqcdI@J1~M^u<1<0)rqnhh5bIAmq#nPXFVPY*2~6)G z36q_jUDKnjr%e%{`js>4w(CcV2TM}c)C1_}+G)fHILharP#^!Ce>=*keAe{umT1-h z4ltU|Q#1T8Axf;5t=Rv+@0|LF*tbyebH<|MS*s0U)jSBF`}+2Y^~z=*`St!p^IN7i z;`7W2DWS#}H;$M)$$iz!ITqD#&?8)aeTlJp0KzYBzblFWGH&TK?9Yy)jgE7AbByS9 zMRF5smS?ADvpmo_i*=3VPNOT0z_r@OvxKH>Y8!uQ>m`kU4sGE5$5G3im8B~ft1Ba` zmA@xl;wOImyqDn~uGWskm)J}`&S5j@!Lzgpb3Y%j+t7!?+O<=+`u zU3z1)EUqfY-UDDotbCz_7;TEi4^KE@KZJa!Tbggih2;(Nym{;V>>0V{Jpuaj1-}Bq zmk)z5D*V*69~P}7943rU)^G5iQgi--0?X@sc0;F?b^g>5XV0LUwGYYLs$>aC{2>ZD znEjr>N1)+m_x4osu7zjZ1Kp`_?=8AX+$rf5c(c*gvf$=<%S+yH-SYh{K@=H=N4N~f zhd>J$al8vc#~ z36%gt0obdw=m!B)ye)|Zp3aF(LBy_vmScXAoMxg zm+cvGo|+9OhmPFaMyW?ttUJ5ha0eRX&u|Y`rw{fVrhQZB<0?f;BO6XXVxRu|qhwJf z2MJU@e7XGk?a%6h*rc{Q+s;!PT)g_zjw9o~OmOQYKZSy3?9ZN#I_R~FWU*x(K$&oP zkP&_MUN2r8M`|T4XXYE3h02vb^G|r;9}qkhP;PLNRV0A8%|h?-(@ zOV|jMjDET>R|3V9e0E;+)@AiNNpwJ)I*)bT&CAm9I~=CXx)_?z_v+|g-utR-1PG|< zG-v@{xw8dZyPXFl4j{11vq~AFKkZ1p#@gH4*8Wh@q=OC^uKd>8)|Op$Q0`XC%%1VM zV16m4yjI-DnP$bT6_1Pz1yfOm5!}C)BLOEClG;!4@Xe?g@5kyc7 zX~+XdO>@(Dn-K}}b3wbLtr?s0ZA0ONViXYBIV6aFdn#EifE91>NQ%;R^fvmMXVjyr zPjLytp2_=wUG7z>wyL-eN!GozOfZ;2l4oN#+OPSSKEC#ue1&mUwSW%#JG79huF{YB|gm!+7;t zd3W`aH(~v$`>FnlkD9P5b{z6$Ggbh7;Sg>WP|%Fl!4~u7qskU!O(Y7ZfN-3%-vSmbK6&QlIF)<&wfaqQZT{e5KyM4qklsY(Y+S&bt?hv~`mRxN}C-5XRxA08wEqK$OOQfhQ8 zf0LYBK(9-Fbi>Ku-3W+}6}xR-`8qJs2tC(lAR#Xu!a_0*Cx#j{fcVX8zzZMug!K-J zFMf&&;3LP^;xXDNB=+jVNf|wMhDUTSunp^Hmn$Kc|$emXe$49?eCanVqFsI{lH{%~Q8 zn5Pib_Q#u}<|mNs3#!o@p%TfDPws&@E5f0(F+$!pn5{Z(t%bffy;q#UPFC`<74Y-g z$GoNuM_ycPbZ}B~@ak!UfvkpWaSqbctX4~`h8uQSWr9^JZZa!uDgCqN4%x6sLWC_o zh@T=#mK8hi40wJk+CGXqe1^vBwKG8#ZQ}j_Q+0TT=y{V>bmYDFYU8}Kfnar?h3Lgw z4$3<9qOZH~a^5ZzSC){d9if((t6k7gUno&1RVav21m@Q!kf^H{nCHimfe$FhN|er5 z?Nz20lq$yvQ!N9PDasSXnUoqx6e<)_=Orr8B@$FF-5jVYl+7q9l?%*6fhEcnlnNHW z_=Ey^BQ>-Jpn7S7q%u{kghG7oOlf(&c!_$2FhvP4QLMhSbe_~)nMPe*S&h_8okpUd zl*UX#LSd#{T~Z=mtPH3Snpj_e6!E?eEY5ifL#>1y*z_wE9Ezh*dg1pdC^FgxcsXSLeZD4qOyk zZR_fk8Q3s;Hl#@Dq7(6C{|3LKS!apAfn8B`tl?xZB9#sx5{-q(=NBs=f)hdu2B%%W z0%u6M@pMJuKNtlX_E_kZtyZ4$|K*r)Hd?q6UYxea{ge_GdPKm}6DF9n7He)~x2hAkq&xi&zRUJY4RSf(J-1#9NpacdbTHIoa^_%~PPWs>lEF>?iq5O^et znBU{H5HVK@?1L_&_B>S$7f(Eb17@6GxwTuo+@@#|yp1TRwbKT>HPL?gy@#5}%G4i_ znhy)i5E~J|MQiw%Gnx{?cZp}UJgPBb;CwweOA}h02o+cvma3U&5g04%+t$#C{z#_* z{29j-ISe4zd;Lqb?os9k9_@(0%-lbuWV&!q{nL8Z8}6e4hfqyE+N+ZbzHf5S{Jn}_ zub9kFrE3#DD!sFpJuu^bAJxKg6N|t9E=f{Q#)B|})g@95+N!{xKWU|OSU$IS0WXZF z>vXx7lYAqZTdQlg@PUR2PZ@6;I$)V55t=_6NtgP(ZGsvVlPHzfNoHyt$;^^HI>4Pm1 z5i}goS2SwA*2-WrBmeHtJ|m;=ce@2atqMFNSy9}HcM=wBm-BK3TsxD)9=l`bi}XTL z-n;_3$zjo8ErFL4d+MLCBW11EJQPnU^p9!2dox6kYQNb9;DXWAgy4eFktjD6e9ARl zkW?+lxrZF9cRX-y43=)8cL6W1{`VL9dCyuXksm(nb2R0MJ+?Pym541kLKyISq)k3e z$Un^IiZkqU$Q|{SYV}2VeV$a?v zPDEzM7}7}gCr#f3l`VNUmdK%_2(h0-Mk$>-gPcPa{~)ew%9XY-MxMx{(&bjh+LP-? zO?v}VeM4A#2nnGPXvRgH5Z-6lyK#t(c|T(E)e^%!iG|*{=++9ZRts+h(^~z~O?tPl zoZ^9pgMB$fZFI2^sTV`dN8Tq768M)*Bd13c%BIak$CulcNMm+j$nh{5#xWdb5jel_ z_M|WDzKg%1|l}RpK|w0@VvWHuxT% zzphQHEG}~B64h2ZZv)py#zLUM=LR)oVo0K$ncT=&zbeS1F*vz$5~Y$qrFjs~>X4OU z+8|Zk*8enK##7+LeeQz%_2{mvCu<}#->b2r{l0yZBFe%N>$u@l+k2hSZ`Y8n(yI^)m#ff9-Atfr!g-K39L^Vi~> z{{9&Rpj;S%%rKzDVYM#e?k`o+^L?RYHNQ#34}u_>;7q?s-v5Npqt?Kq!F4i^49l&x ziW(`$_KyJDq6ItwdC)PxcGQJH+^R%)YLtETgDo1-yf=#g0a$e&1%+R!C#JK%2lqON z0)BAZ1aj=98qO6-nYE$2jVHaoNJqL4!MnDb8W_~dJMgSn4bC77sY%HDr9p50i)>xd zr}%g0fyPc`7EIN&yIpxDK?$VFn}G1A7bW=U7;gP6V*sk32nOZ{ARp^T60x{b9imO{ zIuGeJ$sslqZyVf?`)N^8&;s?y@GG?qi*}|l0Y!y-Z|Sez#uS*G2kS6>N!ypk`D*Vh z<29#$2!xJO&h;`^`eRUYCdp3IYOP1w$WBvd)NOvEFk^kcFS^)RtG(52%Y_Dvft!q( z35*F$YnM_E(Q-GZPfu$#GR)6klL)uf$`R1~COWzwn5xQ$(e-2M0{tK4R`FK^qN zDeC#obEN0L^`10gZFB0fFFoK09j(%@3Xe=B0d~cx;FQoE(26PLqp5^UKD@RXbMqvtwThrNiqSp*gF@LNfjf^vcPfG}r5bZs zem+Boz%nU!rvBcSR}}EX?lL$%JL`f&a*PMy{rZx(W?tIH2hJDdvA;KZq9RgxBikZdOXjor;Y{@`eGHY?8{2oLZybXnl9>gtz88Zh(Q zX!pt~P#_=;#_-RHc~3S(;`cFAC{s*cx~UWttPrfyp`qB)uA0z2d((|r;i}5_8}7mb z*JnID{F*K+=bK)~>X{G-Uk@$Lh==*zgM|k+8cWtFR`;LxH;jzC{5-NywNS}_2OYFW z%1gz)A-&4qTlU&nzl5G@i($CnX5eo02Ca3?qc-38LjQzTCmVk47E1}~j=PVU#kQRGc07BuSvZ`3NN2&0xz;t6i25Bjsid60E za29|1YIQM$ps_AVT}7IrIoL4HT18q$&Ld;_Pr$(yIOyQivxxY~!^qX%rwFNft0!x~ zR4B}bu(uei>J$MW0_)2$R^tBR87@?@!8h7kkP->~9K)N0!x4i!AdRKgs5KGTcs z?k-vt*SVEx3NrdRb}9uuQr{xo$npJlOj6JJdoDK3#mi>N5r?|cj+aG|33lO+ugEYh#S2>D;Fi_qXaNyT-t-5eX} z1N1=n02KtAqwfIhuGbGTw$bNzMS&pgyLXx0*C0V5i?D)cLxOMx!tadVo*2#aHNG_0 zp^s!ylljVH_rcqb{=A9R5uVI(rqpj_O5gqXeV8EWfK$ytj=2QoR7LcA@$t2Bmvkgq zN$Yu{&)C?{9ZI^|mU6wC_gwnNCdfh5oG<=q`nG^>a)@+}jjKNa%vck&ZZt;%@Efz6 zqxPK6)t+@VpZn~we2FKcQE+XiZM9P%#Ga|M#@nXa{PJe>!Z{~F-+M&rAs}(==Vv@(%(6y|JkzeOd#qT#^%!lLucBDn)1UI((QZuXR_vCqMX+>4d)Kzs!Cg+6t4 zeTk7?e6|J&=pET2goXsoF$%3~g6tz-0^^ScrfN{|DeW%!;t~@&&Os8$!jtB|m;3On zRPQ}2YL=}?&_WQ_)>N0^;6`{+OC&gyq?2#`@?*AN71P8es$;M(Aj8NP_2MRjv{k|z z4P?%7TpK{_!f|mg)%O1Lvc-MJ1r6b$<2fdDn&T+N@XAKn?6DHPO3`70%#KxP4Y`%< zFb&E&$^Bh0;G_e%V=7yQPiuZ4l!I!on-NNt{(+mb7~4HSK48-iiaRh{+~;?}@MHGt z$HJjtQn{>h^|?~_rq_^Y>$n*ARBKFp_L&{T0DlW#TtEbNX#a6)y=L zRr8wmIgUP0Pn}KW&En4Cm6wFaS`k6a%o#b?LHY>7|3L_cV!zygH8U@n zbH@_M>^^ynhJaF!$OH9ROz1ZbfK!mEs3qa(2h)4yCvsH1H8#H1)*O=HrONn)fI;UV z$I5o5wK2|>C+;`gh6Y1)v2bG8Zt!9|zmQ)z3`Q(5q*7=-L5x*3l;cUgPpNw+LLt0f zaUDsx+nM%ds>liV_$HjUHy0BTjUV<%n7xRf;Vua~B0`S{9*Y;8K293&Eo}KRk zLrjhE#e)LIgcEzWW&dJX59PS|;^-v@LRQ}0pQn%GME#L1MEwy(-}FD_^*zy%xNtp$ zpMK$twEH6%`G{k0H{=@05xvtEgd5Cuk}{_&N|t53aM4%j|8iJ$Cj);iBD&9&>`}S z&+89Ub?l2W?|~Vo(`&pY`Q1lzj8l1hxuIXVF1x$Cd#D!RVM2yDEH(f*^PNj}F@85W zQFm9TmS&X6XX?^CYVT$jM@Z~7#49x(kxdHHlz%nXSUNcqBRvkBY~KNyy!z7nV|h9# z^rTZG`xV>I8X6Q8@Y`+n+!P#MImQ-g#o;H6fKkX7)kv`2glP>a`g*&k4bG@CXPfRb z=iri_j>{R(LOZzq>-6;vi{&LjUor*Q!TQ!&UL^WpU%h{DAgW-Q3d00=MC*prMVq3` zwZ=a=1Wm3!Xnndq@=S6(bT*tIv&~XDcX|6AWG?}aCIsp?yRPcrR`v2Os#`vO71_c> z=3aT3O1_0Xkx%XMAB@=LjiC=k31ytNa|@oq57V~3CLMbGGzD?VUdtO!yB9mozSL0I z)DN;)0q}{hi7fxNW`C~VFnSxQ1jG?W-u3Oz=2~b& z!BfNxm^4 z!YfAFoZGM0xlKN7!@YQ`V>!Dt^PmxB8nbc(eCJLxUTPFtLN%@~0B86`%lrJ9Zou|0 zp9hdn#zc_(sCfMHIw>FXVN|E)nqzgr7Uom_b4&k9+$YDIwkXF-cf_dp_wkP#gV*QgGymqMBFB5!@L5c zM^jz+zp4~^|NgyZcQKy*09@XxjI{0)<#H|@`1CA_CX6fqHw={v^N(u_enLW^bI|Ls z9ye%Q-90Sx*WMM5E6`R9!!PdVakUNlfvTJ(fZl&neBN&DVQh<6l(&)ME zr2J_tZ6YIzT;)`1c03P)`!Ux^5j^{{p&ap1NSveHFU-&$$%db>c~#bL){ik5eNp72 z%F|(ijZ^oSy>-{!v5xVW_UhZ0kBXfcT)t_-ZJBX?bT{eKM33UE78Z8c7%$gW7sgM){n@P*Du&Phj*w((QJKn4B0XeLd?_T zQC&%UP(I_TsWv|wPrK;R-UB{)uB%swMQjDNoSvLAYVh%4OVZVm*2Wb|F)_xXHu^cl zlVCrDCI!Ad{bZyI5|9#FgTaC-gpqa8% zjijTE>NqTD(259kZ(Uh_o!_vz?;HHNShLJ=<)n8N^X9R3Nt?>W$kESZCA{C)qw;gz z*sDpVNRYp1YMD1`#xjj~BwCTL&{rA)yhDMz0du$NDY@zhPBg6JZ|qar?A2%lw5*1u z;x;Q!Nkw*Elc%jY%U@tM1_g9g)DuT(K=`=!KhD-{9u_8mB?#~Hw`bPdkO1?lXRgYo zJnhAXI(K~XCI{Xhtk@M!5B5j)JQfMc^DhA6>qn{>f(pib!Xmp&a$jM;L_jNIQv z9JldmR?(?LCiV0QlK&*?gsB4kTY*Xhd|0Q4p2bQRqjm2Bk2QiR&)gy}-p7aXxTQ$7 z#_R*8O`haON!X;Qb%ti z=sXPuCT|;hyV$=kt6*3G>+6jBjVkYtRlj#<3bw!bs|xV;grylH#DPt12#qW z2pv~WJy|aNcUa&|VSaaNTWD%cum<=|!Y9#T*!g@iq0B(<7R?`&!nY0OplR<6x;=Yd zIcjhW8vk6jCo3|V0aa6bJi&0)Gh)T0Sl+Pk@%b~USvqxE%%>lsvE2ndl73)jEI7@- z`zo-|j!`$AxLwm)`d(WJ4Hll%!r`?-&3f+;wbI+FWTYC>G2A}I7Y}v^57#XCQxOBb>p7pVI?jg2PR&ElR`@d z@7WZW3cs3GN$e_H#EMGf6d>{;q~2|Wi_@x{mebez6jdH)YisvDdOP}4k$JwmZ^leE z8r(KrRseCj*2fp&tD7&`x=DB>rO&Rvye+N2tjbJFR=XNE7~!=5e(;iO4TVq%%O>vh zetjX_>2STz(oGl}T9w`*An8wzv+v&p8)N@W4uIzf*7}N%br{Pg#ojPeyxU^nY9@1G zP8wxS{Ka5(`NMqz+)_x$*4{L2=Ucqhts8qmqLH@hk60PtMJE_lEvA@}(kt+Iaj^Q0|BJ^?K=2>*lb)g}KVcCT zzb)Zzw!CJv&FNo(^%(!LnX4@`ME$Wbk&Go>o2j#WvKlqj;IK`q+UMwr3}5s{_}Nf~ z`0&futLg4o@V(`NGJU8Ay_rg%sgN>MPAL~oSBbC0SMhH*X8g&9m-y|aD-B+q5C%MK zYse03`ayU3Z${Y63(PsZ>ATbsio#CRV3G6b3gjaPBdz0cN0!Yhni58A_dy6z(>*l; zdF&^P+4Fe1eMVk8;0KsXB}-}=o|r>^!Yf&Mf3uz?%KK6kwJ&IWc~;l35@(J5(@tnP z&RV*K<$}EjFqz+ zMyQ{f>WO992oQ&HxWq3N3-o2^si5>mIG#!Mr(sDM$PK>m#G7!khPgB%fCrsTRC=)6 z3kCLm%^mRPk6tqKT)ydl!QmbC=5Cir{%SPaVm8H>m(%=`l5uX8G`za^$UY^@9dj0f zgM^Gwvp1JtDr;qBR5N-R?~?4l|MW$)p!#y491u92&&-1$q07AAELHRcL+6)rY0tvu z{-yIRM_D2-tzy+X{=;bhQYM@M+c{7`U!hB78?KiYto$$GK>mh0HYgDuvweG0o4F@5&8n9*n0Y{ zy)!puTgn@CPoj(ZS1XU|UG#D-N&1GGwnk$RAn zrUf=eCWd9NO(QF-it&l^ru@tRznr?S5>zn^3S2fipAtmDuX<+OR{i}AI}ism-{x5f zl6Q-b3LOiqw_Du`CavY?pX*v#L<#PVMVwiZUmki=9{KA&tEg$O&Mju12IzYXL{GDE z?F-pgJ&xKf)#!e=v~Xu(dyx(~D7T7-%3&z8yKGE^l&C*f>w9n)2P z_P3p#Htoz8f{+T&j>nvpM}sJa`cEH69{Jp4ReW{LyXqtPbV-Y&^&DSm2_Zxo8eb~7 zX`fiYnljgxI55#?YGs(sI7~PGq@TGQf#5^&FK+KluUc~!56KJG?G=tFPMhE0D$@2w zhAj}{##GuL$*L$%ml(DC^2@C-zxg!Q7vW+Bv6|FmKy(H`Q4oWKs zWS^?5Pm!r?6J0rXzg?QWWz~asLfHS+5whq5?9t%=zlF`>$NiSn13}wEi%q~1Xx0+O z5~fjPtziGs;T}od)MHQ@G!o|mp;5OWJjU9r{~;oE!~Ed6eN9D{_#QJXPF67JoY(&u zDn9bTGj#>{>3)D+QG#bdJk~5oP7xsZkL{_88cZ34O2Hd~rKYV3tm#h}kI1T_X)=}H?0jIi^@_F61N_pz;lllD)L3y5 zwuE|j)0aR3ouNWGn!cZyKRV4yygrTM-;k z^ounl06d78C8Yu~lm2hxi_G>JvJ)2_-g^$qi=ofB4=vNvai6O*5k-j0GSjP$$Uzao zH=5AV0V2wwJtit4a=GI4sFN zFC8tT3?vr$&m!oGZ!)$1XlkQ#(s8qafJOgr73|lTR;(4nB`bd>t3tK7??(PB#C#FP zzsW?x|5qhhzm`SwqIu2PtzQ1|IR4I)-aUgaz^Y^`AQUx1f{vIz;8I*@RG!VUkW9W{ z%eKgd-{0Mgc=*I!(ha}LjD`ttkDDt>bMNR~8An<7%r)CsyU{#>cuV_cZB_0k^Re+R zA=^KdnjgS~6la)QVn$b+B2@_dUvVcanAKu|<6~6o{&u{u3r2qd&i@X70)ttgG&ITM zoq9sPdbD^UfC-);&gScJ*oGsrI@O}KF@TLbyir)5b)K0TrcC8Yskuw7FNf@09GOv% ztDnpemUy^R^~m?yX7qL&uVrz_im|HIf@Ma9v5VV`(tNP@dV)402PaCaxT zyE_DeySoH}ySuwvaCdjN>G%I#%&avRGktEVyH{7A+I4Cl+s|(=on~xihr2$HuUfJ^ z9(fh4n)RD=eP}-N%@Gyp0%K!Dvbc*V%3(rjIH|$w(Iq{6;B8&G7q6$~N;fR^KW$2D zLW*9_s*LK4@|##o%Zua-?^es(WYOI~X&^9&D$sXnxJ$T0aEMWjk7jSH$$Gc8mT)mA z{m-ZU$(}J1UR3$IlBSh^eZ!nAzG~>SV)uXXL%(40gYf}#Hz#9j?wWo3yslDv_LM+6 z+px!Tg3CBI&%YB*;;(*j*X^c7VJk2E68n}@eoHpPl9dBol3qFT45JU|#2u0-P{=yb z7F$Sh$$`XOUp(YEp4Vu)ST+OJOXTn-*_$Q#A1}f*u9wd(uql_8!GwkOeSwUYRh@0I z&pGjHn8<@RuCWA8DsbYxzd|x$qEIniX6-~WSCo7$Jt&%Fs>H?Fi?S5Z;j zyTbC?#hOfMi7A$1p4y!)E|auIVJO$iXsSXIJ2m7FR3OQ&?eMMO7KYGLK=YZ|^Wgl< zpv80h_Nmx+E-()NV=J4?RK9H8f$y>Zk9 zg2zH${X73C_5V0dcS-Pv8`z%zbSePR*MCw-@Fv?)==@KXk))eG?N@RAKa1 ziB|n%(NeKuAR###3KS^}qJBP%2!2P_FTQ7h<^3^(%;cBN91{>+$nV(q3Pw7&SoXTdKE%%I5jl=JD9U_SR5gNk)k5enEgYCZteP%#XW-HuqegAIN=dDTOJu% zOHTnN=)bnKP3P*CPF)#b{#~ggfCSLZxCdN8P6!Q@=}NEsV{`lN(;u5K6)O1;RZQ(w z->o1w;i}b3K_Ua(m71x{p6k1=Ut}#(qhRQhkJ6Ke7p_DMwR^#DK;V6Hn1?h?Mj1^8357IFW;m(^a)PXw(%VP?Fo;6_XF~;x z8XO-#Nb!fgVOD(JpTmZ=e~dEoZ(W;B7xmB$9_pf<{KB-`B8%OBPgmYTa=#i`{peP4 z-o|MxhkO&Mkke{o^v0aAhRBBaJ6+tP2;SBD0hpL$V@F6r{1eh@+>{c1Zu77%fyknj zv3}Y$x!t+Rx1tT?uV**U4aXC!l+QbhYzrjfdMlsJi&#zG&*}+l6s`x&Lua zf9H=Dw9P4-r}p187?v}R6Tu#RH|mj%^W5JUQCL|%PYP;F*!{^q{Y9!6qk`?A<&|*m z^_@Ye?CtaVZBjWJIiX4jG_A$JEi7jrlvAjlEJTq)0;-V6?APWwK0!{%ZyKP?;SI`8 z41%2zHC!X)LWGCP|MfiP$InQgNkzvjCyo+Y;Jo7XzOspyv{5>QyOu#;5vvufkO|9; z-~q{t;4XSawIxrN^R|Ly_OWfsr+9nx)ub^J?Hri~#=5cO0kUyoDj@LLU!SPR$bI$a zZE9CAn2v3mDX2kxXxO}7WhpE_Up9T`cDLY7r-W+PsDvEb>dduzsl5O#sM&~bdP+#z zO=tNQiLRaiqhHvWnUX z^xY9lg6yp`tj*la8^V(hFX5Ze(_H&|p&EX7e%O~if7ro2w|B8h2%|!bc(c)m z=*>=fS2qX4~9q!g#(L@V~B*qTZH@&xsVfmppU4u9}ac035#JI=e(E{-Z~d-4x-!z!X`wg4>X@ z)vxUp=pNjZBT~kN+|m3R|IbmzTlViG@O$qsBF_JRCykBM;Mbhu-+ySgaouz3@m0R1E$TBQ22TwGkHztvqAz)X25O2 zGOCByWo3XOhYG48a5TIy55No%P`hK7H)35FC!wGK=gDeXy{!Ro@!sP;0S|~1n(HY` zwVQz-#lRU7PywnnJwJHNKQ$aE6LDF(NCMgbut`WRXiM8Uszo@!WMyG(eiG(^y^TJD zGU8z0WvwsVZJ9&0YHJoJ$R#zJjNSR^yJji48ULl22nO{HSX6j)cR^S#)fx+DO`pezBT zt{za|l!D|jykv5NM9x*^NymFVF+3XS79@;63Um+D_Ot_C%s8PDT1My1Ct0wWoxtBD zj&lSJ?#6=1QvnusnI+eC7fsF%drg63yq3fPCj9|T*>AZRxfqnxDtv)|Va)}#DCC`e ztokkkUmq~E6+oXz&r<%*ux~udKA*f37>4&QR`xNU^BH?e?0hGhH=G%5JPby`g~NCg z%C_V9{JR_puJWOa4$UjX`0F6szWPmX2y~6n>n^X@MNet~mnDELG2gi%2)GB%E<>)X z0^lQBS^{4XWjoQq$)a&hxx2}Oj7thx4()L?+`Q51FTo%VdG^P9tw!p819unBqc4Op zu;?@Z?K?RTQ@2!jZ{NCHRrg}siO^?qsa)`Iq2jQ0>4G`O?e~wpl1MQ_XcOiJfW==hdk7Nfu@nFb z>=YXTsjR*CF^rBj>wliv;0+^M=xa~Jh1K;)TY>O{nmer&_2v5&%PxlMhH1%dZ=Xd~ zhkrS$Sb$r4hQk?_wjV~ES(i}KdFj>v?7py!)Eo+VfAZWf@%(jSu)Spp!BC=Y0E$9{ zem5G~j>B^_<3J&^mt)NcbSPM}^7(xLbR0p+ea8Iq&fT>>r&PMlsJL?BYnlpN>o3{q z_E&1i->5cJ`>pEDME$l_Q%vA&BzzbHM2r z953PS0MlJCgzMSkU4?n7FqK18?2eL^hhbSqu&FIx`{iy<*BefH-P&EK6u5ayAjD!YszWLT7Q#x$WWr9gYO}bX z`(|C$2MVSUB1{@tGr2Rnmoj}0ZzCE zU7gHd@_q={xgmyVEnS-vf4?uNhxNxOKqn}`_^%X2Ptj{oLw?lA9)9Yaw)x_eA6Rw6 zT0j&$*jU_+{CMUUFVZtA{P@8>Gr7!P0E)EY1yE=V5{%7<8;bMJeAa& z#2VXCqZe8vLn?`g*A%JrHL8VMvefLN#Ked^`@FPUMv+9SaUnFth#PH=Um)2m)G4k)u{^E9)}hykbaruNSsCu6&QvM zH9zTgF0YJOlE0N&Je8G>d;xKAh<3to;9+Y1Yx*Yb7Cnfdl0+`mO(m$5TPP$I2#%^= z5z~`#;!dqb)Xy_&-Sv8q*h2V-M{Hiy30@q)ND{or9K57xN~o^%`LwxS-`ofe)5Tf5 zAR1`6toLPbpVEGHj=G5vNSN$(^}&0YsB}5V_%X6W`{XeP0VRA&YW&l=5TKjM467US zEO2*4r@z{V9BTv<@qsxMZHpW$2NjtDYiA2d(z!hGM11pp83-d7R1`sz3!s!vSc+R3 z7KVVwh-V=xPzJCq%4!b!@9)k)3uSOZ!Ajm$@l{W}t4^&H2PN|(dfu&1%?!d_)9rMz z1-R7Ip!Vnj0Z1p)-Eo}2pXc{Sc>IB_w@BGBU_Ea$RIX34=}?O;Yi`TW)a}rBH>FxD z^tOz!E&>Xvn1s4mQX;sjO)6nf z_~Qbcb8fywqi{1fomc1Y8kASs77$9r^&A9u#?YJkBJIVtsz+_LJL{AzrbV(zZM1yz z+&g;bj3o#~d_&~AF-ve8jpORC@00H;U3S4M^pNn>A@jnnt`GSmu2yD!+{ zYnKo0@NSRY^uXMje#9jP@Ew1xW$fk8DgxOPg5! z-3Qibr2gQQ)K}W?KP%m=S1H$s`kvf;&GLtOl_s0Tgd4Bl-tEHHeX#WQs#rRr|mpH$e4G*=A|0tBpX*h=nRjY{F*LnDOT43(@AuC^)j{E(xeSCWM zlfHqLke&{T)6;r~N1*udoYnvX_e`uu#rt+|NM^blT@YsQ^x*y{gp0aw^B4!eCDw`# zy&Z0&Od2QE>GYtrWSZV2DB`P|He_iv&jufvp(h2xu&{5(> za{56GGfon>}_C(lv|vZ5f`Er;IwkmYjm(l%)5FiNb->FD)dfw@tOzRELJ z!d8&OPfxj~R%X-rsZ6cu7;bIqXGaP|r~&T} z%d91(%PRHGV5Oa{YrLMRn@k2wP3wc5tzC!$r`2L}1BF@RI8yZ%rZ|H(CA}{v?v5~; zMc)QJCF23e;}{}{Z=8c!B`2$JF^t1#lo|Ee47KIfIg zpiIH9qTYU>kB;%6^u}b?G*#S?Bl`pRKI40+&OTc@@Wm}>Qp%QO7kDc86byjIs=k}16}M(u>2Hid0Y?(QR_eKZ+sc>?x;2{C2`pjd zQz1f)V{p^P<;}8G6{>_YIXyBSe+zxxp3rA?wTTf#8|f(^M~>~rGVDxP2v3w+h`1aG zB)Q8EgJ@0Tw~MPmXrr`}3Y%d3XxPa9LEgK9M#<5~AvGHukW9(FGLa@EC-bK>5+_Z; zeM`okq0#!xGvn|+@LxGY&u(kB?-3N*47wPQQeagjz{~LizP&vZbm9sVVte>w#M8$l z@7HI}b-2jCWI?D5e~8X_3*j}S;KlOv1ut2_70bCFj6BG}U#ISwIndT(F>> zw&j=|xi*FMeBN|!R1seL$L8^d<)CO=G&ByCVKm{Mqp_+>>>jh=RgM}NI?1KE z3qivPix0_RP|Wc(xvt%?o?tewds1wX`7!WVWi(-<>Xqv#^ar6zcY=;;Up&upca-p< z?R$pYN&})6Z}12eA^%6DFfUQ^|>a*)sZ`?jEBZs%Fu6ZL}r z4Dy(MU|UzSKJZMRT9Sn5_3&YbQO6%^+sLzr;r3rInf%+S$x4Ce`)7-YvyCbr4~J5U z?_l+}@U<}&#^1>Km>puDUhLylr>Ie^*s!J$E!UqC_J|?YPt6RT@}tr>MY6|ggV>+e zbQ+Ou0&fM>IfaGZldrt(@%u^CPBGUk`+y7N_Bw0=y zz~2wj07J#WZ^L@_6J-5U_7iB6(ICOlb}%se*)hz6QA4)=e?J6(KXb(ae59KS8-X-A zRU!b>2Ve?zP_I1N(A>k+Z5`Y<Nl|U<*@O znUE3a!>@ucVd)mP%wk);y1E&n`{T%;oDR+pB9u*?%JbYkN(r1HwicIpb^9N*~kc*&ODmy9-z&!V0}8>(6L}&GBg=2iQ@0J$9TTm zr(YUH$xMQ%JXK`It+4!puzA>~dDtHiv%`z9hAbot;GiC+7hFGuG~;3UlQ9sfF*yL- zW;}Sm0>PYk4|)))4mh6)_=5eD!{)#VOdOcQ90b0BZ$SKw!T${5z{8ubCxtc)wrxKU z+%}j2V58Hf8IOX56|!8%;+{UWr}%ST+1h-SWziN3>_z9$Skr&97R()o{iRS1%>-li z|93mVx58k@j(l%yP|k~l7TnCp``f_lG~l|#rZe#0`G&~8Hzlwpf-G1h(`8_$(H<1i z(h4TXgC26;o(Z-8whg25Y;+AC3RvK^LoYNW`+m2jFCmcH_q4HTXAgCOMOK59j_i?+ z^)K8O;zXlN|IR4o5cIfd^zqpgLqRAVmPZj&oq5d)yv0Q|mrRs}Pb(Of3EGYXb1DF| zmuIDnr6um!+?^Z$%AoIFB@XwVyS)GFLd zAKF5COa_qx(=6{ar(9h`Bw-3jrRZ#yGZQ2a^uV8C5q;M};hfaR&cuub#mZ#}$351I z8i}y7J^&{`mb{(jy=fLHv7L;CHwwClaVPX~TkbJlZ(UA7MK?|aR*dOfXrL%iG`JuI zhlAqDi9aurztLjnE_;1cd06AZ^JWoGNaFmpNOVg3i-Rwx$ijrye9dsPJV^}H!|%-Q zB>UMueMzw4F2FJ2IKvsMS7a~W{dZ_f*_fEB30rnDGK1E5AuJAf>3-QY`;^K#?^WSD zM#5T<`}UGWxqnwMi-y8#Xfmu}NCmf-(qoKGJcPXqWAp>c0MwZ(86+o@Zm1^%YzAY| zo0AhD=|H7H%{k{_qmlk+Dm|I@pkC?z_7t?!4H+5H_Wz#aR7wAwn_Ch{o2RkZCD-$_18an#*x!I&kh7QQ*t|Ml}Gn74HE~>P4p$l3zRgTrNJo zYqA=8uamF>XVEA#Bv=c!!~D~k&BO9RP>uM4jOo3v;0VpP3x!DX2XDbM+LXVCP7g zjrm{ZiDBsx|CF$CW3V;TM4J;qJYnM-^6NoqqQm5SFPeZ@hE61CpBY)t0J7hU`$vz= zGVko2RSdB9kH-1rwMbik!PCpQRM7A8w3RGPO8M)4S&j5sC(l}QPWk2SFbh^-9y_vW zf}p%mx;$#X%&aMD(7PwtUSJnoOTHY`EmI42j;VlHutxzuHveT%0H>|+Pfk$%ulE1B z6iVr^-q*FDVepgme>^kaKX9$jYQc9rC?$T%&uM*We5(w__{yX}= zy^{qvSwgS;&@#AJYR_2&`;CLzuw;1=Fz*`d(f{*CX+XV*ZGUZwnS5O=qVVT1znRtd zi!!XmyB(3TF{{5nQ;OnX*c+D^I)1yB?b_&Yedk2J=KsUzJ$;kgqY3HgQbP$%*kmQp zI<;4W6%(+(wlY-x%)Ls$t^C13Gg7VRf!OMYu#@d1S$@&#eQPVz*U)Cv1|iCap%!uf zZMl&5;CA2CT=HxV-<1eI9Ca$nFLUj)o!)s-=tKIW_(=8UF#$`&O_@q%&V?ir=uJj&HRBST~xkqPK1<8=NHs|J-gQutG&I;ECM;37o^viHsP!`r@f!l zLNQI>7hMrpF>gf*YdUWjT;DQ_shr8NQX6%Cb|p<^J44x67u}A#+A)YbGQ~B<{}_17 z&XEUwZ2& z;302G@gOZ_gzCJ=3>Ed)p(e*z{iJ&tC@HQxZI{pf5bzB|n~tx_xa-nA%(y0~kn`yA zQ3i$tju@}t^*%MhXCb0y*V18MHbPM#M`1iSCHwo$wX!g@4l^nfY`5Z*4Hct6!3Yx< z`k-6b0|H0cdsA#^SED&4r5Z@(nn)rZ*m>|I)bom z(K)L)Te?<9)d_b!d*?b><_13Cm;C5n3p6g2Nc>y7U?>Vp)tdl-@9ZV{l@WHb7DA>L zJh5*wevjoK-ffxS_9{Z>XfW2k<4ldg9q3AJCF_Ngb2@z<|9#12+SqI}a9r)2i5XHe zZNgO@cMueviORN)Y4&G3@Q2+oa=`bOlP;f*GF%0TcZZ1y-JpoRF)r*1fbaEpR?MBiSD0AW61X`Y(J4^ndIej`8Yezv?%I%#7T&>-^FjF z4Ma~Qhu+`lrbduq6JZr`TBsF;s(o$~XT>#Mc5>jpmM+Y|-ScM%@A@Sz!urU3PgC$s zBa5Bkuy3stZjy3se*WQMo}+P= zM5rg~E_d|13D*U=uqijWv_Aw298jnrnrz9f)b%1^#UI%V8@$Qygi7&U^qAYlWsxg; ze`q8tpuT+;(2mv}>n{%_w#cCY)?V2f7S-5j1YB$T9bv`_NZpyxU{SDqw@G)y;Mo}B z^ECXat>)eNW-Q0DGPeJ58h`4KC7y(ADKib%)m>hGf}w z=OF9v8vmymRFB&P=uz}f&kv}|p>u7#K(mMk{=-MA--a=PS+Ju!G0EQ_29}ySsd{8j zPXm|sxB-|3J9Q4)^O_S$x8te@eBE)%y-lBAL4K=rB1CvSPX-NFX+Qd{DgwB*{(N~R zy##S!IQ^nVBns&;%pcNRmaBhDL|Js7Hq!Z%6Y*J zYm3M0y3+S>*ZB_;`9_@kiw@GNyw=|JBaVlWSFz{W6ZPs#$-OX&NDeACW>H>Npp8Ko ztjfe&jUj1|%?rJq$>_6-XYcR+4!WftP6E}CA3e6NFNrb4 zv19xaCp{!KM%#l$3oY`M8BakB9CbiU7fXVYv!a@K=aPyy1)yA2=%3Myf_;|L{o_ zFAG6rkoDf?61i$XD5AY0n^B&?SYMrgl|s5sYBvS*;c3cDIqqJnmVJWR87sD`YOFV{ zcsC}$ZB%y|L*m!+31%-r1~@qpUpbp=Ov5huIn;^Ps6SH0@Ws);-mFp)d9NQs1V}=~ zz#74lA_}~w(0<VTa7C^FLE3=fJ@yxow`>PgC-pyK$7JiNDN6kFeYyB1jkv8dEruR1Fz z9+(6I1RSF10|N~2Hu*}*MEI}nz1<|?VZ++@uU{VIZo4}ry5)RTpALBvATO`jY;N3j zpC=e}q~CA(Z2uMy#=)ohEsAT`T2TvGf#*mP+LxTpUhc_uhwmCJeubQB<)_MtwW5QD z2!uNnaf{u}f7?kLcxZLr<16woVBEfL#>lH8Gjwf=3c)cmMSeBjnNHl^+VOCZ*E_fK zNI}|l0FtdEj6f)vXzVSVdJ)ApJx)RG_HuoD*|gbM0TdF`C}6x^OO%i{>0V-WM|PdQ z2>Ry7(L1Lv4SS*f>Y(b{JyXcOQ!$B5KpQ{Qp3N_4UQ;eWiLLJDc8w$Eo5gG|$;WRQ z5ocw%+-_5ukMiU&ArcTphHa{W-{y&dh)*SE)(Gd>h+E;r@>)5hL_o*VifpvQ`#Rn@ z>S=TkHK20-9sdZMN*qwsAny6F5#tf~S0HaXjjc2`(ELlP@O@1sebYXxmW#;uO((g* z8AxTgsE3}ozy=FSJR1bQv;~}D+>M(=H3IJt6cT>|kv^7TSb?B_eb%gA7i^6~*pMW) zGLS#~Wk|5Mc+~U=e%sDoof1*8H*7Kasx%OdADVgU%-djnoU2*Zx~{d=)u#u;8mk6k zUrWB~_vqx-$R*IvK(xD!=|*D4)LpA?9X>n)=swbeuV1q}y{c-$SAP~CuvNEt!g+42 zPL)it+F|_hsLY~_!9Jl=|BpG=6 zSO_T#wY`>kZjYZ%puaMfW*>*k8pi4LfYU6%FAd6i-(?cdEOT2>zQ%pT`kdcOQW+0M zYy4Bc52()@9DFc%Ae@Ge6q9Ydx!E2)8M4)=aetQ8bkb(4nPzgkQ)F@XhkaO#85RsG zMt~lMSDwU?ebkS$Y!_a8(nT`Evj+M)Z{?rB^*$cn0 zdc;=_vE`1>H0joNHgX!pzd%-Qad_?qm@dr0sFdlT05V_-uoyNxEK zPnm%!!Krpy`>U@nJ>to$4TbMy1jgLX8@{|*n8zfMsNN-oTfFyKp;c{4;jj*Sm*9bU zEpH`tmpnyu54|>qgFD^t_dJ*nwc$WS*e`)+D~}l~cF9H~AMV~@+8pTrK>K9w+aKct zh2I-p^>9t$Fg@uk4pWl3cT<$90$owH$3Na3Kr=p*`2>` zmGn7|J+>U-=bdccU59QwjH|FABW^FVH1XKO2q~%`I^AOKZB(s_CA(#^*D3dmDt;zQ zla89JB>To_ZMCzdF}406`W8^U$`Q2-$;mx#Y>RV3Xn=W(1rGYc7`aH-+A%yi7x0ZC zBnx6JmxCtU+{`@pshsxI`Z)`&>!rVkGSRR*LvIMC8hEO++aYW3Mwz<0)OfiJFAO&DPeoZUZZ(Gd)+eGbn1!Kpn%(B=7 z@G&*3S4o0B%SNO*_D#Zm=2=G1&DYE0mw$B5ge1Z|!IotHCn;vQuv{L#xqd>G?aO<% ze(Y4capYw9@@IK4BY;OS^55)DPU*4}E0!QCGeep#?8oZ7!;*%Ot5GO3=kAh_BlYvE zFV9|RjosxsgWbeT3@koklXDa}wE|t^^v-JS-q^a*v&cpg8&VHxu1@F{#(q zkr|6(7M@Q_xrv@O3qz$0#eDuJUsPkOBBzSZuEjklk}XfO8uo*m%jZ+z;%ZcyU8aN9 zWLup-jiM!`T;jw`UL)r}eQTNDMr}xT!Uvi*{-u!WwH;F)Eh-F-Kl`w@OO-vwIYf1J zTXeo5I&L=R-_=%HNC;H)$T1dQo6nB0U!obzGzw;8TBrNk?PRw^qSi2-NVhyBs^wt&WiGHsAC`CkQu#yXw0_=NQ!3PJ%|KuC$}gr~|6iMKPCuC_^MMl@C|t-Q}Y?U4B)3qt~@EwaZN}sb=mN zz#dO8yo}s)x$?-4QwFS?7K9@If#8n@1OmbGupXH{L*+fPsavv$ zzFy(eYE#IMRndFU6`WG!jjoyU!I?^JQCk0gRhPQmw=8!M#l5xck%v!$mkqm#2Qq{| zZPdEtA(PiPg5T1+mz~7>Os_T;@&r+Fi@f+gnbB1@0~(n$e3;`aOh5$ZEHd~h)gjuw z(TVY$|Dra5h`2zRGd8c22CEU1KBrXM9e3YOZ9luAiV4$9Isv*q9u}t$N8Ucyi-o8d z#Dy%2M;UoTHXeqgpce>2k? zz}wt#_YL`@QoAh_an1*4r=M|UK7VztY5C)}YG6kaz!Me51oWUAVwcmQR6tNWc)L}9 zuyHX}*#0Xr_HgL>h|7kco7#H#^bH3w`dUq`VEo+iB6@8;(X+4mtBP@&1|p7HO;$UB z9{NGCiL8G6PA$^GZN?H+7-18{2U@?D5%9 z;FBv6>lT&O-2t9tKP?A-GTGR#liN1+A-VU*>+3IW*3RjEo=01dlBHN-5>#4?WS@h$ z-=>Bx)>oZ^;yWQk>Gb4Ml)Y@8i9F^xUKyzzbyB!&8%ktlW|$FX&R)y7En=0n+S2%t zI(B;HUT6W&BlvpTc7y;mD zXt}EHm?O1flSjtcuo_AWmQ;YhynNN#*PPZmT5vp^%zP?^+kD3-eNF<#c$*N=D0g8e z#lkCP9M@~NQNUoX`CH1W?QVyeF7(hvtvO1yDbbqHhEXN4#Is%XQpVQ;Z`oM%pV)4B z6F@=gzbu=00c)2ZF&bbbwkfI%Ms0RCBJ?+>aq6&a-4%ez%#y+rit1#!A&bDc}lI-t9YL@diRk zss8sVZ|^@*6GesfhP*OFoG>BGJOt-j?gN$yIlji>^;WDc+}9K%|7=>>m_7p@wHrnT zuedH_yw59mIPrXT*GJw6E)`cAJq0DEKZ)3SQ903#kJ;s-HO@})PrMg0q8yvVZBLvb ziXr8p;@ncYK3*awP7PL)sWwx`f?oTU;*ktrxPOv#?kP7$~!gA@`1e6G0`(V-&{`h^rS|;T8Va> zgRvB%$d9J`&mw&=t)PTgg>U{ymI&~}4;<}7xo>(S{f zvzbw~uNvQGF^<{F4M|2I^7)uzQQ%j~^1ep+Llh>-m&z{3_6gRM#EH!$@6gKFM!YC&Sftv>;3U_5QM?Sb8kR-5wmHB$CSs&x>@H)cy#Ua#-z ze>+KyE3QD$!h7L-YYf5Ps!m;+jepOU+YNVpD^ex^)>9GLR5k;~Lx~ZdD9&7dL-)Bx zw}#;*KiSJ}{pDOji6O&m++0i{ne%KLts&Pe)6N|}K%G;+*!r~ixxj=_|K%?MIWFQq zT-m%b2X=69aKK(6gzI3dff+MQ}OgoQ}dFzL6l<&@e^4Cj~WYEnrau0QVVrz)gQTuD^ zLN4yFiRQ{VP>)fPPc_Vhyqk`}0Kc{_x4)LtZ(li#EGE`v=dR2J7y${#9A;L6ett_$ z+hoggU*W8%*0dMa$|TaaYutb79iTTMn|F=a&X!5Pa2XGYUTfz4xXTesvR{uS#cQv( zqadSb8>x0GyJAEYl8C1;3ovH)z^lmF+jZn_uY|dxfv4(LK~}WOe)7REg{!bN!_h6i zS*dc?Y7MvJ2tVVdJgKuW8tqCe8`*4_!u5J|OVb(nU2?WNT@#^p9R(-Ou+Bd~YUHx5 zeDDzG+AU%0Y1nteQ+FJhW=)Ha3%DQm72 z66(x=hz=sZN9J0O)kmkzr5Y9%RWMazrP%>9_R$Df|lg~i-s}TQ%WbR4*CK?LU zsRDH(G{FSpr^1Xq5l`=HY*|4_HSdm>bNPGKu%M#x{NYK`*P`LD_rm_-{QTUd^=t?E z33`%E+A8t0L>@(f%Z~nR&P;-RQ1b4l$c)8(EfiB>jrA~z%1^1v2!3*ef<1b&P3Tae z8WS7g~sdtFL*9Z8zL^cqwH@vkxulP?`3qAX zZmsB7ih(@(wOQ#Qd~{#Ve^2e%6+RDMvSrV!bI+|>^0%UH5Kts_I(dn|{_y~hrJK^c z!p|1WB?J9y#H|`LRs>}_(mi8=03S#2kQI`D8Y*Yb-nlx9X3Fyq?U);ZCRzRW1fSIC zKZH}sT_~E@tl3uPS_iFT{xBlDnpnvdN&d?W8+<#J`O*p4KTtw!YfYzt5$akk-)ddT zK2fsiyJk?if$<687#|S`mFaGbCajTC(_Qz3XTE(r8qWTdg-Hl0zrzln;hR`!|*6}^;l{%n~D8S-!gX~EJ-30C|SeI z0$!s{sCjpH|Ga-ps^hDqln~B`t;s?rR_-nmk_%k1Z=2$SW7aDBhuS-m0Ivo;tGa5D zNu1P8&K|#5F+Eb`A_L2Ck%C_4$yp{aGHm!2LZbWV+l%=Fmy`C=<&h7;BER?okLscH zqc+(uq25*15v8f?v7|AMA4qxjFFHNIFk&TUVle7I@PYFqGvxid+P7-D}^kgz?bL2{B$$&$^*rv@|Vt6KR3NGAc;eDm(#W}GR4A=EGu^0BNi7up*LAH;`I;s8!7|sRVR3B#+3Mg^M;llFM zu{rX=!8l9pWUJE8xk$^Cb+;G?c6>AMvLJGTkQSunK8)lktTRy@QuEUOMw}C}Ic&tY z_1!1U7luwxcdYfGR9FZ^4851}AkdGD$s1e(Cw-m1LzW?*nHP_RM~O{ss?Nd9^+e2H zp1jb1jn2|>WJjHO5J9LNyn00)98WZ-#y)xaytSy9pNQ$gLn_1bItUiUW!A_V6Bo&= z`SCCZis&HEgL`US%kJjLgC1F^HLhnje9dgy0l3bfBtxH7STEYXo5X`#GplLgN~j;L zLd4D^Nwb$)!BY#1jTBhHQ*SAAakL@)EO7T2GM~B;{*GEJIll;4pcYmqhg;{iZ}6Rz zx7PtQC`SS05wy)TFvh>BAzvm;%9@5C6t+<95w_2qpSRMCzcLrMcyzYYG@{mkJ{8mX zS1L4LPw3Dd)2~;0&L?E$bfU`CaGKDZ666``$USXlGie`AGKs@8NaO*Ys7r zmThKif=i)ilUrDHEyk8cr2JBqba<9^$<2GY#Fj8(=Ug|Rj4(hluq-f~yvG3O`4hp~ z(K@F!1(y~$NgdGHRz4N2>?7kQZ#1;z4~YjeD>b(sL57>Z4{t_N4E32BBs z1tUA9>2!%d`9XhFb=~Outowbr)Q40QD=ooLkt!~f%9mDCRVz$xpiGt)Qz?^5LQhVj zqav>`)*@A_k58hJ#7v@7r7kE`3X{}IE=^L>k`#?sqR}ExQU(4?l9nhF&7b{OT3V{5 zsT99ZMn&DAC1$~1L1$T_xyS9?nBPD{ni!f?qAE*`VW}cXS{fd&R*+n;mLRD~EmfwZ zRUs`^S}!$USV5&)N?T|}ZYixQJ(lrb>A&4jzj}+wIJwQidfCLhGFp7LFJEoT@d#d| ztbI<>1!AismLS3ycc#0ZrnG$-_l$R${I-xN2qDUvIYa|6q!}RVki)cO#HzXon$Tus z>sBN#KIv{wQg17VZe;lV3bS?_$2E z)Uo3DS#KpfS-$hbuB&+E%3Ygn;<}Ugu(@IzyOzqISXpl_8VJ3QHSJ&u&6#O8<3p|O z#~!jb-}mcUk@7eo+i~9`Hf(3b+DXdkS|B8e_!VxbY|bR%*i%;Y;|%Z0nmw~G(;*>dv|D1vp`|Y;7<-3B zM&-WHxBw**gLOV)mF;)CxpYm#2tYHT5|h&D`o2(Cb-rQ6QL#@+EvWtIuiV{+XY<{# zsjKM*XTTTl(yt^z4I6HtcW)S32!9?Sy7kA!i}F^&?6C&d%);KsMuSe&%!F)iD65Ur zt;C@QS;Gd=nzf&LuYt?y$Ev-AbL#@ra}EqAMPnwqtveJNA}hF4`~r zp_iTSvzKv*T=wrQmuHn-h`m)I5rqZJv_4$Bixeqg3^KT-;}q&ri)}=3!Rcy@ry5&> zGlM!~JsZFc+}S4B_#B8(%0UC8JQ(8B`Beja{ z@$V31vu+yM)}Le9xaJZ7JH#5rXK~ zo%bZ)S1WvYh|ucc1}4ro{YR#-vV5!F4viX!iXyplrGvWvOYWJpOU~rucMxlnS>=jqRN-0~B zbyfirkLYepv#F0%;00~4H1*<8$avc;D__Na%m5u;=Ywoao$+#I7VL6fQNtRiZrA$l z?#g@O|Har_K*bS6X`?_O2@oK7f(LhZO>igJAcMOO?oN>44#9oU!5JI^2@u?M@Zjz) z|73U1JG=im@4daJr>1Vzt=nByeQsBGRoxHn7*!NOAB!&2buZg_-R6W?m~_UnZz`j~ zdasDtpp86?#=wQU>QD9=&-D15ez>McG&b@~n1~bB9BWm3nbsHMtndPMH(Nhugf@X$ z-KgIDmv4SJr21yvB7vpZ55z6xgh+=MpWA{nf~a{`ong-zVd4%YDKJs%zlSvVEg2r& z#%uF7YWkD+?@-6yKH9;&Km6^`28oj89+)wIlby(J!-vheQ3(v+RVV%|OyrwbYd<#v zboi6@>$g=N`*Di&RfJNxFt-&RB0ahUJNS)-=l*^;t3MhiqGDR!0p~)Y6mQqsd7&8n zdSugnzc6nRMUk+KaI{9gQA~C`cF9i>nMB-qbiFO(ZBy|VVeuj4l85@eW7VZ}3;z1M z3NVJ;!4ZBs;=}XG{nw{L01s})-`?P-Ue!UyMcTuFYS%HCy`3ydeQ{F{By)`nqM6+%^SiU8q87Q@S zF$Vx^v!DF?{XNqzHL9xMd>fKP$_Lu-#HHQ-O-cr)Df-nB#B`XU;rYlHP8g)`3UJX* zHm2?Er#=GdRPm*504Je|gA^aC8DAJIe=CT(#qE|5tT*n-_KTc%M2rpHe~&-Hm&2mP&sq)t;?QKFddqx@GYn0Ns6L3grZ&Oy|PLgTRN}tXZ{<==_>*VQ1 zII8_D@9|6A6LJ>K!_ln5jJAXn+*V8N0CbF-OI zE8T1-p#;x&j3zfN6QrQOhojMrfQR{)0q1!S;DOx-BzcwzR_?6 z35f;|&l^rulc|;GGp@}>wy#>fUWfoCBYl!?qcTOvl8TmyQe2M4!lWYstC*Hq z$02-2V(B}_?c8;mFv9za99GBqu5_l_PJ8R zw+wwB6h`GSKInV@@QouI(zQjBPiV~WT=zzcv)%HQH}69Zl?V*>?iHPTgInByozczL zBk&i>HYU9fG}7#L=6?}^g>e~@K_<)Z5sDOyC2tyj1%Gm{xVi@JJlB9N)7!py-JNpP zd3G=BH=bfyXhvHV1M1;7&ngxB(pYxI^k+OM|QXy5L3FQS^^ zoVn1E^^Uw#vtGY@ay<$Slvmza(BNI>w_}X=C{WSP@oyZf<;Eo9IEXe;hjg})4fYoe zI8vy67~Ao|@RJ`XMEFjV!~Pw6W0ZModNX^vV-alO4D!Ty{aO*p3!x~G9;Rl|J=uJ7 z9xLn~mUVIBbz3wN@ZkP%z1Yi}{cDpKe`Tx7VNLT9_;PSPIHt43lK5@JD>{xQ<#-eI zqjX+Q>~Dq-I$}fgOleGn$(GYAU$xxCkb48)qsN><|3a}_0RjCmJ`RZ4Ma;jUKV(IjzE zu%(du6r!|8Pn_bWo^zCBM3 zzY?eWy&=XKpYD11-MGtU^$iZ57I@Nh>g&g6xBbaM;mdE*qCcf84{9C){nRQgi#aE+ zy{bFY%8)Gd(jMl22nbo%XtRfvlW+fr9F09iVhDI5sC+-Y*0Sd8BIBXK9 zY%;HDsPX$x{eL%TI!FarhA#U)(#E#6P$GIY-TLsu7Z9;u4=r}>96`2Gc9shLtrkUk zJTk1v984I+56=01eYqEjnH)LJQ zJ|hJOe;b*8$Y}k&3@bwdAz+?~taOYaAjl#HAz&h4-r$|0B58hpRfAaB_DRo~xrX=W z!Z%(71eY4#U*N#Z#k6{T`(F1LgoC{0n1xlB(4m7ALR%K7uIS2P34|<=$<+fxj*UlYX|}<4#_DcQV;fiZ(TF;UJ&UxSe8P1v1lO*hCX|}ru#=;|eK|h&o?ERv z<*0`0Gvj)m2qF{#h9KWB&u1wftN<-ngBc*a=F0{ZAG+o3L1&2awRFD7BV^mG>>y~$ zYuOr022s6Y{6d$fh=70^h>QDKMdGd159_>fA|4eh3>AsbnN*5FNuT1m2MVbq6r;m3 z5HPr{^Ej>Z<2kwiU5On57lEiGq7VVO z$Has^!w8o)>}@xvQMA%Kd@))HgbcHMO_kFh{^eG+fKJYwp`MBYVxS3GnD)|(lo z>QjT<-d5_E@ro&p-+z|=@z%^b|NHA0#YrO~T%|&F+6f|KZnJT-KOgD98MNaAyXx=4 zrl-)nX=g+tlD>eYlP{E1lxVF*UMs0^f6cL?%a7oa&_GL$4^%?pG%-Sr^dhqH%rHXB z%|pO0q?IXE86T%YR>7sT@sEBxBgW_j2CJW&nHbrajWgVrK)+|=BL9q7OBzt&CsKqk&RIMTXiK?2T4vNINs%x{jaW$FPpFJ-W7cA*GCRW0fuJ%}c2 ziZT}(Xxc(+Reo~%VR8I4D!79fc$|gxjsyupM(UY2IEhbGCT(s~`~k0KJtg*R(7LJu zRm0QQsje!Q`{hPuc7QQ1;M+Ika*c9`sDJ7yt?iwo!}efaTR=(GvR@18#eT|gYi4GcweDUwm?P@O<@k3 z{(&*QCY3%KZ?rt57fWx<_ZKO3qM%i;HBfK6H_|NW&#izOqlMtxkW%1Bs+I4(e-{~8 z(m81cY>PF9?0!>mm!{|9*FXODb12#q^RV0W(y#HGQ4*6>sWwWxuO1VmyD<=K?IhPw z+~6q7Dr~XYXU-S%ZXv|UFwdxD?Sjl_F{HY$tNBEa$F{fwrK4&#i{uS^fltnMt`|oz z(pdX}97BP+{mRKJF85I*v+46B9UmTVugs5H^{<8Al`iX^Ymt_n^_#>T#a=qj)EzC1 z@xu3vu2debLFWI&;`KJDYU;xJRjLLGGdP<3A6$|&6kP@yYVw3TIQ)W17Gq>04=xrjRT1zi;tsI>)Qv$p~!VX<*Zf(^M+H%^B zEQkg7SK#6hlj#PN!Nekg#@co7Bb$=}d&A?47zORzz-EFVE&dj*T;17r=IjBpVj{MO z>I;L9HoAWYSO~og5UtvY?kWh6Aqw`CC7csv>n1yC&4#g!gl>kLP2!1HLwl*&f=?)e zEVAC_@l-|ZL55e_$v);OQZ~$?EQA4ub}eo{Ypq(gLZc>GZ2PJ#&edRt`HwEt3CF+8&F`s;0x(Io&rap0cvGe6b^fzOoq zZcdu4I~Olm_~bJj^u4z;AGNBjJ9uu6_-eW^z=y{yA8)>wpU}XFlG4n%%{>52ZK>ek z>bQ9prb<-h(gtX%{Jr?#X+imDdwlQDephBakZ1E^L4Fi{gEP8RzFSn{O^|%sI>@eS zH?p#ryf5XQyiAY|Lm%@x%Mns)=;3T^w%fsKrEXMc&V=h=$b{AvT1Dc7p>X_PZqmcn znG${j>^!lr34(o@ADUBHed~m=*mW6GK6UIg+N$e#gE8=WMUO~3ln5tG8y??$o+xFD zh@eV#4oBCdA)8Ucn~bX8)Kr&{c8>Y-xaY+=-bteyRY6ct4xUAH`qB3)wxQ(et_Gx+Lo@&t48K!Il1Cd27qtN%f^ z=>H3kUT@)u2Pl!fKc}nQA(O3y{49i@?^BbLy;3PFp6v>U>z=~DtUkdEN!RBmg`n>< zGd|*IWWFo>>uZ?i00eCT_H1?@R~J*%P9pS*7oYGkV}7^Ns4C=ohv(_JowW*&phE7g_y4p&sPecA(?*W0{rfRRm0T^jnJO$XUi+ z7ovN{7VZ^KjCY7WEU62Gu}qB}jjDVq>o>V8rFqXX<~(>k=yT1W-t9s(lRr|LEwoim z`w{2MI-_KgyHQElF4@>x2QJes`L&0XxZ_Z78N=>s`Qy&k)v^5dguiSQ5#(bRt(J=W zS~%7pw^W706ZiEqkA%w?n4V80PFMCGsyekw{Mwwn`?Sslmr*oF65h-?jMX&F2$!Tb zNRpu+m#d5(;0yPX*@T|ytwddr|IW8Q){m0&p4I$%Ft^oEaDz4bv|Vy3_9fqkfGxUb z*P8xJdA6uTygf4SP%BG5d@+&k2Q^mfEM7&ZU*rTnknou-VW=ZK6XgH*Z+qHLKUg4x z)*oYc6@!Tf6~kg*cn2f91)kLEE5XdiGQrfi8^a@tNzor z9H8{O%RChO2}^Rk%WHoI^*~&G4=+fvzzCH(Jv{j`*Ko=%ci?*uUHqd>P~O{wy(-UW zyzdF?!f&>%?=z2|d^D7c8NCL@6nH8G!UwI-$fu_gONHnfL~%XUo}~%h2|b^l#I0Bz z?`}>WXyZ3AoWBh$d^|##`RMUZHZc?zNufibM$Ob0V&su< z$z_=o^+iryQM?TJxx7h*Ma^Q5+WUlMsJP4cMZu`NR;}Da>dVuS^1w3&(}s{})T16& z!4+BCLseH#$d^NUuH#m4?|eDkoe$`Vh3=P5=hSi+e*c?ahON^7F3$v;M`SJ_xikS6eu>CI|I>&A$n5{Pcdz}%E^$5a|rzV4_q-wsejzZu8ZDpgZ2 z)gayTL>a0`?bAu(6f#F;lsh3iSE{fFDxbOT+T#mJ$#>Z*mdT`kov2!xof&7?8=6il zC7>(QQn>Ws^C6>+y2kG2z>H{m1pG;hcm%$SLv)AAY$)2kKV>!*s^-b-f!7ZdoiwdI zT+clCL`Qd7X^a|+JtJ@xEfojFkrT0qcp(s+ltV4I#1XhQRjf6+TB_8pHR*rin*~;C z_gMiqsr*!FBB}SL{dgB&M`uh#x z3My+&Gqh)+4+K041gzRGTTuXJCvDf-J7)7-zG&^+1nSo>l+?`DW|HCMwc)VSvM0l^ zemvRueL^HTlYSkOfALyVa_>}8(<1G@n%@zaWc{wNDrW70MNf1BW|!z56Mz6uR5lZ+ zRe=l=tymlG07@|Fjk>H|)_!CnVAelO6+M~wk1MkLIKb?V*&V7}*4S|+#FyHtys)+1 zf=2=;x(K*kabM-PDHh*b?w>MG+Gda6p+IX8FjasV_P z5y=1A2CbjQ6#dWPEWCh8e+yhQu~ZbH!)Zcez^0sN0=ErLB(xVqDyAz-8|R*a`8A#g za!eckO5-Vv?F$_z4fY6bW`t|2K93s%@MZKtzXJey(6+|@bjsmyt|9_6YHMARZgSsi z>&STOOneUslZ8maS0y0-!9kmwVDiTYH3rMWoSSALTeC;{q&73{Quaqo&ZDoPosDqD zlUn(z8WKM>yHErH0vdKQW^9)DvLL$9-IUhInF;^|?xdvxFk4|<;ppl5I3i^O=cX!b zwFYz>?a0lYm;iVG@*%*R8?+^prph_KbIDMUgRE@)GAa(KkG5<)q#d4J4_El0+i2Tp zvos(t;GFCknHcv@Ee=O5N-_f7ECTD}Q_?05H4|V9|DP_ayQ>Q4@|o5xy9XSIZj@IgUJ&5$D_?m2BtTf6;)s=Ju6K_P_&0&$dE7%9JMJP=Nx zP9jU8mJB0#AGjNtM=kuixpB~?YQD9r@ChRs#HL47EaVc2W)yv;LCpI>PYW5gb{jy5!ld0z-=drs}G zWzT|bH|N*9h)C6m&SGC+tAj zo4Z3~)(NsO8}qFkn*mrp&!it$a4jit^=sOBvE*<1wI;nK!?``q|Gt!;|7GB_ss`|mBc}{2i(i~nT3o99p)GAFURJt3F7w!`4MIo9u9c0Ic;4C7Pz!^+_tf+T~k-2d1)94GaJA3~YK zTDog%@LBk(rjRj?K60JxwJ4K38#PO5k$T&u-@s9@*~~QQXP=uT<--@_xZ@<>g%2y3w~y zpI60?{HX?7^xI}VZF)R&C$1|CVL(kXOtUb3@PI z;H^(wTX=mmXRca&*asTeAG#Av=6k;krLcw6B&SsQn(59_zb_VcZ2oh}g9?-_*MQ38 z*X6TP%cnEN^BlU?*hNWB=u+NMURU7^eAMa7jO^4Q0r3cfWa1N`H!r{Zo>9m!3`}L{ zsvLL%c+89_^L4EdEx&lJg;C9vNw8=y8QY07LFK+4`dm%Hyk&bB$ zns>PZbT0~Tv6f~k=gD)oU-F_#zmZLGaIo{|{Z5xK*^&1Uq@PwmQ#Ybvfh0Ne!ui3wGHDDR5lFTl1kx(L~}&M1D4ip!^k zrjN~vhvykkcelFqg_K6S!*eLu-Nu}&UR@moPN}b7*tE_L<;qW9eh1#QA;r+%wcF*f z9NH&+2i|wX49nkYga_l(f<)os>4P&_4IqdP5agaOy&ox1Z=JpFr`1Lh|3rdSjJocL! z>Vi)>iuo7P&%9#{$t#-LhZ&gzhv(@^bB%l>hkJvt`auV#X?NvIzt~B zStG~DOfoD(RjH-5@ePmE8$L~r5jChlvHb`@pcoT0YEwJH1hVJKEOl|ivp?ZjeihxUDp!~mM0 zkf30=l=cNg2e!or0<7euPaVlPSGphREZdMy06nDamzhY~0M3UyCiQMooZ)U2<{R$9 z%Idzk=%$-WItJzyOj$O+VKzG$oNb_XvM}A2eV4vUUFl7R(xr4}0kld1&J^h8AVU)^ z{HSzhB8lv$tR1Kz$rND73dK~)N>>^vb;fT}SKML(X_}@nw8+EKzQW_W3-CHu=It=i z3qpWD?=5pLw?|_0AJ-17=XA}ir_`eWtmf&ut!fXr0QG$g9l_{j<6-FSC@<*!9)6?U z9)4uMT$xgPosOPw1nS-c%3EO6tjcn8UO>plplsLq?RnSkljaHEO z$k2}Rjw-RlN&)(5A==LPwSUw}Qj$rM)&HY{k^Qv!@aox+B#+8l(r_hx-JBNSF)dvf ztaL8RY7?-|Y8chE)B+0D?5IWWN1FC39K>XjeF~x-Vt=%Arg3dgq-Cy1qhzmJM^hUF zVjho@s9;Mg*5~%#x|>E}ueZl4sv5Eux-bHVQDx20RsHDS8C$Z^+`Dd>N40FqWc%F& zpEV?V9M8AwF}RYG`qh;Sq^+^RmRlIa&ArJaI-%Jz(|;1r7mYO4jBY7ZFod(?R+M1r z9s!PsgM{6_Fu1qlG-e|zGflRSgD6v2pSv@Bm~5KT~(bHKZYIj0pZT$;W&DPC+hDp z5NqZm#q$tVg7c7vr4Y-BvF0vId#+VW)pER7&#yXOaQ|MdEzfU&)F>s?l$y>rNVHVy z-^;ET#AbsS>I=haR(+Zu1CNu~xMBjM%*w2& zt#<&1DT&Xa=7`@bOR)zP1@X21Vh$0O&hZ zty(~!bskBM)?~Ye3BHP00k-Pq5Pun1-vSC%g$=vtdbl0AH$o-*nY3)bN#5_JrHtW8mnt7=_OR+YAZ^J!V-BTt(V&{HKcl? zo|SNSl_Z#0&k=7kG-O~iONGcN7%3nm6?i*)E*-Tqi>d)3rgMLta z@p3ZxgP$c@A2sQ+6&BeP_k-ReGw2tEbp*034I=q3+v60ttJX6Lf}p*6uTOfe&%<>5 zL(5Dj-d(fa&VumK*kkqN;knxO2UE3a?S^Zz3+~BT-65c?zQAOpL!=Ut9d4TP43Bl4 z@`#9JrxK18u5?#pfcGI`l3`%yNPzq)(~q;tDz^=Js@gZmvJz=;-YHZO$*%rhkFeoT z{zfZp{EM%SUyTz76=yvk4#-8T=`N%4^H2OFNLzUoQ-0lE`zRefw9jXDy@SKYlr zVIkyLEL9t8neK=ypEB1Hsn260>L}=qY9S&Bt^J#DoS6T(A96;hvP&+1L(|-LVJ+#~ zx}2`8(OP$6J~LE-^L^XV(SY)b+g`9(p^{bjZpapne1Qx@eQVkrn^Xcrp7SDfma7ZE z6UVp#Ur)V44^?uuZ&Br%>_n}`Vk^XXAJ0ozPNxFESMVXCCwVzW{q*TBC(BxVKsp}p z6MxW}ZP^Ot|`k3k|LWEzEpd!>=VY zI)lv=MXP(N-(UymJ6-?j-=6ABP$4^3j+uDTO7;9+e-{wP1S8UUt-N_`iaPi3M6%XlL*{ZV|q}hQKG!AQqv`C3h;8Ni~5p0QbKfP0N1A4x$#bJ`ufhWCiNDU zTuuyb7WUh2D=m?OeShruHF5G>MwmDCqjYA%1j?Co%2dsF&F7W*!c%-9Fqb-W9$?P^ zWPB-=t4;~+Nad2St^Cns25|6ShV<&p2CxntX?8U)l}D>D?MONBJlp58{;jDfTM=t$ zYHI7uYMeCt%YOjPZoP1ylh(2=PYhJ?YO5sPfNs4+f^=r zlz2!bdpdSriRohj2Vv*-dMpjn(1MpEK`?MZ?7nUV!@Ri@OmrE~k*^O1!McZFN!>_VVS^seZxC3!+P zRgc(X6yxZC?=j0sHTSe~jEi|pi+Qw9DR%)pHVht{R3~>(e4*jGsjzHc*xk#qNQVa~ zTsO9szZVXyb8UfQR-JO*;!kL9I?2yO?gGhI)0gSVd)D{q5%;KP7r5INSY-OxUM;RB zzxUrn=+MbN>u|D*S%Rd$$8Zo+d3rxMeDgz&=);}46Bg?Xu(-IJs=47LxszqiFb9Yv zlU10_FPIxT6)sr0eTrt6#O_^{%!(g_+Jsx0=I(>f&=Nft(FXEwzGuk zQ0K23QQw+5}J*puG+KXisn51zNiB5 zs9F8Fn-CsAb*4-a>tvy+si}cV)e`)H5`umM(WwX6p{a5^mr1H1=IAADKJ+iwVzbQ( z+72wQUxhnaaiQZZrJk>3L}|1GHf+;mI(TSWxKrt%gPBQh2OO00%anr36ft~WF*?K| zoFCX(5mUX3eFZ&=vG|K`%N%=EWCfh5Y+}-}Vd=GDDIW*o=bLo+)6{CG63hm7Td@=@ zvgF$nbdw-;2LL8)2qwH@dX@;*y*f4?M8_M@J!|wR$Mq;zSk@i>$vhvSH0Xvl0HqoX z7lM~q3V6}sJh~M$$_R*3BZE)_M9G7q8$nTOfXI&MC^fq1^Y#Q2_WuMP*ja~{SWr5_ zk)R|eKH0yIWFLGW>o5$x0*xDVqWwd>ldfq9{sJ*XjYuPOI8jW zR>}=lYzLO$=OvcV(1r$<;s$7xwH;Mp4U`}h{_A;EWW8%{!fvQ(A_#46BA9%52NyA< zLLWS4Lw^z+`rep^?L_#tS;3eDWndhdS^ys_SV2>J_|eggt$^spcC3pv(9{VxZJ+|W zlNB(^$)0cl#8PC(%u<|h|4-Am2517jms3LsizWMu{&0qa6RMQa(yj z@L9PDdzK;(me70<3%a#E{NB)?v8OUNw*OBK#*&!z{k*AyVqZh=6mMy;b9f1ndU`7slFK0&aW>s<4>R0BBZ8T#k2JcDEBAWoEq8 z<^5?wx3M2TCe0Q;Thwxo#ayRaIq=-o<;>nU)-L>cM#Y(To|*PrZrC&X#lid2OR*h3 z>m8q>5os>aSE-x$Z!)*ax_7<50hW9rNi*Z;a>IhRr5cT%nsH#{JlQ%AYsg-di)pMTE^Y!E2 zf16PBC1P*pE+*h8GSjb?Ff)U^=QR!;YDTKL#FF4#8 z%E)>ctom3t`Q=XSb`GAtPk{E$&mxZx)puIU8UCE=5gUPPGYxtQ?)=LqgVV}c3UwzmWE7`dRHSRxv>-T9jrVh>gaIrr4R{3g0*38{+D}?&gp=0-KP|I6thKwn4FOu!1sz8n$l|#ysCkb#L_#i>x2g zrLMUf4hmnoy6$AFf2-aRZSl6A=vA{53ut#A7kBpcHsc-3LZ)&1G23>~bU=)i{fn;N z%rz6D6~#WzQwi9<=u>F{B>;FsRy?Qw$g=R>~C zk4LE^L^9R1V{drAf4?-M_j`rVtC?S7yE(45#5)98fQ@|Csq`!+c-C>y?JLJ`V!yha zINooWY|z_*h#z9?l+|DCE(h!)W3xOQU$(}5b5ItXxw-?F*X7?CCWHhu0Zl4vysnY4 zdHp!G?jhT=>JKBvw_=in01E`l5B7)%5=aJ!RLy~Nr)8>Fs2e;Hf*t&c0eYXwzuYx0 z#f%42oy&@UVerEFj3lY-4?Xk9JNU64a9U59-ZCiZ$jEH^^8)>M02X+TU4~dPg}fm_APAN}q>+82({;~vTOZ-)d9K*injp_^cqYnGeDi>~DGToD^FJ%3XrEPNZ zoH)aB&Udn%OKg1ybJ^}4Q4g(d$DI!S3^F%t%Z~tgxGB+C&`2qVn-z6))pAWaxCtt& zE1!{rCn%)=$|vClse-e-R}IcVqlp>1QTP6V|KtL?W=;z?cpAeugXkU|OtZqdufCU_p-KNs|eyp}bOb z1M+c8jq7ob<8gondWO^Q#*+Je%r{jOgX_@N($}HUvM6;lNodcsq?}wpLqthk^z~Rt zr3V8R3ayWQu44Wp$IT-FKhZr3=IbYAe9VTi)o_5rS5Ukt_NRAppRo9ju9h*ZJW#~F!=-8$+&gnu5``Eu?*qo`wgt6s)3z2%<_8`?BVb;mP_>7kn zI?NXnf8jieGb-+zB1*qmqDiVUZ|;ntyDE7ymTJp9jYF@3B0bR9xa}N`s`aTxr0&ts z?@pgV(!0hJD}lk;S#5KRL4dt((^n|~)%*PWUDU=4zW_y+wi+xs;Wq)lPXO1v`{eg~ zl^D&P()Mjl8Da)jUbTv70w?de6<+C8-}#9QbxN^V2YTb)tI9UZCTTn3}d)$$+M+ zr@`vp<#VrU56zoL|GWaB{=nt>dVk%6N05)xN|gtmEGmCj95$oSxqtN+IaNk~sRsW7 z!SDfJIs;h=SBdD5zo>n<&09R1A@1LAfueK=Ny!W{T*=8M$pZ1=A%vfmzhE1%RH>C- zQ!9P0!`hw+{m};UX7he+;8Trw3B+oZNR-eIC_TJCj-wFW%Qi<2Vb@0eILSvHy+0`> zuG;c?3*%2Rml<@5O^rt^;LycT;n(&9N|^BoU&{cD#iP?w)th8zwydn1#yf>k-~@l&(=CCUrSIu z4@D@Ej*iOe6fOmwE92LR0e{7=SgBj2G`fgVlwR|HlV(Xd@d@z~ zD`#IE=QW-7;AeEHg8Mt4JcOeTZLE9NtGk;nuXVqqes{Qe`Y+<1Qu=>6{!It7YGe;A zrC@+I4VgV`EYH$vW+HanOrDmyD{h8V?q*72Vy{>Xk+NAUGt7h&>qTZPe4kWvU1-N< zRdf9`EManSx}b=*LQi6$MN1dOhy8_Js1KTDDYs%Vj`lHwTYcKg~N?qG$cZY|RNlrRDW5fq%*eA-gLTI_9! zp=gld{@NPw(9!qAIKqb1pQvD8wSpC zyXjHSVL!-38;y@L>RMn<^<_@20!lN-<~b0ZWr!d0yJNM(W8tG%{YZ4*EUpkIL#m*oc5vlJ( zW*82S@+7R>CoO8r@4&{L>#T;kCg%tbsbx*I_VlqRU z4vlplfa(A-bD+&wAD+4>woX}xsZGCnqy3Jp<@Vu@y^Kkv?`;0DGxSkEr`krufZ+)n zSOpODRc~92`&{Ye9PUxSt()1luskJP_4W8ne&NE^rr)E2VHe}CcwHo>M0WV*?)~HZ zxFV9+U}P$jvr0iAB!rrH6=Q!da`N|lhYCQsN@b9q zb5MIc5rL&7WBe=;y41I|c7-83Y)r4xdl-DN-=E9mP|gHe zNuS1VvacY8j=~sP?ttzvArt6PSvFL)-Cgs|j{#$t=B-XgPX3f>Xe%ADgVBDYP2tIMn>@xRwP+h@q+TJG*Z6sfs9=orL zxp#}?%buR;IJR8dCo@}r(>coJW5B+?oH@Zircxg(<}<&)#Owq;x#F?7zKZ1A!kY#? z*L~~CSL&iOw|jXFfHX~2kb5LA@7L}$VqR%q7u)YL>`7z9$M_{8X_8A6K7bP6%8GKb&li z+=c6pPy6AMfhQ;>Xioev)$`Xyb8;kO!9lMM0+#XK)Mz2vRbKWd8U*;MV9h`E|0<&X zM8$62|0;pGnKdx(=fYtVI%(I(tT#-63#w?piM#V{$92Ht4kzeOrDy6k{MK};53SF@ zZ)!wyh|nqZm}cVpTfu|nKFIfn$wqL?w6D=}na6UU$Fd%h^J2NPPj(CGSeeOfsh>hy zmapAw#PUgAe&T8e`yH!$Z<%(f3rVjAtJ8atmdnY%yDY{l+Lz0udpqDR*!6s?e=HW{ znoYL4;1@d|RbW0Ot1AYnHp32FJIs;a^C~4^7s_G$PqP2-P@=r>(eXbbgp4<^s;}*{{0~(0O4?8P`S}H2SOX6F zn__AAH60R<_W>OOGew>cGzG zqG+}IJebh*`zq`gP2zAItVLu zi4i_kKj+x&d&U3nNwnf4MqbY=qH4&G`$H(mf1?g1atS3+Rjn&&X|3gb9u+EqUj`iZ zM0xt)WtMS690wz9sK3d>AaC0s9om8371-wEL-9(GLXI&=jfA8q1-8P$_RfI4qbUyG zS7mKON^8UI0L+Hwsy_@KWiRR}2;bb&1_F}|YUf&ui~%B$=1d`0zfV?S7|lFsHCmil`9JpxT_Xg(bb*lcfX zH_$IP&Y->Q#3(7)<2ui)PE=0axb}$r8~S@c(>C5TOEJ+ZL)>bhh(?Yzz>i+gAwSx6 zbv+kZ{AFsb_RXnpI2X^y!6r^vpQ*h{M!uKIw{zSXP~oj?Aa&w$J^wNoINbLd{c*=c z_(LZ56$aVIr_*4P*nT5$kP!0EkG_+sT){botW6c!?6P8G`<7I^z{;2^N84vsxNj zo!92%WcD6nyDkJok?aWElO|B3CQYJCsR-WYaJk`?tLW*!$lm?U-+0~^g2c)EG2QQQ zDmFt@56|{)Xi0kGR@aj7ro1=pTg&}psihclFe(ziV&Yrs*AqpRY&md@!aaTBERVVq zYmd5Hp{PN>RGCuf59BG_yKA;(9On}O608N6XkFqSBgu2zQeV1l7p+$ZFS!DQ1FVt! zMXJ^rJ|pbz*3Ah|3GUIs`ZRSDzH=hs(<|+kzvOGBnS0ZE6;VDoIAzSSXXo>y>lzR9 z6A`A_x}dI&B9FSvZ_2$PpFxjfmqWkQwbt;?;gKrFk(K-q_9dDCJ&~R*2Ymu_rQ7YX zgaJ7u$S06G2%>_q+)NmzFX!@iw;UIkUsSlKEw0JVSVJqto`eLy=goGUuQoejBJYvv z)`m_$&75NYZXxR7uNwr};ALS=%{`po3X!Bt_N-i#Y{TJEso9SD<)(kePaFN9=~lo+ z03$bOXj(sM`UpR$#YN^Gssvk)AX^6E*T@hY%eMc`HK{KCoki)N+>aaG$@+};>5XVZ zZd+6jFTclQp}^SF*R)$$!Z+svKIA1_NBnJ_Dmo%mB=pMf%)P&JkU@fu3pV6gAp~?G ze;pV>RFWazx&{jZ>VFzL1hzIJs@zpIGU0zi&73jI$vGJde%Sns#h;ON=7}8twh$sj zZ!u7#903PLWnNk(Zv5L4=}IuhXMt?9w$}G}?9?IxRLIqedzSHAjFciegpay6-F~bElhxQ2zi7-NYVkB-f@gl}Dv!NjuAU zp?Xa3h@rR6+Z1-_sdz9+Jr$ESGPpEK#Nqg;;8zWRt^C&S`clvnxlezm=9onqn4M$< z?zY_EPok*C<}yuc>p+%367i2qoSdQRdHxkH8O^*bRLEkqnn{#q=t{{fM0&yR5w8+tcBS&eMt?z zr_$qd{Kr*# zmb-_2pe0kf9y%B;96hqgI;Y_T-M-`EbFy;d*>a46=;+iL;%g_{B|hD>LU{Nfxwa} zddDs|v;a8~4@KszPW`A-q!mRSH>kVFnIC!08Oa&ll8_kI(fcvo7# z3%a3$cyfHqNU12G0~@R2FW$8)Wb9q_uIvVprQMiZwBbp# z?nE74?<3;xQ@QZDRr59xPug}nU>{;U5{vD9${LG&o%DX?;h6wjR&t^4hp7EHCs-T% zdTE{vGHUuuZ9g03Rp3m)Mc#GlUm)JitE;Zm3xu0#F^Bk&z5Q)j7eC?^MBmYtTIt}>7+W$yI|7F zFWt+TKjkPtO0TN2PADfjF{Mz#(Dqqr6udQ;S>dfLf@IEKw$l&48;GknZnm z+F(!IPm;*-!oDt>=tDyQgG)Y3-2cPaTSv9^ME{~8kmBxAtij!(xVyV+ad&qq?(S~I z-KA)OLUD)UZpHQHd+$H*x7J?)W!e#%StcwGC8E{NL1NZ}5#JU)wRkV!HtJ;oE< zW5*Aj-c(i9)p?rkv=Vxn+RZ+f6FF&}Di6@*UGfr~R(Hv&>7H>D#ew=K=J!{Bthx87 zII(9{2FSG}7c>>b_=~>f4ZuJnu^g@r)5K_NxDhvWmLVg9N3p$!lAUB8xB-xT(fpuJ~3N^8w^Pl>_&GM-;P$3l43b*9fQcW z;f=oW<#bU1=3@(9Yj7>ljs{T|b^b1Qs7e=CaTPxr5r^l&>j-<{3g6?j(#;;^DLME@ z|NVKYGqtzv1E)$6xciu7*HW!pbxi=9xXVLl(iDI;XR1?=?2Y}4zv4_&3WCV9ql;8% z!!bQ6ujE_$yam$Y6CR$6Y{qYSpI`kO{`ez27OKVNHpyBr(*-f+}w=| z)Taqr;9%fn?w6ue`(oQeKM;<^57T}tpkuotiT2W^T4x>)71iNfzm`qP*rPioo3VFy zBu&YZHX&STK@grIFU$e6p#x2KrXFyd9DMLxbkIRvwNI>j1ApY@Pd^DsYroQ^H)V|a zL-1{b+1*b&S${%S=MtxEMOV(Wn}0&qIqeej#aIc0y@nAwUO&-o?(AcL%ckp%1bxX< zmsk?B&1o4=*fMA8vFF2b?7%-F*3Sr7i8928ND4>Y5cC~GDpN{CRHTqxRD?1x3q!|C z5Xy5a**Nmjqb@ZSG8xMi^sASrVf9U)ynEHN=a8Ymh!lJFLOSQE!dL+7s8}gejO1E> zYfM&jURTkx#Fkabver+r$0{>WrMqJ2}VV(reIi!c8R{e_1hN7SOBuU>X6jP7NM zIzB$j*gIz-2oG2Y60xp(s5O)|?E0Z9sN;*(UkmL0GzYasTv(}P9ITWg!(nDUUXkS| z5hm8@?5f)-zhZ@9HV|b6^&?Q~uS;NbUT_z}KS7mHNU!`IYGuHCCs}1$IofId)k8zU zR$zD6@+6&mbkw$?3rZ@f6yKl(Bn5=*zMuo)M4$b;;{h>`qO&6`2$fm@xlG-rUZ3aW z4|Sze~db`r1xCxDl0=b?q*h4XJ{ZBzpXoU?k3&fK?8QkkDxUuxHj zKTZ-)ak3cVJSc~l-1Bv&c8s*0r0|SIVlfjGgn6KNXjm>aTX}ikd7d^82Ds2)Erbc8 zgv1S{AHRL+>$C_&{|LhK77`yQRejmh%op_AaHm4dSlZ6&K6*ztel2plxXoi$;0ug2 zUOxM8s?<+qo`2MT$H0S1Wbps^+;$UHXp#D@VZrcA zSoR;Kz1~6&@Hnd+RswrbFtx-KM;?~Pz!8i9*kQEHSh8^m#(US=j28*lr_rD%y z%@2S5xmTp1CN5kelH1=oelw&&oq%r7Ws~;m5%jRyXStL0-G>g0-dCl6_$o>v%563#Gv}#UqYpLW+AqA~a}N-)YcPD7&Qre1EwX zkGBS?cs;HZI0Jos#|T&W!eK3+w*7wjF>snXC1yFRB!_PMX$A5d!Wdnd!>U){;~akI ze|o{tA8y~3Ob-3a3G@STBG}$2?ztLpBk&YxL~g4?UwC|Wc8RnDqo!8V4p zIut|@VfMTzkW.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 ZojfDTpAye?WYA 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

~ z(6Ts3mgaKdtwVe+c2=7R$zFZMK+Ai*9#j5k4GTc$&k|v#Moap0JSO|_rmSlUEvV{< zo8|?Ys0a=55FQ2o_s0)nF$F<0_BUZsBH1|vyWySZl8S2y^89Eek)Lm?o;A^-lg4p{ z9%XT1w;18cf2uKDA9)$)8k|~U(n-7dk?oJMBReN{Q;oW7_BQRd%*Y>?=FDx0wi=l~ zt$%>Dt+$3mdAh!DF$)y)bY0gY^EtEhLsyI#zFWQrF=BDXV-PbCl#~j&1IBc#f=Scl zyJ|G!d{Jnj?_85nfUGM#WGkG6XR;W&NlCg@x-~MPqwLj1YoK4FoB)3TwVFg{&NR@$ zQWZ4LrY4Dts_51T*$gBM(q#zp6)|zHYHMS{mf#K#k@9O{2r?mTejgsFD5=kIjMt*3 zLO9HcW0e$cr6^r4bqgYF=J;nD=D@K^ZsWq~n_|c|L~(>eN#VXyRtFQ|j!GE1jOg!i z0vQ)W6s2!&-U?Jp(7J?DL5}&WsA`&p8a2zyB)`PYa-%?+Y_P^~3ceN)nGrE^^Gl%O zr_@39-CEI~s>i=@?(c-Lx)`u}37bEJ^bj#KW-3YAV6D6lnXzJg#mx9l7%#|_D5HyM zbLK;fi=K%oK?^%)Nfp_rn(Xb!>d;ZLvK{PGM`PbZ)WVRNs11m*6WMLdjbjyh%*>Fj z%QzUQgrSc*ae@X0ta3%H28Ls~if5~9B0vg<5ptw_{JuRwyxp6|2-f<9Kg)TEQvPtjgNH;N} z3+=soA08rkl|Y2{>o({M5n576xe6Cr#*-j3)Foy93@K5fH70tdMC&*a9`sdwH=>0B zl~0Eu5&6%y4kGfTkUcBLajPVpc!FfC7RFcaLs}TJ$wD%d+e%Q@BD_NF2yXvjq)}V> zzwRy}8R{-p6_Eu^no#a*qWkQoc+lKBb@QC@}4RJIuJ4x zUi#fjFpf|4<<_rd!KUdOyiaNvQlD^^UL;|(e_eLa#Z4_LCnR$fWd!|=cN9%Y=gz|`8R>tUXA;t`B7q41Kh;b$%LAV#z#Pb zT#=;(nDRuIZhOPK)ZDqU@9u5P=-c3{gBqAa^XG#4UC~oYCKwA_?q9>z9aoLnj9KAP z_XEw5ubOL)7dZYa5ANT#SNq?l*+%xtKim)5DR7Fx{*c~N9MR6qG${b9eTN+;-|{)+ z;wJeAa5UYU*j|w7D@R*8Us_~4uhh1ruq-&{EGKoc18To7)irXiBh?T#WmX1by@zk! z(JYgkmozq7!|shJHamV(qI*l??N5Y;8i#gYnfLj$GVrXkoF|I^!lyu&P^Ttlg>5Ov zCJf!}FL0Vyc{b3C)*g`hczi1b&*Ce>a@X|iS4DhmN<$UN9Lj$8@X2@2wg)s2^O7sV z74P{CNMWRt&UcSab#kTgLFSgaw~IawIUfx>u{v@6BOQ1i9Bgew)kII~KOZK(O^TA8k4f#BbQXy`zt!2_fM#gPxjEKbC=P)_>}`fYHz#`YO@!lMo%@tOhiYi z5}kfxg@P(UjX7s$b-2;>FzFR!sz3Nijpq1YW*y7%_j*BI07N%YH>r8HBFTJ_!MB!b zx7CFksSZ_v%7b&2Of{3f6D~rMiK@dX<+QoNr(iJ?#p0)9BMYtaQPm4)vlCT&4t_5I zO<5X!2>5M!77XYJax8dfm_%hp225WbqD5hUy&FZIDnH?gEx+wmN6CjE-@SAN8wE5=CYqg2lP zeP;XRTF);Vmu6X3X_a6rQ&y{o;$_#ikBvg=Kbwn*x`>7t_v2XPKD*^EYy zt&B*Qn9H$=u690Qi8aeZ{?lCCfq6#zg=}0BcEilw+O|HUcYBCLD60iBV-J7sZ}hQ; zS!M3EhmMKy*-688J%rU&gK*odjDc}wZD%}#U zO2Nb!-r^->?ZOK?mw4aAXs0{NlQ+AHfu%Q6ndq4zu|RV4XE+p(qLti5y%2Wc?G4Mw zJ8F)>$>8EcAr5wk2q9zC@&h)pIiksro<4a-m5xd-a0axUYJL@*L~V2Fy0A2Jvukz# zePhtV`F2204DMpn*iT)yCurl8xLGhxc7HBg|2m@GOBdBUr<@IG2sYKN^ONOooGxgG z_pqsk8uIhkzsSxpTD6+lEhs>)xq?YI)e*?WG21thRvg~?sN`!KfdyGaWw2E_Xlhu? z|8*p3W21V(7S}$@pPP4H=$>!Gm#)+6u)6Xz&9Ro zi_yy%)mB1lRm%7Q<#7HgF5*KRJ&`iuX9UA{*}z~5NrF#i!~C=|@1!y5-nWH>eX;sX zVPPKkN%emy4v82~&s0+g9eVz5iF zw$S0;Xl!pA>tj+^)$eK@zTqEN{`|rHdgC$#?b@Ml8S89{<|gVb1b^2?$2kP{l3TW& zN`XJoDNCer---W^MYz5Rg%oPly!qqCl`OX8_8Ay>@%-`YvM=t1(8b&{TC{%!bfQf0Jk*C#h+^|C>hd_@8;=L7bYRKK)xRSi|Dy%3`JQXvg9wg3lTOR}&Fo z@gpn0@IA_Xn9|rxfYzsX5ZAsJ_gSc`^uYywyn3NFEoJ^9f&ZU_j-`T74a5SexWu<$ z+W@AL9WK}AF1G_ia;#>Qv&+@X!6Yb({~z}M?+)f-teAjrin-vqDD&`H<8E;@luHpa zqf}_xofq27r&x~c&*#U4d>q%Il(K&DhyS}XQcCY#w&2Hn&JK8QUIbrQ@`FC{*Ejdq zf0*(!*%&=|sp}Mf<2l3nuup8@<@pz|&yVL|j2aP;?SK>~BO(^$OxlZEX80RgA~@=z zv{^6pIjGzz*|kq^WhaHQ+l^`KPh8_zdzLZ)vMR)X;O zoo3nq6fnRkgl;?p)vr9a^kW&|g&mah`O8V)*^CE`o8ucB%vnc}1`bgoQPR;;obWTe z01@K4#&n%#n;cY(yvBR^fk2NyL)M1n_aAT6tIz1+(C1$ba;eK-I6X=_QkOBuILie~Vt>20wST$*JUXsw0ynt-I57 zJ5d=Q!3b5u#Zc~ocX83<;>j0J&@Wuj5ixuqWN){uh^XvC_6XHsmf{^SBk<%g19Mg~ zId|(?LVc=Pn4*^^Ej*i2$|w26SaHJhyT-*sjXyJlPfA&BREu}~c}a9dm44Q6bhKjl z^YSo#I^}n5GK_g~lTCIRJUv0uL;m%ygp9$WRh#8oZ}oAABvLMTgQRb+K5FMj^)#j* zh~9Te&|gasE6~KTdDIr?%P8Y)z3iZzit=}HqPfugXr~e6} z&wfR8@id1>zUoQ*cpIf^wTWB3(dj{5fJd5Ti`bg@&;lg<OMBPh%`jNCX7Rc-FsB5J8FY;{6vSu2ZUIDsSg8kfYEv-n@? zdoB7aVhY&@$>5BQALhED;SRm+(WfEyVZk6Mywm{VRqxoo;Qvf!Lh&mo4UUMMu>Bcn zs63VUg#SLP#H2WzUCZQFH#-Wvlg+N~U`jsKQIlY5&9-R64V@UXQ9fJKXI_l^Q!cxE zW{Pces9~en{3E;FC4!Cdw1)fp?2^{c?1hkWEBK_@5a58hRR21`ir3(vh&D1HB3KsU zn?`I$wRiTLx$?o;hSwnxL7d`mC?ju_gd9QM=#z+L4`Bput5CGIhdXV=&>K?&0k<`$YFAw7UDZrNV7=u=cdSRtJee?M;U!&ac@Ia zkR=btNPp&;8+GK}NsarW&y(3j8;-@zeS2&>_pTb1KM&J|PMTAUu{d^c2*tz?Ly6j@RS97FH{*j0cgiB|0^-BL94HhueF@9`?^eKUP z6+oa<>Nb}a97cw0Mtf|)?MNMGlktIIn?p00M~Qar92mHkSggrlTNSUrvubl6l~}AH zJH8{Oe=-I(`oRW*y$PDE$Z^2vXiPRWI+dx7;CgCs;zk*uQ1RxbsvU_p=%v{AT#x%L)1SU&TVs36{*v} zZFBvT12|_2c#!1($0qyF!5}VKXg)E(brpqxp$-`BM!HvZK#}dXeJ02mt8vtj6fln) zFk`|8M7g|KN7>XWl88}MjCoQS?83MGoQ~7Ai5oD8>)+k(co+T}Iz0xv&#~uEI$d+b zVs7DvS~Les?TF!CnyL*Y4wQ<8JyjBRHzmL4JXj>|Y?T^J|4W0pbv^wI^UF;a+NZ+I z(nf!}!9%;p-P?;C)ebKK=MI&akXOPa$2$Ux z?UxtD7afF{=Z|NT9PP;*s?rrHWcRa7wW~Vot$Tu{{zO){PxZ?$8gd0&m8c~@6-VsXTRZ(#{Euv57NWD#*=9n35YG} za=dF3)W{-tc&?3(>QO}Xn*GH7XAVc1xh^@vlw4Q;#S?Zt^GH%zS$6#i)HIU+Zvp-N zbAqGvMKBJMSKXi6! zG4xxbez}%0HRJ9vt+aCrq}&D}iLu!B=sv+!r4J%*r{mP?d7tPx_~B+4He>W97eB=@ z_iI`wdj-C3h=iTCtzLV4K=m+GP7Q@0Yv&#IYmOW4Gv2VKsBkVgy}~q&j^DIrEWq~< z$zoPO(_&EzEcm3<_VSmI%37Mud32ycAUdfI>m9fy=xB)PER%pYW9p5l4yWB@WkqLb zZh=Z~t_Y(2OXXm`(t+jFUi7?Us>g};OKFBAEXO6skJRWN=~K~C(SG-guQqJM_TFPI zJ^6%=t9;8!deMM}b~&T5>*LJiOJe`(mL(kT^pfQ1g<*sAK^uhgMGNy+nP_C6u$=Cxqtl$n9wii7 zwWFJmGat?i^87bG{FWtUWO2Z2TbJP&HTElQ4`u#AC}(q)`vuo&M%9(4MBrm&=Bq0H zupvM>Kiabr0=4g7NS@&wkA#mAb?_vN2KXe;EH0hlV=&Fv`#xW|aTv^N^G(}mYrJ^% z=?b!IpeC9a1t9<9@wM|@KKA=jNky(FMliOgT)*S#ayaK$4D}uX^R8;t>((B0-1ud>0OOu*RK7yue*4{JX_P=laVK=A{hd5fwy$x z^G3@L;eG6Zf&JCXKv4rF=}4u!d+mOZC$oZCprqF7^C@&3`fbVN9I|%2_~B&mTaKF} z_v$Tqc^X0@9JG*X(SA{%`%AMT*7q8~q>M13m}zr#?}n;RpyFE@B>#K7$b29h{GUe0O8iUrxm|MgDFt0v((!5pcNEfi_Tt?vLib z2HI{SxBd2<0N%i))bM8EZ6795{8vGlUZd7SD<~+XwMnH`3?SaQ_@;BSXJMZvPMBN! zb>>B5>cq;PX^5*B1B>f_3)^cbump|7Q*Yc>1%hkwF1#OHuH4PH*S z*T3coJi#+iSjxy)j?c#DF#w(xdg$=&U-9f4#GNrvZR0xn-dojO83 zI(=4#QXSMQ(ZuDe+s?_`DAE$nsn8ph+oXn;`<0Jex(fH+rStx+%i*sX|9Y96qIMOu ztR{LJD>MMT-$5W|rC;S_ev5_*@R&>u-+n|rP$>Q9mZxFuTbVkkQMdsny~TZR+0|ys zKJw?s4|!Jt{L$zFsFmv^o?|#-^oa#+-BlJYTvK;-i^L`x~|v+qKqy`n>F7KJ0+UT^H%HaATwE`FAlO3)q9yh*bN}iWt)usR27i^z)$>mieIl(C?!~{B zI>x@J&RG5q;KC7WYi1jPsn+*F6LgiG*vAa&(LA@3;TH>V|XU<5Uwm| zZ`PC}KR+l;PIbmz@)x=x|B!?^nk~5eUc9n-tJSHA%iTvM`F_SF2c)8TU^Vbz{?EHY zH%q9iE$>O+wr>?s3QM^a3kZ^Nqs(GI!?oUN9F zx12CEwcM_hW^8%F}hXc2K`d>E|GvtSDIdn?~a!eq89k^z)Ed z;QES`qdMK)#u{nL1F7|>;{w#P4K&<-v1G?h$Yn1d3uHM-e3pmR#QFutC@bJv1TCIJ zCFXts!xKxqMnTq7GI*VA)m`w+SR0!kocyE0hpp2ln5BBoRXkZg6}GB}_f-DX!!%8S zzW0f5LAswMrcRXm*IOS=jL+0BpJIjtO6n)fV<9RCm-%S@cCPm)t*&aa#8fP3X{|rb zY_(XT|7@in4YsM-<7^_~MJf9zd5CZCd5VA6pZD1~H(1Y@S^$YJKF10XSX?f>FD6f&O>VUNV5|5O}gCIsYV7| z!daS8ZH;B{d^Kn6P~%y=2IC3ipWi=#>MS(j!ux|Z#k(%!9%OWNFQ0ZMl!1s3IrF8q zHqhvK-Vrx34iWj@j!Ovq{n==HGHSelj17FIK%p~&jsx<4Vi|l6lhfxBy}b-LKR*8@ z@S1J#yi$tnv!%5_+Z1k;W+*dm0?~VrSwO?O-;lq1c$$R*h9~yR z(9ON_r(tEwHGF(`ke8hRo4Kq@j_L>0pb$V zuoJ&`Ty>YnlHwSzJX%(3jp|efROtq*`J|f6)3zt_y)>fV)tz0Z-W%-qpvehIwksyA z)r)&Z8qF1rHgG? zr!alybhGZTrG_uc5)wv^a|COTa}KeS>%i!9O&LJH@wC98$NNVJ$Ymsu!`D9eB6kC+ zUV6zc{*1&&4VU`^hE_fWh6X0un9dj;C`H|D^^WqiENUUteWRm3Xo6}SO%Em)jv6bo)% zs$KibyMa3Qv;EhbFr(zhTDrB=k|@r71T{f;^eokB9y5y4w);aHu-T2dt9{MhfhUwc~+{k~Uy^!o98 zx9hsCpWTB;!~3F#!BuVsTuN570@Ue3kwc)(0Vw3f7Dk}&E>Kd0{x zB*K@#Xwo)5xR|j;XA+v3$4l%LB3Eu7fVE$q_*;b`nHbrK+!t%BkGf{K$DKW38LfPe zVmhkoif;UB^64CJi5p`S7SpleWh#Ol|>PDVyw1?O}-djTAYQX2AprP_<8DTgsm zOR`ed5-c$Z1ZoA6QVlqqU9MbrHfeNh-)7Nj=8pS!vOg8F^h-La_e)Qy2FMzhp9f0({Om>8wX{ z4q=Kfm6`D3QEsw|qQ4r(Y{pS?)V<3@<0mPiK_kw++a<&+Phl+wu%yIGI#{PV#H)AL za{+~B77Bi74?w5vE`|1IIcvZD;lUb_otsTTmEl++O*kLDBhDPw5>_|;&>mUMndqCt z>xagkHJ6X>S3jQabVvAN4;P`<#Qj37F2pVN{Ivqs2W5!}5v+#^vE#dXH!uH#GH8$U z#B(3Yqck6QaX{}a73=|<5GgOqz*0_{-)^CLJ5KJpSD9^LsbT(cz64FC6V0DMHWp3x zERmTJT_dnio{g(9+Y=j_G2(h~BQ}OX_U5VVz&M5lrzRe0cNf+O0b?L;EXTx2?-5Uo zsc(RmLV$YQCPFt&Av^nHJqtojU~KcVMVI&Dg4=qfsj;kuE5)xtm`;}QXUeup4tUx#sy=Zn%w=>ZXU695K>;J}@B1#ESyC&+pdY8N zB-*oQa=*3+w!dxC-ZChT?u-ANnP3CKEm&}O3GTt&-95qG zVIUA75Zs+0!QI_mgS)%C!_M>D-B(-t=HETHYO1Gdy8Cwb>2vNq=kvW7b^IjDp1B*< zwlAXPKoG7qjH&r0DCbL{H4$IIT2R%LZywd(p+$w*VU`I;}w#Z99hJxxA^F6 zVfTJMp}h>h&_j8{J?Kb)9pPt%9zN1c$-Eon+%(i-JXwOT-`0tV8?b`M{O)q4GDtp! zjj8`yTch)xyjJUALY*jcs!%097OE4OIyBHidPq>Cd9L0U-MDBN+cck$e)NrD=BZ3I_Fs!Q_{;OjjB^2o3>Kb zh_-s{Wo^lmgaL-=%5Y`>TRKkjYe1IwmZQPc_l6`*IUED;4K3lO7| zdia=V(F}xaVuIEup?;(Zfz4+xdb0G@)Ms#Atyp&(HzCZ5y1}USZ}B3K!1WZKp6S)> zupZ`Z6SQTD%Kg#B%jN*?M0A1W1^wnl#ZQVhNT02*fGprIVu3_+@=x-}TwqBZ0p2ey zeg`mVN*{&cot=$_hhFtH!$bP#l1QhWPEE+Qt<6#wIZBO>(U|<%CDOsPjxa@jNi+z=%Jdut3SpchbM;PKp@n^?+Y!;`Id6E#W8aGH{NyjPE;%uo0>QuXoL za?8SmD^nKU$*)GE@{RfPI0s|1yT0;$OQ01$)-DZVIyN_AI;?{KSOCwskx*#_w8CX^ zR3yjl{tyt<(oz4crIU=@x72$~6p+*;jbM#i1E{3t=0EtiO{YDsI@Jst#$5D#K+54! zv^mQKug;;g_|wGZDeNC-C6_U4XYn+}I$$ z--W5=A`jJ;=U=)e_V4x1oHZhI3o-~WTU<_1?<5P|GU0*s&h9HZA(^6)MB-QszI9m2 zk`JSNzV9awFOrs%AW3TY8*8F^g^09y_SIE^*wXZKf#X~Ob}9oR?>pQi2E(G!1h4F< zm=vHIs1T?INX66FG>M0;=;JXVX-b;Vn6~_gB(1q&1bWm?Sprp{P5&VYh9<@4RaG5t zM2e+FrEUYqoIv;Xr!DXNslC_P!-DGT)jhU}yo(9d#_XIX&6HM(3y zaj*fqQYIYd>dHtL*oV&R;^Fg`*!Qi{Q9IGu@V3FsOswyX2;Ty|o2>hZE5F5ZM^+px zPSDJf6ffcN0ZEuJ5c`7;Pi%R@-_T7sIAm)Jv+0D2#ufoods_Uz?9D&~V)eSIIUbx? z;vdHXyYdUtFh;Ounbcv?SQk(V@&%$+XmDoM(%Bb+rFfRjQ@3$o|D&`PM_ct(7%;z-*A*}$a?YI$L z-X=Y#4gh?J?0Fmf2S#BUM;Ybi@;Or1ECTz?_wdStLciAiSc2Bm;p;agB5DEh%xz}| zpAsJu8*V%V0?7aR1LW{U>y9xK<@taSHl`7rrMrKuWBcU6#V0&(uYU91g!pq7@27kf z-f{Q@%5lRRszf)0|)@jUc$>#NoNsc8sT1;o3n5MM6Od+n0i|}IXJGd-?FiO!d{}Q?o|KzeK|5C@nW-|0cgw`h*QW0lH!{Jb6E%GvCOPydk0xHv^$${IV>F*}- z6P)W4F$W8s(bGGR-?M?-u)?5hpc1x*ueOam8n{Ruw$^mS;zgj$y#g0*JdTjtFhXuM z`v(~daQrX22U~x{*OJ=v$d3DV-HoDyc=0F^-b?9T+r@pOXGT7!FY+ZBX+n6F?g1lb zLd4!DzK4>HgeWNd2Z%1%YS8zcXEMb)WzxAlEbd#8``W?$M*v!?#d zz2oz@rQ*xSigMY@wN9DiNhkvf0cyg95Op?RZIFq+g8E@AKs*}Z8j12-hP~X}m>y9! zWYh8%@FwW7!hq4~DnprX*5-!g136t=3h8?^T>@JCM~{TFHW#5wL~OVr1SMOQ*E z=R9}9r+ub~`~gZ=oGddDw@8IlL(f)0>alZ zmtc36kSNe02RErq-;mIuVLGTl-?$a(^XoYs#)W7!le)+RYZZ@g_guLO`0@S<`ziMJ zxV!I6yUQ$b1y0tVGsLl!p`R`<+iUaJx*^F=N&Z>XZRWqTf^GjL)!(h1)`xuSo{@+R z33PxOivNs7I+F!3v0)0?JF?=uZS91K$pcmmc69ESUNZqpDtc3Q9kZ$ZL>MP-3@026 z9qFe{;t?gk^X8sfw5fXQ@+Esd#47<`!kT=E@dw=c8p7pQrMy)S8X$>FaZHy0-^(6Sp=Se)@~f;K1yTh-RcMH=7OYGzbT;#--CPVLHJ}$}v?ZwceO`BMbceH!awX~A6V`uE zxBQ;nU8#Qa>c0A6WqUwyg2m3SUefTbs3%dchN%_IB#Sd-gryZ`gjI>C6;zAz^1J_d z=kWBN$%JJZz+j;!A;#dg+NY2*yC%^?N`yfg`kv5d|MF(aa5qraXE=pxGjm44k=eoi zbi=wgJbtcllWzO%adWQJ41`1kVc~rR*%LC zMS?U_dF%F_T3fS$NB~KF-{4XlIQ&?xnUJk-%D-zMF=1POUd7EALK*(IZgaltdwc4H zr(m&ulUVhJYZb9Q>OkM)*mxulNy}S-S%Kx|u51Bud;jKns&h+dJoqJW_?2={v8(6h zO@X%#G*?n0aqsC6lHxrhEM3zd!kog(A~^Junf4fmpBO|n6yfqLB$FF6>7L5dyU;1} zkxUJileQ9T0nujv@AmeEKi{&iA)8NmJE2wuK?O>kzPx*~B3{v6^gFcR8PhWt{_^}|S7zzBSKf-jkqf>v%G-8=z}=h&Ki#O~ zgHtoV0+Dsgkpt&%y6Tl}`)!+;kIjc>KI5uX_!=p+Y&3nt7!X=98K{r15^M$=+M<_f z$4yvKofpX~AN9j9t@8Eq!Rn|a8 zG#ebNI|t}D6+l&l1C%NhaovF2(oN_|ca8FA zE`}WSeMLY#roA3{)m98uav+6WWJvPtqqk2G%mU3w3q%wRy%uH_ltvxs0V@c~Qr)0t z>x+9`9U)rpQ*|3S6I_|`mtGd9?6*Hk4ThBf8G~S$t2Gz|Jp{|&Hj6rRnwh3+mkkoJ zkFy+~U*3a0>spM!impv}B*a@bjh-~)6WgxQ`(urS`-dJI7bkj6>BwpPa@0u1{P2+_ zx=R#PhMkRVd~IJ zm+`jUg&>x6qd|dA_3bmL-~6p3PbuM+4x=f3bb{8qCP>=Ami2!ePOaMS(pqM{ycxHGNdJcmIb06?B#q24Mx#%ohHjzp_CMKMsFD9`By5IkAw#ok|{pA05L&O)c@+xyt3?rit z5)>c|Tl-RF@jd=5U2c@JJ$r*|{hoHcG%ao=k2T_7yN(4kzf60O=8=q*&`6TufJ%U3 zI)H*Jof1dpPhZ<4^+A9*Z=N1eI_UYm^J=@VQgb9p8SoR$zek;36R~8@>e}tdkGgz-S8<*{=#GLSMH|HUM;KaOQ|j#sHf;NcPG22tWOM|%R=RJ!#{zxSc6g&Rgi zN~y(AxPfaKLF!7(N;)NM8pI@DJjWX^4Nt$ihT8w z)9=?}-6L89TS$ZXxKfTnk)4YIMoY45d$qw5aAnq0BW){%S1kBQ)yHNvXH3NI?Y zJXbu6y@5y>NLPX@anZ*a%4R(cKA#p;Wv_`^q*@R(z}5`YP6s?^ML~{?zpA|0XqvzLY*+uIE2z zK9NY%7(-_g(q!+S1jv0by)k{n)?o(LP8xU6sq%*HWn&HhF-SmHN%p{v2yKnje5TJ_ zD-UPy8TurBpOWQ1CD%%X)0p&p3@4}S`&DITo;~|rt4=*Q$k_OkmIMy^|IrtunI{FL z*l&_KllcQTe1ti&llceYCyz=Ai5c8gqAp?Ly~g@h(qgTDT)2|vBY*Cs!vR@Fac9k7 zfcCwj&#Q@@8NeMw&nJn4DwW7`v6W2czb|~yygBV9R_K$Bf<@_&Ltm(pw=4Jma5uFr zG}Obwv42fjv9g+LMMUT%<_G^DF5&opG!ZeHH(hosq{tLwTuH(Nv*5dai1E-Hl#9@B zwiF%BVzh9vjtibB!Ua|63X3Wf!o;GRu}LPIu`_l40<^0)of>kvtB@1bjGH(U|F9pB zSst_VuGwBMAFtUc2?8T(0W_euD25#<|Bnq)((={WURgc&z}l?~Mq^|Z&ID4%`P~G2 zi$Ah;3#YAddV6`hpFtkfsHCworVu^x@fk=#9(0Ua9aWy@=q8X;cJ36|@1lxE`1|R_ zIlf|wO(I&sa!?dNR2BGNkCA0z?uPdfKtl=AITY`2T4cXg_yu$7btz4xWjNQ?F+?zY zRxKKC90&KOLPIb`h%Bk^TPp~)H+O{oMso5GebiKw0_<;KjyYwB5}D1uT&5=P_NYGI5aMOu31%p$bC?v_4Ei7iO|TV+suc|A?#^&iKR z;&vawPK$w{zI#(;4(L;5B1R`dC7_gq?gFu=)CNgl%X%x$+JD4}my6&NB3<8ly$%`b z1U$k-%tP1R<*75)Xo<*h%7GWX(GS(J%VwxesuKQCdNL=H_1Rf-u(sAW{%W4+FWLKR zov!Xt)4S=-`qO>e`>sc(!rZC7@^ov$RxUaEC*z-(2+#yvBO0iXA05Gfu61TMjLg%k zYBtR{gKhbt^Rh*~z^&Uk-(7WM7SA9CLhL?OT=I9t824XNWHS4H&y zzxS+b^V2pg#P!qLa?d^MdP&Ki+Gh5DtYOy0{t3G*cg$~{#h@89ckG_uad3J`eoj&Y ziKfQ;VQGg9y9qMD?aX0gq&KrpZI&8+}V*im5p&{CV_JNpW=^(w`=8qA8FsfA?02Gz#T z4O$4MLSl#S#FK!|+Plyg%Gi<(ItS=>i`?azXHZzZs-&VJ>%ezD?k*T?$U>&saCGIZ z4%Qcf71gX{4n(KljE8dC|4P&M@X*K{VaPmTgAKpu(8rbSU%wI~-T7~v7|5>9t8iKz zZ@SP$8+^?DEB(7JiGFwZ#RqRq9r1S#J{EuuAPzu;z&^bu+q+IoPu)@_4T;H#xnM2LtK%P{mLSpkCnDleaH>geC)l{nKJ@ z>q1O#{GGVzq5-uQ1Hsk3RsOvC->NU2Wjk|5*XU{67YBEjU2o#qZcoiNg(#`K9ATq? zoj3dwrtXUlp7~i%-UefhEoggVv)ibuQcN?PtvR5daZ?GxJ$CZTzG!XMUbVk{;nXL^ zIq-e%Z}3mX{O4^qzapT^{`^+9x0sTWMJcM0Ltk@q*s}|D8=zi-P7Zy}BC+k0ewOSp zzb5;JM@PkN7V(OQVd2&K?)6&3s6}KS;xI$Z7h*Rl5IA79|<52o3dzr#G%w zKZ3&!co3BuoEm(mGcJwFehz&qR`U#{Z;}TX8W?jxllrr0fpJ@%s=fXgXT{5J*9K8B zf!s!DT`zv#Cz4R>i0mo3@~337_k(DnGPn<{6I7A!!^hm97ZM<PV+xDXDTn_0 zK;|g~olY?)hyMNhe;)amsAj~aq`au+&}70+c)qBnr>G`dPt&1nk2g&3l zkM0Tli8pMC+N~^x78*Dc@*p$9$}nMKv~E+Bp4SC$Uw?!Eaz3}8Lf;4%%9q_PnJNDr z;lRPe_*GDaa1Q-^q0D$0Ma6^SQRc}F^xfl+=`(mvVeP1I~GU}?thNm@qOJt@Qfqf`dq2C^WALW4G!#Z?((Ci^c*ZFYwS#d8x1 zSF4GY5N&{pTmZlC$xBiw9vstcqM_pJR!ZGvYrr7Tl|OA-jne0PP=$;%{mw_F*rC7# zAPD0-^gs?~oR19i>hCFT<-4NKcnt8ZoXRs1_fTKww!;|V6$2vN3dp3pGHB?a({5PM zq!yg*opjjh32$4Wd0s{0xOUrjO$S6H%$|h$jiV(^f$n9I`KER-F_teN8bPM%CqU+U z4QB-n0s^5c;A^I#H*mxSF z5WOKjdaN+q>tLRUTQTHwngqGPnl=1LAIDBnEH~5Azj^k{{r4!L2eBUDL@fnGoA(@p(F#BEiat@GX~fkCttH7 zLgx3Go%-9}gX{r?+_0F~n3$NHaZ6Z1SF6ujQtZ{O{(I_iQ~)I#Ss~!YVu}z}{3bnc zVtfSCl_*s6~LM z2eIga1yP3Yo__vRA7L!WzCI07$V;=weOc+rEJ?TCNdPhcL__awaz16Mi1_-F<}UsK^XkLesJq6`@nK@XmHn!9OY<|{ zs^g;&m0{sIgG@4yi566hO$(+|7LfY=_HJ#!eqKOx^z=^@ZN?&ma#0ws6GqWL?JXMe zFAh;2+a|1TFtKZPvnC`}XqDRyAC%f^|j+4oQAC zF*zRWivmwom(5|xx6VtiFEzFY^+c^MMzq~%tqSBm>28^qI8`1aN{q;;KmD0w>zAId ze@S`O4TNN?K+`X-rwjbUjq*H@s%=0-nzWT3?ApqqvBM-UZY=+sbs%Tv6*K|rJYDTy7mJUwwn zj=*oPL7lDK^D>q++mEsabqstO%=)PyhzH)c7R(ERVhW^bevrq3!$W)9^4CZ?>2|S# z)+>Q35;0k1S`J85f8zs~pvFo2Tn0Ls6JFlhp_`=;mSu?_-)vJC}>_UZn~63Dt+zMLP} z@|O*lAKR3;swN;W+b&t@BmEgqJz6!UXx3|+DDr@y{ks4p1p!dI%7(UwdG5yPKO9oC zRJ$9+o?m8V9O~jP`H$Xd{bZ8NeFgluRov7`6Lz70KK}bk=){>u6n{e>jJ{>k!>xwO z_`y}y!dCaDI&;BvXa|}(5cUful91qg>)Kn**f-t*Yx>DNK6j7ybcK5jnbCFAw@uty zsFn#w6r$-h63@~tyZ8lWf!dB78$3k#1C1FjZ_`q)4Gd5gkiq!*tz=}+?R{nR%{k}N zFX;pXO`aE01bpo`ZB57VBlr<7sZlBl8(f!Bv^Ss7$|<3T(HM##3tN{|Vjo#Pnm;RbQ}JBM5+#q;`^F6DTqL<*mgVs(T&>j~N(z99Tys z{Nj~`$!TmpA!j$jJbU5fP&xctlmei?wDE2mqF$<%KJ2;cYQ@KQt`26WJZ_#pg;9`@ z*leC>=RaoBe@rOOS$Dpg)NWe~`Z>FK2hG(0yYm{*zu_b;zSKE@qSJ(N4&b~2$%`&A zgmw7i&Q>a6LxvLrX+=ueD=F5uL!UjUUy9^4Ofb!%l2%4r-(~t$Q!;%eF)0Rnka}*J zVSvS*J6HY*R=^|I}r@#=jq7rxKm4 zxA_~BPMEdxe?{1I@h8`B9pnvaxxE0AX$&IVUj5$Jnl~uGS$MkerJ|VoHGaQ4-Pqhi zR_pnzJ1xQXhEqu1j7dZ%BZB<~=atkP8ZF?>bN+DRz`cz=P-yiiIje>+b9D8{Duo1* z7FLISfsaBYzkK&37-GdZ6#B`^fd`Jrm=o2J3(8@8T=`>;Ns|;7Eoas*CkCw*$YH?* zvS4g-a*GXwCWk#a#{M&<1Vlchb9rQN!}U1FmD_ireytZ{@9pQbKt ze~L)6##Ivqq`Im%$-363{g$O~uc?a}b$h&U>v+C@D`5KgDW!3PGAxk$_0G;AYhmt@ zre?YmLG^xG4}ebjxrBrIoGhzm{B_l4mD6#LW1o|ob7y9<%~!!EGT722BXWwhk*#uA z9tlxrWub*22uFC3E=7X(0!G_SZ3Y)WUVACgBJG#9%`@1Huo=@GZUX_pUiqC_I&^c_*hm1Wy8sdAIHdAnUY}C1py?&Pk9GAOLl&I zNW@(0BlA}s4e@b(Z4q(jcBked#!9nk9hD4~m7a-fLP`;MEUTNJJELbZ1EG=HLUq9` zu>@>{it~@%O+)8qfV@EfU>+U78h{zWhAB8nlyrC;QF7fl@f1aD*F;m$I@tQd_@lv6 zrcBT8oDpZA`;Nqgbj2IV&#a##-48<@>yoSq<~kP;?N^K}R3luuFxvQGH$G?sU`R;& zM=N2h0qB||VR*lM^B%2d`04Oqf6L8Y<{x?ths>IDQA@9~8TMN0>ScV&d$N#ii}cs@ zb|Fyrikd2vq8!}P%H4Nk6Q~#D#Z@Ln&^c66$)*C7bf{xTyZJvoqJJ6;w$Be#>L|bd zna}g_Axd#sV1Ldci9OLf`m3T|Vc#hZ`MpKL3#r6`XN_~zx)7{V9EB{=H)yc(;Qz_) zGT*V=7CEOQI4!Ec*~_lVMkTj9YWF*#Fp@cdDjp!8iuLr1jjmp9)Ui(W_nhB+;y|;f zy3plAkZ(>6H@BJ_ZEFS5-7!V&AJ&ryCkrS|sD#;a%gK@i= zoPP2vdxk&!eP!aWl82LH-PwpR%m#}{IS7cs*wNglYtB208*ssNj&s2bbd?SY{|aV- z-SUKrcP4>?x^ZG3nS!^BQAZq-1OJ&Y!P>{6?SLT{Jb-kF96Qk0U9v2m(r=0=_?bB4 z&VX+9uP>v0tWVI+$2x)_`DppYTue8kpw*N?`9GM_U@3V*sz^)`@WN$Mwl{G~vhYaQ zx{Z)w<4d{_FoQIZ>_<#p2DPX?Bjij> zFfNjzgefs7a)}8X^gr^J>>ncxD8Q-z-xelXQqbL}Zr_zaGfa}CUMNm$kcyNQ>>x+V z0^WwgoRXlBrvJg3!m^sF3;HqFcK)L|wNtUuP_eRx9aV!}a#Fb*VQ<3twY*{&hjWT;^6s;4fl#+sm!O?Qi zGfixTo&Ys+-XImL5S$2eShRvfp!=hVc~~OlC0kH7bWc>I|4(0S8UL^QGOf`vr=e%w zO2zVj{~8u514U$kj4(Db8=%N5V@!ci1(_-Seh~&tJ1C4yE{7>Bno5KXT+atUKmS(p zrB&GPja$H6Yfk@w2XC1_V^#mYMhGjbR~U#d8V&eOQVA~h%3w(~=IFLf>Rsw~ATUaA z&qr>QZy1KMwMN5oUzW;nMdtSJN69RMCcv2(8!1!nf!!Bd8~Phf!D~o8xS*r3AUQHU zOoR-^|N4j(>>(%Wi%i+YL-@Z-D+VQSWt5BX%jGbKMbXH@^#6DL9OR6JP@sJqD%)+0 z5$Kd0^txtBk^<9C1r41<*sg+xF&I#oKKPz2SO$DgW;y zbWp@ZW6W}Pz7}pr;|XV`m)gC!vr#+cTpjx=$jEM2wyl1q)~N;~g{W5osQXQmCY7p8 zL%lu?F2Ho7nxotl>KNH;LH(8nPQ}hmnAAV1TfM|6=VouMKxzyxIN*qVi%& zc^__^My+!0znHe2ADfI+0XHP)pZ{2V&O{pjKAjXB-6n* zh*gN#;r%RFk+5uxF`IteYLRY!c?eZiWZoQNF?A;FzBHUwFVZ>~TU2HtIp_Kgqm4wyT*f=< zf9U+y>`rp=PWxH=$IV|0G~rJWn0@h@gA4)9o0xrguR3PxDmtiBau9sp#ZSx7A&w)s z+;>$yll1L}VET%EAmu3pgy#9Nx`C;PjQ6ypA_-Z=;}d|)!4^&tCIEuaeL1@1<4VLx z*|sVpkea4)?(reh1um-VMej~J;?Z0cbo%Z-ecbn8Z>aZi%&Kl)r)eU3p zP>VVJc$e6}{`ABL0aIj4tEMn$wb=vO&Vqma`0;IgP>-Fkd|H2J0sJB*ihX(_($O(< zS(z8C+Sy5oygigA=sjY|Dfn8FfLndqo51-J`JqPUWA6SyYmSr9gcq7W^fVE9R3!JD z#)FFMV>N)(0W+!~L`!Mw9iP+HLoB!W?Ke-7Rg;lkYuNxIwMl-xl8ky~mE zTgNcNT_6o0X?7*Ie71Sw6I!|aY-!`dth}RQDHG|jGg>|SHkB%3=@~Fex1Umau+Wge ztw!dnh~Y=O-KIKV=k2>R5C#4o(SLHqV8F?|ky!-L9og^Z_{OtQE0^_Wbl$zhMTo7t z8J=&tp?-yrgE5s~(*6K@-L;aGX5-*yeU8adkGL_1GenF&eK|al0OeLv% zzc&hIV^<+AS6C-X!aJ_{?cQ1R zBhtP-d}0&Fea>piIx4mCW#}?;xzqi1s(ae+A*}?RD&P7kbS-)$-(L##q(Ym!g{S2Z zaJ3c;5N>vOjq}cs%-}lrE0tZ1{)wXNK`FA>o);`RQwDdw+1KUwA&#MQt`2dF3sZvU zwDSEPUQej=k7zFQ6Jl`tW6~jA3!w19SJh3DDJ&fgi30JHOg@@Vu(W_#R?b1@l%Q0X zxsQ`8ab^hTzv-KRVB{gj&16V&w@Pft6#;g%gw!D1VLT4iB;6~nl&HJ2@1V=QAzU^P z86aAWLGTl&ue-I(@jMAs(r~z1V%Jf@MHgDhO^`VMgPPede}{hbdo&UG=!XSnYJcLJ zEnO=r@=kq8wSt_B7&7 zq^pxR=woRXEY1k3TGw8$F{y^>IyEO)OFhb1Peqa}^o7~!mWf>bak8HNw^O&&M?|tB z!fo5Y zXXjQe*8RSz#Wx}%eRz;|zGf&bu9^(GSoka$c{9eB%!{MF4k*}vw4Lw@=b^hNVjVX1 zl-%}m%CcMdieOBXG}pt|NXdfG2p|=O%5W1=q<)t&!Mo)n|6SZGnvTmy32|dx1i*-eKN{KpB72EdP#-DKzW>z|Z@x@>&QIuc zKEWI3kCB3a7EL2m!QGTPpS+{+HY*x!OcYW)M*{p}4FI`bZYI>U_&l;ZP7(*_!a&bYG3Oj-9Z%Tbu_7nF!I%-550V5kKS#R>rfZMy=fDMjlH_1Cp?UPDs&?&DtIW zm+k~q8*2r|mob$9NxuvasIq}bU+vXxO-J$m)G&1VWE%BlaN!=;F z_$3e~>vFjFIf4oxmfemULeU75?wEHf^5*xNSR;ZtIG7h5pACkHiV_zjms{BdSqc$- z@0R8~m&o(uNtk<6m9k%!C`?aWE}y`5t*QuF>}!s9Im@kv6CT8`(;ZG_o|f?x2I4g% z0ziUqSp5~7Zch5**UxkHe(wJ9>NAf51L4FJDmk;qbziOL*|KjnbhX*;dMStDnQ!N*M}6vv z?~ww}P*kR6+7okQRaFum@l=tzJd8QND5mdi)1d)y3WYHjz2>R?WM3R(<C%P?*1;y{jS8kevu%*Oq}agmC?2+ z76e*F61sMp%X>%Ip~VOhi|+q4fa3)jgn1b>chY)@=V^lHwvsUdk<`89lO^%CS6E=h zQ*f>7(iC)%hgEslY0E^0S&P+P8WiX&+I_h?nO=F7ql3vOUoExZxoF+t^O5OEU0luKTbZq_R~C0nmH|8sJDgNE~45y*iWiqP5gR7;lHAB zZ#G@iA{zf*g{O0Q`9|;Q*L0bg?d|Nv@<4(zN&?E-|N#?4pJ$M|a%+S9x zwhGYi7PKsNIB}kRqkocas<@fqLxK4mqxK?~F z`o7C*CRt9Yy?^TnhoJk=!U$`Dm|YnJqJIx?zY>XK3IoDbPV0}KDmb3LPtHvZaOhp( zt#FTq2=Yq{E(tB1D}2*wzu#6oa+M(5aiRN&bu|$~^zTF@lq9Oa|7gNfCDAW9?;8M} z8=$yHH7*h(SzVaZmitUiNc>m8pJaIK%Q_k1p?mSb#L{{jYrK%j5_wRb4&AAF_bW8*_G>$NsC@HQ+qHNTq1Q!8 z8_IIUNAxq_;4>J@DZFFha<&H}#N3h(Ec#W~@PRcYO0^{rH+D0UFIXhBmDtka_H>?q zJrXTgr*FG`p9UN!re;>Wbz+GOkyuuri9Fgh*jad22WIAU#oTk!hXcJg=yCNC!#)I(0O(VYxGJ zh9&<9&pS?>O5{+E#D;Id`PN^4iFgh%k1O9Lc$Z2qP(EM^o?OhuTV!|>7>HaW#$yKI zGmQ{2LICpY2!JGlUb?=N4{oKnXyV^k50RK0g!q0$<&9S)O)j~!m;}EO zUXz%ce+=5iy-BEzh;^KTAb0^N_I!#06Kmp?XkTV?by0qXlf^b!WDbQKymhQC;pYZC zckI%UuxT^sm&|A8*YHY!N@K;Mhmxu8erLM#Bv_`q2on+6oH;Q<%dd}sq~-;k3K^r+ zoPvw0{Y!Ydf{{t#;;N-@)zU&ZWfcOiTf~Cxe_)G(jy}Y@YbMC4Gfp=}#lP;gcH6}` zJ6Ne56dvtS@}{P85&QMu=9MEWq$G+B#LxE z0PYTU{0^<%-&mg`njXQvFT6MDV74Uxo`pNtyR@OMhu?#AOaj8KvH2ZwYFWtg8GxYS zF_E!`5%^(l1SR$6HYq&a|8jX+pj-Jog^tkY99Gv)vPFk%H?ETeAS>X@lt|4~N13)6 z0CDQc#=u04?ZuumOQdve)gzwroR-&RS$U5Fx9pmeD1i|ppy^1hK2H1(3ac8m(O{&6 z_#zuN)w(2uq(#i_^}0AyWz8{TNBsg_d#aLz8=mK9r%XB05z=eJ|!UgPr`S0Z!0l?=YlvSu-#U+v>rPESFtF zZD?IIce1QxUO(s@Amy9_v2J%Km67yd(B>hK=*oV;K|D_*tO=d{l>dMAa>rOJsY^W z84VBxu}4-%TYY5C=u~88Do$&&{0xOSjz_?ffEpwomcLrRD@=2jx<9^(0{ATqGuW{4 zw*v0S{8}3SZp>t??GtN3`j@XiXWks=8o_t-M{x`AW%aR42uTux7Q_MVXReCIaUI@f zgXXOLcaHh(i20cDN!sUld^$}OAkj;`Z);ihPF$S+oC*6-$u=d2+_sw8-T)Fx2!e{1 z1q5tjdwqP~nAiLT8o@zlxeJlZ71jN{YL`5D4)lMvZ!f;_wIPk1h#l87w6)hrYMr;9 z^i_|ZI91HrO3Lb9S}^_#Ql{Zt`*P=eByR@2<`Z*MGJw3{O2n?``Z?2S@%H|zb5xtw zy!K=qKQ1DF(w=+8fdnNJ?e`(p;HtYD0g3CK8JFgGwY=zVp+Gl$E5E7(ZZloro_;T@#Z>-n2I?>=Rq$jIK+i3K+MaSFL z^L3_PA}2p~PUm)ISBFEseg;sjh@-B#;gDE9nC|de0Dw`~Zj9Ry;R>0^YfWI)TN_)N z#ZT;icR(_IB!gx8w#KM-hH7iKd5CX1WUc)ixp=%o;B9LSqAe97{m2xcAVKYXUT5n7 zz-;Mb`UfC=Q~7R98PYRQc-)?^snPU?>JL9^P>+in9<5VG#&omrU9ITaACyV(F~23lZIHZ?M8wod)j0mt?u+4rabW3rCrb8--#^bkJ`_*A6n<% zY}ppqq~~~K2l(gKe!23MovB29;9-ne#2+gLda%NgxEjw~7 z5O&_L`xlFfzoF9`yn`L%TnesyU$6?KqI~;_gL6qy#4p<0R0D5m9!^_(InzBCPrmpS z@&FXzVU$g+kkEZPPKhq#NEqkcf#+)|848ls_IQq6+{-~%7ySuHZt-0Eu>bN`Uu6XZ zBq*7cG1!Q6;ng$kHi>zVx9czEe*dkeUoeHTj%@QeTD9JrCKO1~POV`p0kY$9+fsnU ze}-;9#gi$QwSybWRt(%4$YVzKIlY~fUaY)UEXgfhV+w5PxjIVk@5hMUcfy=fKO=l2 z!R2bk?q|*DoUl!qD{y+MiU%=Qr5n@EN+c4E$D+ ztUBJyb8j^RNGay!(5M%B%?a4awm+Oer1an6ENNC?xBYz+fsS?l_sHuL?#=L@OT)%ZlJzyz^eaI}spBt@l#zp02QM0s-Sy`ai^N^Lf{xu35}h+!%zoF}S1Y*0 zGx3dC&$-}$(~8DLKX!D*8CznK@=H>~^mH@s7qKp}x$Kb$R`C&6Kp&fZS#} zd*n3Xxv>>P6#$_ZK>B!6UsIX$Jl!j+vDGxoC6=9Io&A!r`-$7-yFvo?_~U&TPUXDl zV_!4{7_|7Py1@1T9rcX?Nkx$tHE+$+rrOK$N)~0w)!<1UcKj%Y>XzO%PRM00wHu-@UTd zv+Dngu(ytCKv`PLbeFp;*xdhXBRhC1{Hkr?hC%7N=OzV#Qqx zFTZo%@A=O2$9KM)&Cbr9&E4!hv$Hc-$5W&V+zM;AnK1RxdaB~Yf72Hl{=rm!CC2R_ zS14xm=f8l#1z(ytZP4NGeQE+j76V>!&Eo`=qx|->aorMpqFL1$sk3G^EV;7ifFRw< zzZ2{6T0|Y0J(~ZHjH}!sMTy-!WjkY`GVZ11WEPJrLZR+^azsA?LhHq$RLnoI+bFQ} z+?xVfSr2-~+>X8`tt|0YoRM-|IV6P~{>&H;2zzP}i@TC94@~=9ubNVE$}$z~(E0D{ zd*Y!SpqoYMwzMH7^L>9#q0?s`htI?ezX&1mUuZW4RK-_%{`j?2a0zDp*7IMk=F-0W zC&PH#eV2V=lGaA)1~PF1b&ez_MK(0g|=?f=H_Gi%oT*0Fc<2h^3uQ~l=CS5U#> z1o~IZt2pQ5Hk&aiK(rJflT@nBDR%VF!BZD%BT0w-Q?I~8$u`qpf@MsMGc2RuUxd&n)VNfJM3=0 z{vwNJxdZ2 zt0p?~b2QK{&l=AapA#!yb+Zq}jN{dfEAPMk9a@zX#;9E^3on%eCNzJY)wFIc1%yvuPx31qY1N8X{nCCRL(7RF-6tm6 zJw5tQY^Cscu^X*Reuf`_+hi=0Yg$0<-cQ7kx19;!gWDO*x6Jd5QiRb{MeNGSaNdwyPw?HB~&^j8ob%k)7T{0 z{ESdEJ0@%rTTT-}#}vUBVkQMNE-NY`g&ajGtTm=j~E`F8N6nA1aJY^zs z4p*ie2!u}=%1kO~Plbxj=adXfTL6}^XkeGy4zq$4b|ff@&qC-FBv3oG;ilJ7n~M7z z{oyH(bm}*HaWW4f^duWrQ1&PwP07;1QmyDW|I{!5R>U$o@m3~~FJncD|AXz&7ZVP! z49nKr$^Ks^OI_kGwoxOtCawj?u01sZkN?f_+!>lk;&rhRRAY}Qh?9VuMw7UY!k?g@ z{#=Q;9BHbfUArP*G?d0@EAVLN_l66>ZIVfhV!v2MdW%@)<<-|2$OJ{cC~BZ`fzCMm zyL)Qtf^N=(+BmaNWK~eCA|kof;w#wh?lGPN25^@3$KVpje_mXKm2S_Boc;S}tM7dl z#_)-BB;x1d*EP4>X}XQklpnW_Vol@)I!#(lq$l5pmh!g0DCZ5x7TH&P`Rs=Lh8|XL zOQCYZwT9xZ-xf0cidwT&7!Vs%m#VJo-od31uFU>_{dmR;-yvmm|_8 zZ2A+jVX?kD;gK~jjRpgd0%QG0b^XUvUZ3PM-?(d~2b7nVCH$uHJ}}7mQTVe>e^cbI zf5`RYd-k~En}^ya!Lg+PBt+6c7&i{Wy)1gcW0`~ej3dOzQldNbsNN>7^y{Q=kHg= z2PE%1{W=kUR=&&0G*|DuE(|*Es;jMYz}{8XoIk~3#0>10NBRA+#Hu21Oq34 z(q}$L4yi=|Y6;4P!OntxbWC5sw11)+3{^Hvi*>08;C%-G1eZ$$FCkSs1@svt&T&o+ zmb5rOESTNRYGN+^h105-nF}Z{xiIQhR@L5uR<7`kWF(GuuMU^u@-X4S`^R4|nwMS6 ze|6HU)r)rlv8Az4g(`|JfO|#!4#k}k%b72uvH`!t*5=}=8cPU5TY$-osIH^tfPp=v z-gK=B`&)sZ9bt5U3-2PaUw$@vzGhjD9MdkKiQfrIuG1RfuDxJKO4&%qeQBU#Zqx*T znlsLNuoLh>M&E>s3P71+03ngaHFhC~0|F+rIp=q$2Hgiv?t=sW&QrN!)ueWU(GsXj zr0xBv7L*b0i<}1>)c9EoIXK?lAOHce4ihy#AREA521BvpbAHDbA6mrbIL(MEQ-qNK zfC5l#q}2hA0E`>}8`^NVOmV5446l|WDa+GTb(pdS3J^;=M^PnSMoTe)t)lABNT6)E zmfj@2PEmkH<-`Pl?>T9M+&e!VGcyn=EK z3H1V5+kk@ds4Pa?OZwv2@+?wDTWdZ(R1KbZMMkG0=(Hj!(FBw}hB7LF4+?`vG7%Gn z;*&b&1e9LnR3uHNP5fXBEzj{+s-)t{=7ZuxCjeCRrNn=qFHNHjeZKT$5e6LayaA|z zB=XN*^iHLUohN~LVksVcUj zYOjbobT?50s--9s%S&I8HrXUtjy9R9$E$vk4J|0rPeua*&;SX~x$!28CgRzoH7NCl zD^mDiX;-BBPdeolf9+`WFC?H-1(W4^!-5rM-(&Zv(!~??FD3W_Dw-;)y7Y#VY3#IA z68NK)fR~kRl@!I+ zhRcWJ;^*VE z=Y^!-LfTK4zCD{1jGJ8_u6}b-KN8DY55|jfnYykXY5e%9Tn~~qV#l}V*YUefoO{5b zWXIW!S~DE7d?M_86!_$H)*8Ppmvh}Bu1RqEuHT|Tf{`gH><`8oh~|L^VEt#N2q~J* zc)61l;H%k&Ygz<)lO*0sd;cQzc0()nT1xM4ur|xc!coo0!NK9$wM(@1dPsPWG8qFc zMS}NwEZ3Ev4eDzA*ym1@7?uDf$^Z*D@@xlh(cuumhrCtp%)no5Oq;F5enQX?%axB- zw5KwpYwdm_;oatYO}SRf9%V}w4W|^Uj%zzsz=vt1^0|c#>nNIE2EDgJVCJ#AfG82h>hCUwbdE$S5jV?2B(f^1Ra)W}o zIYaGafJBLqO`?_sY`h{dUBN()2(qkqo(v@+A;Twj8!L=gP{QK~QNw1JGT7a7VkElu zaLLx}^?SLp{Y!Jhf^1JR8t+*PD&=h1DJGk=_h3hOnWeL~hj>eggd<{iifKjZ!19s_ zwvDtNSzux(DloBj3WL(HjdC4Z>h@FmwTsES0Wd2=K)KhG@Wot4Tq_xq(%i$?dGm3Q zbgBT;U4VgO0=gDwJP!KgV%s?T}_T`*ipk-g^L54xHk%x-QsXc3ztsRPL@6> zdND+-Tuo>Z#Nf4V)b~gDg;}(kx~TpRPs;Qv79u2AIfc#RCdrgA(vn!?166qtKTb+? zFSU40)~EV6U3g}hz#(P^}7H}b~!DRp2ZZow@H zr?PShSf5!rxGm-iHRS*Z3M(q>Eu!Mp#=@#FX8zg$#zRwna-8$XWouII2#gGXF#1hN zmnj#Mh&O_@W2wqQPl#D$j##3gk{7Y`VPL-q<;wvw901O&Xhyp|&xmw@JwO$3?i?_Q zS;L53+by3YfBh!g=rG**Z}F)yW`-`Hco5@a0F#@xi)(UdK*Es(Bid&ei~fV#0&GdsOF{AFeR_3AT_@X(Ei);jkscBw}%LJN(0kuon?1s7F$x zL}GyOHZ;^zeR}= zqIQ77FVsryjzR}hImSAxvp7|7lJ;@URs288vM_0FA$Nnrz-~0ZF+;$( z{6Cj#^$?kim{XP1Tcoo|GAJkNXQr2hbB_b_F0h&mTa`?<#KX=iUD1e61s5pdF}@A{ z7KCy)onRyGe6cd_Osx336z{qj=Yz8OXl4%^dbkb>SwpNzXGMT64CnEKRM>;%;Qc{v zVOQ`s4t%!jpKkF^+SW#XZji6bt_lIx>S8n1vf7iUgCZc+rM@q>1<6V8}y>kbcLf@sOhOLT2@K zu=vboH{BlxNndFW%@Qky=1MO_A&}Wm#c@{++g9FKzd9ML9`5l_Gn5#orJ6eQsI{`< z%<0>{czHfEI@pt&3cZ|GeY=5S^0=@gO@h&H-Yw=$u8}PFs_U$i^%H2)`0er=gH>2H zyd~7HTfWDpLG<@#$EkB>+o17lJ9j5wLSyU??buP5NkJM{+i^9-uX2JpjLyFP!*|B1 z*39PqZCRpAF9*AZV4RtDznFc=xJBZFL0xiRchC9REXWlq_Y zW_A?#W$rU+EbK>O^eS-W@>v-I6Gx3fLm6QA5x>PUrOs(~o~_}CI3R4ub!SAm3N@{< z0)>CVXqv~a?p6@tA|s}=3DdDM=6n?((}rf&lW&Y9Ru07+hFozG{(%6Nby39a0gQRt zjBKAl8<6k1@NsmX86-rX{05Y^FIx?*P5aiFK940UbmHImijYL-Ig=}!1i5tF6vOIe z*=uDcw1;vOn--l<4F3wmoj}3ALXaBH24s8zz7a&N!Xcs=+G;1Kjes^8-IbiIg!Jvp zd}6Ho@Oo#7~%q>pyaHX z9k@J|u+&rg22jQ+44j{OOp*rCGCxZ_EFlzg-I|e_wz`pGFVo*y=lzWw#RV{QJw{(J zfK)F_CrLEE4eosVII2cZVj;_-M8nxuuhGnfllm*9pNh!zIkd~~e{X0=67*&pv96$!Aes{<+r!D_vgjAY z2)fwJ$W>OUQjujr84rcNI<*3Uy3Ne~5#hV!-6iDk4Hpevft*g5GgcK#`)=OX46aiqet_R} zBIwro7A}_15=mFWq{E%ZhiA#I0oSz?Eg8|@Np992IbYT2ZvJr$V&im}-^x<+vemUj@r6&z??v})4%4@; z@AB}SIYy&wguTP#X@o7h1fsEs)rVU<@hQVINC7D-f`)0YT~q9Fmj!A1vtX0xjhbNF z<9 zNak1PYPEfOEm}ybDN|1f23||Y!m;-x!57xqf4k%0)3(O3_=d_)hMy}{Zcg;qZpfvz zgSi4V){1nihz&6a!__)vv=rKn`rCBFXl7Uc6%~O;I#J*pQliO((kT+_Ow}X-$(Y@t z?=Y+(KGM=YSzrAs+5imU0785%J5bU6?pISk58}gB8EOAd0tP|vaIjj4wd9C({uvXN z9R&RgXAe}SyTE-L7%DGbZ2$Pl6xT(`zBK{(Fez9p`RE^Oy6Vi`>32ju@bBPs$_s*gEJhodx^j*``wyNtm%$Fxn1%# z(}Z*`45ei6CGHwd=-&y_<>;#|Y3u2OSiBDrv6o>C9ib7Zl+0S6P?Yk5jhSIqQd1m` zg_9|E++l!My)klSD_DiwSfPV`zgPCPwMlEw922`zW2oQJUF%T5Q5UYaQP+MBu1BSA z)MiQW$oDeFm`7mOAE4>!03`4&$u=ITO`(pHrHT)1w z&TtV!I_6gYyB>;d*S8;Q9=-{E&l2DXsYGj?lz&NNaRUIw;NZhz!U2grH&hJyq&ovZ zz6fGXT84zPT`e3&ga;h=8UTMa`d1qh8(s3RWW*3)UHVFB^WTI-C4CbB!eHiK3Bb(V zL^#_MOrZpw$Y36a-pI`KJit1FBIFe))^AEy<>2}ky*ON0D5|fq;6NAy_k$Ybe#Jff z&gQiEK1l{dcVLMm=#%DnUq;OJ;3j&l`a&y{Gz#sy0drsG2`LX&c{G(&E^X1pB2Zk0BIQEF~ zLQ($gshR0YL81r{jzbe^RdNVdfTBQ>i7ie^1X~lwh^hOP%aWw(Q_!(0Iyiwx0E9_K z#ocZzUTp^j+yn-ye$*d^N8>TPdg4F{f2g^M+lS-Cm1)bi@zlXl3Kjtrp(sq!&yULL zah_0d=W0WjrFr$qWv*LCX9wI{MeQ`j7AD{_@Bz`X8EW9L4z4<|B#xsdlFJz6D98 zue(#XUw`~nPT%h%ja|PTC-+*fU{uR!T}vPDd|awc>oLJ1`bFbhZ2D)aofb->Dj`+VX=Lgcbl5J?$Rt14yrpMQ{?BpHbTMjYfOIqR=vhRRf_g-VR zFkEp!0pOV=-U-#QMFFS(od?EyueTpT1vt+vNU4&iYh#aLfu0&^iR-h6jf+2_UBUyO zxEu-sBOPXREB}6tz2qN1x34H42Vy_g)%x!g`W6Iq3&~UMj8c#C6a*vu`$lR}{Lh%g zp9WQ)Wj9YFMpd^nl0E+hQc|$*N*~s5I0?Vsz4|xn@|+dvY@Ww-grn`o9~^D7r1C)o zr_RGCLZG9NCWbnAmm%}hN657*upi+G>X!crm{&^Lh?Hh#PF6rUlU1|^TYzy1n7;QV z4?R`<3u%9h4N`L231%*^Q#I zqHi~GQ8kOo6zjCV;QPM_E>eg*>vPjpJNDa@ zPw)MoPih-hH7L%|)!pfM64g!TNkby{?hSQ!k$=(tqj6^91AHzH?I5bJ&6+DzxX-`N z0pQ$CnD1X<7=-4hwVC1}A!-F_Z79w9q*}Sqy-`+4S81s@tJxyPZ-G}i9o)LGA6Toc)ne&Uj_&i z*AhrJNo8PnvA*P+nLz6oi{Co$5~sd77m9EnnRjODBF)Xsy&`r^?9vTQS5)pWoKkG1 z7B=osb>AyFyU?J^REi}TqYF-|K=9hI-mF!#$(Wy_UzHTWA5MwTe&c>qmmVpH_ZZVt zr=pfVRm-aCBa&i)Dv&=#G1Al;khklVX|1uUy$01JX=zQmdyeHje!sn6UrlRT-k`~9 zry)Q6$Kn@%|B3%R1FcAvpw9iNm>*&qDyQ-4{sXp} z7{t0y2%_eQ{d{Wehu<&nbknb%sXViI!jbib)%PSl%;ml>eNfcN0fC{X0`V!9L&o=L z7Mnk=9!c;2u07$QW}*YdAL+EdKf$yImncO*24Ec>`4C6(6h>N#Q02|;hdnaurkPJ; zo+E&wK1z;gE&z*+MmW4$FAkAc|*6{k6(#(#vqeJ z9g|*>V35cvO~oW%6a|xs6sutTbuH>=V2t4fG&q8AqU6aWyR`=ZxbJ>B(i@~bn}-H8 zLo|P&ZQ;Db30BG z3Gi_TJ=B;J(THzgKd3^+hr#iL!&qpH^mByRmH}vhn2*w9|Kjuo|uVTXZ|{Ug&9V7~;*5jJLF zxooiOVtD4Z2ZX=*9T4e3b{xJEV$@Tm3)1_Io;Y{f=wrwRRior;mqSkp9PeBohL&f* z=R&^9c34E>6rHkuctu_t-m8l{7niJzGnIrz1Pirh#)4Z}W5u8VBAL;{$QfhqC$%0x zQ-$TA`=ma2l6C;8?jfX# z<3y?>9w&nQ_X~{9a|TnJDB8WtQOa!9m;VNTXWCfqzOS9VY3owVg-t!mKUDQE4s!Y_ z;Z8o0e8oK{kzNMw!B2wFgoR7s^4hwbVTD7L=s5uM!XQ2Jy66qV?PjCwU#NB6p`Nkg2#;z9+k^YC}%h`TSj zprC}|oC}g;_~*=L@@P9vq4h?MkIR1@ogu!>gC`5^6rz=X%GPx4OPRAojLcRRjT;M6 z&vOe7S$-?uT2D!7D(!+JZnRMQgR)UvU7wBrR_$*ny!9nJUKg@9Sw89SI$BRI&Wz)2 z-dy-+iMOIf$e+zJD<=w6eX@hbn8~9o>qU!J7rR0Q7)MHq2Pn)|ve+YWA?-HlDgqpd zv;N1tpX@7AHeGb{F>#&W#n0L6*^uKO^Y$jVVcU^pr|>X#_n|PJ$V4c{&|)cy=9=Rx z&au5jU;Z&3(!SB?Nt2s8tB1kn`r1r!YuU|h%(#8Te4N0qSV6%}LlXL@v?3}U6>Kc2t|8S;b)y>%k28N$G5!Lad{QO*_{6U!7+lSld z{G8Q^a^WSEQKSX)nm>F^uk+std?`VQhd7vWA~f{q&@$)=g)!gFWd1ZfW`c}=m z=B}Q<^Y6U1I6F0F`}R6NmBJ^n_KMojkM3f{RXAG|-__6r>Ckwh@sew?5Z3OH(U?|X zdWd5?@crPkp5j)fdntLiOG~4lDY?6Sx$gJD4zaVJP=!0-1Py z18%Z1O6Wm8oQMe!j`b>h?)_GMEuka=EAg<1fl@Ht=lPvl^oiuq7m@kqZ}|!mk!hvH zZ!fT;%Gor;NM&c^jS>^Y;ekU03Z!z#nuRO`phE%X zzJbk)NoPgUQ^4~m{hjoyMC3qCRn6ab^=Mx$B2LV2+mlwA9(Voyys?5dREWu+)Nw+; zq7QUQvN$;grCV`TZB)6R8&+80==*O;p?nT|x8jJduYBpNfI0%Ar_PFb6NBAS#}$0F z8quLuqowZx`iOCg`jEbO5*l2DzPK8iZ4L$~6>WQ{zt6wm(|RMU%%X50=YJl1*b@9N z@2zALALV|PIY$Zo4;g$Uv|cw9exELp%xs|Go@_t%E^h!UjE&$SraYnzy$H5Hk zOgb3Ti7fru_l3^xeI(CBTU*;o_o@Ew%<<85Lz|v|*&b>=t%pS0eK&7E0pPM?_}3^n zMFq^n`d=^pACOn?SD*cF_y2rm4fGZMr}h8qK>mL>==|^M|I~DdiOGnc;lJ{KkpJ(2 z3OGd_Eo2ev+F|LjyAsnB1!5(m#tgS7k`xD}NJ|dsof0NrSqAD4V_i)t8dBP7%g@!* z0w-MmF%V9K9^FZqpvg`Ta=iWP<}5Eag*qDBlJsiiZ8f`hIoGRuN>F@?lyd_R9h3YQ z2Dxhya|ocgxk%^7j~{0mtDdBrL;v*8!4~YRY!fL{K^sygS9wP0mJ2`9?l?Bs6HYsK?ZP;h)sL_5rn4iqD(VX+Ci2mJ3$-(AXah-%e}o(iRy5d{r-cGb(P341KN6Fzt0B80Rv11{lfbR!VSC%=xMV z!V1muR>#mZ^lnHbx7j_%z*fEQ0hbI%L3?pcvQtw(e`prziKuvuI_-`D3VY#6U*4A2 zRG_XusLDbR#9GfmEPW9#Tcw56%BA&byK7e}jL^k>HWXe^92%KpMF+o?GOcVz0zkCG zr_mqQcuW>8v{A5H0Ol`0ecWT|#4del@c>ky_a%ZC0r^-_n#qVci$cWCqKiUk1N6SS z=)%3Fg65!Hfp#xvR^FpavN9q~k9%T7y2XvU01ST=gqT2;m;jC|IgxK2_3oQv3B4oDTIqI`Qt-CR z7(4YMR_L08D!2Q^fQ8pz!Z!@pFnSo-PlKwRD4KUIMflt2{^5&)f9+<%~vsVaNtwm<#G#Ri~CHr*RO#KUa{S(4Pt{@T$bb0O|-S4au1|zVbzkedQhfIhS zzL;;dA>~LwwJ)^Yy-Uxz~sh=#V!ohwy$EKPV4n9v4T515U~z=EdTiQv$w1F>6|i8oBws zAqxA|pq+-Q?n#QRZoxlw{hkH{cXqvT2|R+*p2@=-_iaRUC5J)x6qlc>?9qOs*vn5E z>`u*7>%I&gp9RF6oxCBvn_dkr!Y14yajd^=Ka(vjb7jDK?tY1Rc4u`wHFXZ@*q4&K zses>KnrI4gb3~IX-w47&g8YD#;Lv8uC;gYYc>Vp!S2f0ps>x1Oc8CvxxQw|R*~D^r z%pA+mjPwa&w6+HH`=po>2Pg106=ckhCqIroQKQHLR8_!p~tPU5%e&8o?#R<=YJj9KFJHjTVY6Hf|f;|lt9-lmdp@6^8dbfAS z3gP5CEh%!keh5C3KfPKMY)YnD31Y9n(NSt@<)p9mbV&MLb)YHo^83aQ-UokUE3NiV zqB46PWZ*%VXxDxBvbW5LGFRF@>DtOXSlb(4f&_gJWiyBzCeDQYcphq-MY`1dAz5Gj zF{bQCVxIQkD({^fPi}iMj<}Pr4SmB(kq*C)KIR?Nn0=V8-?X5G8juN4^7(O|rW>&7 z+MX0=nRrq0X7Tm%aSydCm_e~q9^jSKWIc3D_;A=}J7bBQOi_1&LKw+RTBICawTLF^ zm-$0^m9FO7pWtrNVr?B&D9AV}bgO(euXbcGYunFAFEI9N0a9e9`K6}C&iz7d_dtHR z=KX6ekyXCH0h-q-nrQFc?3@0&1svNU_sZU*Yc3T}4bNSJpsgL0oj-lIx4&o1xTq+_ z^k(Sh=udV}d?ZEf*wf&}7Y%c^J)u3!o%4SaHGE}1O!UD4S51$tH%-@FcZ8$=oG#@E z5Ram6xB=_w?Nvb}bNsRO#;yv>G~rQS=<4k&M&|O%=~$;AtcdNy%9eTZr`-I85v7>2Ik$8OxJ+{(L!5gm4R$*lJ|v&;(>l$goyCVG6xm;XmLHX& zPO~6xLyqKkw1*9+vSX_?=*2Eg%oV4WIL9hRf4RG~Uh|*s5~gtW&-#_J#-k*b{k=1? zL7jqQ&0de>PlXj?58}1TwV@X{Vm6?%pmLmm``O)}duhi^qk&*lHD80fFJa!zv+ebw zkr68D>&)bo0Z?b-%J7}rZt@@Qd<=D35~U=V{V#zZtez3fLn@?sJc4+Gy3TRA9zsp~ zrb5mA!nB8f<`SvG$s<0$RaM9Zd2u(!V^0h_(5R-lnM)u=O&a*#@R&60@w({p_%7o@ z=BD;w6{=C({Ny_?Fy+`uQg--$`~=UJRp2JGwOpmoSA}mzIGcbyL8bM2WJ?;HCdH_=Im*l!hN@vU9&52v8hu; z|5$+w?nqVHh$vJzi$_Y3s>Qu&{+J+yDp)_ISa+x#+a>cA^8`Xq&GeY-Jy>6sQjt~G zIt^xQIgAI1U{>yC1;v5mlUecc`cze!X0cM-v)Y@ON84!9%;x4y;+((lxW%FE=vf$x zw`8m%B9W5s4gKwDZw$Vzcseu1#@gb^yPmB$0h#K>_s?=e~_pJD4 z@e4pUxQ+~Qd`-mVS+8nO7irlM$NcWrmwKVQ)KtMuDztf;J~??&%>~ut1}Dblvuv%L z@?PTH$ZR2wb={HY6)$}lCb3g3qv7Yv?!6w1`Fm;6epq@=a zgeE_MntknPY|8aiR$E%0v&{$ff?K;-jiXE-nt0<3ljhW=7&~U`fm|W6v`yQb1QZj= zD%~x-6c24{Ra$~~#Nq4Q@4&PvKWgo`raH1KnBysV1Gc}Hx2RO84s*wN4pl!xN#!fO zomif;h3kV8kw+IPjfU}zgcOhF$P6Jt zF@kBE$YgswDp5~Y^WJvwp!H}A#4g`$YzcqFcBaQJ!%d&hLx|5;Gn&TBi+sdfg8&og z+Y-iSY0=MC2J4wu>^UGvcXxgQx#zCSS>m~*M~oxOz}s9r>}LitT5&hnxjmH5E9MVr_HoeIk% zo*>%+QGHlBj=2Ja+`RYM4sHRPwS>>M2igBwHiK&-LsWlm09SsRxECr+Sw)@61Dop* zs2#A&b7{@W|E`{6-0~^Br97Q`W*5pMAe1w8kdyaAO?g`mHSv%rd0B)*g{?0q4}pvW zx60z>&=QC+vD@g$;zeX~zop-NTOKtmoc$T{@eqCGG}ntcEnBFvK~{tuw#Eu^0LBUA zjT!TLat$ld=;~(Rz*5s^e(=B=VdokCBi1EQ2+~WnnMVlXi_GWrqvR^*6mRBshdA7r zrW~cX`q7G2ms!I!@J4hqOxnW)zB%{!+I;d#a@Qlzz!9B$%lqzUIqp~b=#+{Vv7a`+ z`fD7GBH2luHKV@>Q<(oewP0ynck=nH)4Mp(tL*Kn@c|VhCY#sExF@D3Ji8Blkzo6K zMLbfV3PQynDxpDt-0#W>M4EDxp^P8P*}kEN!eUb*~vX3_p9TkLofQY>uYx2d%d6BKvn@LTf^ zixh-a1RPNKZol&W6SBg{>9_M^tvR5~f7?K9PCg2R5j$J;r>e6`88y_rdo6_T<0-Y4 zT^j1dn~UhIr`A6q6}Kcz5%DfHH7C4*6=~PwB8QN6hk|8ff!v>O9!Hfu8fqQ$A1iX6 zyKXqLx&08LdA~tJv(RYn!-ZTmyv(tDw#D;JP59f|Ak;q2bRcR8K!VC!nwJUF_TJVG zvyTh5<>qU!FnTBuszSCcg>PG(Sxt^!+MaDIh7A&Ol-C#I_{%AKN4uBxO09JQv}Bg0l|(Abmr>xzkF{|G5eJV ztw%^R}8ijR9bRFY;l-qUc+vkxyFgQZHZKPhSRC|Vw&*AsO-7M%(F)A zufOxgTT(vnTugrzN(SAY0k@KhvQuzO(U3T@3@rZVpA1u>*#_1O*hh(PRxslR5AE}& zjA176Rv(PB!#}{R?O(>miG)f==tS6nqX40O2hV27UPZ5^r>k{z!#pC2Iq*<$P{COg z6ZL-w)k^kOWzOrv4;D~sdV2liX_`fEn5dYrbfv*l9G zqP8o$X{6!ewg!&hc}5jJ7};$|szZo^^ux+@pXIsC!}xpTtiL$QN>X=m!BCkqd9o4| zJ1-@9d=`I{e(Qs^$S~wcS))&fDP218&jaqcAEol(e0g<*Mp!6>T}sab-3Hct;!o|-#$K?O{^=Q1&(EKIm$$HDgB(J`O&H`_u7bW#vS;Uk`Iqli2sR?2t0HU>4~{5 zy(gJO2oK&I-+EVSkW4I{Ms;~A3R2gFfDj7INzXS00j0?>qG0K=|A$D|Q7+~Q10iH_ zl2!E_Oedx=KIfhI(oy=VV3sgN&lsjp514%UVaJ8!I+o`i#$LvX`&z;UKLP8<$|&r7 zaspmXoxMvg!_$u>z)@StTR^c>X4MX@4-ErE$%2we?XT*cd@4}n$@Q#wM(UM`RO?mH zz{G&3mU2M(?LauRB?Ye+6BUccjIleO3l|r~3@j{)PvnA!XM~53wW|;9#Q*N-OLDA& z0ob*oBmvAVZ0KxYDws@?%!OPJ%G-g3SY)o8`T&od z+;d3P+Ok;3@Y+N+*q-hr2C`S4g0&ZI$lo#TCQ6&4kxXyW5GbllkYdcpgGI`W;HA{z z)Ayh)$3jnXm8dr%<9>aQl7lo5Q0_*X}``~LZ)phIFFI@$q z7^oWZvrv3E#hAEDiDrP4A3*}qP?jj`+DF)SE2lUVhS_R<95?J15tG!&=^OE;hX-jwU(|{S)a6B=_Nf2E}0}uW~2;izyGvR|?t- zyE(sf3 z8u1+FI4pd!P1Hkl!g$gc`W>}*pkl}dNq=NvSeltxoY<8LgMB9_g|4ruS&fj#PraJt zKTYLtxPCEK4Pn)IZ+-$yN>7p+D_5q;cmh~$CbyF(BvQnXx{TrjV50Y=-BWE^YQ|4f{ zE~&0gE+I&=Gm@ny3Z(+3lA&TrM|!eY)6lUc3?XJ>xT+#*6AHM0&`g&qQa35$&b$Q1 zTwtw%KR&_Ep*a1bn@=XY^z1WA9E{1D&WBhf{0=-l(#0EK^7Toyv?a*Q-PA$@=( z9(A6cv+`6DC~TbvHuYqHu%gT$DlUntEUpZh%I6RxZ1A+sHV&IGRc*{r<9xmOP5Iyc zDf`%rl>h#vZy?P>=8$BEN>cJsy#)Hp@0Y0P&l)yUcGB-AR|?b^FX(Ij=3s}Tj4wm% z=H3q7XH#

Ihe@>INcd9U@oE?#rWQDVPgJ5{uu(hW_U9d>ZPB4Kukwm>^X`(a_}C zQvtn{%vjd&*_YPun=dXws`Q z?TA%n^2kpIQbIhEyFR@T-aTI&TleOcjEoE+>E~3(@F=JwFm?v$L1=-TRiD(++#N*Z zd9D{uP0-u{e3XIfxSQ!p9Ey1K{9i~{O8d_(hd-5gypxLH1kPMr#C<*pT7R|VAG^(2 z6Xn}4yzS*Bl$ZUc5XE7~T|;w~TP^7F1b${;{6hi~d!Tu8I%rX`xXT^z94D3p6&%aJ z;ej{#>_|&G+Ev`y+PU(Qa@3M_G|Okyrd4=c-0KkhZQP_QRW42b`ms^zU|ESEbJUrj z{wNX8>Ss=Q_cekFM=)C1BOILU7c;$uvHtd$EU;lB_P(7#jLS;{hS~wU3o%ES~NY%*m>9XlQU{M7w z`-*#&n`2Z!X$G}ufycZ{WBBSIQhPnp@VCVycsv}UMfLDK_!e0U2D?LB<=b9JcNk%- zF3RQH-9`~Pf8g!f!#FD2X320$R8&E_#)j(2u}+p)r~n&OtsmbCyj69j zSw*XMwe$&XM4gI~=j$m5>V@z%UoLvA5;>5;Psf%Joxfyq0SD`ggyWQ1kR z$v|Rad=fN{X-;$%)lkXT-x*vo)AqdRq?D7VderIv4*-!sZokCVb_~uz^=uwO%QgAG zx{<5zMv_Q){%8oM+$sU@ z3V>lAljFc{^zk^FtvPf@K3zx~2@>#1KB?z1e23Jm{o6xEJ?`n^ieG1occq3a=k~3p zC3#Q0Y;Rey_bmEfMD$*J)m?*?z0RgCCJ)x%;QqIx)OcYTO1be_D#9w2Ygb9&YB=w| z<9?w0pb}qpK!^evqN~o(q>a&sqn;xalG?2`S6VRrM`Q1pQ+dJ0$u+E=-uF zDRjY18I0g+5``3$q9{++bTr81dkya6+&q@YVa3a)9wWZm%^yjlfpz=4xBt)TD^d-~%8kPm+&w)fqZ2Im$4pX>w@d%t(H zg?C4=_^Ih4ibXzB>OO(=?uM7rGh}EZK^K!0pVjoZNfQUuEe`|ONX_!v#a z02q+77(&3|Rnvft`}Mzf+t_L9o4E zuEsPmSCQITmzyt%{Ze8Qad#`SSni#(vUbOGvE4AE36_E;CP#F+Msb07v5uS#I9pDG zRBS~Es1*iiAti(|E?m&K_|hEE%~cE#XcjYPFBq|DX=;y9`WMN3SqPsZp(0P_xulSe zcQN9t==j@sbcY8Wi7!bb>z{PkCBe}tB%&Gma7{LqRE7U}mrsk&-6J zt23d;3=$=9)mJ*>IM%t-TI!CK=?=vXgnbifP{l?f=w63{m@DWfL)d_M^dBBdGZ-{V zY*HLZ)dQge>0H+(G}3KQRMSRkU9nR2#NdXeh*~zGaaodMQrIXltSL2ik{Hs2>P%|P zQw0mi^r5MuD63lIOyfFT3sCSHp#sn_Tc(ChGQh^-+$dJbpwl$7Oh{y63K%vGM=V^K zSqVa*lM8Ah%JN8>17)P~*CT<$qoa!N6~*hUjjv14%K$n6#;n5V~P1s*%DMhAFQo^phjS z7(#X5rjQMzyf?f9V22iA!Ba}Uii=jL z27<)eBGB3!z%ESU>#4}udIPu^LuG6<-arT(sVraJ>QC4gg!BSwk-(;O!3X zj8`k0&Udyq5SrViXf18ys8}xH#da95!44#LgGXD3g^_6lOx^}NMOzmzj*cT>SXOL< zDH?}IJJg_k1mVC*;_Jpb;%bA^FbqJA0t%tWeVcDGcM{~zNmYPe4!jI*U;tk&cVXP? z?Q$o92JBi2NqgD`AmlBCFIEYp2j?s09dPSK*+p@O?l62`#4h|2^C8>c{*Vzm(NG8o zrgww+zc-S}AtCss01sdD9>=lXyWsmKm`TjRB9tjg6ryk*v#_4xLnoNcnu-iCECNDk zepl=wtb|IRYGMc^C(Jmjph9E-)Th?~fmeTP_B;n@3&-vst?f)=&@yBt?!?GyB(SP! zD5h-g%B|52Eq+Cibs7{X5r{fuNTC%NpdB6sqj36F#);NaOX)}%3)wi1Fp|v)8H<9~jB)@JBkG?+W^CR?u zJ(U0XFDJ3sHM+L(^smLq$&GVpZ8-}aJli@SM$Ty-y}bC)6p1m&Flj@MXa@j_m)~D! z9bD$(r#9Qz2`d%mm)fY0aqcQOkV+Cg<^}I`dJHE7goK2ImRg1wVWgy@k8})Kti`C3 zeS#Kdby1-`g%qX;(w$_I&ZXK=g%>D>PBfUbFj6%QCTAmCBPIfo+H)?uT4+lbDnw+v zWRR3uxj0H=Bqm6epb$L}0UYNb;27z#_Ub5!4Sec7jwh_?DzP=Vm<~4siAeXZ>zzy( ztoQEYCM%gKI+VJdY?o%Ux_Qi#Q&T0`DU(wJLQ@t?mtdG5meR8lo_frR7bjGuou;Oh z)bSl;iTcx$V&EE9QKd}-S%JX8PT+Xa3Sj!?O)h8bQ-t+)GGx$Vd}$gS=hY9G+p4op zwq}=U(o9l&4p*57`f=&sryT`^5&+b*CK3#|1zrJMeG?UL5bU9(l0_3hJ;Aj=DJ=17p?WUc6b&_@;P*Rq1 zkfO&Fpyx85OcW#GyPQaKa{3-L9dOabLXZ}A;@mwG0Itm52b6gLmV13XCCc0alxpAh z0QTP&&VEUqaawD6eRYPkW$Q7BqeqVV^W$E7@#kIj*ezlG_cE5v@_s*cf@rp z;ucZQ;f9hhOMS|F7QrZ^p1w!4&sAw>o{7|hvZ3}0LTYyWy(zIav6WweD=4x(ux5O= zz=tfPVKkPAO{4C610)cTj*rO?GJpnsUhic3{l5ik@3p=gTGq9#Y~8$G%qm;1RplYd z<@Gyb(7}NV4gki%+ZZ@IgSZG{5W^Q@$43a|rlxb8ojl#==5S!ag9Zt;FNv(qEsUy0Fv_WmtOY~E-aR!nUWr*{BislBe>1kiH#bKN z=pveGZU%th?$uRsIC*U?Ybkh0WFx*K!GsaE#?8P3WFR9FKz6Xd64u7|__VESTI=zb zCT4Hy#w}}G7{)P-V;IISjAIc^FPz@xu+^(hT0clg{7*x*=ld5)?Iivwciom`^cGqC zHY^eL>S<|YyA>zfDYe>p4{56JfW$0&XK7$m^yjGs)H}ldE^@i*WE)FZptP;RRqBFf z8?~~{=2?gZ6s0tx;W{l4Yk8DeV{EosfkBAfhRoiuEW>t|GvDpnd@xJ4661Is(AJ zCPo9FKD_+-q|F(;+sv<@Yc?$Jj6I&(DF#Z!@k}|(?=W|ldi#yOX5jC6yxOO`($Y*d znkkFc&q`9&wt@5wgn5Jr6M`ucld_QNh<16&&QM~AJR>xqXoSNDNMIii<8)bGF7Jm$oMN=trzP3xNp-LSumg z9-t^8!Azk=3K)q)zia{p3deB_%CF=E*m)udh=_=S1z*E-p!gKv79vJyqGFCgQX@=r zh6Gp%0RWvgy!m)%?o&@1vs=T=HTN_GgW@rONLa1NErTlR`)$niE$j1kLi5+rc=4qm`$yOF&$9d?(Y0I>(H$Y$% zDyUR!Vhol`)W`rrEZ88B1vH6Z%Edp?L_ zp1vP?FI0A+5ErY6rj7|qPbaq{FGT1M#d~`993Ib8dWsNOb)3qykX<7kV@!5+6xY|K zFgmRHH9-{v83;oIUW6R}8U*YlU4dF%35O`4O`Z*oginB3R67IYOnZt&h*6Ls3VZ^8 zE@qQGr+)6^Z#JIEJ$QHJ$|F}q3|q(Ax9q_jY1;Kd4g|IIL2Xr7`~swj1!${dp&XSG zA?9PX5?aKPbE$NNG{2pIYtM}FX+koRJmyrd1BZ}|eV>JNTP(`Nz`($4@!y~y*ntRh zoZy4RASp<3fyZh<@e~2#nu0a%tb{WG02;XjApnx#rwC9apnEzHQDMmysdWNCl1~gY zX`TvEs9s4?{1~#TXnC8joWdj@wEh3i{>=pQ+S<3g*1r?-^zqWt*!~OKC$_hl$zPFG zslU}K1k>#+swPI>`MQ@meN4Z`e|ksf&G1%`H@Jjw$X-PV)UoE{81O|K8xmsbT?iJ% zkrD^2P%92nz|55^uopHu4d+qZ7sJTr0Q$2=Z9c(LNX0^U4$@zK!3 zc=6%g-QVEat<2~7TRYB_y%<%x9%IZR5-Y^bsb;PM2675Q3t!5DtQ5F+`NWhYF;I6#<}$B2;Kl&qE3|w!wSp z)~~kDlCx!2tTVuj2rz*#stmxWt?ua$XdWlhOrkV5q1yOSO##xd9@A^z1W-0U@DjR& z;hcCPDYVIb;fN$V)i{YcoC#f$oa5wkMG`;`;MH=~2TAy#hecatjwr?%?%S=e!1{{- zlpsKiJ=Vr{R~R*r(0swE89L7<^bQLY*hTh9Aj=5FRhE%VTXn#S-r51FrcLU@I~p|w zfm0~efP|7{K~z_7+>NNFjTma9K_oVsM&oWVL>izgc*)hXT`PtiUv!W?kX1VYlp^dd zaat-Nu5GV6pn(?=y|gL93KfVJ6$NKWSayj(*#x%|MxwRbeKbxfWug{nVFXzKinksOJbMx!A6tzoU;aOFIG;AphCz=g78<26gfrF61m^+Vic6mJrOOAf=roi_G2BKLAkF zfTTnd+%aWK11cPZC~Dy~7lV*?gl!R^roL4fLgp4-~CA zzYC_xqn^b;Pel+SEM4MdGg2o3SCQ{gind?lDVMrhM#RB&(fdOTYgLXC!pBBZV5KYC za$%1H#;(9P_1~h{Y&tN|(~0eaMiM;_VtKSKms$f_)`D&-bAy23#bm0Hp)g8nXwIRr zAn6*8Nrwz&gDYfWig?@T%bQ!S@u9y^HU}zc>0K_1W#0A*k(6sKx|>xCXh>T&k#vl< zi4|3V3Z0mx9vV6*uGIJ$-O@qtGL`{@+xf8BF+pysq`{Jqrvf=y?(c5^0A^-pShGx} zN{}q8ySoO|e)t0uCdBdNB*R~q+pyzslx=j~QbsAF(^P0(CA~dnaCj_-(6^H|M;YC< z*`tZ3FKYWXJl>R})aocdxDDa_PRpn(JId+^BLdWQ(Gb3-);p z3;_&Uq-isABQZ_UP^e<7c?K(#3@RF=q3qsC0SLIsFp^8c@Fcdv+ist3{8A)L-a248 zQ@A16$HO8ac3`pOm%vkw5RmP_wZ=F?657rrypB2Zu8bn$L1lI*CQaw?R+L4>u#NH# zm=G{R(>LeKUQ_U1b-9uK{r;5-w zsn4eHD|F7ze2XbNb!)1EQ;vY7DhX(SOX=8AQOmLx63s|jNmysll1_u7eB8yV4EJGG}X8BZvlb%n%g9nceHTrO&N3|t+6^J zn;r5>VCgz$?oJJL18;SFyshWR`vAP8^9i?r^?DI^cW@u#!Re>Lmll{?T30|h(CAV{ zCq&@ra&&9)Heec&Xou-$Ujbkcj4>vPbgA3{q5}x9b%<#B`A*bd1PJhzC`&!*s2vD6 zV)BjNQ;DvHs^!~JO;IgHQD)+C;s?fo{A2tC#Kf?YMAISolM5(PQc&S{O-$hPC$A&i zH?|X!A1TA|A3PUALkYo+MlI=lN26QkeIISBQuiX!SG?Vzn=fy~9|`tF&zbc#7aVTY z(~qEYn&%piU&s#XG6&K%(&4}%WnoHY)(l8S7SQ?Yy+=n_;!XXEo`YZD{5GQn$D=axfi|;eY$;jjOz1^6<0(%l-Y|}G z(4L-?gd;3i?m+_5r64T6MwH>{GbXG0nkLEm%GjP4mrjR0J(d)$+_{yKJlkn?+>a&X zdlEuBR(tC6WGU33iULBBjIs=C?!fRJ8R#3DHEZ!~vU7?o<3$}4mQ+^FnQ zK~*F$feZ;-!-7`=D2>qyRDzFJr=GcZXU3tO#$^ivx`%+4%6AcBgTT~qh|+8dcST9E zR0k#Z30s3xFiMY$=>pd!6)LC(n9xH7AGQ!PJUpzs7k73XK!O+qF<}_)?#U@qW=MuI zx2SJQegR91U!!yj+IuIn9fkINNf~1YDG6_M+;z3vJzH0^%sBAR7Oi@u&*cBQq#b)}WKKpl?4t-gXRmYsva_#FEL z);JvPv|*u>_9~T8XD1$$4gCE_S579P)U#nH6PZ(Ni3V8^z{nX( zmJaQ{SK*t?RC7o&-b|93Vp_;v#1>s)k2ywRkwz_^D*}soXnNOm=nCFDZ4a=}1uk(@ zf$Yr8I51ry55JdS+$doymk^K^455TmM!@PejaxZ%wbO&ivx75>DQfN zFEl3(Ayi(}?l()ZuxWvj*ukq5a(grI1b1Qg3JPU#4=K*+VOZ?q=N`sDfXWTDil!Zy z8KKCoaj1bjm8Gv#LyjU1h3a}h>1K1#uS~l9>|%#Eaq!H{(%!&8*E<{$;6tV|Io)HU zJok$Tje=KM*uE7;^hMtYc4K@!glIi?e^JGwp%W3Jx6qxp3I-2O)SVBY2gTNTOLiYd zWF}q2;i7~KHLaLb?7G=_fm}s2WP(_A#9xB-4Xd?wwow{2fFZmMsEdIY6;EFlH}h=^ z(9Oi}JXQEc{En6Y^>p-}ypHCc?S3RZUHWFEAbs=H;h-aA*A>_WgaLs1FozQW-jia* zY$Ac{N7p<9YZyHTA=N?y3tkxqujM^b^-N;Kj6y0=DJdxwjqal+R8P8+Xd-k8%;q)k z-0khGLq(!}_q)X($*@#wQZU!N65kocOlj;S^H}Tnj^nSpyUKRB_Y8bpTs|&6)%Ce+ zW|xDHEj~UUw)=4hKpK(UhP_sao?)z3{#$~lp;N2la={bW2f&~NehU2>*(2!vFXA@t za&-N!@ISg4yi$)=MA|JiD-uZuE?QeKMr{WOjL5`@$pfZ>GB=Q{VTn?vNitwbd)A+d z>3N#xw*eI6olk&$fTu$Vz22?9N&S;c!jR>ivNU|)lfu*{1g>Vk-&iEI&Y zW`WAQ%heXFNn_`Tl{O_HhqA+-D$f2DUBe12kDKlQ)mtiwGbaVWlPj9`dmxfaxo8l> z4HoX@#>_ouz@QcA2h6Vl`yp}lT~IXuYJ5uDZIf2oEv)^zQETPBf!rRhkbP}_g9fW9!f;~L|k536Cdyi4)*Qcu<2;qt| zO7vyinuQqAxN^2}?46O62O)V(_hcG3Xh;be1+SlHN2u>a25{4EW7HZCR|=^07lo|9 zkg|k$?U3xvr)cq>24|^MmZQ{2JT`z7Mntf%Z_DSFkrzpJow@LIy9_+3k)TsKgG zYXbMw_I9bSKXM`s`jb8mPKBW>U0@8G=W)SmR;aQtI7fH9bZdoXpB{s&xCYhbO5-@sBDIb>>U7RZ;UPR zjV$`?%*@WgnMrKhh?;41D+vrH0W$*LZA~6Ust-33r?z)JjZacqk#65TEqy`_#JC&* z&~{K2NQc|H?2>9$X6Pt);UZA2PYEhKv!g+-#2E3p!LFM|HZVQ_fZP@G3lEiUcR{wA z?L?JQR1z8ld1#0&z*MowKAPteZLIb>hAKQTOiT@TtsU9ibktz6eOG497FE@i#9-Ep z7S~RV9K<&vqBR(a24ENy8SA4qcl43NT=#WI!bqBt`3MI(Ms8AaD5aKbP(EpGx29)$ z&6>3-&FR&y?Dm$qC2449R*fAua=u4%+poZG1A3YJ0FwC98aZp7zUxC1n{^ep@ax$2 zkyyZOxP{&j0J?y{K-f)I_q_7>(G>Z3ZNmF~spfto&-w6(wx$n2NGB9E0^GZKj~m%> zHssCGQ~(+@8M?#~1T>2SU6-4Cc=q=;TJo@>s=0j^CzZ{5U;F?di=9mlkP%iYXBt^J zJbr0MBwU8TV%ZX9p-pE3F{O!3^>Cmp+>Ch+RJvs{tHm{FGLWbjc2SsMVK`=Tn-;-y!TqKEFs;fb`gfbbs4y+F?T906nQBO)3kHB1(D$Lf$6cqLs}sQRQO)f2dT&Cpy~*2s0(2}Q z5FjGh`ou}STVkd{i24byiM&xZ z&GWseG+cGP&5a*8tb(yyaig*h@(~&hb_W$$?5~c^j(Oln(ZR$;wOY_1*fl#-KuF3} zGOi+01x)T$Rm6u{Jnv{wX&^j4*@>h!0|VrIin_vV1Z#_DoiyAlwOs&+82~WAFv7Jj zM2l+4ETNd#HB281t1-%2;=v;%fHH;v4kr+jKsxq+5VXgd?ilpsFxq zX(v%6bql1Gyk)^16u2CVOW44MqDr0(yNS3O_VU0O)|^8zy4VV{F#>ZZt;FP=AU$4T zf3t4ZLRxiCqE7d%Jm6X_eY8EkDziheK@@{LAHCC5;5DoZoTmy)2rLBZunmi?;jvSNI?@# zH?j3c-#dm)y4fYP13ib2O-NxB?Q*PJND;L)wPj%@RjsHSER2(sEC__4g(x60YvaF0 z_A4SgoB_dod>zHTR)a3#?WaAC#&~p=0M13~*gaO^CE!S)Xj7fUcNM%K?o*y~)JI{u z7ee{kI_|s$dSMvzU8|^hqc(vS>|G^+M5M7k1UEt0-?g!?hXWVY0gY^y3=Ro6FmDDC zV^9>Rh!P73AI>6|+TPzJG*>=dXBMp)34K1Fj(}wq_5hCf3`0Rd2NMnlr+RnjYTk>p zTANjewPy93KG5`|$$+_hdtcOP>?HWJ>NobFJ z^%q67XnDw4fzKTZj2vQPHC@bg*?2mzkXM!hvtio|N^)9Lhh!TFiRaE=FAXJpA$AXE zgHKv8PKfVDI7JahA@kV!7mD$%SO@Wx6%s{J0~M#f7k77dF6@RG3^dc3nQ3W=nUYA;Ktf1S1Y1Xbf<(e#>1dL+ zi3UN?m*)t}HJr?LtL?86qVD&#qGX%BZF``d>VIbyx&eTuU{~fafmG}Rc?C=J zt)p6b9zr$L7iJKpkQJ+m3WC|dxiGif(uTo;z`(`uK2FxL8`b1R(oGO{G)NZ)jjUM8 zwv6;cLUWMdTtPc?nBzZJmo|K8o^f5Pz>=->5o4$Ms%x7IQE{Oc6z#4sY%az)aQ4vpTucg+Lg5n+Qa>sBue z!{kK^XEu_qLu`G7j3iuu&_{uFu}@`t6a=^tJLP(wA)1Eu7bg?AJppbo73Pe@lWtmY zFrlFstIv%*vxS;7?9`E>gPNi0+W;G_XmI}Y5@g(5Hc;b^Q4Y$|Bsen>fsFa4Ue+98 zg`p)?bvt7%b6dT|(3)#gzIWRfkbUQKPQPXAFJVp!unW;^#AGkhLA5@T>g zG`=$$D4>Ecz@kRbV+fH8kkMe~K?y4<3nB178LtuF%I+s~t^UlXgptOj9AT-Ua+gT5 z>R_UjZn|~Bj#znq23np*H4)4qNkas&n}m-o03v4(yby#_Te|%YrOy zTES3T4jhFuRbp6mY^nkW1F|j^LNNW;k0UtY$Z=syR#D_8vY; z>5hk^#QnpM)B+@3KQ%S{L`eOazU4_h>#oUl4sL6dW51I6pi6ndRMm9p=d}?9r8*f^ zdVA$M&As|a%4GYtSs4>tzM#SN(UH)tMZNPh7^LjQ6;)X4u=dD(v!m4XE!IbqSVg-) z#S3PtEq*T`<69~^xdx_Lmo?*3s8We*uS(qHXf$)(yyJz-qr3nZxM6>f)1T_!s6A#X%{h)a`gXqP%_+*YwOFeamn z%-oBKX`hChHPTLf)&yJE&uDcbEQXbb5cMC2U3y-fFnePLF#PuH_}Q_}Z@Xw5itIBC z#20JoVf?j7*dleyVEMFFgnGcax==D0`kHTaOD8*v3DFF8aGk5uJw}U8eT@jZGNQO| zXm}}G4C9!n$9*Tc%x~R2BMy?&YKXR_Z+FB}HKP%!q7|^{D@(iin&QR=K*ul;CJa7= z=*z~sL8;|P?Z~`{aAnd1fRf195wcxqlW~(gU`Qj4Qk7SZbsRKS#z7i1+E=AOnX%W! zrgWsJ>R}YBdpm8XX?3~vdnC2+Q#;w@jLEY>QtDZTWt>>y(nH#)MMFuHhcux$*- zRAx^N_D0X3GIe2w88HOi3fl1&Lgr0?AR#6rhH=h)0N$5pw>v%=84Y+SQ(aQn z7Y{_3Lum9p9%%MVGZxGR+DF&gPZL-@q0(J zsYsRr_9nj#=gampf&)Z(=1q%uqi0sL4wYkfHan48 zVFp_WB2YnF%^5TzD3@f38b-C6&hULdm*w*1AP?k&Qu=}oy*=Afp|Y~4(n;E*oH4sR z4^+wSM=19hKKz3r5&>;8cj`u>EfrTo4v9tLjUps~d!(pX zR86x{M@DMV=d;s?c8`j_B-mdvVNg>5)lNSNB#}xW#UPEe=ZNt&fcbPiFGUTuO}DH> z@uvFUjZLOsHm#hAfEB9F6=b}rCaEu>F{=pqd4C2`OQO4?wAZENjHxKs`mqaL(3eXa z2&kg7A5Xv3im}DpTfAb1*7b5)E4yQ-#TkneMHG_DHTu@DuZg7qSUkd}wV6oMWDari z=}K9hLQQ3rge)N#rTZXM--c%Tm9D&b28Yk+_1I2TdOMu=-i13HGN6G~CC?cVa)V`_ zF4J!Bo^)1skf98;3wA-Ko$VmzGMSnLv{q_#Mv+!|eYICbEM~f9Y%i&rek4XPT-prXzI?4`28JgD*^iAc@i zU}hOgVG^57gkHh5>c!td^-~b7t|c}4=9R{Vx~3TfGSNNA}<2F7*HZ3 zyL$l%2R1n_7`~GHH7G#C353HFoy(eQ3E6FcxjGHlT=ITU*bI9115^_Eem3n} z_y*p_8*TDLNZqcS8ah8bKP3`A(cyiRPr^8U7meikK0U+xq55eYsBrOBRdd4WI}Mof z_B{)WVpb+!ei3-WMhAo7sNLzwHWsTD@u_xkbtU5 zDJC<=yxv^;Jet!33%09vxeXPrLY9mdk%>$|q<2D{5l+J#^m+JtP;+cm1U0zJ65?_a zP+?MqcPnUck+Vglm1+qVR`P70A3DBpdK6zWV^BdU-!xAH5~awDW0Y;_;IBy-KGJgy*Ebe*Bl?&FLyhGcsBM%UD2gT!LkFb`v48VVW1 zCLl)dbQVcu#5+B68C;7^%CZFc+iEq?QtTUa=AvL_(+X^yNZ10*6r};gamK9uwKi&O zuzbt`PIWkeT_vr2*~=DB2+d?_TALxA`Ud62fnsf*H|oUnZ%WYJ+}P5#*IczY?rE=T z=|pvXb=yK1M%%DAOgNb1QCi|G!k6+VD~+M8vAr>kv}YBNW2NEi&BSsd46Q(#G;PkX zZJu~3Y-_8DohCWhWG#ZiMXt~H=5@*SyAFk$n%08g)q5(fQ2;=1Z8wxi z=G5CGj*Q{47d8tmhPW+rNs47ivS_A>EHXR`GmjZ*GHg zVHz;5T&2PbQ`OeiYh=3Cfj()4WtzElcDeB2qNkwv00Z)s zxDFMg?em$zNBIgG-VX)8k1St~pg9AOIWsqgqNi?A2%G1vH6BLw6GS1!JlbSO#VBOwA z6p8tx%>t+jpgmCa{#f+FH&jsHbCdz5X^{}rIIBXs(N(#(4l?4*FvUnuM@}dTILW*# zAfWihFd>FvQbXWgaw)1VJ5cp?(o3+|Y&T0*X;DxqG1(AUrA=hU{z&J?=$2=~_cn6Lez;FT6+1b!+JaKY1M%{>*_vwcYusfPl zw?cM7qM$sE8uc*l@2LrLmxAHZqZspUE~g(&oAb%;Q7D2asvqb{Reho`28f|bS_%q^ zYnmU!d7~HEM1kSpNbkRNgp{YWl8OZ>0>|g5*&#ZKN+e1kIj6ZTkr2RuV2IBdAGkQJ z7gQDiBo$E8XTU%g^#KyZMK6LP4%sRIJW?ngyLk~yaTNKN9IqEyipT9rg01G_xn?k~$%U#_pmUe)%iTGWd6f(a!I zoUI*QBz8wO;V^26NIt3(bPGs78}Z*=2dCqaN#W!1ZLTO@rSFQxD-Vj_1>C7}XjHD~ z`XGdH`@=8g8Gc|0J&rInVDpFEXE+FfigmwjFP)fqbuH)gxVx$yCh{%B5(IQ%&!*H;U z8&fee8Sx2--xQKumo7DQ*Hq>ausBnKZZtf?IpiFvQr4=Mk~VGG!ri~M9qCT4T$1s7 zktq_B3QxQ3Md|ESKvzs-T2q$v*|$DPB!94xINjAf$SL0`Ef~fSbHUV=(+VeCF<>E5 zOTlFAq)5y$|~DLCfqMfSVqGYTBv69#;{r7$qhj!JF&w1efuz=j=wZQR z44EOtDo6qugxCi|r-7qlfudq$Zc;)VQ=yR39Ux~(&>V(xDyoWVN}@pOE*=1QO3-13 zKLk^$4Xt7O@{}l)^c1C`6-R~~$qymoKKS{AXWxb=*g%060;Gkc2w(^yNRg6|fS5&q z{4#=lvNC|V<}o8VFG*<@3qpjcA4rA^(g$LOFFcPyo}gRMaD1Tbcfk%I`m5$wpcMS& zAw}KlzOt23if1^z0Tcr)hd{uMR3O+xB}r9U#;a7#rfiT*lsuJ{6S{5Ku!1@%E)Ahj z%9L*LUQ?{476e=jG93c~G!!7vLnSvbIFR^_`wQ31y*)iT?O#E91Gz8>6VY_Oi-m;= zUbho1p$6JoE2|=AEftETMO{h@4v%Ihhs)*Z_0(v?+q5Pg8YXe|^xo!rY|l|c%#KNL z$`~zr*0w>S&Q%ntwd9gdFQP%WPfv0Vy55IQojs3Tka^c_j2hWy-zF!$wGikSP9kOi z4OKBDuR%g#2lLo6T)RT--$H19aj~WH{S~Ri*6qpYHjhR}WA4!Fha>tfCr{(K(m9eD zBw*uosb@;f#Ntjv7AjK~OD?*Uy6RbxGGulW7A%<)BO@fqlQwHJ8JU@xGGwyKQk1hb zEV9cir7W_`EX0WB=x%FM7EBp6HZ>h{L+;`raap3&PnUK96xP69h9aOF>4)As{eUjt z_n^OGe-(rGqxV0!f%U#a?GL-jDL$CF6;)MKP*DnsM6tjxQbp-1>2%dObi{Z`idfnC z7sk>gmXpMWh48;?5(jby&=$x+Y%XVvfn!NbJE%l%fkNOeE-Lz8|LXC7T zmEf?v7i`jUW4`7-@p^)Ii!NfWlN1?&! zbceIik70#|DH(+?vdF73%8H_@s)mhDM`#{TVs@N*^h`~AScH&DP@%*Q%vWC5!X6eo zYO5s5q{^QX4D?i#R5&$Ak9PGQ0-Pz>dW9ScS+O(-c}9ejB_lLsvnkaaPA4=K79#>K zl$UTpYNc}C6H4ryQ4gL*wUwyFKT}}$VjMJQc<)QLd+s)Ca~uue=z50@Y{1d_z$qhq zk7FaF_{&)jH!>kl~LSSW*f*?{! zjtr(S!dSE{T_3=GASda6& zEdckzAZ>^q@6*4=JX_$6fY+L0OXN*b?RL9)D$!6-Oc32e3Ntz?1_;79#~A^D1P6D% zx%zL^R3t=ADiIma)371@4N@E=B$C1@8d8-30qnx82oFe#ml8N1Bm7u@W1l*}e`PTf{WXupNdtzY4@jrTj_cH^ zoLBNZwS4m^uS>nys$1LJ@<<#A^PKi(d2ijMZA>0qoq05r{~P!1#y&F!lYPb*Gm^$m zS;q`Bc7sCHkTuCJEy5Vg*k_D=AG>cVTUpCmh(eSkA(e_qiX=UL&p*#O&vou|-{-#n zzR%}#eXi?$z21MVZu)=mpwR2pI1xBSR8-6*|6UbwD=y_$6aj z6t9_;itxX9w#EzW@k=W%E;_%9jiqw+ke$vSpOxTmgv5uuXY?k1f(-0m=T-8P;CBbp zHD)hJk-IuB7pTf>vdld|%eI$VK=n*Q(}ZWULtM&(-{s{~p)nUCe^Yf3LImnQ^CWjxshvUj#epOq?qO za=MrsZySPopz*>>{K>5HKQpCVBgL;4p=F_aYfpavGoGE-pPUkCoj2i$o1LF3H!=C< z|AXJ`t^wk#pl9;r$(4%DB$FgHWmV2h6LtD^~CtpgA^STsoWKDDI}?-gOkr`8{f#HZk`KbUzR0C zj|V_^zl$9TSq2M30~f-(ftMCu-V}+~dQMvz9KTSn3w)HCSm3lH!M`sOT0P(>-43+r z0IXU>^f^|9$Kx%OzLT!X9~^+-gK%$vxSlE<9 zRzt|uD(ZH*2hp&*UfPTIc-CFtGrd!;8>Vp9?fP$If$zWS6Mlx2%4W5O>ob-tU#Ro^ z7Hj_OxzBGV`HAUnm{l4wSHTy+L&|s@`DN0nw)<1oBa^e~nw4KV%|vfvu*VYg!?*aa z?JL*=nwCy2oU{(P#lIM~&PG|H5;{ z#bv8dgt^9|GqHJ_mey-us3g^x_4i-#w{Z7ge)jJ!+%WKYVQ0Fm=*3;N?Vb^Jdpes4 zH>o8`n-2O_Rs(8@+~@p&jZm_pGY?5ShjD{@yomWWG@ej({YP-mc;bKIy&t8sXKw8z zSLz|l?pS>L;dU_PcdYbb@H02<7uot)sMWQ_#B<{mc$F$j=Telud1Ipc%LlzGHUo4W zvmtbmm1MT^Jki;Q3lF)p*nWF_?#zeF1KBkwoA|f&vxV>P8)86a5S)|mr=OIH!wR#F zGD?hi$)++7>%9r@UaJ5XHtsdtIFu8TGNEhfB;h} zzI3j9_bD@c$KQ1B+f!y~_}9llQde1X%@ zc?-f7<6AOI^VMqt+*9Sv7x6M(2D5$k14fKXKn82|dp=PXCVToY%?osoSEJf3LO$ zL#duDD4-u8uq^mZDWge`tR}{D#~=y%uvBfa?*1fWfKW0TnR0DsX8Q{QhnB_Iz~I9A z0I$jf*g?;^C)X_hT;>11$HWF-akR2Ja?nvm-+89|^a#yuhgYweSs{J#%=(iP7xG~8 z_meL4j6*g1v;79zzqV^#>Gv@ga)YFcde`pQbd%3eSLtqtTU1W&ytT@4y1)={ zx=+Ux3gVhV1_bo=^)U(r6o+6i2lu&-RL`_m%EYx4L%tjbKh&J7EB@bUMaTFiA!in= zNl?3u^FPI>iiGM^XNgx2cKa=>AyIM8P8FxO&bH%iH12cICj{e7@y3l~d1sus+rOEl zm|Xw0Hd$pU8*ZdB-Ayf?***+Bb9MvzOFiJm$#F!=xsMQe%zB2>@G)v<#H(Mi1h57Z zL8Xi+y5L9-(+)VUHWyVbWlq!oJ5}q@ju+vO0K4GQ`eK6nPp|jIalGUP2@X4Y<2Z&! zT;mX@-k#Ukg=G&w>A3_1NV@v!aKy@ygRwmH=Fk0)ouHNEf16#OP5D3l{_~dqzZ?H9 zTvd1#d44FsW%72NRcY|4v9|}1(4+?L^N@FrB zY|ktek8q1lKEWppMf=%Uw~{{EoF$FBVaNf>tOj~tO=~|b8PA}3n8O+*WHB&ze~S;is*l5CT96XYx=^U(*TQo=*kj2p!ls2 zZ|}1jTfC-bYcU~;Fr*Q|P@4>uRqXvx+_SOm|6%(UQGj+WwU8F&4N+UwLpTh5}_g7-}^56S*#?T)f=g!st#(b+jTLA>37{ zK9?A8Dz&;B@}{dI^;XcX3^k3$aDXs*?NjbffA~p<Ua~;H!0?P?GgUcIvHKnts8k_Un(fz zGN*O%Nfe#wC>&6FjW)Eh8EfhIH1uL@)+x$IbAqW8kx6VUgZbdUzZ-)a)|EvC>u*hir*Ta;w zu=f||!+zC5-jiKbO%Lw2#s^pcpCg4Ty{KdxiyVF6ahoWQ8a}I;v!JfqSXFIhSUiw} zT=C-u&<@?qv!c|2%Sa>NCa-x4G#yVYK&B9r;Hf#_DabigvZkAg7ixJSL`!7c{bjTSzc4$mR)+&CXD^xJ_q50aX_)tU@4_|18I=?oY7ssd=gmA^0v=T4; z{jTgi;H~sKq(uIaMTmnj6Ju^8@%pL+#?dPGq?#K2`+<)8RF%AIk-iYD8Z+mPWHYUr z37$Rl3ObJMK2eT&`Sic1HLiAdxh|_qGd5EW#g_i~f9x#!t8jL9k89@mNVee*fbZu6 z$l$AwH=To?l&aURpU{zzUy?BPa){-d8J~0Ye{0m;|8mY9$2H0A9MA7s%ZxmDl2D{* z`D?ZOn#sqQXVr!$jB5t1=o+rxJI*%jpj6uR-t+#0qjynRg{rsS1qHo-s9suS zH^+7^x>V)rJ|psHIsLiYV=T>Lu{VQ1F(rwo<<7-C(2x11zC4+J$VL1I1XmN7o{oY> zUl-u4&E6M08KWAOXMEOtpHm$O|^DjBqBFFFFl=tgBt(^mncmGpa(DoT3cSWB*NY zd_0^4wfhxvX^pI+L(7XrV?(2|B!nYW$Iyk)Kn zisl0du}PkkT{3c7-O8En^{;>NBEoM~rf}d1&C!1boC)^0)%?t9_mZ2nI{azF5muPh zk{5Pg16j=|Xpl+hBot`Go=!EByoTmy|b{6`g3xHqyZ$)sQf3;4FAZV1gVrIifHImroM95Yio9kjGq21>|q-B zKq(wSpHq)OODMyjJ?PJB-_J{mB+Ur;LW=3VK8mlzvkzhYMSA+huk}}lYo#3#E4U=( z?sT{vk3WE&M;i5&qzjr3mV{L~4lx74nqe3W6l+g?%Hwh{$iBO|Fat;c0ayW9DJIf#QXe@o-M{pin*bc7 zzDIx{|64wBF4j(3zzv6K&Sd`j-txLrVu4Gh^Hqw6QE~-dsH=kV0-VD7-lw@fx|Tph z!4Acfw#@__T*}!R;>xFbkCSFjlU=)$G+F;iZyg?N2Wo^(UzF=$Ik)}t5R|vzjVt0A=chMj8wn8PW zEk=vpm+~y4omFq5cz6vN*ibcMT)F!Zu#}zM2kily+)$#@2SGB~j|p!P*D{0!%-$my z5EURhr=#_=W#z=`!?-)KfP=rK_8TIHCN=Y6s2hKbda@oI2A}oSxM8ifMk0FCeZ_)_ zQPS;phUF5|pwHHM(FgC2&%XQ#EUPz?LHr1Q;GdCFa$4r+v*VKw@;`k@Im!3m^;6KS zv%wbUEEc|6)(j#yy7@{w`&C+%?JP-Yh+^G{vtkN3^GEVTuy;wR!z(cRas#YH(@{z} zzPTi)7W9(%IbFUe=0hRYCkLVa1orXH%c~;Xujsf{jp9=`iHl!XT%4}s7v3yKpeO5hS!3=%4rQ7`mU&sMK5BrIkgQ>?!peiAX{nIFBn3vn!ZQe875 zd2=(uVzr&$FnY(j=J`?$@^KBTUsB7hX#Ck99{sYHnFw+Ke$14LjOr~>pA0!j?kl_! z#pA+{spgTp=mDJmV%mkau5M^)D3wW0k~-*L=e&i5^B7~Cl}UL4Ny> zu)aOw>3dSj&C560TAjp*Vb#FEAVI>CH(*22Lc-gY_OoL0KA&o8wiLw7pQqjKPGc2Z zQi5mbp0zUngD*GEcE7#R^(*S$kRBTLuxxVV;;{S8kmxM__Np8Bzm4qyzmoG@1MwSs z$h;28CM_GO)#ra8@xL&0rY4ARkftf>ty>2Y zT`{aqLY*DP^mD&BIf0c>V4>xl?IlTtJi5zr)!WtY@$}o-dG;zu-Mo9^T@-ZjIe-1V z8!sNCiK4E#2(<>-HGab#+0@%O(|(tsDgun35*&q7CpXp}a_O7K;%+^7af?u08^BKB zUXRRayPeFzu6&!KY4OA9SE{|MybHYDIel+i%S~XMuHN`yTJkdL|V9`d=lsQWaAwElkTeN(mNk*dSvpu#G0tNNd8xF=4KKcEs zsl(kbUr@D2kg-$%1x911qWa?$KCM5bQ2x*oLrc`tjk3P-ls$(laPHj6Wj;xI=MgJv zZ?79v?{sOjGshfg<&&p%-QBUkt}WU<%PTtf#f;y=2TzMUq5E3uh3K@4jBG2l{${`6 z4MX9=7S{I;QQl>>nVFn(Pzx*ELKRPK ztA_|iAF37Tm!Cc^pybD^tfLVe9E)9>X9YV8blEZl^VA!^3gJhDIpY^PR0A-x%DfpG z&*xIqFH7m5e29~Glo@C)YMyL@a4`#d?;IEUqW6?go6ZB{l9@o&j0q7d^2%k8uF4wx zm^W|6C6Bq@9Pgx=nSQ1x$x1gr&~JLNKTUDGTh}7_XP#fb&Fgz`+C;PvBRs>RCf_@N zG^Rw_uyHTI=&E7z@q<-3s)w%XHGy!1EaJo%3-Q%bc#m*^xnUD)^s~2N@k`_XqW1sZ z8|#lAR+m!Ql*S^sYGXa~e_xkw^2F#?$PZ3}hJa2pd~gRC;9^^}diRv;#j{ukW&&>aCAB(N@#Ti|BDEaB?ra6UZGey0E+d%0uLB#3@(T&tH8&4{Vk*3ZKd+PVSjk zwdRGRZnM9-Yx~_#l~7U_xx{y0R977`T`Q#eREw@fBNDZZ)I+ts?zMl z_EEd@4|_}azL`jVPSIO@{`!Z;*FT@R7x;(55~Y4G9{!5gd2(^prHDwDgLPcUwJa#8Vj7ig}s6g_4#K5k>o)6v=MWNDh5T^OwE| z?a5IZH0?paDA_cUSF&MhtWyFAn9Y=Lm=ANBHJ@<;p$rFucqS{gc`#Uld|~l<+CP=H ze4-ZNo_BXw8|_?I^%bVj7yob%3!gDBC*GAHuI5yxx+XpTzJ!*AABA-KsofTf`9+Ho zeA7+SqlyPKvAAwAN2brUUb1a8*3b;z*u8PUiPU7;Ew`9gj_hPA19#+x^CJc>9kcWx zzP*TVlBqer^(C%q@|^H3$;smh8MsRhEa!jc|+b93}#nmK`BmNl*@pJC&Ax>-mEv9P&G ztmsdac;RiGM`BGiyH69yH9W6*@wuX4Z5N0m9^z=Ofv<4Z6!67PIW$eQi+dU-^opz2 z$%Kg#^qVfr;%sko7e4gP3At!HMTJ`_!H9@OTC7!eiKgg-lJFsM%#Pf0jXLv^Gl7Uc zLyan)x?MJX>BAbLbcMLtB&;)_;LHjn&}&2^`W8x583If8K38Pb-QM`+C7n2CIAxTe zo~=nol8}MxOWj!WVN%X@=5q~ew11f28C#w}LQhilsWSdc$adWN`+27!osNr@RCDL- zK-wjdv5f~B$qY{hNSar}Wj?zDg{7jr>+hvP0g?LN{8P%}@iC5l1$9C-KJM`aO3oR| zQ^=O!pczknR)G$#mG|k}K)u^GG6h0uYMqgG+Pb{VFPhCS+f`b!zhm|qq3NX$f=o`POX0Kg(uU0J4dBTZyFCZZ2@QQU z83=jq;R1rs>5JWRsD?x#pqzyY=VogBLm5kz4Vn;=> zw`01wvZlvls4FIQUU=M399x^qO&as@^RxhiAgM)pZS`hs33#Q&a&@#E>wO4QM|-VxZoyG!y z*>H_e(x{xzbaH&@o$vmc|GX}?l^rirezBWM4rQtxSq1qbS-5TRB-*UDam!2bG$6^R zxle&r0&z$HaV!>x`OIy*o1(<7b2TE%J>%p;Hb8cx4vZant$VdI-2Xz_4}@Khdio^# zigF$)DRgp~hc8`hIu9BkCqT8}@v=r$?>>oJzV`5W*KMca{SeRQs)eWcKU>%4{!Cok z8X?be{_)z23oh0@xRCX;tL@41CQ7~Un)|)k4cn%=H<`MRdo0`$PY6Fm=4(6k;sQE; z`R_i-;#iDn>M8zv<`Z*+ZJu@{>;OG?NwjyLku=vjvM6x*NfxNRx7pX*Ydc;@>jj`%sqc0sdGzlNdrD4WBu z0uXf~Lt9($4*NfXDt*iWgGm?#7Znv?B5g-5Tu^c($!52;Y6@B*(Ej1}zb9oIl!CNF zLi~B0hR!^_Ey3|956}SO5azIxGNjLPJ7+3Lr%cG3&~~v*)DEi#QUj?1np1ha5_rg_ zD?Fx997Yie^wLNKrB-o}fi^g5a}3RqDAWKR^~rdrOH>|cfHO&-g*wl=iFYMfm>%>2 zLGk3QciE&cAnT~N;RrRQVqHl902V@1J|Upes4RWd*$+fHICTOG8PK|dJU?+O*7SbO z61m@6T40qr=xx4>S~_$liEy^)WA^yqoD>j+4{A4ZvA|b7b;9h11KpqI_HQ zaq@Zc9PDYI(H`IFqgvza@a=>#DHPp|18Yry5-RcYEdlu-m-n*cO&0XcEVbyA=)DbA7SWjfe$Wk{EgrHYss! zT;VF5yuSb@d$hP4=MhxCfeb&qvm$txF~st6CbTzP`P%DTL>45zYf{kiXD=^yV897I z1-~Zy%3)ScO~zOSpRS@w%9g##Ry%7AO&;LcXVz$Q-YWI6$&8}PShe#l&e6L9nn zVSs*!k?Bkjrz!uCz;U{%1CWeR6M%soY6x+Al86{`DaOWDRJXy92$!}aA~D823?WSw zr*#ioRb(z5!Fq4uGh>(EwxQPYRR~q1EQ!W4SuJilrx>s%83AoJqXnGlu809n-U2i` zcUH0Z*6Qlat>BhpYNH!GY;Ol*x-%X^`13$jljOl9S6kGXfrglJ^X1jZ)L?>1$&aAIy~17Uw!6D=oRi-Vm7fZ4L`a0cql^#v?t? zU9}9-;~{#31Daq_P;tPEWC!?)hfbf)loCvz`IB_|co)Op_mAH+$*1)G<;?!krXsd1 zQODccwF{_EObDE(x<%@mDF2)L`P0PTxH7P2FGh2o?@PSiuB^r@<45MglmO7jNdE z)REQCbgd40(K0Xd-9qaqC~QUU8_l$xh6WY||7oOY*Dt&(Ur3X5WOqSadR zl=BE~?Wb7%(ST-6yt>8DBI`7WjidJ{9@3u5Q|UJnd(E8Vo33cHqro|8o$ng{2&N&P zxain$JLK|0zBNeF_7cYF7_l)}NkWrWyIew}^bft!NvnFOJvDZgc4E@h=Kk^Jq3%-2 zdqV+JPEyPZ3qIC}Fp<0>3}d947h-_b}e377+}n0P&dpoT#NkL6d9o z7}}s6i;GJ+(k;Fy15its74FaDL{yspG^5q)BNRD*&Z;B?g1omzd_Wo=3y%q9&5m4= zm(6MS8WQ=Ri`Q^uRS4fE`VfY8EHuY#UNYmj#XX=26t+9`W%EhvN&y1;gyO$j5odoq zISkRBQ0O=w7S5%js>;a;dC;{1N6&JkUgm#cISHs;niJLR#o%LVzIk+VsG+S4MnjeJ zUE4HJJvCCquVw^E0;Jl8X%?uQ!+mG1(CY`N09xuOBn~{YY@z&3*_DssGKTIqPtF$W z#G0ZxD!I;>X`^2%5@dLWE%`WwWu2-1UmtFG&_W9cnn(lTK9-tfm}RAWSA1oo!Pcj2 zuH^UE9XhgTykym75E_kOUZW^*m=BHgHD?8m>46||R zN1(lLcW%A=_=Paz$YeeRF$(etW#2EpxJ)B=9Mx{^)fiJ%gluxP0OxR`cXEmkNEyvk z8-OC5kFo_RroyDA3Q>banpUi}51*8lql|k2SLuYPkOHw6VzJ6bX8C%~BATVx2ovy`t8JOEVDgSKYF4 zyG_w>@KypKCqoGJy%q5w7fk@eFAS!EC`PvDeT+cq`!+wnE5}TG-P?HgU|S zjc7QH{epj$^wOI4D08}`MkSCaovYYTO^Zay%m^hqO zQWO_gB9**k2-9g@Wm{Lpd6#WLi0|xEaj*Xytl`xsst9I$MO)!lQ&H=uiannC+rq57cJ}Jhn3A?BEyFt^CGST7`qQP4s1mVUEjwAs|;zWzrB5a&X7)137uqu>Oy~`jM_;_f|&(FJF z8{(5sPvHK1T%bB}tr42A)1@yZnslLnWrd=G;a!w3-{d%o@*!%9REc+e^IB@+$_CGJ zjo(f;+mZ-5hFSHrMHMykjInA$PrXnAp2);qG<^iBFW>Qv_c&_r% zA_Y$3rXdc+;+MYg0Fs!Swx9tc z;;5lLMp~G0u!qdkzuO^_lz6j~T=C2!ijL(Al)JE8-DE>8Aq-JlP1%NwsR;Iq-O)ck zWRA=|?L!nU97V`XSP{|?)N1ozYEBpLXMSGm6rO5Nr-UL1SKV>PU45!S!$6^xzv0xB zn2l*?ro(1mO+^hPdrzz&gIlzl1`tuB1K}WU!oXuiZ^QqrOwu^_`DFFzJF`l>3AwSj zVcR>@VQC^qf-Emu`Ybudh-U}5_m~6P@$(tqiD6u%UE8djh-eCyHK0cX&Sb!@A>Qlg z<5-mjGu~{XPu3TM>OI2-uJO9CUW(aDEkY%dd~4KZHN3U71oB7nk4i~@K+65wxx6z> z7KN$~)eoH>s6SuRjMcE^!uI&y!OdRd8T#)0)rtGlTmxb^%;50@89LMl)!2AqB}O_I zW|d&YbkNb=EDg15=lH7TZsr*zNw*=1d`Al^Yf91Vbc0TRz*+F;te6)Aq=Zt&O%Yfd z)D9;YVnwq68wwI-)26SoTGwcyZ5fJeY64D_vxIG;*wvWC<*gl5pSi7Vc;+F_v*`0F zHc7F+_hOA4B9f69R48i|WFYBjeY-E8hOc-gyi{HN27x&S(W#VcP}%5*JeVzcgbO~s zMWe{KY)T2f^a(dvo=XwL$iN$V(S$DY9&dKP?C@xeU44dxp|cFd7eoUAEX=N2F8?>% zRRO=0IjYkjU0KQ93tPV8@N&$%xu^6KlQsc+L%2E>rU|xH8sD2Ee<#}5q6XC6VaTR6 zOArw_QAo1G>!A>NE|N8s+@qn@i3m5aezwcZ$leB>W%VN{;c>>+3S~1*MH2lm#98HF z7`IlfhmZyQEPnl2_KF@S&X!jN$4o5Wt z3H2^S+0`^rpJbppnew@K%x1~2fmgQ!^iV+Bx(OcQn0Of*5ZDZ=X&PI>rIuLLfLRO- znZ;(2SaYqcpRa77dP+eT3r|JJfWDWXfA9Lmscn?P4sK6BI?*&gKGGW+K^KR0)Xn*C zZuWCjtBa1dcze1e?>T>PWh_L?38L2Ah-jtkNcO02bxR{&Ew=zlthj_Wb|=XR5H)lE+D262r#14Gfma1#Sn=)BSgWfATpft0B^zXcy$4GaTzVFqBd_}_p? zbIw-3_#7e>mMo~xSv^7&)>ifASiU(AdVQ=#m&1$CTB@F6;~XtOA~99cc0ax0qf6QJ zow2~QP(qVLdn{5RG+4L*k(aPZNCUVD{KWUVt^dF=(sCKp5f;Rx?NfsaE zpG?~n(F%^$dCc4_Amk9;X_=_4hLs}w9Pw3hD|VsDq2=Rr>@d~WzB3m0h`H;R4mD<)RyoYtlb!heCwwEUCUbe zj&t>v7Fvz&%W_N-lsfgk8<8Q23*{vpbNk1lN+3%Y4wnuVUsT-00$`=f6F||@0 z5S5!VA z-BaVphA_l9dcaTfQWeM206h9w;jPJ3X$$E6Wu=h>64t7Ah+V>epdL)17P(<)eKZga z%GeH=T;mqTaIp*v<$tXFu38wdEHml9t8nqV^+ZbQ`U9hoIN#iHax2pK*mt(sR)Myi zn>h03hf^6D8GJxD_H)5=lUKYan!E!o60JU4Kd4H= zmALElYm!$vC*^VMvHqX`X~RWCQoVmdgwLu4d-|%^&O#doYH8KO zc)b?omzOc#1jj^dA!4$H<`5woKklQUq5ZT_Qkocb<-f2%xM)wHh{KeTQbD{lAik!0 z4>V-{?v$(?6^m1uv2222v+Eum<*QD8ftWkqm&hry_eOLCrhb&Yy2>}oUDS`4&Q6i_ zah@A+I1*8PoYi!K%&^BU#`;{b!o2Jk_jn+Ev6;Jn1Agky^{J(`mtSoTYT>7+|0|q~ zygYzO*B30}Z{f)7QmwBQOl{)Lc60>`ZLUooDHAv)2$^5J6>Amg^eT+w_@EZJ!KR3t zETgM0%_RU()Jse&&_9+C@5hHRHN%*3T%IqG26|}$yz8ZSm|%j)wL_I3T$$U_#2yVxnb)2^OS&D93F{Muly#{9 zcj2c62_rSD_?c9^(KIny1FBO?87>>kA-b|;O zlQq^Yy1K~mNkB_Y1gkttqQ|?1z7mN=V_>ed57X8!4I~sM zlx6JBs(RD7nI`R+vqRJ~=v2iR?^-fDVWFbgn>*@R73W#?BI5O`s(#hm#}xqC)9;$I74dvY#O=v+Xt8WQwI3ihOA8B_- zgq03E2scOfR>Qy0j>sdXGaU^bI}v%8uH;#;Y*B@5*ECQ-aX&N@Hmo66uPTx(!&Rm> zbf)h(h*p@O#pM@R+kYRSE3IMCf6pA^i9QDZc0ZwV`}v!_={T17oC)y5K9u+>15G5tYTBFX_y%6$!`md8Wg zyhYG<)QD@kwT^l}Wz>6I(!;T)*H6uv%qC4F-{*NbO7s&pZHM_b78U= zDT@K4CCi!5#~>a^Fpx=tL#^P7FkiMqV#S+JkCT=(iCSnM-v~2=c1wFhWIshRfbKKj zS@^d}pVo=!hp(sINpcnQ}(i6|nYB^3Q5htA_hJ7}*!6%&+k*T-S!`@_~fAb{Au0?gWSdeTg3ssSV8P=6FgoG&Tx zW51)Y;{^c{??V)r(@^y_nopK8ZlT4dD3wfXW7nK=u7r@il*Pk3Czrtbz_Go%X;Xp!L#su-G(AlN}wt{65*W%)erquKcV-u z&-Za(Gm&9L&OFoGUfRyW4(G-%7$vW?q(-`o(WxtXD>_!*9uTESVpv>8FwMg~^2`^g zb!DJ6%r$$BPo7r=hmwf$K8%k;D?ygpws*tEUr?Olm+Yc6n92ktNwWVZeP?(mo67EN zyq*cMgV+ifTKZXnw{i0s)@`RU;SJVmqy_4EV%n=4X*k3@a!NO`$L2)_wECOTew+aq zx8zr&jjDMhXI&%2Y8hrBiL%ic;t2<)jN*n~`!bSR*hok@_n6LIP&>q>GIT5J?tiE5 zX~NMjX|=5*4nxaf@1`JnHxbJ}9hXr#Q%TC@O=|WdMn`frpqE%d?2XDX9E`~?@CnN; znlv41*O&MgslLCpohwwF4x<`YZ;jB5*%?o0&N=f=4-j-z=3~ zxoB)E&a0YEZ~(?*<&9;V@#YzUM;_6KP8nR|FE;6u#0{3|FHa%aZ|tX%o{Qu~d+t8= zNMN5DJUixY^!F@aeZdJ}(UKaDWbPgVUf$?%uNMD!&$NVB4!~H|ATU>MT=LJpG)JU3 zTOkG6HmOz$U4$<)RM>91=exPm{hRf6e?J{m#WQgsCK2O>6ON>Cngdn5S(jHl{Q^~R z$`q>%{VhNg_9o$qN-sJ6#$2PO!*7iO6X2?H|84S0<8Rs!niWBi+H};tD{|GOWsvpv zj;d|PFgXW6l-Bu}rQW|j$^7OMds#%>-oTB=yvoM0Ho~mBQ=gv0Glbn(|8@Uoot6$^ zwLGo1)+GOW={l{pX2bARkVRt8D=+5`L2YAn0|t3$+@Dib7=3FON#?4AswBAdMJp{o zTO}J?rHLHAFj#t`llzp&l)&j{KNfGdx-0P^7J=HMO5qG8K5C#$an7ZBtDz8f-d#7L zwDir9-|9f_19*IBo|lB#nLYou4!XiE;%Ux)nEXv{f}h{^vJv&>oKRL1;T4$gnE*^_ zBd)9HTwNa*IwT}TG?Fx9+KY^WRs&7n;%G{Lw!9gQinPkg#hZ$UPfoxH30BjB4kYd6 znw75!JfLJKIvL8hgQRf5`2(TQ42HYK=kRJD`BS(nS+Z+31L(%bdC@8(GWfI( zfJeDVQwcb$^sM_gwUo3w|48kr6ig{lQ0>)8<*o_*AC3I)?SB2uW&FyhH}(Cpg|X|S zwopB;XNrANqLFo%KHOJz>Aw62XDEoa9yB-Ri!vQu{Ph|;ASo!zdwQa^wcAvSkoM;7 zbK!@3VL6K{5TDY;-3wA-;m3Ju7Ho{@c)%sB4qmcke3d>i$$Zlxh&~ zY`Pz>(sPNfw{zw9ugvuyURgOL*xaye6?bH+QMRUF>^l1FTC;f2xuB!4wMo6XEqH4Q zWI1c@@a|rQz`~GcQ^vz7duH7o%Y-$K5t{r>XSr{?H+mP}V$SEi_)T^B;=DmQi3-kw zG&ybX!#M=Q$PFAX+~0otCHeAy@lNox?}ZL*cT$H_0O_8pF~HT;p`q-D)z=qwt=e~k z6f2Y?3{8?F@EZKg$T(T83nt&Y&KnfkJKW;_og^seh+;cbu9cTNZCWC4{{|*J2+i~#DfOo0e@Sy_p77+-5+Xe>)GG$z0&%QS2r=8}>gE1b1N)?m9f82JbqVg4DJ9JqN7?s#?tQJ|MPuCjgwzkN?oo^< zU&9o<9^5)S{%^$Pp6rCe@aN4Tn3&Un>kiQ{`1<{?s#m+_HaE=(v!p&fRe+5wstO~m zg_Bae8|i6&P-OniZ}4StamdBLb?erkV}c-s4LX7ruUNX09b1N~sGjjVq>3eR%?r~Y?|i`%4>6!~JW-<$Zdf9z!-L#%JPHBuI<@G?gcLfx)GSHd|89lreKoUE4{x0(V z-SyWOrs6n%djvHKKBRv2$qC{vib@SfZ}M325g4O#eRr>L z7T!{98CCinCsm^4PdmW7oZWoc?vnKm5t&t9{%OKs?FJSROMYN$^11w3^FN@|cG(8U z4%IOKMfmhilKMhFT_bhM`n0?uUMqmVww8qA@ZvZaR=1x#e%v66qk|Jt)U||%ADjYqVXLv|ubCi;I>lqiA67uO!ud*UJ-Mpct{kT7ab!XjXx3-)h;hw%DA z#}&S*a{5wcjs`LROf1gfgfK>)ea_q|8$G#E9B_xD#u-!B^UL&$DM;H!zq1u*%t?HhoZ$@i@UqK6^ayx0>#}Oifi$Yd+&OG zfBBKD%&bf@S;@?kWIubCghX({Bu9j_f8e$Z@$U|^%Z6P1#cT4=VeYpFyDUz0GeiAC zRCod9C4vCRTY~yQa9x{x$?SpGo&BcF`%j&~D)KpX4O|XnLr&u_I}{DVsm;~DI?zMZ zo9IZU%3%%c?KEKWeGK~$;60{18|2|A2hM3hC5)g}OoeUE%J5zyaq;Vi=E59FQ*F`v z0R6B&orto)(R?@nj5-Pw#M}c@sqwchjJ$*T74okK0@LRxuka5$|FkddP~xMDjMXUX zfxztt5)ETAGj${q6%N5J^6%@1w7jmd)Oc@+e8SSi;F~>47u^))Cjc-0;(X# z%}LS|@2mAB)7)#U2uv%iyuyNhBB%pI@wooM;A8~?FozHT7X2CMPIgSVungR6qOv%= zAG+;k3F?7b%;dc|Swhv4pQN{z=5Jy7>!-5vHJ2T{XyaWpdvSXM&j#5p4VQ6QLXXsc z|ARRQ#SjP(P#Jt#-DaZ?lf^ww!yQMS=7j(LCh>hQQkdk0=Nf4nlbj2TBoW8-O~?-H z)lPu^o4ngsV^^4(YWkMp(wGwD4^u+-Auk)D`56vY<2~jz6hjp0^j0nx;W0q%J*wc;WY1%u5r|;0x@HVy8UyHuqKG#(NaAyy;QlO~P-(SkilWKV@E* zu=dE4(!!NadpvzH?-&qD%LqrfF_jVAt2eEp1!O? zRrE$wEW`Q0hKj(}>2 z83E{1_$bFo3gm?n_P%|`D}C1Uy`JA(Z-m^Y6%oL)iscQU@3HSx?U?@Sm4IRunMXJJ zKD*`ws(;^Z4x;A-u863qdLJ@|LR!I3_K)I3+s;wNe5=?>6ViohU5h_Zm zunqsf3Q+s^N*qBxEsVJlWwB~po}4l6KJkMn3z$6#4CaBrtH~GjpileGbomjpb#;pm z$p8kuC=cHO&b~*3c$K#V#fz_xLGX3ZgHRcqHiP5XBy3Y&s9{5zP#K2@!YLjxIumzA zol!O(RYa=-tsz@MoRXrVuk6xB@KLb!P}3z9qCRDQI0x<$@lvwgd49D>PaHW?+f)bd zAv_6${;C>6c}MTrIB&btDw5<~^p%w=0LlQUk~iq<*~W&qp}uvitRv0j^DUML$Wkcu z3Cg|Qyo>mV0?YH1a+2@@EBbUs0=aDsSojM9e}X~;g4(yP5u8XJA7pxmg9x$!$B2Bg z$uiM8y_E7e;u(5R+hK&#(DTRWn(`7&^JwotZ)@5ozTyb~V3Y!kU1)nCN&D&PDAe8QnU2&C^H6DX(z{Lb(cLmgd*{WZ1p z%vx0wQTLOfU?NJoI5)E zF6bYTVIZN6eD8>YE7yRka+Flo*a?ux2W5>wIsyWihe#wbNc@($EXB>ukKF_N)INzP zc{qNaFu*G9I5UEt0YrI9Bh*#36_)S3LmlQ3M%zmYteM)R+J9Jxc|NcyA!9%8Y0InOspretoSZ| z{}hxGlw21CiAOp)r44Tmik^7p*adFph7U*zvx#W>&3*7lCxYnI{P%nZDB#zoD5r1l zZtOqHRaVe`;XytE><1EIyJ)eAZOX~_j3=<2@DAHlkMXTR+gdJl)d>e7GRL?~NS>yD9z;+HhZ5B2gH z!giujXC%p(kFs~G`g>3DAzz2rGo@QA{F+U9j@}Fjhl+RH0ugXOQ zY7u~wPtGzCvt@?c5nSOecH%!YKW5vxXHXV^xZU-P=;^hc-`pi1@P<=I8Lc%T37E6$ zgaurcg93bd(N78_2XF$6MU^5|)No8b&~S>`k_?P?egRvdBAh>KUIZxkq?3>_=;4jN z4MUDnX<40sePLi!F5z#ILebaF=gf=t1gqG;%#$3K7H!145; z=M@rpo_%{P*dslP_fVeXCdiw(s_glJ{g;LWmo0D+$!w<_vgKt3?65gPC@p6I>({z?^G;SWPo;XHlYMlW-}0T!50XX6iikw=uE6p`aL2@ z<+%jdt|_Woc2JYwp^%c{%}56oEDbc^82jV;2b4xRX3i6rt*l9xW^?uxA0@p%uarx|xJaDhu>DO?0{ z9)OlmB!%j3B*f)52u~LUd`*Wc{F&|*@U=6+(%{~aBCr$5%}kQxZpUDt5{k7c%5X6o zB_9bojTyJO{^7A_>ikDbEf2=?AFlBzH(P&e-Ie2Nfdr+WtK`ZHfq5lM&QKZsGR`u< zKj=S_B%#_H(I~vNkl?oFkmFeesvY*Qzqe@m;M!t zyWJgoMbMh&>w^cI0pJZ8L={U`SER#}j((oemEbaIYcEM^o#QU>Dk1N>Zb26c~nuB*O|b3AuC*O-ZO zjI--5XDuA^{xS$_mZ50I$C8gjBsKf~{|!MY41c>EyD}B-YOJ6)VE*|Y1ozi(OD|NN z{Ya#R<8dOL7yS#}T7bM~Z+w;m_jJ+Or8gf6v*6>A>#QdCNW^JVBBc{xGdeUt^0*P6 z53K#uPS)8=rorQ~32oTfby9eKd_EaIs5WG2mq+80MM~Clv6;IvUJ5n&>G|E;I#wDbO5%0 z1D>}ColC8~pD*}samZa)4L&%P?@qtD6Us~Bt;E5%ne+>|j|*^o?_AuNZ1Y`QReB5? z&pGryAEuaA)LM4P^c9p;iaqtZhxP4r?ChNaRKR+8=IkYCU`WrN&uKPYgaME8p+Zjq zZg8izP4-!?xo5|BhAYb_kG2+V!(ZKvG<40eQa~W44To!7bqhJeg+5UOH&VL4WlGJ< z>jhKw=cEhPs4Y0`n5vinDXFkhD^vg!=L+VhsW2KEs9c3ivzfd=R6*C zr**_s`c$sEjak2l)!eU&^cdM=)=|#c=|WR=>msZmnE(YbC`!&Obp;x8b`v5_NI_kNf zknK}uY$AKiAd#2ywD=e>-#a%SE?0f-qY1Z}a52G{`BOxIDQFQQRL)tcOjH1{NCYJS zV8zLaD5z0fv8PZ9$W<|$;?9SQ5iKai004-9`Twa6SWs5}Q8NH8(+U8X0&so^fA`>EN#S#FK zbP7%YHWWbyzzRjQ*b5tAm0JoktH?Q8Iu*+~&}WivVqFT^v$8HyWJ4t~;hZkaD-|t` zp@}8R^y1{4yM?7Gmx7lE$mx(`|6a8-(5E~g(a9@$4yH}J+I1p9Z)!U@%gFokHN52B z>v!=nGwYuPjl(r z$_?uqubaQ$yq5T!$!<3%n|LDkufC1nFOs%bFW9xde^K|ipyTlQ-PKc6Sy@n7m|Im) zRIs+Tw)&TUP~e>AGgWu^!ZGYxeNP%v*{g{NHVJE_0KQKC+3mkr!`vSraOfeCW=OT@#p3%m|43H+rw4}fi=|P*c z_V6Lb9%UgWWm%bMHN9+3Js%`u9n&?VsSynmXGHH(yQKaMw)i}lAFc8WR3x4>u3)}z zN(#e)p)(caHa8YA47rtZ#|X9muC=WQm1w2lUA?Ico+E4JicbDf)#W2wbozH&zs(UM z(Tw0Xhc^|wr>ef$nv2jK@HaNr#{P4fY8Dr*{m^z}t zw`?N{->5>I%lmSyYdx5Jq@HP4Zg5Vtb+rj0fk9)L_Rg+yhn%*5?i?J>wt4vP?zqfG z<_O2DiIS+&d2-%`Tx^`*O1<&ia|X(|9yFpUH9OT9LBzy_ZGFdF6}3J+Tb6$l)4%AN z%)GWmH2%R8f}2qnM%s$BO$+Q;^gFAmR8*}o)wNHzIMnJvoU=$7Nz&>NSnf92lR{{LK8M;Efx0HtJsAV{dv) zbS$up!LPn+hd}tGS(sL*i7m2f6BLe4Yc(+-kihiISeTmrfVgv0L?k0cXbks2A`MLS zWwAd-;0?AZfj9rzGKk#z>(ilxXGoti85d)(Z*M$ubvQ0>NL9=0wD>WKPK_+BFBG%q z2U)$Es*HPmSNs;nu*j=X8nTwNqP8Y~?>%UJNh$x=E&G)+^Jcski|Mu-cL$A^ol|4{ zPJ>^eB*3-&b0P{)qtJ0N$Q(+Xe6S0y4GKw@aOs1LJ0BE}D-lh=s$_fkj;G0u{_`I7 z+n=?v&Bcr_@Ef05OU1v!6(T8tkTVm{_dC-|T{P0G)f$W<6p4&ucz|@ERt5OJFPL{2 zqDr_Wz6RgA+#iK~=_SLM|C}F(Z7n`BH0kkM$&LRh$rt^hQ5*?3sXZi%hZp*_YrnLq z%C>2+6|CW6afE@zPJT-Hl;dYncKuH9WZxTuH0))y&|+WoqeQ!*z|{0n5;}@~T_>7X#bu?VQS+g&R#$eSPN( ze?QM$=XF)c*)^1u_oI{@B@dd72#WvgE(x6FV0(d&WNh;d^ZeFC)lNxe+Dm$M^hnyJ zwy|qkg-!27m$7G;zK@6fH9Fvzud#{?W1({xHCJNZ82#@|*2vmHN!$9^u#H;Z(*mR4 zS3+}|)x7rndV8h%v#E?(74eO->}+!SH@0-SO>nXN-JKHSzYafKY#VZhhJG!@XV{HZ z>dda5+ujlD++H%LeCHUvwTK1Nh%XP!&i`BaQS?{LeO6kUDGH$arBKDknVH}yOEdNa#WH0EtEuv&JCkH zYzA-1wjiK-qO>SIXHIyIyS}dfPiP0;ki3Wdu^e3W^!nW^0xjna|i=i`c)W6Df*OnO#1cb2EZ<~DrL$QPT- z?y8x`d$KlmM!!NQp^`t9@mEy9Q9lV7gthiY)J+-8UjvDp40c6~Qm}gs*z9CrBR-aP zS+F0%)Te1mXd{Bp5WQ0rLK9UMu855P7WIZZw5ksd*l-$|s;RFvAC(xG+p%b(1gVhB z?Pk#)inx~Bmhb_i^R%(Dn0#ZKZ3c`?EkB22DC8`eAQDaOn6Kg~yZ+_bJ9L9)X z$peTmq|VYUf(tEdz=~!_SfcBfmxS|3h85923Twj7j#%_HhL2L`# zMgjKX{Tv+kM!E`$ZUmT+&hMc@x-ufGtb5_=5`G10llI))9yI4f92`_?G&BF{MEYW| z2TE{Vf39OD1`t52>g=tjQIW(sGn;4Pa?T(pc^`vFGgv&6c*iXtZQka!lAndoxNPJ*bIp%Cf*f;-SyBhvus)IrurHMG#Z zN-9Dzu?7)dyDJj17a2wjp_}#JV@! z7pJayEI4dSA@{aU5Ypo~s4FlY80`y*;6;)(bGeDHR(GS%(B()vv=Kg^SJjdY@7kSf zraon(o*oXj#!iZdHxeTf9QL**6NLfG(*AyaPZLt|Q)8IO=rY@o|KW-)bj@t5iFR>y zmz0E`l6r?(mX$HTW>HJ)#g)aJzk zPN`}u^YZ3kzVjYBuvN!pm9jZxXO5Vk$IYDAusQubH>i}u?`C5?ThXG)jg^fR8pGG8 zOi#ZTKL+g~FHSm4i7=KI*O!{D=@?Yv8dZFln5rS&9cZNlYRbaqS>VwD^?`fBGHH4A z$*=~a;YvQu>;E_X|&ZcZzN{|ud+mQ9H%W7}nt*mk;In!G$RQaL$#<s`^&!Qs8RR2J~@>eG1pDT&S$GgzHdOg=%wX zqNXva<%)cVC{T~Z2vVCU%cs~^DjBgjsd0gL*ljzOu}!Ew@jC0v7jTt`!pf81n568> z&Baqv{Ph@NnyP+>aNmaNeul8f>KHf;(5zKf!%fI1f~Vz6&78)J6+MvcxvCtv*@}Px z(E6Vsifc+7Sta_~Ba4w48631-??ePhEqdPco@+QI{;g;+<;Hicb_9OYN}*DzE9%=( zKkYQTuj*|?JR%h*qNg>LSv49(b%BanLh_o0eqzPD?5kN&H2RKnEfYA32qH&wu|F$6 zHwX4)fS7r1%yEwD@2z>dr$Y@_Uq04(PkFu(<%_N`Yek{n|snL81OqWQ(o38XjS!Z8RFv*qD(F z%|Ar_Pv>B%*Q!_S^okD!v!=X=wnjD*c9#u!ztoL~qaCm=Su*?eQ}@Tx#*;wr`Aj499FVNAY7XF5Gskhvv^$Qw9Zo7XT>zJlQ)&rfDj5X7q$rK zWhsRcPd__}JyY^_b}J5e7Z?2QWc4Kg0_*+D{p{$wQ}XLxS(uzZNL}6SDdU?n%}8=z z{?&*5r<_alS*Ld_QgPX)P3bnkgAxETDxcKam`SLy6DdQ%hOFOt@? z{m6A*pk%fPG!%tI@(3N@o9)ez<5}{m?du<(nuos=o|5EWC3n>H^={{Q={la%eU&6W zyL~;+wTSTR#NQ}BnDL;bv1}Zr_1!A|tLBVl1MX8cg&L)i<*QKC$S9r{)XZor;>_dW z{R4+{xlP+>ejV}_5_YXFFp7+Pxir9CucN9n+Nx!`@7`KBa>?buT3GeU3$~G@QN-jhbfrN-G^*@E%|hb`(DQz4rfg3X6Jxw3wj;1X z+wmQa*uVR8z=iviOp=)Os!GewH2zchA3aK9h8)TXq>`E=nRv+Jb}NTp?To&xK#imG zx^(7yd%&L+dS&Ir$|Y-8=Gf_WdnFawxD*;$cGw7f^@r2HB_}`sbmV!YFV#2UMw=BF zerc6tNm0F<(LGFh5wEDt?Z7;wV?uU zA$-E@?jAlen`%XKIIb}CHHJGuu{_EsMEw&eXT#nG{gZ=+UBHd`Pd%qCf7HTuJ?HDkYG3hWeS?KaeltNg9D1X9h)$k^J0Z-8vMb;- zKz)+kGdfqYyIN*rX1V0=G%hYKYKWZL!x2E&StxivF*pYKxw>bsn+GxsZKDAUAPY@NQdC(;SVtbzuQ^(!kwQ~<4m3$33HLym74pst0=6>X93+gzAf6)v9 zYF4!-iG{EoIh_I-9M1J4aRB5;duudY=T_tKLXzs$P*U<7R#4fJXq%V!yM%dP1J6Ku z_}}vGlSbUn)W*^dB`l@ubC?f*2Cvmh@ClZ6qilXz)d+H498-~TF6*%3-+BY*UAb_D z8tH?VbG`N4VXJO9l-P^mO8Th6@=E&1qz{r>_OFtjBvbz4Ykx)M+5L$&I(HN&qVz|S zvai2DKe~Mk4?;PVeYmJ7zsux*0dCqI)WRtX_5JZH?l!p@Qt2pbzFo43q)5uFNyQ!D zTr^rqOQR%2A<}2k7TTF_VTFph9iIGem~z)cu}yi-+0OxoYtR4rqaN?BYj`h%&6#)9Y`;1Ron89{U&` zux5ap=)MIW)xAUK#%sqSM-9d@lD9B3VzQG@34f+wlo`3Dqe!7gBt<}4aAfD4u>XmW zov+F3mWgFu!MS#JA;VDWHkmQYZ>ca__R$>QASEx_1NVy-oY?oU7cr!pABR8J9oqD2 z7DGD!FTBus8?aP9KkR(pe2#|!{ps^*ntCJmZs?sR6LF;WARD~#!+PVRqbSBuFM=Ji z+!Fc2W|Z?yIN_3`zW+U$hL!|G@MmPs5XXuMdNa?fL)b!Pcgo&X)YcC-^-nz*fi2RPd(@Ll*{dnUpef>@j5NmrniMW2j0n} ze=c52@s4ryg(TSKVFS9is+OXrzooma*%ZBIf(=T%H9nadsR3JwE(CGOGo61T=KS6C zSHm}ROdeod5l#M6N?dVk&+T0Y_Ngya^T8*Lj!*+}uh!GqH3lLF%-?ceb>(?$O@zA{ z$dC7grNrT+=LX(;3!&-ankYQI5)u;#Io7m|$5>wRF z>0^l3S?_o_)`B=yN>Xai*Q+ywOCBjRLX4rd+ZKe&H~_-c$9Kr004jp_i+*rMMU@aez#*3wlLN|pH^6&GxUE~ zoqqii@WcYMSTR4N?sdI@E4%flcehT{sx}q8S&1Ua+5XZHojJOM^a?9>IxlFfL3Fd0 z=!p~aT*WWMuDD~+Ci70r43R`rat#w%3j%adIs}w{h5yuvd8Lr*U<1x0LeIkW7yqk& z4Xs$dy`!G(%h=(TBd0{#yHUKS=EnzXOxylawWujg?(2u&3UiN)_}RhT3zx5`oX!gBdFjdNO2b_2(#s(KK=RnCL=j7hr9|Fv=GgPY1SWa(*xA-T}DWzwuw zd+n<%OVi36IVJ5i_+Z9HgN&8_b^XoHz%cZ(2^K%NVy7^o!){j>pNB7l0RM}pB=-&^ zbYg5UTy#`>;O+{mp>$ridfbv(!J`4s>p z>mpUmtE=1h8Qg5i(K~OU=aapcwtXl2r1=L-HTbasi9iqEu1v!5X1-y1oNn?qPCQZ$ zE@)rrBeXp<7r20s7a?xjQaT8d}{C<7KW^ZeZL7c% z{pf-sb^Nn)wj0DU6p36z&0Yiy5W_UzJ$>nKsM@32g*(1SJuY_|7x-5#&wj( z7X>CRm7$W(J7999za`at8ytsNcMRYTkDAjjP?Y@plWKY(t0EzLd=wQvbDg3* zL_uM3r5O9_nf3P?A?@c;?V3Z?JrbM4sFMA?YJgy*_QI>R{pvb0LgX%n6d-85A zuAsJVH(Z(1m_aexLtc1dFHG=_Gdt%7yETCx5}8c+xY3&=0g;%fi(Od1Eik!GXxt?3 z97E&tQOs_9e-#mxTj?^tJgqgbiURX#v4eF58T2=Ye?|CRVY|~k%b;*Pc4H6s>=^RV zzLq)4c3Y*zOT%)*`Xfh{cJ1Q-O-q@6@sQua@1jMbC4?hvKA5tctqv=h$btt?v)Av2xJuP^`1)UzX`|}AFU45bM z(wAk)fq5rT3;+BXSzX3PvX1O#+D<_`I-LRv;cu+hC);mfLh3W$>a?;tMPF34eBwWW zl%$SWU}TTdn3}P6|7eIB?$f$$%a8Ldg4IK|iC$I*dZyRERqWi8eR=clH3SC1oAgN< z2O-puqh0)YnG023PvrxRBS5X#Ib+g`V()ZcWTO4d-g{6B$cYL_>5O#!5qf$tx%dP> zzoG2nMgg9I14s()7OKdQ8-BTbpAFRSrw3}V)6stRJzsA@NT;2Mh})b~G&8R7*s)P4v9}47zaa-qiOKWQM#*bo&IIX6O zq+&UwqFU@*R~H?lPld(PhK z_HFy8`XGKvRHCJ_V!zLD)>G#2c6h^bPnB9MGah-V6S%ahOY`O#KF0ZOyiS+v3t0ru z-I75^?v?ID{mVX1u5+JKzyPW|kw^Gu4}qp$Onx|8<-#Z?B3<<%9V~ZRU!lou7w;u{ z5Gx1E&nKVqhYdc~hOU1rnsN)lz4m807f_x&j;d&RpkXA4ks@Fn3>eTeh!#=#X_4Xn zeQLDwmNb*oW+X3EO*@`?Zzf9AUs*qj&DA=h#y&WxHe)SjOqC%FLnG1F&7&nDv}>c^HOp4FajR>9&} ztp!QcnKKss)ZE;xPMoQBygN>qNpUrV#C=t82_@DRT6kif-n%cs8!5VSry4zNV6#En zOw1-t4iXDlC8aji_Qs*47$1_qat9$B3#s!~(%q5Q3{XRCG3M-J!?Quhw$!R&B{o$2 zTyV=`V--2fvf&g6=%2p{_j^}5b70<4i00NQ<-4ffA^O5sKNd6uJMtB4!D{LUr(hc- z`zv;5m{a*3kwiXNIH9j=WXiWH)8dP3bX9ZIg5dfOtkX+6}AIR2PB zt(Zxs)AW7XUd~7%-U&D%c1MH~zFtGt3OBlK4yp}EfL-;MFV{WqF zV}uCO=YNJyT*>_RE0{Cz+Yew@47$cUKPhq4R+|zaiU(s@OGmw3e{ir6%wbFG&1W{EP+*2N^vhg9NTyEh$7TnQT?d6$%K>?b2DAo&<5LnTcT+HXs$4t zjrhrawirTbAl{YY4RlliM!cDB#LEq$;jb?0Il5RZe2Ey1+43-nco;!pi=zM}F<-Js zq|%irDV{OTGz%Ml*cfbLnjg(}O*YlHjnzx~IN7)mKl{X@r~&dMgRTPIA}kAL#p2N_ z*%q4O=FG&=)+C$8-_E1DRne9QD~k-DkIg&eYv|MXT=o3r`B$JELrXD?7?-8|JV?lzInM6sqox*q?- zMb<^0S-)16AuXcnk3&mKC(x*wDKNj785x!pf(wg;!EpT>Yk!m-TuCWFtX4DGpSf;N zKlhukveBe(-kbxoz;;@*cv&ck(`Eu0F(Q+dZKQ=6`BVD?crUvsW^R`_P^{jNb#0Uo z77ojr6K?5hF(8r#A{G;Iu3C};Lk1E@<K~l(Lehr+nirivy0Bkrw+-@JB&qA8j6yX#n&RjT) zE9m++!En*|YGEeiw*)8EI5q}rvA7i+OCyNbBquS19&DayXKZR3II`!?M<81W3pb+8 zITr8LK0p^4nUC5k370XJiI4$V zv$&tvJd)2VGBdp-7c?yunCmJ^SxmzwRx}w;XOa#P`v6?ihr}FPn3bwnMI%$Q$)iHd z>Z5^4$P%N8rJFlj5KFkJ@yKNTX_6!^g#shP|N(&NGC1TPqvzSm8 z)1zk5vMd967&Z}V>xD;aFcrJ4`Mx;M*=8e8BXu~G%@uDIKd-*zjA6Hl`RqPfqjsW5 zQAIy%LY_!o*2&r`(?YHgo;qJW%VD!}*q7~U914`nHwV$IW)U(Hu8u69Fpk!blq!p_ zMvGht22F9lljO8>jl&U=)0e0qmdnP3ar@*?AtZqH+ao|ivLK_h#z-tXiog&=5l&DN zWq;st=5_M~mvxndL)JZhf8w7Kq`E7go`=8G|K_bPBlcZ06$`{&s@s2jZjjQBMj`O! zmSgXmkiuIyI9UC(YzZZU5or5!N;9|6zB)%!SeL#I@+K10)A&hbpPHk|{K3HY7vvDf zC|wgudr!inz1L{~%nBE3+UHcrzdMzrr<*t&md zx0(8rLp%QczB&v2O_|!QfbRT53*_t}^~X8-Y8b%~7cS0k&-?az8z}$u z>!Oi^{QVZ`07`pV#0x~sor z-v+X?b8xW3W#naLWsS}!1?NzSs_KYTpE4NKwb_sD)Hdfw(pWG_%g7iYYgQu&kbsY_ zaAav>!Ay}+O25p|Cc4s%!7)b)Y&LiEQ~_Om)}%+L%t2VjAS=a4=Fp(zViY`TrQO<& zznwij-@NA`a{A@9_;|sLl(JY4MtyEHD6HY)?fh8LP;M$JSSmO$eIx|NmUyL#*dL#2 z((z8`0w)DAfqun*15{m1SO0+h7l;D7)61^y6trTj4hsvh&bo27oW=UMKy}DvaA+Fs zhsJ=wf{9iF1!4s1i;Q9Z>h$evA!o2JJh#gr%CnLc=NH6V_ zA@Dzpln?`1X<+6?&6roRn!L z;n*1e@+GohLm|i-?IKaQW1=FIP#bppp%ma;Sd)ZuPRW^|g*Yq>actoaktIgfMSa+r z0u((sqek5mAcyFb=x=TmQJN%uvhjTePKu>~Yi!J`P4F2K2{nxfWX)U=}JF9l1wQ59ROH4dOKYYD zBTrY;b*-dPzs_y6)HV%!M9A<9P>U8aWZ6>y}vLg_9GDEWT zsBx^rbvNKA^9tqpDrpSex%+qf*h5I zq7jYCoQR%RcR7(gRn;s}r{5Aan^Om$E9^#(&zo=3;jSB#gD<0&e}3af_56X;#*Gh^ zR{5MFNmo|I?}J^v8iBoq1NO&m{v0>V%FPc$klDf`$1!`-2hW?rc1{4LYx(Dvkoqr!A7Tf)E05iqUnXozCG&S`aZ9o z23h1C7ki~uBdfRBd;AQ}e9zd3v$`-r2Iw zuW41Kb)1MmmIw7*Yi%11v{~g8SgSi4Pap=oxXOT5QclhlS{l*S29(#VoY=M09P~dXN2Z z=HOGR{T_nB9RD3&TO*s;%@n0bq|Y3F*2p+&FihJ#npKfr@lngIbQ8H^`)2i-LttIIoQMaZ zq`EOKw=6H5HjxpFVlQ{N(xmwr4^-M!vetCC(VfuI{rj$A+e$crrkaH5Su8VD3PTAa zQGu6M)6^gvz?O5k4#P@L_+GnbytE9!ELr1xf)x`P0!~eZHt?YYhT#sCkACwwWQGql zw#mo{83&98w&-&K0;6~6(1OI{NsNa;ggkUk^bX#Un6@s}CIJ+zZP-%hFk*2b#h94) zXhBrv`1Kn0@NF{{k@nzP<{+dpcv%omPGC(grX8z@;uKYZcHAVfk@t7R>7oHQEKw|N z0gtbkDyr0Ai>$1J4y@}C&S*+xU2J0e(ej`WjqCh#Ny>Q(3Y}!)E0ZdhnXSxK?g0wq z%rsv%geYbSD^B^U-ei*)<{^woUx@!&hdYVmcSk8S0kVf_u}_fh2Bw8fn(wET7e3Iw zKGHQp{z2CZ??tz^2NCF=Y1m$mJuCaG^nwc5<)sbWs~#9@68h48G795S7UmQg?i-DL z74yr+PoGS!``goFj0q@z8H4zIAHWri*@+i*pbf|U8LXZ7w7S-NAI-3!_%~fKR6Jw} zllK8f|GY$YKz(@7yqk}{%4K`nhj^3jFyYAO`dhS((H ziBnYprAAx?wqQs^dY_RUFj$;O@$2EkQm`?mQ5>~4kYh8gzX7uTtU~BZ{`(Xu zH*x3~kE5Tme*F+jw4T?ky8TPo^0K0MNBR5rV-mhacqY_6BG?^1Ot8OV#XX%dL{f4f zVHT|~%t{S0>YX@|1*-n&OkNDamThI28?dKz*Gz#iAeh?u+8#nKPv_J7>n4HO6`luy zBe%7|Qw5Sxr)D;T|S`jz_tpdhH?Yv*GYWNhxFLs6b6)f+KQ9T+lf z-OeWNuq)6`wJSIx^D9uFaFixm3T1$TH~({N_KdSA9`!j!Dk|ogKyW%w!hmV@FAdqg z9YzrpV0oF_WXcIzrB?S=1T5OS`o2kFyE6sWOj`)L>og@TJ|^?D()a`SFtJhxi8HWrH~O~%)4F#tXi}AM<1eu1DrWV?mD$ciN1cFXL|IDHia?!^L-iU) z=v4;E!B~V~I~=fl1a@Qog-SwY#4#2($@1hhuzUN*aOHM?slJgVN#8CTnv^)vfDx(8 z4#*P8-I}vXGqyT4C8UG#^V@oVbBpsOYK&QGV5@6xPwA|0 zmlctqU|164LV@K$sj8`*0r2+LrY1h+qpZg8=~L!33;EOr7WH4^Q^m(oR`@km6L z6rbe!qLm-GV*J&3ggH9{h$XE`;>{Sr*U?uQ@7%B!i^#Md$Qr++LsE>RffE4%lskj5 z&A}=7Adw%WrCrV&-B~t#OW>igsw4~wVWE-%g(G@c{vPgbHFr@IotSYVM}A_P1wB2y z(74cPT`n<&D*iRR0xUG6cH6+BGFsv?ey_wCT_Kn<(8R~60OC5O7FIYNhf!c+rPW& zV)sN3JSLw^2bdxiE`N`jw01rU_2bt5Iv{VOyg&Eyr_yw2VX9z|ORXFQ*8`!X5BwId zouwCw+W85;k)PUg-{|GVu2C+w3UM0cCP$C&L4%m@;-t$XMl-&qv*qChJmd#pITi>` z{2_D2h<>7AJm!E=L!j>v-A5q!Y&`G7cUf`7H)A71cbV!;>CJf5@>idPaBA}71oNRF zUuJcl(=f4{iAcl*j2fO9M99dR1Oxdu7a54bG&vcqBTbD2GXxYD(?zDA3rR+fKJa4$ zBjD6BUB<^n(3R{{8Dk*HWrz8zt7lRrT%saEp~Py58W_ zMTl2y?t~)S^VwMkc04-b#dQexuJJ0;&sk8HkBW2%8CSN_7`a%6jH6FZx}-QIVdsB+f0*31|wnWV2TLdF?}l#5=H#D^ntuiom_G8@tqK{As)Se~Qp ziR~gT32 zbk(YI*v;AblXURmn;lG=TYTg^LMpORWHl!nkcH?(6zlPofn6JNI+fVNn9`@6{v*Q! z^Zx;=KvlnV{CGV{IdIve%O<8rgxssC4&V8X<@o|r{91(6*x2)~LaDgni=*WmtXVLK zBpa)`1?tFj3`Rb+PFO5eD=;FX5F>1W!G!z{QP{JE9>z_b#)?bAS-QVy5FLsj;K;!p z*MH$z6Iw?ok~`-0z&lLb(VAXtE93AW2N#o;Xq2Eu`@kVF)PxYW`;ib#=g z(4o$o+FH<1|sW1ms(L54&XLqR~;J)W{Sps2M8ka(TbU{+bC39ut!gta$fL>#hENKsKFFvNT* z1CTqS5%uB#4}NvQZQ;HR?>mP;dT-wnNO|}EY(hJhoNrFaX-Rz|I|KMf;?Mwe0Wg5| zPilNGOhQHe3P6vY?&sG_yWKdndkq~v#X6;EG6d=UZ?^il+DLO2MT zK)@EHdqv{{A3?6LK&d2w)to|sf@2^<0t)o5N)s9I=K#SR4T3zW9Kb3VARd0V5K`1A zdjciS?)ckl6f`J2hejgCCbU`X0iDN15^VvBNe^|>JNKI=s$fRo;tG%uID%s-u=NHj z#x{3@X?(NHneHYpL6e9YK@YC=m@DGDVH04I$bJ5WL`9bG+V zu8UGc!a9)TN}@0cg3N)q9nu*>Qzoz|pbKFo9rwKFiW(GQh8cxn1ki2g?h}uh=Ho;p zi@1bRn=lHX#lVh6iNs<9Bq46VD;vfuNeDyk17IO96+o6nIjWHc70{t6O{&}|!v;yB zRXJ*CYP?egC9}kp!Ss}H3Dgb-U?YO zB$Ad%Nic>OVSr+DcJ*}Q!J{7}5=vo74CytB6l&cmiO8vu z<88-`@dwoffzTdV0k+3|h>X0W%n%x<1610b`Rp`Ua)~5Oc&929py~89F{(LZJVl)t zVI-Z8SKcnt`Y^-GEb#D%F@qEa9fIiUCPSdL-k?>{W)!w2QGLn?Eym4w8~C3OM?@P2 zP^wClOhlOZT)QsiP2%WD2w0{_0}UG#5Fp<~4SYtVkiw1JM_x0=D>X?AI=Sbe+=Di{ zgw_EWbZEjb43$#=sWXHbfkQD+EJYA13vomf0*uXq0<;ZHr>v@~iz-n`%vD^~IOx#M zn2LcG6_{2|6xFF0dLl*QAiVHqEYV)Xs3{C;q)2Q7F`Z1-TFwB_ZBr3W9!WbPEo)7# z@_=6=%43;b^a1seeTf)`VYZ}|44xQYY=VW77%-udV6?a-mPyTO1dzgWDH0gjUaWYQ zCdr213Q!rcAn1W%3jBT$fLrh+9y3&Jk7+r#0GksGCSf`lMy9G##sIBYkZ$g_#Q8w+ z2t>po!B8iJQpqght{AM6aA2U!WlcFHq;z?fY(T>f^}v%D_8uZ`JpV%0j9eIFi5Q_B z&n?0jHdP#f#OB(u?2CvtQXJ$_4#+AXxW(0|g)${Ub6m9C=RX{@NQl)~Fv^x}Gnj@O zz~8gv-1^=#WW6Jk_egR*)3bKhjJDczUeW5(pBQT{981@g+OFOI8KEN$Zt;R0TTMKf ze1Ls{{%L%!dg)%Vp02io$}<_An4DOfN|Kr?qU3Q&Ni{`iinwuE8d|ygU7v`6G zN_LGwsj>6~w%ZE}XGLwYaaK$*jmj1eAcUg*RRJQ^r2sUsad|C5>}dF3itJ#V$`w0l zLL-bi@}%&c2@zullCT)4MKD1Je-UMfouDmXq;PPM#btP5zqESq5yPX#K_w!pi9;rG zop)bq6}NXS-$@`c!}t_yH=gGInW z0HFmgc=BVwWjbkjdl5m%#{ljQ%S5RM;3$xl=UkIwu&RfF+QD};j>mDn zBUr`3Fro@J8Ae2c9N)ahN-B`lV4PLgNFXg9;zC6N@rkG_bc|3ysL)|^sUc)UHRIcA ziA#Z#NRh~H2NPXL6DUG6G}0PQ1xO==9T#|yr0KkNgHlsmO9_S(3@aL(F(ehxPcs$? zFluWxIC3Izp+tomj!50hmJEXwDqi#qbfH6xm=jiRJq`*b4up(I5Q$Jret(U{WpF^s z;jl5Z$+)o?@!}eSk*F?W2bTogrWyz?MzI#7U`WVdp#zCh+6`l4@ha#}ECVZypg?oZ zLmr|MJ}&$5#$xXVjR>}qSN2`sT{ug(xsBy#=`QbiqbpwjXnn2zog^fXyzz!glG@ta zSNlK%YTIdVbozg}*O>S|`SDxp-tPB^Mb1t)HhD;Z>~_qX4H68=;?kt!3KE@Z2*#>? z3OmvO{P9QSj)b@*b5@2>$T~XsW6u^0ZUqN>J}tzGHZm7Pn-NBd5iJK8CcXfKe<#CP zDU>~llTs&!ju6$w<(m;0HhKHeA}E0tBf=E4EQt)++qlkn+rwv!!UjR;s4Ap!0RxjE z&o8SjF|zJrGJ=f5UeduP3k9h{U4a2;5|-H#_j(5sQ$z<20t#@h^2_1bw}F;CMZ<7o zhHa+yFSPWeA|-T&K?6`(l!%0dt0bzON1JITdPplJgGCo2jD&*bs1v2(H6U?5G8*b2 zx1H!q%jLfWImckoBuRB6hB!40nlaqqvptx=*Bad1GTTiRvEhMAiGe*9+YK!ip$L*& zkUA6!QsJe6Rub1deiV0|jJCSlU*ZH20!;tYr$>rg^6xNx^E z2?(2xRSp`&N&~VFK?MjJ56Bur7J=Ffe0T^*(oEc$pLs*l&eE212wOIek))c`pZ`EY zNAS<95Rv1adKd71Q|?cvJQmg;cKNE;-YF~SyV{~~P6J<#$-$bgF~OO<=~Y08I3ZQ~fI9F+^7~5^tO_)Hur0ZaW%UuGK5t$)0M9KygiilA) z5Nn|m%c*L@;F9(8oY<+75He_SC^;`TW;t2+5HWJFzI7vFK~SiN8Hv8cFmXL=h8E@2 zeh`F15+rEI&~inG2#!P*!OaScAeJC*4j^Dz?P38XA#RMl zn;JC<8W)Pr=q$M%;$VpjEWY6ck!HiigW00b6p}&gR24*wl4TfIBN&8Y_(?!#fXRB~ z;)rVgQ%Yna`a$;~s_q zRKUfH#AUk>;69>@oD9TOi2&V?KbGd?MWNerTWE4Ekyk?41%0*L#t8^5!%Id-E=4X# zuOdLO4rxpR!r>u~H7k{A+5;C8EfjI1tBoYjni5$uU36AYMS$Am&Rjb;Vh%9N7gkjV*Uj29q)ahWC-!;ZBj z0Wf$;jid?zrQj24h(-`=bY&ALfEw69Ko~P<9BhEJ!7l+@C8dN>jtOuF20|#@0QbUB zNS7uMqD_&(K}8-C#(J;}I(8Z$GImKr2{uXCq6#dKr9)?35>cdRw82ssyLQ$DK?qn# z76(R-lU<{jAB(K!Wuy76DVC2l`c(~7OJSULI_3GB8>*fMZ7+&xW!%l zYs1P8n{1QYy#iN87-2@BJqrc}VyI>;D&S!6xw2r4ROSA+^|>J_|3Xc~rnsm(?qc$^ zmEUz|5h=h*eK&e@cWlGV$|qE)K6L&ss_vHc`tDIk`znJFnZ?Stj%|j5*SrHBUpP#? z!u+-jFkyrFSSuxko6uatFIwcTv(G&Lw$Oj`&~-wszK!q{j+G~eA%i0j%p?$;dr!W??zwkw~mo10Y#YY!TtiJOnC8K9B|6kU{5kdt*nY z5#LUXJH0ZmFz}B@4j5Lf+P#DZ@2tVi;lNK5B;rx2N8i!Fj+ioPayE(i)JRT)svc57 z5@H;Qs4F?3GDezx^kH{*=muF_Pr5-X0jS6rWDE?2001bs0K3o-PQ=QcMzPxwjxjEP zBS9kt-39rjB&uYaAY&kd)DH*M@s18ma$`(s&S{~<<{HjzrL2F6QNW>zaq8X1Vp%4(I)B9Mea2E;U# zv=o5GDM4uk*D>!97l}OU`$K{*`M*p_YBqwNCAcXC=gUTp+9Aj;*P_>bRW)iYDK?ds z%9_IkgvJGdEKY)zbLizEGc*fJEE!dlWQ-#R@|H-`Mx{~(XwjM)kyI~0YXZ#5un0;F`)q%aEv5|O@O$LnuLY|?m;OXz?c?nToi<%Pb!yl zUAY7SCKzF5jBLD-{qy1cyaa8KZ76F%>dNgc~#~7KKF&=_VRxW=W&5 z1`O$RVWNvPbV(#Y!U!6{V6aqB&XQ%6L4l$ONLXI7iW(@Qib&EhqiuCp~k z+aHkXo8jLEfmfLzuL5{mi-Q=hQ8*bgw@OHei#H`p(4cJfO1xiLtG1UPX45%~Gb1c5 zD(U33N^Z);)ke1~Ms1XMk*S2yMo8tg7Sd~E(3Q_CC2f_tGRUz^u(HaG&4?tSj2OX~ zAYup*Qv^gv3^3)Xh%#AZ$io$~EgGoBOp0`iWn{&dRhq7sUus-7HbjAq05*Y>PNfJ( zW`rUffyMzAgd>n>0b~*av89y1JvebwosKCe}^1%M{BcnW(KC3wW(2DyC!{M_Z2;u< zOOC5<76oK&=|Ffmw|!G(chEiDZQ&6Sce zxlRYA0rLLT2kTz10c3teyGSZj%<21#3Mn)wrxF=DMG64kA1**%l|nyW&o3mMer+?w zY)$C6e&8#9xc}j2K>%N8kE#93(@&qX>-t^as$?)bTlMjb{3$(>&u4#W?q;uQhSF{{=Av3?ZCqj;w+|&tm zyS?s0O54Hn>Flk-~HySc#*3)@|LdRs>U_5l3JMoq7Rn zt?5(hdeTp6zX!ndyN`xb{Jqc)w`E@A_f!|s7b%g2-3e=k1z5^M1)4_#c2yXX}8a8tnJQd3Rd z4)6YHFRu28x+)IVt);thuM5TV{ai}(zWc`o;u}>4<`M9Co0MN1lSE#{h`q0nKNYXP zwVn*Abq_y$O%L3A{rkbRRF|!AhZ>;W`DCBz-8E{bboT7H$KFr-bGi{LtA7vb%@aZ? zozT+$f}k2&Zw_xdn#b6h6>^avOoMFiLnX<6$;xm|Ia|(gY@xHm=Zk`6Pp7P>av#;V zxy&lp2mQ)@p(n944%H)r z(dK`1U&txtzR49&MI@h%-0k1Jd;bz10*2Lz3cqYYOkJ-O=F@|X0Tk+hO()Z{P+TBk zk~j|BiSxM~q`qU!dFJ-?2fKmdM5pP%rnC83fO?&GeCmq-PSKUqG2K^er+^(LIsVSd z`YHj^st;TD0aput>^(P*s5-K%i%?-0Me&ioN0{;AyUzOHc(pt2<^Bg`RdHEsrRkUl zP2PSIp!u9$6<@b-X>VP})pyL&m+zP)AiqcQNcr!lN4RIV_5V;!R1&~}lGKhIj8HI# z5a4lB43>&#&52V*G)YZ0D1Eyo8b0AYPr4Y~agNT8! z7|3cNz{V&TLx^xVA+j1FfHsI}LtWDe%p}?hHc94;nTeT+DU}Ey8)dqps(^+wLgwsr zxe|n#E3*6QxAbkQyw$6BYOB0E=g#)}`f7sl)R>C6FnJKGKWXC}E%q=(+XFm%M{&fH z-4yV|PWw%D?vBgVhDa@8W*|UIB)*#di6o?wUQYZeB&3pGHFW9-A0XgBfdl4uU$6)s z3$W}$2aVmOeE+rI4|ThHx7POCZB$ewAfTO@ZRxB%MVLd%l8f^6u^wQFsS7v6B2I-1 z{4QZk0pEYsP<+8D+k~f+@xpQ5A?^t|PYmrIMv>eP-)~Qp@*GP;@P0oelk4;z{c^po z)ti&U@qKwFg)RMa3>em^H4{b;rYtgwyJ_QUr)2Gn7<;A}IsCDU-!r)~X)i*R*j2Xc zT_;1U1d^AzRuz}sz(#-*7vasQ(Q zKXIX<&A@i?<7%g&r5O$g&gEnRL9oPp|0IY&@`knun_^Re8wPLGv8->SwsUXdHpPk+~Sa`mQN zEB5{ujQqbzc!ec)=nc{y&?0xnNgZ*dKC`-gqqf%ozimKb0uQi3RT7TCs+W)fD)_*O z;m!O_Y0P-sLSt(&&7$fDYFZ|Nc7Pms2&Lmh3%texB)S1!eMJpjdv)2la1lM>PzVU5 z>2V+qw$;A*>Hg@#GbT)$caHqJ+j^DYE2Xa`+~T6et$+heOk)^>7?~I3nhdT*>oTM{ z))Dqu83q^!tDZ*je?fOX{QWOH>%D7{a8u2v_L&R&Q}25oukG)?|9@3=_9o88a%BYV z1oZs{2TCaEDDS=yfTrA5K(0f_*S9ZN=*fU0Tc8>$s;L9h48VW9`QrN0eEL~skEt6> zo9)$Xg1?u&VxBsSsf(S*GmnubZ$`2l*!RdUaZ||EZXHl-H(PS)w^O`)BaPHnqkP_S zv~Z$0+!G2c;jJF$K9Rr#YCE z$_4_f9=D6`d+xpw9}4lJyXER@k!8#I55(qQaqB*UA}@`$+*LOp?Y8iE+#i+tZ;V3w z@4oft`9tG<$RuhskXM_X^MU$@4i5uJ{Nt)rIUH0oh3wfZhDJ$@82w_vW}~DuDOOsF zrACaKt6h6_SMN;JG={rFsa__!Q^E~Ity%1*A$OP#^ok9%@K%p>x<_EjV9?}H5FA2s ztflwSZ^eYdc(;A6PEC9p^}Nq;p`LHh{N{4+g0r6AUF;)RGi9ko9e}CY9%`T+*lMq# z1#SB>_kY}%j<()kAH8_(*8TNhJ?FDY@H$qYfCu9Bsni#$B580^E7U$blH{feh!MMa z{N@&1`STxyZ71+4eQjTwyhMDLrLWCG?n5)9pkqUD5&qM&>_v0RHFmf8ZSV5#OUWW& zRGTt+cJq7Q@6SL@y`&Km2!UEqnR{6ch#^Iozw@;d)bZKaic!|UZ9@eNOe#iG0dZ?P z^lFCrF+1|mEE&a|K>J;*URx)B`T9P8NmXxzB z+HFm!$x2C>1(p&C&8q9_KG9+utVA_UvTqEHg&Q?YMp_bPmSq^FVl<tI zGRLjl<;BI$TpJEJ=Q(qnxz0%E9OZK7E?ng#iRG@+-;4ZPZ?3*K;_YvEDFjzcn;`?0 zcAJVq=C&Kf&!D);ET3)2>Fo6IsEeLo^rjVxRKh@DV+tf~nCfQhYA>($b zj$k~C$QZGVW-*Meic8+fawMyOle6Ha-A$5i4*yk0&VE;a;~d8=(RR*H-aXyLckd;! z?!-zo750EpZ&c-UF55^$b7Zxat%bw{xwk8%#S%9V7pDXVqv=D@e0zVp{*?T0ZCb~M zk=pY2ls%^nyik8_9Vd+@G<0eyZ&-d8z)1L9vxi%q!7HJiGOVFzCtRO`>1L}%8UsNz z7Gt>vDa7FK`Fo_`?a59%Q&)rVNj6s@%JO==mX#xpiqUohM$ZRtVpVVR_#L=ikXquL zixO`tV$m!so`UGk5=G^x6aESNeu-7c4Y*tSHl|XXfSb#9N!3X(v=7WC;x)#CX(p=V z==BZ#O_HoqMyWe7Ym~3r?hck+UwiX+Klz)VXl=!Mi9z{1;RSDKXs#t-nJ}gj!s4f8 zOv^f05rlKOLde8owz-qcfTia*lkJdVKKIWwrCQPTFAC^IdK8^K^eg2zpRC57)!i%S zr8j0lfJ_ls#TZeDu*MOAVwH(7Rndw5nM1;u-gJC+hB;rA%s2A{M?6qrf_P#%!qEhs z2uG>h=c9G+H%*$yxq;s8?ENp0l0%9PkR^P@L7I(DK0ExB**C$p(i1y@9UN-yl58Cz z(i*dFj@>Gm4r<@usjtDgLtjXFw>)wOr`pqiq&3g%ISWb5k>Apyn= zjdq(Q3`)cbLAmh{xL z&3|#cYi4DN%Oc3K7cCG21_MFB1|f8IfhI$N5+uVc*kZ;Q!xlqkYm20|NnRcka!8nx zLS!#T)b@w5_InG_j+{HT^(`M~e{sA?P8PiR2t8_V^0*ld{xPac6ktXZ35pAW35qx{ zm@92i)lroj+Bk@4K_V1fB#H|`h(aVtMb=EQ(i{lRH6vm;ZB85pm}JDT!wfLRFv6I@ ziwsz>!q*L0$r|w2P0d){gHD$>CAw|2DP>B{UB@h$&83wiW-AId16md)s>tHgUwyvH zH|~d0yg1b=aP?YsH&nB6^*c#cvc*+_WmSrd6L_tS5|-LZwr zwW`@r(zdEMlEPpkG1|?l){Et~6ks2`JCRHi{AM@&$S?V_4NGjWltBOS@~_gT`UM{;y+jxN5x4{A1v zH)Of`r+-nDE`Vn$a-_{@CvsXWDU1v-tX0a|x_9`9h=_=Yh=_=Yh=`4A)wZsh@*R5t z`@bKVKH7l;fsZueDPJ$9pB61L4KoGATvPLmKN(b77Z;t4#uTIuAUzm3c?Y(H-PaweLY ziE3H>uYq#L+5W#z>wm9ydS8J0f1Rc0WFJ}W#m-$NwYh*)tN!nA;)K zILq+I*2(cx>7ZW7NJ#la3hE{tF~g%JDN)hm)kFH2AT21MXJDHC;6;9g=+{lum#Vw3 z01EdjizM%tjYGOB?(1(EWt6m*W~Qc#7Bp-fb%lwB0fP+4$$~rZu|p;cAz&~pQv}5@ z#2&p|tfzjI>-+gb3gY1Fss`|N*~Q%5ij>frqHoDOT}#H1ZsA7M2HXbtS{2DE45tZb zruuj#8tww;Q%%H(+!~tN;}yNG0y3k4G+NQS8CNp%feo8vZrL$RCSxqJ%*7a^7*T~Q zxY3J_A1$Y!RX6I|rtc@maMIq8-^?X9>vpN73C(>TT6UlH{{Fs{eK*cPuXc7no@sag zj)xGTIVlmuu2DG2$IPT2f~t8^Psx0DiT?YY@qc#O6699_d=r`X_?%`TFk=YCgkpcQ z&HNUKG%PuZg^81dgv_5sfEmefmf22{va1D>Ivv}|>M3fh3FSWM7MxfO8Q>Xsm`)gZ~okU0J57rB({9S~IF-S079R z76FVwh+?VG7^4(xizFFhNtQ}tEItwMZCP^it(m!9Mf;4is798VJAk=$8tBUcT`ZHP zl4;Iz5oIhTXro0O6I4ru70th6QOpaccP6Hww5s9FQnu1-HAy$Q+96smqMZ7gDDJ}b z579##)G*UI17@kbM{MF&#MXy_25QL)SB|1u7as;kcxZZH5|T=6!SVGT;8M7K*mjOA3l@ z9P}4444D2D5R>2D5R>2D5R>2D5MD_AgU;$WRgjeNhV1onIw{Al1c=SFKU5pwY;TTw%UUj z#TqTOwtymhoq3zU-w~~9)~$L6d-46I>8o9~nn{Holl9V>)Xj*i;$J@@GY(j;Rn|q4 z!emV&+0LVwrW4AEkk}2C zVE5)LH1E~|#TA8OMlG_Ww>2bjH4e60+ooz!TVZgDI{xWJZza5KM6p$5FrhHWU{R95 zRfJ-yV3-=Dk3?_E$_AA@;pSH`;Qxm$!Bm#77hKCPlZ9Sy7phWTOyaMnZm2tTIxxjFi#2ge__| zX&ZTr5@bwDOqA!~I>B@6kQ}n;F^q3eZA}!nv3afZw-W-wvLhzN3gXTzRdV-A-YaCd za(?k$JqQz^NC>y6s*GN{$t zMKH2iF=dkDRqtLeK~h@kohz7JaJb=hHEu}YsCY?9s-=?VQM#j`QJ8YoYbR7}jlJyr zW+w9#+uGx>ZGg;kEmp3Fg+aPOo+63`WT$o*zcd?wOi9Ht z@2HXkDQb*RYi^85vkRM(-SsN{CfxdS`r7R7SIA}04`=!%C2geKN%PfeO|zep0O^2P z8tPK4bm7c$|Ee;hJ@M(9ueR=2@4qfP6+l@o@8DG@NF?klt0id}rk0jjH&aQJSyIMy zVHwqdFu^(v2#n^fc3Em6)dkwsT0*s?v(u8%NtH+EKXj>idF@g-l%vza*+}L3J%v9# zqrMdm`8#Jw9b0%Ez^KrwYruTct_-gHRNSsSHDP7@+T~k(y|PPV>ce^(rwj_xR`pw{ zOL0l5A~c~j(92yK>BrH%TJ>#^-8ZE&MpZLRT>WomYK2;e*lYqP*&NOLknCoNoBB!) zUKTBvWGZd8MkAiKf$)aq=BX>uxV%o-j%8+y4DH|y>N=)tmqvhPVpv#Qq`{Rg+FDqb zKQc1}NQT#u5Px}i3Q~fUpr&hbwo4_F zl9G~=lC-TWBt%3+MXqJU!x&YTSeYX%rb(6&XblSJ2M}{8$u<(Ts4P-@xnIj})8>@axtyDF} z#NWzplLKjNO|pj2n&ZFH*I0_*O~hjuw+EQyls<->xJPy>X z0|Nrqrn;iq-rbs%aQ7p2rN3!)s$k*Oz9iii#9Jwq8Bvly>&x;cn6$;EGNURooC3t$ zLU<3U&vqWijwIEKRVxz>iZ&?NS!K#eq%$nbLC1YpP3gU<=p4)cbya#R*I!5U?q$j7 zfqr_>+BF$+%~wtqb17iMM;d3D%XtMfOj63wXbnnaRgjrgGtR|>3}LRo$xR9;+%jAI zJTjtcMZHorVK7*tZ0TCXof{AvFF}@_q+>!dlFt!kwk)tL*k?v{PxQIHwyh}CO4KF- z$Z80$)j(V#8fg-sV5}l+@#hUH8E0L>cSSWG;{o^s+kN%v~=)u4Rq0? ze^Yx*RYu7=3usp1x?x6a%MxTOBv$_eL4u|xC}}t9HJXx3cx_lVvAdR8Xrp9?_*_g? zD|lAgZY{}oHDtE(QE*?S)^X-D8H|}_mBLrq$k+(_+ypIwg*n+S6xEys#FqR_r?u3n zM+|ErI#zrg05}PQ3|Nd+ZY&&y1|(KkAjSr(aG{4O7Y2zk)rFEWB=x*mxl?#%VVTE@ z=v6L(C9PaZGXldYh6@a!8CxYPU3`%76h)e;nm!|2o^1sA-VgwPJH2ETdj3d}?;@68xJ877+7XW+OlI@akB+jK8)N%O@qK6JpY?60zC(eJx@&8M= ze4cw_rb>Dgr#`!0o=|RhWa!*|`fr%NV+G(|C4}dzjHlbRq~vZ^Iauy#Q&*x?I4U(M zbChb)t460ZE??PdRkrROTCoEU)ZcW7V{2K-Ma1MCkQw$ zg-VWJt;fVv8eLWx#bXl~Q56tuQAM&=yFFWX&96h;gA!sFAqk=blyZ$kWk9uw4krB3D@WXLzfFqbD( z*HSdoKy%}cMb*t>q{$B-gfD?K1CRty1pxZ6l#N;bk5f_a|2iJyEBpQM)+fMx;i~{4+MALFq6&UC+%*^4d())pKPBnN_4Mgr%3d# z;OKmu;IO@sl9&&QhJm4+Wr)tjj93{Kd-*X4N`$bD#wj#InalL5C6WrBU?y z^N+YI`P5hTI4b*_h1LG&nN;pES5gClLAUKz+uUm_Yb26MB$l?;F`MNRBXI>zgx z&}o_CV-vK&j594CSIX5@)1yri-QU>mwbe^?ZcMSIqI!CIGNu^HT+Wbpv*Ac0fmk%n zrl)5|okdM0v7AkJO!7B4`^8QmVD{K- zJ7+VzQb|1~C;Q=JYZfi*YjInRZB<&`7S#}pk&!_|ej5YOGbI*fh~AAwmx-R>_H7Wh zRMrdsOXE_g_376%(Ek%UPtRtC>lA`+ght(0DHwzI?(?w~a0d085X!M{rUX*E#ctyXbT}9S(;=Qk11Hs}KmyK9Qt- zD0~!zl0t){qobpu?(XjH?(XjH@9&4S-4|KWsMy=ZK4~WjEQWq1)Dr$37x(xd{mX;j zIlqzhebQ3@F4l?Rd|6Kx*zr$r1N0wW;Ss97*gM*b2n3`AD}ae0s3*u(?$ky6Oz=x< zyxw#8l#bNma)@(#q9DBhNRP^{VSE2T|d%|25vIA*X*w~8$(bvTEM!wSQ{b$)yU$9H%_upT(BJV0R zA@Yy}r0@F@JYh3-%C%IpO^{o8wI!h^gW3pJN_&)j@q-KuFu{bw4jfwr?>~G5*#_@A zP=J~9q0whSl`BV+TBC+MwiUGm^nNbSss1`hf_60!S6OCeW@ct#L1ftJZsGl}FaH|i zmDL2EJ-^<$`@@IwByirebmPH%++v>_$nyN6r1k@o?c%Qrmj3GKj)A!mNdtUYPYASK zf42Ph1!imM3`kTM=LQOm1KF@imq|U@7(S$miXyU|CZle zs5>E7Z_VM}CtuVm4y4r+L!$&tci*M+PvJUzPs2R>A+fdH$H^ceF%%QA_iSX8xjZQ! zxI1m{y@~fvFv6d0tFHS5uZtyppe=8szx4HS_dfo_ySX~wVxJRVdrS9wKo#9lsR+!17U7()mdrc1f&j{g;xS z&%L;P$H8w4!HG?yBz;Q~{-zx}li|D)1E+V9R^;mWuNq0?dXGhIxSnk=cG|EKY{18m<((w^G^8fl%tV#clql)GNs*rVNh`(_v%0|8BfZXP+#G& z`Ew$m8;cYF07Q^QE&YE}lDnAuY6uiN(NF9uiLJEP%YFeoQ9t1zs047AjRu;1 z&2EKAo}on=7#$!05@aNoq~8@eqYn7Ko_)vpJIsk+ zGot%%yx5{gmDjgzweoLDn?IQ*u}`ilVnqFrZ$zg&&WN|7uqqF6jTlODo$&o1C`s9V zCw@uov%Npb^wTJ8a#VjaGYCVm&7{4W8 zynR^?SP?0Wc&G=fMjI=fA(oLqPJCNOl4`eAXV3~Ja`S`>mOv3E6eYI~5WDwqQnUI^ z5li_1IBl%J| zoD!YPlbU0Y@mqnJ6uG_ts0Lnq=U_UHuWuMe=~w{w0TZ~rar8DE`%u{uo~f_??(FEj zp(lXV716r+cHg_jI3I(kD(T?Bl-^&3*1F+6N#z87Na=gBp#5Pc5||bQr|eW15}I(RK84YhlA!yCi2VI3dRD5cWdjG_ z^uqDZaYt4BqEkwJfe-dC|4c4iW3N}o%>mFeyQ*bTc?)&J)6(z@Gt7tZt#Ub@nE(q3 z`X0ygz3*3D*4px9tJa<&+MYzb^yh1qd>N3+mBN_cpA4ord#Qn5)mVIO@qa8{rdd>9 zxJ2p%Pv~eVtxWi@=Tse{Q^g5yx7G$9{GS(;{{Hjc2{~6~<{o|Ic3VYZ_K20+qL}i8 zyV3)}zTNLI;M7xJ?>Sj`g%tnupY0N_Sg0{7C}-fvVq`PaGTLcM{GZr>B zHa0dkHa0daTUjKMOX!ag{+J+%M3PLRNhVPwlPHo&lu0DYKmtJ|lLQe25d;wg5d;yc zg*jy*8`b*t;;t}NHD7yt?Y?Ac>kfS($&1_HtbQVH?0GCaf-{e^OZkmc=NGzcNSIX~f9k zNjOh6*fDUnel+{*nZ{ zD&_11rwQShoS?lLjHQ0f&D5vIy~vd0yx|3T#l72n7uPyH`=S0JP;pDDpb6Cd6ats( z{VlaW>!%b{FP)}DU!Ma+j|e_#HNj8hd14Ce+v2J8o=Ga@v!y#mMoB>jhE+u~i^2r~ zfE|1h6ML?j9QwHUSPkyjSrsM&dzBdug0D0 zyZw;VJK_F5QvF1X4yA~R{wGBFxaCt$<2Qt~dR=Dz`cMapNS_=J?52}yzWL=Pf(5lCN7@hHDuz{PkNT3m2Lj_`Jap9Ec({(67(^sS@Q zC9)8_WAr{D@?X)x74Vt-L>rQ~w z8)B-;0>2gf5iPUlz<7W!tuEB80`rT}B|3CBf>Xvn{i*iPx#4D|mZ_Ag_V}UO^mH5kl_{$M=a)Yz zslsz}Es7kZ?4MrM2CJ#}lwEwkE|R~!)PJI&@g0AUr5|C{2{ffN`G5Zu-4dTat#O*d z?!SZkK5kQo{a*p~{_~REf}S}y)wetsj8Fg_cnGG6`T4L_vw=u2ck~5b+>;yEcY7vT z#g5`*xbPL^^s+r?E&sPj){=6spyCog0+%Dj`TvI-TahENg)P-8Hp;En?p04vlSg*- z4)@;;9Y{+ZJ~50jj2|7}d+d^Al08S^dR+v;FXroZ7m>fG=U%(_QfelY`dLt&h4gM@ zxwFK4IdCV(@EynNbq~Sd&M7D06t8}(;y<+!lukc+S}Q?!kq%A{tL5X=f+lS#dndUmbR`vNPB50&Mk)?y^KRd$B-=se z-fub@s)N&sFoL{36jSLv+O@nQuI@>uPBokR7dKPwbFM5ihDVox`OrX>gZUJ7XZM5gdcZb}YYW_wRMl-o~9`)O9& zYv_`6Mx>_y>TqvjCHfA%;(o{f2|M2o7W9jgBJ8gco}E0JpFup!)lnUH*1l3bOY+j( zcD=t8^vVT#`6*HMeaJ+%j(>OYQK zM`PVw-PSZ_#E07Ptm=I$wDoasTSAL{bi@hY+N7U@nHOc9;mqnONbnU#GfHx~G8b@j zSg}bEMMGd>5le7?5R|6vxx!664T*&UnLbZf;*^z}xO|^W&X8B%@HI2%`B$68t)&Pa zh=RGzn_6)CyHN0EAKtHF@f_nlAFPXtQ(w&5{9Y_6er*vun(DmY_{0aB4wf>w}olO-w z0-E0kEw-&>+P2ld_aY)pnM#-*S^u75a-^Jqs5~UUWAzC(-$A5$;1&1_U3bV4*7M(n zc|_xghZHdiD0-UVCll35s^9-Vb{#YfyW3*HB?Q;S5+D#3JUQH$L94H+5D# zSueh{(0<52lz6+}!*FcVv;S;t{H)SaVVnGU1l(vg;B1KCC{m0@?cTAQP0Y;1)` zbXa-m>Hd9Y?jl+-w|yzDk~XgmwoTo*Ix_Xja3^nng;qD2etA`z^TDJnZXH+l_Z?ja z#Z@#Z#$9uzXc>z%EbgPdC$cFsXh>T3B-=C}A@sy~?z7YACb3xFAZ2lDi7|D1ml+;( zEii~D!khM!imj$Vfo%Hz0gWt8Og0ddJ{Rsq-+8P66@EVgbP>8>aF)0oq3o0~#p@Z& zV)x;)Qmbwwr0)OBWAbq~+_c`!ZO4Qa#d%7W+`j5IE0chan81vho`;ReTU^-D6|=O= zvN}`r=Bri#j$%CzdAamz_lfZhDdESMCQ8JKE6YnpQOTw<*8(yIB1{lCMc{uaVUu&N zb=I?tbQRxeBmRhTO6$zO03&~+uz`_cB%MID|5qiJ|e?n zjrs5KcTrZ;tP(#vmK8f;jlx6QE=u?sW7RgGpo|J53B!ub|suVTQ<1DFZQ0mSm9!` z{XTEYdyO1rf4xFj^OtA7e`vfHa~iwUd^!5wacfwc?GKPv0Ljh16HAY9WILaz`t%(M(Wu5vQ3@Q zt9V*%g1BSHfWz!PZt?g}2N;aoH;gg8?iT^t>OU*BN$9BLzX1M_;SRCizv3T{tn|M# zAK+an-Fo>Np1L9W+@EPWTRQPPpNikT=wcP4)7r1^{B8t&<>s}nNX{hm_v;^A zJk>3D#IP}P41h>8?&^GchVPi+@riT$KE`DZ_OG?P&s^jPtbI#3oD{Va%hw$zM_T@> z5AfIiIYuAVTH1p|g4O-0hv;JgOOh0a%HQ;D%W~i5RWyx8GCp+$g3aF_Hl(oL>G63l zQh5>5H2uschsDFc;}!fV^4weh%srqJWfAGEBeBuTo|X63C9r;bE$a@ar0!&T`tJ?q z_IKSz*=Tesc;!=E#;d^lhPm)3=B59WwlikG|oWI()xCrAMB{tMg%({(UuT=`I__pY^c-Ka?3fEsA zOU|YhS-2~?E%%JVuOxF0){q$&QV5;nQ>R7mZ^u^%sgyC*E97#(IC4bT@!}eQN{48G zQx`gj9=lg>)*rK0v@VXs6}k;d)p%Jo+B6}*A9x;2U0v1fbkcZTonFF^+BV)HyGAdY zjzSB^>26j$7CHgc`**$`@&Ld)gs;@O1%eOo**6CvZU$KKcnjy{10doMbxIqDcW^*^ zbNyBObsG$&ZP9yi4p{|4ju~dG!tsR*Lyo;`W*a!O-W%5V9;fd&O*!S5;gO`OZ&A*qAMBpRtZ6l5gsk5WV_TvkLH^La{jqtj-IZ|s`x@0*VU7Xoz-T!xV zw7j_NS>I>i-B5w>Txx;OH#Hcoeg^i>S{u6_!|OAT6CJ#kSA3D}?G6=Fi#*kB?M;h5 z%RWNflM#LO2z%Ft3Z!|ZNsHz3;Z6 z<(hHv)}P9d3uO6ThH!b!(WJYhu-kEJ`jNOBcKdlxnaP#W<;A}EiUiZF>v9J7o^z9M zrStN~{`!Wf<`y}r){9%jOQg?MbW7Ld5wbn4);Gx)&3aOM+IWh^x17&uR#(~|Hi{rH2!YJyT!yiPF1Sn z&OOUKOJT*!d)CGI1M&aotH?6fJM5 z-a@#0H=E3?$ebR!%j2!JDEGfNQ<3j5zj*RUZoOw9wsb^b0n_MB?Mgo>?*$?2V zp0i)IjF1i9Ggr&ApIUOSknVzQ88)+T-Z0G=AG^6WRZkmQv@F-n##I{~?p21aI4{~& zn7SP=dwDe()-*VtFCXpk8oep@w5Mrny%Oa9h8#IPK1?@tygfd=6!La6**^M#;BK3Q z|AZs#Z{SBrJsZaD+e?JkbVb6lw|mWe!kq|JuAN4QqjiQN9(y* z--10-sdDTz!?|cZvwhw+h-_Wf`^=F6-`hKKtr$H%!Z$f~59KXDR0ttjoE4UPBr-D> z6Kh%*XPxKaZl_yr^GEAQ_u2OO%Jllddfzrzu{~P^M(Sc3hNCwP(l+sMus%=6B%?tH zVZOhdF%yF*yWwqg|J)+Pi83;o>Tq1q)KJql=I%K(a$F1ltbNCqY z@aNA0=(qr`0E*oId{ZO<)f`t4MKk!nRTUM~P5_V(ph^)5Hv4bOa|O~5KzR)Vj0*tJ zVaZtN`9OhZ*70XSPX%TJ1fCOmoJ@egq#XOVNEpR8Rb2ESIViut_(b+gl-DxZ&mIvv z6$8M8$q~PXjRQb0DN=3XR8aYCvj6f6Oftlbqr8TGq_U<2OftQIja#FqqV~f6V;vMg zBnyTWqyjL%2lJz+;QojF{3X9RUox7+IJi^g1$u$X3(SH7q2j9KWC9ztzt61W&}1s> zmsAwrUaMjjF&96xxPWYe(O*ZVqNkwCsiHtoWWt{9J{$UvQ2nm}0I)om`*pJW**FI# zdiBr80bv+(cUk_|_z~y+);m7tC)j`Rb$6y}Tj56W!kNV80ZZJtUq6a;WL447Kw-;0FvftiwAg1yNR^Njo|L>>#x zDElJn@#ANI<1yH(iJCi_ZATfKql+nW+gs=u*YQ*bF`qcDE%q9lBD0M`an)*l)61x|IAv;IO~GQk*UK z;4L_6mDtHvSr)x%0jpC;x$>rSaz3Y>Y3dg`G{e$ShxEqPL5pfoqXsLWq99CVRCNY< zo$#7*C#-`Rd0TeIQb>{80=qUdKs`n~b3!*Ykkv6zo0N!v0n+s|&CG}Lz?*WrhLrS5 zpUq-3A42VuV_pqbHP>Xtujht?$uYsQCjR*)keDovcA*s>Ge^H=)i{a^nH$voe-Q&evJm)oks0^ zWdrMW*g}j1)Ckg3?yNr-X&F)bX2+f}~`KMx6D#x~w|G~|bV z{FVF#P(Q0es?qyT##+=PoLEcCP^jL149WLl-VsA`4d61%%@3e`)XJ5>z8Go~jy@6c zPjoLlzH8@yDsKgOf-{jwcJ;4J<9&$N-}kM~le4!9k6bSO)DZe!7k7o#d3le|7wqwK z=E85kO3}MzUq1)3uIw}*Hhm6ef8SCsjf~Zay-8jODLjv7^-6pMOVezRo}clnU=(*K z-FciXZPCA7xiN&mQMY0Sh(caB3!o=fz(&k_i9LF?T%2F{G%J$zq?#8;AX`65RQb)> z=JBi34IKYCri2mH8waM}QTv}T7BLM?#M83{5&rqx) zK$#2Vxqu);dGNCMH}9L)b^FLUw+6+Z0B1u_F2%177NQO5PtJwLo-`;ir~(JTq}35H zW=&0^g<1k1S;o;$&`%A$O<20}t#v7VN%mjS99=qKC}iwV(c_K{|4`pQ7}e()b!$c* z3@JPY{Uq@r!CUZ3x`b#khgz3bHlVSFe7^|Rok3b#AiK*<4ta*|Jyw1JDHy8DaNu?+=i!;+vA(?QoLI09~4ROcdKv zy5`r;7qk%8=0RXDC7AqL30L#1ZSwikGwP$tzc zQ70|`PtPb(hQFd?@=Luk3Y;|qlU1kbW`phsP?o&`fAwWQlUlTUwL*fHa?h7? zE4d5?82_+{H#zWO+H|W_s9I2^qbUZeC^YmvD#bV3ys1#c9O?+`-!MS{$uP4v z#S;n5IusoMIGYel(1y7t=eCdNVkn_h%Og+Rdd9~7v@k**5ULFez4&&N8O6x35F`IqGlG)&kuP085#;Q8w{#LD1JJ7Uzq>ky zxUdx$(v$!m-e$}&@;VYKRjHo^Bzs8_s!4#Zj5@U*!ooS@cXRce;=N5En7Vl7$}G>n zuuFONN9*j#c9J{#8T^5Id^|K3bQ$Gx=Ae85f6E@3%4jbzL8km>a-l?k?1Xyd*hPlg z+dZ$88NbL|k#^0qa@`>b70XDINeQd?!E>(R+98QDOZ)Tw>P%0oMEBv4{b_qdqJCXX zTXllvhqP+3X4>KvU)%t^zq(6OfB1k?|^6I~gtWI<>x!Fl{tLKia zWO@6^f;7BZvxZwozpXZQe)w#R^V5fUorvk`^yIShI)ffv{=_k^O1(N=;a6j-yg#_T z4Y^EiExlJbw<0$6hsRWGeunp)4N+P7Y|X!nFqv2Gt3xAv8IiK9O1)Gca`v)-=Ir@B zDVN(lhB&S4DGkC)V=sfa&R>o8@+;W0=eH0YImmOn$^~f}d=%ori zQx$f24>e2Vt^$XLvNy?F>1yO&)!9yM6+{2>qdgc>_l01G!|fJnJrooDrJ~Ku9H*a}ZEs`rG)Rt9P>D7B0avF*o zOo~tFe4rd~CT|Wok0a&QESaX%!6qwV>k-tkPD~8h|Al^4rev-C@jC;PI<R^XcXe%gXk$I||QY*eK>z4^5g$4p2$cf!D{GOG;TmkGN6 zwc>NEt+MN2S7*Vgxz~YVfw)i7$Ieb`+ca)*XwlJKsy0l{bNA-ded+0QmNM9O~Q;QO{7t+NW#c^diCk(|!r`DmC>Yi7g5T!CG0+fYr|eJpOx#W+do z=!SkW8PmgG`)HgS14aT10_e(hauj-1%km0Fs0Z@WIx4Sqpb~8G_Fc@o`%8wtR76Gf z3?q>uDl#i{%Q&C+CHS{fw`f2Zv<^jG2jP-_euygqKI1`HU}fV$BgVmnr3&v_Vca2d zeI*eH1xaOqQ)j`>hC_jj!aKjO8ABsZNHpM)=XJ83GZ}JwisUdbQ>Z&S3+HUJDIVzX zfg^9Z^u&i-Vw;!)Yel#4m_%j1?o#oCKzAsnpZ!aa#{( z9xU<3+Cep=Z*#teuvIcbfKCarj{hK2_>@P7`Wb^?U@=_2mW1!sQSUVyaz0EUZyc;| zyOLNYKb|$ADZ0911cvC9XJdP%d*n}px`Ro%<;4rQiaMOfW_`DtE51x4!hp4)fbAd! zlTd~N8Lc+ih8$BT^qYs}nlZa*_wt<|vl!(G6Ea@L`KC+qGCNI<4fd}+cx&PICa93x z%DP@CO5D?17-wXFwx~g&QxuZ^Ph;sLnb<>M9_60-pFd9hKrsV^+cDp^tM=)t_QYq^~ODK8i7mja==*PRc?@2C{bN{h$x7UA|lc=VbOG70D<-zUz7Yd8l`QL&IWmb zMI}ca1OWYySe`L5$E~i*(^~13H?>=!=^lAN#T1Bt9G4XJb}CewI*cF|^q?jV1*ZUj zyt2$}IsqdSxg7c&ZbdDvg@!$dneqp}MND%YBvDW@$B#L|GU<5v`rTqPnZQssFrNk_ zAhq;!SDF94@);Jlh{Cm0%lMPK)%iU7d&|W4CbMnlTgIeXhUka*XkO_Se*tK0B)@I4*BB_F>&zd487WvjaHI4O@8KIJ)I%G&F&C61g;b9p8(6zoK>fp54d6D$*~TtWfWU+<&E z@tAjJv2EtWKJ1_uAFfFsSZzWmlJjLcMvo+h=d5lxEtKREbru|9ELDL}Om~RdjdZeE zZ`Emj`TCVW%#d`+@`wAsMl>2;wIJ(l${~uZIIN83am;y)^prn@nr&WxfC82FzurtW zA@7z&n%-!U>V~m7!x&c4c*09%3o=>zJdWvUH|mdM-WPh*wT^|B=tN2if`{%=*FItu%@9^M3 z20Xx?{tqeJmgfTZo}{Hq$RqQ)(PzPpV=Jd{<`{9Sr&fQra|-@gjO9(`?JbV>6*@dd z{HXA3$1WiMJ?#_biO=zC6D&_`!9lsKJ)e`JWQC4b6Yqh>AJ|MQVBv3i-`q;*F(I3! z_A0FChvafrnqXNs{({c+XSZ|rjn;OO7Y>Vt6AVnOg2!)(Tr1K3IixhHp`ox^=noaO zIPn1_6Rr%-f1|1m zB*$zjd&5j)AJ4R5 zN&O1yOlPEC6=Y7dGFUnvJ{3z$+GdBva6Rpuf_%U?(t-87M>DOHy?Y0Noa{)Sob<)< zFA);_CG`ks2g|RDEFKZ<*JLk z5hQ)k%<(Wf?lmp5siAcnpq9**6$#Ne4p52FT4s~3G$Xm;$eCiqpvt{9CvN$Qpo6hG zlRQkwT}pz{RRd;Sd5!pzrX!}(xeD=?zuuX<1tzOp- zU?Z&*F~LaU%I=`k#UPPs>c(xy{U_$?4w`K6Yb)N%C3vVcw?6nG3@SI)P|S?Q0G1(} zSuEP9adfk!4hgj&+sg*>n|JX3u+0JM=x*4GC92i&3c%^{*6D8FCA-}$TC-apC!HsE0&BZ5#BKPB8URz^Iv)0d7p`7PG& zU-~tyYa1N+h7JxeFvq2=O{lAR6Id1^!2}7yKWUX|(;$_+t(D?F7DM)0ZS#lF7U|yh zh$LJ7nXxh)IimoE2G`*>zCX{g>3?wit0*I>&5Y>2UOyTm=v5rtr#(Esn0^xa(dg*L z$?56TWeH4jcK`SVuFKYZ!IDiR31xAEqBJXFA14q#=+WSf>Hl>e8%(0}kF-VVhckWC z2kOzQHv0md#eWoh-ueUssggh?BGobgC_I&`_9$}@i~`t7uOB`GLPIQ&9U^28#CWa$ z4fo>9Cs5csb7T8Ne*2@tf59MEAm8p=>}4;1cPcW#-0b*U(=G;9(-|{CKeCNEBH*EC zn2^rQsO+KCt3$rIMWTU}C*9-D+dpo<#2r%gN~Yo1B#3g?ehHb@8Yel|qZ)Ete7`SV z|2{yK@FfAh`KIc?8{h9bZd#wVE3=SAH?9xaw(~F%%-p48!`d`Llg}SDJSJBAdFO?= z);34!N@dKDl5T~Ax~~Q|2JL`^0zaaINbfKE(Y5l?@rq=z!J>|u(Cd8D+22GH>i7YN z(lDK?+;jT-+Xhlco?@iDS`>^`yCid1VKV^Zyo>y$`W+awo32iH1}?t;P`DLNtDfu0 zpdqq4tW75XE|P$Kb>8ue3Yx!?=7AklfzUhIB#fPq*HtJqq?$vtnJ7cYJ zx_?sP4lO=me2}@OD$Gpv6ZS9jK=1i>;Ft0%0Cn8&tEOspu;Gh?@}dBIiwDw$#Xr;- z<+ZG@G15QnQr=gR)%&zQ@dxFd`7ZJa@jCn*`=HeffUqonlbsjlw?gmFc;PE1{pS$nBJe?SSdQTA~>`4LiE}u!Ir@1s1(-7&#YsK|4^=Lzp z0(TXQiL{v$+Pty|HU9l(m(sQ(ps<~5@*#mydX)57`PJ_P^EMb5Eb}W=V`IF!w5oI9 z#XCSO^P%w&UytRYy$VKUU+eGk`49J~4gPM^8Qk^1@rd4*?)-TFggpZPord=?-(B65 zTYH}lK(mRluF)yb`TULScAUaJ4J@?3D>(4su#PvV5?LN&zwi5S^$b`+2StsDd`7dm zx~Smd)>M2glPPlSjwefio1$_RBQk^k5q)RAdc>N>lAEhI()j{%c|oL%F+h4;dMk`u zbDpRM_7Ra+A)EDn6S%Hy>4KUHdm#Z~{2VK-oE9`Z77PAGj^%B)7=r`S?;D|<$cAW( zj}O~pn)Uw*&?b`Q@5B}Ze1i|%cNb-S)Y@4-2Zb_%L63taI|y~Ob1*<^6_WX#Vf{$j zpGM^bVsZ)?=-MQLV0pgOunN#|qsQ>fik3DQG{ku|d4?-qxM@8A66-=pfF@OlLAg zYv?# zg%o&m40M@Mnqjl)<}?!IoGr&5H#IK)%IJ@I@sUpzrdBQhX#g=a;f1qw|05+jr!zM? z`WZph-}3AEF-jJx?=h)!T=SU7wVVxoFCQjo<1c2iE4}mxs0?if>=QUV-t3P~y92bu z@zq01`8&)iIYSTyzt7d1mhfn*W7-DG25Z zyHxT|x1SIi7TgL$#TN5-v_5T+@2^4&M82pvg7t}8YbzK9V4M{;hW_J+ywn*sm8{}p z3Q>wqn0EA=bNCzcLaa?l-G1KG-x#a5ElX0=;q+>k9+y}L_o_-@VscqMB;D1~OokMP z|2E1^?tAV8$vvisl+bsX8l{c4HZ`m*;%GIvpo&^9zKsmJ2BRvIfsrZTpseuw%tuM_ zL(w&`x(#ys?b+goNyFELLV^@hFDHpv2zNWKM59rzf$ePQKYoWyxUhJ6C}*#ac&OBz`ubBqPX=# zfU?1Z2`DdAQuwXR&11Nl$G-e^eJ}x_kS^pdWNk7@Q_aM-xfxQC<#w-qs2;3QY_rWw};{>h!%HDj?ovHV;1gJ;*+4!4m9rSlVj5u}gFeYIg zj4$G*%3y&ascdoE>_=tTU0mPY(?3!Sz5#VJ_o^H7Mv~Gh8Tv(SdQX`Z6kth3j;qW* z#2!z0$MP;w;G8zD$JhW6Qa^A_69BeRwX1hIPQ>C2C0f=_DA;v4j;3IOoZXdF6Gy2{YMBRA;iawvIIU!|w#0e(jrCHm~{ zR;;mI=)(LjtbU*TLyymU8N4oH8X?N1bI#9!Y#9*{i(NePtr)>t(ePyL0gj}_bi2Q8 zQ7hpW^)?1g56tXDdHA|M4mZA10GVgJISSxbK1WEBJS9?DPIi4PHu6@iHaRkJW?gl% zF&#!pJJlZayY$?QMPsF0%`hk%KF-+0H~Bk7^a9}E^On2Oa{Po_ga)?*(8-5`@|;n& zr`GPRaOm@5Iyq?V32wu%Lv!ou;UJc-XuKf{G<0345`FU&RCL^evQ1Cay&Wl?>Vr}T zsGyN%C8jrhQxX%_)c^wkLRjqjUVH=%a3)4aId~6TXQA{{|0#lSNd73y{FM2Cv&c38 zFN$S?6#dLhbT~EqKF93-;)w<|m=&6ZTbm^8JxZ>Tkflzqs0zmtzWnRdIiFu!zfrJ( zAsf8ghp_u?7vm$e2T?86rR3Q8HZSZ#^qNgkyq~a=h|rqyWjZQLFcEY+CU}$T?qj&3 z;tYB}gicclHz&B(UK5%X3vCBg=D@XS+V~(2I^AWY=or}x^mkQ(I+1TQ^XR8?_{tm^ z>Xkr$ztM0AIGDMM2t_!0=G#8o>)?UsZVLg6P<*=1ODoY>$6aqO1O?^X8H=v`IzU!O0e6#A5(n5Pz2>Tkalaqs-nwhuo{1wMYC zs?@yzf6S1iiT`S=kK%2)ze-}%35faLOxS4Y;t9IP^v!I-O~o;zC@A~=`sR26m=3fK z8FpsVNoBBJ5c+GxzskY~;@X3}geJ)gQIPq*?A;p>H&FhJPi>^}kYy^Iue4DyW&k9L zTN%h=(@OIocUN{nCrc(3Z+RfkT{UN(@BOHLGlxF&bGVus&jZ3|c){sf$STu4jhXaF zBj`JL;JqN?&N|ng#o?jzqBN=PT4l;2COGxZ?b_JN5J)JE^}H8d=~^)41)#cP#VkH3 zwkRaogl(~!{PgL`SaxbA7F%299vn9UN;bc zC05av6XBc;G4|KZH-K8~)40oF{@HrtOPu(0)dT^vz2Kqyhg;WAfPWLZeRQ_^3v|J6 zO9Q&q4gfuZ@%fdow@`ie!K?up^`;P^Ex0F0{}GuUos9%;o1 zZLbojYi?IhAcm(?{Hm$xA;KySLV?FZLcmM=$lYN43ySVNUB9M#!9ZL%))I_x5Ia}5 z(pqk~pYH3C8D0=4{el)))AYMsXEBw(u5Rp-XH@@D+#ki&aQuy!E?=Tl;zr5?0m#VR z{+_<(NAG*~>!k@B*8Vq&-$j>JNg%KLmekoqnt4P;v!u+rg3xg&`2MfxKyeJRYqQ59 zaW{^>X_u}wHi`(1&UJeyy8)+4(=_a3Uvl|T(q16?RYFQ4&5Y>$($y<2c*3bu_7&{z zyIUaauI<&AZ#fct|Ljr+7jz{Aq!mz>m^~ZZDQ~aJX#Dvw-ANvu9kDDYE~EDx%as+e zB}@UrD4eXG|4LQ{Dqbq=Gx!54rQg>|L`YHxjhK=jUiJ76jX#x`lo{I+SEwaSt&R#x zWOjCY&h%;cJ(2f*{uHenVLOD$i`#oWR7)8&WvHS=-}u+D^*c_xCHG^+sV!%b@(gF+ zs(VL=;72EHHhGvB<73H2bos+9qPI~G2LCyF57-U+w%iT0#M&n2iDYm1B= zFybnSE7Br&@pdVn`tj5EZqF+(63?W}dM?CR4|#_-(-=dk~#3%BvhgI_Ku_%8_rRjvP`) zx@)m)^b@d;IG7Ms=l~{=@nkJywMkTiWA!xH-}ZBIx0m^+JCb2PRt@(94u( z1?_GsSGZqW=byCVwdh|3JSZ4s=%8@AGF=`R?du{wy;u>?>p*iMQgp3CtLWcKk2b%(%Ib1?dzu)4Pn$*n-vX1IF zLI?X{zZg+ZaB9hVvgVH9-@z`7c@uE7sLxx|C9iz!vrdMm1;_3>W+Ie^Eh@`^y&XyzyDKVel zFbiXIr*KzkR*;gih)NVREVv9t!5!>p0NCLh>?Sl;o|;T8Pt{Dn3C10U3&{$i{R99x zwHC#dfyt!o4^@1XQLC^muh!yDPrSX>8VGrr8}ia_L+=!ayHt_J zNc5uRcet2KK{{}z|CH&+l|6dEd-cm>6vMA8UF(Pt>p9#)u5i-wpY$#&s!A zHXOd%bu3vixHoC$vFG-oqq)Pqv3)Alz32HHeqKmar6ua}6~OYdp-(fdjeNMx(Ka05 zja>FL-QD%ZDsdCg4#e<7rI6NtQ4PZor_`A=8U1S{y2xjUG5KS70fl!2K^NPL%^)>T zpg~#6sFum~2QTI2y-RLm z%%F)LkAUtjkskYt|8)R$yd$2iTK8~h!}Y)5A<~Gg*mj1wG*gDhLB6KJ-u9xbH*u&D z^TJh4u!nZJI*&~dnT7c6a;jpe%jPMd-)-0~V^vpD14>Ka#6=T<_C8$UE8w;=`xwcx zxp(y+=WtVp@{?q~l|4=GFE>PbYUoiKYvRY%RCBgvv*~-u&TWU5m6Hx8U#8VQ;vCr3 zD;y_15ys~ZSJV-`d>n6fi3ET#7rs>;l&=uT+LeyYU(-j?8zrpMnhd31Cu^)RK}}Y);$#N&Bm}He_?L zH7O^v*}jX>fya;P2g1Q42m2I6wj?-tBA!ab&`DVGIaH$LLaVoYudl!9J`v!(8tQv1 zR~SW7;Im*Se(qSL$bMLB6@$uMg2L*c#B51KG?tAj3PEj6gY0QEC68qLoOT9?gV0RJ zRFhWiabx2BW=@J$wLQ%S^gww7XdyEBAa-WVWU*QT7J@A&%ja7_Jr0w#)s0KG%csmW zGO~ZnQm8V&Wts^XG(A)_$SQ#XLvL*JE4ol%8FE@*JjM#5OJa#wU+vl`S2FamU2pH} zt9ooS5{0~i167oi_qi5T z&OR*MUyj&w-LFgSmoCxkRa>Wz`VF;wU&y_Hjh?r>UFBJySKJ;p;lD!17st1%`*cDk zdn)RHYUvoqb7^xbc(!&C+BG*YI+@}xCgl&5>1sqcXRXn2!FUz@g6mG#i44`7#5bi@ z-cZ<_NQhN`Jf3?WDA$m!;*-xgS4}Jzk=2>539xam{Gj#jk zp9obtV_kD(P;p;XBI!7;sOW!gAarn@+k4NWzFDdtpU4Jnp89PvX@V4h#g-xjvTQUP zq*^Ope8kZgxuFl?tVdX(8>XqFGlulKn4zpRI;`?z+>&;vt;1-+{ASEiS`uztLhLLm z$Px@Lx+cBF&@GP3Oc6=gC%Ox5dNu+9T=|&vQ|Oa)V*Bpp-SHnUC9AGc(~yz^6ays* z=J?Ak=0?85SZMWk$h)bs>9?s6=z%6|bp85jrC<2btQ6@6#o+@md;>xh=3z=0$|Lrz z|NK{7ntZuhnv!mg{Ppal3`D^!k2Q0Ap4s%LL`P@WY`b4$&MLxN26^k(f7daEAJ+&F z4wQ?%!`k$J+|zZos_O^Kf>3q0c8s#-j65?Q0?bQGG7a3ut5h86q5S2_c{k~NhZ=*1 zHUq&8pMGhb2yeS2*O>GhyYzGHy6|p5Lc} z{hrv{Am3S&AQ%FfGfwb3D&n}`>3=c)ayc?cxmlnNn~auNz;0Xu>VHs29R01K3`79A zcsE0Gs6o%Z3y`<7`n|f6WN@j1KXx00++5s!)z@!P_~Od$ms6=Bv4~>I*%x|iwL#>( z;vW^<(3h9ahwfEu{%f4?0H`jMRT4j1U787~ux2O7IJ4uVJ@!v;FU zxZ2!U03g3~h|+%=b|j_f}DPT?k5q;qTgpok79LRFMsS0rLdoLf%ll z;D*B@x2wGIs_wlCkdAxC!mHx^Q`rQMQO(oL)6cuwtWH*IW5zFj6Y!^2F1RbS;s#@a zftcLyM?~>|h=EIcQ>G_dM*v{JJJrpu0a*nXhxFnJwXf@^&2M4v?yN`Lp+?sImsSt2 zzSNvjd(%4lD=ikCr)j>CM7z1|pJ)9D4Fvh(=(O_EdF9Ium*2i~JiNya>tstXij?y6 zWzQJpicWG@b#pOIlC_Dr>W}J=M8QGFyi}3?H&$8@aB;ZQFEZq$u{zlWmbHu*MW~Z< zBX;hGUbDIkfqE@@jotS7=;bVgQWl4fbAtAkEwL|}FUVR9c0U6?D0tL~09156JtSgJ z;rkE2$>Z4Bn_EH0`N}u7mz5y`bab8nPAa_tUvMm$JQeGdLu5f~AYs9@2eii-xHN}u zFd+Wyaa#UNA@=JY16Qvjt9TjKHX6&==*Z`ylZ?*K_eTCzE@DaNU9CjWbT%3Rm`Sff z2#6qR_2()oRuN312*{QfTLc22|6NQRGz8w$5`g(%k@or(sqJXX5*fxEY{*W`j(%sb z365zZj&YdW=Iv5=O6}@lPC0!+1tv=SBl4X=J`DH*HKtj}_m3{l3oGeM9-evCRf9z% z?~!*=ONP^fvZV)XX2DvvEeE{~Lims4(4qvg3m{=m2O`T>t(CHh`TE4loacr>Jkiq6 zt}aEm-!v3wO_QQw|4n57qv`A*AS3tfl-|F}26k+lI_V6M8CprV z^uIU7elopQjkuFQ@G=i(rU;P%6O$jB)TM+bjk9??yL8$5(`z1=uv4GsH*AP?& z^j|C39VyaoSrR99-_@*r`=Uz>tF~PYm_Ad`Z6-?Lt#}p4&=Qrm$&Kw20Kkf((NZ6{ zBWA6Xy&3#cq}x&8CBlE8XdJtWR`SlH{q3O5i=h&In+J&{w=xFwo^GCD> zX1S9s6&H?HHj+G?PaL?%u$+0%#hE2oPeet}=hXnDZM_z1tEwHoOsfw{k1&YNi1oG8 z?3>4Rqw9r!=?BJcSyTN1lPp7uo1AkC+BJTAv-CCC?(x(vbl&G7G}5o6GJ;2n(U^_7 zx&Ogn4+zEp)^jSYpUm_Yf&esojnQvz0LJpn$(oL7wLw{Z(OHq`;yT9F}tge)1xWH`9-vKy>ktR%0?YF7~Ikd{IZmjC@y z3C0>ytvNT0ONP<-xU{x0HNQ&)_Id0L14*1HD9qTcOgo464~=k{x#zlV5rruV`S6j( zlTw^7#y0M+VK4%eWKZUz^u?AVFPwMvhSkOx9*{%aMa-R z4|R>kbV7Ck6UVdEHy-q}{?f<^*E#F%?^g=O$X($t?fby0_u7q|WUE-c*_7ni3VKFzj%KG#@bmsdbY4$(dQ zF8(tbm(gpwlJrw!0+IS|3>M$Nxr@Gpdf%){8I4oB^q^!vdZ|i-DaB|oi!T8?&Bpcf zKW=g0E~{lI9F`Z8uP~zQwz@&%)GDL;NEHWSE5fKrc zI6m+_`MONl*U+p#<=R2xw4T?gpFruj!)IRs<2(evV+xs*X!!I-d=zGMurUvAm%@WB z<=M8avfXE=-0VWsVB}hdGb_DWS&zJlavSGH(iagCYcnBVrT3|4nCC?@(ONPk|4^Pf ze_YT#osGkCZ8o~zXsxGwpOtdVmY_kJkVtY^xWt+S8g|(wf7#sV^ASt*_I;uk zn=H(Hg+ud9fq=31ynMT_N z)KOm>6>F7e0rsNeHMwPlKz(ey&6_?e*WZPYv@*JuuetXGO=O0E&WX!2D6cm3V=bC_ z6!YHmOfJmdsD9b$Y~WlA+op24HtjR=jS%+an4bD<2~#|U@dOfpIkST?U1ESus4=)! zA7c10Y5!u<6A--F>i{d^Ltr}x{=}=PVjj5EF%c)p5VT9MUs1WZDrA2?3kTreYqTbOyF4$+Qp~(Ir!h$D3xM z4#l^}cBTCBc|6Z*AJ(mAnwWa=#fi-^hcYrTPyVgT!JA($_0=VKW_-dlcKc}-lr1n> zJfRh6woYDLR5Isdf&+`_RKE(;C+|?}Ck}4=ltxE@d?{Zcl;` zfD_fU0bkJJ;G=)O()fJW)@n*tu46~Ya3UmKK64a{)WIY0bT>+ z=(#IE(&^5vHt87BD4HGczNdG+s`baRy98?|f4$fdN5_y`6_Q#t?4SiSy69d_uH04` z?lhL4nupf2s^vXWS^g1&?m=q;bG zORw6T$R+h*=>}lPD&WWoO89HL9TbvVJBCGhPdt3<*kK$1S9Jkd;R6f|&+qdC-6fkJ zo^AtGE`8gv}^N52AI4*oRx zC(&AgQ@Zk(0utZU9zg&lr~rf@fvo||oY}s$d&e&qM9r4H1mcp$>vh#mImM@JKQ`OO z&L53R;<*5hF8UFbqzsu%exiv;E(180H#T;WiF23^Z)CZR$I zMo(}D*@PJ0-m7P`lv>Mp|I!19nf_lyZj>vYMSox7x#(~_8E=O6yiS{}RT15{#LC)| z5kP#TU+yyA4fuIroPny4;XHTNB!Na3d*EY`2r(dmV+0G!8yHJNrKYur`V}(rNlUCU)R&b=y<2j;Nicq0KfT2Q#3V3nP z&?PT9EsF@M1xges3KS?%qDy_jMVE;GVoL3liUNhw!^{(EA zB6BsN&sHL$H{A<{3R0NE3@|Xm3^4@`9k<_>6Q04=5`$w(8i7zKP@xI}g$fiYw=HHv z(dWDUkY%DGyzCBe+nd&3qC&P*w2R91MR{Ivsj}xZ2utf=6gLl6AYH$1B)zH&04m7& zytP$>@p;nHRY^x@S2#cjv5Ewm8zww*x77jagcgt>Ik5j`T2mu+6z^OX1 zKr0%D_+duCDtC?pi>c3*OSrD_VaZ3a{(jdDkfti+C@SSXm0)Rpz1ei9LEc0`Tm60{($usAIS|EOQp7 z?}i5>?`f94{T?%8fp*B^g#_RR5as%iXo{bqO9AxDpES3W!|uxGriOtCML%)M*KHX3 zcDHxU6??&4(*xcrONj3?ePocA_VYP|%Hg16XrCzhKtc<@Z5bm9WCC-*zkuM8gs#N& z>n!4_f9pUz&>h8cXcC;p0EJr22urFVA>siD3L-*Y2(Gq%0oiX@DRkNJUHcj^o4`~b z^@$|rZ2bVGpBB){6Xj=F9K1_M?v0fs|3p;H4owZI^1-7mvFBnl;!OoA3hhupJ*(x{Zg(_GD@GKk`Br zB7#lzAh}qq{~+90FdldtmG`-0oiLzttFPYh(~5mBTzt{p+r=sX6TouB)?P=V~O?gVZcjTcbvf_F&D(+yBU9Xp>x=fJWRjbe%xBXRVAqYZAB!nReBN)apjA01I1PI0i2oNI}#t?)d2(e}$e{Qk~!X0j^fI5_y-}dK^J+-pIz=MZ$S>Jl4FzrlG5S7XSUuYZwkKcGR9ZsyYJ({h$t~CH2yo9bt+Y1_nl7(j* zFn(1wmWPwJPAk+UV86^@O@Mc zj$M}0!wFcRhlc(eoi!HJ%CDQ)@q;=$B#;0}`YRrx*h5{buei)?uF37mz6OO0!-i&k zy=P7lF0Ky4?G~1w_(i8~6mMBQ%Ndu2ZI zdYlcsT1zS&3fd0ZTZy$S<_yFA6>bh2a|hB|0OsrrYy+0ZJr((8 z*a1b--@#_jr)i^QnHr%~=yEsU1pPKo69n$2^U|V}$2aiG%r`r%bfA^GXRahY=^=EC z+JAaza3{S_C|Nt(97i_i$jsp;;_IP>Q_`>&{A17$cuh40B!OCPmq>ZKm;ff}77Ps} zTg#sfj&4)@itp9WRiXLj*6VpTcQ%rkP!NDsy7xf=1DhvoNF2n3Y0!`|9=Y}2l;%e> zpvuKaha%0k_P=^``9N(AccY4s1B-F>%lrNNEnoH(1yv?(cI|v193i;8*Hyc($N@CF z9|is9C$TU}PXV*dE|*uI{TzLH>M1>&rE8n(#{$lQjM8u!^{ZpuEj1j@o9Os+RW{2# z?rYpaf%&HmBEqLNGYngm@I2VpU~20zgyERFZEP}|qpcsU)tjx~Q{Ot>LHxQeb!<2N zu6gz0EtKXuz+&3Q#r%KQn;nFegfgD0QTzkl%4@^BV-dUuA8iWFWrdPJOCAsf04TrN zK0W~Rd1}B7fe_Ue+Xpda!f>l#bBLiX1wz*EMh01zjpTQlK!hL!)aw%73ow8;cf#d& zzTBG@6TZTQV(bp(nHU3?`P{GwK^sVfY`XW5V-UtzyG8<+eCmwV`bo+u+pP7PW49p) z0T?tt2d+c}Ri-U!+b+r9lFHmi+@>sKa^{rs&hK9C|MU(N&>Xq_;gAa#D9R2-_6R+g zwYwMgbOw%*c}=|0q&wl|i9-5WZM=XA8iqYh6ZCG%9`sohD;K=-1q*=)IZ<}hjtlnJ zNjhV|0uq9@+7%jmvy3@}ocHEvM0jRQKzcHaAYrD@LSri~*Hv6r)Ga_`v-5jX1srPD zS9Va?009l=qBbscNSbUOd$#@;e$5s*6f#*z_dPV@VzAH~oC2t4vy|6cVm>_KO#wym+WXqcU%_O?XB$$*b(x-Ngk435eD`GLV~oCV4n<*_b=Kg+-%jo9EWLf4ZN|xB z@~8h0&{4Krq5^%k0k1N?Isr)%b8KS$w14wS9e;UPPWAsOIH>DB`>8(v@*iLbFv$nz zr%gygORJIJHT5ZY-Y8|i0Acc@0PNfUCevn6O1^-hZ-NG;r|e_OYht=nj7dNc z48-3ifC`rrXWSz(_EBrlU}yBqehkae#p33+CkO9F(P41ck$zKvz67{QA00cE+R_VA4!|QIMeVYE|V$suXpbHyF}N}8vCw`{RTNCzlkLVil=kj)%9}-N>0uS0m4}%3$&5~aTP8K zAbJ>H<=qd?Wsz<7(K5hBzrLF10MGT|6&)DzKr2Y0cRkSmfGAauM^u^j>NufYU;`Sr z?W+S(F|28DI=$=T=+O7NZYqJw#+juv5aQhKhRIDyN4(sTA)bRj&Bc6o*4!sFG{gX) z2Ti&p1HVI^&QP#-nyD1_Zw~sM9nMgeQA=ZMdIFy94s!VTt6VmGI-fQ|v%}>~n~yY3RC! zX^cKJ%sa9)UgrQ*gaCx(KLGn$+lqfxr}jGW03ZPe+c(EMZCrD+H{e#+t3^Yh-ejWm zG8-@K{xAp-z8K%fuSRJvj^DgHtzHWw$C$8n8$BE{!N!j6j|E}o zyq7l+E|O=Ul@?T<;At5EJYFpAO}#?AM{{)&*s@|E3{QXFxl9YUT~?1JdFkppAc0oI zir64mL;&u961sEJNeC{J$|4W}w#j9GIV}%Ih!?*W4Uz<6G2T%mD(61j5?9##7lre$ zqu=c~nTodo2sh~^V7DZbWnf7H-2Z*_iZ^}h1?S*ycNfd9f+6cYP2ulb8}WhH%!glD zIBtmFc{cMP2v*#79?y#q0#G7IT*lYGy*EBre~%xtAR{t_mJ}TgMxN%_yU_5L6I2l@`Gs0y|fy9m&!J=?=)zUS|NpQ^R(Z5 zhHX;+KgXuLmH-4R0y>xv;1m_kF7ukZPg^ew?6FxP!^+Mr1>ZQh4*rv4Tlcp0jH1u* z{3i=rl+%y9zmw}xrJVzVRRCTV1d>O^gpedK!2t*eLI|i#yv~Jho*_}+pf*U7De|5g zunU&-?9V7oTB7kvbNaInVuN`c@RZ>1sA&VyT4wwHHEz8)$nDGKswjK^r<3M^p-g|s ztHi2~o6k}(t7(Mw_Dw;0>-dURnZK1^h#&;G@$5ow_*iM&M3=v{eQsl8jSaS=sl1lq z+IX~wFDvMh6#q#vzQ{SryW}!A*`LNY8Ay55KTd>@Da-tnh3nS=c>BitecYQ;NoliE zxQiD0TAqxN-TYnCF1=4v;g#lso6gHQtWx-H04M`Dv(&xVx_JrT?vhgpm#?Gn0ICkc ziQk)fbZ2wvsrYZz6BiI7knPfLj|=kAy!Savuee>`A^o}8zjC3T0u|>Gm;i}ycMCx{ z5)rNnJ|n9Ydw`SfYrh`X5dowpRNVVp)s~-7sLJyxyG#Eo`CHNNCggb)(yZ3J7mD)` zd+p?>=7i-W{dX~57pt}bd6jGR!(hSdfMluxdn)~K5&2ubV*h@JKyQy=2Ki2S3GgSn z1%5>d&~bF-c<2n_qPk8Ozn4m(E}?2v!%4ZdO@P!O1}6U9BuIQUKIwR-yc zc3s16A9UK+l2Pra@1tU%c3Pd#tj|~oKk6R_755q2-!*%^oSv*@_<-vB6HFxRO(T@k z=4tcK8^8n=)eZ~@?noB6dB5h*u<4hikf5HBwaHa{jsjc2pt~!lUiqECQi7d<{iya? zqDr!I2na$frIIS+oZ~ipnBh0U*!*Gy9}KSZ2Hb>__+WPS7dPBrdTQHxNiK$I<3Hd@ zE?|-sMI@LKLXJLmTBejq0@GsYEy*QoZ{l6g8Rp~I+aKh4g1`P$2-U_8AWe;)4vHWF5l2>q)>8r zW_bBR?jtZ^zUMzU(m!drGU%_}6Kscm-;mjPGtHkX_pwfWOF`~2?l1b{BMIo(`&`=S z%&^h{_jYhF;Wo*^Q)omgw9j0F)&Bk0_Xg_LSM+J5R*5#wpj}MvF09j>-J2uwd`XS@ z8>ZeeP#u#43uZThnj;>*I?NlLg$sQY6Um8HL+G&A=Y|wFgw<#WpnCTXF*6M8IEj~C z#KotyM`Z7LZ@#OB-sJzCL_6-Wr!UM!YGKteIr@vj2ghHb$g_`_HG5f(oPzXo7B+Ks z1}S`X9#VXtDvKh_2M6VJ6s;LEEpFM#IU1tR8AKrn2t=Q^;vPq-M#uWzCCtQTUVoY$ z9hx&wa=O)DH#8=&GZ_4g<`W{}Prt!y+wG|Wwf^fFO$Mkq&{jl{AlvoT@z167CS{Dk z&jE759M8eE>@sH5N;B1IzNMvgzphSORds!Fv83!{vqkNCEup5P5D|BFR>v-P?!DsK zgtwZJAQ8d6^e${|t(GV|L${DWwR?sp zO_k~kNW=ZB6T8!RA#ZqkM9mcvJIxLQjjqPc>M_mXFUR(D0{D_n)9(k@P7du?K1>Jl ztQ{)OySGJek9h0-FZhTI^?S9h%{xlwFQIz}eI19rs{mbyd|#(Zkdkngk^@HT#?%3h zD=&6igBq9m11P@D!~hAesPXKLEc7T^-}fnQ90RquUNn}aHq8T}ptfVmsE;c@!>W?KF)x>9SAb&0)| zLmQuhiG&8Kmc~W~$;FNLzs%-!pxMpLZg%m}xV`9g0*S70um!X+l)Edez5p9SCxcP} zeQ8a<(Jb30MvaH4uM70=+%H|dJ17-sG*V=>kP5M38lPVe)V{)5t*nu`@5;4becmK3 z5Mcjs7kG;;#)JIn5GLBxBqWWn0yDx$&j}rmBz1A>xqzC;Hu`P)XH0zub1^5mrVo?g z!)&Z@U4KddLuepenxG~3@3*9vR6iLhYn?usp}jqDM39t70{yiIBuNR(Neg57z+|d= z+GNO*6$nWS->RC(^RQa5-a24*jv`1@dxZF+vb{=06othW<-uv%UU6~354Hq8Lx2j2 zDp7Inf4~%9II_?{eL1K`zij{!fDO7f5#P;qWY4}L3d3x^YJ@@p0nomebwY{q>guUS;?T)&LNLrz(R<*zdc6Nl)eM^=M)qcpQ|Qvj^l3A8quN(gXHzQ5dn@ zK~Tkjn@D9WHPW^oJ?wKK+cxp3!;S-V?W`hx9vRN-wBgie)8=@WA$Rx^`^qkLE+&$! z$1Rw#>=aZtEh>oz&?k6S&F8kUV0h-%NoAPa`FfY1*N?&RDgmZ_`Prj0+LLMmycs!` zQ>mojP%@~?UKz%Kon^1tbiCE|U#7PDqF!TSw|)BjTE3b-f}Bz|Lj@ZXF;2CFN?nDg zK*N3E?(9bIUlB2|O)SCZxNJ{w^X}Q-TmZM%AU>0WaUlwrKtcdRxdH+)Y3_Rt7>!QH z#>=!AoFuIyE3QZ!x2TSo9w&ZO$r^JV)p=$1|?J7WQD%>4mHbu5t@1v?kdAh^Hk>G7TW zUq~?gSROg*>YgAoa1QCOwasp9&i63C_uTV~CEU95MRhFh4#0c^nJMb7Z1I&1KuuI{ z7?+Shob`FpaX>w~W!Kv8V^;qOblX&H!^~oh%DfZK3e;bZhp?W$zS6Qw^y?qu_vxo1 zetC*uA@Sh1fHCE5nhlq}6qTs(mn|K7$4{USGCNwuLB)7IST=jQS0;P{5uf-2$sO{p z)$G+WFZnI1pUS)u3Umb!_jH_|)694sureN0I}tEOnG2RbU2#UQD@YtbQw|XN=nF0* zS?queK5S4r77J%_vKA2ZBme+eXrR#0#qiPS79`=X@6P&CQD~ad#(7O#<35j6YKNeMhRP7qxHg>L{L+i7&nygY}r&H@} zdEIUB%&Lx=*9bn``RTjkWYNKGXFWSxujok>qyT#tFetmRBP)rNf#6YG(2^ayvfug8 zBOUu0-w+^Px}K@{H(FULj5A6xi1djhnohw6tVs*8al3nec#jRvju)J%7pgpkI|kVY_hr9C?D!+V`vQy8f=O_ zxw( zjXQG;9t_6jwS9@8R?)->zK{p8?|c|GnCUp_caMUJjLMy2{%`GsMV{M~1w#JE(^rGdoChcw-xksu#vlwmr*iSyv^gt8jh_P<#8+H zrGMF7gzOW7>AF@z^4+Ym=7MH(zNU)G>JZ>S<(X6M^o(JEX^D5Fz5ao0`GNg6y7O~; z())I9g9>6>`??#=m%RuT{hJ)Rj>RDcQ>o&33kd1 zPbXp?DXhXtWWo!pgMstmSEt4D)W_?@JOw`R(w*RSHZ$nxK+VEe*bCU@STz z?cff2=Z_G|o+XpB&WcR;ZZ~SfBSU9&lJn&Ux6@4ru%+~kk=1qlm5dHv6v?cod$y(D z=s?UFzBP01=I_9~pDRB9T4ct|lvv>$ucMrI9b-`!T1|lJH7D~cJgg-Ey1sKww6aQJ z4shogl|nr%44l7FtFnoB6t+8kbKoDYag~353i7gh)kx2M!p*K143NmmbbM4$48L23 zDgE+`E2c;jlZ*HKl@-{icdj-xtdIHVgajT`z!iLS?7v8}-zSak#0K3@Diheb{f;j` z&t-I5!+X@p=>8M}jHyDSP=E}a%q1qe@5mh7hKVZN_}xVx>-ZNPP5;%b4>P2COs@vk zi<IAaFhBqyHw$~fpQE z19|h20x-pwp|uDE2uN>J-A|G}Z?hk}_5FL=OITH6>|%?3zsWQRQVN#_;u&`Q>OvA( zz`?h46U|6T3AcihP8(MYZa7H^wvX9rl4+)A7~Q;iZRp+M(n^C+IL=+(Cn2tYkdh1G zJK?e@xn^w|fguQLWY3vmrAx%RaCYoJQ)v!h2@TNg(}>)yZ*z^1(FLzV4;{|64>9@b zH>tpj+rL%9G0Dn@VUG9L?--pAUy<>#ak}_CoI*(=f79$FiCg7%8(Fe$1O<*T1bN+< zXp#XZn-8i?Nh$92uV53M&hC^I;6j3Ijfm{ds5-WJFof%H?G@Lba5;^cjbCr~(v_RL zU*CB`087=30vALFihF*3|KoM=)MzNo0-?KiN&Cx_m1maujz zlZWF{z!c_jUVP7mmb=!X|L(Pd(^$Fq_dF(3eyRUM#X<(zc&pEfO(7<1UPd@tHylZ| zy!ZKhnv5>j{v419Ijji=xqtv$n=>RN1-$|SJS)#4NEd5^c9;Yv&;=QKKr3#|_A#vh zlTI56Aq<3sT&CG1lA?!GG#6XW^OgUcG+SF%yEk_S@C4?$rp->=aluDgTpu3y7z=bx zVn?O5V?FzpKu8yrrD&CO2o*wudQ~s{OKet2eTI#-n1thgKg=?j&tELmbG~BnO;DIq zWB>vR0?I!JU3mZkiwjimGI4m!3gZn+Z*y+crImZhb=9|-mD#&2MHr*eu_)DRd|-qi zCI?IN(vSjV4cH? z)p;Z*nlg@d)@tihznCw>YW`2Va&O(+N6GIu7NmM+w>$&S-q-G=wFs)Z#w5V*0E5p^ zR{PlMM6&vd?s6Yz*BD$4$_(};kP8`aq?ojyOqDiwhI|#9C<3&~Sj{;dM83+$DR(KYg#vA-50C zI9som=PTU<800boJ_r@D2thiR;AJkDYRl?g%`-jR7FLm_c{M^5H?(?|$&&~8_`Fx`usLLa;^j5yM zD_g?%ni^zUYG;;o6wFFD4OPFrVQ&m^i1_K z(oGFh`g5pFwv>FmC1d9-f5S)ij0tVppBw9d#B@sykArO!l zMHvDK0XgrF++Q=z^EWNc)H$53&3DZCh*7AV>qyps4P~i6|-sr3IuUh4*N*ge3()lBkC4DGShLVy?AD?WnUG(3r7K$Yj`o zi&%xIrI595*fEs6Y)Il*BP5%&RJ9c$l}J^%Uzp-G9L&Bhe+1ro4Hb>zgVT1_+AGEiPP#{rOA8=Z>8hV5+)`@&>%lEpqIUJTZ`s=sm&3x(2 zoc-&K8^}LbD+wiH5<;j*JpGz|`gO2z!v?dBb&JvEd(FJ1T&sV_+Knn{ET3b%KGjed)4{mQ#Emf3a-A;>a^2KY?&;OZ7wj!xP&bbce?W*? zTT24(p;h!L^Ud%!R=|8VKvKQ0cB8mj3>d#VCvZH*j$naKS!Z_n{}-tEc8rv2}v(e!1Lh3`Lr)XbmK zX6?mT`2gQJwQnvyOZwZ$i%Q*YHOu8k&uiR5Eov-j*ucd6vHWy>nf}4XC)RlHop*e@hrWY$jDcNg$nBH}@?PzbjAX&`F9Q@d`!kHxPvc3(`saboMP*PrIi_?_S{ zu(;1&&Zoy0b~<+viVtO&%Kp7P-Q5i(5{G#Ob@w@Cwk=6li6%k-LKp3sD&u3^6O*4N zr#HG$ztqf*tHm$41Qf2Pj*9DVMv(a}rMoayKHf>dM=?dRq;2$I)1C{dc>n+>G?E3s z*H9^!?VVgKJg+qrq@P~KQwxtN!L80Vg?;MHIDcV+{C+5%j#e|rfPvG%y42#5OB2bv z;~Rp_*$d)G75)o{!E34w6eEC>y~34nyot28c~cgE;W@2BM>UR|NE zfdK$??fE#})?;t@-{IkgYV2}5aryPVjd|^wMc(myyK#(G7V4pn%lPc2!HRzT*kYx^ zoYblyUwQv~_pV#Z8T~{^S(!N5T-jlnNQDS87awiHiW9kDwC<_CF!JQ)!;tM&pWgdz zT3vuvn`{XHP^jE*&}49J>$T3;+gFa)dzUSa2kBCoE?cJB@VW=*8XOG)?Yo|b7l+x6 zFENXuU%LZSovvW#FCn>O`xOu{w+=gx<&osdj9#;sjP}i*e>H6Hy>FZr-cRiY3R&8nVRAkF7IU260h*{+g|oQrlzKFAYq~J5qTsY|;_? zlX$1?t)DD4B6^Yq_y?;mJ{zC8f#&(Y7i}eDWoNg*B!PEQ66{fD0Z4_a;4qd+3pQ0n z{l4%zKm`ip?$yO&aymPH#1JUwjQujnMdw0XJmFUMB!O(wK)i`1F{GFXCx}Wk%^)Rl zvx)pFa4&$KpF6#Hj!D@;d$mAq0AnKA{Eg-rc_Y2v`=88Gr)m&F4` zUD@1ke0w9=z&}mEX(`a6Krmw{u=T*Nz{~OS^5S_t86EZXYSW>`?C-UMZ$t(&Yj=*^ z57)`v=I~k2rgpaoFeJ8&b-+*GC9sL1kgDe-nmaV*8SCk+z}t0Iw!Zk8CGyWX-ZG4P z$yUMQH}zRrV0~)c>wYZG#DQ~|_|__S0En_eN`gtLQ1=-W&W)X}`1oRDbl%ba^iM_F z3{iA(-<#FhT;hw{y(#{-@-oX|NdcrM{JlCf{ow{kmrYt4M?(ApvQo{mUnM1dgJ` ze^H^Uv2m-INKEFV&p*U^B9T=9@x2J52D zv963Boa3LNV$UC4)dTF^mY-7a1SzR+VxPF|1 zf?4ewnyt^;bP-PG5s|5Nj3e)RIb;Mt+vU|TTRcQ~c=z8n^8|QHSaJ|%X8X=%y?Y(K ziaM4VXOwM}RB(4Cf7>u--=7AP{G=cYD@V|JEdhO#Qab`kQu^CvTXN1vb=> zgvlhjl}MWoY%q9PcB)P`de6)y1+sZ63VlIfQE%x?NsJ*HgPjHNqL(7 z9%HQRJXW`U={@=f*(rkZ-uBSSUkxVUVtf*5P;#I;M;DrVt9^w z7*@$mhfvnVIPe8c03Y_X_E)%XF1&rG7Cnp2w&g2#F7m8%y?gu^&;Tc1ceydb0hW5o zKQpGJ;9h4qfA{%t)wGwa9#?Ix_SlnLpV9IsH-+qxZINIv0<6RiFc1pl+ zARBi&Wo5Hq6yD|dJ#M|MMhpp^)fi+e9f*;{Pe^V&iC?qoeKM-?{4u}Mw<&YD#cV&| zGv9PjZ?gbtU_#8&TGyG}*>Swc2#HcuUPANibZ^OB>CQbOd{`8g{NErCOx2h<`~IA7 zgFB`Kyrz&3sfdsyAD#Bc%H{x)REKcmP-(vt2-eo_L#oONPR5V`ZH@HY?AvTT4=(}DE_0E*V# zoT@$dQMD^F@1b$SNiwzWBY4YJyO%`Z{uI-Onr|qCAvvvvzz~Sa*v<0>d^c0&*APF! zNW=VgFZGIoNp{4N(WI7`NdnlFIh~9HM#Pe=z?{UAZKgHM1qIZIVYQ4Oqp|PM=^pB0 zNL~-WckmheJ>V)`x-(Q}+spKGc|hl>Yw+_P*C4>rDV4$Z$+SUa_qmcy--_lS2tY)R zY!3cLOV4Fjpamski_P;LUf>kbBqSx0#Wmc+g@Tyk1=D?W##JlYU)$qxH@3`et%xnFcu#sI7uTk zz=V=8EHQdw0h>gE?FVsxY5_^@_}>@zl~sD3&ez!SfKWb6Lz3nI0s7(8taE**c;DXZ z(HsElz<-&foa8%@K{%#tb1dWiTRZFa6g-s;_WBwAw#Ra{c1Nkd<7kTmzTKvaU`eYYZ?o-R-8@FjQz{)c3(**=f9PqThj1^lussKk7#|f z;b~B=7b@l52q-!V1CAytbyEZ-%t;9hAtZMxTsxcBuWv2=ZUim!)b3_=_=elIwBGR< zRgz1kwqT@WK>i<0w@Z33bxL@D6+2hO-TvC-fRb#<1je75=Pj-CTj^ZWnIK4)8vo1oru-pZUy*K)6M^9BpH)RGZnw}bv~g@eXYYx)=o z{K``-B*`%Q9m+{4&sO(%l1&7VDy^4V@FaxgiR4xCFv&5Uhh0X%HOtw^I2O)|ILIfh z$CKc9w%<2N=8TLDi>JAY!203Q%gec;k$sWn>=3y#yQ2ptCB7U+HHJ72$FuA25Xr^I znjcNf@saZ7SlOmD-&F0JY}sfzGm|)GbN)*@mnIXQ77w;$q*>Kf{LDO`7p!Fwss|;! zoZiawqbhlw@#kh1zLkp3&vWCvRa$<~mq>AD^ylm^xRO0co7%iSuRkk;?PDR^`f5 zQ<=j>xp1XZEpE~$S>y9PXS82sj6#D|GF(U<z<_{fwXjqoLE^AIFhRmPV%jUD0Hx60u~ftq)fbeY zgkX$8HngpdhjMz3q8}ZVV=*cOCVmNySUsB>t&0Z>-z(Y^6! zpC6xnO7U#-r=M_Yq)n=@?!f>WtR}z+L0ATVcYc_12GyB?u~xg8IoI@@fj{Q1@c?P( zNI~eOWZTC8$`=pF38Yd$1XZ?RAtNjfj&al1+>GA`L-V6L>7wlc!Vj=KU+nI&w?9Vq zW`||vy2j2Vp=vzrHN-IZXBN3ng~#uwquMNQ)r<31Bc&K5TQ`sh0WYO98*?Q(Qp-rJ z@yh2_&!=ZJ%xUf*h(Z&9K94xI95fQee_EP>2nhaT@tc;LQ-82X1MMQbyi*Nj5DeRsJm!UhW$)Qbek(z*wc8ab;?mgt*f$=+LHdc_WRu@XY zSyqMME>-=UQ-KA-#(=GLf3<1Zr93(4q~FgieUpFO-%Th3`1{>bne^Cmzt{94C^(Nz zduJdoGDub5UR&iB=+IMt*B3raV;=VA2`FrB=TNC>n#Hs_>{A^y!#Dn<(xkLS&Ns34 zQ#8Y~>~j3|{j0M6ON?wUK-)D?4Te2+hVY%=<+oC@EoK^=(jTsKQ%n1RH^4n{r+fWI zB+GJufP@g%TSc&rcXaR$?eL3{#{;QuTQy(Kp^3;XHxj-~V3tg0qk45gH3ewFdp zn7@<&1U@T#1crYm_a(UbUskp(4=fuJJ3=b>6Z5Q~L&AC8oqCGxry00)^$68{r#Ok* z*4nt^=hWYak9n7%1yn22Qx#70Mlpw@L~_mW*lQu$C+;?L9k5;V>-n0q5!1Y`jlfs) zItTXd#r;W1c7>?wYW3*|X5G+=8dUL;5ovYL18~;3G05A*~32A{W}kIroae-3etG_Gl>RY?dH1$%7i zUl10Iw67`USyQz#!GPYCUB@zFtbud)`Z#C?JJ^z~(MzBhr@nV7jup8^002S>S>Mu) zY@iDfUY39us5I1z*A4OI@CqsDUii4jAn}uU+3Hl4Zv49& zlg!7B{<>Wmd5$fK{Ts=xgiQ4&mHxsN)OH=K>MGK^bd|D{k|rzvT0RQT$}TPD3XKpB z9IALy_=^w#B(L6p3(8#>9dAktU?e+vJp{BYnQ$*95^dF6Gt=}HyiHukSBaMI%q*0w z2*5cUDq#A3XFxzPzj{Ao^f`=2|sYzJ#^Q&IdF+WtrRIO)_o3 z;2EGg#X~&C6`Q|oDP9lPV%%vRxD}fJeN_flOx5|X#cS>4ZA5R^{^ZY4 zo^4l`UjSKB0lA{%kOo&R9dgsfS6+W~U(d(cvJT!-%Q&)P9KC%{@JQHDBMbsuuZlpn zmMilX_A@jlcO8CC?9REl%~q_QYH)#K!oTvsJG*wSw^k@S*XRc<;CJNw=_TzxpWdqO z(7%cCzuT4P-}uWIu2aV8e!Xm}v1}RZo`tWLG`!9(j#^(DUY5>M$(f^J&lqyPZd&Hr z`MTRTOi`XSbH+uncHw-i(N-;MR&9155Hi%6>@?VDT*k{7HOla|hBg;@c;YG{J&q1#k%0n(+~m* ziA{blTZ;||LINN$>g=+QGf-NR63`L$fHFg>UmYIJ)=K9l><rMLEELIoKVVoJ-nyED-TG^4*ExczfgX#T)aK(@a$5sJDyAc>o@+HDz~|GZ!iU zzXSbDKt4Rzz&t6RFe$%lNyl5N)HdYX_A`4Iu2>MuE$P|qvB&@DkPq^creFm?8a`th zCrK;!NjL9jfP;U*_kA*5KDH|3oq$i$X@#3KVpv(tu8`A)v^gcar zus*oo#V#MOncIMQx4{wBm|uVbA14x{BnLzbNLBYm4?rMXRwlkDPs@WY`{%`aKwn$9 zzYUm~?O#}5rxc{Xts6tcw7xT$es0j%sLjn>2($|5O zLlo%wtjF+t*Khr7o)Xuv;Yyf?5V+em77s&#*|N@c?Km`9Ycv%dtPo+^i=EPn*TVDy zMoT>ngr(29x4C=uSSp(ol6#@yd!ScwbPo!WSKjry-hYjN>So%~)Y}LZWFZNKOsr=p zX!@Qh+3PNcJs0-2@k8j)+`6a2WElcgN+a9G)$(yW*jze{p{1n+lEg57>mTQ94{XhB z9&MMLBSemYbwO>lS7@UDD+ zj1;ZlH|B^ON-CmMekpTGr|3-7&J;%g0s=$VdF7&a*PJLx4@O;?enY8!Ge7qi&U}nz z*ZbE^B;Ym|JzD|rmXcO%j^=FbY~~R-M6b) zJoZ1#*LI)0{%>h-VSAw2Dzg~k1T(Yn8@`UlO-;q>VW{g4+8v38c<#VSV37T_?nY966c_Cc(Ou+t_UEWMkXd*tYHDW`o_> z=5B1;wrv|XHeP=J_v+mmRZq{<)KuT@>F+t`bCUlwZjhe}4y9`Z6TkKhpKrIvT`4c= zWwVk(qBMsKKA@|l;wXxez(e-&bJX4~X5`A3o<2fJugev_g zojwVe?&Q>eXpgGQSd!V8f05b9EP1A$bTuSiCi2AfRW;zmWBSqaTMg}^E>lOCDJJ;i zJ@Ramsgl`AqP6N#nbqBurWXkob++5Nkn1`;Q7HgOZ}n**uU+F9&6iFO+Ub>HvJq_m zk;QtLYV{39*5~9SCp5)`M)eXUgz31$r{N6S3ptnB-1hjyst8|WDRDE zuPs6_|38>zp*=6fA1k~DMipw98(8!kR8v;AOW{lQkaG@DmhJ*PsSJ~Dv2q$2O!aWcDl zQrTd8H<&V}=aB7gYj0!kEDhl3hWkEpC<@(#p`7P+gu&j~tx3hiIW{&-%KY@6sB@`U zCklt}_%pwe_)kAwz@y-4`8s%S&hy0j@L4u`;2!+tV^JnD#YWG}hY|OtCn_+wqN@{J z%X8zD4Q=tH?SL6#Hte|4)yWm2&_m2GW1$kzMO{r7=)A6(SeXuUH+Fe=&KcfTjS)NB zmLuU&^rIORyx4`22<`{fcR>6F1#5kSo}}w=EnQ_5dKF9)PJ0J3So#&QiJ~Pm+Ocd; z%#-buDy)uw)*5Dfm#Ob_cJ<%|?`s)YU9tFdX5!`XCG^?I!_rxwXyvuDvUMZ8$SP_< zrj_OmBjbf(7fcxJ!MN^L&{Vx!x$jb3ZWsJjg|f>&C-*g~-11lzww_gfElr(XNB`}$ zY$^qq8lkuYm3dEdt@eb8rgq*BmveTSOk*c%x^K3q$WGWq5ZXVx04 z@Qw~7J2(Cr3>&m&aQ#WraQM`*j0%0N2_*?}o)c)*)!*}5dCU1q&s8X!Rc9*xvW+w~ zV!)BacQr%^7)(XO(-$ysw@KBY{>i;kH-&eU?aw67e$Dgs25c&u8vlC(r#8u2XBBE@ z$<0%Iw{!CBOL}f!Bm5HI?UMe=40ZU!0-An_n3S|sQ6B>ExAi0qDJgmR^RI27dD@Rv zm5oIj%^D-K3I@uFG!EO9h9dU4q^}#y>A7{(P4T-esp#HL={cw+Ywz*hPRX->l`rZ2 zSo*KfZ_D2Od`>UjmL;;$;@Y)>0|Nr0L(@+rV4}c5?X@STH`0tu*;_vS>BZjiHBdy3LF+s9Z!sQOD zWyZWd1I23XI_J?ARBxOKS4K* zwp;zjdlbCFFYm)OX9`ZkT(_9bhn1`I($W&zQkkEnQ5>98Lh}u0=uWKW`#2l{)C3!I?3_Ix}Qk z4X)OkOnC!J?kgW|IU1)pnkK2nfe%ASVe1J}-wT75H5s^E)6Z#q>KS`1B!Fs^+@~lu zCBevklE^__+{Yhy+hrJxrE_`8&|Yc8X37@%@j#(h?DoAE1C{!|bi2t9wu(!1Cy#Ut z0mYm8HOh5#bg3JSqq`v_+un{b7t!f0t0vQUo9^b8p@VoBl5FwV@)Juu<{gTW8p=cb zQk;n{D#**H3|vDHchBvPNt&*uH}jKcg-_}wfD;pA5#KDO6O+0dMC3h5>i+& zSn6uc$JSnc9<;tOpJ8DIMoWXhU-epT>Ktu(=hr;=W@M9Pj%G^5)w2ZLC8*#((M1cj zMs}jx;dzN+xlr~#{Xi`YJ{CL2!y`UJlM|31s z@5@f2+gpK-uB}Dro2GR6tCr{Nww`ny<6E^ccAOS(Mv}JHJq89!*y106VDLJ!Occ?2 z?`A%g7LvfQSxyZCi%i>k{$ntRgwMXj&@K#-ba`2NHc&C44vEW{@nfaLdKO9HygZ;P^r(}4&% z;`pMxo=CH#F|#mAtpm1{H2r(EpZbrTUeaE+wG9U#Aj2>1#nes~u}*qzbgW1nEX`2y zYvTyBKl*lP&}aXsr%=nW5<^a%}=^zp4tck36aOYMc8GsGnTj!Eo612JLkB> zQMbxHNVQTpgZ4{z&nkDp3jwa<=%^86uaC%%MSzJAPTyPSB4O=zz9!D<&F=m)NF)PZ z3o#Me4M_^v)EYluY$AJQvhQZ@bE@x3^-&OJ-Q1khk?@JnmQTVL#UqEMk*cYpP|A7i z>4n~mdjmqxpPA%@Q?d_!_LDg`52Ais$e_M`IjkbMg1hnb7J2LEL}TS6x)rBl66!tR zDX9nn5~q#NH~Ue!Gdz2%RRXXu* zC}UkThy(A^;es21Xs|^E=4>~+rEgVW2$m*dEoEz$5o5|RQw0UDI>E$xmr~6-cBF) z9oYzkc)!ZDZP_JotNQC&jb2rOeP@fpgsY0tB9z9^oT#mpyyYH));ZT91p-kZY{^oM?ADKO%-SaOZhj=1d`VS1SwJh0;rmx~^tQEan~9> znhMOa1rOj65@P&5`+88$8SW?Paqa;{KJrb+j(>v1KQQc+o+W_c0Py@|yKi)IcDQ#Q zBfG*iCr9+<8e;(eQbmb=z7a=>m(tVvT-cDDdf(xFMYySiT7#^Y-(rt)F#4o~E>g%yzd=46#Q<SXl7HXXt#48G<~OaBl7zl!R=kzlV2UrN?MyAZQw)utd1?#B2N&YF$w}h110Y`! z+{N0oB!nX^GaIuw_2km}!7tUx2XDP0!pwP8ecGsv_$jf>ojJJ~a$0IT-5Z$V4nfEsa0Xrm1*_k(tfr|0HA2&i9 zeB!hoz!*t3%HlTZk^q1$j?c~h>&QCP4;UWwJ~@m$W{CDb$>u3 z;$~;Swx`qk)~{+e@x8z<{Ev86o=~4{S;JN$v#D93*P%thby`~7-=o`izw z(2Sc)3(VKt-_@s~Bi$(_ujK`~uDEzl-fix#4f|{Asoqd!qy5lO<@MEjk>{I%d^QzM zp0rGHB|QWSR}K&kYOlCO4~>(NWj_icyw^zupVfo&EZ zo{fx~cXkLSE>Ly{SC%*@{J8$8;2DHW;6j@m%+E&lBs8*JJ=*Y57XLI={lA=Gx(cRd z?5%zvgOQ@6JAIo{_

q$(+`3AoAD`-5Pu2v+Q<%$2hDz=e*D;;`A2W?3cxsjALBB z#1_THG{UG$5HWL;WyXkc`8g%=TP=j-$%L#bV%)pYkK!>L(3_sVU`3e_=%l=i*4K{XXUWSU)`J&0{g> zO07cNEX@RaYUIIxrRDUo+1+v*XuY&ZIMb!<}l*D*vw4XF`XYsp1`!d<2-!xfv7LCbPspm8Y-Kyd`z(T!e(Mh?d_Y(Jz2K&XOKmaRFViB9BB&o`~k_&>U$GPR zM>>>Ue%NZ-!?5FuPQJec-DGS6+_azNxAYJJF&wcl zX>=C%7*c&hE%)s37k$0A`F(`l_`kdLiHiVT>N;`nD^3?zZ;I~8j}RI^6nVZBT{V@o z30z-#%>r_vfixHKu@pv;fynfZn=zX30n|qAMXwQ!PA_#9?@^i3?_>JmrRb?LAz1LG z6ve9LRaw%O7Gku;@TC&C(%}^Ar{p|$`|-jf=mqoz>47Kj;=f5fj`VBUj(pv=^0KS> zwOJlfQQnm;w7!>%j3@60Z@7=(eWC;$@^*!) zDo!H%{C&|2*uQcTjaX*%w2$0JFk`d`AMfBsi^t#+t-ReZnfBoSRQ2sX_faq=hF`^a=X8t2J3Rem#EBN0Y)NF!dldt+)F-_(n@>2x75$;Bx2yeT*zEbC;o&e?ihRLN*2m$P0ku9Dy206uWPHBmDnmUwVU1KZ0-oVi zq0aH-lWl$(Jz>)y`rOggsf@#aeElOX9$lJpBK9v!xON^Fl!T~L*eW7e)W`QG*;D)T zJ*IZ4wm<1>(2<#`)_9Q=^BLN#_;+0qT+&b$&cs=i?n4%T58W=jS~Xhka9$1Fgw(93 z0i(yWWkNSI5mB1ZGiX^#3%?Os*fkyb6LNwgvKuzY=7eu77vC3z8nP1dUTOJ;Zto0MzLHWfb?J_a=f=t5TVSYs0r~ROa!SqElT%(oRTQH1q=w0uC?489#Zp`F&2)Dwi|59@*ib z+SQzIO@=5gLbzm*?1>b7p|O&57(VMZrf^rBXVaQd#vjSr&aYAwk7@DWNnHUL&6r{3 zc1=z0^?XaIs>F^wjjF)eJPxZelK+|#ih0J-{HEL&KTEe*+e_SE3JDg#qSyRyaC~I9 zb90)f@)bI7o4S)*&Pl&wZm6;zZ01vaIKlXHIP!a2YKtJ z(J|tkwM52wv|X{3FO4tp|R03`n5CdnY! zyC5jJt`mz>jPv|1IDbtPam_W6tvK%;?a*E4B4DsQWzn%B6RC2$h%#K)rx~TjohaUX zb%%fJjd!8Zenb$$HDC`!1qa7ynt|&@ml-3IMibQ( z!{E|!lU-;*!d2;ttx6gM4(Ldu3NJLfK?e7oL8Qhu(V>)EO)x>SOX#+nN}9BZ)1FXV zA6xuD_C2}mTfVgA5QT0_JV7wt4E>_DH>f5WvFaH3JNck+SOwWzpkMCdGLH1xVw7p+ zVv%a!+4m@sQN*rL_ku+;5lk9x6P_R*lS<1T<5-8M5aId4=MC9;OQf4ix%=^c8 zFbwlyuLI#_wHu$t!=oZN38FRdz{Z;ioOPY!6(nOUG%_~8GCb5{J*!-@v(csNs_mHd zVH+`L?1pZnRa-V(0GWS?m_8Lja|`9>?NZ7vB8iqv;%MOL4RbUesDB(+_e1D zg|q#pbV!${&+>SN)agY@=dSsHVXu=1n$_9ai8~X-w(Iz9Hsk#C5am_X!IJ_ZBoj<+ z6{#UR@#Cl%}=BCcUGr^*8z{=iFD;tA)Wg7{`xGx^kX6nM$Gr{punS3zR1G{ z?g7$ZoCgCL%w zHy@WsNK#UkX@xbNGcjk~VlCi%UtmR*6lw^1JBeaW;sq3R=4B!R)^t_IoSuYqWkOm& zFYI8B-FY`!D*Y7HLL>)XWftA-}U3Mf6}d;`haFB?Gu$~RwO8M0OURTMa=M#tFe&<(r8e8{g_mx zzRWsW3&sx)5ouVF`d7hUf7q{n{6F$01sO$JWE%5-U|m-HC;t@v%undC^LVIK*Nagz zLvFX|OEHrBJB~4;HjDbbf!XynPN0oudAY`mbG(J>Nj~cIbk68VsSaq=z1Z0jy(i;KcA&RlcZXAW_ zw|Jo8Q;4QgNH=h;wjE@>50~yF_L^FCH6ueeL=T3YK(wqN7x7brdXy5jQW>)w3IQvb z*2>FK7ni<$#h1(k+UJO`A@cXbubyY@&PYw5Z!e}EU zLSXfOhW};!U@*~lU~n#RZ4&S2(lKxyUI$;(xl})*$-3{GaWJ`U@~OP`hm}9_+=%?v zYzFJ7+}8`;_KHkQlsJzE|3|7#=$Eg8bF-jgtKITd#`9Vb^zZp?2p{0IZlF+*bwf7m z0~cH$kn_9Fy4TeF)~eJ|H)-K&Yt_KJKwW_3Mu8rP%!L0f+ag06fUS4O(M zBS9$TR%tP(DuLiaS~=4A#9AP%1X{2Q&*Y_N=w(tZ=JKBtaU20RG(UwiWE>>z0;@@_gqn}=cbHxbf~)Gr*es8$SqItkrvUmDGB?XP}oa!r-S zO?#z~_T!xd=b8e*^)sChRV!Cwc9Ss%kYG^8-arRn1t1Ow^r#hx4?mTFd!W#`&dzYS zr@UI`XWAP+C%0AuK_2R#;`z%q4Y>kab^40$CK`NTE#=H|!>&&C7 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⁣7p$=#pS4TppkBG|z< zaiP%*=u@e15oV75OMn1M%lAC@pL{%gzILtzr%%=c$=BL-uru7iu4n01}hbu@3MFbtc9Rim6SIM4=1s)5hPk!a> z-6)lw#d+S4>!? zEhon*bK)~TOE-s;v1)(XAS>T_h7=p`D*Id9hmg;TfPul)|EwD7Sdfdn9)AIv7NdPL z=nGXxmfvizskN=mw!_qs&c?UrQh(pIdyj;(g(wfeGrSdvjIixlYrv?nb^Po)KOKLm zyvr|N`j+$|0hj_Lsy91O2fXu-0i=}VYDdBKSg^r2X9-{M*28rJCuyE$SOK|?#|bC% z>c`kG)c58{LQpu&A94NQB0ymG8QwBC9;_Ok9?##u=~7v1lbF7-%9p=w(^ip@&{3*5 zMerHA@pXU`(f@al2u=sN(^~r}-0?>C`_JUcAk=e!aPJ%5VvYYymPwk%o@4=u#OI_8 z%(Fl|YF3)sv)NUyob4nezyJ_E)OunfbTzIy%6x|+4xcp?s({1?bRQVKi0upz4V97kIFwUe3Ycq0KPUxzsWBkAOroV@e(PmdX1UrZtMz^ zQcuzo4d-u*F^z~1mjD$tQ}i%3Juav*-!&IKZ_ogQ1eHFdgKDR-+0(u1ZH=*6rmVdp zz)s1Yuv#m|nvGc5_lsJ|JNV7h$|yUt0-VJ>jSgqS6aQc3@ku{D$1Z3H(q(q1JGyo% z)?k}19^-m0cF#G7=Ui-ErVgb$qR49_HZ7F;EHzj69TFqG(4Z+`6@sv;-T)Y0Fq>qLR}p%o+>KSNW62s6juQuof*xV06x3m zd7gbV7dW|ysm^N(O46z49Lo95uMH)AhJAXs|qH@;^tomIG7cpU4=D{y{Q z7kefu@2{8804(++5*rB*W4=l2qLm9bkX_uM_4kt70Q&(rl;U>}Coc_*1RG90kPY8| z5F1Ym%mXFOTas5uq*d=Nb)0HbnC`%d0>e+~5rpq^E)j|pC{Tq86u8`(t?0)T%Xh&q zYHhqVSU0TN!Pl!Ir~31+sPp$ldgA9QU04Y$srhFhBFkH ziTiv}N9B0!7mbT30&h{yrL{iG8duqAoo7M*Zt<`qV49d=h6Wg5qM{mh5Jn7?QAGlZ zD5AG+@jxojp@7o7ZhSnWCbKZFBe#N;l+K;x$}p}+V;bDyoQ_?%J?_x9?!Ixw440sn zRhV(WU0UF16mPk#JXWOg#r84}G(}x=o7ecvUy@s6j2QLZXlH>pWZ5x8Apy%JXCMn! zRM$?h3P>LK?k*b<0RYZZGWqtO#=y#4^r}AFPc0RA#dx8I=5QGRq z5Qkm%|K|LsA+!wu=p?e^%^l(YyJoJelet><4eGnU<~`0Kvf@MBYHd;eht=^c(bZg`UJpX%RU7bP zqF!-LOEqEOWAyZR05Z~0RHD9pt@i~Spgw!axwbSPAK9k47^IUOCRSdl1+~o{j_-OZs^%k!P1@+E1WnQcs;9-cq$BK`$(y=V<`HNl@0>RH!#t9VgQY|k&X zS&g#Gw5n}Ju2k%MQv6cd)*xErEgkV$HWt5Tca1C$iKc64?q$EtcrSxI-oW4WkjGCf zAqW8^e2X^ksJ8hU9rBUCC=0!$)+uAQNo4Nk*wM#I)BIoO*^aVTJH(mh#7l9m%=Q4! z{oKC0$ekCj^fV=gRC$Z_Zs_5H3S`wzsM$g6$2VtZRt-iK(y5?H0-yRQlo=pM1!dB) zWvR>ABOl*w`kN3EK)yFbhC5s-RkKYgn#uxe?*srr_uU)SU22`ziib|je}9{`z?5`j zO~yEa;L}hjG5-B=G*6hF1r#>-05pK;t(CU(E-Rv+y|f%5XI-R#^o#^<8N0goefE`a zu9TAEblHlt_emR=wv3P_0Lsu>>;SI+AOnYS@ab~XkKwG!?v&jX?_W4p&I@KtdIr49 zEDi)^H*<&u*Tn;F1?sA^KD^Ye(a=r;E#sKacY#%=o^m>S&ci^dqrS1i{lUy4(bikS z3b^}ZsC;AR=;VyYv_eI}cp5odJ6i=-w>)bhW7kV>Z>5f3!|p=GHtBTqb4v;^ues_p z;2PB7BA&9_0IC8FSni`S3zn?eJzHO5wRO3$a6E{MKQPOc5?b37@g7okOh?1 zU_uZAZaMS_&&$P&nR72oO+3&pnAGIzqT<88be5<<&g;b=HE{PF{hFIw`_7)i<#!+q zy$4K|Oq<5wIIWYr$p9dm3i7J|?fT=gC7hX)QWkXhY4k^_q@eb&5hh{e=OewY>qf1NL308=3zdW@jYNQy0CBb>hCgOS1stt7?P| z3MGukRuUn!cxV1c!Rzp)(#Qb_E}Is>m4efFV@!bv zBXjQZX}2zIv(nVDedmiD&@ZKsLGNp?n>?M=bC35WTCAhZZKuy!lfb?BH_gH6jH24U zxSTWdFwpqvyShzMRu|dI_E&ozDy8w5k_F)m{CI4An&9Bq_MM76e3yIt8L&vhTq$Bg z!^g9OqK4!0>x10|8l}agNKUa%C=U6dHV56)W|sK*uRP;dncgDx5f~nz2}`UkCI)_# zZum>pfav}?E! zUkIq)pBMx6nZ4R8mhc6#$vdk2;5-WqKp44fbgF7VBVNu;50w)T1Jj1vf>DD6189=^ z&C7>^OYVE6oZrpWwOoNVztW@y51LHQOF{?bCAo8d67Sm+Nh|HHv4x_8gCGD9ks9yR zW|Qw$`UB8<0$rVQHoi)h|89GnA9s|*AqYX%O;miZn@C-mTBU=DEizxzc-J@HawFV) zut0aFCYoKTfXV^W`)<*p>V?o_kTJ7$Y_64O%CS)f%k{=Xx#P+goZT7zdGjo~;9^ez zgEc*;ouFStx~CMMS5abRhdFwEc15b%6RltR%;x(l7|=-wU>FKcm>exL7Dn%1+kD}& z14yeH#oup*r-*ipYn@EbudM$0cV6V{P8;o|06NfO zUurEo6^4AuQD3n#vN?vGM+_iDQ*FB`yTeET5_u=4Inknf_2AdD^nh*1Qz49_c|kiL zQ(@7|)1>QRfbZsIz`dnq>1>$;b3lm|*R0I%^Evj9sh7Y}p_^JLcfg8~&`NFtWZnCN z>(tZ0}r?i92}AW zNO78s*%W=eBnUz0Jg&Dt_C9yRIXo_uylKLYp@!4>^Z0i}gmMs&X6soWl;cH{?{w&I zls+8>!BXghj?0o9G?GRik#~to1R)6HX-V%WRI$a9(*O?e2?|?QDDW9!S}q=Z)KO9V zCwJGr+AOuT32OB9pUrj#Q=di$n|9kQ&WR)W0OAE`!l&qg>HvfZvlI~nbcy=lJTj)4 z0)!z02T))c0I4>(sSE5z!V;5H;Y;@GyWF@yX=?lmJa=-f&9n!VtJ4P$se^U+;QTlr zN+{+xP&exS{`7@X9S`A12Hc9AO;}ft0jbu0IZv{Qj=x&UTXTekPaCqumzt@HV7y6Q zWyqWaApj$bymj6;Z%sE#-_>~J=TRg58!);)G}7<)B)aMrRb{7@r0Ae)$ zo7XcgVN~_At+r}3>k>SEERtu~zKQ+*av5&3$ki?doTqUt)Y|1{CF2t03vQI~B|Fu* zX^q^}3Y$pSkNDlXI5FS-IP;1Un7R2$OAqz z$eZ2qePJiMU3<>x8jacLNtbgo&LBDbS5~>m((cb)ysox`hz`r`Rr)KLFU9neeLOpD zYgQH}7-2BL3@|GT0}O$X0E?zDSzs-!d5&=vuaY_2eVMiFSy|=oChBq-c}wU42pXLI zDQ#HGfEi=*TulyJtB+xk&tP6`*SjonyloX&Bl=D319PP}k>6{S1#&}S-&3(m(`bLJ zyOfAhQjCbxs&1ElW*fGQb0AM@&cfuJyX#@*-|;#}b0D-U9|F(D+XM~dnVJ(2ebz(O2C#GdJ^XT=8wi-RhR0Z^)P`Y5#|LULt z1+wasn)X*i9f39yfx>Db74gXd0=MVEYp2ix%ikWQqmbV(=la%eJ8g0%v_ z>pJZLa0frBKlB zBs+jA0SdzE2Q#Al((f>d2`Jx`hTFlqvB5o*x6LiX_SWe#o-8=t>PUjfA-ndIFn0fl z1>U!Mm66NJ*FMGc?a&;v!(#%Cj^dS!-DSfIXr?l_%0qWRIMTWmfMS4_lupdoMX$F5 z7M_Dwq`QD{3|h8J+`F9}?otDduAWEmSeTN2qPoM~LdxFOabvhbNED|n-UKQW&Rvpw zRAR|1aCMfaPFqa?r9nUMKz2(b>SBy{>y?hMT;mz2+l{}c*v=x#HvIqVM+F(qeFkU% z6QzQP;gp-;Z!>ql!bzB1^nO}znMetG!^=};E3J6jr#fAL(NF`H$PE><+&-4-#P1@x z(Dn{3F5!ptjkj8gp^96!YLwbj^&Y9{VEgR_a7v5PhSDTulZ~tQVH%^9-LL)dGe|H@ z{u+1=Yj6havu1WGoOn~Nc(2*IJ^VWkEu(cN4^b=8RtIsp`F<}B@%n1SxdCT%%gWI@ zR6XL9QTD)dvMlMrlcL)yMl6?ry&gH2JvIamc+>V zA1&O33`mWuPx8B0`RGL5aD zW>oywBjW*Oih9!|kSz-U0s=3jMmM-)z;7<<-|YP0E0UsQs0gO|f^ z--l-oZeobV#k$pb$8)+8dzm|)M^GUiAtVX9GvVLAUiUm_ih=8opHF*s7W&j3qTdI4 zzOT>PfP7_b?~wPzI~?yoEAD7MfM9h3JIOxMT47}8;<7+Y4m8<=>-X~aQ+dB_ynz2- zCNAFrdI10|XO8G z02(x9KZhS#RE1z0zp=yo3aMJVU>$#1`0nrx!%Qy$2*==*?l#>V*`zm#K(j5Q`O>|~ zP_$*=db-3me$ATWmIq^|@TG;KVyT^UVP{z=g<#sYf7`7C!Gz-wU7iIb4Rx>S`sXmE zy~=`jX1`VWt-;@|UfMM;9xSepRJMwq@B?jFhAho=LVXMW@VI8Z#tfQ0{fOnK1|D{TD^bop#7(|Nu;u0SCO0SchJIT(Su-R>+2@Hmk6wR7c| z|2>W16rAcWeEe$rzjRy*kur{Yv_8*=UmgGXFPZ#^(GrWsn zUFk#V_&S;`1tno)^!pti9UiN4YYE%Yk>&&s&aN_S=>b;GP3a84+zrCgu>k=I1#>Ix z@Xu4{E>X|@UA=3wj@le&~h<`QD%_YSq_Z zuTEF`9Mn&Rqba^l1`P9&r*9V{?1h<_>oZdj2nKcd1;&u$wkaN{3u%CzK&J|3@hZ`G zxn)TZ5 z3l`|A`mwp^1j@qrcUR??R-Wcnc1=f-XQAoFDlopeiI~WaniVKrZz;}?q!r6XSP+B& zn98s)>1Ik8b@$ydYx;bYg&h@8eAFo{Ca-?4J)?OvQZwNz#diCh9!;j*b#G7u8L0S^1S`_#dIOB(r^qi zzk6MkWF~x%AD2D!o(RKIC{#LY1)&U$ui_!Z~G4&a~+o0YOU2PUPg3NShe?9BCW>@|tj;J}3CHp9_Et87DWzyWsD z0uWR>s>YeXkm%_e-iFx|Sr0x7EUA1tPllfRG``y&<#-@cF|8?Ym?Iv-zGmQ|~KoEefj<3P` zeLP~y-B_Y+5HfNAOL4{ys96t z8u&T}t)e z*v82x(>?V()k0g#$XzvJvrSvRfY%&z-w<{zAVSc7;i0c@y!>yWx%J&UmmP*5=-^_? zqK>N{|94IieRxaa0o$t`FXdu>-c-Cz-KuzffenTd)(vwW&G)s0A+!NGXxV) zj*k&o|1m&F_zxO#K#2n>4Fdq(8AEeC1Z=&>2b|qR_qaay-D?8>+V0I6DeS8@(IyX% z$@8=TX(P~ox;WRkivWZN0A2wQJ|4YP%4)IkUcW4*Xp$VdaD;CY-(+X2?u_Vw4lH#R**BIKiOR%shr zli;qePp^c{=-wzCFLy7h6v}7sTe_3GdEmKX0U{m>6TKDL)P_EDnfhznGQYthF8&bz z%&ha^f02rTGti=PE`qEKS4=yLgeB$d_EWzM1PZ_-v_O|_q0+*Q_o9NSlzwCsjc*!ut3LvQ@z{F9$6Mr%VR3<`twb?no09ZFnoeTSw8ll zehC;<*HB(oMn!`!pW82n=@6OI0!N$YRoyXqoVGlfS3d)PECb22Q8P<^=5uqPMX^Tb z;TP;bn%}b*GFBQ**adGSS%2Mu(;E}4^AyH#GH#$NYm(ya&i9793xf8u0{jz}GPU18 zIBGaM&=a$IjO`vM1}(a8FE9>5jno9xYbu*>aWQ9d_bgtg%@@u9%=g7G(0eh|z;0qP z560?%0Fu=El8x@`i-2x5Kp>Bw*?@9AJ|mykdvi?zPityq!@Fl``5IBR10O@@L?|=e zpS@TM?K{p>*W{G`mZVS_Up$*?eKHB{jx66}F8hz0HIg=gf7T<@Bc(P~(@D-WckY^} zMccvAGdu8EFW>2h>N(CWw}7Tj; z9%>DokDU7!^8hy3Zl-{fLq-Bn-|;(?Ly;x}^TF+-^T$ZZPd14+)VYvMunpG^uMfO_ zD+(C{*Zdkbyb|BL*cWT9CcF|50uisw(M>VDRJd<7H1cp%tN`O7$T&b6fhPv41kuAc z81x0N7u?_LeX-zyVRaV|*vF?i%b1l?s{&Sefq6x?9N!h&pkAi4!Gv9GO;!HQeA8d=l0Pop3{kdB zi%@|S^4C9pYQ`X6{g2%~+Mas@kiFlB8&t0CYtT`mYQ1*4dLTR6hBQ$hP!hVWfXl+X zxg}pmg+3$?0DRNf>i)o5$%;yEo4V=c{i&*#7#pmh8Kzsywra1k(2?nU3?lo2%>W@c zIeHYZJQr>M{sGN&-a+P?u@du1=NKON0b2tbiuTmfJ?b2lI+M$z?vg^{cS z&RpDD`vi&AnLkTmF7s|CRdlRCiev$2x`D&A=}oFAIJex{^!c>TOy#p8)zT6|LSG_0 zNIU#GS7U2N(@HSH#$uThv|Vg6eV~LC?ZMp#aUCU zGE{IEVZ!fS3_xh3;(FSTJpR+YE9udCMzER(C1M*}M%3DyM$l~y9Sh?Zs>SDh$gAa) z(@aBMX1KeXhet5c)big4;B^r#dhMdkUDpe!;WZDQ$<`p>6`Ysb!bNg$z-oH~$;)2# z-Cck{1BxH~X-oBB?cbrw8bB^1{U6T$n>n`hAV5!`8(PBq6*?b`b{-sZW)&vkV?Eq!>s8=zoS9MSYMcWt3@g{*0gF2K0Ho@+^Lv27!VN9TefjE)^mi7m4 zwSEEI2_Kba&!NQCRG6Qo159C~lb3l_t686*$Wv+@PJRHAZ&1(!*OmtB5mV0kXyC{= zG%c>2|G<$Zk^`Au&i5@s07~V<_8Jy2IEx`w?Ye>zeAj6>0NW^%Ni)A_sB!s=SNlg; zf3LXst=q5ATWff5E&HZzd}{cEQy>}3-G^s-T31Pku^nydS){tmNGW%GCmLv}W(qGZ zl>O#t9)vrN`L>9MR`t_OJIo0RCK%UMda>sS_)FbM>TTsit{)C zLIEk>_;w-dq28=r!pz>l!d&nv6?cYz3AFoD3mf6jy*8aJj4qb%D^g$xCNTxBBn^ML z8$;4Ng4PPH}aW%>RNoJ5C_ed7w-7d{7+NbX~GesKII7tnl zS#6=>5R`HSM)9X}oW!TZbC zFC6@BZae3=&(T8bsS0-+#Q#xy%(>)M`q}VVH1ELV`0zlD0WI}I;R*FysCs*|I@`cq zclNIxDlJX#dosEmv z*v&tIH(HawgOxt1cfzO-LEj9v^$tDaoVvPRqVrn98**78))V8{uyDxkjmx7^IeS~ks3&%VE{4ci|3 z@&>+Sg(g@1XQSDrn1}M%Qz$f^&!LE~4J))9EHIawyM0 zM@XAk&qPN#L=aF@MPcyic?DR^4`-i4mIwd@Bn_ihpXLuIGd$e3m%fHm3K#KQng@Bt zC%OSIF7G@Red#eq1v!0i40jOs)Bt6pHF4%_zc|}us%}2ZhY1D8xTf3?5%-AzxBVzb zv5Lu$p$J80iE5w82?+0fH5&bFsz?{tH)OG21ON>5ITi9O-B548S}yFb47@$as<-{( zv;8~Mx26Cig^uQy{`mF-yRdclIOaunTxPO0NmpCRmJSCBzeaolfED0>DV&0^kk9> zx6l$nj^*TWwP_FKS8$LaHrQxL07(sw2n~M^rvAROx%brvmk$1-E9F1GgFgGZa#DPV zD2n^wNDAbgP;>;46~8Vp{zJ^R1BWLU_1N_(5^$zr&doZlYHPTyYd?PFgHAIm&xBT4 z{(0R)ty8pdXtY6|&3!I=Oxgk21LM#k2`ZcV0nwNax(=M5WZOk3=!=;Pv!s zw`8j;PuK@K|L7dH@D2dwy`MwXRl$Z=5?o)Ec~VE`<9yvA0CHl2;SAO3$&%^}My$5aKwUba^gF}x5E zi&|}ZUOwlJeI8?v8398^(<0yn(ZBT+q}#|~d7uvlFMF-c)A8EQmwDRtpc}7u@3Ug{ zL;!==^DQGuf7hzPESG2BmHu0@+goUA6C zQ@cHqNJJ&Vlcdc0ZnzK-BY|Z=2}tmSj=)@jAum6A&gvwDnKsY(cxZcmK8Z@jHgB9Q zrQYl`chw7JuIbXR0Lf0olZgQU>UiN44JONp}P)#l?(nq6PkCK^mh}@ zv6&ixS6qHxdEb}b@t(iZGt`+v03d{UXXu7v>vw#=Ekze0n5vwuE40!39sXtb9tk)%`Tq;()DQBq1Yx%th{?EKrnRfR@t_3kC7Avu@Rd7VWQ2*frEsD zhE|V?J@`jbYUG^uKB*Wehh6YMKooNeYCs_YwJ!LgmM9Zg-6kimrGgc;_2ga;{g1@R z!D%p(N&}+9a-rh&06;nbeNYkgwN2qU{_H0?T{b_hiP=pEMw1p6D)Xid-$C1WIzMo# zV7Yh{D*Kb4kVyj9v$nN3Tz9`qN)c~ztZ*9i*_?dh+=M-(I`pUjB!LtpgD}+{U~UkD zfEAlvc7NJ4x=5&iXUO=*+qJoe9|exW2p6&PqKdCq*Xu?ArLe4;&U`z+bM$(m&U3z% zEhpA`erYtTW*4PzXGKRwc)Y&L5nOsZ2V=3qwm_A|A7g0nghpEcrn3z!zqK_?+{w%L4gCPNr9IGS94>I{yW$j+492pc~P9A~PLf3^OqLE}4Gd497@PVl^? zq~xG6FcPwQ;84?n?LDRZQ^GbJRFng+a;)#~Z8^ff0?+co-oa?#2SCBNH3mtv`|PvN z#oZ^KOLh*vy`A;fKbvD9?~j6mKS@>TnQl_(Nw5X}x=BF%P%VKAvv!k-c#ZD|&YeimGeO&^`M$emc))8c(Z? z;Y3@w_)c5H(-R^PG8rJry*{wcDV`PvbYq+`4cOMFh?Zxu+haQdq|TgLcWhOYq|Mru zObSug*BEC%viAJtu=9WH$PY~uSxGzb@}2p~)foYG5!e7hMoP*uegu*vCkHecpF z)EsA>UaTrn_Elrg7G>5N_dY0aA!6aclzPUv>Bl4<8LY^GJx!f#RC^)u;@TGVHgg&8 zo10m>7I-v@mLNIN@=qV*0;tC8|_507)!ue$i8Kp$Pzaz!*$W zWwp)SJXY>|XNkx$kKfwt!D)6#K?qNxG@GHvXR|KH4||+DyF0l*SD7vq*WG4L9b|HT zTjZYNh9mt0=lAFxy!XEJC=oi_*3dV|Yq{>NiG4xT^;X_DODKF5z0lH(u(-W+gYhP@ z8y2`3pbF^Qn_I>|y2EX?r6CBj>w|J32e=Xggz*tV(L%E3X+ljTfmhIyPy?b!1N#o? zLv5S5O*sNUOUGs&z(7n>ox_Je-fU%C=ZHm$sDOWqm*;?hZ(tEuc}PK=Ks*SJK!B<2 zO*2{*?Y#-X?Eymp0dwQxD8J2IjG_>C^c>&sm)nuy8M8MXi`2k3mF%1Hx~A#gF0+!} zujb0p5=>a`%c@0MZqDn>$tcGgP-@3dYRX-yyM@2N=`-1VFFMc8!^!I|Upn<0zzG1Q zu3*`Tdi{s*MF`6)klzNon9O7NR&c73Woo#d17c*m*6S&+ls66_W5&eaH$ob7G#D9B zmG6Kp*#O!1DkHVerb$`nfA@M_m!JrTp8`oC9gvr@JJ7ZoTg$t^aQ@n>ejDky(+B{M z{4qxFUj-(N+lij8(Kc%61^(AR!1lJ);VdBtKrj8-5%SWM6wrFb$g!WEUX8lNdfM!I z68NC!*6mbi7*MY9KHv$XvyQMHDo#|-{id@M%t_n6-b;7Uq&|p4 z!~m_F3dx*MEvo;L+!J66>T8wlT*DnGY;TXT)8qZ@SK%QRo;9lTZs3iN(is@{2+-sRLJ%Z+1I2~dDLJ*J`SHA3O~){CHN3u{ZQ&(_c6_QTeNrSdJ0Kbl|7ZJ5 z`<7AL7<48yOb|kzb~ZRF8gjZo44`e>VvJ;L)+x?D*CKK0p5j}r0LlYk;q){DBLn7v zLk`t>FkY!BoG-RjT;sL3VZ9q}r*y1f1K!Hwi+=Lg_@7jCU0PUb*mxZ}tPl8W%iHR; zmw-08clF6OWqG`5Pjk~J*aCnYFnc?Tib}0YMW(FN=X4Bspi#P-f#*hhVt;%;xz>QZ zzyZ1_CnfvdGeD%pm!tN3utexJEM=T06NY)OV_5JlPdiRwrh=+$jvnXXDiWDMA zgfNo=Oe7#H`Ta7q|9sqRq~}H?gIag{H0`JTS-M!~l>vo|eox+^*dE26fD)3{*tV8= zUHIyimC67#JYXJlDyo&5mOummP;Sm>v47mEjy{^1V3R#2LJ*nID6ierIX=y-C=z(a z^_)-3Gfxg&3Im6BOXH_S230QG8~+QVht0L&zvamE-ZA*!y!Vr(`ReLlZs!7GVTKT% zQb~l8WH1d)S&lyHtDVjK!|k_wlG;*asTe#;Wm>oCp0GL4pjN6Zahk94%rmCOQ|vE-?h8!{hb`Uq;671`9&JI zL7K>NgF)lh?|(Px^R0a#W~H;UovZg=J#JQ;86_8&g3U|&pey@Ku#756-klchoKD0C zY6LJs)pIY@zu0!Ek7*>CX!b!&sP3~{8pirxN!`ohdSThV&)zaWsYj_?MWcaA@y|?G zuER*J<)hxiIFeUnl3+od4Intmq>@mXj(87_;{3fL>8J2tD_uaBJ+6Ky}>DVzZTFLBeVC<|Yg^z>&ZbIC~`9g#Cl6Y?IW zw4p=xYzV2-~O%GKhPdI)W8A&6(~C}XzjSv0`K|C z>RY?Ty0+c8Nc*x3k_F|)gDXy29uv7(YZ6I4e`>i z?}E+d-~^B?y{})mqxP!OY}cFBYK&=hoVckOQhKYCk~)o2weHnmzm=W4WZYP5XKs?oiw(Y314wW`szs?q*SRiojpR*o%Jj#jHi z_NzwLt4F7`T0N%KX!)MQ|9&6uZ2rH0@qf?Q`(A^0es9NRs?q6fR*mgejjdLVtyYbE z8alUq?RE_QWqt>x?O)UT{U0g0{k(ruw^ZQBwS@%?gG5V&1?~(X%T+PMaoYK1Q&bl? z1>*^Q!QGrD$x=DPz4e(%;zRL(j96euq!Hf$&oaVRN%MbYsUg!QS9*EvvS~*x`{Dp7?c&Vi^WL*J zPYUdMeITc{WLtsr+J%|zGRs&nGzN!dhYC;r-$^ud^aJqor`$R9a$b*J2FGs-XhSP{ z;;a>F47XdwR#|mQ6e6$E%FG?h>zsHKymiYi-3{vO$>10WMW8&Tnrs`ZmB-T-nAh+3 zbIF%nQ*@zc-$TrJleSm}7u#!P96L8pduz#3^7ZhuN6`6q4&|UVe1KSS?44w>08D7L zW`bH}==oO=6jL}7j%`__AqWG7vMkJ(j1N5K5z<<*l?hGUI2RYTh4bZ)+ikJ-B$k$`YyX2GTO>->6!4( z($?mFIoas;Zt~+#@hxK}hzfn#PnU1DCtt3ee=m3+}Ng!EN~Ky*eGdyy#{4U|38|Ij#{-y{w)&% zXAw#Rl%IgDn?tN-e`W>!6K*gWO?Df#bKS=91BnF=>Q|Tw{=;1=XI_FE=FDdH`GmO1 zH@)=Tt<{1%jQySRw!UJ(6wf#1h>_q`>H95%@qA#yB!D_?8KFv`E53A)2arMxwK}8C zV)Mvh2V>W55^*ut7(uh(WYwfUwWvkh@3(APIS35CNd1 z_E*VbV4CEbOKI)UrWB{oImwZ|H}2hY5s9xTrK`;^@*h~bwe+g*D<-yodp!vlfNGzE zO~QU$;^wUEli<3T6E0h`10HosL{&dH1(FbegrIWqTSG(vkAV-Od6L={T#R>nK+>;M zlcZdoZ`kVq^2<&Zeqc3;{;%Rb-d@@*MRSiA@Q`*LYR{Db4a_n?U`Nn^s=l*o*w^s@ z{kRQE_>1pf==cn5?WMApbBlPTwgtJN1bm)CM^wbI`ioswd=9=S2=J=MbHD;zO)4-P#>9vLB{L<8o_%mwf6X1XJM$FoU) zm#z54NSD2VUHXc&gOmW>$1n<$@4DSiwH=meewt(n%<|*NRU~an1^x>%ddlH>kjxFv4~7rlC7oO6(W}>6w#FVsolop5)jVjs)TlLLuKYkRvZ|A~3r*HA?Vv`z zcQ!7$i+?Mvc;?|ke|7cns|+$`h&1Tbypmz8&g;;el&}|Yw-;rI0TN#O*4A0-W9Ox3 zzP9QnYn0b7U#itojf9BqhHObHOy=zstTaLZ5hs)3d|Ba={?wwG)X&QlTc`#_rO}cp zII7>2ue-9VPkQ~K;cY+X6b9QJBvt9sS=bixuo*k zol1O>*2xbWZ7mY4@3k^B1P8(;b(?Yv3oWSvm<>ByvFLAYY~ znlAG_0atvk$`?UY2BMv2?GVb!GCZ%~dDhpxOo{-Uah`sl zG4-B}%#YvJyn4aLz2tzqxt?dF|A*}?XT80m^J`UFP}ja)r}36gNo=1?|08_OHkC-X za_l_SfA(>vYk88H)OBEN3?Prp|TMxUnBCQekK_xt|`OfX` zKI`-PM2lo-kO0+BebPC_W_(>&E0xDXqevZ zXD$-{UKX1(5w}E}DG`8GLjI?*19}JC2Jkt#uoA8No=R!T*Y6XNriy^?_`Jk)X23~y zzX;LOv}gydQ`?J0==;k zP~Wz;Fe{v;nKFPq36A3mvI-mchghBg00w+I51zJxenP}QQ@4bG$C`CT(Zw}?n@^b6 z@S!iNs?uWp(N4D+07ffs7Dxa9%mT>{rQVhF^ge3lf;XT9zWerio#L91u~>rFWPS>y zICOPEe}EDJ-O{_l3(Z#b>gji1a}+bL_V4FHebx8qtyssUd&$;2K!loCKtgfaMc6W+ zg=Mhgx0u;5cACBK4#z0R8uSUrZ&x4#95*f%vc@Q0X1jslfx(tp&hpuAnzsupUWo`c zy5z_ZtDvymZh6(j_xc2Va#R|E< zZ5(o%?z7fXCE}5914KF?20mjCx1v4vhleeCWca~Dwcyxq0M~Fe5LFV9a*Zin)UJ3N z4YTSUe5MUIea!^~>z{Pry*-R6kX-)`wRUWc$g((FgR*#VN;dlR411T3LqreK^H9x~ zzQm4_z>XAtQ5~ z^yU@Kra-}~P627*1Ans4yx+_Jl$YZWEGIh9{BrYp)s;pd7sv=DVXo<3|Fd4&P$C>Y zfQNsKUH`9RUAbHM=j@TIx>nZUAY@*FbF`B+N7!T#gastdOCX}NDNn3kQ*Qtwd{q@8 ze@Y&xE_Btz&jTO?sM zcy4h3CMJPO=~~ziRR7j?-&-Z^BR=l_XxqW#FjcWHi=yh}MxjH@sz6#;bC?RlNu6HaLypV(o)M|fRjZMF! zW9IC*`VePsFYwW9qvj;rFJ9~tZ?TntApi<#%PGuB2W355t##Tmi$6#-(Z!L!w~)KF zesQ;C|qGdoZTIE&J8RJU(NJBFv9x`jdij z-7W%qBP|Q@XJcUdY}th|bj43_1@o7&1Es)dWA0|fQy%1{e`^GmHD;s65$R+#yp9C0 z6$SdN-i;ZTE@X8Ioqz`4M@L;vuA?8i`&~sm)%2;t1zf@(aT3zxfO^KIvbT!ZaH0A3 z5Bd(}e$_0m8L3o;7e6z@-Yc|Ob)wEccFpK;KwY@jcvYZ|1EUi@^U|?F;?AG}mZkIp z)(9+@g-;^sNN+m+JhbdP&+>^ndyvE3MLDW(!~ld50Dy$3fTaU<+VmeK^bkCy-UQdu z@Ous^I-nx!hVeMF#D%CfR_0yefTH+A6y0 z>e}Wd?3k-;IE3erJYNNmP25Lij!t2W27E|Nc^L}h8UH6e+~!M9<};N44^!(ys`bBe zQmmk!ebZ3-Fi8jL0f%F!+11w2kFCCT{hIhp?w?~ih!6~t5R%o^oxng@tdBs06P1AT zH~u@B>y)P#3faZU==~#%(^!NYDmLev^9a_b@c8xk6l$AglO2Q32F>_M5*7Uvhrhms zC=LlL;ug--g~DisGbDwy(P_}QaPG{k7Ay{OCmX+{1ghurm_SFZ=m<8D_?93it>aPi zSH3D4`P=vpM89_aaT7KDn~7t_PFlE!ze5?7w{$`dgJ0~~YIa+7h&dMQ=z9bAz^x%9 zfe|8Mfr%j`gn=MPNT{Hydas}QyoIXPxL)_Y!uP%I7rpOrz3+R4?|a+?0dITW*0rr` zTGq9#Yg*Q|t_rE!K0l1?-Cx`N5dQA20-&CNIG}(cl_3HUAsHDN5d|1XNf=><7#IYV zcW&bY~vq!8T&Dp;$(We_eY-?Z#C5#_+;5qT#R1<7IJZ8WswX8^RNg~ zT(rCJA)YXlXcKAdWY>T~e$j>Pma#56`oBbn!+ehERwkLXVt3X3VZo+`g8=3YD3zV% zs6H6$g`guoPI$Rc{^P(&0wlLPtux?qn$k!tAxdNd5=kLP#(ebL{wsH{-ATZp6~JCo zIpG&40Py)KolI_|mP=0aN`uot1udRo0obj|(!hS6_Fed{eiYO$}cPt7lh#jrhwFX&1a92-y1fV0g3Oa|}P zMVhw#L%aJZ@3)8GZ!MPk&?cTeUn2v7lf|UP&=D9*;3a`++R$`tHgy9R3o7N4sq11- zkps1L)OeESn{ue>*zg$uP12um@w+sZ(OLuM1K*Vo8|;ZUVrDj^?^OTUX`_H zgE=!Oc|qNe!$G(BvZ(ps+V57~cA*=V2__`F9VmV@^KU21*wSlT!0+8UeSMvG4?XAu zm8zPMgp(^P&U@sS$20&4uJ1`54&qsEiIaD~^H(Jyxd6g(vr#l~UqtlZ?f z^`Bg5pt(tNQk7F$qVymk=D;)hd^~!loeHSvH$wh?S9b|XK1R2Jzq}y?%VPcy6O7^M z54A@vIAy`rxBn6ll4-(n5QCh}0U4Ufh)5ZrHq&&7t5@tR8gPIRg3o96wsU*+nlHDJ zqXjS)4`&V{-@(sz1D#XJ@M8Y*u#=kK<0>2}-lsSSn!dmgtoGP8|4-zP4zm2!RN~~X z81Dc0+to~+Cr9^Oum^WPf269F60+0-3zWCEmiOYA{Ps)M)6c=u`nVe%FTZxxM}3Et z_oGeb0q?ZE>B`uj_!x|b5I8;09)mlAveIb2WFQcT(8lHiv3;^=GEH|KkVE|JvHwkV zlOP}ha?xeU1$S%Ip6>zx0!SL*HFI+=_v~>N<@$>^(zf#3iP%~Yg)K&u+W35JXh=XI zYTPh^Jh|h-pIqET&0%O%Cy=eP?p5ENDEBNdTATR2fW%7ylG=um(qRd`_UTia|EfihLI#lcd@B@nz_3_%&EoYV5sWBx@N2Q+I%ACyBd5m)?LE?X{}>Mj zs-Gv%&sneVV!J8bL;!=m0}(-80ZhV|?RhWq_dyI8YNS^}V#p znSsflZIJV%I6If$ZnQulI|X-NkTh2DsCap39;~xs?zS>oJn#}@*g_4T6a=agOC9I; zrf5!#q6e0KM&AbIiUoo?Qng5>aoSU&EPq}F;^lqqQuB!$;lkB(weR#@8q#%O9MM?M{Cuiq65xPiFj@e(De^+Xq`p`8@s$w$_M9?0 z`h^Jd@yW@UKlyc5&0wUVSmK+`no(t-G>Sdm4L%?j@7?_N9smUZ`PH7{n7(;G=};I| zaR8_F?)LqQH@4!xx3>o_a_ZauY~E1rv-DNFbYF@BiYLeWr9|lk!m*}H>X~u>DzGJf z7T{cg%k(3GxyRx)vjOCjmjO3K1Pitv@peyfo<1h+Omn1ep{J~om-0|E()I89+n@OUC4&`N zq*l88tL1Fsd0p}L`bG>KdL8K58NRH>A^E{?$<8e@t4sFp65}KEz%rArHift( zA!PgW`09?bXW-kdc5I`u5&~A4zAM+F&06$U3{0R)|8UmXk7f=JJrKOe6%n#xjlG5f zOt&S~Mw?>bm)VnHk^{&91dX9O3n^k{y)_AYOsdK=e`6c&)5sZMalP+f+;};@BY1LIltI(5Bug=Gpu2J2f9(ZI@YHSJg#A zb^V{O)XeaJNRz+0jkp6`>Tf}fMcw?-%fsn0RZ+l{&H$$fpTd6Lp^#SWUFX0yU6HoT z7eOHS$d?MiW~ysTz=r1GoLKFPMe)K`Yy=>1&s8UW4fB#SbH4ud)15e#imC26(~CsQ zJKrCu>Fj(%T~F-W>L4fb2)RmVVmN#SRQl~zJj^4(dG5P`jQ0ciaa@* z&g6k+0j3{u$Pk18k+S$8|q{YB=e=qtjos3@p2*B-{IcjHbZ!)hDn?tM~y zrA4gYYp34y!@M5<)>p{h9Xo02^uw$457lZq)!hq_9KaUxf14E$7+yPxdC=)}U0MkW zD7c8tCin0HAS?ijpU3mitk+YpN1e8&^>Bc8$9k3Ly*U_moPaZSU%z_px-u~`(goxX zI+TWX>vBR60%#g`6-*4YWGIxdx_}$GmUy|eO7}z0EM@zqp8F0jU|vE1^Uq2F;m<4D znZ|3wqQ6VBssa5!?}wSz*C+Ywv6s-j1V4V2UUCgcd*k(5&U+aMeFM5l1msB->fh>z zx%u}mC*-3-+Tml?%H&zzaZ>yl2*W5OkwndX0|95nbFv{|g1GjmzEI)HK~e&f-wHm? zb3;Nah!PA=#?HjovvBoB?fEyA;OIBBpJ+Ro`Ssbg;4@{A9d9M=sCIFhJ8R_7-M_8SG+)-@gHx@n{JM5C7(73fb$}P9LTMD?sV=EmM1kpxa~t@`jwMB z)mS_#N=GG}UJ~a4*!CG?bmbYBob#sgrZc<$pqpfjhivC!K5FEC-g*&?{%NcLJulwjq z_~=b$@r}50joUtD``JDZIrKDL_jKNUg~OHS0hJA=#f`UJhzG~Z%C6Eb(t~&2pzMI* zOG|jQb08w3>TBLQ8~p0p`ss08$PN3X0Du8z5TJzU-4rpA*!8kZ@g>+-LA=Ii9mEdr-$P%X`K}>gU=;?Hrb47AqW8mzm{V@pts#c(FdH`&@+hN za343&G~ja<(P0-2`#Wo8ub{G;rbNc^@8HR=Ma`X0_bqUMXP7BDUId%N41ho|D2m}k zSJ_Xx9}}40`~8_rznf4{JD3O*U)Tm1W9^cM_&We$*hvXmdmmaw-;UW;l)(A!J$g37 zYl6yL^q0r23K2O9GY`QA$Vmc{#J^+0mCJ@ecXBU4@6oKzgCgJS@WpHIlJD6u_W)G= z`neCfOZuK#(+bBF&XOvXDAI4R0`W6Z^@V3KyL8984)4s*z$kyHY7tC(?1A2whS1*J z-U%?-=Pg#uq>J=+e}#f>#ezv3;Fk?Vs9HGiuCL9lMyBI_eQzwJK=Nyr$KpcQmj zus~p@KfeL9%AoN~%jf@jwsz}P?zj^`Kqo5=<0uH$Y;U@t3-xYg07GH}aML&{p}(+? z@zg)}9Xkon=^#2Op2W&^tQiZs?Jkc3DQpmgAlXI6=wE$$?%XQ_<$5d0R5@6_g}0&r z0P0{{jyDqv{jVST+@f0)Hlw+RFK%KK8IQpMBiF+=vngD?(PZwoMs?cVk`6KDYASNj zh73;}ekRf$4M5TO|A%1s_MPA@AscI7>Vp9U00uL0X@wNf5TY>8=mkvU6t_8QRlq3vCd%0N4f(o;`HNo zbJ&4ooO0*<&@f$sRvueo!-Muo$9{eAK1=4`kAn(Sp}yA79b5 zZ|E00ty)xMcyzhza>^GVD??7nj>3Xhx+z!#zMF#SynGi#2>tSRR;!nWukBGyvpNHZ z8ZUsdh)&``ZS{bb0HKPRtp&rBN-X`OO!-$qrD)|VQ;+%3%3trMx0cs=PP8jI05i4m z`?3-saH`wjR4ut(06n;e8d_)be!gVnKQIzjR&}0l55;O83l;LhXc@gpHXAz|C@wBD z%-`8E{W6u;*?Ug&Jx2^?V|g;QIS=w_&Z$`sr^V~{pWnA96be-{8+5QBHJ`qG_uf1Q z6Di|mPIqUJx?cT%AfEM$u+4dkhOyyuAU18M$hn#EMg#432@V5Lem+Z$k`NWs^ z`c9aJoUDR)AqW9F+2a0$0;f8LiR{Le4xgXh?B=Spf3OBz1wNx+TFCeWTvnqU%dE+L za0;Zx=9x99y9+Nl89zq0Gg zA~9ddme1+JNd3EblGtzvNXYmhtPZ_ud^VkhweGy|upaUZSC?~!%3!}}+c%r&Fo)}8z*E&3Zzg7$$5OZ|U+ zNhMYYLJ?{_!A9@~j^>{UWAGrBDe|^!KHcW5Q|v0vLrXtFV_np6$&Xp|%-6TIvgO3= zABq}whV9>L`o6k)+NbWnz8HC@6pUX|Blp!&Z2HWjRelu=CX$x(9vPh1$SLc0^w-ob zI92wbk^(1{YlN!X{aIY~zM|@IEE5_!^n^pbKk1Gs@Bk*Ety0S)#uDQ)7-xs3eNVln~{fDsp+@N%+;cPYo$MrU@t zs$z;)%iflM##XXay%^}iv>rLhZ$a4;{M%pH-7A+im$fA_M9b15aQm0@9p}l792TA! z9*MG@>IGMLd(TRYzbl}=f1Q&xL~LpIGegCac_k{*#(bo>Pnm^RqteAX6WH{z(!tm$XAQy^#5{eEv=@Kw3$S?d_H{>%8jA=TLS^KgVQxu zi#(V+0H8c}fjENBgRjv900I&fCAAV=o%ZV+H+7*lB$8c*@@yV8+IXF9Cao=cZ{Oto z-HdZoZfwhf3k_5R1ORp$7c@x%zt6FqzrQc46V}KH*S4jntl4v09{be3$Jv|z-Z{Qz zdlLN2$z30a^-n0M=y$_>{c=*;KkyrM2|dMymyc;G2mt_-aLIJm0-22m$?A#xKQUid zSJ^qZ`xEYZmLO>QlW6ZvW-aD7{x?{3Ms(ZHS8te)Z_}A8A79TduY2eL#0-nGMW7@p zS0W=H%bff(+M0dX7uU^bhzVhe z!+-8M#gQ9}U=j1ZR!VjnG3+*7w@$JZ6Tdke#!LiFZI^mi->rt309UX;acOp&0Y|O% zJ)eNba(<-?QYh!7G zpCKe~>NFT0hWSaZuL8A#zx<}Z@qEyNKsk0zZhe8GqXYyZKpL)pj3egx1&^nq><2FROp= zD|>=0RV|no{FBZeD|-XOqVGBN02BoZ6hq9+FPKkA1OaAGg#K*-mF>1*<|~u=ioIK% zV|$9IL_o%H#E>k;Zh=bgY2lCsThr)kiOlI+YDoxLc2y=JqxtQ-4R1>i_U~u@J^l`3 z@6w9G&z@ds-U?5%L0x4H2tBZpOJ7L@Z-su5t36sJSB?M#*ibdu0lscZnP2i}8YNtO zBF%D|inQ3gI|_`F^M`ntt9;_xPI*eFIK6NSY&kOtREm0CbrV>B&ZaX!JgH}$quQ`M z);U}~cy*wafUxi~=>GD(C^f3CH#xJ_`kz~(>YP_o#hwI1EBFq8L?4cfa2x<$^6|14I=n3CGt%bmT*EzsbNWy1X3g z$|OlnznO=2vT5qHUkQWO1C7G2d9@b~HDC^Hb8AF8kQOqh*aI)IZ5^3_c}}3Teb;i# zUADkL?)kV={%;p3vg`R$l#LV!O0L0ThSYI@IMLZ&Q+dZAC@iwNuN+trv?Bj0T^J!brCG?~; zqv!R#y2qIzDM~)fFqv9`fU`ow(|Iy-!25p#uRsC-GSk}m(Ep9)OXHr=QL5vEqzAL1 zZexrnviz9R%%l~&SU#FxZ0-mBn!8MWReB%uv9q{ z-kp0TD^e+2kRB>ue!m~7?`&HQtV>Sp35|TYue}GEI&cI)1>W2*8-&Yi6B~XzwiEBe z(qrg@|R2?#(!P1RpK#}!U;=zz|*;D<9d zrkQW~0v2(*nDs1O>!kYLl#HU!@w-KYg4%ZODW-sZO9E${d<+*_kEcuZ zQwqY-vqI6I>(<-Fm-z4ZCu|YkrtdWF)d>B=FNJ0HDEE$kqwGf*&!MoxZDVq&ih3lvI?_d_1abc6yc-*9&)G~MIgk_%s_pr8Wj z5sM~5bAHNFv3l+$ZR>w&+ok{B(M9PHQz>^i`0CV-NopuF+XO99C0-`VW|p_OJJ z0ZPY60RcH+NMHm52nL7_#!l@!`fVA}{k0G6I@s74yo1EF6*)4vJwwc(9DsBBv(0N6 zo1#Ea)^2G$Zm}RU@tnSWiF_=@o(3`hYAgiV+N8@Zj=|RKwdL>w{qZUQole1T))bxP z{EUE{UXptl1S~nfIj(A{>%I~{(|*de-oGNjL>4E4*B8^Os9bBQ5A>(KF+s!*=R%cc zxsq(f(wjo(xe~f%;*>h*bGQ+B2DfDyJr)r+3|%hx810ovalM~Gq@-()c1RB0$In*PQE4{XDY{3}Xn?-Q*&hkbnl6kSOJ*Fy?uo1k{PO=DicZJH)o!Ot zj;RCn%R9%;o+}3`unBN3(yVtlYmtBl(5lBRe>Z?c+gyI=NLK;U79slpPqT6>Tf=m z!7R0&^80W7PCWOP+%fR%2_dJh_rm(=Zukf*mZ<vSh{6X!1 z=vUp06l9V~B#{*n#QFw~+4%^co$sFoxP{t>;UOLUB{8Te$UkfY!fKv)5;E~HV)qwj13N_Yoi(VZb(= z*iiBuC5oPmp&0mRMsi5Ss+RyRx&dZa1nnH_vg}e<_`thTb+}49_7vYd@{C`8$RKgd zy>j49eNlU$WPi&JG7M?EJ7{SCPSr8?l^QwoYZ6r-uiCVM%>n5J^5hL>Tm&!L-pNz1KXsf{SC#aAR52aa~O4|3U8q&&;yw&_RoeC0`wz9l+&2otW z<^O+u@1@7i_fX$S(pt=wfSb8CPR_LgchGv80l!C}rTXESc=)Yp9zZ_o_&XzggdH3* zgjHAl$}DJJ1dW7Qr?x}nIcJHLZv-8h4&(Y>MH4W@t^vVDuDIZecIMoyAuuvc!u=M3(Gn1g` zX23{ffKk2JfS~ujLDmhY0aTG_k`JZ=hb`s`UpxenF>20XoBK)ttC^Ae>?+f&fA>`sv;a6I%*B03m^v#&MB@`!nrYXg`iO-|=tbHe|zM1Bw;| z5e$02e(UsA)4wO2NEll@fvxUc?7yy0JlLBoZT7-cb!hQZOuvWuoyHc9QEaj3MZ1*E zJbnWR3?_g~T_f+#A8`GsaC$8m8*n%p;8gfy;^Q_)f6aNwqr{9g;$ z>#G2=0^=$%s*~XP($nG98!W47I016_%|QLLJi=kB>i2fF37n)W9n)KS(j>Bg2h-7R zrh60e(N~_BRRzfOpzYq`KvU~AHCyG$pyMrc7*kiPP^V1IiC4H|e&?ovIU@mT;Koyv zyvb#M0Z;fUtBUYD1y}yp>H7{>N1>~)akRPKXSzG{YRZH&N>Ipj-`5VY{WbaPY z!I4-B+T)G)LPO7li@e%mx;(dr{gneRqHnZaf~@l0Z??OCoAbaVTv9+vG%-Msz#ufP z?DAs0q(KxV0;y-V8nbXe&fLQUO8)bVRl$c|zsozk_H5qms$mYmIFH7eInU*-+GD~7 zbl1##iOD*>IjQ+`Y5;icuX-RlHR+Hnx@zP=N?Q#4$~_Id!R{_COPOO~a_0D(Y$ztWOQj2`}6Z-e}=y~HS4p}=MfMwai;f&daP0%ik% zVL=`MTOVqQJJGZ;rZDnhMSATt*Pedys-q*k<#F3kqx0bt=9`Y{lddl%P`q_p7mB&#TKZ z&YA8dJ->O}Z|pI#Y3Q|#d(eMLTSbONG_1|QAOH}NO>dTvn@=w4S^l++v*8@9@K|?# z_xRpLBmci(Sy>Pgkv&Ph-VH0*dvyQsUV!lbo?cOBZ}v@#6+mkNjs-$q^CO$TQrR0p zr1^C*h$mu7vEl2sl%}i@8Zsykp3S3o6+GV!hQ*`Nue9a!=*E@n%i_NWTiWpHsW+P2 zH}JL5ogo(e;D9UOfkHA%EXGcJ2ul5<)iSs_wIl+~FbNd87XfkZJbk>Mk^Y^Y$B^~i zA4TWDP!G(Ci`y1?Qfu_A;|*!au@3^EO_e<^Fj>)TKvmT9-W?Xq~bb5Sx*0D)g5I4DRHYo2jCx=y&PLCWY3 zK8YkG=P2UdFx+tXQ@}!a08WinhGifRZcFG`C;`cfFH`zT5i(2)Q5~ zl6iGRf{D)u8AzwY`F_kjCqLt6kOs5v0umd6B!e#()sASAN`&Z=uTMcj`jZao(A+(U77*qn2t0I?pmEk?imwfc0H~0$3+0ATbo3n37fz32nn0RdsdH;&YTL|I<}6+DUOE z;AeBaDn73+xl+Nwb};Cb<`HROGh3 z+O8MRt0dkM`f7`m!28*gKLsiBrfjK8fZIAdbmtbWy3fg`b2K1$-O>GC zoy_0kdmh$c>a$OW3sp3n!db5jLE+hIJVNIG6)~RYWF3*^cJ%pO`h|123U-zpv@;B5 z0eJ*eh=aGJUyX>RKh3_Edr`AU(?e(EZWg=0la}J@bLwyiK(DagnwMsFxCTH+*deA( zD3!0Z@%~Xf9re|XB^O6J%oUjE4nd*RnexWe+z0)%8dNo|e*51%B@@H=|En%jNTrV zL)S^xu((ejaA5&@{@@EM89z60=*& zmfi#$j_RdZn5K=?-wRO-Kkvzal~;Gp#6h{Dl1!1_6lAfnvXvk?G*076HAl~LG1 zm@Zx=@({*e9lRhc7%sSg64nS1Isyelv!nvh^1_v!QDAla2cXcFyz%skh|a$%KNg!joiVR+U7z zt0s9wlfh=RIJiD4;FMsCa-$IQ8hFM6UC)a&3k4;0;>@LQkuwy z@y`RGe`)>!WAFP}HoTs}G0A7^5D*gL1($Ug)%nQ)Y-}99rNedE*a;%Gkc9R3x_7ae4{th*JR9tF z{{MiWJbzQ=%x5+-J5Z3qU98Z>CvnGe0NfS9@Hyw5B-HCbKs zxar_LAb!P^cetpfC z&b=H98V;{BA4CM3iyVKP=wQiR@oXXFy3hv9ri+N!Jmi>Ss&|iS&;^ogs^8kUauADU z{7eLe2|fvR1j?~yW~4+sQ+tQZ0|y?R4T0JvqUtWEBZGLi<=C#U**^TXmW>~Sp|cM+ z6BG#vTId)rO=AzPeVhVETs;;$ZEz>ON4wreQqkwsX7)WNDVEmRO($0e7hW z{(Rg+qpC<3wImBqun!P8O4PSl?f?n$bii_{^nM;gHJngS0L3Fsr)o2K5p@mHj8>w$ zYXTDyyF0|PF;Ec4s62lBz;W~d?{&b*EgN&z*Gdo**|fZ{{}Y~DS(wb<9`$M|uGJNm z^%x3YD@O`G0LK^c(BGzK(mSE%PM5$xDN?0k#fD6oGGxp&2S3B=N~6%azi*QiKE` z=S90|XSMUut9rJuaa$vz0ssKWJY|nu;!00!6VVa4PAFbp=6@2!=gWut{HOm~6k& zD?cw_bg%ggPAL{k7HYS>92 zob&T`*AI3gQvIIuVEf9ZOJ@UI*ATGrLRl|bBNs+RZ_nqqHm7H;j(y#mx1ewNJRkA) z5r@2_&ezet1Oy>DO&CMLK@eoZxdwa1e@M+V-T)075xkE&q9SX;IJ~>$vNcarkd*gY8MeYh!YH_M8oIm~0mf<%O}V zZP(_HymN6M{xIc{{@nV<(eb6g2S3844AfmEnk}5oy{VB*<2_8;ZAp2RhUD;ow!0HZ zSfRT+)j?hHMKkz|L1--nptKf@7QmK)8$<=!a;O9dHUXd{L*n$U?*(m#9FO9QA9ViP?zT?66^KZ1NDtD_Hj??A%M!T-Id2sGz#UXTb3w%eGzjrfnfL+O)%&1-Tw3G+Uvu%eYMu){r;C2< z{U#ss!T?J#b=sgvtW_E3b-I?obJQegNDs9bWmj`q=u^ z20@c1L6aqI;hWt72nZh4T^9Pxpa_>s9eT|Y4lO#+mz^HdfuhaGOF;SKEz!-_@g{}531CT4xC^qIjtp-;~95CRZ@5K@3{0`&V9RCAI_LlIpw#bOYyMWXY2zOqeiW z!GiacFBN?nQ@jUu$0H!t>!UQdb1_hh4T120(xZlRvY><#e4j)$j9O z{qb`i20YsDC)530rDDW`N8tA5s-8^M0kXxZr(Kvxj1oYuG)b&(n<=NX<4>nnsfgf- z?s7i>(Rqe4$>44#e)B04<~^3B4G-)jZ`%GjfY9oNIJ^s(9VF(y3)ec#fR5dx-?uKJ zk%R%TQdQ(UM1IZ}%RJRMEIlkIA+*fTf#Cpxe`=eFeO0Y(QsT!?9v!(IRF3A#gc{8z zmmz_=ccL)+o}90`M%8nA(DBf%SDVQE_r52smD-%n;Lf$ruXovgvFDg2k=h~b)pVup zwL3_jOw^Xf$I-Q11Pe-DrH^~lF}`lP!BrkyzsLa?EpIR;8>+%dE@i|4Q#kuQ)PBp) z6>FH@KO9TkLpvT=a(S-!32YQvzz~7l$s!WtbkV?e*VlbP#8fPewwiUy*5B+}g4F}Q(EVC_UdL2urpF{y9`qP) z18w6sw7{@7qsic8)WECI(}(e(pqN{3TO_dAF%WuLTTv$6-03`e zGAB>W=8r-#AqW8i3SXri_H_+X{P${17C(Ffy&n@3>1c_=1GoHH?*ZvQWU+qtX!lsH zy0*>rTDOn1Ks?MXD|KnTZ0}+l4O7XFw3F%vTuI(mKwTS_?q` z*6Y9*z?#60d+qDX-7Emoo9(&Tfwg3{vjXG<#?7N^`L$8lAEuec+uNtO#gqKwaLuutpK8@mdocU_cq>SKreL-u}odB_D=eu9+y#tCJqxsRRR+jaQdgeY>e zqDU6>EfCHX--EMt5Hm1a0E`Sb$9(^Zvb#LlZ4}x=uM7y#Ghk!vtWcftflvlh$O+L5 zhOQ5{@@UBuPPQLi@I|53XVmnbMIGSCZ6%4jmm10k?w*3Ko^rrDY?sZW}BP1a2QM& zk*ajQD&vqf+J?3)hTwJe$2RlxQZQuzn%14&mjnbR(?8oSm=CXCh5jb!zAilnTN-)u zApZTN55BK0e+g}Z1^|T#{3=%tLTZUi#_SM;0GYJ8ZgIY*+`3*L+}-0hhooh9liYx8 z3lzY5+S7h?3~&n1eFpaGlgp6oExh_%cgxy@v~EpNs-OiFqjEFATZpo@T4B;UkKKI$ zQun4*pd--`5C{wF&MD6`D2MtC~Rp zX$SqvDW2acUc{|pm;#swol77PD!{>fir+sHS$PjNqv8MpVT6+c3Pth1Leu-1yYaMC zzT8Q?VAK>r)opxi|u^tcqjnY@XxT?;j#eJJz93;d^HdKT<{-&-%BY@ zKJc4+y;i4bZv_}e0%+V1kN$pEdCrsShwq1r;(m{7QBXa+e&23YUwABw6ag3}1eqWP z7(z@iFqfU4sjm+=O!WSmj7QEE3tL>gvGu89e6ne=fJ}D7$6Vfbd;hT;X!93fUA*b3 zVh<1ygc==6C$og92O0HVyX4kBro&@4vLWNHMfNx;%lvi4?2ByLx*53eBP9~0voI0- z>@UCg{Wi;_jId#9&w*V+YLCx)Yy!?nr7{YXsPUaYM-d|%vC)*zOP=DRZ0Rny1*HNZes&Kc)hqyH4X5nrfeQzV|mF7KS}Kf}IN{Z!Tg zRI3Qzu+;p&0HnxLIX-5o;q{?sK+|Ee&UrJPq&RR#S5~W`E2)x<|8BG0LWrz0L1=0+ z!qRb?-r6Cn009`b$h#@9zy`wOB;cc4gY_a62R+h>eeyC7VL4uVLfb!2=6iL3`0~=7 z6L)r=Tg(~jKsfLlvgC5DHl@GF06tW-dQ{b%5}L}=+Avxaf6jHDoMAP>XIklk5P+*+ z*i6kAn+rn9df>GePqiu7Fwe3<>w36JOF-E-*T`UAnj``wV{NPHw3x~dh@!L0KyqtvamIr0#KM78CV9v>*rjTcSnXmT*sjrJHw&uu$3 zTa-6`*B`=f0W6ootm%Hu;GC`p8Z*^Xur6H9iC7uPdD4^qEt5U22aZK=4mc$g1RN|? zzTyxMMbFZK?|^P`@6iA3C|Zcurd1!zQ}`IXIh%P!_za@5=M?(DJ^;;H=O%gr#T)ri zZl4LC+eLDXLxiT9STNKwaTk2EbXoi{zfehResWq6toSP~m|F&hHqPrCaiZ~gaP63O z9IflMV2-p@Q&;D|54jX~8OO#92g!1D8DLC-snEdjcnv(}GbWRfHtR^^xDWZLzK#5j z8vS)mC>e)os1@JEwK+)Z&_V%%qx6%Y;-pdf@4Czia7_R*P=U}robz`0m(^7Y)8%mk zJh@Uk*(s@erl?=-!AsfI$MLZ+3=I29Kp#1_009|1ZZ?+b-d{EJ4mbkeX#$08_*O!! z9T52Nymy1MV7K?@IKW7Z!tD9|i8Ii^7sWKD0Tb%wzoz}191S1~^f7RqXWYZAj_s6{ zLy5QZ^ivu+hU^am$?99mLlGRe5GYp1blcYBHg@^uObOBw@)`heVJJ+xicZQ_BQA+1KT`|R;TRZz8^1F90$-Lz$HK+ViMC4qm0z{Vl=m!mnTI3il^uJyvZii zk`K!oFu!vw94b(Ew)cMx=cxTGaJGthnG(ly7z*j~Rt4gxhNagB7!Ts$}U z_B07esZ(FF^X#p@TcUfavS=Kd|D9%J=COhUe}Ab#7Z-O%{eA!-{c{;SPSeex5Dd%iU^=+PTV|#54Do^|c~ha$%|BBg(ot$*L}U1lP{$I{uh(ppx5 zJGJQbI;>^1)zf_>9f@0&9Rzd3X7=&J$;z?Sr)xn$$ad`Ru3bD7cyKd#uilEIgpFtl z>6(9}ZX43pytfAP%E3zkl@S%2r(k6^!Bd{`V)Fg=0b1_i zb{4@rLL>J|zsf;(V%0cbon@|xURgYv_{SX(D2Bro4UK^h{@CEb0C;1FJ zKBx?Ee5ig25bZ#xiD%zf0==<~GL-)#HN zPWF22`7>R<-2wH=d*sJtf#-|C0~Jy37j)~2$+P%xY>tg$Te43v;8J;XZtv3RM%l9s zmu(JoYG!G&uxN|6zzK()^B4fc=f?*~P|qR-xn>e+SLvC#0aVue^qQk2)jk?o=RJm5gyVu0$KX{+RfXak&rWC4@y z_f?{XBV{$s_kQ<|{_YW<+S_PYp$IC!GEwJM@Q20QwG2ak0xnqP2^!#KQ|;QCeBO=#2r zU9?>?s7d*z9RH;|?NS|x@Hy`ag^t|9m|bIR&Of)m-H+E3GLpKTey+O1 zw3@;J2IG|hgT?#hwr@v+kMEtOS})8n0IB;clTDfY#8vy|^DqE3FO^fBii)#(V?}T} zz1Z}aY&Pc0;Upq}*}<=CH4b4x zOgRw+*{(5m4u)0h2HF&R>%bA_5|t`TjIH7NBddaUm}B!&o?HF^*)Znb0bjnEpdHFM ze4n9zdy{`n5hJdb-b;a1j)4QY@0d{2f)YplvBUnldC2N>_D#S3$9JQfI$1`@4d7_( z+3V9-RJj>%L_Ljxa<~3}?Clvq+B+D_=RX#{ty21KCoZ`V()Dq9KzHO|p}s!edgZep zf0=JL#K8KEchm>%coUteZ6HDsBo1n}I>o{D5*ODL2c-CjNgp;(C!Ep-i!~ghW{1uM z9qMgN108y!9L~F8&KIifumJC4zy_{-_AQ2LZJJh9vTz#Zk&c6GhiKmh|O zex>~CuLDUjdqUn-sMx8cZ~W&yG7|w`&al2A4JR({1 zae7LVFo@zRZJSW@fvH2u@c_crqGSS5;e_ne=hx7V#v?&j)0&E;W`5po%2UNu{;fr{n zUvB*hr0U?-0!Y2f0z)7`oDu}T$s~j_0VQ~*GD#&*VsD#jop&j_jpP-o_tWRd<|enF z7zc_Qb3av^0M~)a_++Nb@BmuJmHtdDSmk<@e@#%%DXX&c4BL!S3?vCA7YY_cVd|1( z`ffc}N%gcQnm#?FM^9>QWvwm+^X`r+k41e0RTg7Z?7hJqhc}^1y6n7~GNVTGY^DnT zeJ;ksty&bwLI=Xz9cu+_-21>n5S$NZ4}h0LZr70-Iap;y*b4o^JSd^qcAQ%fG>TJ?)u-<9sHt_|%t!2+&pQ4xupA_Q9|gqz?C#-K!^(e?C=7Jn!q)ix zCqLig*|uXZ)Y}uyW1tQIk~SHCv2o+cO37tjwvB!Z$aj0ra-c@9{JVgAlv)nJx_o3a ztl&!+t{E}ub06qc&JV3$|Ln)&>3o|@80cTLZF9*$A*bVf3g9&TXlQU)$Us5`scDUt z%X|3iZ0L2mXD_Amc@TPC>ZV>Xk=+DxPl5W780iU04hgNQh)(2 zCYdu%{yM75{Cz`Qve!thx05ijx{8*T#J${~xmyc(YDHiF#truB1 z;)a_?6`$qp{cf}!;&fciJ$7=@|HwSdbo&2+XOf=6NeLu_B#@AyLV%${geXv;D0KZ> zX`0S=6_r-J@Sp#2aJ#u+ZaaEW&%G3iD_xKtIlsQrvIK;KTa7Hb(@IEk#?xk_AZ$zJJi+AGX}=;RsQI zfq{S&1pz=%6dg1y{x-^u{N5%OOFcff4`Ata^ptqm*&;kUqbG10*X;o0bQjW@K8Ylf zNhFdvypV z`U_rY-`}oxIAM{n@F>SJ>Nt)zRU5K$-xA z2J_wYm}}nB;dO6uVP7W#4D-~7_-O*iujPE0OcrBf^Zn`aO#NG7IeUdv;BOwiA2xlm zbla}&Kp$;NHyOmU_qtz-Mord03}sz zt<#2|9(G9pr!Nu;|D9FZDZM2pV}Gp;H5-SUfSYr8#=}pxi)1^E@%CW)?ci3lFiUIa z_{_^9ot)pyQ0IvmT7r+dQQoV4Zn~TWE>13{9mY)5@Dm#p)py^P5&a4+(ixQGIf;|M z?`Y>waUtIQN@#etUlonll-`J{QP<6{l)9P&8n_u>O^p! z;?J5nCAWGIkr1P!&dX)DhKw)$n5r{x!c>Xeyd)HNM0#BG8jF>=tAGJj2YvGx=Jsyv zI%_a3`R$!^e_7s1Q{85u-Gq=RJGegS`!%{Sf=ipc!`HIPGTs5w-+-D2XWU$kt7l(m zgnv!c#@Im+fDn{g8R+zr-!&cXPcD1p1e~@KaEi@U=|bT209H+sLI8k{X6}%EpKNo^ z>3{mYFVnicN1j9MX04NiHR+BejQ2?h+;?gb=y+MPbaCZ< zFD#ukL{!(v4(-Qaox8AOAJhE%=2?w65DS1UqP3^Aj`$IANnI;ztHj5 z-ds`qCOk!dh@6uOua}+<4Yw_{{HEvi7_UK#Th_;3T>8>cUEP)H?>^i3R(du?Yd#lW zLTVFTB-aje!{2t+bCQCX8gw}eRUE1|#4_h+?v-~_df@T`qxT`>4=an!&wP8Vl;6jRt#G;lm;P}6mD}EX))o{a**B9I?9XOy zR@)#i7AEj4cyZqd)lM@CHTSrwR5eOQ3B>uEx90>o!;| zSSNkU9)&PeWu)} zCuy$P+w5E%N5i`K6hHt-u6-E-N5zByj_(qUJ7@?Ode?Y+7!?!($EL5 z&%@JNpM9;YGb(TDxto}!$ii>6ORgxb(s)Oc@Eq+hHTcI}oxF_FZM?W42muz|QD>f1 zAYmnRU1t*6-}!GfrAtzzX&#~J7;yS7kKEgqFXqt6*z*y#LzYp4fq7-aSM0ENEt0e6 zt$)x$m0ZGR?T&vvxQ{b0w@jo(iA4@)6Z1^_YQGiF=&7_NDpBQaK-2quW#n?edYPbD zSnBr6N6}HnqSf^ax&QN(G)|%))(8j&lfsREQH52#Kc`anwt(Gte6Fo+QC^M==RIPJ z2EfJ1K5l~sBpCYL527G4mCKw&9X=aS+HJRW$lCfzBMy>N*LV|4By69rj}g89+l_N2 zZ^O6I8**%G?vtN|3Uk|3Sxx8c(N31Bim5cpz`w*i>|~{w@D^)U;u^itJ3nttZ*{2_ z<<`5v&gnU7%v1+J*MI$*aljPli6wPN59$(aN`84(Abys#86YmN?B^ju8Q+i{sIW6U ze2YxAAxL$6xY?B1bvXXdf8$isOZ-2X0)PY9UFEoai(Tw`Z?4n^waBa-eUg0S1DVdc zxsBE!32n5@DDxkBh~HkKjjg3PjsED$6>NQ~JZ)@%!JGF&Sx4PJ5QrydDoT7Oy{B4< z*Lj~VeAA<5c;E(SmpGT<3L=0d837)UAm4PHZwxt4H|q_DSp8QyK>;x74B?7(h30ye zYZbuqwlsiz)Kp3q>pxu1|V}9Xp3?-ER zRpLaDFBLms6dAsU8N;as(XM*#Hh@@HIywNHvg2#M>avW42u+Q}1);QtgW9q+qy!8I zV21M}&wzo^szyC2^@iyHl>`K{OiZ^~6wM)a>Kfv{MDPpGcEtMCiNynvj-1_uv)}L^ zukPlgUhsG5;bmYZrg%TL&0g(xN z?>GXs@pWNIYJp>O)y91>1D1a1*Wd$y)9p@9P|x`)@+?z6`Bzir0N&hzKhmL=R8KE5 zh6AZ2TaiWX_Ouy0og=E)R>DJYIZJL(oOE;!m>LkMr4MsDT&gCZ8eHdjY!eb%SzpC) z^4rNj0u5vPt9trSgcKRS6&@^BzVqC<#@2l0p+4K~C)KlZtAI0Q0vrbz+fwXo6Qa7X zef4twjjxx(_2wkcSymeWLJFH$gRxs2zPArJmIq`ALI6&6KGPG%oO6LKrMN34&5TlO z$#KO;0$0T&g3}VtiGCbE)zMa4iIQ%T-HXIb?zLE% z|83pmaXwiWGR~k)wC;eP__7=<+Lz#9ngVixDJjabpNTJJwMJprp5*RcH?*5Q6b4-p z_O^4#wje&%vZkNCEyIDMV)|;=WU_NbRYRVe{KJW3ujDpo{}^lPBB2=mclSEhM6$N-`_d)F4=9|Ueg`zK?oohzyu~R z9aDLUi+|jZwyfH9BQTgFI4Z`_kBUVUe$~Cqvh(&A4whlBZp}s^GIq%L3~r^5s0`DD z`9*!VjYGPvu|#>ud`AN9Z#h(c)^`p#CX)w*0E8x&IHf;b-GH`AM@*!~!;+F*0esa_ zU|6X}lY*vuCZ~tqsgFl7N*A?opD`1jZ}$}(wCz?Ail$hucFtLiI1jo~tUS86sS1GKJAb#(Ka_xWe+t_cA1<9mRDyVx9kECfD$!`qU}fW^GEM!1F!nEi)&c;_tECz z<;Yc|)c4nV-DA37PF9}3Wi2vX^$~Iz^3h9lupaO}b{UP#st0|GTj{wM#Ch)L%n8;_ z8ITOa0qtSzL8#w+wsZgxgdjyUmesa$Vf2>umI^8i2Q)O_+f$e?0C z%K?b>@YnNap&o=nt**a@yg;y6MKzt)KNM#K92 z00^B4AWp%Xfu{vLD6&~5>h+)iCMM_#V@BX2vt)l|cm*D4B9iyzkjc+29p?A>f7IRvl;q*wtCe-I zJ`L%!cl_&>fEBrxzaI~Vv^*O5Bs>w+UrHo)IU4sS1!B7IyF6Mr-7dbee<2aonrXe z9C0r>I1NRLbGLbaKtJdRg<>Ej?Ry_FdCK-n@lF=7CnHglP)Pf835fV&+A?PXnIU& zFKkzgdml~PYoJb$c(>018Kc^>{sO8XtiYuI5UZkU^Vi+$mixbj7Ct|w58i4F3nA>~ zeu})Cj>oI{m+b-bWl@l%xt-ViVoDc_J=MfacDI>lo6gt9zAd83v!`$L-RbtO2p)vb zQN1eY9uSPt@btgN+TdsZK~)RLY&H1XCSG+jXR-4+lUioH=1@rjp2G(&9TBjk5n%gG z*UZ~g#-a>ToVQd))w*LX#W~<$^ST0#Y?I{yqz+cs2D z>&}A&YJ`1Km>ig9`I=i5YTJo5RuaSj2dTuJzS(%~;1vKCO3l{eexolw;2oswXSb4{ zEW+(w%0nC!<5&gV^&4UrrpEGG-8XTOc3@uH0m4S4#{)4(lPloKBuf9V zqh5Up-3?Q?j)mocsBl6ACG6kb#pa8^TJ^ocXF31?O%w&q z$J`j&b7Q>r2DH(oMaxTq$}3Vx)1VI*y2oJP-J>-*$2#O~j5icI4wB>-5`bkgSd{DN zE1B$Hn|z&)jFMUPlGMszvMhY9GqfmuyS>tZyT5 zklNq20rzpfF!8N1wI`WhFHxF~%a`a-=JS==woYU**^^zW71@Rbf3HHdS(kKJr{>O- z&UY(s8A&aa&hM2pg6bmhV>z{!O6;aHlxPzlsEy{=a%Qm3@B3zR6f21YY9?c^x3&aj0jry*8OHRd(kJhMO=|LYkvD zGuZ?nAiZ4Y_nZzi0KVva4xF~I__Mfos}hK)qEY?D{nIv0-~-p%Zu3@oO&txvWrL-7 zls}sq&jW?7Mcfn!$HjXm8XLgwIai|rdA zv(B3hJL+gQyF@xoMm)vsrgJXx!;wifu#S7(WJtnLlx_if;pP+Z-)?L}y`=2qR`)pzotpxJ?C z>IiCC~s7lO>^SqsO!L{_;H@>KHfx+>@HFgER)JG~<`09jv+2yy&7+!n)FX zp;!cG9)6pyY>gvB8+M(Vl|x>-;%5{6F1!NMf|a#VeA{IqqZ`hFT#1PivYej>Tli!H zhH{Unvca7xb>DMN$GJ~{(XVI$Cp_uk`|MeXJMpzJXxhfPXwGVUDP3MUPJmpSBz)j8 z_Z3fgKMgmaDoHc0#R>cLpM{bA7;#12Vc~vHSS@!GG&SqJ4YYCcVCB z6NfjgY*kl2X820Q=a@{_T3D$5PS%e7n~9_W#IqHCydJLd0{DTkf)#dR4gaN*W!SD`DZ^|SP09R2Pj&&A-!`#D5@?<=w`op-? zMgaxSmxXnHxB$0%2RTGlAK0F$DH!xu>kw#fy#-|efb~IkizNX^1>-G_xSEq#GHLFB zsM}INOQZ3pcFyZm^O^(C!x4v|i5#We-R0e+x0{n4}ncN4RXTmnK~ zN^h~)2v4pgPn(mEXfAuTM3Vpzgd1qz;(8+rWF6z5bnHb=-dTXbSJqB^fE@44yHb?+ z8?YQKT)2{#T((Yh?0xVd2s~?gzP1r{+V39`o?)6c{)`6qgHTk-_8d5z+=vChVNz8T z1cur#%mU)un}&=0w~n%PqLd7ov)_aA*)?5AU*^5pzlz=js1%xBU=W5JHx+N$R$Xg2 zTNL0av>wQ|6ZUt_Rs(hzwW5qtI};wK(=*=*#ANZYyGu&19U!HRB{r2< z6y~@;dQ@M{rA0WXwU(@t)bI27&S!o8%!D8z4m-T}ZJD4JUr0be;_1nQm~oy@^2APg z_sO(M(EvaNTEjD%lH0oGJAHhYe)qldDg*=|KU_fI`Vm;W@gM*jZ{4SO~dCUF1)eW_Djs%YMBX)A#7yJLorJY<7Ho zwG-{n)v6H1(g5-g7sUI!`+N+nWc-mb1_@Rm5QB^Z(%oe86Q(<|i`Tf?S=KtM4Xl~+ zrcdA$AqBtbvd7tCv*ZHz%36m}SC#_n&*5ZjAKC0z>w%TIJ3vqfWp?@Nc3k1_VBXh#q-ge=4N(> zEgciJt2u*s*E3I441fzZzPz7fyPJcnsx2of5{j;_vp|mQ)j#Lf^FUjb0tO}+YSR2{ zS6p+AQvI#8ol{&sM6Tm*z^}3J_SLfAl54+bSf43>2IxJifP^6o(>Tykx}9;hv!TF9 ziPPL`Q>nG^SJefi%H{5-YA`wDnN?Dvg|7hDC;L&|zMJvWGSB}2*SCP)fv7;DP=JI0 zLwTP){5r&+`h9A5lLrCOr*VyfP09j32fMv$qc1_0l+~Z50khP5wd(d`Z53ggu_OQp z6bpM&`OVFd>?$;qGdStsCw-n6bFZ3T`hm?3*4=GI$);XSc=UY$gY5zF#dP-bC>|}A zYe4TBwnZNcrC!?sV;)aU$gS2F^ZAb!Shfei-+ofs$NU3IX7SD2x&zc5qtRd9gu4eZ znalN;XIYQW0t5raiTQqNwVI!PzyvTfnb!=Nnu=~Ay&p!-`P(AduKWonUSm2hP4cu1 zN&6}nx&w05eeawpy42m7A+Bh53vp{lsXkk^GSXYf^KI%V5ldh3@!$2*`EK=U2EF+GE@}g`Y`onk=vo{u-#~KlYprWw5xyrvZ})vI8p$S{Ofx&`wia!6!nz%3jjg_KyoCN9Z;i- z-097>bx1-Gm!pOYn;Fdt9eu8Tvo!mgUtx0{zLT;0JvAlO+R?6~%3JK?5E1GC@^gCD zU@dUGvMy1NsK1Sl0d_D8m9t7-n8(;|eCM?LomWifJ*07DsiD2utFpI$#rxb}I~5-v zr$#b#TqMAvkF6^%%9LdT58sh@wnV*}v{M1@>lN$@dS>a&bFwGA8XLtazjZ z0>{j!4*fI+!n_6Bc;lqhU86P!l~1v2Rm-=rvSFX(xS~jH4%r+)-)x(VJJ{5pFbF}) z)rA2vEh^4wWDpPlGmXFijtAT+-5#&e#RpmGsO`Y1Pxs4PRdJnpy~>s*OcN&n_nWNOICH5}Bc=B(5w<;u z`Z})|7+_R&Wxj^tOXcBCFR|aYPjqdgTIaEhbkgIq2djyGl6LmR4*cK#yBFYn9a_1Z z=aexwcv-6`4uk~Q9#9nra19MMhjqm0`??VF40Ub3^X-haiQJ?=BUWh}YmXwZrLEt7$Hi|{Xp_} z3?dQ8Pb1@F!@UgJb)&A2)W0F^)$)VoM3dxy2Oz+HZ$D?i_C`O)y@pdj6?#M#Ndf?u zdV1dM;v%iBn(5AZy4{AgBirU5Z76Un0mJVqtmc^S5k0X2U<>Wv>w~~)f~f+^7qEv_ zU})9>$5-S9TZ$V8TniV)JG#(4_4T|S#srJGqly>n!AAUiq$>{IzDla6Kx~;<@haZ% zs`xKWJ~-eDxKBDxh4WQrpxV~K&oHcn-TynqJ6P81akvNHR}=yyB;>%<#+E}nan-iJ zO|*9Pw}56o*cM^*Waz}lQdZ*KS@g1RlyYotZ>_uj8+O@3X`Lmebu)XypEga-tjl-ajizMCGwKYh?Wqse>RmN6ZP!A5& zTfJLPSx5v!c&p(=X{EJUf0B3)JAL7|LErjCNN1k%%s*89Y*}VHl&q}mD%Pp~>AB7b z5G{}-DqtR)SGE?f^au&3&Ihm!GftzwCr_Z6OJRsd?Qp$$G~8bYyDk!Z!dJ&P`+esC zLJlcy4&K8CY{Q*1aujxXZ;70E)`PkV^*RGNRZ}I2r393>xhNGZrX3r?xy=GS>tfD5 z_WwN&Tzp6+TLgq9^40KPaP3f72sY_}ocLxVJ5t$A*3(B*#l2|n_z5ld@f)ivQdS-; z`>hYvUt6SPG}3?cG)^4*OW!R@Ik2gN(V3A?+McC+^&?SueGC-f3?@?8PCIuI^a|HO%RYP z5*8hhk`%_G^^Qpia@|`bRQN&uKq`Bnu&4Y$0eWRcJa#`nnD%zWXL3V;YmWQ39q zoH0J9UfI24UUTyF%haYacYbi>UTP4V)~WXK<9U#rMA5693$I)KO14g#!zJJe;y{64 zM2X!kkO^Mx4L}G$%>WRUAV4xn0m{ky#u`}hcfCJ0rqagt7 zf zC{V_D6VOXVDL}S@Tvu@+2muT~aNBJy@&6_nf%0$!v*2|)1fNj@DvJ+S%Mi$EXH@)L zXE6!P$2@cV>MOBgDgeoz0u|qeG{dq7s?^vFDp;T+Xgax0t(#k`H?Eis?2*$TculRY zl#c*`?Xp*ZwS*<5mTJ0cfydF4>7m`6`A-_@9-djFDc(3h08a#NAI7PrpCvVcgSpB9 zJOZg37P-#o3A_&4{GMa!uCN)pALfh)B5{G)tUVU#Aq@}N@dJIRNg@B(nm2E*`gv|1 zBJ0Vq^TMrH=Fa}*`m#^!l|q(Tq3(LQe*I8&V*TZqk4t}Pw8)E(6;dM7^XFW~J%Ju! zV9VO!z~DB0X&q2sTcYYyTb+K~$acu~9ZSoA8QXY&tNNJeb5AK-cf&s2?1Uf$^tDER zzh*pOlFdi3(6d*ID@~LX-#>M+1dI@TpfG=bpk-LqLC8@l_fSZdy7zgmQghIxc(Q3A z0{R!ewPna3ojA`IiAsL~m3o5hM4vEwbfK(x-`g*AX=@D8M-i&*Uno6QfY}eo#9|O| z4!llYnmOyiD_pO0$DN!B*|!Qt9-lKocE@dtFn5(0Hr3|`lN=ZpKs`tDDilDXvkJjJ zXjPS2y5vl60PZ?Rmzy#~fv^JU^P&X#$1=g%w&B3v=|T80!LFHq z8(iz}v&u%r<-=qcgPV6yE4HzPe;TO7sKrAf_ihuO;)f>fk74NnSBs+bC*GqpjGySy;y;d$_?Wa8yCp$eCQ1iFyF;VO^lE?^(dK7@N`0P)46Ng z&B_x95_@1s0{KS(5NKEdATmrX&C*exb0^iJVuFDu2Mi6Nd~X8ZAFAL_-Lw;X2s}@L z5eP>lOXAB?>VM=pctug!p}~wsxEAe@r!u2dFV_~rlvLgQW3ud;EGsn54Py;BMgeBc$x2d2=+?p;N6hr1cv>&l7Eq z1Sg&f^Z$4tGZ5~r_50wfTLXiiNdhQL=L`pi{k9SYYf!?A{<1-PU@5!cj`4UL(v$AF z7IOe`qGI(=(8W%y(|pgvOZ)axoMp<0h-|hrs2Bw;lV0;vrMy42c{N&r8WvYYce#UZuqgtr%le=wRO~} zjnwf?R$Fcmj$b=V7jgJNUL@ZAapqgVdH8uiDI9X4nbPW`qf*3NQG00Cdw^~LsR8AB z_3hcsV@I}m0mng$0o^dORXwzJ7()VROX9w&aaRrkunCG~CTt(5LWtX$2fnOZ}J(l{a@0o=yCFuUACbJ*{ z5Q>Z+wzSpv(+*S-?*lXmRSuouY2DGkwRGBuwqeEj&3oJpe1|d4!-NCs8?q=>`dU7l zL-YA#soNE-)+#Slk}S&qy9nIchg+33snDWjdZ*YW(!baHkK0RLkFB~T+~$3Jj6HB6 zDJ{JyV?dOfXuwDt@u&LfsQB4jY5AJ)GA|WitfBSl-3||Lw4sQBxBd@tNKA*`bC+s0 zq25)y+#7$tNtJ~L+_KT|vGX%=AY0M4&061L(#d)^MRGOTn@VyGq{Za^vn#zi)@P$I zr-6I}2G*5T9$S`Ol=I3xuW2h9y}w99pLD*I;<7*gxIcmrfPy0bga|+k<{=s#Ep)w| z7;P3Bn%k&*rvEZp^N+BuM6UiRJp)==-kg!enc8tp$Ims=7qO9# z&-U_kown!ju^W6o*FI&n4U^qHF+t)3HypVe{>nx3uUpy_pO?nM{FXUw`&5Hm;O+R6 zj9II`U0FyI0pz=$`bq7jUWUA{z_Ff#6I$2{ZvZCi49FHyZ0 z#;D{M+7VoAB%a*)927R%OWU=1nQ%X)mVLhOfA?GIAT9dMSLkCoANdcsFG~_Fc0g_& z=X$DfE$F(Rv@~C0WsL&X_K&R@(KcmBZ|6*ebchZ$BWU8;x2Tr#s`lsGKCb|G>>$4uKeyT1y*0*nlGN<| zAN|oyq+qGlhC49U2)Eel0$$R&-=0gd@x%AMgdTCs#6^p9m z_`05r?!~{G7>_p0WX9D%J){7%N7Te;DphB1SAROtcdll_b~N@&#R=rCEXU=SEZ}#T z+->n&L<&&@sQLYt_cm`5pVZZJvkTe%<+*!L5cwJb7xlRIAlW168nG_JZCkc$F=dea zoD4uezGi5L=XtpHsncnL>0Qdkbtn2{>Ge_+t?gGW9px}n4y{u~Pixn~0Z!SCom}O@ zwWb;uRfR`j{;x@t;78r7i$PUmy0=6MdffA>e(#8!d^d9bj5}PSGyi}9A_xaFjBRYo z;|$`!%mJDC=2|cY{Re9G%CFyFig2D^Lprl7NiD_#(WKDHL!YO=$T^>3Yl`2 zPY03*1C@}uRk5!_h6f_Y!!a%dDYB)ipD^WoCe8577WcYDyQr^pz=Z+7`vz<8wn8re zgrRZc#~TGN#dZW^5>|Um_e*Ht(dq^uwxWrRtnM@nj&E39sn2=hMS;vzm;6`e@#zen zOQ*HFycg7(d??0S^xfXV8h1923{ie+MnC}bX|SaHO4R0loq3VY1uk}`@qFjX&8EQ6 zrSGav7bEOhT&CD=n4RVM(7va2Rn&TX6X+c9@oW0t7wug@ARzwVGK~I%Sgo%qgtzB% z?`JBj1!p73dN(QWH{YRcjWn$bE2Q8T+S5QTL0mj+YF8Q6H(M5nlVt`m z8)&uIJ?}-;ArAksya?sf>7(3>(6^k_&*pK=4Zi=-akAIjuAJ&=;+;_Gf73ybARr&F z6UY(Zcne~{c5%weV92~Ljkux%Yy_l09A7+rw^3&<0@euMWdDp-*5yla+fD<&1a9DE zF?+A4E_IL(HSWzII!wg?+3_^^1DYkS#Wv1+uh+eev?toyUoWn@`@%k~-Q3?x?)z1$ zcx11tpY=rhXSwKK6fADiIwkJ{#0yGr7wceKBY?WP`FA^Y&#mlQc5J|{uQdS%J=?E8 zmA%}WL3@+falg*3uaN*J)*;^hz*+Dq0pC09w3Gw7*=>5+=csYYzqp$(ed9UywW^Kf z8`RdUxGk8Ly_Umh^>ZDK!uI7QWa}A%x?B4hMXom4X8!uT#z8zjggJX=zt$z8DgFp< z&p$oem1$0!q?3*j`wS(1vSh0TNKcnSs=3*=DZ;`VIPO#HgI{4!90OTf^8gPy4|(gW zhU(Hxxy>I>+^2i6b)!NELI6nLTB~<>=0MK2?9kOyt9ZKouD`)Sp}@MD@+sZJffYpLcXuf|*O75wDQdfC!2+42LPqSG^06#;gCs+OGm#RQ-Wjm{ee$Cec95T%g<%nbJ;ntKStY~eIz92cn9?4 zR3io#JU{Mpm_4qGH{Za0BtWkd&Buz(^9;^0b%Cx8dAkxo}b8g zR?Oa#>#1=%--$VO)lANi7JPhI<`%d&8kQg!Z^v|aXfja!+;UDzBH`|G4%i64c*b&7 zmdIiQMs@Czn^uJ;`j4pJrl`VlnZLyK;F z1wa^>+kFZ0tUb&en9T+Tbxg)NZQch(UVyVp;tVLRoR`5zt%<-iouJk>G;`CKF!)DzQG(J??b$EvPql)g}`)KzdRMk$QaGQ>Nn zNhUqtSRt*Ub+-WUyl5MDr@fGyX?M`d=V zV!^x{9_pV-#amOW%0Hk2a4{b5= z%m^OWB_p`Mjx`)+zYoRKb#y&Rrlrek=;n1c=XmSMM_4?1emTuksgy2BR>up!OeExLp5&esntw(;*~f=o zvG3AbimB^F^jJ(JannrObI1uLX(CXB54-nNYm(9WD8@BP&#}NQOaZg)zXenL zzprqdPiOSITi>=~-(H+gw$!TMtD5l2j{A*wvLuoftpG3r5;Bu)kdQq1__#Zy-OA~p z#8~RJ*G?|R;ZlA1UE8p;ofjI*QJx;CbKU?TKonbU)|qg^_NRe|L{Rl~Evfs+dj`2= zn^)4(*AgciII+#Mdpy1aOcgmF*ZO zFRdG0wE0+f+?Kpl-ZF$akulun6cg`_Vh_W)%(x{LEjVk?bW#h!6=JX=@mfv z2%AvR6`w8705+5;P=Epy9T{G)r$ddSVsQqxp)~4wb#L)=%VuZ)AXy$eWV0}~dXQhz z@ol}aPrI6|RK~5LT~iBgq3n8-S%VlFD^nvzmV40y9T^uQ2LPe%vE3$8)xQ#FaG}80 zZ~8X7-0k708X!2O&Zw6d^>I3nzRAEAZl@-VXAS3%^8P?`QZDXgp!oN1P#)kE8>~N0 z075VQJj*k<=&$O_xi;nIX;+)|NE9sAswgvf|M#!;rk$^9KDA0{0g%>gx^xRIbS>{$ z1`27>f8JR62ykv31Q-;}@U_(-D1idB_hVrC<3_Q?KuzzzKm~^%d)I_3ZMC=w@JQCD z{ceaygx|tj&lf-Gz0J8a(#SoBvN6iDzJLWQ#~xJ`pY?yAyuu0{!TiVjW0U#&Y9Ztfe1heb^G7}*J9(e?Xy6Se(~LGeh9c%IQ#wTIsSLDlFJH( z4{bc!2mOBo{@pe<>2&F)BaE@OzNuwRt=c~Id#eeORV0|lKX%HqvfJ5kC#Bf{h=MP^ zc>@W`LSBnvvuC{it?1&|b~x3ME{uq&>o+wZMNRLR&|WqdYLq*gq{JSn<-SOYM^9$~Vv&gS{1H-wCY~M$0 zLWxI#z@@wUI1rLu(0a)mMRaZ z^x0c003k1`fYgAl((MJCw!#A+2n5^4Nky4z8(<^hz-eP(L{Dv{lmsCFC0kkx7&ncE zf(g-_^Ta$AcCU}4QIRjQ#(rUNpDmmG`q0DrzyO;G9dGHjVZS2=>1$)|=XQE--bs{2 zO9ce$xX8#2n&o^R3X0W(w1dS@bPk1urIUU_*bY3e!HUhB=HWr1=-b5H&;#6$<8F6T#dppwc{7xheVbL^vg$j42nayA3Y8R5r!;oI zOm57vI1)+EL+akdH^w^gYAyNp*|4el?UTJFNyVR?`q4D)h=O;a`+ygu3Pa4y<%d2K z$`081;f(u$1+K6YHi%9S{ySZf3U|}t#c;cn)-=eJ5kW8vdztHwd&cHk7=R4;m3|v5g8nNR8ep~jQ)T1!V z)xEQ|dt>h?7jfD}PocwR13KM%kC)2$%u3?r`+#~z(b8W0c}^T3mm^Fc_9G7zu{!*jzf=j>IQj5H-O6x^R^qY0F>R@bSLxZx zX)73!3P5{L_ptS*y*j&%Uzc229#_f&$$c$qg_{hOEbB!iSNX;>6`c1)JO)JW(=Y)RWpYF#s-qPuPj?`GP zXXKOPz=*Y3S@4=skM??;OUzyKzEiO@+2A8dZ?^W;+fzMx=yxrwhUJkYeT`{Aka+9> z;-$7gKrAa9|GrIwV!Y2h3H8k$TE!bKLN@w$V0L92n|Z4Qa3>J}r~>F1Jjh9qVKD2n zxK|Fw-y$RIrmW`1d_jJ z2d*V4!*1K*wpsCanQuJ*mvqxQ0qWO;>Nr=&yz@a4|EC$3fMRz;Dgw_8PT-QjbWmhI znAb`l#itPmNfZju5?aYQ`~ldrJtRIP3v#2n&O}UOj3j=3@IioW?U7fw0k9S+uwap0 zo`dvS5Kj59Iei@h5xV?eGM=66UH{8p>|FwbljhX(VU+dh)h)Uor=w^!>hjh%*)07S za5h{`ga$uJ(q`+s=tq$?`LQn!VRdUs&OjNgHhUPFci<{LYWCfB#CNEV%k;Btq-j&# zl=Ug>8dPMqFc!U-zzp<_ocv`RH2^9cr~4k?P4o-}uO2IjGRjVuEBJJPR@Y;7(H_4* zX1teX_L(KFueNu%ym|FtSjhoc1j3oDe1^-gtW?dCQ1?jT+r=1)V0M}N0VL-3PyzxF zV#&kMU*5YyGwo+0`@kbV_5fbE`KrNnt8qLNO||Qf+v~bw-rF4JmxY|C&F~0kZMxiY zonIkB5K16o!~vecVS;GobX={Z_5INM+D}p}er~7_lQO*xn_O+{<GIe#zz%TPe2nG#I36sE#}p-wq{Fx$)=S@C!AW(9l>v^>?!dKFxU&#cHSNk z2u4x>GDB{y@J{a$@hKN~e^lS?wb=eebGgo@zSm|Ih$+WB-X5fuziAS^E|fmXKL zQAHN?l!=a zacjIZ(H&1soDhY`jc*qrW!d@uQ&4_Z9L|zzM%P-eb-Bb`53o1IP|d&dfOm zhSIfixBGv8!Q(ER28OpMIv&?sBO}1lcd=>H?s^%X12QlZdpF?^a#`Hz@d>4)(>tEO zGqq;|nL6nroDIwmWA12VxoYb#gJC;yvEF^Az+Z6QG(uklq{LIyDsi1;4!+qJ*VYfm@)v}|8-{9 zkicm=1L4E?(Ey6~wJ-z1m5-14`EsV)rNFVWed^|5Y%~pTAY**sFo3VZzP#b3>^>Ad zoj;2W0nh1ucXE~nFY9(|xhpWI*F3!VR!n$#XA+OttRxMu(9ZxML2A?W`x3dQVBT!_ zGFTX(-bz#;rxczHwKyB)YjHN2lv`M8zSVFItg&Ed^T61F9%aYp`+B?C`aE1E zGy^9WmT6oSd%=B?ymfZ~_7ir&eB1g=fN@a*ec?|_Gy^`|CU;H?=e_$3Tv`gR~5xI?#f z@+Fh@T~>Yw3P)JCPkeSvj2dY>jxq=YAqW(Db@ijo_}Mc6k_TIQsnC@|>zeIyV>=*i zl)3Wuw6aeiJ>RxEyVS}3dx32;8?=zdu#{jf$ zX2r7mAF)B<@jEdWv!aX;fMe!buV5h}82o2KoX&@owt@$UZo_ z!?gM`o3Wgrx#<>4T$J5-^qTDyxVTj)=I9DwcaSC{OW`hmkboHg^0Tq6Uy-3jW8Cp$ zuTNNNA$HLAcgWVyUH~)pMVGkdU_#E~aq;2ff3Fn^z!+}Jk?%mIm4Q;6&+q&?&t{Xq zbyvc|hSv@%L?Iq~IG;}g#lH)4PP3DwpVDGOQH_b}@elhn_K#l%(hOy&&^?cdo!@3Y zU9Q9k=RG*%!&bjuLO=y~ySO>bY;*gC3)yeit*v|j?h8Nxy6l^jX+K91F5xMtlu%Pj zSn);k9wyW;s?cL8I`|X7Xj}tepnj&`{n4bTOp&Q(0V?S1$gxRHZpl;r+FmB`$N~@$ zg*;vc9v_X4f;gsUmM!*i3SheTiPe?TwweApro zj8xyJGBeM-g@HMvwXGGw-NLh@Ye7_@N#eTbIS&v3yRfofD{A*pZ=t*QhtaOcW zU~&{&PF&*p-SrIjG%z$fwaMQ=2na$9xrcq;J87GMwS?-U(@j$4NPAkT9$Wr?CKoy6iJ{q0Ne)89|DY#8NmxJ-JWIQKB$jB4&TDxmlmOokKea@>tnS#6sr}J^d z@qtgxFIV7{@jE4f>1hJ{BL0ed+yslz8m~QgHl5Ld z6INI#{^$nw9Uq_iSyLmj-ngl=#D-J(m($6H?LP7K_&u-2PEqnsH^2r!uF*~dw4~uU z#3Dja<;K-Uzi-J1ei-YH<2fhm-YXlPXJ7~F*1MB;n$}K(me+o#i6uR_N#ikKk>E)J ziG%XsgLh)V&Z^UNtKKS;s0QY@!1?HAt1uL|?IwTuxw)bNJ1W!w3Fe}u-T{JRNA^{- z$e!iAHkd1Wc`^0Y-w-Ew+K#LRDvFvIe+WQAHF~qEyr#aRO5%!@P~aWSZ_Lfp-Ww7o z0&x3YJ>Agqg&dWCEzK6bb5OwcZAOf5Q#5_9}}mk{5h? zX8WNkYU_DWf1_3O1Ft*ejARGdqwwPmjxR4GI}m512!(D7{Im?W3r(8WSAdJ2xVG|l zV;IHSEZ?r}0!LSGO%&T=Yn9)LdM$L7u`p$FhI%uZ!r#hApdH%v0O6W}V1qq1Hs2q? zArcbC&IBWuVR5U%>cel4a16DCB|WuEcjnu~q}koCVPv`8IT0|Hi3E@@vPct2zWy)K zF~;LY17F5tJD$bcYWhp$7FHrB*OJik>lu6m>8m#8_NwbAw*7ExTe0eZ`D|!WCJ#3> ze$EZ<7U!a2ePWdqy`lp{okO3o@u*aQR0vQLX|;{3uIDnkqBp+sXb3e^ae1G+EyrJK zgOJFf(zkY}<;zrlOdw6zszaya={={_UUPWT^kto(>VODDU=|A=a{x%mi?_omW2T-3 z%GrSDC*W6s;m6IFt42T6n6Ggu&sPnAQvVO0Mk4gBd60b!E^H8%qGtu>y2FMmOO3z< zlTHH60v9%MUyIz&d@!u_zlgiq5PazZ1<}3l{T?Y?hE`WmA!yR$daY>cE~}j+rEgj% zNc{uR*+gyve8DBB| zluBk;rBOh)cBC1vLwemaJ|Ee1K=(4|nG6Ap%h>}1Q=Qqb7 z)q&jZ^AK=rURfx$`upaNh-a~aY65pz(Jn;$1G<}xm0PVC``ZDYIYj-`2!>`N`>-D} zx3X6l7F(KB5QEJCwBiIL%u5O-c@jYy>3I2q6h}Jd*iS#(b_Wvqo%q3Ya?(@q!vs(< z74g=9E1zozD>(M!E48F9>wK0+tJb#veLEw*iEOXBmD z;QdVnW$X?tyEq4D??5CKk^dm*PdfI!-YO5&_f7N%#vaMRXoDP0Hjy3EY*_p!~g56q_eZU@0 zvr01D;)VlB2tpHM;Z5j)14FzwX7h)7z6J#j&x<=RzIcK{>ruk|TU{~8fPuBK{I%^w z#w=C^OxG1wTL7uIA6Z9+ z)O`dm8&a{2IAjT>k6wDqmgcUZcQKh>x1qZPApj=t67hLl=>JR`Uw42k% z!c(7#k2^^vyTZR(yfZv`M1NGwhVOvY1Njm0)qV91^xi_XW@bHXVw^Y1AHBJ_lioOz zq`Q>@cW?2)e*;;U?9liqC6X3!xfe5Xe;sa`J3q)kVQs1rH9QX34aKJrP^UjU?pu58 zt!bED#EThSZZ_c(zRUWxqf9$|(CE{rC3CQ4`@wm&uh@lAoYL5CS?qPar?B zlykJ=C8O{_Q9DfE442eBKyEP*tJ^Y9KPF;F*WuDDPch#10PB4}OFKiZ^dJ<~+16{b zUlXUkDKRQ(4p(dUf?i_~k%EtpLY8)nfJVwaa#9f26l~ms_FKqD@=q z<$pj^01ynB{#!I8Rc0#{Tbopi&hGDHCN_@c83;-5KRwk6B~F~O%1vWvl;5w4Gb<8@ zU&Q(%f)Ica7s1p5knryTQzYZ=z1_$<(>FmJoR%9CEw3%pu_*v|^G9q&iKzdqE<|#Q{ znL=vp=Cph=O9>~2NwOB@Bm^cbB32jN(OLdIzJTRa z3!mYT{p@FC2v7X_WzK+MMdk6W1z%HI>u=eVY2BIh$=!b6;wR2uC z>c7+ny7^T1q67ho(wx>&l$r-X-4vp|+zxlbm<$Jsouzv^!TNu9F&{V z%gW*D7(qX9W@+|w;Ay>DfN!TM(^7MpKrnkKs%EC1%U0!xx90Orf!zZ{4b@P^)_Yan zb>tG{ku?biSKmzXzm=~CK%iB5rnt-L111r=>2g)AAu3o(_b>0z*{uC8;Ztqged_(% z*`i@CYYO{|j|nRqQO#rI!dLJnx}{+e*KK~$rUw+MIQ~n=N$uO3I=lb~|I2*A!QQ5n z$JU~jTEN-ifeXn3A$ivQQNw2F(xYy`jUR=rC@MenLhcgPUxgVZ1oN}z+(U1Ru+(ek zx6_8})k;NQr6QF7jS>pfI2E2CEC6#6pwRz7xHl9O;4eRHF}+X#I&XHJT>upBa=eWS z>+N&~TKQU5>4jZ}Iw(FdzpxRyOAjW}ZCf8hC*qZH@s$4lPziMXf|}o4sKDCg074E# zrpFJ-H)-0ASV#)vuV%8|CD5@x`D5@x`EDEXOeYckO zzrr62l=Ms+mkcj_J&tO#b(F}E6Vv+~gX}C9t-y39+B_$q;gGQAY)^d@Kp-F>AWZCo zApjskcnctD|9=p6jOty3Mev1*q)P(z) z-O>{ryWkKc(UjbQS@*>5H~*`Wc+9K&jZ*d9tPiUupbbC(h_!2L$&yDr4<##d ziwqOJ(WXo=Zr)}#Aj%pc0Iy^7lxep3(^>#%-{r-XSayy2TukipHzq*{KnV8``nf7G z?)&#s;6$?5S^i)%sd&iU4}LN{4|~9?<@v;9FLOYP)KmfAsiCEe_1^npd~<-~CQ4k$ z+&?_cF>=)1SZP-zR1BrSjY3HRFMJ#LR`A#Vvx{5}NHF;(>~3nm|AMircR&wTP3~7y zSZhcC07~xdf!_9S+cwr5I68+u_fPre2`_F+N^7I(pjA6|Jck02Y7*AlEbw|U)Rz7p z-%H)HNzDSgEYhJznCBhSLv?IBx_N)4@tEg6$>K^J3AOI5?6LlEI z6nqq1-Ud=edn_B+$ob={1U0^cE%t))H|rsJmAUhl-)3uWdyc`SAHW4Wokl%l#9Y83 z2{c-j?sg*T!dk9b0L^xWE9X|<1;v5br~aWP)@1%OUeF=)d=(#`&40sZCUgd9_f>CQ zWL(>3{n%VOW@>3;U#blX_i1DaDOqqTNNHm`t=RU_*{ z>xuw6>>sc0d>Cm|rq#fAnZ2(VBm|QLAmgPXz}YSAYO|JsztzfD^tPB(l1N9Roc-6) zRB&~AYV5kq2W}?j=lY$`t~V@fxB&4m7%I5&&RqS={KdPt-U4R(k5d4j?wM zzARVOmQNo$nyyt`;Wq&}3Iqd#8XlG}N2t8|!{`)HySr@WIop@4)4w5vTg?bw`N7Yz zw{QADE)-nG!+yO23F$ZuF{KOWjffop2_=BvtCVmplI|K8`^<3~XX{@oN9FplGx^bg zPya$Gfh)5>>I8aF445xn;4Y|ha=sJ2YwPn0g%%aS=%uE^ZB1vALQMUz)bo{LpjMPT9 z@`VFF1F~{rG=V^4=h8LCM-933^^=|S9%;a=YG`_grSA1EOwDpS<&hQBY@Glh1_@Yy z9Zk+3Pg`qdXoE#Vuh zvSx_v1>GmTtANe}Vn`9rf4KQ*{y)h^9eSEY;7&~*{3X0Y)Jp-<-CndMDD?gvZ7Riv zeYX}J01m6wQoXxZ19gfZF!W~U1YwXlChH7JNb$IbeqK#9mK|1uW9eS$`2Ay8oV~1)01d(M+`&bSzAwHg#bMhupniuZ?zJ_|`c;-7T z_ENV68cX-}V|u@~&?WY&E;{{9MrYgsrA_e%?S>&e@=*_6t*LMauqe~0E{=7_phQME z#&ZqC9n~ym_L;~GZ+>7Al1F=hHb8v*>Z|OsY89B9Zkqu>YrOXK+Pg#xW>xd_{1U!= z%vZbM7FVZpJA(lvM9c`}x!*b$Ir%9`fC8~)hwzdZfO`URe8HEifFbMr-QE)v>P}4c zK7L9irxwTh@!;|@dFH+eH_}E_E&1J#tD)Y?zBR15n*yxT^=H`(#&&(;~4V`O_Jsg(zIMo7Ypp&6~Fkn+Y@z*^aT(IeXH=Tw{ecA4OBF`llCt}54 zj5n8<-srj@82zp|4;WBUPY`@CJ^aYFI8YG*$}#?+Lc|GMxD$RG&66tC^f(5O@Di4a zFZoI*l=0_agdhYlk=QI!dONi}^8Vwlg!iuNu2!>>RQw1oKn}W)G|tyxa!YakD8MH= z069^b4c`iVD_3bG#+)ff`yeQp|vMYnPo}#z6 zK)U;m0z`cUgVmf$4ecSNO1zT0EmXCusuhbrtQw%W#1RY58{p+UuC#+-`NDhvZP~m^@5#=+9B82!HS8~8}xw>-hJ8jZb zRn7n*1pVvx&%F!TK7QcmyFN=%TRCZAl>74lpgcCLGsbpBX{yXp*=8N-9{^YdetEUt zOmEU1-R|jR1~uCje7=N4N=Juyx2rL`XKr}!t84(vguy@p6()$;w=HO?r?xDxMS0Q# z@%AzSUq(;1`=KvJ00hDBa_+CWc>R?CFL>Q>G%d^$t*4|+_H8xqx?>`>=?e%-EXy~k z1v-1eP%_TZR6Md>dD(>YZTP%yk~^k$Eal)-fZwK}(X)X)!9|Zs0Ka7>hfdgN zglSM=_u|=YfL#N#_y?Xo`PUt&d8WPAupvpw-hr~d4}gHLL8B5R3LRNeLFbt=pQofFUB6nzYHnHu>>aDpm*8J`k3IiR{H(`BeKRO4b`0 ztZT<_8={HiP=Db7B)pE{)V0G-o$Vys8g}N8Jj?NnJSXrHZ+peLd6;^rgfor=s0TcKGcZa)&;-Cv282x3;BNq@Cr=@@ct^-``=CJeN zpC#1FCx=GtC3J@E%@#R(qdx`BmLL)w>N4JUA#fds|Vp{BW6PuEnVX)U`S~DEU zm|TtYdCgO6qz^*)3z<}$+c&P4k>^a+`{3sa&PH%NsFTIuf35A7?+g|gJN;$=BxMSr z0H~i8=3VJPHkaErSeY55u%fgyHUr*@mwlZX?|S^22aiGk2WQ5}UN9UO^dK+mq3dYc z-XCtaI|{{fD#e=s{k!sh`P7giB1?B+(Kvdr04853bF7?ORr4_kXrLp<0dj|L(O~PMqoy5z}N}WEw})L zAOJ~T*gRVCl}iD4?(iz0JdaZ+(QYN*75;i^7y}+B#N<#r z*o+i?)r||TVaDn^;Mk>nc3^S6`y8HhHy2Lol3HHwAyyj%EUsXY0S2_nFV|pUT|QXW z7QTK99GKS3#JS$Fk2LlUKkLJ!M2yHvV%N_69g4DBtuC^k?;IkOP4%oIH$Y!10GBw? z22zLdA!AAcd%}As+EezBnL4nV)PAm~MUKg_@UCfXUDp7JlLJfv6AoOn(twC(^*&Se zmg{}s485xx2L9Fwha)a3^bC4?`5cXsfprYekO-_=HI>QGFH2xIh6lWZB`K5RPctsv zc>{H114K9I20H(?fo)*`kw9+0MGSpJnS3v-*c)xc0p#`S7q49`=N*SN-J+X?N7@7I z^uPyT=U1DzOVDHg0WO3 zdJ|?-KaJc8DTvSQeVe}Jw9Y3!*aqesM~g{rjs(~WHTIK~)Ue=$uc`wq1UpTyC`fz0 zNpq4EGKF7Xh#?g&r>B$nPwY>?<6vp_SuBKWZmH916j^YX9`#_6m`MS_z&K*6v`=jg z_rQ4BR)heT5uTpat@M_}AuN}VcoN#`u49dd`FP(#BFl>LO8c93l2bCCcm4goSg-{u z^DC(D23$TzcY*^e{+}{nqW=Q!iIOvlUp{?=csaH%=*MTe~l()3m?Md|kVK4%lc9R6lzDt&J1 z@?B|?u0Zd}2JVJdNJ2``9ULt8C9v>w!tfhp>JQf!Z4pwBBVLEzmQ@keTA}#|?;@y} zs-gxJjA$5WcN8EbO(U&l@#iJnK;TuGqhSan#I(1NBfDrkOf|j<#n2JBJ`Xvf+0Im} zI1Dh)Chx1}wT7}0o~f4ia3;XG)Gc~;%BNWnI$aH%PvWA1-M|k>8ToZkA3&$$|DaQc zZ>#$9D~HbObL$04=bt-QP2AzK0l@PA*%-5YEIS`iNCd#Tj3fc1_Fh`58Euc2@Y{Z6 zw*)B-Hsp$dV&RMAPryk6I?uK$=g*`ScJIiO!>2xDv4{0YZ2|l_laF_*wOoD*jA&Hm z?l!+5YAP_nY{a=|1LZ*I`atV1wtT742ml)Alg{w$(We34nWc|&n}vgW^XE8ZZd#CT z)sof{08fFSQm279oar^Nn=9tekh_HZh%<0nIqhK_L67;^hJPoi{MxG9XXoN#22cW=FD|2kPnz7HLp9 zZ{08>fHKwr(UyagvOIFnbGpvF z1I9cEzDwxpx=$FGmED%D=(toIsrEM+(1PiH*CK6ptClk4~YBZrn*gHnRS3^>SI<#E0%I~Ilxr> z^)^T_Y|k1zSBfa>IV(Uouqd3h=?1LKUA3dyp5C8g2L`{%f^F4Xvj7B-{F7h;N0<;M z0uTCtL1_nRRn4_OP26k{xIHj89YNSp)I7BQeJ{M8`3r|YJIQw?i^y4zUKW~D{u-4- z_MX*S=s-aHP!u8h(hMO9OCnIUDB0Wkwtr)97q^~w;QQ~#@cv{!RNnpl{-2n~zJ`WM`m z$+@G`+Eaz)Q@!yV;n*F=s!D^I?rLlkpKH(6#O`u=!tv>6(oiQe2K*0=vmOkmu}$yQ z!#ZIN$P5qEaSza&Zqp-Y@I>(6f}CZCm#cRuljF zt~PRMAPVbAG>Da%4X*jGd+^xRc=_@sZX3sqnj|uIy*_TiQeX67Ku<0+$Vt+1Iy>~= zPn@yxzfm7Hbzl7aFnsq**&?uvB5)fKtYAf(jsHlreqf^2C0GutNT=PKl^|$^zK&(w^0HBJGTeaWEZ}XwI*vuEFf713(VYf*j zT1+SQ$2Sk(brdS0f+l$IRB*Y~-a-+nM>z zrg5MRnTm>nvv7pnvh5d(r9GUE~H_^7&=>QRn#+j=~Fr!pW2G#{qs) z)*n|#rwmZIffE$K+MG-G;0*i<;~-2fOf#1|Kox!O9lz``a*ZbI(%@n})}PQjDEdGz z`ug`wDykr0#}8BA5CU3^ECcTQ{fKEg&EHsIh6Wg6hBwi3t5pk9AOxIxd_V9O-uerS zbYM5ky`*p#dX2L?{0|rk9dg&Ha(yLj&obQ36@{s_a|^3?%JeeF6E|i|GjL7lsNuk# z0hULnKdI{eA8bG&0*(LIrr0+uKm+}HX^bz{%` zrQE{gmlOd{->d@+^}PJET>Br_!(6@sAG4UHLp4qRA9L&&o;@~5sihb{XXzF%&Rop% z)c-cKCOPR}>R1qj72e*D4}aU`F@Bn`cZn1yE9bBOn@#r>w<=8=hpg_=lCH&h#2NeBo)-vei0PSZeX}Z9^SJv zRy}!!G{;kZWE;aSMf%C`Q-7v}nCv(NB{D5~2{~9^U31Uu>VBk;+dncT)$og zt}c7|?OXC=bU>9nO}PXB075nHr<5pn7}Pxc=yUbQZV#!Nmk8sHRKV=3bUxrZceb!# z8;k-@7{+QL+hm5m$>8q=s~z*xc#No5l*ph5$BXD~H~*29q$3(v1Eq2xA9mwyEjuGM ze2c#4k4Uf9)28#c66Lzyw5roNm!j%Fl{)W7$j?{Oj}u>sR~?+=DjM>5R?e9Bng0!3!lbf;gw|g6?eSLo#~5eQ3yf-zH5Fl%V*`mn0NtI{I=;}3fB1+ z9Xv#86F>VSP@tMDd_BXUTl#ws4Y&6UCPNy0dr=4yPF&q4TjBEMacLC@zf~gRMi2s0 zkiQfO8|+4eFLEC!-IMetb=h@LAqb{?wUPf$R_hcLtC*0AQ*~1Ln8-a@t~c)-9X(d( zysD3CMMb+aY#9Ln1OypLEJh1aHG1|PHqNX3zcXv)DVDDM;ed9njQ1od6UkG7im#DK-9|XaqYMF=i+gfP~G62 zpTJMIT3bom(OJZ7^k+H`on0cnD)y!y4vF7N!%m&)M!Mn@KHR`g@I^54|@BW5< z3tNqEt*wK7;I(jw8`&^+7B!LBTeSK~=uAwjM>{t;bJNnhWA@5^O%t0j zMSge;mY^I~au@alaR3k#+tEpOb94(|=kf}h#F{ZRFUSZuM_;Uo*}8Jnkr7WUc(qt?-cj0FGzYHfeKZ#Lzr3rJx?hgEY5EorMO1-b8nMCaxE!f;_NE@1^M z0z@ruQHbqeb&*rO#)bdU(gXx0*K6_mmd{Ntm_>c}MWG##fP~84RqtW+wzwWVL<*B= zr#!cvuOfTLF~$Ij z5k5^;7BW_D+b)abe7~;-=N`}Xlf9WouA+9|qxLfC`+6=Ws9^-+fILvh@0_H(kAl_W^v|#=POsJne`7 z$W)eF=vpPzIh6_qjC=dwTJC<+KF~V6lFuq*!G)Ln1c&Sn7EA>hU!)2Ts2}Opez|6K z!tEhSJ_>ZTCd(l1wg;iOfdn8B0Cs)(a#kRHcBoD~+1IE7>;o-0&>z4r&hmjdLi#^v za$Zb%V3qQ@PMbq`8!J!({xvlNqzslPaU}ZoB!O6X;o+_KB<1ZDdNQ&}RbH9fH06gc zg+-lw-_wx|mX^-3;yQhx+O%BqfP7=z?R2VuazkT-YN#j;1%x_{wvDiKt6(7i$Up<= zNH8T-*f_IV1`5*wSHD?nyMN{7`Mff;e5_>Fs@nst(SiX5uMsNLbMms?N<&cDB}j6G zxB^1=y$4e zR^J@f@}_3B^qa?i)Nh+|r)z|}IM92OKGfP;7!VM1AfL9fd5`$_DUbGj4(Eq6Wq0iY z@CjMm=^k6>*LzZ5d|n<39FAp!td{PxG-+T6H-=mkTdq}yfdfj~fF6FPGvAj2v;H$XQy1(uyzt5jDPTM3~@C|_2&~53>x{L>hR1hd& zZBH32W(nBt!buDXAfgF@2?GR@NhFX25GWKySCWc=D*f7$imIxrsw$|eqCo@&s*I9K zMG^>hTq3eT6oA4{pG++v#6?8)=$3&T!-Bto(*ff;FH58ZVxeUJqFQXTzV{dPkA0o8 zD;5MrlB+I;!q%^G_a#<%@E~9ENeO8)6}G;#zuwJY zp=LwM5+1l4Hx?$n+xO^gbVil0l!e~u`<8xih~g?cZniO5aK>2-v5VVi{}n1hk%gc8 zw1bj*24)wlg-d~g0?gwV=nKv)V7t(gf!tbK*GnuL^cqU!eW3~gntx2aL0H)xhp9^~ z?qyNs#_Z65+%Ttw*`q&55U%#QNi+P%lm7b+OBdwYJ8PU%#xs9F4;hrrZ6zxIrJeIX zZ6X57YHVkvJ>lVdt!4$V8)>D@Jdi5K=Rt(vanuP9ZM>!0Jm2f1;YT>6&sziEdAbAu z2WDQTZBO)M4>bBxV(#$))|v@-Ywc|*R4bp$``??vmb8u6Uy043P6M!#`Q+R1Cv(){ zW2iL;Cj*b^(PcTo6!BH*2ti+$1dr3!BQNy7@KJ&58UF(wt6laY zedme5$NpRz1;0w*A23Os<0H3z(ximFI8nE+M%*?)nRtkqyO=dg2Y(12u_Oz{n(@nKXM(2RYIe+lWZ>!k+W*kDS6qE@dSV-QR$B7q4R3 zW@k%I=l*m~XvVG?Mm5Zn*kifiI2~QOmQpL^5r2Uu45SRj$O-;CWF0Q;?%Ou=W>`rA zu66j&0Xm7sV_RKjcsV{#C}-H-Omuj?2)!0#3!1$pB_p1vXy?6l@bky zkVyimVcH=A%+Z~4^p4wZQuQ19Q0e&1t`Ez*(3Eyvt0R)YX?tEB>yLc-`;D)*hGx+} zTLI5S;^?GPPGhb|e;+u_WLgH z=~wHHqX}IJ$tpMb zLrKJA%KmI=OPGJQ0z3|VZ`MD+00cj*MHBtrCIRj=$D_xHcF19~;Mp;#{A8ap&om8& z8&`Mn1mjBCl?0As#J{RJB$itp6yLI!qx8a{iZ0rh$9>S8rtzwJWi8S9nAp_%cr~pd zN@>C9^GsmtaOoY;{KZ{LIv7SU|*T2JVnu9}%&^UrGSZDoi zIi|3-uOqDl$j2d^qg&iJc{%{MA_V*p5D&6D{0iJy5Ig`OxM-HH`;Rak%!s#VWRs}# z`Kk16f^NH$2#(n&g~gqp@>dm}vD#k8YVT*Rd{%8srk=ZGlr;?dg&b#$d~25xjmu%% z;xpK@Q`?nMFRM_>=yN5?|Ep_M;6s7<0m3Ffs~;F`bePY-&i*Bu_qmaB`>e;t5~@cx)Q3>DNj zAT}`PP*eb&uI5F#fJheb(`4QgD-|iLfnPd_w{&u z+CWeya~vBjq5%mR%$)_A07rDOPzV7h$Nj(5csTKa;Ng_A=tFMz3iJuow-pv`ve=!c zEqZ7c6tsp)M{LpBdcFm8Mwj$CXxtQ6-c&MXkEsT0`I8)-nd3dI@$8U*yx?j4tk4s9D0=z%Bt)LoS}rMl9Oi$yh6Qne4I&giSu^B*-BFV; zQC8l`2Z*#v`F~qP++R=+ zPV;Rik=mWR>8$LP#I-sZs!LYB!Oczm)v}9*{AxA zN@<+-c%mo}f56wlL)Q3LOz>JV;Xx5>UX#fKKXq3t+wx+`|EL|)l<3B|4Atlbt{y7d zIFJ}qRDlQwfN;S8zVP-IN1S%IXOJyjDgns1i5tA$=3E4!T*D!m=vLA~Mo=r^&yCS^ zfd4M8MbZ3{06*vYZB=HG-0(5tIb2OvXX4ghe-6;Lg-r{Qr~^q=YSavUtH+ys-|j|n z^4#!!FTixCaQ7^fEGCIk8dGa01;EQcck7t%Q{w(tkF2`-ROaU(V-|DRS2kN}v-9ha z7N+hIXsu0H!-HKjug0s9%4^?5_s%82 zRsMJY$2jY6R~KvMbm;P&OP1=mX8>Kk&V8lhE>v8O_Bfb!?-usXT&O41KXc1-3Ls83 z<~)%`dc`o=3qnAlG|wRi_1^&W!Es*SQJ~tg;E)jFoKhb@U@X6sXaS55`7zhCjj@vf!W2HiJzsld_Y0x@%89k3{Kh#;Rr$j zdnUOwfWOg5Nj1?r(l&Ya;L>6(^+~IR9)^sp(dLDPN+hwYT@PM3%=cea= zu3-k3>CK_{(0)4x_>~qaYb?l-jrVg6<$y!*#T(Jsa`|8dT>Zx3XJLc*e{+!@iFrvN zr)TG3+lgv}mvv+asxDkrtBVj5k0US9MV;%GDk30Q9JV8j)ejdBLmOE=m~UGwr}TU0f@K3E8`TN2q-U;v+-59SPSO3A&#Hh@y4AvOnYHq_M!EVke5ST|SKCmO zpv-a2U}HmM2uVB!Dz~#|ysFOXP?XFSR&~>fa_}~5w-*4OUL7HJ?dc>LTb1`B46xl7 zp3S$_#qIdbNqP_;ir-i~IPFn!BwPUi4S;s|Ic+l<2%qm@$HEh)Ul-M7%#7Xud-k8f znZLRhg3vsSKYgR<@c!ea0dCXFNIa=LsaV?^qu4OuA2rmp4XE- z`_$6nSgFRaa94Ezgb8W6z5`wGAOe$JBVNZniVUm%;JZ!kxbPM&Buwp;C_C~Iw-e}5_7L3w z3-nL42ajHR-g5aFR;v49m(+hYqbadnx^PKQMcOAirx*L%yvmrYCfaM)JOjNvdg9AZ zVb9#Gw^Op$fx_6dGOXDBn0;nmy{N1UsGZOl^>HY3R}45-L=_m*yo=L+zpqEwlIQC#X17!GDliup79dN`b|Mb2qFoDbv0uVmq|JzjS#-&FR>(rXc2JR*8e0Gck z>A#_YBJr>d`&30!tsf;*mdgDRew|#%2lU2E;-&!r7P99?&zqyu5&#aiAa8nK*t(#3 z%sz&Hlmqo*91wWEzwTH;2;SG@T$vt(3Y;Z{`^D*3ER_w#90YCt)PH&mt4DYWTzbEa z&ns(HC_)erQbPWI2D%tPRjaw<9&Tr#txVow9jS03FZset9XFAQ~}X`ul(>pLIfTsgUz{G#*uIxDA~uj=Jr_b>BEuzq|J;}4U+v$*L9*d6R+Z$jiBU%wKh z_}5GEUXTGmDJD1Ct-F5i`t$V%s{Dun(!Wj3W_Z0l{3PF`5Ey%o^LG(~s{oM~|Dhn5 z)8(*f0@80{r&s6Avz4Ou6bPGfE8ha%ZflgnhJyf-WS}z6SCjk z{$l?;4#qX=6?1SAv(B~=*!mkz6uf28A7lrw+metWvA`gnJ5B!K+%R&r1R)4rboBCq}DwkUT z_L{f?5OedrznqnD8BwMTDU~z9-tfS}Fp1B0Dwf2}{ZrsEzjScqwChj#nC8~VDcjq` zn=F6`NaQ_ZHIxgRPnTeANg*y2vmk^Z55wXGS|y7WH{G;u{!T+rH74ga@NWn0T*}(Z z=6@?V*9~uAu1_1B16t<4)?zhx)B``QcKtKQ?){)^FV`HWbAKK`O{Zedxo@cnsoh9n z0>X7K0)nr=q|@`bYO4KtjN-#hi+(~zFH7as-uT!G#`cYDLP1t*+saw|@^ro)H}Oo$ zM07S4P&AAw!<1h^t6^qm>!>h*;+fY#bmOh3wAx{~xVx@z9xua36rSm?fTeV&L+7n8 z;Ml@{rMg+%WflG$O^USw8VuFd#yMWjzi_P{kKCjDsZs%6Vok~EQ0NbSc9l=b&J$`@ zqRC?<{3I%)d(r>_2o>M}R{cA2D6?k_j!}S~=*+_+72SPMYPa{Va{0On2UvhEOmZ4N zl|V-TzMea5t6J>t8!3(F@=|EjdF9#WZ#EGsM{ahiOJ=gEO3)KCGk{RglMDpueT0nx zi9~uD5)crJF=v=Hb>9yDc7PvP6B$*tFF*uI8a+p5v0o3Rf9%W>Gx#c`w+#XS%He46 zyGr~lNdOw#MY`klyTi9tGHkRU-K*}q`vRjw3JuR8CzEo!LU7y?oul1h{R)YB zpeRj3bwFdZXkU(S?C{y$|B+yX(eFCgE9F^?*i(`agdrz(RpvZgSA}Ki)U=p?@E5)G zJ{`-q%-^q`YqFl|NVtX3j9*1Adl#i|L|&@R2y~sz0xE)@vXJcfeJLO`J_%0CpqU#h(W=ks=i z+C%ILLt5_ZI!QlSEER^c3JB#yY#jRgQ)26hV!2D?Lo6u&um;V}=c`Nh)N9E=07AWI zDXJHfwHd<3hdU{Lqb8H~{eA_PC=i4o+G4A&0u5@7Odo1Fca zHP{(O;c9YTI`_HUl7+6bAcVTyFkBqtfX>-Io6>wC0RaiWKcl3973tslrX+=%xiS(s zI$)q#Z;l^E!3aP^B!CW%muEL6g>3YQ0q7D}niL-kd29dQJ1-ks)3g0LQx$JKrMx!5 zj|@?x&c2BS5tTzvL~O%Mq=8;JxzOF>UpT#Rkz+-f|9k2exi1@*X9NZ_DWVfh^J-aN z^-Y_|3ImbqHqWNe-aKa6sQ+i+i@^SXvtR*zRg~}xhgH%~;A(+90pACz1_lYt9f$|z zwf-)*17Mo%xTSb>^1pLwoO#(SsXR8F02!+6+*m4rJkswb-NSTu<`# z9HVDc>iTX`&+v<}u!r?3YB7~tGtJB23Mit1MHEp>BI2Y#V}UZ!z`Nq&X0!chPOO-b zD58o56j4P6EfA|>Vl;9&^DNx~FBh%Dmd!^yUyK$k4@ukQ6T4(P)os;HD@tL81{h(6 z9;&_YKbY3Q##b9V)Sh4hrPVD|pI+PV2IWb&^8nnOUg~GsscoWM)4wsJ zg1iM2ECpZ82%_nTUccck+f`%?AI#)DYtnh766QS0*?72nIQ7}^Z?PwbSLxOPkOdUA z0{03Q!JQ4&KdZ$#Lk#7XRt{@#Mg9RYsvP~_T6yW7_k)vd`%@*}LQ&PG``t>?w{Bfh zK(qfaa;yD&9$sK+Vp~l621UbSr$s1f-y6t8}12 zFaY@_S;_hnJw+~{J2O_$Nxt05Z(lfXUN=4-uJrfsSHpCHRbG!XCvs{ZiBPho);Uuy z&i@XBA>O@ymflm{dbN}U{GtQEUo7{$aiXtUDT=pbG+W-Bl2UkuM$)xv`k*>Q0HTpF zSY4AR%Cs(@Y=NlmruMo>Z)K1fX$G_4wWGjR#iNtk#-U9%NVzdj+G1fTrfVMX{Btu< zZ^bZ6{rG5zoUJ#);{V&O;~ULy1Fdm`QsUR`0J(hEmgKpKM0Yg9`%$Sn+rpc77-^QX zl|Gu<^}98^h1ln0mCNakYR(9Q>F=Fh&l)P&sq*tuRCZ4g`(%q*k^6uEloH?=XPuLC zNO~(O;C9m*PNBr}$JOuc=w-NE^njQIK6e)7-jLEhOOZniVMR<2!3aPJu|F>A$K5`A zKQgAJYkz$}qAwSt8j z5Ilu5*uX?7QBw_|xz{h{wX)-LfV9s@Mq1t=@)G2EuV7hqav3rcJuT__hVEcw!+_r# z+)4M!C$=8ErzNYp#vHVzKNTe-uV*!RN!C!Y$(|id(tFDDf0R^hfPZj~O+ZFQ^;QAZ zM&M|(ZsBS}g};t%9*ntE*=nO+9LqfapBJ*f$C!KqTZXeV(Q&QT$#4L}({E3gt!5TZRV9Q)fZNBpVq#7vo$g1+N(jgaJD*}zG60VBG_4g;SJG=jai z(XdR0(r3=QD!6WFkX?bjj-BQ8JGOJzv{X*MLx3Iw@4N!NL4V2uhz7gm&jEUGIA+h5 z(w>m+bwYwhOOT-TOB}L_k-U*pDN*SHhA0WYQZMol^rs@~hZ=K871=I;sWt?rXjP}T zH!zw2!a?Nw5P%hC^gWgVZ`oq3pzhG9&~#xvg)sZt+*+Cy%JU>+`Og}@d4L>Yr!cPl z&T3vU_Q-6ytdfsZFdA1LsO`&Kvg-f$@Wpfwp;X*t@-67*d6%8 z$jDvG*J?V}5Pxv#?f0{w*n6FXw>TG<-^s`@X3#oQzBbbb)ce0goADJK|O9AC`Kka01 zm#FSbD;|BQPb@vvK3IpgY2F8Wylb({egV}U4c|_j1qwK;@!EF7V2TD~zw#>#M!au8G%5uN0(4a?J;g#LGP+caN7qzuVGzX^c zA7hLpL3U3X)`xFDouL-~H9r55?acb9EGB;Urmr9k|HzoVs(Q+mp<^<+*OK0RfKS!p zX#St?@Vfs_q@}$|Yef9#mVNoLBIlpJREy$OkP`p99j2V-vC(h0>_m-wc}RBA1eG)G z9oxHYaPVFqy*6}&f;XywE$-Tz7Og zN}|`GIm~&vtJtzuFqG~hs@``{QFLBcR5&O;_*D-c#Q>^a>S0-~QJD)} z@4C#U0DuSy$dyd_v&?rH>Zub5_ftny+A`$Rl)UuZ-A*@(#Zzw~$ET*eRN56rbV%bf zr@xv}?)%tQd6g*{a7j%MdOhdO{fBfv3jF{mhyVkbS1yUnPfC|-k}3op3|@@X;->WB zr&Nd&KQJP9)DXsJR@dC_luzUE06P55l}B>q#Wi==`^j&-9LJ0PB)>&F0IC1?O>fcz zT?e71vElMPk0_D_13!)G&Ga)3^oLG1U%5HJJj`7rl0Y>=b>}!cNEGk7Y(gD+q&6C@ z%p0peS4V+Df7)Xnz$_7md$hi-0}R{Seg1xNIlUiCS*DYM8}JfV++7Jrnx#YaPnHgK zm7LaR#gs1_o3a4GwNUFsI$7_$)s5ezR2{CJ@F5mUSSSCJJQf1*LJ*Wwm|!}A4f6rU z?D2rkE%ZB3cd&WDDE@4#6}3)3;4PaUz<2)rJE!MRfB_U90H@?OI37w5RV!UH+Wg<* znAAS|Rj!32b_cH8X}Ok;!_}OU+da)NPe{F8&>qw!=-^9vo7MsW!@5$)wx-`yLx7zy zMTJgQNbXk=_X9dC#7>VhOq@4#u}}#URQ|)OZ-go`0sn*Jy{QIpJ74dqpsCP3dT`#; zb}@jG!h4rAZ5BiK)@W)smArUEE2Dlia%u7?qxVW5=9m6J`T{!6zk5;vz1EV7voy z6Yrl=x;^znV(Mh99k+#bVTP0MbZe;vMuv-{l&YcVsiJ0*sg%)Kya3l@%BP#9`Z}Ft zj4W1v1AJGY1wVYe)N#NTPk6uWBV^a7ScQ&15vz@2Sr>o0nF1sYSw9V@Sf}GNJh_2Nw zcwD=oPmBTn|GN&6$l$Cq=FQ!K2tWy>z#FJ}Fr3bm$2DFZ?AO5L7UR~*+zS~yoY~kL z))?-3?F(TR@Y{u#z0zD6W~> zJTbbMjiDg{mLT}|tVD}0*H5ccy8VJu7$*@mM-RoapPlL2P=To*ftshnu!jTyTJHEZ z%WL2@C#n^nW|V!XFrapr#FOnQ7^^Kz$abN7U@L!tj$v-`=LIbgK*Jj6+^v#$5fkDI9Yoh(HKV z*=6s>TP~lP51HJaZ!KRt9dzt}_JQGhPt>AYzW-y$*UJ78UQ*v_B-L=#ramd-?xcEp z)@n}$T3&1n+xi*?stMFT+o|SZZ8UX@lt%tE!J1CYI(~G+Bl?P)4@tXR$PD((>n6OC zUY#yob-md1Hjvd)A#K7>RQol6r=0I>Soc9RFRVj+Uzb^8HsBeyDAk%H=CwJV*+$Q^ z@08i!fYw|Dmf1>tHfhYihLkYRv*lF&cj;W%ex)kXqXlB`T`io+N*6Q5VchiIYz*P7 zevWQ8ng%vgF*K>a1o^#II-~U77S9g$Y0a)n@UzTM#E}AS@^-m6p;UV7_an|ggdha7 z&zS@35c>zwb2OLt(l9ydYDV zz?_1}TZA>&yYV{$qpsdpOaTE1{sJ7DZb4QdSIUHzr(01e6`tDqV76Z&n`9N z3T=uZ$rayV01`LqjJcN&pFx5H0-xxu+IG>pjcx1+4_jvD&iDix4Ej&jN+HL0x+?Ek zPz3YpqqK3Sc;6|0U>c>xWgc_72RBbeiq8c%OlJEGESI*R62RG09qR%9DheI>44@EQ zpwec&rNDI;Wv@Do(nQ#=$P^eQ;4Rf7c{=mDY>`BgL%`>m7;MPM}>3=ARPUB086m;2FHc5nOYBC&4ffM3w+w_Ld%?=Ux({XWWXt+m4m zCF5eJi4P;EGF1ULRAK+Ejr+|&b#;4uh6}ybNg*y(FOz#^U&DBMVC^aIrbp@QR)@*I ztM^wn7vMvk1}wQj|P(xF|S6x3D%D>Gj{+LO>< zvBaY1JQrNQ^Z`EO+=zj*L0_<%*&naa+agRf&t8JzN#z#l_WCqL&gcWuT-OqwaAqNv$qL9(f)zK~v5_oryTNbA&(&+XhHwE-J%hmrt`+_l-WxYryyRkuV@x1q_xIk%7O?1sjHXtRWSmQslC1u>M z$gzAjiQpVx=YV7eE01|WuiJD2&CiKJS4qd>q5mp#=T5qiCiGw)F4RV4KWs4jJI)^R zrkD_f0EaaWMNd3DDf5@dRev*C)?)qVGxcbGs%8O{UJ~FEb89J=-B#b-R?p|2$6W#* ztVjSM2QSkxVRB&W3u{7ob2zR4w^zvB_ea`m`sw|oLMEQd0XtO=9VM;`vK`<0wgRS< zN)3l;kO(k7ARlNf0IR0d#Uh=xZm@AUlJP}=-tdnPDO2RA{^2fmf2o+=)s&s#@@&b( zde(LFPVX+-EueU>Ul;U-z9`&w0JDp6I z=l}@K5@$fFrGmES)RBgl=vDx}YP{n8oW!IDrs;Jo>;2ZIvs(Gu`A$)g9_=_1{ZwPl zW&bCK1sOLXvcJuvgecK~+rN%DQExcjb(6eA$C$0}J={ zKx&=VH*C3%RbCwCDTm2}nbiftxk(lDe3?H6B2jJv<^gVZ(xeC#>HM^)p?vb~QJ$<$ z^Wl7~#2frQLMcJ!h*2AOEkXy#=bKe*1i%&mWp$Radh^W=fK>RGaf|m5 zNdl@=YB5dYD!0_#jI+LosQBuUmNd&nnverS*& zppDvbv7MIpKh8)bC5xbhAT4l(cx>7N@cVR}JdU5upmKM;?C`ri&(hB0Wt*Ud1KT-5 zvhsC(N8czUCB4NL3x1AX+oge)>>+F*;<9@z-6wb2!dN&FA%Kydx4-xKuz+*4Y53G! ze{dazpIkgb5vKnwHjjY%{{KhQ%b{W4a$>*hfG8`DU1A=7=L}Z4iE2+-U{m!jTzpOj zuxFe|R0@Yg&KL+FbGFQHbx-}7JboW#BO9;I*F5H1+z_gDYc2`K8vB;1>9v)f52b{P zm5yeV6bi>d2m~YIfB_19jU=L~imEE8s-mie1sbU&l1Ui?Nuw`)TfdX$Y)8KfR`f47 z+1!>(yNzqDIJTfdNg+Hi2m}BS%m4^G;WgV5ul<9<`2oXy{snq#y&&cm>I|-HA4B8> zq-w(QHDfmJYGAwCYT*GfO+u{{>IZo}A?SkR7tHLN8+7J}srTp_0d%s8W7KURA_}$L z$%@8tj?(N7Jy%OYYeLkm>2MP2A1wS1WoNCoafxcrgam)AtylmN=nP0HN7NTj;BVUa zP!aC{SU2e+(my_XM6||(bY-pB=pU{Y4`i7+bNYavg7eic>u(`r=ozEH;ZwY=_*QUr z&gVcN+cT{eY^&P-=Sx}7NGOG_5ITJ=-h%)d29f`ZB1lLP=x?e93VB!i1`r!k19#tK zB!mJL-Ob{P9zAbM(j3}0I%b&hjq>n%y1=k>Em|*L*0&i0sKU&(NQ3vEDel<$p{{TG z>}F-&lEdbQ3+9N9^KK-PNC9#tu$DcA_R}9_ahgd1y81ooDe@gXU{b5)wPG=N*?vZI zs;HmAhWTaeRh6MF%`KT?@y5q~ zyCi!O>rU_w;Ced7^+^ta46Fbl2otx9Ox}C5Gw7!7=D2SBPnYi3sX3hZ&*XVdb1{?` zQk4Te%j*96hz9g2^{*U~+*GtT)3q6=5u^iadV>T)8JGpMTXW803P(!_vJ%xz-yqeV zSPN{L1!;YCPy6_dfCh0$i&=76O1v3B7U?hxqwPj;FhGYaayn4EO!@GqO!b6UmUMJAcGeiCOz6t-h9A43`0 zDp+ta_kS8WABFjc6m0-lLQ1NViJ(!umazK)?R^-)So>gTXyefGIM((i&>9?VO4>dC zerF)xwm<nJt!NuJkHKNuTas9~|vcJfnGT#&afEirkJ?wuv$_D0aeD9j; zH|W8AL%o6q0uK@|w9o^{62jVj;mQMg>7;{LUM8OuzmN%IGw#i?Qjaasz-CpA=W@Vt z=%)c$E76FPIpfNv{$wpCzW)Rr)J@jSo$c1C>OyOC7kPZmAA_=7#!VKK)Nvb zplX4*n*TSd{y>5}lG)J8+Fnfn&IZ8ezy$~tS1U3w($yeH`tD868NEDfTxSqoj-Yvi z6q(7AXngJ(u|J#6D0^OH_xambS$2eRAp`XmHXCvF-pxa@65gl*X){=gU=7Wg=|5HB7u? zGrANRU>^Ul^Q>?)#nhCZHGm~1YZw0m|3cCC#?)$M%yzg@&;f4l7keB&`oJB7XbB(< zye~=|K!Gm7+==*1VtG$!07~IZ#Og7AA0zm5*b1EBFuAt&wyb;vC0G8h1A(`StZg%9 z|A1lJS2}=V21VD(ivWp0cE6+2r@PAA0hzd7mpcG_J+;{>Kfm6h00JahBttZ=P&FJUt3`iZPWiK6y66*3M5(AqKx|f9>u+bhbSCq7Gg&z^pmDq)2F6L9@+Kw4@fdE6rknD?5d9mp6@KLh>G zJFlNLq2P5Mjh1jdnl1Y^X+4@it8sTxG6ldNkRWbpOyK!)&T@AAB`?Zg5I`Z7l)Y8^ ze!jf8y{FTb0w@>2b@qC>%c>kM*{RPN0!R^!;|EfY&VZvzy0-=5XdLN!d8d~8KLRP{ zN6YY)43JZDlaT>WDTNpB+-eKVrBipg=+yFWJeL}{NHdfRt+pD>4ND+zjc-#krU2US zcYrq`B_1?JTk77#fw$>Zc5s>c&no}e?h&2F;+CGEtFAUIw(7A3iHnM$}|`Jq{ArCeAYU$)%90V5<5$4;%s7quwCO!@ljDz3J?-k{-O z{s5|9qc!rn1&xNjP@%A<(WuAP&1j)RKo?|oqijD zKmZ{i!W`my0_+t+Z`B`DyJ^ zJiq`(oLp=MPSMJPM>Mi}nSaoZ;NL6(vj6+`0^4(QYX2B2?R|7n2o>-S{yt4#NCS~6 zS}WAD%~{2E0tMZ(*Q4GDNo0u(%eyzX3e>A$B%H0=s%7=r;2YaCJVC47X|r#ertfgL z7ZJV|mXZaosqIn(;>oexHQT$hGDXpwC6xvxi?NS52lEQu*1dH<$c&_6vRmi#K%Ce$ z@%3x?btt^nht9y#Hlxs;+8WX)J?(BRQRPriwdk1dxXnGl&w)c#qA=>eWw^76HLWQ& z`|~iXK5T>_1PcL^pI_Z$kX(8|-t4Fb?W?Ix$hE1O(+kiSdq^?Up zGTaGnmd-aeRZ=q-y0*I7%TM$1sN4K1Iv^rhSf;M}K#@metFf;GmIvEF>0!~B5c1rQ95G}$NLJ_F17OMpN^3?KSNt0#199DMg)!{0|= z-%S9Y_Qf0^7j9!bFD`2N?!T%N_uFZQm{Tl%SZ9MmmiVNM1oy{Ay21W7ngxwKJmV&= zMU6ckBoVbta1b5)2i#H{0kl^+w`DvVA2-f>+yEHnE89ahV(*2vL*9?6x6}nH#ZVuM zbY4u=m>f6%`1p4g45RkY@_I3n-;K237Bv7SIm0J%)7Kqp+~z8jd|hU!)91TY9aD{Y zZ_~cWSWjJ|+OkzvG9S{`omO&}K<(`CUmL&DV!iPkcGbhxLnX#bM$Ho$V|<=&%V z04!Z=TY^mS6!1kW%Z=hsHrP!tC?& zd5cKaHn9s4UR?H?)tnR0(d`AsdCtlrlJoXck*Bx3bzNqo+5l%bzYqsMyjE!6ew}B` z_7{Q>3h#N^2}o^+CV!+21ozzKp@WRi$L4U5eSieW8rx2yNEcBg3KK7Y>^JVi?+N+$ zMh2qA1|Hgl>fHso4;=#Yc_9)zWHs}9vS_Byi}nf>Ok7_F|@uu0rFmaqd` zqeXhem%9P!vAplQfacAvYy18@7Kxg`8w&qhtoZ-d4gCjqLrEl%ogyd-$cU)DK^Ykd z2?+rO69QloRbY|Jc;9+q=CDR+A1BkjRocrI+qC0Ld9#6jagyCwV|jl1M^(}X^R)MX zeKp)E2<6N?Y+Czo`t|Np;8mKKcHX6X-|~h>)!Hm$yrQM3n$02ZmZkbm9Ka=5`ZRfD zAqYZTC#djhjruser9BsxdNvRVz!aYqq0Ut@6*vc=+l;fFw`BtX;gh=YqQTn^2_O%j z8$B0?1~KwkKwqhY$bzah*~@Nu#E=Drf0I=X-e3CK{NN&!4`aA>rqyc;#t z+vG&qna@{0ogWWC0&i?57`?s>H;tnW49#K&tVJ*#Y3%2pV}LY%kqH!gWhMfw|BPB)w!7K?FY2K(Y`fKjumm1{9KH_klRW`pqsOs` zY1>|bDQ4H`-H?Gk2tjgp;_{lg{V>Yp-+WcrjeuZqHc8gTokREbA$Ze2oNfNd=M(A( zLK7*oGE)T!&ErdLDToC>c~;4r2Z#rJ%biH#?73dL=e1Ar=Dw8j6k)5apxo3|TL?1)KEm&&!}pTP+@Gx{MRNxHSGw!wfehC)`qcQz z3uF3~0UQc$sf?nli?9jcH|PO_y`hqSqj0d5s_>LP`E!0%Nb|VZZ(LqQ5}T}ZBwm^f zx31<_FYO7@ERSq}p;;|_)B(Rpw|9hIvT&=xrT5a0@ifKw;+@tCSklcnw z+zhxE+&ZN^pGAs_=cPd7zrv>nIm&YRyYh$t1SB(~1a0RvRzwN*f|geWXt0>rS6p3` z|1DIt``xYd(Da*mBJq2=U@CY0U?sykKUyBH1D!;pjd>Qmywt-v{iJiKa9C1j+{{}3 z_=^mBR2e$Dh{-8$pMM=e2U!>p06}-d(gDJqJPm&Qf(lO-4!_!=a(eyVec8+!`Ao75 z{Xk8-AGiDfx8o$h`AkmCr>yA?;!ms@uYitbFdb{tCA&2^KTsT0^O|ZL?D(*hi3p*h z1v!_L=j$_v&f3lalZ=drkm$_~*Fvs8!9DW;%Rd5V0h3*vs;_zoLI6xRe$4G#?Fn89c21Uf25&%p%G%~v z`0|n#D>V~(G5_%hLIA~(_|YN-(rYFgax~3HK%^|E**~ATDH@Ftf~k8z0uVu&`a|NX z00az>Px8=BnucCFIRRzGgt7vmMUJz|wNg{N61De=u%>=7Hl*e_ zBE@JxjHj-BWb^$<00V{t?2NmN!@ZLc*#24;uA$1*Szc6pKe{b%o$UF`$x{I#@Ey06 z$S^xVFk=|KoQgIB{7?#0J{6aIG&4SO$Pa8wvFjI=T^3XOt7xv`h4&%hN#phhX8{^V zwGapZqLJ$Xyj1kL6p#Z^C3TxH4r%BK@LQ74pG6`N)JAYiUVmKr$Lx!JSWo zLJdr}A@iSzQLm{-`dih|?YGZ4+*HEh>;ao!YwMPjFEo~q(4{)*8T(Rt-NDDU004xF zTI}1qcsbh1ZoV3&Z7JTNk*CpHMSKtTDS8aF&R0pGtR*c)t3^Jt`gNMNsA8N)NNHI# zlVNI&0cSV-)y^%I(Qp+ud}Y)w_6WKVJU>|amJe9l2t{@Lh+H!X9MuQqAsJ}z&P4xAfrliq9}D3zdpZ#8;GcE9V*tq=E?A})OT$p?6Lp} z7Y{NLJFXWEb_dmnKor!Fm6{7A@3p>NHDG{!&$a4ABzAZF4X!3?zEV20{nXD(Td}Oh zZSwMUiLPy=y}Khnzs$a;qw}a}81%qv0%A3(##_9q)|>$dL5kQ8a`dd6d<@WlPHO@9 z)-|%;OShiD$N<~S`YYlZXu%~+qj-Mk@-_y~U9cANHx85LEsn3(?vn3J=x2tg4F zepTH2fi){OieJxq{@rh&TxUAaHB>N=V*|odcr9E_8qbp*ZuSMn3LaIELJ$ZY(SsI& zz1jAieaVF`b_)N~YiA=c|0@gY0Kwjg-~^x}sO5oYzk_Vd*iGPbNDvRB0!c2-Pw!&n z+$x;h1uKtRhy3gz?fV$m{_dN_#=r%adewN0M{Tc>M}PHSw9n*Md78mb=e)6LYziD| zxqn4p?sxMGkBGu#Z2+IH2UrRjtFps9v=D)+6Mpz_T+n|rpd2n99X=8NSNHO?C+=6L z?7Z!lPb*__rD5a3GcQ%X!Tq4-dI!TDx`&WJLRiIS4A!_u=~AD&GodXLNlS>kfB_Y{ z_&IRa1dsvgkJx7#WTC(kTZ`?U--~KVAu9ZzqmO3xQfRF=kMQZ~L-jCi>4-m?rQ&DF zbtpjyKnWe+goeR*0%}Jj+u2xF;&HftereeB0F?|hlIHvrSeFn#HJRG5+)@H1XYbEPeVIQ^mgDl!XrxPOkr^00ck#&YQo+pzM`Z6(5$$ zpoj^peEY^je{;vFa>_}Gym61I@xt_ z46q0QJNg0SME3Tq5qDXMZCu6ZYDD#)q7V9~6~hwT0>%nC_lEz)VqD+_iDs)AhELaJ zyd^`!Nt0aZPonNN>zHb;zg4kjs_uxl`m;@pqe85{nvWNy`Mmse-!L|Ouq5FCAp@vL zN;VTiXWW329q68HO^$oJoS`8OA`uRCkv-kikuw~ZV$!7zH&!6O zqd#Kn*^T~k0PuluwNo6|qznx%LhlL%#(kAlp41BDWB$-oT*84~0`4S>fDN2YEq29Z z&UK)$!n1*ZrU9VOo0~V#hllBY?HGq)|C;;Wy-oB!lgHx+ zk@cm7Oixc#^eB2N3;EEAZ3QSylPc5l^&3voC3ZG-H&E8ThC+H(CBKUXYJo4Wn2Xy~ z?A?{>uyzw1XnvaiU)94*wROR;ID!R5f8KGQH?~w>TW9KDXNm)8Ts4WbsG8dC>O%2e zK81ddWfBM0<9gcPozqTc1H6rG3RR=ATm1wfE)B)bPw11tmjhDd11@!Hv5k^n%dggd z#%Ii_-$|I+KK@F&(RYB}x?^A&FtqY4O$gTczPC4Vh5ee?pS-DeMO;5J-)MXM%seoFE zDDJ!VYOx0b2toiwT6PWAml3nw$%+8S< z7d}2p9|@F!l+ojzETK1z+&+mR5*P=I7%D@}OJ2On&=IvX`ikdN%JbX0E;>pox5b%r zN$KT3p&0tVNf}KFS9Jykw~P;*oGXH>Pb%AOlB$o{FFb($CS02XTlYB%^9XJ2mIxA2 zEqJ%A1Oy-(asUIgX>Ge2^08nYg{;5Jc(lJ z03APjTld(l9hH%@R`Pe9f0$uXsTIlO!rrK+qXF!61D6NVTrXA0+R1V%Es;#F9SrH= zwSdwxlPaRD;b@|b5~t2_lwoz-@jk`wSg6;`u&;_|on$j?7Iywy95=q&$kPuVuMhKg z-?WI_6jDftb~I}^ZSEiXep290KXfU;i30t&t2*tek-xu;@d4~$H{=;&R7GR{%z%{x zPzWNiQ_avt&HZYoB-qKuf5+ZCiS718PTP*DXa<*6v``d)Hybk1qAV)6`43 z*?xP@;5vU!e84d{;x9r0`0wU-F7xu^gR$AM>Fg5s?r?v7B1jbHF_fF11U80`7jf@} zWHna4u7v-HRKo@xR1nqgBtKmGCNJb*T+rZ`AV5GofP8>(hE?dtfr9*grxELXn%+b4EvUf&%Pe`;M(({BT=+q-}JnlCsp$Z=#;t)?J9lq z12@CTx{fSuuIajT5AKoBDz5ArpjfK?{lpFy1cn=K`N!B-8xa=$)`&a^u?(7ajZ`cM zre=!Hm06Uf(C@f)-uw)k#5Uc|eU_I$R1GYhKLW2~r?I$$pLt>rZS1GM`f||LENU=f#Cxj zXah4$W3aeqrl}~xti3QhiyD9RdC#=j411SOAI$yy`Y&{EJO|nf7#gbDolbLY4mf;_ zwpIgY%aO;+ggJcYf7QT#xNybkToYv$69meLQr@4P0ydB+N*>%kcM^)lXQ3`Vv^Xgr z;577`xcozg+dI54F(sK|Ig`0%IS=+jRH!F*ZR&@su3>uz@k>V5LE`24RlK6 zAb9`AfcYn?&YoyY1?KJKi%A1Qjld6^R>t|FLlLaa$KE&ae%>%spgRmMEgT(AM9OHO~f)aw|YC zdFkX(mCO6Mgry_U>SS@eAT4aViyel{Fg{3U{>#6>4AF=Rj1_h5Te<4@D*w12O<*Dr zFe$K?>Tr{b8*5g}uP0~%NUY&&U%+$(U*fIr z5$8F6>X^_LyA`b%i2r&l7UlcAqYiv}>vhpzDPG+ux4vUSr9!e?wEHjQvz_)F0UC6s z0fnJgBny<*kSL5OfI5TzfgZEGMXb?vOvT-yn3g~4Vlp-mC0K#UxPo*7x@5&1!LHtv z35S{46V`u=|GR#U0!JoS_=X1chLg{<(LUUPat9+%S8Qxh1QjoqoD)a}Xk9B&7K>t| zfd-GSG4b3}S(SpwD*+?^UR^7eYlofE?^<=QR{4puUMkj`vd^cHLgpmR?V!G7wMy*;xLc~wHiU|@(*uU6JoHBX}ePAb>P7W0Gz<9MN?Ry1DhLt>+txz;!y|w zuj$Vcw^zm|?{;&Z2itBBhPrS4#ndV%A%bS0QHD?DRZLHC@NQ|;GHUMBvlQTjjytsM zWLf~t zX|kR7HX8V@0HkEi;Fu=fdJHDJzQ4ttpdDE_M06eS2H;*6jRRG@wh?txI>H!u^8WKPi#Z;fv9KQd8k*Ag zo2Lu2)u(sQqR?4JTI;QKyfsE}-*Se_S%bsz44bAh$XlNoCQK$6OfWFQViGbEG7>T$ zAo`)no|DV*eAhsL9jB(hybq1i^8c64hyg8=6aH9A_`|jEZMs0xcJP4(NRs4e!K*Oq z;mde6R15uPuX(I#W^*w;D%Q3g3EwTQ`2th3s&jUX(@MR~+N#}68JwMfwd%euw4VI1 zRByKupOc_1E-*BA8XSnA4SnrW{{&8~^s^Dl6Dv|4Pr+9<0cJ5t%AXUR7dB}zkf-=( z%lI>CTtCcSLpUFHkkbJpn`WS1#!$ife67|v1-LYwURHBA2lK0^Sff;FYFwBGs|KWc zx28buLwU72TZY|e9sk_k-m+WJbvyY{W&qN83z{*~=YHq!e6^iSLAT~hywy5dX43f& zql{eI^&_T1tw`QT+wsy~OmvBJUdgaDO! zxTmtYvn*^=C8sd0430s%#^sgA1Bdc`+PBiD@w%E22Xr2G`;U_>r#h>0c-|gucFX1_~NYYCHx^EWp)9a;le*=v0_J4@pj>u8)dwm4S zwCC_AS94h8oNrD(um}iF*`r^X$^73Uw7&aI>bIh6$-Y{I0F#yLYpVI)a90iEg|Vma zSmOHsJ4p!ugZBcV{b3k>$ts!%P&o+XJl>b*0C2Hf2U-8)Qr_+hwxC!ZfL{Q|5#6`J zUu+x{?e}m5z&XcTU=+7fkR@X260IdBmofnAa{z2%E)ca-^ zSA8I2p)$}<4S6fR;=RO4BqQtDhoMl@mxk|v5=D3A!1iP(0#u0V7tQBWlI-;J!LSR* zs+!O7(u|wGIM}(*5BNStkD8JM)(2l?2tf4`Y-tdTzYu)iI+xl4%G9 zIuh@63R!GE-){Z78OR5}4`ylGx&v^GD5$c9B-N!#rn1`Ze?d1@q1d9>EiKj$W(xan)?eeJb55xwm(mXzd7urD0w~P z#sS&Y?gEEK!Sd-sL41ZFC_F5HJKM*9Y{TY*gQ2)#l4;3!k+`R$>!RoHssFg>-gUO7|Zr9 zejT@3om|Pw*25tC+(`);YP{nKuLO*qUGk8UOK&xn#69LY-0p<+>Y$PZs9*$?X4<)B zh@@q%p>6xOc%^K8t#-UVv(zMrx#Jp(tag)!&4@zle4_Vs#T3VZDd?iT@*UT48PEu* zFJ50)bYt1ZT1iEFs7S;z=3|Ud!}R_NXTBNEEC=8*)3CLWJ%>wGYmA4d&x|sG-;Nba zou*&{08Rh1>Fb!{M8Ts>Y_m9#DR#O)p1nePr%yH)EY2q>3Iq(xg>O%A2pETvvIARp z6QM@7=C9`fsG+%v&A(r!@N>n`c}6z%xzYz)ClFak7o5aPmp)a@8o13Zwvc0ZpMbGYYKj z{4kT;1WT366p{tCNdori+}QB8ZF4mEfcpeTJSrJ&FWNf2p46ZTsY%x$>0dzs@p-Z_ zz(A4XWo}~0*YI5Azvxz5!VrLgM%9mLGzdT%^ysNC)>^R_kv2a5RS)4dCn7N(r4Az^ zpwALjxrTTYUv1q7Z-Rgim{hNo?@gM@$SwJMHanFsFP3Lu$mJ?BU?C%eF}bSZ-<@`L z7S|aTjH4}-8~}Q#IzDV0ow`UsXm%ZEekPd$0D=7SV0v1IBdyI8PW*rZayLCmPnB0q zNjbT@g6d<%XrM4|J?zw2pRZvgnoyK=wLMVlDj>k3pu7L;$P4wZag}`wk zwsKIfdO#fhZ9ovg1xKnU+z^i$5T;@|xu*dncr|!1^Lzq3O6AL{;4mG}eOd;E&%RmGm`&i%_Gn!i_Mfqu$*lRaY zn%-lt3b}=BYARHpQ&jUU8v&7GbcBJIx$i&RaCH1cWJ2pE@nT>(;Ix5|#re*ySWaVt-7;ZigP9vJ{HeT>oJu<^ytUSl%n9DZg`-@hWr6W zm0FlsXVuH+B36B;)`ddP5lHLkn|rhoBnnaw%YV5~VL6!M#U$V`#APtfe{xe08tOZW z-5?M@MY^A8{S-J3S4Yi!jA(zBp}icBC9N9R!Pf&?EO`g7n+qD z!ECq(7T%#}luQu1}->9JC zJVsn30T3o7fS)b_z3;>E;CWwbRRNC(4w+;7SFe}39;*2W2-i=hQ_&h>doP|wAR}I& z)?^#k?3XK>od5F$<6rj+j~}HCkBL{NZ3kkbQ!t)nkBhlIxAk893;q_{ofcBs&8z-w zIQ44Z(-dcoY{6}yzjjs@J+m%LT!lZKHe>y`rC~v*h33fa_)Lt*e5Di|l>_Nno39gB z)x-aN()N#*E*n_?l{OPifu`kO6I&|Z>e56DjM+*sLK7by1g7eT3=j~VZUG0d)ov0v z2|Bw*4s_R*%DL@)tY-ext-bsyG|9-@Z<=?TLvE+%1=fE1$_9EK*K^1)FYYP}^2<|- zfCIW}WSJhR%*l`TLOPQtqUOm{DNucjt$~bWabjU^SI;kog?xL1*@+-o$m@ax0h|V` z{nBJGKHgRxy2XK&y-o8!A#(0rTye4ybRsVM1Pus|bHWe}c>m1J!x-ro8>!V@7z@xd zXw>6db?KF(P|8}gt84hL`^ zh>hxMon`oL=+mn6@}F%0Sb>St`9{*gn%b>7P&c)haW1+fx9ww7&&N0-+21sV^B ziopg3!8fDyLhE;dS?1fR4cq9C74?eMVDC+4`5Ket2>_$Jc*m`r2xEduN;{8wX+V*} zyyQ{(NUa#-moFzQ2na$xWqy1Ueh@Xc(ExQ9D65|r8R%RjxpB@*3m@P4?iUp{W@2>^ z(!^k#f#*6ga2x~{Z#{PYYQ4VuZr}pp*@xvhHgdcQqfhsXdk;V3Wc$Gzc>1j@m5Rc0 ze3i0P`g7SpadcX{wakI(yvK3(O49TrO7fSP8(?nANd4)q@8D}LceA~`#Xlx8u zQ~#xBh(6taybqzYfDnWxv-3N&_eT8HmE(u&+vJ+sWkSa*EKM!L(n2fcO;_P28>)b+ zD<%s<;$%BqLnI+Yqo@syto!}TtfFmU&(?lZX0X?0?{O8rp{BdBHg86q0Zr{-IPm~t zN;_s=BB%!0{lQOT==(FWg3#Z$eg*eX6+%kb;yY<>mApnj9 zDW{p&D)~s0$O6uIu-3 zRqX?&VHAWku5EpWj(`S=hQT$*)o)IoD=Cj(r94#QRj*SElf6bZSZl9y9t&V95-!I6 zG1YGHbiMjJo3y^uWy4!D-Le76&zCO#l<%VnH#wwR$7=Ou)>XE~bD9(^ck^%^$gWrB z)ygc_!~@+nrvE(b7eH~|BdgJmVLj}qE1_w=N^zmhLJKpX~^57VjPQdExyQwtu{u8>b_7w33aUdc;MaV`rY3K z)^WhkvLOTD6l#R~U?2pk^14gs?w27!t-@QtK;j%6{f6`flCfn6LwtUo0!-N3#grkH zpAYw;^p4R?ZJw|y|FKD)E=SrSM6+2*dXI^zM_((BIl?uo8xTt1Y`K&nDhpj*q_4Bj z@8$Shg4620;6O#XV-GtmG@*@5P=cml!O*rL?}xCD3~ zTMO-ip0%!w5ZeIjTO03~Q6vh`@A1&XY&{;(?A|i;lCx8JbL7nS9N~7mue;srAuOT& zbpM&~ML&Ts2BtU>tr+gnD6$>)GU`_ZBD!!FkZCj8=eEE#Q~{OSOfb>mf$!htNq&Gt z0t|--bC4+XwSlF)m`gnKT71zUB+ABzqN4rAu1$<0v5~0_UotAeXlSLDv`D4 z`e)C4)$?fSw(tdaUswwZSCB~p;vWsm0 z3oW1uDL{AVDt{Gt+8R5LyGY9bfSn6!X6;O5wuS7yzyu(Y=$%6*v0*^efh)=O$e8n9 z@gy_Z1qA*l7~0cpF0F5W-LKuq*gNfn}!W+>*cn z(^QxbD;`QKlut?9t<^L8DY;3+hh^5RcgHr)WT!8?>q3!sd)tA-uK?~657y~Kg(?UD zTIrlWbd_bXS51|?&q}EhjkKII2lbUo1q!*E*WcA~j|aj72k}_gKp3U=QL0YqOs6nv za_xXa>(ua%57*GFnfKf+kDp&^vrpH2@ufQ6pk4uze4}9RkNU5&;3-enjB`xWTOFQg zp6DK#8QGYYdbc_HmcixxS$43--m_R<^j%ZV@1@mey=#|XMX8>yO)@W%_uJ;9%eJ4E znBjoNuR`1b5$_AU;x1n-B!OTmvevuRxBBGCMn;8@03*q4F77zYr}RhrTteVDwZ|ID1dQ4#=e@t>1uHc zH%1|s+4T*|nwT1F2F_odz-8L#vw%E2Y(E$d|<23$~7iClYY4% zKn^xY0PI_AF76;}CjDO1{p|M7I{FM?7)OTN6>oFvn zcruQ_JR12v*ob9PK1SWOO_9XsIKMxF2MEF(t}P;$v&b!0uK#YlTm5|e`W&1-QFfQf zvZkN823x4}p!{7_cTXYwnsK#ZEh8CeC*?(@EVmMgUFf^0o`*qCbpn@Ut16le${KKKrQgvs3;s?yf@mZU&Dw3hI_Qgk!|w%B17wZqf9 zrouftM8trDnRM>*2c-w~Ci80D>KbR`dGo+as8?Zfci2>podZA5`;%4!3V02DMBojT zQompp@+pAZq~Lv=?y$P=%+@{wDq?c)#%Ao}sW;ZY#XymhtJUJro0rDGc0KT0UIFCO z4wUmtpNtM~cfMq~lm&`=(&S3768RhTwD@uY&=f1rR-(^h1;nc3uSx70JdlHC1i%g} zuD~im4Q|0(HWv?g=W@W)Q!_+4Yb3hdhn!Ud!@sD~gac&u1akNEYG5c-CUu?`08$JT zjkir_eEfgbzNOiO33ZH@_m9eAPhsY{)_bv^p!PlJayU(vp z_P?mQTqpXMVx&d2fjJH`ja7s_!#!IWPNC(p6$czA)RsxtRo)Y%nDlEYxwB74#F+5h>2toh!Ncm>)ZS zatq5#c7?5xPcG6fEp6c6GYK}3TdVlm91prI)0^_LE`PtPRITXTY-?H9Y$ewBJR7kr zaAIiSX3e>=t);oSq)oDa;_QV*zYNp=aT8_d1L>UvICUF28{_fAtGkQ1_>W< z5;y%>320WwZzc5r8>bsd5EUAPtByj?sr&OkjdxJ-Z)^2c6Fd!5GNl=vLIDo6tuT@| zavc!C0E5e7xxnhB>nz^z5~_l^fXWgYyo`5@qb+Vd=upWKSAQtQo_dp%?F#t!G_yz5wq&v2KRc~ zjjigr#?_L8zct6N@Bxj_ak+7I1A`t20A_*%M5mrtS)%k0&D8*aC^l{v=yrVRGJs}p zDa(&}))8m($lzd6<&3OyY{DXX&^}?h0<=I z>gDnQV9LU^&hGaQ*A96+ZpKuEOpWl>5*>+U=BZdT#F>@t;IdY-ZmAFDWSm~NqF((S zd$n0;kq>tVJev}kAvt>O-N&;IzHv8mC<0Pb5-13*o{%j7;PG}E0BY|4AQ@>WY%Gf0 ztTx9z!@9YuZoI}yFfd0c7v>K$s2IE&%dLr>5H#Y*gOM#T+~jYHRL#T-|8+mhLfvZ% zyq^+>1X|(n#hISi4V2Y}%j5q%n?g@7cx$o1Og_X!exQCrcw61nc+4)H?a*4k%6uDY z94TgHSr-WBIBIk=&~=(B6HD%EFWEc#B~GSw2q?Pdvn$2e=XV?lJ=h*NhgEIR6Y5am z#l*`*;=4lrpl{pe*X%|^`xG-DPYEzmvM;( zCW1sd(jV(sTQ!>OCl4J$)i=ua?A1q3nUnv;BapP`hcV%NhMRH3{I06vY`1@YUVt|!^d^Ugr4ZJqbT07A|-%XL27sgWE_LqtX?U(Yc!5@Zk9**|kE2IO5GK>vL3=-w~>0Odd z;1IxcFVqtHh^dftfKQh-+W?nL-AqsH(@&A0vce~*Mk@>Tx_tIYOfc=w#1+}@BIhpbjwPKAk*<_=rui!0ApO~|)H zox)8)Tq@53L1}ZG2tYyt8+~z%I9n5&#ID*_t?JtyRxK^#BAetN6Po*`M1}tHUX$gd#GlHyPSMJLDl2 z=r+;&;0Qr9M1(itbob4y>hB8j?YKxt$Id5MY({_@pbWL8iA!IH2foAi!xj&7yx<5b z@|bV=e1xOuIcD}c0rUET6lGA9B&zxtcM9|EtDVfuTqb2aEwkVx0m<`V-+yUX7kKnM`9 z(D-`}pYROtQMo2aSX+HnA$(cX#4~^~b(c?ZnB|l{pGw!ZF9%aPhzHNN;dl7q^ym=k zF+0Vmk_yAiCeGWuZXv&^z(~is`Rg2-l;qedxqU6SQEpBtwuak^-~?vmvm(7>)0;Vm znK!iK>(&AZ%6D7^Wb;!=o!etm8czW<;lh?BZS@*{PQ%=PO6heQ^*Kp2?QOzH_PaZ| zVW0b{J*~tr%{n8gq&{@hz;QI%jn;pvh4z#nARv1J3Pw*0A00o=yBM|x5%@mG)7e+n z#@T_LdV|MzlT5AwQ~7uV_dxOh3qjTBSo#mE9-u%0{(M1=ZFbT+1^I>-0M13#>dX~X zK3|DFD61fz^{&IVUvpIJXffz30q+B+Ov%4@PmMxJyenM;-$O}4`pE$y|Db;>SgzkM##ki*=#EO#H8Or+ zEKuCufV>9K$^gTmoMH$~f*f;$+?F=Gxt_xY2i+#_4|OXO#`u7pKk{>R2WsdM+6aylj9?q$t1dM*( z9sm<;y#-JlPw+1e1V22;p}_+e z-}}FMRj>Yi)3e<(yR)-Zx3eQX{n=zd!jB;0BaptHqd@h;UU(kdnn z4QFaWbaC_~SJ+!$)PwzPDVUKpXO=>p>Jc{~TChwmLZE~MliM%c-i{hqOyT8+3}X7} zwz!GsKLnHH`IEIBlSc+GXSl%zrm|v}2Gag9PMnwz^G1CQqF6BxA>tY5AYm@WdCq>v zy?Cg{R^{2dKL~qIY;z|Xv_I|dH-KfdtQ*lWRgYVwBB+aCH;U?z$D{XnAd z-~OGqh0t_*9*>ECkw@hsl`@HyJp_IZt5dO2BU)5Bs$(gLe4T%EU{44h8)SRkeyK5F zbWUpOKmI}UuB^Mr#gsyw5iZA5wMVabzqdezL_zkO`v)gIPc}m_3>8$(tPg=?=!hR? z@d6L;2>=IQ-*k{VQg5TNkoD8~zq;@*4A7DQA0w9fT&j2KPr5M~C+H+-qKfkD_4 zr)MYiKbe2YcDSRi4`VVh<7B7VtT?USHnE!1dHvwOL7ZW#w(CU8hdXfVk*-Xybe^72 zBFu>4r;?R13ZIj5Cu-mYH3paN>{<3V6?-58Is|VB+*)3`azuiV1{1LEO?0yv~C0&!z zhXu-pt0Te);#5HS5h1S@(YCp{%w;3u`T^SHwg^1p2^Mf_1tdcRglPl>L@)w^1;Q&K z0g?L+|I=P!MPD%vEsN>iBD_@u63C+ZhsDGG$yD7@CN#;bkA=`+2K#noAhkvx{O)N5X2)YOKfGi zQxp-hoHBQA#n(C;aTH?0{Qc2sxT6udvlERW@Pm=!;=DuN?9!W2-=sTu0jILuA(>~C z|JvYNO4(Yx;byvQ0N8tG^V4)M> zY9k&$uvfq2jCzUwxys>q*U=sPc~QIFpmy&*vM=fiX|{3W11DG4S$>DW_DX|sZIPKP zP=4b5;NOvR?UfTMn^9@ z5`C1oZkJB}h@;w-90VkjH7-Ehy3_xbcJPOfr-@p_v}#T`2bXbR$4KuyYxBCj4DNB_ zz41wXdc?hTVzhVxF!J<{_4j?`jG3qKpQ>}EoqV=2lp3~2k0?DmpEg~+^R$(=)7xGa z0LrzlHi=qB>SPInFIOg?5DRf+y-A6OGY zG{ye~c#qaeToRqoz|vn1*7{rfC6Fbh_u%N3c1e3lw~JlwZ=QW}lb(Ow-`x74$oEen z$*}eXC7axBR5o*Ub(rS+hBCDxpNo#+hC&};J<4LXrbncF`>}*|nCt1aWn<0tn?PG0 z3;PzvIqxM$d*Uq{*4|AL^cJZWT?Ue#p=%9Uh`4FV~(azq;j_0`<= zQ9ya%d1Igf84bE^)sk)V60A2-kEc%$aR5qo*kNA>Z)%EeOpkU#{|d^)yF@CaF8KzS z24oixrA#mfKVxg3g6>B>8})*@<)BYwsUeRlFW?c0qsS;N^yh~ldc(Y{P?lPf#Txd> z5kX%1@0(_g3NjI+B3%|9qyKYMmWzt4+|2`Ln<$0-$?r9&1)FI!3;0eN%NZ`@>@v;fE{I=n0iARH8@@+DRk@p?=r!y9`u;w~T>WrzIFyqt261 z%#!V{8T|qMH&lSgZ=>>SGT=}M(eqP+s4n~FA3d@UQcBDevL^kUp<=c28h{@pvOIx3 zHsv3|?+VnyefXQ8li~xSC%U@^y6jD`AVU#LRI%HwGnSCP@xS*E9`<}Eoh~?aXbNIy z@lRziV@jzz@puYn85HJz6L4Fg?Vt zsjT8tO8*djzE$r>LaZeW`W`-hxN7ga+`12XCiK;oT^v4LX|`+sANoxnT|_U+unVF0 zOp4FYHhS?)eNGnHI$_uKiah^9Y++oYq4bWb9OP8wb5w~}-9S>2-l6J~v-pU@=jG^w z-dWl`%a+<@*zICKud6QXs+3ed3)p}iJ^phmzft!^Z~3d9Gg>n8@AJpqWP!-iuHiOw z_J+`pb)gv7-;K);tJIb4agF*})oqVK#D3JBX{K(+4}NCLIC7T%l!`6>p;DqKcm2te z8gmY5W7d$O0@LcC-GM%DdRR7exxts`Po*Z4?Eq(``mPKZf1;JgWxHR?%H`?D|cuq#TXiqhg>M0O^~`%5`qKRy?L=I#Nt$P41sG2L$D)M?RO zxix>4zp@Qi5m9$Qxz7Ll=sR0wrr)%F?oG+O0l)`!-z{b;w`YQU|0M|xjJrlM)hehT zE;ukB<@s6Ye}C~vOKX22>7Yh?noaoV2fda$#NO&uo~k}ilOtk>F#7rRkeHoXdAVxu zsQ1i}dJRMRVM>3P;NfY0}6bs3MqG$3}l*< zJq0uWeb@i;__r=uX63v?xjLKWS8`YK2sASO&k!hSiMsabb;ffya9w&Y-gLqoMIjM1OBF+<3$Y zXDS!n0jrmGQL7R!XskV!0foUsWG(#E_K0^AJ_lbqBT0FZJM68@^I1SUFr&Fk{^;@I z39n(l73&;$F^KE-*8-efVMtzz8$kSw#Ck~Q;tYm~4ZE93UN*ZEp)V5(k*zN5k6T}$ z516HjfLoOQdI&dhkKZS#@nedS+XC`738IbG{D4B7LZrW}pDf7{AWjEhMpVZ9u@C-d z@hs$d$@l6Vhi}f;2j$;gtGY+we^Vp{a%D$g%IOiNB;#EH>^!*g-|kUf9#UL!Pmt>X z#*f6ojIPvPW=djc6CfL*C3ZWz+KB1&4GNA$?1Q~+&%2N0!$WpIq(pW4&!#%oG zOp%;rDL3R`z z7f(C<15^oR3NK=$;Y1H)+E-Jm%*nA3@sLiTy+tB<^^t%9ot#e^b$7LW8o zCG^u9mMGn>LWPRFQk=5Bw24+`EB@2ERp7E|tyUVGFnUj@;e!9?3%K&`MFROuHzL2Q~whQVe^wtkVJ{ zgp2@aUUw3ZNXxg;9um5s^s{bnk$`o@w@GAmiI%1S0A^zY2vki7{{~YVzpvxNS1jWw z7745LJUiG3l>ZCv({{-gNeevh^Bi=Wp1XMY6EmfwX`%&loffqjE1?ZbkrhoNgZ9W9 zwNLtgGzjg8)tZu1D`ycI4a=~@WCMz1@uorAoJ=EmHmqeKjkakCH97!>bcr{DY4a0O z=1~J7Si|{;lb#x&c`35M%(CzYN~Wsc=6T6P@uYS6b#xz?vBJhcsm2mGMGC^hw#?R5 ztn%8Kpn2AiWC91ZS}A@wr&Lc;q$irStSNjj%qncAGRgy<9(4haxDXQMjuU%>W zBgNh&9f!yu9RM%!uO-cp$>(U0A+{Teas#gL{k{zMHcUhcvK46pAeJ>zSr&B^T0}dKqid z@*_r#kjLSs^}URe#StvI7FsGz8l@4_4Xm(KR!ogREdYvEo>he!3$b`HdMe1A9;_Z$ zmmFNK&d5-P8u5vV6tk%`J=Zwgf+5?<_lz{fxR_o-m>9EMj1(oXSfv7CfOa(4oE0Fh z92R`Gg^;EFf}{J>&PF>{#>*bkjNJGd5uCUH|pLdvXs*M@v% zm)$>UKj*XK=)X;(XU{wv2BVv7Hwtu;jxsz%PZ2prWCfDWud~m_eA2^{ z3d6Fi?+=1RLhHkL*eUbI z+}`1d9|-HihrAQtje^~0>}R{RZeKOFoeHp4U+vI^?Tf+ICO>#iP=qDflPude$DE}^ zJUcK)gPoSm?*^8ySGl=HHJAn(bz%M+?*Rx8nDQk*nHhtgJ}yB{ zjUXI@iRu5Ul$G?TVlrVO>SC9%p8b-N>aRgv5+?P(rT-L|q@*}q3;G!d8U6+&0hYu^ zP-Wp}=`RFt0e|%P_xEAJcvwG0Z96*IF%`*+o4$GzXOQPag7~AjMN)6bp`q`2WP6UM zjgG(2%>3Z*Hg#o^0#_)g z>9DXexR7$|vFM|~!z@FL<4!jHy}&*!-W6~kHsOjnc~C?oURLjbB65vR!gz{0Hpqgw zkxQjzUJ&-HL@=w&5niMSa+W^m1xw=xzlBit8<7%my^4m3cz6L7Uoc|i(ma%A<*32v z)X4FKIG9qsEW}$*fMA`FK{gH>HhB^jU6;sY0RO-!@mnJP`E#05hE{b;P!(`DWwkup zK*O!lT6>WgIYCPjnI0UFAW4A7NqlKV9Fk`WuVd`(kKo5d!N%rN#TV;GDiJTcQ^g7i zq4zzMW*U%@NKNAC4~00mF+!SsY=crKK&4U@8kMjR*_N|4#;$mC+j0 zr9oqUt1PQAw1`E8lDhIIg-6_|RLHA^Fk=wZWY=hYN7~j(IgU2fI@DyLb1j=}()y0l zwu2q%nr73aqcLU{uL2_e9iQ~msE-$`=Z!sp13T7jC8giw!~28&Zh81J{^*vyQ>z}C zK!efDO#BdwMuL0&LShLmWP9qpV}XFQlT!dq7!DT>|KugDSQ^L3+Yev9R_Nxc7$Y36 zW$geJQm+^_@H5w8i9+q2*>08elE$NDk;G>>IM{%Sve-J-PfTjRodl|QF|kdM=aUrP z$o}9efznIO5xDflD8v)cl_(n;tpXh!%F$Uck&I}VjS%?5Ai+%Bw4cxsH-dd5!t8Lb zP!nk?ex!|$C#F$o8DY9%e@BB%wjiCfGXm9@*UZfejsne8v1qsIC|XzaGym9#kZD0es1$?ZtBN-RMQ@(1%4o=DWPTT3 z2h|f|#pOi>#i?+Lhw^XcjVKPG;KGFJ%6|99EO|78r$3oy6*dM&EJ ziXsHdK@N-FL`4oOWygvl=~wiBd26p_tG2zK0BOlJ4Z*UYu?G=rI7=&}I$4;G&m=ZN z2R=ts1YVJs2wLz#h6EDp;W7)Ou<|ZBokKsm)9~K}V(jlTdeiZ&k_{V0?Zj4hC9!sZ z_wb9~)-g$Sf5y`54kVim%bXtt_d%K0o@;c%bl>b87mRgJy$%=IZt)t)Qn^DMrUNag zsXL;E<3-THflHGS)IVjcsn@47)8)W{X_{oETEAK(qaTe>nt*H04MfVlXp9Mz0A>{k z2TB-I9G+1>Aq0YYEkux;83D-c6wgQPF(qUUUF*lUJ-4H_3?ro-a1B6ZDGbEf3gm`J zG8+#7RK%`qR_PTW*10BpUmz57E*N{r7~ay3s=0x^W0xq!D*dwPtTmgkOwN#uO}OC>MOa{|E}pWd zDx*|UJgR%31$%xRp0$(I8b#CoC#G}wO0%R(+aP|O;Qg4LR(tFiI)x5jXhqy-a7Ucf zn{`>0`ChsVh|wE*!@}mrl%KVnLU@u8Xc)J6zhZnbMMzLFp4~R!IvEm-+gL%Jk5M-h zn2)K5ELBeZ6~gc8ncH~YGFZxLkv2bVK#xpZkG{Q4Lde?Bx*DHB2mv6atX#So7ngX$ zt;bxPon_qTvYpQBDRkZui*2KUo+#G$6f9$c)TT?*(6F4f7;GJlc7+Ls{qdu}t@asOXe6Eko|*6{V`Cj)(ocZ1!7 zs+oFRQqNNL)LFPhW&za2lZbeR#;Ba=IQXdky6Hax%}bZbi;E97=NIBbf#y*>+prC1 zpiwOxo&YX&Nauxs`Eh!L&G}H|f-HtWMX=3ni%grksF{9vd7uPw?C(gB1Y;C%eXR#P zLy-XFlyyu^M^eM9i--$N=EH)S;U$M)nZ@yHF5!_P$H${8#2cU_&{(X{$kR%Q{^l-8uUM$iC zI^GmwSumD)FFI)gHo8BG33Cwl^coM3w8eG|h4}{?MV-JxBR=FIN$IequysH{i%}{J zI4z09EgWnC5hMy@T4H6W;lzlSC?OuI zrmlVvkqQT;!;-n-ha6KpcqazV=MkA*BF9*qg9={i0l%sN$@=8HTI%T|32T-b6J@>2 ziI6_~v7DL~ln$Mc4qe(U61sQ(`0nD-gV!0-z|sL?>XgZC3CX z|5m1oYuEvasP|=5*Ra-p#Gvn%xA+PCR)#DTl!aLm{FlRh{yUoGud8Qk=cXP$v6|wQ zjMI7EpANjN(vY_fy(*uTGS8G2q5A`~B(8HydP4*>^D*m*r7UrWF^~7-Ndt-?7kGbJ z!(12S(}04kud1^=j;oUJGDjqki$wuDSOrIH7ELru_>3NcCpjav!(Y#P7NfdM$`gGz0o?db$>QXri$Bw2 zN%4~WS@z1vC=a@fyham3RL5D#e|-047!KOpJNp^D7a1wXxD>-838qKKb?+{Wqd`kw zn5QEz`jrXW)lBF&#+2d=H9brVH6g8tCJFbPr8Xnwae(^g%OYXT5L;={B`Lmk?r5o{ z62wQijZAyYDf(2=S43>%ss^-{uDxqp%!~8L>RMoK0)-;&tD7m0$ zlz=!>N>ACx$6&gg6SbV)^%Znl1g;!<-!1y?rnS4H@)J5t_|{Qb=9GrT?XP>w-uea+ z(VX(|!gesH>@Kiz( zQ|jTi{4!^Z3>|&`r{`04JrQto+u^5pfq# zd0Y+Uj}?dYw|df1=DD?zE}GTO@$bh2jYvH%c9+QtK6}UKun9ZF{Ic94o2kak7E#@- z(i_b{8Yz*%`DGfny++=qM^4Wtqo|#jynfMpx0Td9*#;I9f1`yQx5%8`h=}Hf=Wnht zx60(Pxrl*lU_j;NlcTpDQ+k@?-nUfAEp6-Jc0I(Gv|M*1Z8K|BL@MH}WyI++H)JpM ztE38K;v2SKnfE>Wi}YnHG{r+8^*e~Vg}Nyi??yZi>{MbJ_7T}r)p4D648b5?3tLA0@WBFibM#Q z0W#g9GU(cc&rwX&4;ec?$ba%><2TcZJ1m;xQ9LV-_j}MWREv9M-KoF31h-!jxHZr% zkUQO;SFN`0H#G`9b+dZS|4onh^Lc_xM$XRzAvnRisqql#`GNyrS z-fC2ww`q;XH1edFz^szU7?9$@ajh-e;+~Mn>~gT1?`%Il-mNib(D%{(n`k@TTkDNr zpKg-{i7bI+-VbFB5OAhy;CP)h#Y~RO+Oy2c2y}4t!Kd2dZs8rA5lwv)el7)@=OEaZ<+^=#^^lz7l=jXvXp<**XWWsxdSq~e8s z&wY-*Gm4O?o9WInOL1rCQRboBnX=w(&zXhw?thz^^By@~Notr5eiJ!NA3kNHhskHn z5rjf#8%DD!-=#)LfpnA|BPweYikFs#PHjvJqz*)-rTLG;tWrbaVPUUHp|8rTR+d0Z zQ)Wz7j7}Z!noL$qiw+D6r71HE{O|b6-zq4%-Bu@r-((BY*SjfwNtsM-e1y$?1P-~4 zLvu5;B9k$|;X&1PhW;1dV|nHU3nh6Jp~!e*{gU8U=D>#HEpXstNlM^tg#vXOV>KWC zh_rfo3whkKYgbE}LKPZ^WoSa5wwmX#Lc_rMbo=md)L)jk#tZ5~j>8$R!#V=W zRs4}>h}$0Q{)uyIfy&4e7Mrq)KS8t5^J|&(Zj@U_&J83Qn-aB_UAh?*x3nZ720w6j zjhQ})f4w_46#xIkuT_!&(Bkxsa~ya~KSKg+@#u9*v)(dNd&MuiX=+LXYkGSE`>?>x z2alAVj?OhUkb}bVi4hHzx{y^_+)f;J88=bfpq&&C=d(q-sK%`;B9S-+%$(W>zK5-` z#TEWZEpOk_>C?rhb#kXzD%IT~`~j%2=trfD!S!-2J4b~{U9IE0=A-J?>Le4{fp6g+ zMc(x(lIWAloRbO>VvO??Y*DAKYllRI%J&oT}i)YPTQH#`%j1UW-wOb8+A8Zc`>mxS_ zJH(*Nq(Ph|kWq~hK?0yZVc0R`n@UBb&)+`%U9tRC49j#c&B!86)|BI?St+xKsb(GW z4<6bahcr;;`cRj+^kRglG?^25=h@s!GwsDt))fQ_6mT2v!4`C9M$E=Ud^fhi@QxVr z_U)3Kk#`KuGR!@(EQwWgLXm^txyYJtX2=W9K5@I`u?N5g-eBmFUtgySJ$E*YA zZ>Q6B$E-biSZ3d1caReuU6^N}DssHJYAQXAvcVrn|*^fw}*_Q!GGjym>R4ZaH? zqmne*-oj z&bc_7$ zsyLa{O5#K++hur~iCqZe4*+BBbKwO;G09$B$pWjcQ@S%~^YIkUrl#<1r49rFP6J~`AJ4}oy0?9 z_&nwpyIL`QgKMYW+2iiQOwJcy9)UJGj0sZfHttURycB&h5f9hnu~AX}qP_)`X#;=w zy?m;y5zPx`re1B&6sg%<^zv5MTAKb*{$|wpk^6a}U5wgW805gq|BS>O4>lN=yBu3_ zyK4t7#jICx4~mW4pZp=q%AA`U^c7Nw`+n~?y=7BeYt%00QX)G4Hfm?lmjlHz!JA&f z%PuETlc&em?Z)>})WYI#o@4Mx5c{z2+?`e_d{G~&5nTP-hjQ-Lt_!wy*VO+WPUvw= z>?g3P1fx+QqA6j9-v|4&Vwp;N3-4#Ja1PqAXi1#W5z>yKbz=C8OF{GbcBn4f1X)$@ zFE5`%71{=~1zh^=DHsNZDB76o1oZGDthML}UZ!hxe7f6jfUs-*vgeDe_+*`f!y!Jc zqy9ef$qMr9sO6d-6QxHw3SI32AO5hlchU8VlGHSpE)Nr)!9;8%rtwy*p*p+ zTKzre=iht0P`z!vGC#X~#St*ZbV; zkk*47f65f|IH_ts)kN!FTtj;-Vto09nbSF-IKHVn-waAHXwi@yxIN-+(dk{}0_f$N z&pCbpBr-bbn63Bqsah}QQUqW_YWo+m7C4@%Tckw%?lxar>A3A;ZVOl#vy;h~NLSu` zb;rlkgg^r5`2*hwv8l*V@X45tP~nD9?7%!?DU@w)w)*Ux4rQX~d6uhuCPNGes5Z+e&=+t--mG;-3+ib|x{h=?>Jd;w(TZUEBxnL^hvQAjw zBt_OqhodL0T{1t;*z6~28!(z2?Z4^+1UHP-3cFpTY z>%Xu?^D@b-4|DoVmhJszs;$JDE|=IOqofLTaInE*reY%Oi&%MkDI`Xb+vTt!vnC_uEq*``kh6RQik}xm;vIuc(Bg$wwI%7< z5vRYdeR)S@Mw7Nbn5rz6=NJD|2DLP)fK#kDL9i-ut9t)4=z=DF%#ZHEE(WUl5T^oV zR?-rsH0!&_SHvFKwIR04-l^^)P$xx$H88{L_#JV#8u;>CH?QyUGTA5D%dHMOZ;mOH z1FNkrZZA=m>$wvp2KfLH5`%_&rXuCW#hv$l$U#dp#=q>#@fpnP;SjXQSua(qa-F!#-FfgN(7 zF_{^^Q77=w2r{2O>{_itA6Ue0D==4HmjI1vD2 zC5A6fV%FXH)@Eo{n#>eE3aZki)7$nbcw9~kEu$l{U-;5(=HYpy&qhI~Ad9JL-IUfe z&VKu;cO=!N+cC{KnwcV5??204+Cs+!YLDVZ$Z9=JM@5=It`=td+;(lIb8aWDeHE_T z)@e{O%aJXrvNZmyWKO%dJ{KR90h*MrPQ`lnhs|A`A_8T$Hx)z*S-&oBz9i}>EbWc$ z!G_^w#qz1J5tQZ5RWy50MLV5-;T)L}WhW8m->5X;yDlEU5wx@I{EW4}57?C`{Vd9`)?UBlDU zIQ6<*#CZ|5>2PP1OqxJ-l(%Q2qeD#QXqLqSM-T=U z&M{q`1o{a0s5ag-O%cEBrv_(Tm56oaiiY^2Aj-fH?`J$8&tjkK5nQX=7K`oi%{jIc zO{YF{ASr26efjAhCEw%kfh9lN=5Osbvj28+E|xT7{W6awJ&Nm-p|WVu;_zt}z$ z;(2EVZTCYzkg;Prok=kb4fdpiL#L=j$Zp^x6r2$E&xB(d%|K5i*(+|G%U+_SRSQ%^ zdTt!|6zyaokkuU1RkT3*S4Y?5Id0QQcj{XtSr64FN}_}LEP7WHCN9JNbS6>P$-+{o z14lYu-hvtiQZ+Cx(4Gc$GB^~cv`5JHkj#nS*&b?_wlxwi;GIh zTEV>MfI9k)&Z5Ue#MALh0yxT|Dr=VXOIP%0RtvM+7**wJC(pCWEQQUkk~;sRv*qzo z43S7I+3oFb_?3v$_g;==r>vWeAn}sk2V0Ss6WAJQ^Wf@EOtPTP?vCys60YVxc5g=+ zJ^VUOH#Y}q9lEbLxBUCPyDFaVXOOW%Oy7yaqg#SLnf2oy)&_$|7nM3oqB^Yin@c~l z`i_=(m~S0dIl=w@z}I#*PY(u)68XG;H8-_#E$=%t!+J}SiP}mCie(w))5+1F5xSzEGJQF^>2&OhsyQtBb6W1Ys^wLy1u1PU$7ef3pGBJY?q;>j zQ>BSqWSykndNYFcI`-za?yx}io3mp?qFM0^Ta@RuP>GyO!;zEo4EmX^IpE~QtH)W+ zgm_NUBvVeKQIDN%n*Pk_U~-pUtki779`gHCIJD*- zJ&f;uNesRm)6vaobrR)#+3rguGVbklIPTTFHA#uiyxCPc9i&zbn(9S4hLjukq8q;q z2V=kbP@jWxmPlu|a*ZAhHQ^TtlYcN>dTr{K#y-qJ*Qi9*s-8t6Qm>~%OV7@Se$T~( zV=Ztq-U_q)$lP74fUVEU*qG2Y6hk(Ft&(I!St6YQ4)yQ*{|LAv73x-OsFLDolG zcK5LHBa7Tvu(<3BH{Dy-;ifHM5CO6@YOGo-G0>6-qDGNv7>7$An97F>L5oItreo6u zdUBZsfAc8g>xI{s$0(N0kSXhPJ3BgoTs;4d(k4v6OEmLQ2QKpRuUKxc48652)rtK)MMM+l~dUG>p6N-q` ziLAr~G0n_ShM;(`G$Z&tJj(RFg2G|c%_GP;WJG%XfuDa7JYRm= z$N}6;DRj<DrVwwIM_A@iSvVTYrO z$yf@Km^4v3EBI_3<96-Cfs(vV)5!6u*l9LCDHA|Qd&n{KSGfE#p-L*mR2=!15E8$|F?N#8u@N>+=B>u4E z*H$Z3p$TNRbr5UPOycs5&~^QsDpo|ew%IJx{V3-7WtQT7yBo*KM{|3ev?rdcxZ|yc z^J@1C*ugk_Khw*4Vh)tau=3vb8jJIH%-=?8>LFy}Z2&u)fX;Y89!fCsaBlIA?fqUp zy+8mEyC&`qPi&e#%*{T;!i21V$9^M2arNO-bCN}5`e!54-I3)I)=DjbCmoOtJVXKH z>z6h~u=uTD)^}_GEj!NjNW5acS7Q%-1daP`PIfD27+*Y!9dmscD?+qaA-%TN2Uc?Z zH<{?hVayo0QQGKiOln20&{4=RI@=5hp8KMd%1Kl$l@oku?)qOS{6_s_J?!7_hpU5D zDm~e8!M(x!2wGaU87Kl3%@X2HpBS?og-iTcuY7>qFhv~}cAXUz76Ft#7@v9bW^O&D z&HiWG^~!r@u1EW^NPVhbGNRt9ojt(xRBbZ{Zdo%e@F3}~#P_z6an>WZjopoyEFVG6 zv`kK`%>DO33-=M(NE5FhztYP2y01rwk~EN_u}ysh|_ZA6bZp>cGBbAFQ?U zrSI-5#wQ%zNS_G_I?WWXbIBT?LqjX>4;MM0j0ejjloamC{0^U??ZxT~@7|%`6?{WO zgW8eO3)N5vhtcf)MhFXtxv*Qr;Y81MAvw~EYzSEhi2jY=7+nibc2dJrI8uqHL5)G@ zT`3v_NlpihgadfkluoF#lC3@D)}78MuChP~fRNDIcp7_VK`HT|i=8`MU< zx7r`L>sT-mOcK9CFNyn>i!Cl=Zp560`fh5b+rN5C4*z&zg|6>Qx1wXB^v~hf#S7V; zne>&x6_-Vp_(9?8g(3>0b_jWD{~=zRHFf@eKEMbSkUnzoku@TWPf;OhGYFk_K*7<_ zhUq+=60@KI8NW;_nlN*@9S=gIh#ZK-SD3?>s>u>^*!`(s62EIELh!2JZE~$RYNxK` z_uns3E>feXLbdko@t*jz4qAN9UTh7=fa;&W%6EHoPJJ<)-Ov5qJk z5_&C{t55vi1uQ!;?R5{U4qrz@vLcB>LWzOWES%DyQR6w=Og%w6tB01B+64QRPi*|Z zZ5C?V+a+yaPs;B(3kC1cxlQBrq%=B3_alzRaS<|+ap)PPk+CQn(x`I-IlJ&AG)M0R z-^HAu*95J!2|O^qT(yHodZ2pRx3)%9sV*}9(Mq@2xx4be2Rk+jr3taZ*tf;8)@vIiDd+-_ z&#KToAQ(nyhOY|{@^`aX1ydf=fejZ8Gzd$e0wjuT=Dj}~Krm1HRggH=LunAb)Qmh1 z2Ce*Im;}x0-8=^(>K2q=0^J(^i`({?s_W}nQ-`2{)9E3l8RdvD5|F^ig<4br#ilt* z`*&KA=`86Tb(mGGpQ0BS{@QA+ci|s5G)D2C{}PEWSKR6Q7MVS}F3^x-lZ`_a)Aor% zhm0s-eHL(=AT+*Boys85PVXSR2|>J&+@N2k&}+M0hDIz3*pe^vObwC{DRv7MZy$t9 z{(bXUIx3HYNps57FE_(-4db6OxD5#nBczr9)z4b}pr0aV(O0eyL{7CKw@A-}gwS;aR)8eXj}Ra%I6L4GkH ztJksSQ3hrP$Og6quPYu+Pv(IwK-JlRy5JTXE8_nqx=MAyb;NmA#Nxx+A*DLIvQF$5 zWyA0__ERg*aI8_8GLlEj6Qi#$v^UQ0U06P}C>J&Yo-R5c8sKQ(c7AfPMMYGWVpc&6 z+h=Ube*s+M$ycTZNOk}{UBp@`MpB5#s;|c3gvzIH zB{b!OC9X}FjBB=N<$t(h5Rj^As7w>8N|D5^EVGPpadB~CVF5VD$H%}mb>sE?@1zy6 zZJS1s#ceo4KQITs`9S-%zXB|;f*e5rTd{3gvEAfM5CLP*9V4P4iOW&r0uw|z5Kj@E zr|SPsG2DOrFsHkwzV=G%&*xqLC+y*gwul%cl$J&OPiR%ffDXJ)F3VD3qBT>sQ2XKi zxv0GPQ2QdpsHJ5>c`F(dc+dH<8gzj&i}DLWj_}G?2s)hdA%NU&acr5W zgbLLp^vywUA*@PSmwkZbY_wUoBJJ-!3M}AqSHA*fsW27^@YQI&^}U)8;xzr!Oq{!O zs%e7WQ9Bu{S%QrU+2mrP#H0i+uwF8$fIeR7WT^wD6=ZBT6#pHSPMRI#*fxq-8f>O$ zkuac}=s2S5@xx<6TRt%!g$VMENj$zoy7Nmkv3cnvI`4biC<2L}W&5@fSz1={i-?O9 zqwN$Q+0?TpULE^*Y6X7tXGhoHBiZrniYn7R(391D`0rmWZv-`cI}g7AS-|dKGg20? zX?WhNWjO5fB}}7~5l(x>`u-GasS!c^Gqz7Q3BfbGpY3_ZE8bK*?8qI7n@9nd0TA=wo7cdq(g<)>#f3KC>^?jF#qdq@ zedwM7Y#ZdWM8@8`iu(1#{@Rs#$gIh%Nz2XvWy(Zl7s%+AN$Gw|8}s7_Xvv@5u+kcj zXn{=A2u8JFW-N)c-R_#KNIj;J<0=h}TCbb7*@sA|J1v@o>Zs8}PX9^aQhob|h$mcs z{(XGFo#Xy56S7wb{uwYVETXLJe_LCY{*PD|mKJtqS@XZRdJCvHeyHIaio1JpUtEjJ z;)}yBTC_lMhvLOu7pJ(hxVuY>lv3QCV#T#sU;2NZ?|aXAvq?6&XL4ue%*mWdZt}aS zO)`BI!-Kc*QQ~V#&{E(!2l(w+GE%B;7LFbT$}9@1Gnk``$BDQ=7tV=f^G83#17`Qz z=*XP}>ko_P=rfTD`p?(^-}!X=5G_{3oM`+ z_}sazJ?~=DosHY8Lox}Q4V8Q$$$)wJV|S;0FhZaA5R-qNKe2X*TZO8OGSn|ZMUog? zLZQm60Fn2-4Nr>WIjSaA&)pA;`$?meKFxD)zdwFZxLKhua(wUISpsU_Nkw#j_O8tO zaqobe_LpHBYe?GqhL-s2*LVfotDP=w@%*?2t6O@#ytqh4-TaVm!J@2{krcj+3}LiL zq|)q5nJ9`hG!1Af!G!rCLm@Swg|9Nnk-<45!RR#E_i`xljp^(Rk;0#(1&48r5Q@{; ziPwOtp?h=(~KK zH;*HS+!I9T^R}*c-g1h0ZY+4}KZ$OYRz071-YO_*8I9%UUQ~Inuxw58?zh&@QM$!B zB@CXWSE~)LcCpf*BUQmV(ewf9AD19Ii{>dw>o{@sC$7OvozvARKChSs>8p?oDCvfPhnTiZEd|xd z<@(r@OgqOsw|3Y=n^ln-TIKXOB<2`N3+0m_b;@|O(5O@hHwmhx$n44CnOHPJi8hev ziV;?7QR*SFMDiW>YGRYP(PbwQGFpv8??|~%wJ3J3xMC00oU9Q3DbA?zpsAIud>RH# zwP#FK9F@k$L(4?{XLGkHtzZRY*=Cv3k=xRi{8p9($};j3ytdSv9NW6E zj?g;zQ}D}iMmOu~9s(*+$kEQP zEwfC6c_3mpXwk_+3IA-P1glEy)s+PYqtDMRBXd>R3aU{WA&N>PuA;)JzxO?O%u>85 zP8&+9rNe9sX7@@C@2F-+2O72XyG3dzjpM%ckj0H>=0Vz8;^X`#7~)-gO6{ysoZx@7Uo{QbL8dM3y>CZkbnAapV8M z)&Lbr6?t#llcS5;vC3^sf=|$``%#f=D;M{53uB3&rdLk*z&>TSo32B1b9GJpuVbrZ za+^5*k$=CA*ADE4{r$V}H%1J(01Pf$l0E|Ddf{b$V4&E64Wf8C)%?#e24XH-$I^ss z6={HJZ41vdmdtSlE0}|USUN!XMpClY=EG1x+0B~oSC(D(Yx&yRld@Qa1_J35am$MY zL!VG$rm!k6>0VUk6bkBTYo4)hH+-a8xM~W5G}*$3UNlXBu{VWi8dAHs!tME6oDCs6 zANe^{5qIsCaCW)1*mC}0&AJVsX<~e@`u29>v1>dmln_{xv5$T=A;=Jum=GK(8fc09 zaXw`T2jy5_`pPKN_Vi*}T;yhpGLyt7OJT9%w*MC6rddqjkIQK;|B3yF?Km>u^>26b zC-oFh-uwyis!f))uCV(jb^j{2t(k--FYmjZome{#&4fSJ?)M!#q$a^p{#2Rk-C`Zn zR~wvb?Y@2@v+ua{&f{Iinf4ycT-|5pzf=6#PEec_wc*tNTDHtNC+TdWr2AlocBjA>p9{-=^$)pA1eq`#s@87CMEe9kItaeo zF2!)J4D6Z{VB|vlyr_xo@s1|DmuDXf)>?5v=&D8STu+ntaTknx`&2?Mnv>1+F9@M$ z2g4rfIMK8ZCwT_*-nMCrWw}jqXFOs)(IVJh<%evAhLRMRgk;SK-WzN)hKBiTMUr7C zYGCBw%bv8<6eiY7#^cLbkXC&dq@*8!^w%SP)e%kVR5q7Y zJ}XY3d>`P;Hmz9xW8aJWq8mF=4xE{xof7YhJM(iORhn@V>5=!2CKFBJw{>!Mx41|< z@6Jh)WB0k|=+axS<6gp#GdJ%lZUK4v0LVpt?0`Nj&l1#Y8tA8aasT!GdHjX~*dbiZ zZ@s#QTKs3rcy@P>$VKeEdqM*C2KL%*+|B4Q#dS#@6`MT9&Nkn;h`z-}>ATaoC4qMO zkw^RZv!Y`>5qUXCB2^0!(!`F7I9|WazNPGW#e$*Y*~2!hU)%V=QhSqgVJB7hYWN1= zbuHxVLtm6_N5ye9f1+}I?eJr=Npp`=PxE@`w?Xm8@aohOsjwJ0a*Efs{q}g6$_9<0D-J|h9qbSD`6Bafeu2nQUhyj{~0TFdE zF`BJDnioudENB?=28@IGiN~3pUQE15KirCZzS>TwxzgwvBbC+D{M-9BRyRPltv$#h zh3uyuK#zn$r7jA}>Rz!}F(KXVRmkRSsO8-6jEsV7E$rH>^Kr@Yer1XJ(~mi-Y|V5^ z`im?R?Q@=Y6@U2KohB50!@`Ij-pDw9xwwGPe)g>i#XVF*$88Hhz%DPN8@`HnXNnqGg=?#in9l+A;8$n0=&?XmzWgvEEc)T#7{IqbYO~FIQmW@{MjB7< zt>DC7ubl1jtScF;;hUcaPkVt+IsPm0;V1(

N5g=nu%u&l5o#DLBb0>%WxuIzBnM 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 B#N7Y@ literal 982845 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 %X0+h`n*ibLQ&m!eSuB|rWUmuu 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ඖ>TeBt=*<%zz5}3;M#tDA9A83|6w4 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�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%0Agb5_P!m2G=>p4)bd}Pk61n@r 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


AU$dy%|lDT4rt%>?JvP4n8*y&0QqT|d0IY8 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
O(ZNwEfZth^R0e+qbRd!7tzE+lbn(}dP`ub@c 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%0AoBO744?KkcC!6 zFGH#1)CV_bALf0}?%8jHDYL6^U`Hd8nB}Q8h5Hq@O~7Q)I^rzqP-j-3SW#~eKaJ@e zJ)funsHTVry^CCE2}!5T?3Q~ej%V{|2A0B~{GUp24Ty!sDzxPrzwjs5le(=4TI6la z{ee)NiK##HXN7vQZ3TD8poX4wF^6dzE3@ zBQ|-cUQW2r2cIPM&T)6rljVDTvg@w__|8kmtd|roun&n%aCA43>(B|MB=^->pOf2O zk(PG#G};gU6hh0+J?*7d8a71hPj2hJI~sLG5im(pCzp~-#t2Exv0MQSByuICD?S0@P+Y%GvOG&lf zl4M`mk!md`p^ZNors~~Y^b;+vJR9{TYWkm(<5{}TvpwM5_WdATLppOnbfXqEXiTp` zM%Vhv*XC4FI)kCz&GYbOzq(9(!&5t}S8`+L3oQqAAONScDS&<7W{$2~;IwZVV$%^^ z8@#ckyJ`GSCPA9Iafxyp{hKQtr{NCP#KtpafcZ0wjg*x0&6%sQ_Sm+c(BOP9ApwPO z=kVJ+%$|UsA>U2C;AKO+ud{=cjqHlThck;fGA4Cf%pCz+8LETU_qYfEvyJ~Cl;Vv8 zlRdXLH35<;8Sg5dlBH$!UDdh1mKw+P0~7s{y*ww|j`T}bWP!_4mypFLSyR`$6w6uE z7QyKA&x@e_{-BBWaoEP9Zh17xlCM?^`A`Gi6CF+@J$BKkx@glwK&v{*RmfyT|HHHY z)%>M`@Qp)XaXo~JaPD`EIIrim=8*O0Cnu*Z~zqNwE#{zbhK>Xsv!Vm^_M3nyN3&SgV}65dAc)G8T(=1l7`f z75NnDLXG}AmEEO&nlt3T25jAMMQH9i#%_>Q1N2q zQ~59JWM=j~;J1n@1?0QyWjy*Qp^Fm@R|&wGxbZ2bXs-i&oq+n2e+KW|C6w@Pm70$$ z`{uo0PcOf+-TOZ-yr17A^$ZL#hE_Lq8`S`XAGbytyH_ZTXHS(x$P|M`(BB7wY=a#K zc}aMDxQ`Rm?OciNlwAMC`v3?fXQ@;ABrr7{ANr@Ok;7E6T`|(v zExnNm0{I@6Mfk1sc=nPBM8+;MN{lEbUoz_BT*Z&t2hFXgjGY_%WQ0fX&!l&vMeMG{ zMCyi+#Ab!iXJMKt_a3K?r15L98s?W1VzV+qp_fZ9(fZ-ddl7wgfXBpj1{u^h#S}Zs zzCogjZebmnf7ZZGhnDgPzuK20n1J< z5F^YOY0QX-Q|2Jjq$n}uiM~@$8+ozgruoL{G2l-KGIQ3F!OpuBqqEw|Sr(6A>*SEG z7rcqaWek-X5@9%)Ruw9P7U@6qGZN5Wl9bYR(C&4rwR@@@u9OTF*}E3_)a|#=+4B4n z{HgIgc;{f}w!#GaNuYVMk{Vibo0mWrOLGQ0{_vvQyUu*9)A5lNNK?a`yd|r9X9N4P zvW<5SO(ZHTy+qO$EPYmH5sDEx@Q}@ReG|1;8^%EpqZqw4<(5WMu7Lk^j6ySB#e~8^TAx-HCY7H52sBhc7M)CnP@CA+qoPTzRH?J}J?Yqet;Tk@6$nYKcTXfr* zhx^qZyUZIa0@fE`h4=X5WfDf2X}#x@a~T8`XR*GiNBwbjbms<@w$4Zuf=#V!Fe3Lh zplAB&ylGx0TUA8R>1?wJZnOO^{2lQ_akF-5C)b?eYYvWl5oF9GU)N;oyeaxir6`*! zrRKAe{bS!O{vC%j*$CJ|c9QXHlo?b?f1OUiw5<*y@kO_ViMX-|`$WYdsV)N;rvoi; zS0i99Eanf&ERID_(y-Z7$$K0R=&P0)jIi24Rl~^Bcu>jesc%|a4Zqy}v9@9}llms> z@C5B+OhLROoGuni=QB1{=%v?Njr#0nxu8blGyys~nuT*tH1V~0y`0&h?$II-LV{Jh znkLcDr$fd-SNj+mNYcKW(Ex*)m!qHvwP_lgKadHNSAmsonuBJNCCL@mDreNdE6w2a z>HyCatzPOBY125DL!du+H#}1+r;ETuqUS)h+dy$xppe;YipY-lLiSVQkk>a7teH{l zL?28PeOs}aQ&2i_gbN?B%EJ4XhDTaZwiN1HJ`HyzEurGJ;K1wWESDnHAKk&L-afxZ z1#`QP=Auu|Bg7{*?#|;T5hgvf{{-^>XgS@U?~f%`qp<8W4?qEg3Om@3*|g4E6{|~4 zZ0~+$)_qs&37)jK3RI$c;o6m zc_yIzLjC}f`_u5jvlq%vp4JBDCog^~#`%KX=3{KB2N2V3o2H2Vdqs(T`Y~I9>}AO@ z>6~(uXQDYE|KQ#1TdgdyisA7c!*cTtO}%-EmAaNYoCObRRDa3q>g#pChzV=bm*8P# zM`;4=ObOx$hG(G6*}~c7#gjJu0W2>E*{M!7qLWQ-wD-J+y`@M8? zIHG^7S>UE2X!7vGiIlIPrX^56#Gw2co~3X+W3Q*#)Z!U9c{{&FK%}qIA;PT7@GYv@ z?YX@FE@6ZF4k}If6ZQVZ0*yJbeAoEk51jI0nzRAZ8Z5Xy($UAe-h5}!ef!>|@+O9g zf$ZS?RO_~tke8C~1C(~Sp;u2#KjE{D$G1nD8Qvl^IZsI*-h&o9)1 zzVNr2RDGLFW6I)Kn>}%-BXd{h(*<=tlEkdI@%3OUJ3nPjY}TaSF>Q+CytO~EE-SWw zSzeMY5I=XJ06wNE@?Exe-{nD?92CIdcc%ptNCrU6`aCBstAnh^Tt5!=WHaEoSL?Q8 z-gbX*nX{`n^YuJog@0cIZEAK;%`>u04V`qzM6GiC3WJuWN%qBNw5{s^SgEOKzm~(M zIzMiIT&lJa&LBPUQ<9{CEf*BTWz;>@g$^A4qw^ufqTsD~`2 zJV0#9uYQB*=d*;Rt>TcV^bQUkZE?=~JY5V);mn?6B>hk3NYbB$5i{-hU5r8hY_d@Q zlQZHVr1l5!@E;?Hkq;eMjHLZxx(&Z_b^*g&9)6Z7tn*8Y>oYxWaKAt|KAJZw(#m~t zIPxEt(Z+*xNCBJ75Xw~dj3C(DXbR_oyuSCu=2h2je&<<5OWwa;z{n<>o>fX_HL63%;}g-dgyzN z@Z{<8{b>oV>q?2@*)UGGwim#3v($`L`uCL*G zjE+a4D|Q&xlOJ>RmDQcyN8s1|GmklZCvuNF6&$XE*wHB@U}@A}N3O|e!tc_Q_kFZf zj_)%T$`pMuZ*93SQ4=73SLRBxq`M19bfgPt&3?6u3~@5+d*O~KWXO6XZ|T70Dhaei zez=~5&3Zs7K9UvTwat_R#jw18hFoyq{atr-=9%Vv-_n}TiP+d~u>skm}aq;w&ueUNd56MB0SE+fO{*zLMOxGFHp$Ihv-u7Y&#FV`t@Q?AHuGrBH z72D5m1;(C!fQ3>_YP`hhpMt~oJDM|R7GIMeA9NH)b5DZFZx8u-ip*UCZwGGjO!3QN)rU0B7tXvctx+(*q=eza*QnJ*X{qBK~AU zLgi?2whvw>FD(9v@}eCYB7mO;BTRGhmXG)yXeMMJp5DeT1!XbHMsmjpcm-e3i^a-Q z?f219V@<8r9j&i1=*coCeEIUEb);x7u%cvEkEEW0qZnVSSt>O{?;?nyayK4k{_iV~ z@YXVzt%GEMN9Wk_R|jTh^1j@`U(~ddK!bdpMaS(Y4dwFL+JHSR{cik?*w>~S|4;#v zLLvUk%U;P_*z{Xd-V8IR_@vrocivz2ShLz41PmzH4R;{T)^5v3_8qE$fcZzKyW(Op z_9Qfumt?sL>#C~6ae5Y|1)jF(a7`%Klc3UpVOKf zey)HeWV|>qolBvpSKG0{e*K115qN9-yR7{W;J0`ToWAh72F|0G&t5S(<08v0o_;0s zDyDjmJWI;14-{nEFVaHqCQAR}|6BRpJgg~)9RCY#&h$Qn*yoqj3VOHkY*YC*T{C%z z?Ih?&-;L`v(!d5!>rR4Ar5J`@l(;eVS+k!Dx7?0&nrMpmh&k`T`yM;NH+DMG1&B?5 z%u(2In&{+_k1uF0!@_~bUtdnL`<=uv?0K&?8g}aH=5fQrc#~_AOSf43Ggn%$ratDl zD_!$=Q8{8OcojY#~IS>FcyZP#khW~4}4wC8UkJG_LV z#*sZqDF)rHqaty;5BaozU{#*DKcBk|XkbMl;+_N-m-a~*yYU~fmk6w_>>9$7lOy?t zPnzYBqD!Acb@d}qUnc@bY01Ceu2eMfYt;A&;=ZO1{`(-kG$%hr(*^KWdXW~vz8TJl z3;GDf!nbiBX`x192v~D{@U&XJ&o(|Xsfl{B*Q*X&n4N6gf^UpjOY~+9=fytA^<%8X zdRb5dE)8NPSimT5Dh4q`C1HnVJkiDoTj4_|J5mvms)Q5yDrfCx9|3;1pIL@8v-M3c zG}3jOFI@30+;9~ca$cqzjBx#;iWtv^m(=83kx1oZbKjIQBkCZe-G+o$NC;!j%h(K5 zav`$4fOHCSHwx6?x8&h#-9zO9lm#y64i3cPogt1+={@fU#r($D*Dz|Z;9^_Ux|h@e zb=c+teY9Jj)_xhr{M0MxU4Qa@=lmI9WQ3l;I4M&19-}vKch&8bfdZM2ki@6C38^N~ zuVYL^O(9e(8&rQ6P@+Fu z@wMG>S+NtsJ|N=-(%t0Ndxah2ZMv6Y^-utKR%I5>h@}f6)8Y+@Me`qU{xE`*vQQw| z91PfvlVR!r_|!fB8mamA*jFR=o}W{emPMDS9ul-hx!9=8_0KYiMc5< zx54-r%~dT$WJx(yW{IbvrDie5nz8wfNFIQfS<(3c-nF?pD!P*xF+W4YA?eUu^pFo* zUbihQRy^hW*Ls*Uhp+S{xDEB3(%s^Oin2irrbrGLW~X3&sLT#U%$5V^9xd~Fb+(Lj zP^SnoT4LiU+8Nf{`yZ&R_T7-Lk{R^m3Kn0pYM@2Y`_9?THT-&M+{t;(Yll@w89%b! z8cEI8lZm7lBfU85s;Pg&>^k{%s>%c?-gv0X~B2VGkNE*?$6gFGFHqc(uLFRvxtSzW(%)cnCNm}Lh1-?vNVE|*Mf^dvzV=hc6WIj`!m%3p)IG7)+4>oFwFApFNtv}A>0L&1G3OWHn`BdaZNCT~|gnSCuPOZ?fJkW%0^nP=hPgnXgWMI{Pe7&t}6)1_%%d z`I)|t+%peAJ!)gcL)Kb0bm4C z@4rC;Nfxum8qH_i03Fg5Pw0 zSrq*0ByjN)9+P=7_2U}WdVGs|({eW(URv@GaMRid00^PtivU{vE{0)4t$EE;%{Mj; zqbO}zIAFgR2Xy{pjL{0uc`!i1`)Ji?atXKj20SxU=ZJS=3rp-fy=fgUJBBSf`egVx z0+|~ajBY$Zl(YF8%K}#|zSh}?Yroo#+^=F-Vfe(V|UZ`K-;jwI|+Z#yH|i;G#_nWwZi9S zTaV{6YFa9F_3_!M4n0$rs?^*9NN|X7)JFe}Ln$eLXIi1+5sW4;R8L8$O?C7PR&q zG5={@v_GJ`^eGu`=Kt(I4dY*4*3yiwV<=B@)VG+Xu$@0xTt0EB@ID3|nt~j9XTRwQ zHs5$0q))<6z-<7e1^D1b5({Tj?)>;NZ;&9Y)fom80SL|k^kJ^LW$vM)J_EBYo~_5+ zj>yLvGt~#_@Iw{Nv^iLkLg*jQcOJ`2T|}>8b%L#KWw0e5A3hX8@b(S`+VoLf7h4ZFeMY?UQu5dU7nnQWF8i5?I-Y ztD1d^CMyV*0$b7koiJPYj3SkaD{q}2l9_5M6HUu4@Vo8}RuCwaC*d@iUOq)oUVe&` zIwf1RQ;>1fY7&{uI^ngf7*@m>*S~x)fC!PbP7V(1d?|W*dLsE$<4^QIP`j-2f6%AC zdM52ofq#8W^I7D3A9LJ_kN0oW)?$D7eb6<7YI!~1DPKq!T(mg*<$?}UdVMg4%E zc@|1u`P*`lu(JQdX*m!Ns z^%Sa|O6ovPZU%@{ZNIqmwM0h<2X(?Os_l_H0pSmHTht*d%mS9mgd#kUhJ_)03h7=p^u$ft0~RK8&3E$+W4W*u93Jr2VDKZa3(3&i{XW8(i`lZ{If zDNV)T zW4ZYd%5m?W70Aw{HxmR&d{LWCcZ(l%ST0#2yDm{S#4=Lyu|!t{aZTD{Q;d*AG3(TM z2WpU=A1!+E0a?c_>Qd)ODl5&Q!?61cEl*7cRVS$ z9QC%^!7Bo6g_EHs=`2J@r%q0em27KT?Wx1o$1|yEOK-PxbS6m;njGqJ50lNEyw)n2 zS6AiKxmFAe#F2rC6~A9$Gx@}eIA}Dz^K>$Al3WQe(rfsKCpUJrdGTSj zWLLv83OmpktnlMft?vyGOlCu+juile#SaQNr79lMrQytpktmotVX1n z*lUw3=`~Bjtt^=oa?LznT~NjCxv*$&Aw#b@T)Q!$koJ~CCea+>U&Vy1P+UAfggU}O zgRGifLW9LjUR=VPXr5Ed(TVhbQ1;eQaRp7h;2mag8#EAXAh-v2hJg?uxCamJ?m7@G z1cC$&P9R9I1QH~;yGw!ucL?tG=KJ2hv-|e!`(u0hRJEOZdb;oF?pwd=D*6aA(d7m{ zB!Kq|3v!EtDb{9`4)=f~6H2htUGc`))5$B358>Ap89jB8zL=~_Pmu#<>}8!o(^-RT zy}UfE8yVo}j>y!kapV9jreXtS>EfYN?7}e&YdxKIrGgm1nM^05f6LmD$CL^I4JEw& z5j?!VSrQt-nE27`Qi%Z-5DXFu zKuMIb27pi4Kh0vRvERVL!;(Op^!nuLkRmHwR!u{^ZZzI`LF8 zUM#XN97}<2TMb>bJbX+w{EJ&LpWvni{7P1;uk#sONsSDAm>iL!;d+gP$|JF%2^jDn`RW+;QBTq9pIUNktA;vjdUExtv4?46 zKqIwstgylaF%rx1t#C^Ec=`AuDXg&=Wbutd{oPu?&X@!e+w<-9Zzl-=`{m=d6L9HM zb!T8%y$Gy~?~02&C)-+yhI2L<9pQZeEK^wJIz+x~O3rtS%kLi#@drrg@Gs>LhPAxS~kjCrBM#YmXmDbnuK+|{AX^UBh_FHP~ zkIbJ?B|&%~>Mqy>funt%J!WR2gJx)AXeb3mX!;f2Teg)RcJzv#FoE&q?ih)Z^Uq7~ zsj=6RYLW{#0AZ>F;BFIUx^O)#4v5_ix zU>I?GDnEv+4G}<)ZV66Ju)@P*M}xPqC-5PYWWq3T?O3rvW>|0yB4_kc@+CHmt4<-v z7%>Ua8(o4Uvczt7T_W39l(~MeZukti*D@6?I&gW4GLMlQ^eLQ~ACyR}&kF%zDPb!p zgtB7EB@gJzF;YMx$km|?ec=l+ID>E`fUN`#8-yn?(ZeCpudv~-5U95p24lolfaCQe z722R}q<}-1Ofm-;r&gg9);ART8KF+hEm{+PryawV;|uM8u$OhfSlvs$k9#9ISb<`C z;EN{NYbeq>6d}iqg&=8D!q+Zj#X@MQzL6tJhfGB?LJBE(l8`UG^b<%)MlmRFJg@Nn zVd#9Y%S8ieJOwP#vWKu<`I(W*rcnT-FbZ-|Sv4OAt4$9?5kVXVLc%O95i(e45Js=> z;Y>JfWXy6*HDScOC?BMeHddk zJ(6BW0h)sVnDc;Wh!tN#iQ)?!cIEVNB=RG4w|9bCVhOZM4z{_OiZ7uqI|}&F|1owC0$yih3xqE16PwwKf{cwF)bo z_Z`|uL0?oN)~j??dI8RA7zG9fhSrNghLaiyGZ<~SuZod@hJvrl3JkWZjYc`m!A48K z!xt?D`=#==|7k0Kd$Cu%Me*kI;y~3P<+2~U7gn_T+Zs_)jOl=E>Jfu! zNcqyV-X#y{==@QfnH(FK+RO+Q_GU~Ih+r&Fo}-M%Fe(;gjK+}>io`*9?Y+rhC;!~1 z#Dw=-jLKHvmr}g7QGx7h4hI3ep_xVpTv1_qzA)y^VhD>hClZ#wjn-^R4QsHaG+Wv% zlsnJI#+YWvSpdDjQbkatqgA;i;u}qc6>gtS5Wd$)jnep#zHa3P!m1E!FApc7vBCbs|$6o3zWbKdbywPI{VoOH%bQQ9lhSDD#CrC+D~|4Kx#_xNHNagI9v|OT>{pK-{dcJ;`Fni3;`mQk~a!I8nLvZL?)0b~) z^O&U_gV{m4cW1-jLpefIsi~s85FZPQ1r2A7s@Zn6j;DS8Ad$00DJIp_KtyDP6=6%M znJ&o&QG0sKQ`_p_G^;T+?Da^R^RgR0aB(Zj`BRj@VXbh3>83#uzxglHprfqvQJ)~k z<-?$2z=sg07|amv7lb2k8b!=^x8^x$>iOkLn`3@Hu2K%w-ass zIr+4ZYRlARb9E`l$j6@t)`yaEQ_HJAs67kWuMQ+q%w0E5^j^J~$CkimuxHySyHLNVTu8}wT-b2SDk}NOPI4or~i;AK8HSUHPN+xo^9hSg02JgRWq7O zQ@^XC^I2B!2yQ9vsyS`<(iT?lKX=`bAAL2QXfk7s`B?=nb+^!o|HN5!4(C2;(B@n9 z_@LD9yyNnW4-+<8_uEV%6e{~wxEhQt)ST{rTV*CQ$aPV9`9pws zOa7r_#_LF3N_lHVWm@s#v{2jQdevOf7IQM<;oE#9o!y&fl9(7UP`+!z=i`B~?)Pu; zkic!!!9#bR46hizk02JN?;0Z}GBRPPt0s)26GGBw2ChH+SMJNxXhwHp)xA~m1Y0h; z<*YKl!QU4{-WgxM(p|IJlKXRxh8E@5QXRg@9Al5|2g^(X>HrPo^56Qh&G{Een?jG= zc%ABH@oM-NVQ?4MLn zmzpkwG+}eJFecj;FmT@g(ph?(Oi_Mve-<(os02oX=J^2PW(&lbYhbR2s0sJ-LSv6_ zpmA8=a6%^@FK;KItMZFPgce$Pu4m!v6`bB*D=oPhnbysJFGp+in&{ZCXN>-tev=FF zQ8L&3ssP4GNO?!(KperyQ>tXF&2$_h%at5a>HN~?R&x*?E~Fmb`1%G+JV;|)M3(dZ*>tA~9EUMg(2tm{F3A^jS`(U&9 zdx>|NNb5W>NmqVyRO`zt<8qp%K_Qan7k@P=4o~9e)*kTj=E(c2>Zmwzl|eHIrp)2B z=GL!QgTueJb$2`y4U4ic;LLeX16hBG#UgD=Pq3Q3BIS5*uK}?TmZkPV2zfHKax`tR zMP_ndsAD+!3Sdf4m-%*g0C5aBI1@8?XkQcgoCz12kO@?p@^?M5XcYEbjN1#v=eM3* z)V-Uy3G!(mt#3VqR5xs|-p*SE7Aqc2#ve%8ixB);y>P1QVjfJG7;`-R`-Heke8vi6 z-1%e6+xG=o$-=?^3g$#wm6n7S&NZo13@egNPcyM&U*|o?yy9hPbnR~2$-B#MKiPG+ zDloFpBcpuzU`qjju)%Dr{rmXV)ES#EPC|{Z*P^V9@sbpUEWts=Tr7&S(=?CwP7TsI zEost;X&KkIs!_44UX7eRsWgI#y`U*%=uMgnNR1bueb z2iVJwc^8|SxWAeJfWh(H2ib<7C9aj1PExtzS@+i!z5uAJ?W9?#G2nP+>~Ihr27p?6 zy>pmN9FA8FncM{Z#d|tkmXs!zM@@GdB~+K*h0G5Di_R5`F5-+bW5XDe?;fW2d}tzk z-bwCk+DY$T%*Wg`gh;Q^zSQ-r-V8*-BDI?Hz%jycJ39mskJ6o z1e~US&iqYb}!{-`kN$_j6+M}g{PvOYlvQRIj!bNTm>WscZrjU)LV$L~MWe|YHyVkyp{Veq4 zwmp7$epq63C=0e=z8FE@`U-vI=N(VqgJr(AErUS69y8a8zze@~HW#_W>!$0^jYI$s zZyRq`^Xae|F{tZhy058}8`Z);#(WSj1b99^_7~p#2^;w=KBNBqxxWEx+NUU=)KT_` z6!I;au3aDB#T=WYRhxQgwG6esbw1&&y0vEc4hR?v0mTEM@vdMY&igXn&z-v=9xO0#Rm zOHR>lwp@E0Y;NlXq-?bD*u z$y?rx<~D6eXZU+Yx7<41Z$Ew6H-Ba}7)Y0$h-N6baS}$ijD`JgUHWjs^L5{JCueJr zdy%qbRstok5BR{(lQPQFRiw3Zi%E_iSfI}zxTI5#uQP7!+MwW$YbLPA>dmKk99JD^ z&h~XboHdI0e8cHMxhO5W!B=YG=&FTlflMjNIqYWkPpt_zk)tbG3;C0yWn*U0%~f^_ z$9|5+S%WI`8i&NwcoVqf!H?XQ?#pJud3J_2tm&Y5Z8(UeoO0DJJEY?cKyFej5=1AP7&8cr`d&B@5 z8LY>coT%&a*VPvj@oYK^G5$2Q%({Q|8Ku>Ms%h_JBThF%Z^};aTcSFuL-;`i%q}c! ztAX{0d+)w{l8u`46K!dg?%&^{>pc5yDBkdX`LEwHsq8y0(yba|5X4<&zne_6IP-T5!d`J>@n zmoHCANdP8ZB=D8$-LLT|Cds6=H!45+Bd)xg#yJ{))o{IEUr6Z(;8?(5lFY*Mqm4r? z-#pu!Tl?6aKzV6}CK~n9td7J+NaPCYb3=eP58DLk#+dgpwaGCk!TV?rh3-X=i2%qHeD;_Wb-3!Obo^~g5g9iUnF9qtGiz5vwU^J^0YHK-=!H@>j0H34 zx=Jv#;pp3}{lY*W0E(XL!j6tcdE@&5WvPL(6hWCF@N}$D36W6taU56ef@t6z7OFZH zEw@`hBHR zLy6c;3X!mjzVK-0SQ%(mEP`mg29BO%W{LYlff)UxnF1BV5SBncJ#HI3fzPo30|TDG zd^!eGq^FHBvqTb~CIQN!30|cMyo~s_6OhnEY^aMSJuH;r1`-a&@zvGBCYCZlE2Yf zgP3^5GEf!{XmMrHKbVRU;!}c0+a5Guv?M|Vb_L(i9+YGI{Wcj>;ENPYc^{r_ghBf3$jo+;g=57ySN7vTv-#w3G(e|(Kv)r$U&&abOY z^-df<6F6aGJ1sq5VKHbV@W?o9xMn%IcerM(`J~Zc-O=2Xq{O9rRAD5^`P8nd!A;G+ zX|~qWS45wwfzz<9qp2py;Nma7k(VQG%*I{qT%F2$J)TMq{;z`?9UToO-D{&RXx+M7 zO-1@S#~V4X_YguXRgOH?tyRuhxF`z)gThx7`b-CX<8Qsc{@5E0G1wc9Z1BFh#gFig zDXpN;&BXZeYcP$cG{+HZNz1!2U~qo#4u|vgFYAL0*V)=}Y7P&>q>F%aK>@vvFN!5^ zhyAO2(9eJAmLqC^vIh8EIvLehkd@X*+BB&#el+~4h{sXgk<|X8zsh-82gl|s+Wo$n z-VY(tvq6>H)T$MU+26!zm*@K`T)ky{ugk3DW;pt-mCiJeGhQM5cH*K6zYIIDHw#%9 zl$Dh=eV;nhux|X~Uyf+1GVhugh_wO>BQxQCfF8h)^e?=BMww9y&J>juB}+ zBVvKHHx^;>8~J<%T7MPFvj!DDa#=@oJqu9?jn;hVf*|TH=%azwL@YVB5UdDP5fOk& zA?T^Dx)>2D8qpM?JUh@X+z@kUH1UHR9=z@>nt`nK8wgtQ05g|xnDGRFA93Yakt5$g zwhEy?o&yFQFaoYuvQYH&Xv7o|Zg&@3cWL)GG&%ZiIZpV``cMYa)xJ;$$d7MeXgq5o zAV+@$f<6aa`j8BuSv(mi*AE6_da8m%;CNN;nJYPrKq8tP=KKcLWRaLYnh+z6a7}C1 zD**tNy`zUlXfpt1r8?$7**8Gt8=zwjDGNtTo0Fo-qUFCrpW{p;V9}^bRByGT&7ti1 z&@K)ycpvdAl55RMh<36tYQto9+XkYnKpxo7zZ z1{hteIXOKcC02B}H-j8FhJiF%RtH)L|5Sn+f@ykaB48f|(?_CG;c)wC)W4sW0}~;b zaFU;+sV8FnCl!Wv7&g~nk+6LEHtP{z~* zVhlw)V!$#rF#)E?DGswF`$BIHs({EqK?czZNSrY_2>eF@y*W{Z91+2*-(AlE+D^)+j^D8tF%}xO|X%k(X@J8)u zGW-mzXSnv2Y5WlXsRnwAFmq6(U5B+|J2=YS_x|{8<6Mj$M$Ge8N>3JU#B%i9Y zeLr2#Ur{&45rKJ|?hqKOpJUFqxqKceY)-56&T=xnJv^5ptn*D67`~r*FYV(jE4=5O zGOc5fdU}21jQQGr#V`5Czz@vajUc|IL660a=6(6gMjf4sohu=Z53-8=R`nu>{sE-4 zD2v{QY(O5yx%8p`?#;V!x_*}v!XG^WjFrj+HeFg>rc@|5efGf`U9Y#93sqarLYa^A z&;*~eIhhX0IrdkCGv!NarCzsL5gH$s2$L)9H!5s5$I1UQdnCt*F2u6Uf zi|r5Fp&+Ih>fBKE%Ps$MmtQrT91^p8@Tq018~5^Q682|JohQR5q2EKZBNPj=2 z5Ddf94(jGin^i0Ok80yhv%k-Dvpj!CmExGJ;B=H#&HEilQhta8am~LY;!eQ4Y!seI z*f*mi+)I!!?27i9{0^33mt*B3c)?{31JHJi2sV@GxFmyQlX8s7u>cyo#G=rgtr;dL zYYVwh2hZz&8m|cdTyW;5x|7(~F}!`CqGk3I%CF(v0L?V0!W!qlU`{fM)W9%Ai>RCF z$8`X;Lq*Nz$Fo=H(fe z&V<|e`;j*!sqcki>P{4WP3`5z1oGL34!C54(z`U>*eg|@dS*)QA7J`gC|W*E(!xq) z-5vAWK-ilTod>4WA4&b=@9gvm2xdPBn>V@}{fxg5e0Fc@k-8E1y?#4~mqL$*o2${#{6!w#2aTCDD%%u~dMf2ZpoVK$c{omS3H)GZmm)i2 zWpO+N%wW-=VocP*nM^jNAo$oNSR$$X0DpowYsQndYCwEejXDJl>&Hc?_Oa=ytcQkk z+hrQ|8{&%dG6t!o$<|eGkBAUj%}NOcafG{e*iU2J7t; z_N2i_cwr~sb(^aOyZJer?cePQGMUMZiKnuz$6cDr10Vrzp(84GelM6iBkuAJ1CsOO zO!PB85?KeKqy80uM&nXAKC@Zl>uKiZJ`K%z3V^ytmelM-C;Yslspm%iQ?$1r*=lW2 zZY10qcU|MzC&m!rA896+U;A;5uaD>yDU|vsss+Yau`whg6fJ+;YYhb4;WQJUav@5saZ3_1hO=R2tX^^w@kzdq?g z>hU#tDqS+wJ>cYBx!azj&Hhr)9g$L+GsI91v z)s(p3P|lkB!?DC1qnff0b>ZdcZ27%^w|SifGxE5Ie*7|NY}Wyy@sKpt<#UbkLECevO-Q@>1sNiBe_OW&?2Vcv93fR|Okll_mX)9p1AV95^!puUS~ zb+?c3D_T|EV@|p?I+%##G*ndW#7qFW;a{5P=adZ-yBRj3PBEhUdl}k$$`6{Gktu!a ziwsQ1=q;U@mT6PQNTBqxy(kU-bitb?fq%-V+T{Y!xb{l@G-dPu3o>tOou zQnkce^m_zOTT*i^*+~(w*An>muIZhgw*^u)JJR|z|8h@iueklujM@4IQza>H!LqRG ztraprAEO#yOPZBhXtxR9XJEo>=FhT|_iJ6K1M;{v!j_Ij7$%6cI}2vgraA+w=qJ#< ze5Q?AlZqcAtAtl2W=l6$PB`k(GTnatJ%yCDz39G7I;%RE>jy7CyV;pK!3gM%J#R1> zU!NMi6D)vVI5OSd@q$9AEM1zWHG-9@_4t)8X4a;C-T{n?*&c2=t|N1^@iw*y^JhBY zi?Gj_PZo9B3ot)s?reZNR@}UC;0|;41(MphrJI&|7PGtTZKPhxa&zcHWmWpn+L4ks z(j(t(NfLg$r~4y|wM^P)(Z%bvCw)>M*l$fRE0IBl#%36&feE1Y8yzI=+uZTHQ!}ai zffn$v6+;&ITNN-ZKJc4hA{}&H?QNhQ(1%e7mbCv9bkg<|N*4^Ly6lz%^I{Yor~#Lc z=h_&hmp1D_z?~C~Hs+U7AOem7*upJA#mJceRWdl{6E)D8*bZO|I3)v;wSWL1{toa= zh6&uT<m=grNE!2X-+`NXdV=!^z;}#WCdXBIGpSQD^$W7NcrV16Z{;6PS%D5yygvp`3gwfMZLM zck1A+HiEfAa9rIh(3biMjNzLa=F@I7OapFfbrm&WPf4ksU!73nZU*qo6M}g#nPHA1 zeH_8dRt9}S;}jU3vH_`WALz@06VoL@J!`B{yfHk5KJZJP&yy3#F%{rE>)a93A#Lk{ zV67_$G&tMldXlVN1+0U#J9OIu2BvSdeA2<(O<jT z<>w+$4KND)shjylLD+3)12|h`Je0$w$LICiT%H6(NEMlZ&X+Ot2#?x-w>jO>6tNQ0 zh-)W%%q+^upAf;uGl>wMtU59)j%@} z;73b#q-6KJiwJo0yuOT=dRns_T)11-CN!_N#7bF@Y4sR#$gxs3gLI{g$4SS;O-=wc zEud75H*3KQ7ba)hgirWW4js*;&MdF(@@VnPtZ{aE*qL^^VZ>|rEAYgCI|yfjlaEb6Cx1%f-=gFQY&0g0B`LyDdWTN zTv!0RQgqHKvyY;Ud7;7kCqFcTsJ&WB2**#>nXtXa@7fH;OxRW`s z8d6)nnj~YSO8@xton!r&)8tT{q=QLJK@yM`oKGo zdJLA|eOuEY$zgS{!JZQL_p!=3|2aQ6LXx*%JGsk4AQn%oGCjy| zaQVDB!rN8G>ZG9*0ZY3#m3BQLE{*tCiXSHy+ssW6XZ|dMc2~W4N|B z20FdsV=Wz<7gZ`Q9aq7Wyk;-k7Hg`Y8$MlbC2(G{xzN#Z2*Sr9ll~}B_H~23Y||R% zI=ty-K29IvggnAEoNkx_L>!TDp7EsZSn+s&6nifccu6WGbVM3txGpEgK=va?y4sOF z@UJDeoD4u%Q&hrjZ*J;tzG3$*%_q$jpfiIku5{j+@2o^jdYBssKfm|{0Q_eryViYI z$vA4oji{{zDAoEpOP~NJ!O(su@=tv&?HwH4|5ZT>5BAUTZv%Vg-oJM3`yqWfIU;-< z8BkL=Ge&J&+tM%^9C!CEmQ@}Gg3>l4)C&NT#`z#MYydc945mPSg@>ftf~O0@@$edw zL(xn`!c(1q@TEM2nVw8&Xn+Egk-8qs`a&lCWpX$(-bZ>o$}?;WHbBR{kN@H(gb!INvrVVWr@;Wu?Y@+qza4k?M0JBnt=cgY7`UZ?m3M{LkdNCoM zTzbEsAg(^9Okk~jwUb?W?YbKL?Y-r#e$MKfHwFlRVQy!zSKExu_h;_W_(#Ga+*X$% zd0M-_wXOh7Q@!8;v-LLT>O;@1Gh)eLgJnOMF0)|cqO7dK#6|y}Y%yXc0HhVeec=L5 zll^%*@?PunTCq*Qtu?WqwEiyV7uPe9UQ)^sO^4JhePl*Pnsem2l|rf~&57*C2{J}O zcEFalbp7==68pIK@r>n2fu)AsX2IAITbhOHFaFiMGQT-FSB<*tZ{s=R#$_J53qG6W zlpD?s34*pv%zvXaE_H}GUk&R$?pz0V=%CXX+KtBJ;@7)h&uZxh$h8$~T?JK}$Zy`+ zwCsQSDiK>k->}HMO3@Ei(8(>5BE>FYT&;VMy=kdc%6V*b;*Hkn8&H1D9--*gBS+S{ zCLx-PF)V1UiId&H(j{7??U4)eyK~O*Ngedj{6s&|8SPmm@!7YNbwWH+Ny#B;)!Fbv zcCDkIv+*ehi>OlYNOvj%3vt}V^yMkBNZjDU=%0?hdJBmgs)fcZ{% z5r&+quVZpTrqg@Mhizdgzm0H>hbRaX9=bR(lNCXXM)mC|n6^tDfbfQ42*5w-hYEhf zaYH`ZTbh$*YaT;cQlP~E9hnLQo*5m%J77jI7EO|@wG&OEFGs&bgcSfmP@ut7(b7aB zBwhV@ec>pL0Z;?mWFnS518E1?Rr3_e5+g_7lZfSr6)tKU%Ik*aWeLwRpoRtjv|pw! z)T#QOs3fg;H6?4f*Gv&HF-rR}SKqyWDqyPk-ICqH9T~-$^7*PEFohYM*JJdM;4aQAtp7=17)Fv9MDwSvM>% z^8vZtbVg>UTSPTJaRL^qp7zLBt(R*jD$*2+V}t%r3Z|PvT%0LVGU$kziQvWZu4tx2 z->s!yNC_}kq^?BuCKk&)AE|PkPm;yUY<#|YM(TZ>`G+B3%mRT>H{IY>x;_%VZ94E6;9L+M5_YwLUlIpV|w}vEw`C4*vMK$4|pm zYUaJdoAh&2qwoXm`kg$_L03$LLs9H!`}=6L_g{;REgx4{z2#JLOD+F$ZAHp5T&!&V zbZp=(r|uBXJ@oU9^+qDG`r~=7mS!->zAns2xe&z@FNFltwU@#*Z>}r-h){SSEGz;B zr&KZn&~oBf0`IaI8q9wCl@_K6?@)fCnQn+Cq9K~JUoAU}RTEH&xxuG=<+U-@kO!E; z+5nEam-ib(!!@10>}UYt$ZtDW0n@Qh&q;m_#gJa%3LRSJp$n7m#c?mK^CEJ8hcA!< z=tI3<#W+Sh*Dd#r(`r3h;szzXV#j?;!UwpsX4);KIHxa1iBqBjx%@LsiUJ;EYu{N> z*7kf))EeMPA^)HZ!vaW3Xc<+YYaD3j7Xu5{LiN+K(lmD#9A3jbp93q*N?T(Ok6Zr! zY06=@dE>cF1o+!hW1NybUGNpDrY4>9x;u+j3J;{H3?%jm6U}|m5xv0}jHwp=x#nNZ zDS|%_jtf$yi@|%-|Kc|QL|s3y-->?7ndo1Z>AxTesdR}SCN@zaXidV8itU0hMu zg*ete1iNJ3SV;vJC(_;e1g;6*R4V=XnN7EKRChsB+l~^-k89TnX|WV*$W7)HcZ%)C z1>Hxxjjg7X{-c?s!LfSw@XpTh#p%ahe(|DxxVj}KlbyL)om#8>?Ni65ph?$ft4%*o z6g~A_3%pYEhSIRi@9$Q+CcVc79x`P^oRlRvm2t7_#e(Ts2>J?tEv;95PN_MqRB8Xt z_x}#OP+|~F0s6lvXYBtKAdpa)0`dPMa0Oz30w4g`Y!rnfU-)>^8UNY*$`5T2pM?Y3 zkpRfn=Z1+AxvkGgc1OfdTCFx_L;1Cs-06AluM$&o(OA)Y<`Bg|sVbTZCx=EG2c-vR zm7vF$^>g{cWdAtB{t&1Q{xka?XTTS?N}_DmDZBDF-cotx{o01I0yS+9yFfnMq+xo$ zMlg5$GLj@hG3e2Fj|A`j3U|B4uZfA9YWKUrQQadI?)9Dcn@_+U_tes;o7cW|cgV10 zEhSRqT|8SCi^OLRfnX(tIq#Ao+Xu-jbWL(MgXHD!-f8(nVV!PCyRm2Vt^i1GJR+Ea zHIQNw-#DI^j!6CuQH%*&V1Ds&Z2fU96SZk>lGqlNNVX+rp89YVQ_0+QeZB|^!Co?I zdZ>(Pf6CW*{QNGPnx zqg;ibV_{hFg$jj~K7nqL&&k(-CayXz@0)W8hmZq^mE|=d{**FN9#PF<%id^W;l4x8 z;pP2G&C;P$#9jHHieS3Iq*3zj8ty)WzA#b&xWIsPDd6|5T4UtMo3M}3l z$ztPgNd`tMxSPcPQ9> zeJKyHJ|7&O{SmD;73~Irreyvaf(yf zfE^%K&hzTwg^%@ccqhwwoS$sD!?P#C@&(IBi)l@k++>6|%-t+WTs(AnA$OsM2g-^s z8!Iz%ic!kGexoGCY)?K=$%Vl`q@PZrpSOKU|E@AY?VKL)&-^BtlUwc_af)Z7pJArSERr$Mj1l+X56ggDY$h2m2 zb!m&23=4*P>~5?|F>XwK#IYuAg{ca=qSzUK^3My%gk3=uKaW@^{}^Ic>RcC|1R1_t z%*FI;EoJRw-r(6ibKiq@&~-&7#|~Q6`edjMmzLV4bDf>n(~)ftC1)3$2PBM`L0xyk~x6Q32 zgui=n!)(v{!!!4w+#f_0qIieC2p^MXT+UBSZ_!Z2qs|y-4kn$drJs}Bg*cm?Yz4&5 zVidDq3q*d)8Iikv?LCF{aUxZb#NVIr2zUVXPS zVrT2bvU``9#PXf)jTjrhNV-N|o#q0xSU`{*Ut|>X&+jjM+u6Tlx6=S=BZiu{w*>O_ zzfp?C!z&zF&#aV=14Sx0^wPSFTBx=E`S>j0tZMk>IC1ef^o|Ee2lF%yUr6cUe(H7< z&b_Rv-}WZzBqB%!Xzp-keu)CX6o4!jAS41J>H7KS+x!PT{NA}O0cl~M==G@j-ByCn zQI{cF;ym}`-d2f8_o=%@?2pEY>YU7W(n%PfsXPm;V@{pW45aabwEPpF#2O{EEi%|B zTTr>CJK@{8pHR7Ej1IfnDvibwJ&#S6tl_pBn583K*jl4`a~l_6UpOKCM%Kv6H^*j> zB1<<;K6cANCuU}MspP;@cc~!v{rve-yw17b&z;gC`IxGzo|Wgu!(&t;(p1aRlh6JW zV10c9-Me0MrR?nN9#kW4Nx-FgwD>Xu9TNjaE#phla2XWHyhDNH2SG7UipwFg6ZBAZ zP$jWK0<|l#EKDjUNr3=gQ4@SzUV;re=uuDvt#&0bVk9I%6KJ^<88N2WAqh10#4;$8 z@F?7}>e~^X-fy)AdcT z!b^i^_Zr=@THZUCCW3vwUzhluHw67n=&{~D4M$=(E#Oo>Dsfa zSlw;Y?&IA0aZB}|E8_SclJ(viQUNU}9Ij)R35_dP_`BcQ-WInb;jx}{<%;RC#;0%0 zX`(BO_zH>@R#l{OD8_)EBj5^;_BnMGB^Rn8xUkHJ`Su&_7JW6FM&V?N*N zY2*+ijLN(VczC0ux3D8XaXVa`Iq|P)@A7#H1hUC46+4^u$CykfI9Gv8>4-hY$LIU+ z#S`DbQ7)h5^^p16^HaI9uaOW)-EF2*RpNC)>B_O#oppTsgvzViO7H9?D3s*qHwK2& zFlOBB2A_<@Y{Tl(2MNL?(r8V3g$R@i$N$Zc|6A^VulqmdAQ_z-GTL`HxJNMNL6&PR zTN&-C9VwTSO$J>G8KQEuB=ahxFVRq9Pbi7agh8@)-z*${NQ!h|ObADgaV8Lh*Vq`5 zTO05s@KGrvvVXc1Ccd780T14RDT40hQ7?9LIjWHxnt~iO9amsYRrrONxZDLR$LK6!5&26!2b?CQvIU zFd}>Z6(V~?6+v5;p^TWHlOPEcL#43im6~u@K2$H9|5LEc1{42->cD(IE(66#wH(0% z0|UxB7A0IAb%McoiNN{KNoKH7T@J-SiLEdsiu0|QMW7g9$yozOF-jZQf3wQ;AGzE9 zbLasjZiXRIobSo9EsBA;iLw6sG-Fa|9x9I)F;Rh6Chmd%>iuf29JM zvdI*gTJHM^U%|z#0L4B}gVx^sPqlZFi*H}egrRv!_VN2nNM3{Ap}T zEjk@Nf}GY45B)!UB-8G2CyR4#d^Kyh5Qb(Oyr|BezF778pM_LbnmCiefm*3&FqDBS zMXq8_M*IFI-v49lrts3}X~^aNQ)%3$7Bn>dR^{zD0v9qVvVo}>2+?biX{(~cCAa4y z^4#AfKYA^B5}wp)aJ_oi20*C867(nxc**kM*i_Yd5Gbc3l=>*X34uJg@KAQmJv5FA zcTdw{Jo2A=dOq3fz292iH>T?=2;vQUW}+d1-`qu};&L$Qdeijs0tI^R?(nzjW;mD|OiRi%EFL3MD3$b3|h@A9VOT;@9{mE%@n^$65M=$429- z*{WqUG|vVa>BQOdjQCO_@?^Qi-yA7iDTgiSC?}(y3sIj(ysw*=VN4VAgO@E!xhr?C z8=3^Yd-rvv{|OzY*K6Dd5c0i6H~zSqy&e+sHu0*V;>*p_tCadoy0t-ct+FXc8IaVg zB8#ZkUBRZ@wBDjEvwya2g51_o2$CI0LF2GqIqZ-|3AdyhdAKLNB{O(Ql3hvjLOGpK zo`556X!<^QO{ODjG|)Tv`}^m;VWm~mkNa_TqNi@6It#8%*X<^7ria*9iD4(MJtc>VLR1wdzYZqpPmy z(8g^>w8@FT_dHKjPKS}?7+0=H07u=veIvfWiWR-*#Pa5y?rb6a} z=2z}I(d8h9!zh%#^LEGKh%qq$!Ve$6H#GaC`;!bcMBS1co9y;)PQ<n*)2UssabEt|~tBoiMuR-k_k8FiM# z4s@p7(?9ggmeTEXD>l15G>q`1zT9}Uvy(|b9|=d-R2tweE}w_piF6swScHna=gDeQ zc)x}`_zH{;H|iEwS#x87(6x957di|2b93KkNHa6UB7VoJdLG*k%|AVb_j*cYw;{C+Q#>vLEZQI(|PByk}CmS0Z+t}E) zZQJ&n-|yj%_gCXHNH2SKqpIKi@kH4IrU%d~)D}tgvHk6TC`R3T0S_ANz~{ zZCQs2lvs$Mz?B~mggPrxfPr;Wb<2dZ=xB0nYddnA%EHdkDu_uzq`7&;Cs^bfI=1EE zrrIreNTB(Wpj(`GJQi8QCd7+l_1Zwx_RPhH;@J3J=vgUmZqw^q<%R#*U9&RS@Cz#j zh+jo^963pc1L$W@4BGsvTZ+hv*8(Gb^MKPN3@YSGQ4~pSkEX%#vq(3;rCna>E*MzU z_I(vtH;9FKl2r-J(dF#^J<&soEb1F0M{rz21E!z>6#z;XB!Bc*1>X6Oo4<8WrkAE8 zasTGg_=n%nAcfWGa*`6X2VEnCtExAYhJ;5TV{5a54d|#dbI&9~)JY4yq(wjjp*&5% zOAgAC()r`(c;kIqG`Wz?log!%1s9};h(kk)8CMUI^I$vaZJHf8S3qG{|(Gv zMZFX$Dim5CZU=E7_XXMUAm^E7*5D)a!tGp;na4149m!-4q2Jdb4gEArzu#4+Uycgt zEwxra+?;?tojID0r61*h%LUNyeuKqp^jO(%KSzhh$e!3Yp|2-NaCoC}$fS%EM|P}I zdEv*~YS~; zG+4+)r_hug0Dz9UfqX&7Rg)XCb(z(Taq|*klFAb}%Y z#@x60`4?5AEJma8jC;Sk3E914e}xt4)8r_jO%JKx%A$}>#p;O7bNIaXCZ`Jo9N3E> z>9fA|4nGPHL$fO`eOQD??Bfu|6IH(iMSilNQv&7G1>5AVK0a2)0xv* zvcXo+4mP}o;_!WTV%po@hPcysMxr_g0F6d)06jtMEYiic1oF&Pw=rMTm+!M!;>i0F z=M*fR0{rr~f*VcjupwfYb%LrscwbLC|ZmfGrmd|uPeN&l@* zAu(jm>T5g&-&vGMVg(^-z6TWjfe;5AX!s5dN`XX2CV-(2l0wOl!Vq$30!`dM7E&OQ zZ3$qwzykz*|MTPe9~-!aijXNtNr*R{5YZaS8&OdWs^td+vI*mA8^3bY<9+H`c2rxt zW!`o9ozhyBvAGbAED_(>Bd*to&F42qY`rG8^^(kJLYx20r!z`v?RL!m*d4%fiEERc zR82i-%9sy9RjdHsD9yVk+thX|`qU~5{@G$vf`)6J(ZTNb!>}QT0oOEI;IpJ0V#3D1Tp7;b z`>{eAvv}@mA19rZ*=eJ5wF3iEby3_h<()K+;cwjEE|bsev=1#S4hl%B_xuZ=8yt8t zlih;x%~3iXx*)}q=Yw{NeSs!fcdaUoS4w|zS{I@+oArk7X#^pMA%@t1FhR%Zt@!h2 z74w<|oi*(yK5OxGCp-G^25C9b5|5&xj_LGRrjBfl1TifBvYI4>(_S&!?=4m|`D*XC zSU>BIlKF*ym1pxeo?##M#HvHchqb9}#t1QUaA5n%S1N^t2ysCm8P2@~!X+D;E(pow z(jvB5BBjnjsdf;iR0cu;+ou$^zQ#mV%UUgyIa>bcK6uAWM|l-i!MWZUQSFiFQ;J>D z@g@HAQcWf)_#b#n7v?S+euw2zqx&Bh=oKwl^m%wqft=gRVIU^^#;90bs>aaDZHK+l zO4l9KaH5UfoWmJ~M@A6h2i{I31I+2o?abr_skWd->{$vcV9Qn}OTJU-F001#!UHdcStoVcQ{YX&O$gmZ}NM{=U0=eP(4&k8x z28dS6#0Nl*f(7vmx{ySvklK*KHA47+R0bhpBXC%XP)-OP;09zSjD?BtZNeo39HIr0 z0gr$In9u*P9opf-ganX;k|E5!NTh-Ub--0l1u~L5fbCFK*Ue)|i~PvG+&j8RRp0oe z)8JiBPk*g_cEKjI%j|C)-G#v(P5vZc+gVzXs-SPU{-^JxTb$Fu*TtH{P1To6t zP+d;Wl<7$en(b?{Ff`m$u<5{?)~iQ$yq$}!nm$7cgKHerVV5cH=B@9}TnB{#8Wp90 z(C{RB-bd^54|BBrZ{BDx-+zH4KL&ADT!$}_^hiqjNxh-Le5Z8-yjWif3U8q35wiX zADe8=pAhomg_tk2vYh=gY9*>b=lZ>aYKb^?bC@MCdW$%~S-5l)?JjI1&eR4S01lRM z{JTIVW$H(DXr7fGcE4^mu{E`>Gn7vfjh3m+)!a%_qE6dW3LT3;!S+PAZQAMUU9%7d zb8(gyEYL8!U)dQe~}VpVD&azvy51`PlSsJOxi6k`DjvM~NXn|;y5g24L! zXtDs$VYLS%{O<p+zoE$jmQ9r9_#2M7nk1Zi57l>? za!?SPEh`^s$Wr4k8DtD_H!E)R*0Cp(t!(?ZcabWigN^7ODeq{--wp5%>MFyEs8gW( z)fivt#5Zu3kD_gGHkjZW?8qB&BH(t$MaN8cP^<<9zT`N(Uh6;fk3W5`BzkV#)n*&m zaRkQ;QRaUD2u+Zqe~Jqt!w?aofTBd$HGLgeZe9!`Y<-`;_v|mL4S=XahkS$*+Lrqn zB0&(RLlVL>A%$@>!OV$L^*~9+gCUh55P}lXA_I_N?%)KOV2qWBWWa^N1>L~~nE-m> zAx5YMqJ*MQ;-rGy#DtOooB>GSf*E-?kPeXg-(c*SH0MM2U=8}(iFJZlm=l!OPk6~O|{Z29{ zqhrtfQZ^~jd(HP$?sV(M+VuwuV%W1+9f_=kEIkje+m?Yl0|RVs0Maf1R1g{Ro_!pL zUZv}@s-2~mO@u%QJ{ni;&s+qDjULm;OwIO0&|{uY-{a1azvAinLS9@*kT2cYzlmF# zyRaismx_Ae+%r!i^j{4h>e51=4GCj%OE@a_&kDuRACpZtd<$+O|z7`g_ytj;LNcn`;jAV`a=$1BbAUz)NP zhL&788~*K;>dVl8q~A(QIKB4*V)7I93xLqHKTJ~X6)9sf*$Yc(_Tc{2;c`%w&Qxz~ zuxQO3s6`et7x?8*KN2bt zaN^`N=bhw6Ch2e4ctLI z2$u};Q6hp4VIL44fNc~e!rcIV?*Xy5u1Y~<==)h@J^U9VlpbW*?=*jgC?pKQaQzWt z3`k_ylVIVmXhAGTA~;D=247%*4YEE!DT-MSY=X=a!r(%Wq=I$uv&0bLj@H6VVE6F= zWRTNB!2zo0|8(uQq{0I*u|PZv!vuH$TQyvXkavy{)1SAP2)ZZ2#RxDV3iAqNyokYH zR{R+X1v8rj`iS6qk;swdXTzbo|HGx71CcI*j{#D_E{p%X7%l_{Xu^Tls(=Z^|J;GU z0XBgQM9s>8Rj?|;@t|7aA>rbS!27WFA8xIQ30f4!GTgWuB(KeJ1L3L5K0^oaVdx2RiYl<6t5 zAVAquJY&mB&Yq6Nya+;5k`xYJ&u?tpz|95GJU>+T7Sulg5TE$q>g~wt z<=Md+dQ&pQrGKb_#2e}y#r}@w>o^SnUZtO6Ne&EoHCdyRo=SK2XS!*`FAs<4c|T2jNA5jiZpYu?eX%hw7=sSaIv%Zqu`*egUnm%1Xfo*K3M&@+jwiM` z){D}LXG3mDhbq1z>J%tg%3q~&b=?0Ppa%j3F)@Koxj+C|DA48%gc2E?#loJ}5r({J zf}B~E3#(Q|jcrTH{*e{0t;bTqy;i9DVeFO6tt4!K^c|s7)jTPxP;t@s?Jk|InGjn- zXBi|U`R<9HaV+3-UPG4VXl!!}i6k+(=iaQf-}#*C%%lI5+a=r?ytpKPGhk_2ZuTa! zNw7lKbnCrPpMs`!!K3r1)`YKD!~;N(k9_iB=jE_*%$&2s^*0G|G#rdnl<1*Qa4(R^ z=0F(TJ%B$r90vp`OcEJ313F}j3Dh(V2-FpXqZ4@;gi8kd<%WwBaiJ4I2e8TtBL6To z0uNU{0IpC&qlNLjfaqd&G>`=JjsP|Wjqng+Bp~t!?N3t(G(Gk}iHRmab^veR)tRTm zrjDJ*A%~iuY(*Bh%<5drx(Vq4#P-RAOF|DI0Q$Ls?#ng58uv2=cJT)Qs3ZVTT5O2Q zv#Lr6D~`WB@_3}BVfgXt?^uz*Ff7yYA)4)?Gr25~0`NyC4(h2yVE-n|~F%#^B!lz*}uogfB3NV2D|154j zrQrTRlK^N4{ND>W&UYxw=2m<8`pd%&KqQokDQ-?U{5`@*ihda5@P6SnS0Wf7=Y!9~ zrF&e6#KI9nAJPKnBd&%6e`bd3T0N5EUkn+Lwy-@RIx}YCLNwRTG0t;K^fhkAHn1tS zIKVUgeL4R9kAccQ^3nEB7SwoCcyN%91e?P?Apq~UZOi~7X%+_bY#}kF)iytGOj4c2 z4=Sg2eXozY0n&dl=I{C0Ke^}c*b#8GksJA zLUsJ!Wt>XR9PW*rs_?kgF3e945iOn08`N(3{o;Dwq1(#U;WZ9?Y}A&}ayFV`1BaRm z>(7yn+>ccTi%*OkjJkU~@}wxZqa;5ttXSUBBJ}WsQR*gMVm*gkzM1 zLkGYyBL8?N6om~2J|Bqj&;dRJ;Ybs3f?*MfHK$D6ypZFY$Itj7;#uVt%3#ND?&$dH z`a^~{_^JB7Rrgu=@|%bIZwmb+e5!N$G<1oF^Czd}>@=ZHpIz=--9+t6d8)4$4>xu_ z0&*NN4BaPCJ*lN{Mn^?=A2{6#-JUZ<{8BW#|7!k(7d%s12F!bw4J0|d5E1`f3k5^U zkdVl4%qAJg_Qz6xaqo?fPeNf9SPVk6xi4#dPqFH+e&LUGNfkJqrog*ZnA2iOdvoje zH+8x9!9!uz2wtYO5MjSwIwBA5Cpd)K7qQ9K4RiQ4F@3;N`eeLEt<-h~nn~I5iTY(~M+b ztOw{19pAOADPvRr>1)=mWxm|pAz(th5b~A55dV8Lq4VIFQI$Fi7YE81hWV7QpxaZf zqLZHn&Cy39=oAy!VFtw7`;?Y`Q*p5^39bcgRZhfeq0efo|ez@ z--5s?$o{cgk#@e$745G*rxpAob8rx=ax@ch?Atrx-g%v|{;$kwB7yL?%izUQllD+? z8m}>Oh?_Dc0OVaOaJM*H~0Mp*DpH6bK4FnZF~nD5i^Xf z%Is@LFDrLfY@AEEX7rE9^w z3aS@gbo%8Yl=5MX49|XY>X(V0&tYm1?c*#0eDV5jzYjXP@^Z@`+&z44sTzB&_Atgv z=DN@WcieA6a=iVZZb;EEHPnQKv6|cgGS(Tv+=cXr(>JB?qCWX)&iJ=*LKxRLP5?BB z)UdpLZC_W{MA#61{@u~vxBR9%Ep)ewd({&G3l7-Wa=%`DIriN<^Tol!(S~Xv?jJB( zb11_q*gpH}_>DdfGJXx`5; zX!i;NQ4+hDeI3;Dx7AgOVFe}_9y2)Y(0YMSD-H^=Fze%}j8^wX`h&J6=3nPuLzp9a zeiqstNLh&(@EWWUC=g#3&RGfCDgKQeoDY51TS(eBVddS-ifkS81%9#-PkwmUa2Ij> zVS+N&oIi_PNfv-^NPB-210m3zV10Je zDDOnP?0eKEsHB!7HmXwxF#Gd$&kJY}a0~<)bw=w-tD^y~0$bGYQ3^X&-Ih?ji~7|z zEDP?+Q}1eLvJfF(H{M6a5Yq|mf5qWET*X99upPA~)^Gi%bbF-lsZ+lGpI_pI{V`fa z4nA!;T%%?_|}?8=dteuUywU{lZet-Yi43xweeX(HX#E_uCv;2!9Zb2Al>Q#on%VCK0=e_V(wc=`IJyg9uH`JHO#le5;P?Fs>E^<(l-6#NT=7{bJGQ-{E_ zg+^8!sp^@FJL%8%(rBN=^c|cqdi()GNfoAFsbN#Pxuj2Kf#ibSa#UCvk}vfF2!Kp% z%`$ru0i`d|2cPLEn@xsX;NbwM$9KQa;+;*uDGv=WiS*0hK(T(MIPK@l&zrP-D=AxW zGH*{^veAA>?jdG#?iC=A7`cp+eo}qM6K8J{$Qh@1-qs^{?7men%~;e$It_qGo7NEE zx$^2tUGT9%-1aZZta$BW_y7o{@JaQQRhniU<>1_GUP#0dP+^9Cy17Jt9 z!fG;Ww5?n598c9xD~~zGyfxHdSzVpHF)(8r3j|=&h1o#cK6d}|gW^}(FwOkaroAYk zkf`~ls?hF`ozBJs5z9naii${6$%A-$QKRaG=>D(1$$Xhg?B@C51TNfL+;K5;Ni=Qa z?E?;}F+l=*Bc9(3Kz^#%)Ro0L%w^YSweIw=lBblUbVPG{nvzN1;leVaZXV5D5&r8~ z2>?P@U*PVzRSGXiV4|s?J-+tsL0>Pe+jQRe?}Ua2`})yi_tzc=?;@i>Eg>Q9tpeR7 zR-LLpA;j?$f&pKY5nOOB03vS(!$7v@6(8<=_aB+qBM~!8^#+qd z^VI6sYk>-`c_?Rql2jaD{9%s$4!7vWC`r4V{q#ET{@L%W6viLd$QS={w}aswxgqgu zRsYN@JTL)!F`kV7GeGr=%vv5C^gyd@4B}o+}}HQDPlX0wRV{&cP^NN9*T>aw7oFBEyRcf3^76L z8Q7JU=W|rILehc9XLm>Lj3D6(bg5ESrdeo?ajX|;L#ggEi};Sz(G=Bbl`&=D^atUD zP#vUvRo-)pW!;{*LKkErWug|EdIsDmFac{=CnmB}@z%hUJ&y6hSnuTMP~3a-k_R+p;)N8nB0iJH~yxrp{) zsp^W#6^l0qkeSw8to|St=krEZBpgp^i7|qJiY}g+cD<}FZI9D~iWZ6Pg;(>}>M3pZ zxYJqFpP#=g7!7u4NTZnk5^($|&t8JXF2%VfqC#5z3FV3?t$+?)dX{ggU8g>|7s;lZ zj%?q#(4Rjg-uN@ENl%>D$;d6mG_1k#CYQwRJ=hxka(B?e6At_@Emx(A5m00b0Qy6n z1Shn_u>bN=QH7lj`<`kKx$4W#VQs zAhw-%zoQXR6WB-N;iKgwKxtnK&6NBii{Rk|J0Eeh1$=~VB5{i;^H2M!Lp$6}y-ndB zQE{gAr}N}^MXhV~!DT09J>={2o7eAud*X4rlAffsDGm46q!$rA06|})$*~T8kS5_l zWv7jR4bS$Mt{(#;m%N#Kf$;R3Qt7)`h*p1nE>B$fB7CTK zc*Wx-LJz73Kh|S`Ab*%VlIF>Y8KNcsycl6K6-)%zB8dHLgC`d9l-` zg~}STg;2n`G>S(na_d@TEfvx_75oI*vWs_pRx zut3=hi~>6r zK?~)0jJqnA;qoyYn^yUQVECTU^FatgjN^6{%As6&f6;V0$rRxORNz4zy|o5K@jpVE z_6MNEr-0Fqe)>B30z>R_aeg5>2ehr&mN|Y`59hW|tQsU&-yR9{0Aw;ynzQ-(q)fHY zh5!KIxC4B>y!Tu^fyJ;d8R!ex9!uH&;Ni9X4FC`uF(AATOu7Nh*y~hMgui)ot;Mrv ze5eNi0BOlwk$(YFAfN~^3oa>~oo@L8>dO76x*u%D{;8f8V|eX=kSZ+vAr~CcUk*GF z04SPJUPKYv%3Y!i?^o?&&!OWXa6YE(C>m?`e6bPv2MJ|(S>(d3t-GbBDJkZLJY86} zfmkuP=CIT{L$Ri9S4|$ntUoElH>pr%k!vQEA0<(JBP*8~($}rx{vEla6TLZ-N2Zeh zBSa>x-|w{f?tqWMtN^hU&73dGKaec056tJz5`ViQfGwOg?_~$UDE#=iv&!A zMU@VPB`lNosUuB0K?uYu2mwX!VeWh}tIshyo+f`zghmGUOb&FLYv7%AIJePee?l?b zDPb}5xeY};s>fXusUSVmq)l_&KQw6<_~jk2+_$#-xXqq8yDIQ^S#-4XO}iCOE+N4! z$i8-@Fe#U$3~|*nSqQjj4utgYKNK0J8~G*3f?`)(NGJIcU>*iJGx{S5aYg_02M{#- z5CS6={ejrpH$OUXO3#56enj{RtoZU(vd1+C;;*4_d4(@Hc!;X*v_NjX;iVs2V#wM0 zxu+k=^Rjd9vOW4cX5dEqDZ6G4OL{$Exx>4eK}7^4{4c@b^qwCazwzMFfV*y2i^S@X z^XF0O=bKfARV>BD3wLoGzHiI$aD`)z=^>`Ce(=G1bUA&|>e?}9G$t83q8I3-YPN1- z?p9b9VaX)l0}fo99?h{9YCXdafHM0<{o{Ak3)7_cUjftkSu)8A31}(t889n+P?wWJ zdYM6xngxO~ZqtWKXEw=XLI8b8Mff|(*VbowZvC<-m#d|v+q7u}g~DffDcEPB`Jz7n z^l>-uf=15|Ch$-s!T&hd%j0d1UWR#W6T*zr$jNXF@n_R?GtGsb?%^6lWg_ zgF9LTyKq$C0YkD5^`D~8U}!)bDt5Zp&0iZD`*|g7l}C_DPH))pr}?D6vR81s|XE`K`y>otf4Uuy{)-o*pzOaE zoK%ad_g8!;w~8|_g|oVUN7PQ=Q=qXzo?FLFx$LU^W!-IdhqasL?|2m5LyL9WXlM6t z&?_yS(~TshuWf!>&lj_AIA?ZQ62WaFs1Bc19*HNQ09gi?Eorp;cK;GJlBJ)v@z6#Y zDcdD;ZP-2Hs21nj>va;s7fqXrzj&ZIJ?*c>WC~sIF`Hq3p++UTz62Nt3}1Jd*nM&9HqBFl8Ahr_JmJORS>q*r-E{ zX5)S-p$r)I5-Ey3*-C%Tee|Vu5X>6q(SSJZ-?S|7L<5eS<{zPo`+X)(e)qty6yGIM8XncX^OlklfM|nk zejlx1GFrTelWF-*M|9$$ame2jNMZxkmTc{Oj-I*TzCxrJ*WKck-YhV7P5Tx>(ck~{ zu1Rip>G+nCq1P8{aGGN$9nIv5#`wneGZsL5N3g>A5w^X1g-@dqs80a9(~s9Zu3xn1 zytz@ag=$TqpZwA+>s)5N`a+Akg9i0Beu?9Ee)#(^Y-<3dfRIx^;j$~pXqIisuqQ(K z!!QEFtsoc45)+^UC-+ikYTI#+3BUsbSz)i38LL;+Kjb*sG`@RkVUn5oZp__!?{(Tn zyYP_|nclqP+N`e`hIt_;Hk=LFkiU5eKoAiX^V)~5u%hr|?#a^1bbc(go;Uk4=V&@v~80Qm=^tXZ!E?UGkcyhG)h@AC)ram%|sLX(<3 zJ<31dGst&v!x6T5 z#td&Vs-I>)p?!WFPX9p<3{)|e;46WJ*50RfBUH`Edd`bpsh|8ALbsNx27r)01x7ei z>f$#I?i#lu!5Gbqy1Xbv0SF%6Qh zaUg;}o_uLS>SWzZR|eWdMee4ZudvgUNdB}^hfu!%do0F~sv;0|rtVY}7IDe>CK`39 zjc}V?GF4lFGS{rTQf-MKtmrZ7Hf)KOn9~2*1AD273I_f@H@Z0FV#Jm1QsiAiVs0PN z5q=yC->y5uA83Gp0|T#*{jp(J&_-#uv=E2q6i0cC1wr5^7;2q4oUk&&>n1U*i&9y{ zJVrWu%^mExjfT@KwY0OF490b3*BW)dd!M2rdVPo_NTroNQlfce4SlSQ!j6QsgoIMD zeY`mJ z^qV1tuN`{EoNaHwk6tD~`E3FoIid-ql4_ngPqimgp*(I^>alriV+BS$X7g;?C}Lhd zC%5yw*gnesiXxgNW`9UReUQf`2%pi z^Ta2gy;x|y>{(N>yRLbyMSpR0942o6S>+eJ39a+1NT=_EuF!xubGfN>G}ge^r8qKH zv3;bR92bbXuaT=PXr+*@$nEYWP`asfS$nsfOLq8LcP{aB!6VdsvZcRlib!FdD^;*i4M1!~p&Us8cO^Y^N3>aJtPjd=O(pUxPIO~*P zBKTuxaT3Ooq-JglJqZ9%%mh*v*&`Llgo%^t5G$vikcpB2BZ^phmX5s`=AR$C_3!3O zZ|d9`gdb%Q8EUsyZS=bE=e0{8w!NYbkM$NlD9dxA>V!lyu3bL+5>G-U&L1P7nz`broQ$%RzwY7+G$rW zi^o*Btn{cHUg%ZPQeU=tz1uAJmfI=)N+xx-hsDTT#?i zn^X1&ao$pJ6=TgQGbOk2v?{PG4-Q&FG5|2F44m>ERso7Y^#DSFxBwxDc#07~Vk0B` z8j@yMHp4OZnX1g72~RRfrMO699UR2&)R@KSx;Nhizht^mn?ZYVea818v$6^-AGgl$ zHX6|}CR;k$QuF+w=EnX~i8Y6+R1|p#Ts7+qQ~y91o|}m0&@RfvBwHgK9oQi zLp6z(%=L9tg}i{Ycn|9K#Oc=|*JfBe{pV!0b&c-t;9*xTd8@Cy-h00lLh`*V zNl;_}oR1^WiNM2W6fZ^_ai|BLzAey1UgvKAjFuR@$HDMsnxy_j{93fn@N3}LN}F0{ z%rahEny}EEv7l_i0snl&Hp#ksNL9t0p62u6XT+WzM%&+ilkJpUbn!84R~QKPk-SEEk~TN)@I# z;llo0N>QA>*eB!w^B=fpmxzr1{krWQ18+PuMZ@bVl5VSC$h*eAdD4m}2vcr+zU#x$ z82w_`p|H8V%X-_8+S+WByWc}lkAz&arShpqHMYxZ$#|zI z3(t$FhiNPSv>C4+(@CS*x^6(f{sI>p`p6D6ji)$Zox>{#U$yDo6%IF$Ob!ZDu@H;c zk;a>NT>ntIF1z5k>E-QV-l6LM$P-^`8RvIPgKaDafavCF$8SqGd5evV2?D@V01!sN ziNV0MQ)`fjD?&?rrkBmr z@=}K%wLkj7WP1SW`7~afvbGnL6cm1C0`;|a*FPQBTeo!mJK6u9@n3RdXcQ zlPrmSN0ybNd5J3!Gb!@ZVA$J~zqPXA*qet&!L`*eg(F3v(@f4FsW>dcdXGnI|7bbd zw>P0t-5!W!{e0s4r7+9iIwm9!DXI0+>jcW4?su?xh4F_N@Z@TG8Ua=V`pm^*nS0p$ zDqzjnM>8M?h=g**Lic}Ij15~S0{ooB$!6r-3mq2X=l-yLhWF2x&kXk+eBo}si|VG3-pq=VE$x2Os^a4CpKr4~8w8XlvzY z@HEy6=q8MTh4KS*BHtpe`9dx%$@zQ3HLcrPFeQOfeNSdD)qU(Xy+NhH@9-&tr2uAa zEh*5J2pU6fhc09_HCVa7{Q?Lm4WVC+7;5J0P9YQs!?*3v(YU<$2g~9-c5SB7-8BNN+*sUaHisam6&rEfpyoFw4 zWT^}v!c#X2x9Y>DT=9xoOkZoSlhR8;7%t>v=|s_}!Udbp zYQ(I{oxBy(A)uH(B+oGM7K50uhA_{wo(Hr2+Mt%=y%G#YkPWsbH^7u*8ooLCokg6zv ztyZG``b&-)(u2+a@Zk>hI!kLd5age0dj`bZqqYOML?;vJg-)~mvrt#+dd-tT=(VF)d>7hK2eP56X005rxJ?p3>96)j!UBEI#7? zOz}_VVRHZgFjW>cuY7R;Fqiquz1tP(x1a9Av5%IHEJ=WT;pr38{3&~?_#`gcN7x1k zFkOZ_U!^vRP9+bY(`q#_6l)U`5JlyCYY}nrhITpd-LfW%h@mp=J_v!W;y?T7yW;$) zL&3v<;Txtvd$RQyXwNAv%~?IbdPPV6@xvYUwOZb93JAxWmyt6Ed{4#RGZYt~| zwIt1$&nFs=e`P=|osWkobtAfPH73J!Y#EL;amyb#6PWFQa02rEQUh*qL zFepMfUazP&*fHq({nj=S!#vQF-ZoScol<(PJf=crvI!K!C%&aA&T9u>x=YA94*98< zfS~t~i@_*cFo@!K7A(;p7o4!J8y^oY!i=^F~%WwzDr!X4k*?!6wtp z_>zPVcS;9tCGi{#oV^8mAXN=Cf`A34aQMM8?yT-I4@~G8K~ztT4`)LSRmvf_LaD^Q_X^2jrrAq#Od+$?O?Tm&mc8* zt9+C9`%aB+5KXnNLO=w2tR?XDrMBv8bNGjTd+$lVr!T8lMKs0(?{O`?7fG2Oa z9DP#6G@Z0d3B@forj}Duq7Y(nkHb|Ku1vlLZ*HE-yA^?ys_a`|t6ewFE>YVxCPhLm z=TC$#4LKeRb6x|oHHaM1kwFws;anv4f(UU+Ik-e@!?q2n}h#=3|}00c{R9WYnrG~l$y#~)Xhu0J+sKFIXE{A;>I^Sm`Hl-q6saqjl%oICrE&M$$AP^aZB`U2<&hjPg56c8uJ^Q1ss}ac>v7O zR^|h8kQ&Cf0Th)|czfZ9;jQd|91LCV2ZrlB1thrP97w_F1037J7@O7eKr!8aK`fZJ zfOiDFui+n@!?sxiF0Ys%1{U$nNvYlf@JE^*vVr#Qv9&E85~VzeQH`BA**Zc<<$l^E zns#T-Pv0!?_fLK=0KkFJwZEmHz~s+^x$-JAkdEZ_8WL1({0!O07Q)FuMS+qR}TM9+v{y8xv0I<+e=4HX+H7-u`@SctJQ>K zFuQ$PChE+;@%Epo|6=;lJ~q~OG2r^hgDB=hjbs3n{AE+}46Us^71aE>zsBfp4X~H% zDGWj>H&;itd$%|U1Jh0hzDm&_$i-`7O1CxG38E7nz?i##Bv+3kyh>4V$4`i}b0j#m ziwNDqHR#XBz$F?=LC6Ny-Fk-4dWn*kcAgd=Qi5KmUQn3E)=XWFNi1D%rYoW_MI05B zSr0F*x*g`5vo3H#FCS8U$OP0>{`73-aFr5JbXNwbyGs!v|9!uJf)!Kl1zM$_k651|sOy|fp z(4N%L1VKl~J%H|WAmWYy`)o+Sh_qYNfpO$}PB4M@Gm1x!y^}BMn8cxID$jW?WI)yf z(+jC4aRYUbP$blb+)q*u5<2Qr3U_VqvO7l!HdUKT+mV{Ep~?KGAQGr?z#|VM%maJM z2$k~QVEpH%D*(B1YkUk8mRkD|SLt{-Tl^($C8~@0F|Ro$?kmet3`ZkGlh3~OEysex zL%zWS=vEt@t-N(=ixD7+R`!vXS>k&6g1y|eSG-cONYOIHCYBSOmSPzvV-Oi)8Di~= zAoFck58HqIV!l*)w{5?2ymp8jtMu%d(_ZHwNYz^&1F7W4Cz5KoBEdlOBqM+L9cMnx z10W}#AX3j2>Y5NCDR+)DAwj~>ao~B>=j*P=&O~uamH(CDbk2assB+yDdBBqTKCeL( zNobA&DaTNP;<-7Gm&^wSM=jGeF=FDKGFNRZ8)R}HU+HqWh0Y|!KS)CzrYuZqx47#! z+DR(~w{^Hw?Yj0jdERDY6own@LjR^T?+rT=>sD}a$#slPh=cfZQdu9JX#$$L z6U81C5)KJ~jL(ND7V0=XB$ane_Kb}2@$Q#Qb?p`^iV);+h?eUxuI zKd)ioRmgEaK%C}(rjOzt00p(9t^pvx!4+)jXwFkTOsZD0TM)P7+7khXYgmya3?n$p zCSGhsjotfuu^Wlkj9Isxqvc@XWshCrq+BO@*V2=$O{TBJ;NXN^Q9sQ-O@NCDE>?%h zG=B;!pCfosG^%oo%Xg8yZk0RV)<7j)1SBi?24`>C5813N3H9Cl_zR42mHRJ-qoUt^ zp1%L)W}kFBvZtkN$kK2MBt|980AAgF=8#Wd3^d$u;1I~U@ih|Wj91_YL7MTD!PF*N z96u0)_vAsZPaw#$3#?&jK~Rq4_qH^4*C}u|U@G+)^`1wEtdI-AXK~m%AjjQ`jc7X# z7WdBp>Q$adCb&P3cN
)1oruoPO4t{SN@XKtaEetDMJcss1=K<&{<*1T3*$ZOy0c zik^*c3$`4 zoxkoH08Yt(00JgE&>71( z*6+B#*2GA@iJXP)nI;>skE4VdzE{M0w~3*qTHoZJ)xnt75lu|Q?GYYbhxIPvpx8xw z{r7~i>Db~TA|eQiS>kK}d2)3D*~@vENAHEXvb6kjPFKEIC4fD~UzKJcOj#O-GtG7w zdq`<`RY1OW)NfHhJl#JT_kA>jP{CAj);q^6WQoCRZBElzv3xEu{ALNADMkDH{ETo4 zH{kt>+-`&r0^`;K;poDj^2XVDq%x?Y;tYs**4oD5P5o!nH;ntdp+4xVGkCP`g9QbZ zA-dFX9FoBM1^_SC5P87%mo6;aIdI5`S4ohgy4K4CJrLvo4`txO>Z~-^Xn#^Q=U9Z^ zd#EEASWCa4B2G}9!-sfDXg|~_j9!mxAS9e|G?WbdT0*ZckN^cP_!M)~v1Yuv4fdTV znOZM-A6;C0U93OK+RxV}qKZSE#Rh1xZV&9byaTO2!#b^{x|=td(Is77z^GaTe)^QD zRU}uylBXU>l1UCBx3AJ+rfIcr4Mc4(dy<}YTkYiXhuAs4VKnZk@UyTE?3`<^@rc$* z@^};a2E-g>czDo&7MPAZfV&0bgX#6izc-|V5y)MgS;X(9UP z!RiOI{Ey%I3Tz-os|E~A7&=PNb%(v?I{S|$>Gt3N1Iujkz&X$x_%?rzZBg3FvJo()ia5xXH8GpL>XKrqevoNOfY4SUsW02%+c{*&} zs~3{x@MMy4*jcJ6qtt~Cs#V(zbhrLwpDhf)%HMG_DqDYD>{La=*|mB4ri{sxL9Ac3 z9U5fXyjSu$Ee7M6th|P=oCK%C!^c!HlZ7nQyH++~EebdQWGkm(d6at@OU{JbKwkSj z_P-x(-f^A>Mu4ZY-l~mrYhHYAtK7n9q~Ff=_S|O*i?;KtJfF{1nf7EgdTl)H6w@dB zc_jg^aenum4q=|?VDijKAbwa4Lyno%&gvPprDzT~dnu%(T?%`PQ_iyOrLTwlP zU5$@rAA!ISt&Fo@2FlGa1*oxkW3kCm8iqG)UUcS2g&(Oj}}Uq3y`e*UNH7o11U!^_tA z`?Yw?_FfHK8uAw~Z6H$(pbqwXkK6O0H@At#n&K*+^L?&458!Yx1-it-ZR7uB8Xo^Qzp(la$5QL_+Bi%N#)+6n`4zH5DHl#MKeo=1h-&bH2qcpwP}ERZ4~Z2jmu1O(DhFG}7Hte9k_ zhx3J0QsH;^aJyYJZIs}-%*=>b4)L=SLEM!#_@w@|sU&jZy-&j}Yi)YEIplP{Hc_9& zWT{Ur9Y-t*^|Wh}%)@ub6N{2u&PSY%@)@qwawP?BkD`36t z?=6PCvk6wEym9vwxq~-&1ja?OPQ};9-lpCec-?X`^CH9fc?OTcIvuAr*I1+Rx?zrZ zZIH}3y+j|p>7xE-+OXLuFQt8q5zpiV?)fy zFK`KGDLE;7D2bb@xgUu4v9s|^FhBI{{W-OAn%wVjPyi4B5CQ-n#X2`bKV`>--O2^k zEcp;%(H?DrOV9C}we>$=wbXcbPuHu?>bdX$1FGd}`|ugi8;~^*AKtb>aMkwRbNiEfVOv3TE0vk2dqn~yiG@_hVL1BXIawkDyFo$ z0YwOy6+|nSXSqgsS(Ab;dCW^I-FH{_62Kfd+scnH`=o;6;Fejk^(EQ#d}_<+r}#R^ zVedWLK3`L1ql#scrXtPZH!{+8OD;nKZ-z$15C;GRfDqB5;w>_C90sO_2^Dq#G#xBi zSEf!8j)SL_OL@E1GQNkrpgkvpVoOjqP3LJE_cJ|F=RPV*zY?#b5@gL^AHj~Yen>d3 z9sT=qOma(tK&eZ392=-DG#7B%!JhQvumET;Q0!4z-8Dl!tm)ZC0I82+_I-%saR=XW zlobq44iX^0gks}XZXn@vL?_9*p`J68VE-hZpG!mK1-lhuKx3??IsC}x3B%d}m{}tY z6cJK?qV~QsDm9<3l3=re&Bm7(hC4dOKutJ^O^FxCv+x*E@E%zZXxZrioJK`r7JHowcu%5%D zz`flEgY6(E${A}#+ZKh|tzLw3m(_alb2>k8sVl=5-b)Nh+jK9lh}iKhH>6W#*v1z$ zElkFyLy<1Nc5iJs5=`Lv7+cOKq@PfVt0l7@EhCeJa@)gH!4+$2#fcRW2$#@v^?C+zWg)mJAXkwzA6lnH7i8$Fx5xFplDF?q3{U@k ze7Xi~nmH1>O3`b{^fea%Kng-2o$3saE05~}E=OO)UsnjF)`qB=^^mAMUV*776*~eAPG%}EgDWEahn85bQNx^H_ zMX;sE3!mal>$ko6sYf9{K6=Fa4nalaiJw3>xNZa)l@!yId^VZZ!V>y4EdcwM?KxJn zWTM18)Vh3Fq7sk7wCMc2PBgexJ@MPqEYq5rJZskGb^brV@$002HP9~d3j4zt?v?%xN4Ynr6?{<}rX z`{%Z0T>Uz)pU}Ef4X3VT9Bl|n8eGlP+Oy-Cu=0!$0v@jJx!hm#VIW(~91&-uAAzV6 zqY;;aUgfpIk^lmC^31$B*{jfg9W5A**B+v@@QmMI_xfJGGJ-}0Ym{R=q?$*e&)tjR z6T(?;Emn+|0F@|7Z8WOSj$o!=>^)vy(Pl0wnpby*UeumfbTA`{#9mw-+{~6w&hf&eq!)7_1i}m+FAy9M zfPihFh5~Un6MqFLnCC`tNq@!6?1!5t;kt!7m(z$a?HEONUJ5VB>}>g4%Wfn|E|*Ht4)-RC|>;U^T*XT zPEdMRWR%3QU{-%S6H!&lkoIcMHHSz+o3nz3if~o@5>kKrRDp<9gJHQoWAK{qob_Mx zRiEv8xXa~>F7(Vy4cX&i>^K7{m0nNJ`t6^m&XR_pRi9L6u!{|%W`&tm7rH?(zFpq4 z_k16FrAQ2liBnC6_~^v=*|F+P`y>BB&%X|xu!C+WHe~kk9t8{Shrzh9A&v_oNS9`I0*?wCSp!h+}S92RL7FcC!7K_Ju z?Su9J{eV8l>zd5$ds7v)U;rXrN4$(9snSzc!C(L-Q(cmdBe?XEpas9`grm|L(52Mu z-WU9PTaJJLD7Kt)2oM}YJ_#SF_>z8bfV;tT{3*SVJY%}Xd*US zFlW|wh}IE@1<*7Ax;kJ{$bs%_@_)8$ZBJ+{z9S$~Bc{)Ec!2>Ed4^qkIlkW-}y=~!jCPQW|&~yIpag-SJBSA#O z>c^SIqFfKodE4VRzY-& zlelLCR9b2P1*iZ3B@h4se-8^9lZc{RpptI){@03^vEgAs_3QZXKumw{!vAwv$(RX0 zPmd=#V+1>&=1hJU^z!?QI$mx6`LvI8T4-|;^MdnpGqZD}b7P~!v!lbpb$MU_0zU;R zxW|74t~asFc+iwv*eRXz;G@U<;;uxXUa~Gu?omqx^$s;Kt0lKO0a*+%Wq!2$xz<<$ z07fANzM}Z*@yKB;I+@CRexF3-;!Bg-oMh;V^zQSS<+Za_EngFlpP#3IH(`FNh*4nc z3=usb$R8j_02DZ-ogc)Vv(}tz_gNzjn~qqp0svVB7IfJLTzex`_DqrU9a>+?r^MQ2 zibVHHm0Z?N(JwUEm*B||^Dm{1cnWJh0iG}Iu|B_fIdg%*C^U+nYa7;ZtAI$n-T(jq z000NV0(~j7kLq-Sm+fZqXF6hJ-1CV-j(L@THiz*tbH4MYe+P!j@B6GPR3G&A7Hha}io zVVpunMi^=xuY+>qc+0du;eI!vp>S)Ns)T#``7)?#cM0l3rpMqkXnhZ(cFMO~b7 z-3pDJ#(yl{61G?aenG#P-G?X@{1CuCQffudKsRa7?@auPj;ctmmd}bK(361J8+QtX z+nV1)-~{xXMxQEhua~7i1rYb+$%4}kRbBI82mtT(s;BK_jHi^atF;!VWzmck%wS&W_lYLN-qDkm3iL{ zHK*|W_sgx5_SQ=bs!@{0CXF`92;Y1u?BqqcUD`CmDx&)EYufl6GXMalzyJis001f^ zLaWtsnbD*D`97J{gXN&)rM&kL03{64olc>9HVq?Tp9!Rv6AaxRVC--J0ZTfa&Y<7l zX%H7y(|cBjvBbch8*i;{mSg63+WrK)zc%h{qIM9$xZLwXP6E*eO)W&0@tGl#Q27pM zc0Nk7bYUw|D$VsPUqe<1C{%nz76(3S+SmINs=fRH8xz>o<_OJ;^~kYxnpAWIo+ zgDLX?0Vu}lM}-ml^dE1r-}iJf-y@^!E*zc5lk4+e2RFXxbp`5ft{?yqJ295Fo9FFE zvySdW+iSzYsrh>*&s9tGKGF+It_ctLWZ(5~f|xL#NSg;schjeFpEuWj(YJ!1+cKZa zIVBicNJS?yU6s|hdY@OSy}mDgW-E0byDX~71RiB`W|-9)-EWy01MurPm8Cn;dS*u@ zSKJJx%x-$R76oHlQ1O8QCprH$#L7F9(^VUf)=B43}m z#%QM&y?R`FGIs%@dt#9%qQ=yHZZTBO>JilyI#y4M3|w!v7p#XG>fb%-Epc4}p(Pss zCMAl2Ef$igfQqX41f-pJG^~nffrdJ|?Iv2rGcy@C7Q)86mhGwyY&ZLdz!|zyr@0BZ zxrk7y>vfg+$i~}vd#y*4jh5Z!x|#q!2OU(t@m+?a;nG<>OLg=Hpbvrrp8vJB&qI~6 z_rUAzUym1Go9{4o99DM1P4-gxH0wLBfB*~9cyZ9N%B3%8Dw}Fu{u0)pj8Q#d(lNRk}U{qWd81^cp)}{@Y?jf?(cv3P3ikfB|^*lpPsWN|g32?{4Y_zK)6Q zC^jwB*@lg)D7d%a2x`t*NiqiHqYVKa@%ZLatrC}Ix%I&oWjx1IR?C#7BPZ=DE?UF3 z_gKR_w4XX;z@N(B6d*;gq;Ak+CJM}Uq-`P+@BvN2e_3w7&X#k1+oUeQ?bbs;=^PSP z%{pI`<#^gC-)kSzFwcnk+0Ljs*-WDN7$c7lrpO=vo?C@(jF}gj5TklG9|Bh^NSd=D zh9cV)h#TAs17fBV_Cait##U+i;q0*R+7+U3V7P@@jO0 zf?c_S}&S|81|L+4`b+B>YWin%|l+z=Jy+qVU6ew`I{^xscHLD!$|twu-|PI zVxqa}Ppd!>KnMUY`$BUd=IC1}fFObh0F^k^T-?s$b6RuU;H`FMBCX^-FNg+{{H*J5 zKTYrka34?y@9$;*H(cDSW?!Abejet#Lyqz|&r_(rQQyus=~OR^?Bc58HGg6GzyVkp z+Q0yq000DSV&7ba02@}2JTzc;e9qx1Cfz3E6YY1nAUVx6uUWz>`* zk`6tYU6y6rpMCDzJmw&DBt&DRG+74G2R+RC1sn;puef1s^4bhmo-XK?ehoEzYl6g* zQcSmer43iU??1Y1$3Z#IV7nb?k5P}TZs+klg~RR~iMYn-sdchPpS+j{gwi^*sg_zF=pg4086KGs1OSdAHnO|U2Ae>*#!O5laXQ6u zMdwzU%O2LOG>TTfPbUE}y>y5?r|wO`hqKn@9-;6M>9IN-W3g~5=mNV?!(JT}AZG<{ z^vLXIS<`6=?nxlelE$(F$4wN0q3WhVE@qyXTix>Bc13+a#L@Z$t!TB{Hlb$1KG6l% zmdbf4kpEN4QnKEBIT01YLuya|V8s7Z-6&A>{Pg`K;yx3*SYPMP7E|kP%op(a#f3KL zXFvcVw@foj4)goHOeYIN@v&DZpX%g9GEk%*6y<}tC78txwCM}8XNp%^*)DcfZ1O3< ztzWOOb;cPOS!$XQfAIS@GeU9NhGaAONzliK##>)yoyotMz2NQp$*5cUcd(NsTn&U9 z4eiE#{F0Kz?K+eYiC2c|HpYTPC&!G!xudxX#+Q}HMfoMtL(pRxeu!=7BKN3qORRk2 zi`KiHX5@eX1#|!aB@h52U4|WT)(fm78>dDRxq519v_IIl!j+0>=PC_GDr>=6Xq?O( zpkStL00Jfe01*|T#&`Xg5F87GgaGV%Y0F~`1Y04RdWYu!cJ~o>{Y&S4?yMk$ndnLy zmGC-choS5dIOh#7g?v{Iq%JqIPffImTub@V-eC&+YeIK5G7wC5l;Hc2h;CA{}`?iR1(c%MiN{2NP4iDnAljN**Jf&NcBlUaqi*qVkyVtr%;iG%+}dnaQ$>;;F8@5i~RxScM{iw{u!c=mA|A_@~SM^B;9o2&oW zwgY+vf-1drZ;XFJo}6+A>@nqB{d^S0BIW0+c8winRVcv9tvLhCf>vYjMH%F1&5yrvX z(C%4`rP8xKbCgdvrU*uE3*?PA_@uu?_Rjh1LVGN?n{XL01`QP005)_0G!o%>HpnIH@McZ z-5??W0`A+;u8LJ>Xb;LX5hvVO9O?dm0c$>HKL9k9yL~R446^|;_Xo0W1Jh7T0b6VU zfD=q$)BpewKmb4l{Ea(yJch0n;r96cr*az3fe)fsjTZ+<0RSk`00aP|hCmPk;Z;DQ znh)+G+J8cmo^$Ydc%4MQqgQPm!)-5jn>Vh;G3E6s&-H#>NMW|8dMs{}sXj0dx1+64 zayr2P7!`&L9gZRP%1V1bR!+j?oQvhcb(F#9nES=AeIBgpy71RGRBsAMV^5>KNkomD zAHzoC)jE)U8f&fEBidLZGd5mEhlyTvE0S5&1S%bH;W`1`$z0>_teZ@KU3?7 zb8BojE51)0V8YL&Bu(~`8_%7bbdU1Q$ockc-7;2hX=q6O-`NsAyT}p|(w$!dZ}|VE z7SL55eUo7~Iq~5Y7&}v}R^4ZdVAWt7Iem@nt_wp);)?4#u@pF%CEH}g+ZzTPvs?Cc z7+*-mgT>+1vbya41`&N6f1(4)fZM^;e*fK`0oGEq7v%@}D;C^w{TfGb};eL1pCz68_0 z{pN}e8iXl>oufjaL49mr{jVvEAOJ)R+s6U+VkH?Y{k>|ciy|n+*!P@pC$I}JkFRJ z&g1I!>%65?7n!*5rmI{k8RN{P%=7y>o(D_jU4F`q5B+nr->dUeR~|yAnWxa>B3~Vc z`t9}rU_@JwoK>seR!qk}3$in1@Bkn=00BH3Nt*#1(lS?((Mo zHm|w8oH#GsD$Ni`3k9~AI1mB|F6=D}NUAcHYOCUT`ThY&Ayw~$|4TH$o&b2o8Q7{f zzjXZ5P3P40w!2;D4NcM9IHM#g8FB?fS&h`p?L05PB{x^&s`k%ExW`Gc#2DFtRlOEztAMJpn)fB5JZz zO9UeGvrUfWE;KUOemK$8bs*Xwb3IhDPyir*d=q$~jHx^Y0ssNk0({{ZGdvx8W#KAa z!7Q>^{mkr9`h|6+2mql700;pgsob-%yZRi4KoxE9@PYB4_{H3I)rI*E8daNRwhV_f zeC`bwAefiav>FGwdBk6{SMBm4R-Ux z>3{0F8(g2gRp1J1c+WMw=-tjL^S$&J?=r`y$3}6b9+F<)ItQpW9Z_ zjM4|f54Ws@3-+fHIKeG%+RZMf!j2XswG{_XQlwSX*i6Mty% z9dn7PqH8Gl#ib}&(<=K?YEuTPrmcow2Vz9Tqtkx#?1+QB2eU{+XZv3l^qMng(gX_6 zhS749B~~@60fh3~*EBv#jU%{Q1<-;OYD^@wZ_R=3NNsOT-BVVnJpX?4x6}j5X|y!_ z{e#7x(RJYTfIFZXYW2dOmdEqHfH*7v`}*~Hj$);SvQbO)GM_efpbZ@}l+@XLAK!)E z{}?NL@55g5|D5-6be#N^RdoiF$goE*1U4+LrK$ ziiTc?{IU!8NjLHoWo6tjGhENCqUZl98%wU|siCF0GB1>DU zLH`AGT=nDapiVnNhgY?Ei+nO&aHlTh2{|$qX-z^AWj%P+_|?;tvaGc2zdMWhn2>VC zCgjDhl4zz70Y@vN6>K5^06tPca3wGS$kf)@T})p{gBA$G(!lO$W-qau+hbr8_)Aa) zHe0$vxxepmFaQvpEY~2$|KWoboX)V>(<%yVLd6h<7+13y2;kG539M>ktzWC4p9w1r z^|xHf_2082;*SgFB0&HG1s}egWk{Cp@4)UyasE05hHDL9GZvW6FS%8lrmJqQdP%;+ zf9ZU`uF|)Z;Pc+U8D&MbK&^?ae_UP1Mh=(;vI8?>0xQ?hi#=`D%lX9Iu!eHpr7@7B z00K!7|20b&)ON>~9d<_n(rG$dw#w_`szb z_*@L^!A$QpnPPIUFd49TJ>~ooFOO|nR-#-hxb|p%xV-EjXTF+e9gPf0`HTQS3!KSe zXq{sz!N9Uu#Pv`C7%vun@Kb&|9%0zNihdcj(1BAC<)w5pZ^Su8AQU(#9N@#a7SzBL zsf#pY

YkNFF~+7reP|%V*!+zrJ(rV!7S7_jj8YO@XxwZDfx$1rI<2RQ9u+r%#;8 zboi+JS#F1><~MQBz*siIN{)fo@q8$r#ddcL`rLi_3Bik_c;!pf3oh^#do&!6;m|)6 z1sM0zIO!*xxz`*qvp5{@FIm%1Sa%e`zLW}%3AEA|RHoM7f2|oYaYu2o&0%PXy?(@E zNe%x)R6e5`OF45cehg6~eA$wnT>Pb3r{8bkC~3=+j3Lgs=zYY(Oim9v#juBOx#?Uo19VLNPMBb zq-VF?vS0i8ydmD*Jgrx!GfASL;b?Q3e-{##4b+7+0D#)!o6e|qo)?AzDF6ToXaE3D zSQBPyhnv0*p&)pPV){9|uj0S&tOg+pojo&E+h@jQ{`>@3H;i6vG6@ z7?R7%fkE7uhh7L_S59goUHZ7sV*f?85VjR;7?)53-PCG5e3|43D>e5;dZ!eff~YUA zF7m=Q<4j|~3Ta}&6e@587zAMlR+1s{(mq+Wa9@-8zz_n}gxX+$jq78uU*C$-D$iSz z4;d$yVC4CLhnD*Y-&I3&Q1ZEzaSsv*6 z{OW-|{GOSDSm}Cgd9u{#p#TeWkeb<#k@HAfhZpWDU;{cm4Orf5N7Q?#au^2M){#BpGSzhk z00V{y0VIS0_;@BJd>7Mo6#fr`4jL)8!oM*RoS_H;OC7dN(>wk87TL5nsS! zbXLKp5EsG#Mv76Vk^j~7;B`pZkXWjJf&e;+HeaSN$?Ya%&awXVpC!W`it8(;xwB6d}N+RyrRANj3>3&aN3j(~;_7v^FEm#W&Qp(hu!W>^s23 zi2y`rf8u7H0U!zTU+$RY7;m|N{!1}0cIcmIg8qLL%lNowJ!Vja%MqlZ8{I}@tf)}2 zN*QuC6+}hURe_llr4Or7Qlmu_@dI&tg? zos+6|9cAwK9#SzL@Ajg19ttj3ZH}e({i&BaheL~(+kosr^?+>J8`d`A<<}^7_RAGN z?C(MDa&-$t%O9&-1Vx>(|DQ!Pv^}ZsbFa4m-g$0QJ>I@5xD(G$t{nbi1V7CT@I%4d zEAAKIZ+l9(Ju9!1@Fx9-E28BU>x!IXNzI>Ib>VoDCY2g?{R_>q^0NSIs78mOCQq;UQ(9(r-Tq?4!QKxhypeA3T(`8%QwXj)HF2_eukr; z{zaaIhKoMSZF{7rXu}6sGIn}Vqx@Oy2#RPiaEDSVJ?_E!?5!u*#$+b`ah?=E7j4Y2 z-}9BZUSE?HU9n}3?@Q9@mD_hU@3Pw)kBT8{54fgcA(H4@gKxbq-&;?x$ z!WeKZ0Af7b*2b}}>?Y;_>cQtgcUnyzWMwq$2*0}D-pn0C$00lAt03&BG`LJ48l3brPa>my<18@K%OoCKr#*Rj_vr)w0031{s z+;2I*u}!Z@J@)s|`Elh(j^R-eROX_uph1`vUOU||Sk z2tdbDK@12G!VrKG1c3t~0DuNUNEi?@1PqYKWFQcMm;gva2oey00Su6km;}I(FoX<& z001N;z<>}ikbpph2ta`VBnb#i0uTZa0uTcLFo7WmLogu;3=9H80s|A>PN~7($q&qk z(fKr=NC#d`XQ=E^rSyO!I~J}dFB1HugWW9HGXMYx7qf#)yfIs-<=4atUgpX#BGb)~c|#p)@4|Eqrztn)oqzyK9%1^Yc7L6bsZ&Tums=r9oHwTnZO>G^neQdj zgL}QL(C0opo&1F(<|Y6uW@1Ib2MiEE5ETzM~;dUKZBe5r?-0(ifM#Dtzy~dQ;=iLkx6sIeXCV z{$PMmhyq>StI7ae&od^GwqKfwq2-%)vkQ;QjAsN!6JJS5LDL7sZxlCDTqLjn02HSx zFIg70dk7>_2qamD$h`Bp!3B9n1~1Ud+FFh;{4&?YTh#(^Q;Kd|)POP1#pT1n!TB&> z>e81#PnR4z+-9T2=1PRy5-iQr@mm>%<+m`x{B-Njl=v_32AkKKW{!-6DTRcx8i151 z{W@ete>qcn0hZC4VEqGN`A+{3!TlLlIXCt(-kjfU(<903ve3O5_RwKbL3)W!BB4$P z&gH!HK@7Afk4V1%LswUFzrC2Rt;H+yXDfO|B_uh1=XG16Hd>j*H2ZS2K{SR?WxWY! zp_=pWfUK%B-P|W`9k`GFcnz^Lxy|%wn5tDvQk_n|D=YcMxJ;TqFL{j|C)0*Uq9jeN zLG;tlNSY7M+Bkg4@=E6A;>CvjD?f^avdwtnwW2?O004pjKmw3J1}H!QcHy>N7LD#6 zF`2Leh4(6RmzWhyIkQgaN=u`%v-`vK`gj(s+BC|utLBH`&B5^QhK`5rJ(Hx1?B&%n z+m+aqX#G?cZ@4>?h`v&$000vx006ka0J16*c0REd3UbYVtDNJd5lO!x7)tavR23c? z^!5&xIp12z1$(~v$M1T>eCO)~r!QOT;P?FTiSsj-^pKgkw*K;@uTmHCKYKZhlWqtOdpf`6+cts^WtVYuI>&s_KnNgjB5C}sHBaQX29RVW-_fVHuGk=)C@s}$ zS0vvd>`^hhWZaUmCHs_ObYfOSb*&~3syr$WkDlwnJZ9^dbgGWiw6-i6sYiWiGtc*O zFAsLIX*HK^IhExRyitY&Tn+6I9NVu)-y8F(FZwSJhy#WCD3{#I8h;2amPZ`k8&%O= z`E;ME@&KXO-*?(t5=Hz%QO>t~$OppI8l5$Hy^|P1RWMDu4)15_x{3)nC%zij^ALGq ze|05idA4!CrFijeBgKsJngBAKQKq>0@Atd2-5R!t!4-38q z)6;7xxD=i3SFObKNOGSUROG-?S3`I#hiRO`k z03f*HhL&2ztwh6m;ppP1W==oH(rcT9#6={?nEv;?oe+Y~Xb_%Np0oibhM{5q=211Y z`Yu)FJ(*7uuB9I>W+&3MkvL}%0D^O}B2wZ(ZN0(6Ez$eOuKSNQnvseJVFv;%j&%54 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 z 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�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%0D4daLCRTN7q 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 JtdS`7NxLoyz{s9OZu}-ZbMwJzh zpWWA9Y>bOpxq2*iA3)dRZk>6)9ALrbK_j2xnmNfd-!4`w>lnI3CCQXkj@ONIG{Ssj zrB8o>L+vIaJEO(zjM$B(A;*IvrTzr;wXL4T!hR>VKrt54~)_D2|az?$ZBwDHYT z6$f|}22>`Yj^Q}g&J|fvoycy%33;#q0F@zJ@G?!Rx!?dN5C9ff0GCk`IL-K$AOP=y zgJ_S9ha>=0bqdpiQ;S@4T1|$(A>kqdc|KOBi?tSF#mfA(aC^F@@0zV#`tW83`={$_ zpnxT&W}N?`^Ba6cGlFKK%{U9xk&Lms@<7^5F8~k=U2;QV`iz`-y`5k{AqRQ{fPg{* zh)P3Ck{&5qS&D}qa(a{h^D7njV`J8_O2kQh`X8mrO-XS(b(NPyniRklWJPQMcPtzBq@RMn%!-Bw- zrl81>;|GIOd9vAaY2!z%E?uD1n}}-!AP~MiC-Lhh0xsOl0Ob>>`$BNfVP1mIH3~_N z)`(_X&-)arF&7arQbx>#ELZ9QAiRL;l{z*clVzv#cOEqs>)ef!w+S#I2mnHa_Um(K z9qFTQ{^;|hqWOdOYc5qko+h%tyIXEt%JOk+#Jn-g$WZWZAr`wOIRFVj4UoPp_2LkO z03q(166NxmhyV%`_78jmkJj}ZCCu{wy+;0j^7^VP8R&wf8n6DXap3pkPz`9vW5l^xJv6&Zpam{0*dVB==35A(b~q?B7P~ zax)_}4O~w@e#r_Zu|`*(8ap&9*w?io00Dz)@(Oo4CYu6oCr43rug?K!Q@~CHT7M(O z4%AXa<$*t(C22oa2evCnFI{Cf>(s)c1#?*ZE`iljMDLYfr#q`YLVe$6EdAzw(;rP3 z%Q`t*n3y^d+JB=n_>4Bqtl8fP`8_x4y~jRn`z4@)(;;{>z6INJQ>&Redq*f+ROJa; z7FHj{PD5s7%a(A^&&XDK_;TemF`Xz|m7bHlMMJGU&N6S8C$-gZ-Y4sZy&{-;<}kT) zp3h~KuHP-*N8g{W_ki2HE?(Fw4uM7Rj}x!ZX+hR#0D7<+E+ZSqS9+TsQ}Cqfd|oHV zna2KB&r5IvT>-QI+@)ClJWLn0@^9-L?=Ae`KS_3VoG-P-WG%Mi@#eP3rr{LuRHEqg zO2A!PeVn5iuGkB-WY$1ah4F}`QP825bM3eM5Tziq9l0GNH<6$8(171Pz!)^{2JRM6 z{`}o_#$sy>oeg3Y1Hcdf2tsI2h#GAQ~=`F#J8Gd5pW$GtQZemm`rI+yCw+BeXl#fBN?>xpO9X_KU`N`syZP6_y z$Q~H`+i;UID>ZC!U|sOLlzeaWllR*VOZ>CY@Izlm1~lX@?(PpSMy_&qltuITZzM>3 z>rH{4G6_@rDQEgsBXZc5PM;mH)&Vz0eitG)@sfji^Om^Q^c|Os^_^q*M%FMO000ny zkiY;W34sg%0tA6B-8-NVkb!}agfIdDhC?9;7-S$2$N>NY3=Dw+KrkVJhC&hqfB+C6 zNMRw6fMfu|0776x0|Ep9kO=^UAs|46fe8!%z=Q(`83GU?03iYZKnVg6k`fsR1OSkL zLO=*eU;zRcK!Je*LkR%D0E8fB7)U^Ykc7a@guoz35HP|*UK!Jjga{b|1R;blfMg&; zFaRJxfI=7Qf0Oa;{$H`}e#g!v0$%Me7*N?<4V1qj;_ut?50h}_b^HTLAY1yv7SVVq?G=g7ZN6FSx{7~L*;^$a%dOyEI z7VDop%V5-Bh&g#KN69DP>@20Lsg=*Zqet^uHP4Ozt5_OED6{Sa67o zOr9gI#hX_H(Z#bT>FbsCXBw#PqQ==1W^~zw*wyFPwG`v0yak7z4Udlp`I6+WQ%$7K zQ_omFX}~1iSI(Uzq2urlt%9$YlQ$Q2+o!0T<;X%QMIP=*xb+m(Fp0#P~t4TK%x>SpXkabmw;f5=n7UlK?sq zuW36r`o0TOZ@yawy89LkmpX2;Fx8;Sx`F2EGCgpx06-y?Jw-{%x~-%&67c{4hnE{I zK-kaodHzpbh4HGNFVRJ@|306$IntmDb24$n%gI0q#`4_8fCWUx06jFJUGNVj8fwn8 zf*)HPvcm6fJfWwhbojRP$$AeDf}jErijtSW==AF zJhdPI5C~NU=$1vqtqX^Q@SQSid&z10tM8pStCu;>$U#@h1^@@t$7$=DEIE?k1>6agZA%O* znlb(`#LB&lbgtM>?1MVOx#WMg-q5*)k#nLy?UCkWpPe(Id<(n-vfQf;9D+0Qha5sS zS()A`)@?Wd831pdf`E#L<&P~DNmbU)DWC`TfPRm~b#nC{JqR$h z^m4SCrh09u5p2Q97s|hbHDLqR$T}-~K;eGV@5c0*t)ICz>ZoV#@JBd(QMcVrtyy?h z;L#zo&8fb=)`Z8@QkmX=Us?e)=_ye)T|#uth!853pYQXyWv`Y0W0m0hZI5Tp)#)w% zjwcOIv(<)=$jNF`BPNWJx&A*$=!xGSR)Bqv$ zmP}I6%m4vD13sMr}U^!MYmhN-AOyCaI*#%R+E*%wY|i zW9sIB%s?Rk_s@9Y0E7|T8B!^^DTe8hde)WK_tI7EzQpMR zNOQ)4@sA@RS{meL(h9v%$uVvQG#TpWwityUKUmpNcomJBifC<#Y^fm^9Bw4sBM$lU zT&3z0$?R1|Je@wZA-horN&t{c5?MM>PY~o!#_bl!=hY~mw4t|MaxsIirZcgQmvZkZ6 zhO0duNqNcV>(W$yPx3h^iV(1;Q=@hKXVj`?)m~b$0ouQfad$&*exHu!{@*DTKJY_Q zncZr}7npo`ELEYo;%;ppos2O>OHL^0TqeVdwB9L8sR~<-(y7j6 z1ONaBh+1mnIu{N`sIY(n>i__~l&>auvz+=}gJRXV8LaRL@qhqhm|1_%*^Ej{&O21T z;wl>`5NwWof-qt&g&5IvqJYn1`TXjmT4(mvfJPz!5QG2}(I$EiuAK@v`&Rk5kbLz( zn<{*MAINj%6s%>0w)jm2e`x{(ED7jGNfxzgN`ZUMrca#Wc{Oo$Q4=`T)31}-e5<~V zn~+!3oJyi~XexiEtk;0*@;N5hP>6K?Y}_3tr?oZi##vU1a)9bwOX?N6d7iN$B6#8y z*gT3_ze-Hy{283rA-sfAk$Z~KyJ6qh98}CD_ zjTp30vXgZGj@qQ@0jC3GlY!``a)llBx0nIbc?xiv!I)d?Co@%hG(?uE0jBDg5 z{oB?^t7Z7BCx!ro04e@!(ZB!^i{LvD9K7E8KK)*wYmeu-4gWoo&Q5YXHFDQr?J0P@ zjeg=F{`uf*jnCbA;Qe0fVyE;DxILhN(1v&*H9;tPRJsJVZux1x z1-rh5-}#Q`p;oo+>MY9mLn7^T=~AzCf1wmu)-kOk9BB;|yE=GL5cg;4*^+E9wIafk z8q*9`5qGW%FjzE?jf^n0TK0?z!{gED#~g83%`03nixYRMa4s#}}ux$Cg|9>=NnPC45!Wrc!Lc1Ond^ZT*<{a*oWd z@t3$}->EK2f0kT;54axRQJ+&$8mNz`0B{n8D~Af3>^KG(VK|IQ1*KMNll6 zlge;Mr0%OuD;xK0q+wHv5UeV@}+ISCq zZ{7*_Vk7$?lGcxOP{aCM`|Dm&a|UQuwVUW0HmW<_S`St3e7TimOF7+OfK&DV z|DM-Q&SQDb=iSBfIQw1aOP24sjE_ykaDLCF!c{BT3&gj5EmR5(J{tu?dc1)_&T6r~ z=!f5qe^(0xE74DdMx(4KdFHftQg|b04G0lP}`#UvXq^UkmRCoiDAmo{2(i&|+&GAOQdfS%D(I2a;tk*8dilLSJ;p z7PH%pj+sJ_vXY%Ei~ZfS(CYims;S^u^Y` zvAD-{421SOkg4D@AUtRc`4|9)auC`_Fqnolck#zMJcUI;s$2jneCN0d12D3M)b*a? z#M)qgO&`#;Sm%~4fCXr>=)l3esnEIg1qzD~Ej7*zAOHviB(lcmd_AxM0E@XW?uu?v z-HyXB*K%HY+MM}&B z&9yCe*9LNq4@w#TQB?*MgeyjLL?;(^sBW@9Zmf9%14q&+Y7tshlTyjqkVPw7TGq9# zXRRpp^$9N7C9kRPUs>)hzK>7%f7|5i-DywgS(iKL_*FQ6Cx!TU_|@MF*0#meQw5F` zL>9)ag>kkQ#@k(x z=$}YE{auO|-(rz0E^irS-1H0?)K4Ek1RxNhf@`(YbIM!o_5OMO^ECc?jam5viazM% z?BL+Qj2p65xNffnWeV9_;;fJ~x&AJ_B&@4rQskjzy9bEr`9qF_z@ELg$`0iYI^N0n zVfyUZea>aiGdz}I+zC5d`x$(`R41m-gHH_TmWXpzVm$N z6I~Fs&}OpJauX%z<(6#WKRG!hxq4hcs2OkfTxtAC)On3ELaiLVDRCID3=2^1;svb<*) z>Gl19ZuWMwkpvF%$LRIE&$;+$<->EF356~MB0IN}Z;YF$YP%1)w7!Qv*-NKEt6;{! zIS9}g04+-x@(C0NX9o@*L@~48)}`VvYsL(jB;P$UOqz`;l4R5MpKHwJR_gY%#45x>ip3C> z5F~_Bk4ieFB9v65Qi>td#6&ziL_4~@?OViN*Ly`M@i{h0X3dgWs}sTX?(uZXjRL>s z{=TOF`=#izN>{8!TJ7}6Wohf%+;;n139>H}Y9pb+is2$iVG5Yd1Nv@-O(|-H>hC0u z-(>03=oz__)d#x0wa1*uNL}(AZ~nz%qF#&h&u%{ckt>eUlcRMdOhN~3kKSi;uWlMV zG%A;h`Y(A#tm?uX@pGVly*SP6FJ6O=p=R&)ouf++fH}lFN&i@!Z3QZ&=lBHz3J2o)KK6CWo^mzU|acufGNlZb)m9Z9D zvA_W+v|{x!Xvy0E317%^aH~wK&Yf3u@KZ*>0taAS5IKwxhKi~U1HQJC6Z_W?ft#$e ztI_fG%D@6(E~W+=>jC-!x&U_+p#nl4OoDlMP_J6rpU}*{H8WmGb{SE@h1WVsx!qG$ zXk@iSNT8rd5=e@mOUEG}Z-!IqPd{#3c{#oe>~-)d*`JwpR%J)KP;Dd@cTn%>N45&F zVyd7rcVRe$1MGK%2*q->=IqFdH}s{eqD$9Kd;Bj?)7H3LB0L_-*0qHS6ev*;?(q>2 zp+bcb5f1TLxB1DFlbuaSS8Ia|0}Kd?lxTuBT5zt(aJTeQ%(N9HYEYk`&H^wYLq#AA zkRk-YK^PN4WivP_FpIK70JAxynbW9Ztjv;ki%;jxl|AZaW=jotII1RX6v~xXSzc(# zGG8hzZg!$w_U_r~Y0*0IRJg33uV!ZU_;}dCVTAqFX*RM=uB%dkA*!M)+8!V%F~ue- zs<0FS#Z5u0>ll<$VaI^&KlihtZXhETg8){Z|CiB2M?NFzTyGA?dr%R@9E$31uikEy z@y)n+xriT@VqG5q2n3*>n6$F)HDOp`xcaIBA4`IO7%bjUYyno#nnC1QRkE2kQC~L` zrA2f99WB4;SFt@gv@T3>xKS_6kWrgwP2ZekvUqF<_bazCADT>ps^p6PKh@z>929jk zS$GpK2p|)4?G!0(L&yVA2E?(=?hKQ9@-!@@*{5ur=5`ReRGfSPhm$U7A+q0hIN=1N z{PofemjDm|iwbnu&;St`Sr>Y}*`89S8nFYG=H^~qN~xxFw`PI$NKS;4^c=!Xq>ClATv<=0GhtE}WdPq;}G+oKd}6>o6JAvHsM+ zJfHDmB^gfdeIHv*#@cW_SAY(etOZ2oaFX?MXeJU8$r8yjTqJRGX9>Ja*#v|D_a&=nCG;;43jJ5YKc8K^1+uLrr*Wxrn0 z6!^X$T7W@NDs*9+^7dJIfCw%Fz^)&UaNq#mWQzyqY#nR5w37;AQgA0s02H#?{WPfA zk?48OD=d?Zn-Bpi^QQQ`dr#2>?k;IZ{&dqoLaSV0X>hCn5WsLnU335sOmpVpYprmb zagqxC@?(Evx37A7Rw3KZ=j{j73J>_#34^O*?hlTiCe*zhr%+0%la%Q@U ztz8E0p35xN6E=!wqlZR}#-l+BnIsS^GDxU00y4`sl3+|GNV3AoCSf+q{FA(2W+t`x zI@Pnyd>mbpZH(%hnVFkgyhxQPM3g4{8t;ZnO49C`BN*qs7rXe>v1FGX)jD3a_skb2``rD5u92fw%0#YJ50ri+ zoI(%?21vx>E=~{mJ#qG`ZSory$0d6vcWsfw2}-u_Lo(5t54UIkp9?A)BDu5mzN;`4 zJ6TC3zij>1lyr4Uf@6KQMIfC>75S8Cjlk(OJxBLm%wmSdJbjA89`X^D)Ir}MA$QVB z*Z$H_=XvRE3$gK@f1!hCr}z6vO-_G5e1E53@ID$;&ag3|IgG@!GmV~k_9L!5O7625 znuhneuBhMVktY2OTzx*Jg)7O0>@V$LAYpAVHg&UPC1F(X7tig9vTP~e7_&cRr~^vg zK-ZtJH`p8K-u{YQ@Q33Fl_?)!9`&3)%#zaL{t zKd~uThV~CtYL3{jDVPVe0m^{Z zzgipCADFReI$X{F>-unhEw}Lfb(H(;AN6(nbe@O~zR&9PnAtO<7{V}-el{|A{uJ+f zMvAeZ0s&S4D2x~|1Tu9|MfZ!Ma*b5tLP8+#uC#nF4dJQFTX=g`uNS9ZkJI7sX}RZY zghFEWNs~O;-N13d)4Q^Fbne_a04_gT~Z&!_lOFQhy zzAVcMDUE$b>}b^OaE%70Ns@O;)*YSrIn}jz3hLaUsc32?V|u(Nj57*KX3Umd)SDks9@kz`)F|beHjQ`w3R;vM&KAQ0o{Mq201YB z>y8ABZVkYgl_2%zdnyi`T*1Z`GrN_Y{*AWJt>kt{?zTZZ)hZ-_02IbvO4x1eCn{WI;Flg#l{%U zURpR?& zzP3vb)4*iC(}clh`Rrb&)TH)!?Is2rd^C=WaX+HJeb^*uPM9!1)QbX(wQc^`|KF}#ItXg?*Y zx8_w4R0H~{FP=|dGi^=)0wX1F$^&;z3NSt_?w-6K;1dzDc!vZD0vG~7vM)b>E!)Nl ziA!~?TC?W6rr%X~E58Mp##^MDIdq+zCn24~?YK-eCy!OWjP-g{hH-@%JD@@YkS-46 zN~+(nEth6zI$fQfjs0hZ%NpbP+Zm{|m1b;PJkg3|v*+;fJkDlGEU$$7;cBe8D%ok$ zybTlCQJE|>Dozx9d!4?g!qZ3WVY-~Ak(OQ3Oq*_+vn5$S(rmB0;{SK&^|!~1Uw6vQ zT$ryy?6>S@T9-1LS+Lj6XQON0HC;9@g>L&g*n@{>#UEU%&XjU-!RHvGW~|rt>NO1&O@1Op$LDe8t9a z3rfMS+-_KHpyFPrTpibb@xF@gL`o+Ny^?mTbU+~n_s43qXqBADdV>yW)ljNX&E+O> zac#34^7?>?@c@JcR3!BnFR)5tYM{|eK}D3GnikG9T2w@{=h;IfIR1~&v-l- zft6wWWQX=xlOMqn?=pH%q6aC@pZGY#K5IStwL`3S5@FhwCO-7q_{rHVC2IJ(7W-u5M zoZq9ZQ={luuAwn#@jM-dO!*(561r)-4`LCW;?I|-(Ud7!K`wYDf$*?nb5%M7J-FSg zey&=g8#wbWYtv7!4_HQ@+9hi zW5FiD=p_lJJhoqDqX5y{#u!??4egt?SY~9C#3am?D5F0#I!#@C-7!LCe=hH%TQkL2 z#gh!Y0KlL2=+MjN;e#|YJ0!_rYb433dc|l(nYb$q&9T%XMG3`<3Qcr(oh0<=2oZ-lVnsGv@Vk-(4mrKt-0{7g@LGsu$CA6#!SmaRyg853m9aXD2i1(FeHjul4P`6 zjIVpcO4EkQ-y2^Hafz^mJPU3`-g+=AG%zs%84xf+v`>2-<1-I9du`gKsFoYE?>(h< zynM=RSUV|+U4^VaNk`eOtggUfEBud-qfRj=4?&?xwvqtfDOaipH4!S(iSI8q8DARyW9zL%?!Agw(3vtUu@d zg|kjl$~+a$52qi~D~elHgRfEGgZ|wVok@IBM|bzWPd9692K`|O1Rc)7I8QCip!tux z3BYYk6%7AGtQDGb>|c}aitrFE&HfRIoJXu&Fq_(=%HKUT42L1ZnvVc$ZkE!GJ^Q00 zY^c|90E8V{cp;{wF&X}ns_(Sd{Q!i!I{gLLTz5N@=}=io(|SE+`no23sw!KyXGT!l zznt6Csm0;Ju!$HS#Q(CQa$TS1Q%M%_(i--Cgb9pI@c-I;o&WQSw$t*~gm}8+}YU=HVGMLRfBn;YrpDT+k7J}kxvP_VSUn)Y& zL-v-sM6)JKQ(+R!y|>lkp#kFS{9U~IOrEKmEtI2U1NkOQ%S$F@3o9j8O8@|`MOz+5 zzfrqIr?vSS7naW4&imf7r!Kyi4SrwgfAi*ke*O;$@_PS+&$t`WHSKQSZECurs|e0| zWqAxskN^>MBR?bZaia6Pf3x{K5)_{4=$bv&Q-CObmwhO2IO>(u6YB9$Bh%*pujzvZ zPBPXy>Ep>2G&KWDQ1a2^8;~4}N{FlY1{V`}H$-P8H_9w1DhJV^hE!3;->Y2YGZTkK zDoM&ZdVHc4{KM+*;(YCnn0f9j)$FaWS5}rt6VzHuPs;4xMQ$f0OzM)b*#H}`=yT4y zo3V(zo_P&B6>B$CcJi$Q*pI#4P6};38ZsZ)iQ7xQ;Z+{MqDPKnn#b(*TB-7xei0P! zdgi4URmNLrIRo4nzn$D?45Kq}cis<2r`f6MsW#H|WnFCc7jsb-Y)@y;O1*1Z8>#Hn z$uDLnr8TtnppqGS%?jbjU?9r3u^;U>Q}S?0Api&f73EgXbv<8%Pxd8H=DsNOSS(bE zgMNX)2toi3`eyI$!}~o4tM$K(@8&v+m0mz7L>`9ll@VGxP((UOltVb6XmTPQoQQ~J z5fGC+T7tdZ^z(a}nUgo!bw8%aymhwe!15qIxH;e)olvrx|1bXcFr6;zq1)hm5Ovm? zJHH9N*HC~0!kIL$ckaTqXQfltX8&r1cp z=RNqQZw$Ogh0{my?vE5NzORM$Voz8~60`dMcL_iOOQ>vB)`w3R&w@&gn6c$|v)KFp z8H&MOm0jOMUD;KcnXDwA2Bql8yC41k3;U|zl3HCR-SHWf6DF|T$>U{ z*P-7Zi}yP;X_t2UiY&D~L}`1o0;!iWl%h@kIa}hs_Q}*GtW1VxeW{Z&$2#SYInrf< z@|bHzcW3rqmd5J@%lJ@*AZTL7DBxs$STWpD-Sl?=CB^^?ijTs3Z$LM;>(}+YAU5o@ z2@#J(K_j>~C5LX#87SUCNP#CJ1EP}^5j8Q&gEo|w5dG~3!MV-XL--;7SpDEonbhBy zxz@T4xp?kBN}KCqx)cRA&(yqh3Z4+;VVeelYWY>oJ-AatC6fEzu;MLCJ5i6RFgl9t zU$=J#YrZ9oDtz2*PfLjV|7bMZ7Oj(qw0{=US*g5D3yN)QnG??tABVo7q-5bIG*9Kb zp6UtdH59OquJgae53#-O-&3jJdAL2|$0|1!)YnkRpLO|et=Ze_&RjUFIn^>uhC@Sd z?BFJoIj;3#C=;q%Y-PVP-C0l?G+@vgFl;+8;K8E@2W5tOBgH-J03bktITnkvAp1_g zSC;m^)g<2^u}Qw&AQZAp4RI@FGE4Yi#{l?-X#P$*plDrD_)8kSp(|6+#=er)^29g% zKeszNsSpP+lc4QDa6oN8pQkfbvc=D(qR{<3?Tagmx$xbmJ@MKwoB_2C4inrlx?R=h zC+PY-;3M-{c<<9~Yp{`p!kk_As;lBCX7$0w1qTH|Gs4OY$$>Hp~J{Q}36sAne{aSOj&EKm!^Il)}dk?+xJ}15S#Mbta z2B6blT{j5a1%Q@DTxApi!@2mlRR4GqX?Kr6){eY(|?Kg}1TaIxGiBSWK8 z=r-mVch4q^jF-WELlLMyodCi>J-^y3L0%egpTEo@ZDZlW-?9smIRzC81Q{OTk^V^N z`tXnCnURm=a^`%4`Mw5Gh#7b#kNt;s?ki%+O{5G!MzWDdM7@gUlS6^7IV&Ht9f^I( zO4CqB976iT^-LwBH>npLwwXM<)=(PAiEJhgTw9HHYdMKJ#S$D{d&u3V9^~xgPgl_U z?prFMKskRZvV3bYRZY<%K9qtym{z^#-A8}i`TF1UI6&XIypvxhFx+0yYhl*A-@oW62LG*00BMi@`q-0!hnMhcp;{kFWsH= zSO7u*69#8^Z)syOk%}c3ncI_$AILV1KB=B@igl>w92or;!LXcXs#%fES#)8c6*90Y z98?U=ip`~^qXD71e1URwND%KxBYk*dWt)t-pB#eU+p)jFf9!ty4}aKFz3fkKi=9GO6tp~pVi2}lv#U7jEx%Qe0}H$%36OV z_f2CNOmW5OGkWT8F=Hj?5i<~ulB=AtAfx~&;0a)79bCQDilJH0PjvB(0o8!>fahF3 zKlJHLttm=Y`Cfm6>bnlJ+WmS@p(()e-<3bX!ljA;EIl$6;$B%2?0={uHi23})L?zGHB!mtqivDE;5FN`zbX z3icfvU4;T~%;FPo@gO>XVSI(Dwrs1?KOcY`2MnUO-qJ;5%lLIuF!D?e5~KWv3f0m! z2Fm-Ners4eK{qn?=D){}c?D5$lk{vu$nl3~WtQZC0DwXvMstn;W6x=4C*Q{HNt<`k z3Sca$_hA2@V22;+V{FzA8`u9zK__jA^Ef5$%q;k-Xf1 zfCK;$U74&iqp)3t01-=L(kXH5yS!nP`W)CTu*7%__#iHKF(XG+?M0c;CO21 zcjWe#ObmLpcyy;yM8;# zP&=GP%xTGA^c912Es@+Vs{lYD0zDB0b;YS#VHaf5Ik5(k4T=JifaCx`D5g(HbXToM zMjpZ(t=Mu9LH{igMA;KCb`(0E8LkGx$g z*{C10FA#(v5UApKu$U|{+0}kX#l)Z?2m$`>fm!4jYq;y}JT}z@f(;hlOjkmNfI<)e z1l1*$HD?*Bj+>ME>lcaU+ZgYrd%q0BhECp8t~#KEAq6FQ{WFS&YV!G$QYvRaywE;D zXaI&VJ}omQa+CrP0;hrlegTjj7E07<^F_-U{!2mDZ?c6s$DJpKC5la`a@@60M~lE8 z02A!wFyH{cJkpkc9;(ZKFaWSLGx`7IKb%w7Eu$NJ5#RuUBhT^HY;)GLO4`4sV8EO9 zK!Bso-T;x(_MQ@0`~_UB0rdNsOeYL%^$>~wwQn&e?(Y=<348^M;mu9~60!wn=6N_3 zJ|>s+@Gq6>{qCIwI^PP+8Z_H^Ri{exac-0CN2vDUcUsq0>DOEQCQk82TrVw87+;s% zpmgJl$7d@XOnlZJJA2t|pDcDrU>VrBTi5hc8#Y?bradmM%(+4j`^kG`(fA^tdCD>KaP*`pf*Z?8|j|6$dS?-&(uLpKHi7T6Z61t1SEI zFo+{e)nT4f&kTbRLR(zbxl%IAi#{wAn1)4Svb(<1x7$g}8Kmunnr?!eeTg&>Wx*xE!xp z^=vG5Y%rxCSGMrM`?;-u`USJ!CwFns_0KoZqwC-AP`LtFPZA( zx&aJu5&v4B9))5oKFTmRb`d_>%r$_wln*Vyk6D6cA+>@jXW>) zp~&eUwt9appu=5jvK7e6)qjb-S-$JmqJ}RdzskR1+7E-BK`el}ulx(?4@O zu!hp;x-)3-N3Q{Sl&eB-d~3dqkvpE}tammP?yjFx_^vpmy9dhkZP2F}@>`0x7Q+xZ zYQLn+&D>xAKzb=ozbKCH{=ZG;6Uf%oJESs9g_#_fLoc-XA%40y#K@|(4QLS$&TBOs zgQ3bpbVHYKEnJ29M&tYz+~1+p+$56>lNn_Dr#AD((xgTR-uR55zm_@>U~+phd{=}0 z2G~|~`K0l81@)og1ERip{YDh-z(C|Oo5N?3D&RLja9}!FEdRFP`!=2EnG40spRQ>T zp45VohvD(V#HFT8mSRtDqM!gK9)!Y`z&WA-383+yse&G`p^yOupuhnIz+z-B27PB} zW7lcT)L&;NAd|#9o}09LmEl6$6MtJk3?LvAMF^PF(BQp~^T_n8T~|B^*Q~q3!;AfW za41IEv@bt&-lxUqH2h~QJXC|dM8DOAQd*1g?l=oRbNr72g+qSgV?m`gBJL^#tMamQ z|H<`=T|}e}ZOE^=bpIhf9zb9r1^MR8`N;Lo3{P(lj`MS^&9bQVKgG=HZ<$l!!Qfkh zVWCAO8Aya70rQrCGVEFql>0z&?5D^aaW6p_9Kdn-1WBlBYU&@E_kR4MU?67v$xydw z7aaTG>G@Tbz4L&8g{)_xMh5H?Ip-)!~uuAlN^%Y7VX23kW`+VD>}!T7io4&SLSo~yg+F-g-=-}j$cYW zAa8&n{TZGnjUL`C+6%gM}V>U!9|hKS`C8y7+4?3A2t01*~T>D5C}hS;mRnx z{;`)QpqMDj&Gi>^2xqI?&B2a1BO-p~A4GeaGkiQP;INj_^#`UkXMlK{`$hL)Gy*9r zdj2BT1-0mR!0hK~j-8BZm{vhN(n#6s-*R;c=ig$i_5E0gMbVn2orqjg!1{2fgS4>z z9}u4FA{(GJ4aD#;4Y$Vr4N*Pvy13WaMI zKyVU3O?Y`s9Z-?qY=;a`_5z03ZyLe2p(P9d)ysf;zUVeVA0QY&nVbkVF)cy>5C~nn_Ciz8mYL7}$%T4Ax#r;sj*K5q zMB{hy9KXu78DjzR3sAxKfo^sjov;|wd8STV^T^dsFXSvjm@^mg*PQ`-TtBDXzvXEU z(V!WRj}!4}iR25M&C&7!$PRDls8Xwg5-2L&dO-8K485!EIz=$HO)>Kh6F$Nz8T=@Q$_`U5Yf2@G!MZ50>l?m)Afi4!Dqqi+-m|` zz%++jO$_TG$*Q8ccMGfvB1R7C0Cq6K-MpNBY{QwS1zyEbE#M&?0X0*GAXL0y6jQP< zX5&wXx*YI6m=3T9x$o@$L8&GEv%kGt?f!D*r=yltM2Bz##u%TzNR)w*^G--lXre`o3 zk9=sLQ|zpcDY*_4Aomy^kiWE934o;vqyWAQ4VO40BA{Rar~v=vGTj6A5QEVVcxM99 zbx$sNVH7ZUtRaH@tJ%A-VihMnKRPgBg!WtTQM-=CmJtF!h#KQSm>a`{1_0yOJ`*Rv z5Cejq*}!}ptAfF}`nEED1rQQ|zPLU+9e!%*Et^Ch%fQ?V_2;lRmPpqERtsJbrr;0r zh#DLk*hYaYc_s0vnL~yUq}EG7bkb*iWFs3gNFZ1fc#O;8QxjUiqWxudFHr7e>l} z;5?-So$ybEh8qlvhrgfknxq}if@P&#kD~b8wi9FRf}6cjSUiR&S77VJemXc3prLpZ z#y;>twpRiqkoYq6rbt$B@Bw@{1K2HyxWI^?sXp=6?EZfqn$S2=w!_copmSFO040Z8 zJ4*Nq)Kx*`9)osne3y!78aN4zcarc(Oe`=j-3N}P4G*A{J<5C?Lei!1F{tyw`B*DI z$=N;cKcY9#RYpD-*en-jJUcOH7Xc&Sm0$xS%O@64UULcled|)HpK`z+w;e5C;N+gJ zJ!1>jd}mdO$92LFg>U5V`%QO_52^A1;Xrg>SX#Ot7cnkp3;7Y0Uz5HK^*SWJNKAOp z0TVSB1ph?-N|(@cy_WX8TN*@J@0?&+Iw9NJJM zlMf^SfI>djWX*n@-OpQju7ZFAme{1 z&}wG={x+6*L=z{*b+U-BgIu8J3<9V#MM23zqE?|pc>p29b~s$(0E=F)m_L(0&Ee=( zIE(6vc~sf|6CpYPCokPez(R?_ay8jOR4|=KS2Gim^0HV=rsH4T+xV_m>&N6cDnP;I zKV33{r`7qv=JyeipB&YDj)4Fd^!2@2wwhh+>CRn+IB&vFXJdHd{XaX3o$WucK&}db zJgb!9lv+cGvt54IF~(sFF$^qnS^PG-%8}=TDZNynKp_E?676qARXzzA7h2#wP$l-| z8O}@f1QGpT52(p%jBLsrrm@i^#!ZgOH`tiZ%dU*7$glt`Z~zuS01A{3uyJHC2&VqK zqtt(9{wuhQ{(fy8Uo%;f5+)PyQrzxa8)g#}47|mL+ui^QA&}S8A-m<#zwbUP^nN)z zHPAucOWz$PyT)?&Zc_IRzyL%Ola+^W`}wS(MGwFYdmn_s@pONwT<#A3t#(+!AT^9??;xRsd8di}{OHZcnvHkdbr63Rk00aOb10)~- zr&nw?eR9cxvP^@QcKzqD%qiU^3x8XKi~Vz4TG8DPOBRH`RCy!Gr~(iO1f5)qW=?f) zOtxzjIMQ469_yv$q4#rPF46xC4zx5)=*I_8<&+P7qKt%|Tz{049lKC_b)O?3XV6&P zYVB>chGgnrwhsmd?9j!J~Nw zjdL0|z<@NQds^as0gYuZH{g!N^c^=|YPxwR5*`%WC{1}Rc4&%~X9**&Nheb}yHd)3 zkB0@)UpS{s-v?aH`fcCYgPV1o`Z?b;)ZHLxuKK4)HGOC8mD2zLTmT7R00d8>=&nx# z!LM>jGfb%t9NT~aF_lY1pMKHHzyMHf*%DB#4-sC{%3Xc{01$)#9Dg}F^cHBvzd+_2 zFbYF5A;19$x1ZxZ3!^80Ha_m%2fmKI)BRI(J@vQ+Tv&s^0Rgmep9e$fiq*0J1V93r zUc;D6mu*z2AGUDx|Jc+2Wa_FcAOH}7mvJGOe`Nvh-`Y_7(eHN7WjQUo{(8T`V0wTj zEkBL+m;Bz;V=wnYaNO6-TW=&N+UeD5n5qS+%LNz(2D>U)Bps_ zT&e(36PQNcsTZ_@{)^%%>a@LM7xnG7CEg(TYkqi@+v#v0#VgkRbJhS5iPIl9f1I}R z-Bv14YynuphvYt>dViU-;z>uo4@d|EAmdjA)py-2?}OH0?AgE0^<3yV4wy^X`d)EA zcYYdB(ud#~z)tusHeZX-|7%+h0?Ulye4EzCXT{-Zg5(ef8VEpop#cE^NEx7jfPjGK z@&1)tQ~LOyJ^Q2JZ9gp;{N{hD&(j0V%W~h(+wx9pspF56 z^k;tNRpoF`PIkQ>0RV+mXr5DUx%w@gQ-3n-Yi@Ey9Q?}mGc>#ws#C~z zUQL%g+pMn#t#Xg}LRm?lJ?+vghuMatT`K5yu2UO#7&M1L24AA#mDPen)9G@jyiZ>S z?Aat2v5MqggKD4Uxe?S0K-~#gi0Ey$&V2pb4%mik*wseZ!5Isvk`u-~=n7S@F{9N6r`d|QbPXIVmJ0h}5MOpdX`6c^lv{wQ4 z2?Jos00+bYPWOngoC094-IzA96o5CN>h68`{pTgT0YVc+0161eD~kaBFSGESc#4=t zu4o!b==&$I2?as#J)R z@b3p+d;kIvVU?#jx|g#o#}Qcm)|@7}5MeTGX^_4+j64O+|IN~reWEWhw%p&LdR)p@ zM7Chfb+WJZmk}nnnqRqOP>e?FL;B6EvwX^nG^kRA=Irz=002&a03=WWQsmy4FefMv zbY5ca%4KNXVq!M>WA&pXIt!nINcGix9cTcQaMSDl6q6tTA{qN=)?+zl|8zC6;Z6YV z2EZD?fC)kY9M-rKXT)89UDaxm_w08wIf~|cto*e0UI!)7bn#d4>tTasf1pX89MNh= zImOl2Ovh9H9(@L!nudc$^#n>TL~bggUa^L4cdzyJHbqU60RRHK9R~BbIelOy>=E8o zzpqbyYRe{`677inJuyM6f`4F^UfTP@_6B#a*j4w{tOt32DFChlNCKUJG{6u80RdD5 zvz34-gn&#i9+$bu>42d)DllvGU}67Jzzw+87=n*p3Ljr<&UybrUvRkGDjedEY$AOR z6Y?O--wT(myI>W{rBMY__-t4Cxf6Qjb(7J>=PTjF20uH~$hlq%{f^>7)uF}xi;*WD z-xXUnFX#7nSnN(1-(R{=9l@hT<7dnlv!(d2x$df#)L$Ue;9gMEuh-PA*Y{$&Zp8YKNzz%R*Eo*=a$%jX`<{)1@~ja zL*gFHP;}W_lJv;dPGN5Qdgo{G_1x9hvf^zxFLr{9?5}x!*0S;K?&s7}&iNE-r+5yX z5GM8zrTWFxeg1$Cf&=IS>HfbLdtBrzwr$s;(bYaWxH!C*-&MOG-%!%ogYx`G<|R>; z^Mn8(0019QiDHF7wZ8Xq7*&7@-j!tb<{n3}kZ%pS$V(fU7-Q7Nl+x^eha-SHc2y`w zMdtYlI{$q|2Z{pmnNl9uwa8`4?3C(NF~4gi@|4m%Z7SZGe`;Ybx!Yf!?Qd4jTznup z@wPz0eP947^0i$if9b9QMKK8&2m~NDBcePAK>&aQMN7j=@4Vd@6WEIkmonQepNH zPi~iU9&ZWYFaAf6!d>)KAH1Gd+L&)H-FU-06rc8noP z3M%e(00MKohb~Q0O@DehX^Qa0J*M=rB`B!{m(DFn|Ki{6mV(NAi&yj3QuL_Ih(gz| zY5KQP>N_qX(vsI|HL~Q9WD;dwCPIV@x)zl5w_AV!8w7xv_hCQYKTqI-P>7@+PpWiO zAd>~X^O!&0)o8>=Q~BVkhEwwf{l9LQinP>W)eY?-D^8?evj2X3>?ZzTgz@fQS!!9? zZ2MbYuO`2AW~jVVy+-{3#g8v0+ZK^gpGH5U-#KSaQ)wZ9>&-yKHx#^J-hVLL5b0@8 zAJkcU%PH+p4v*i9ly<}%jB-6oc2Xxoo3=aw`!cmRYdA_TfBXLIepfv|YLBI{PFAd( zq+6~nQ%g1JjQX0X*fov2R59D*{;*}1B-m8@`xe&zTB-XQVTNtz{_0rrf9t<>B3&Pu zVL>!^COKI}0+QA zhvIKY*s%4;du}4T$7itq=NWeOO-V=6{IhsIN9Vf!9SzdqxdBUgTs~k-$B9d^@`O_5s4V@3 ztEBidoOb?EAYN=kPx3AJxG=#XVB7I$nB0`V5w6IVRW(KPT7+G?Ve^k_>69&bhk!sK zC)@pC7NV#9T~sn;ih}(DfQ{{rVQvh8a9B%DT>I(|Zt!Uo#Oa!X8511mkWyra?taP{ z?#rnBF+Zixn)CaPsLojZycL&M!1C0w&3k$f5o|z$FPVJnex5p-xgjf#x1dy351H}o zc}r~Okb6?KsFvQ`C*pRgN8h*4Ji6(G)2$8hYGpt}rFi&yCP&AyEV_F?kHnP9GdS)B zlnPO?v;Cg#IhBa<)YGBl3t8fQA}H420_+3m>&|)USEOiR005>y1nK|+T?32vlJG?@ zCT!sRTwU{tZVWZ|eMW^YWLVu;HzS|{ULA0iIb47Wjtw&Z)ZsHw&#u4e<|U%5A?T>J z5nQ0uDicqiPZ~JQLa%>QYS1hQObok~w37e2toQFZP1T7y7w#Pbsxm4JujiEoR84Vg zoYtkrar{qv?Cx5FIw?w4c!VJU2)oPXTV45+M}W9P<600?4|HL6*u)Y5j0cXUS`k6e zHpmU|U;rxygm8KQt~&rW={e>{*Y&RhR~(oElN>WL=!5;%`=fIQlsqW9qVR$+aUX!n z%O~lN=*R(2P>~QiOBg0}fpvf>Smi9fFp6Auc$%+2pXW*-!chWYU|v)hfH?vIAolv3 z*>%?e-FI>>fC9EgWjrJ^Jo40A$fv>jSEUl~i%`D~#ZNj> zZcwC!YPR4f;@~FDVl36G^jb;zKC%nH(ziF`5+i=b1ZJm%r+mvNzOGiXZKn*zJ=9u5 znZ#bUc`_{W?^so586o81vFn&?ZCU$bbUx)~8yaX;O11qyG3ecGMVU33ix#rduc+ac zS&&>rWe!~}DD}IUDJZhPx_foAX#UT8>_()Vt2uVXk$ye`5CDXXMbf^w!n~n}Y_sY| z|7i^OXnHV=->(&O?a`}CQs!0!K}IScWyl?+5VTgJ{}qpx*d6whT&Vr30^r%tXSE-| z02i&e4zXR7QR%-BU;;1z0V#k0qieIAxm@hHIppw5hb=*U*V((~AgMHf0EuImr&rpu z@$7tdR1K)lY2YD!t10SWisUIZoL4>VDRW+~#&a0)i8W$?SJWm6>)x!!c+AGUz z(|l_e5x3;01Q7U5Wu}nmkcYjWDWVY&!_Ev>Bf85%_wHg6=d3^=0N7@i?<$}re5jB< z;|Kms^;^NMO^N~m2nx1HUAIa+%!7rLr`ERHCVPgIrsi-e5!zvDi9VlHaKXsavwhEy z7$6RZ0K%ooc#Q4ePQewOk@j&Ost1UBw=&ZuNh4v{wOGX^a~j<-;&PuTnufrjIdc^w zoL;XA|9h363TI@JYdW~0xe)PjdGe>L;%fDuobH^vl8oL(1oZhvRLn>=4?V<-G}hf-G!zdD-f6SPpWGqD()4>=og{&XE3Bj+`+bPMqy9AatCEg{ z*Q|!kohUglV9G}2e?6F88SWn{kk7i4Eo0p$o*j7{ETuFF$)pB9&CRBh{@$F3*Z^8MrDx_+hslwsKdL!i(EShq3PCJ?E77^o z?bKG$lj3{RVwxuE{N$)RxM`q>Z0O^N)yIC!7eqT61Hj1N^e*X?nzeL+cEH1~@qA2|)rjOJ5{rz5;XCJJj3sBKc?iK5dF*MAGTetXl?GYF% znr02wJ9b@g+(K{~G-{)@wa&b=GLmw)*bu;Zyir6AJ`|$7TN0LC&LYoC^&P@o2k0gs$;=-Pq zw4j6_FXk`j(YXL1&GiXu#cH2kBIph}`{L+wS4&*ojz9MEI}EM|9aj6g4*dTtH49d+ zfd&i+0>dw4Yuxi5RPu@DX8>lI01Gu_F&1s<6_q09Ee8>}8tm$GLG$q*mmL5L17CQ` zlX*LO?Tt@X!0EW@($VHTiJXckW@kpBpqEKE&s2m3EpMa|APleAX&vIc8gPSwB1xhCkJ~vwG8hL#CS)LR5ZaWFR~vDeS?OyI$3Q$A2Tu3h)30tlX02IlT7UmFaR&;S(@21m9h@bv=wms>T{1-!^w22#kK47eFtSf*-vu3( zQH{x?RZ=c)yZ4=fCH|l4`X^oz_LeEt(?B9Dg1{`p>M#P}&VhlUCZ_+KIM4E}KT6I1 zQ!O$plld^a;252OFSvh%L498Jb&p4g^MI|sOdu}{9o^9WTq#*`{S z`3mTt<_SBbhe!Nm0f}5xhsi{|qdmu>=-3~n)$5p~ea~b|o-xfHolt4){b<`26^B}N_cD*u)1!1P$&M6S4bw! zG6)K1|0ngttd-uaBj<}X_A;Ag1}I^Cr8qvRR1WcWYdq(O3G9aCp$BZ!i=nyc+*l8L zZ-yxR%&F-=w(@o>_sHO3^Xix&?|JclujQIB@oklR;ZNP~F_YF1Z#CUB3{$f z&;Xi%085|ZVoS)Cl)lL`MR?6x3R`=^^EN(MjHm^W0VEfh{@)SDbHN3c+Dgjo?&tso zCCm9hbGS&{?d@k3TK=dA01W^H9%fz5ZvM@#S`@mASvhj%XxeUP`^Wu#|G9hIalDN` z+sSLI-(EY0@s1njpx7N9x`19h*T@gx3N&8O82}Xhzl<--Jy-)b!Poa(dOs{851Ke;J!XRvqL#9aUAF(qCOyM4$S| z5KU`42I`UN@5fBTq6?vb(dyYcVRk6z#@1$$D{-%%p=qrL%9X@#er6?GbiMXb+n$zf!|Z%`vhb@Q^5W z@VtLb+xOq*GQYuen@o*nz20gBK){Hk_l;+xw*1?hpCSWN4#WUb&*(cPwwykBc00H~!PZR$)}x*uy5f=+q1s7{I^I)u5Yp6V0jl2@zHiR?INF%t z?3lVW5Srn#E9`~(020=>CI3HRa+c3p6MThjEleGg|qHO!BESJpgRKEz2s}+Jwt*g zl%|GgyzLeJa@(#oPyjb?{PgN~HVsl6kAE4NP9cj~4rlzFB1Kc2tXldi~taTLIwiIsb%V- z#y^21N;kf{Lpklw(aZAH(3yU?ds6elITmZzc_E}C@7v3<`Xht-$UGZy5@n;hyiO@L z@z7}y%5|Kr=by0i1jYHP^)@eqd$;q$CBH|jnwaJ7iFf|3RIVvCh0Y`G`X3zPlXn_% z#z`+j=eLe#-#cYX3cs&OtEgWB-K+ot7yvC`01*2Y2<(lZ)YreT6%bF4uSxML9=9m> z-4pV(Dw2E$Vh{ko$9aRFc|gXFM2I8+6_5Z5;PcvZ52@{f`Rx_h7Jz^RVG%z=(736H z|ALw$ZryU~7{3Ivl9@?*O2e2f>{P2VEyKb+bHKa zAQbsd4CL;*jMt1HFahkWG94;hrC5z?p7jxb;|V41tkvm`UFO-)Z2RjyI8-ok|AeS8 z0RRBO0E7S%C|NJHh*|q#uChM*=2t7-Xb=bhBoBP_yg#+0o}e!6@>?<^ct_#v2Ik-gUc0dEmC|>U6h$9ru&XVHQ%Nia%ccRAqg|yeEgt-p7qd0G+dla z6$+#(i_ma3KKqULxW0!?UbOX;LZ8N8g5Tr43sv`PpPr!9bo9D=)}ye}kv*xgd6;iA z+wVYo&>e6)ew)m;&i*>TzN$<`H<>%fCF||9+HT%&w@2RlHj3s7Zy`IllSmKsSnSU;npS|1lReoP(Fz8VrCKQmOQA+P9B8`9_aZCX{dJZzE|mly z>qLpS*c1IG2E!l8dgaO1v>}pG2tLvD>Ah29CTO3G!?6K`iMoP(r1}fNq1H{-vNH0#E=5hyY$Lau5e`(rk^1 z0$$E0BaTUVP8JGjpzJ~lL>fNvkHyo$b?UFycvM!$!u;e*L;wjWKp+r=2(K`O>p8t2 z5e<(R0D|ZMKrjG6868=?SbE*Y@9Lc$2`~i)cUmpKF_CIx_r_e|NBhWms^}(LvX`UG z-)lNgBjVC;bhZFYcs+;-Tld7VV7SjG5qsxBE@ICHY$X@2k%Ym(v;aU^r=`z)q|qz^ zx1eeX^mFxE!{7l{)=MVX0mk3unqo5QO@qXN~)1GFO6NZBP3kh%-4#pr8(d)gHZY7`GdV-${fZsmSjK|kXlV0`+2O(?Q&HdEB8L?jr00g z1=}7~;SUf96F@*A0^AbHA$>toOvm4ssb!6<&)Der9EZW-22d}cIFRWAK>R`i0s;a8 z0s;UO(mJXH(sbW>E$Nw-+e+L-IuwglBz5fhg)*QY`Zah>X=8lltx>?he0EN@K`-`U z=bjMX?fa%kWh?%V=K2FZw=(%vgsqLR1sm`Mb=!Q?axc~oo%7E5`^thYl6Ij~Q``>R zY{9d32GfxWu4NCyPZ`0wZ1|~fSHA+$Im5ZGGMk~;s{9mp&`O^_e6eSP=t`#0osZa<5^Z){k01*%Owc(clVSCF5 z=t)Q$HSqvtd`N_HRX$!*G&+#e^hOb}Fc>|@^1%RiNP%xIUqAp{Uy{V%uCF7RWVOnX zP$n624MjY9d$Wg!{jCFd0Ehr+OMoN*5&#B>0D$*Xv2QnZ{6JZG9kqihQ~`{Iowe2d z^<^j4eq6QWEr1|by`Rc)UzV3mIw{?2uO~a|99I6{`bQkf z7WOKfRdel2KR&MyWdxMP$g?oRo{tRq#SFpEgyVqlKOz7Y#p;F$wIF1 zzF(RyC7$Y)kN^ZA@sfhl6#A@%8SmZ#N*M8M5~P_ zB5C}LkR)SX@@PLr$PHn`Nz;lp1|@jq=)!z}W3)S@bfwniXG_~y z0JqwA8~Bgiq}FHX`2BFINzktjD|q_7YUq2-}>Mh>-x$ z2{#-E3J21L&_#2vyY_al*`$SidFHg|Ob2V1pf4wgy|BIyPn0M;Jie|TZB3?t|9fCF z8tkp-7u#hn0@=QMJ#)$q&>utTlg$HAa~fNuz#H}vDkq}hMwfg70SFsM?OF(ch2M4h zPJZvun5*;|ZT}srY&kLDf!@vT^5io8pZ8)fk%Ru6=PzudVBvj$Eri87u^M-BkrIy+Kkc?}N5%Zga99uCY8)Hxp#?0UCvls+8`#IPhGa}d~Q=kg!%HeJy*q=sn4Z0!s$g`bYw^t zQsX|xvv`}~`G8%xtIeL{*lf1`6@l6mL;vWCI6wmi2m!srT|&K;UoMu)gM4YLwWhR5o-+4f2`~@{LBRM_ zX+1}u>|K+>LurKPbI+iPOC;nxpY`4=nZ2j+gFatk1~C>P8N<0b`^S-J@p=j0KStsn z72l~Gmb3lO_G$I((3Qq`TGk{Q;~vIV`1;J|7U|3=o<&mMo6b9x9k0N~54WKMFN;0d znMt@Vk5Cu@0|p2K6TRle=74aO5q_hU$9|r71=$TBzJZY-HBIdDo~EgJ|L+6_k$j3R zETp{Y$X$(%b+R$O>{AmPwVXw(pf6OM^nY=yZ;UbT`}XX8MM#Q@XDuRn7dvREd}w*E zZ_t~K0*Rw}gmG*MgyUxo1!_$k_Y(nwwTegZm4?n_n>JgcpTzr^01G$(P5=NeO&A5r z%6G0e6z@UP@Z-kM0_AI8I;+bHz|?pEA&15jPVqR;&LcXW&*`%)ww?aAhs)H9kc`w*T!4 zAdTrd6hnkJUUs|K01!jBfn6=LcW!b8L^|3l$ZEzNnA#rE6muG;+Fjmn4?{+U~|v2BcyOiwEHd{gxSKn#fSXH^v8pB^g-g#PA>j1 z+`cKmXAP(!8-2N=e-BlzsWU^$V%=Q_8BD< zd#0P*>wl?+T{AX(FM6=cce|sbnF0IEZ^kJZw-BQ375t_4;y7cYu2$+Z-Ztv9t@t|} zwg+r=)gNMsN%7S%VE7_tz<Yi1>Pd)0hk-~2S_4pARl_m3z5T8PC3P&3WYMizh4H+E2AbNw0*a86n z1K?*!;+{_sfCgU0p}k*u+N1;m5I}#LFT43(j1xKZHQQeEr=y}O+i z#OgdEKlG^ZeS?ZwHxI z=WRa}cuG;L50vbonXB|h`N&mcberjtK7D%Hw8Z(GNIc`uX^*oYqjm59edan_j~~Eq zwAfzFKM=Z(av!fg;&%=jfuK^ty3Z+D}r;(<&)cLyL9*7#)+Uz{#lG(&jeLi+JqiOtP@yh!fc&&C8-~y=I8{2(~ zxdBc=uBmR@A#cJ-d*5Gqb`|D`bH2JrBAZ;FHZ6sFtH=`c6?X<_W$E4fz(64b zp^p$|6#lv&FRik^OwZ!hWaeye{5=bGH-x6SNWhf0`uoFD>-3?tmX&2CinXixV+cYQ zdgXcDwA+q;V3+sUw=)>KmNP2KR%eY?7;VNXraH)Mo?SolK`|see-M%= zj|i4mJHs+X;?qdLoPA|b9MSjX4DJj;f@=safe;)9cXtR9+}&+(OOW8s;10pvEy07k zYjAhi`R%{9c57=t?C#X7e$!pm{pIzmzW3a7&mrYv?k^+lkA;yZ<;_+Zgdn44SusW@ ztiJ(hB>))!KIfccYuGP$1dGYh^H^<;f~U@XFF_m>k-rb3Wp6_ltsCI)D1gLnDr`+6 zFBgUd?XNn^9NQaki#q{!(rg zc!IWPpSo7JiMOV97WPk1lf?4NAC9>>^#J}$y1)EHNPleGTY7QmN*%6C-MA@&|4CC^ zhG!>(ea0@jygtxy5Gi>BJQk_WKfQmKbz~qzd0=$H%d{l?`|vL7cbC}gvC0cJiJ>7X zTJIfBz$ee&+g?0{?wFd=!}WYiQNu3Njz|QBJkG z(FIo?Z)2fJDow{lN=ap*m~ zyXA@_X-Af1nykVkUg_|9!YuU45iL$qBssUiuNwI`5*NXz7XRD}Q@-9t-aV_nkWcwF zD`77ijGQZmLq}t@wA%d5ZoPJLsM=fS%w+D}1C$UyVvVLb*GEgZvCv|T0#P*XgvBg- zByS|lE0EJ}B=sa{%T>apO#b8GOrMjg@r_^N5z|*;5&6aRBohkpAAKM@T&BB;R-qKH zc|)mcgT6nI9nr*lGwboQ>f{GCE?RFkti-~qtHxD1z9PiSY!CXfHyJ#d(_NRJXas{D zS*Y}ie@Kz5M|TeBPr0_~%vitxg$+2ubtm5|@3?8dDdDg|Gt&?0o|EzOeqQ0*QNjBY z%5i)1d@NVdQ)VCY3<3~4O;q%_8mrA`L873-CTwvG0%8@pgE_vVz*N*zVdR!OF->Qh z*PKuqW_ZbQBB8Vgnk=ebZ%LnHv+}^8p6X(@O_;Pk_#X`DqDlxaQOZ&`%uGAwRP~75 za-+5|U)5`^Nljp|GBEVp>Sxy6Rb5_8;V$|$e*BtQB@zrVEcwX_M(Rv6{l%oUu_*O1 z2tE6b=Y^im+Y9g^HvkT#sq<*@)~tr*Ke;xM6|(6>NkUm=Iyx2|xUb#A6dR*a;TxR( zQ$s1#t>#!P>pEt;8GXfx*%s}5G(!J*0n*nPHU3iHV(;t9`0ZYa9OQ+6x-UE0*`Vy; zFte*;IDxdj5d6Dx_^}(4{e@c2^3*{=RKbH)%`NSCcn=lz0BEC(+M4TuT_y!Q1DLLs(IXrvga zA!M%&fO`R;4N+!KreD~b)>DZ(hIPYbv>L#zU8~P>t@Qk+$Mv8?b`O0QSWWc%X#jjg#uL*ZY6}sPnYm6bR%3nT* zM_L&>cCoRqj=Uc5ehx>?GuA0%l{6f=bv;xgbM1&WhRLADTH+|mw5ETVnf2Y(dqf?( zgPeP`p3vg=08j!P)$bWPI(?B!ut5Dz5H?4V^NaU}xb|9~`#P)x0F0- zODVb!fh9yFkV-5#P@q?=B$KIA}lEl$0t~vaeVBKn|*PhEl9LvhorFH|PUiCmID=BHy%ibB9@cJPGy8pafrf+<(J{<5ev0;^zygSb#Ekg_R z5nn|J1Oi{WN%!SNzsC!$_V#huxGbxYnHi>9}l#IphRpUA|x>28weC& zM2H0Z9|v$C3NV21|8IZ-P(+m3WYGfA&;qH0pc;@)x$B$*E2GdHWpy+#BOX3{Ablb} zd{U(e9RuJ5&QSuqDuRQ;hya8GW55I0VQzrz@PO|B`U_$Jz|LV;VHW_f%m1$@a3BQg z68uR*6?Lpj9Y7)_po*Rm;jn1V=LO-kFDiL|!998Nv7`;g2MkA+?olsa`+1}6zC9C@ zO*Ggk%eBXGU{ZoNf3>j;IFtt?WXl>X3Ub=Q>t?D^mTB47ANaOG)>`}VXc;(^>PLSs%)fO3`-`J5f^ zep0(=sjuy&1P8GfT}U&g(-6%x|GVSHHwF?fv!HR0Z%Bz)EpUSsrvONj3t<6I40xpC zU*yewe%JY!Sc#WFj=;BPoe#g6aZx5LWfZC`>L>lfRTwf4lb+~>3^6TQILNqGJ z*gt?EN-4kgU$R2hDT1y!A+)jCAW4Y6dgsYW+G&nU*V0qlj|j>+|BPQ~y76jk85uX$k}8*3&~JHx;teMXR*+yPWhI_|8hwtsFVk z9eOnb#hAL6V{Ju0Wvjg8uX(lOX)A@JXNbNmeD@c;m&&V)e5^C&v$wRg_c{4$l`4!G zLpyQfTDI%`wg-vL+^U}p?1LU`TM-%ETo^j#t2OQZKGe@LQkF1pN?23U&pu>qw`WSJ za88GyT@1LE+=Kbnk$j*34B#Sex!@lPV9DUAxXCip!n*Gf$ZJl~imJO2wUAxxs;BZP zo`q}}!YEp-I@{Om)eC^=*-d(859@xl`$uZGJeSpISWh79;)*Yw@jkS9OV=H%;6d^u)j18up$OYlQ5K#B^ZEMcpau@QuVYzY8`n?U z{Y#0aEp{-v7c1*FxVR`t`QE@Z>Zqf@@A)aU&Q>13!a-r5}T``+Ih*rC0?-l4Z@1pg77!qkOw8z1?Z1Lf4?K=!I>$troS?&kqsK;(J+?J*6HZ;+FrXI8)Y-pIwSnX zoo;TCxwyauopg^Xvbg%j52GMdzRJu^EL)FQPmeh;d*h-)jK67$Tt#)KJgAOeN)iEJ zB%n{apEABAh~vdh?B8p3bWSjwU%1^)!sbbe4OH4WY%q?xPiAd17`yb_b?o9iaR0-a zv=-QGL;lby#M&Zw1l?EC{-fMMZlm(a%dzbJA8}%Kvg7y9pB3hDN8lO59~ILG1=te3 z(Fm6FdWMd}6$(B5n)hpV{xB)vz#(7`Gtei)bIJRzO@E$sxwYv`YzG8tF7NXsl-8$? znP0_j+C9k&7ITzgE^zTx=VW>Y0Kkl&+LokPxP;zc5^IH36E0!QU{)GU2|gQt*)he# zi59*jo?BZ1t8rK+Tv^)JySa2WCm+S)tJIcneNOttF0{(QFi4$)MetO8(1OhbyuRjP zbX~pLC@UE!fYHG!9XV4^11C4BM&3^$3=G?3fhm^Xe3kISR29C=xI`5nbI(U!Kbxu7 z+NEw#f{H3J>AB4|)xLXv)f)C+E$4J7?+Nb!78IOJE0UexW#OY6Z4&O8=0mWT9y4F~ z@$Pc;)cy@Xa%s-jDe$LO7&{>?)^&kX&Vv zF$st9)r80*L-f01_`{26j=DLGVBs}2gW9)MV}lZ-oG-1kxacdc#A|vfyyM^F@m7o) z{Ot|%`gZMl^Jd*z+`N>@Ga~D+Mkt(4sL$I_#irN4wG$6%<~tNmii84i-!V2u9KdTq z&RQMXOC!S8**p(jsCh@zs7vFE#Jb#Vs8GLxSm*T0NW@M_8c8ful0APLlpaVKS^?+}*B6c|S_4^M2y2sETVR+K>5J=cKClPj*z z!-QXb1^WfmO31@JH4u0oJrG z&X`%l+N4lKa9N&rrgP%5AFaz0?9+Z8eJ^5Qsr-&o0-TE14MxWCxaQRATK`uLlT&Si z#R56E*OZBtj0k8b_`8VUrYqc4gnO7nHVT0Fmx*_kyydjuRTuH!fBG-kME=-VSK=UX z(QwanPQX@z@Me#)b?mHzX@B`x+-!LVyT|L>UzhU+!S{C|q1Frg^GvXmclg;0eHk(kTUiNm+SA}Y`A}|JTT50=XIh?O z)o4DBdo1?4xShYy%?m-D&nF*+Djw$qp3Xc5lHR;bm>E57-Ut?GhdHNjXMND`em&1! zd956!UH}55iPyST=G=wus?`Diz+Nk{n1WNMzjR1)%(Pz^F0c4rK%AJ&+I?g{4%P;q zqPpKhb_hUny^H;XS6))|)&f<}`S{-?fw_71LDH$lz1-iYb1Y_CFe#b*8uenX(>ROO zZxqM2+?{atd<7X6t_dFp9?27K9I_yW(0`>VW4Dd^nu57B;(N1eQaZ4Flpd4AaWm0` zNs6NITTX!)24(t|2R+Y4bB>W__XGzka>cjV6?y_kklIrjXnr0>4)$Q1zZsF=!sCS6e`W0rp{Qj zK?ziHkgfV!TR-^crG}&R-on%VZG7ih=az<*5{$IxPn@j~$a`PSh=O{*pf<5p8@Jb^OC( z`+T!qhOv-D+iFoH3JUgrtVV3P7do;3*rULovusucae!F2+jV3apwlH0=CIyqXh>BA z?YND@@0Ckz-u0(7qA8R)NEZ+4b}2@jG&rPUWp2LCl0QzGDI0QB?I9X(Gdsz}?;; zYP{)s%6YqC!~TP?45WXuqxA*FKfJL@XdP?ZhP`9J?n{%l&$xtI&mzLtNUCQm{-4P_ z03ay<&Jw1Z&9&a~mim12F8t*K+~W6A)i|tjM{S-r_)l_gh-VVIFbhNgq9Y2N1R^*N z6%YSEa~WL3j~W~piw2fQbpJ00)c<4=|DOW`ff5cTiGy?wNJWOPX!LAc11#e zFO}6mdJcj*v@jh%D$iFu3AzRKM)tw!fhz!-{|UB~ExyTu85zKVs6V;rq z7IwCj^s=x@F@NF_nO-qGxx$or>fKB$+N{FEQW^@V*PA}T%yId<8L(gDcg?j-P*i5{ zqR0xzHYyhFO0%PK2#1JnR^58MR<=ChIk|H__Yd-4z7f@bVt-U;u_`Drr*M>3jlUOe zG2Ty_3)u)Wmk#0@(MW)QEVZ=H&Ellta08*v~{PZ>` zfx@au+_Uz%cDLGwOqN!#mk~~1lhfr?fdrc&@xrfmq_J7ajeq!suIAXg$+pYHH-8kV z8P*{titD#A1`IOm&-@%|)k1mMp?lia>wOg|UEq}S)_mno?=G%~aLs_FW<9tVF`bC& zl=(AxoZqdl{dNvxxxVbc@O|QT(w^V`Mwl1Kz)uWgo=yb3x&-YI`I{ zDhUC>)rtWk-<8K?LSwp;fk#@>usWbtR4_%B=(Ij&BNZGGvIBijXL91dg~7iL&#py< zj=yZp-;3SzFp3c?`Va|rP-G38_@A)NuP&4XctTN-fDuNWR>!q>u66gqT`!BvF7LDd z9YagrnctCF-S{+RHdPAW1cA%9;f%#q5y-?*#uwc9e(pScRXQ}pQ|HRSHdaP>@Cva0 zMvt2Ja4@y~9;+4Q2N?gtEfIU>%^|(%yj>LNxtFF%g&n|C$C^TM=9R6!Ok#O)T`JKi zT`xY+=sbqX&+FMIS10%`O?=xwVD#3(OiboB{o@-pKb<B(*@k=*>CSraZ6}D7y5EeS5 zrd^Ha$a72^iJ4Iw-Yjc<+cm5zufjgQ@;9le zZsF}Lyg2&(-s16sYb^Kf&+rmy=iHoWWPITzK2Wq4p7Ig%^SUwA1D(B@AM+?s~> zA*hWb5SB|L52|m=#0BgCe?ohLjTwE>Rs2*_HV4;IrF;2oF~N#7`>_R=G(RlvfewAg zm&I^c$U`4&^-s9d2FK3&-htfgh_3S3AsgzdW3tJNhc~^Mu-)@9u%&CUfl+Bd;DtOy zkb$;PkEb8|0#fQ);+RjEyhwS)+qTP`#kuVx9is%!<)m0?V(A6Xreyv7=3aK_x-ScX zU`=jYtBWe)=Wqi?qYXo+A)?C~?Mo|vI~|+~4HfNLBoi&qFWI$BY&Dz`C2+0>m&&)t zX6e1ZKAsu%_i<|b9gi4o1HXO~v46)LsblNF-Vn@9V7{4WTYHLOjq^)7m7H@c0FWXMhc;i2Jt1r60uf>v zj$tL-WYbXhiF8o*8lHi7Q*3LiI!?(6S5e=vbYA);b%-{?39RaH~N!Se7;}EjJ6dC08x=tUZ6P7e+lWH*;m_ z6O-S>SP*#KVzea1 z(9lD(wl*6>Ckk^XiS)7(TtG(&$!IKcz>(Vm^K3nQ(6VjmZuRCb z*xg!mIA-=I?n3W1EIwnhGAtze^P4p{E<>DK%@TcNJ>3xfS5d`NYyGP0^jN7&F1v0fcm^;)K>^=2xD|_PX%J#0^Z4)<)}P=5|BNzs)YUTN2cEh~y2{!f zxuFkh$TFPxa2kVxS0y^6(bHUU#TuTsSamRp_@_*d5|ApQd$T&wE9(j2an@N#hZOXr z59I5r8J!8Yx%e>#%!fia2)C5WXq`FztNEa<@JFa@TA!LcX~u1+oSGhtair-Ms7QIc zgHkDE#rb&+iI+pa8l$_IJPzfgr`&!FNpDwwc_y!9cn%%GNV2oWe4|`jv(qaM9X}ok zK!F1)D#1&SoZlPTF%_p2EV3PW#_RF~XAemHfdP)u?03xZVmO;)bCGR zdPILk?JL^m?2^yNsZA?qubKHGT)saMK59(9`lb`&UU}{i0K+j;H2oN-Hr_h?5MuIz zk=r~t$`khT%#1(J8;jMO-0W0EN;cLehAM^iuKtEfrMv1p==R&L>FzW7UX)Ok%3n=e z3owLt5!Zc{X`vHnP4&&xAs7p7P1eZTQNLl)!`O}k!gPG3mNIXhe*5O|4B5YrB6aj| z5+&%B3xMTzXuO>w{5R)2kq5tzYpBB8I=rr z;n?66egUM|#seOQllkXGoboU!9a!*4_rmI=emrs!jtaM1Kdh6uKvtbJvnd*i0YGB~ zPZ=LRIq4?3Dh=Q9D+Inr)U9WwhLb6c`s=WB&xLy2Lc=~mE~?fIcCO!^6Kpr@@9_j{ zrf?L3mUo;rZc_1GC~O-I-g57zCS~N{9-|4_Mm1Y=RZu0R)Q~xTqUA)bPa0R)C5LVK z^aerQAI{bX3%AS3U#1KL-p^uy$$OO2dQ1O({lsfKxxR*7as+WdTUX=q_GQmMzV7R$E!Lf*MFB1f0Gq^ zz(U-;7gTH~_1WKRVC(!E&Sm`! zEr6L;d%Jdh13im@ip9Wzi`Um5BO}zZQKj_PvCQK)tb!#IQ}HQL&5v?+xf}3C0HS&W zn4kSF6vr`}A$W&(gRB|TWqW!YT7o;M{_k_vKAC{(8=p523~vU9aZ7TVb;qSC#Cm8u zbk=N$^)`yqKw9lIgD)$N2L=cL;MfPWnBtS~E{kVe$#*uHNwg2i~Z@zX`-w&B-_RLI|DVvg)G*}moeIFZ^8(8Qny1y5cZ%jpSAKX4RE zdN^5zvJt@QV~B|08_1|1asJs;yX}d{CAlNnWe`*rT0&Hh4+sAY1zc9>P%w>m>SL+q zlNK|>_L?@dgyaSwBI`&p?_)YS$^u(Oxs;QmTV|pxwSh(hfl-Rre1Ns!!N6iW1f}{# zz!)vC>f}R}?n`qjKGn?K$oB*m61gwb-mp52Z%WFod6W1#D}Ii-&^70HPxT)$E>4sp z=QTNRcmC#Hu>m;ZE2oQ5w}z}~-2~>V*rRaW>dNy%Q4K~X*CpRBV~VDKy#i086Xp5F z+ISILnvYVZmN%tWH3OXvQA@+C7>?YrByZfLtAUpymAEJ#tyXTD5sK}NVUs<#n=cy- zj6Hgep5S60A$+k7vQ2-*VR0jsB=X_pln~_<^vC}&iTfcU~002(X zm*FjB-=gDA@8JD@III~WUjE^beEJ1TTkI!*yA10@BE|*!L8c*X1nr6q^-+A7HLnu{ zgT+7gqZuc~pIHYuyi~`qNk_>PvB6?Ot&iGBOEiW*$g$NE}M>c@=W_DU2DtZp11@a%l z0ML!7Kmizrx%sRJ`xdWf$4P*%gFxySZZi1ZRKyMQ8J89Ut3to%Al3Z$^MALT{ni&H zBp|;}*%BAqQ^qu}jEnsX^+8k7S$DHHgg<*wJ@DUZ9B_wgDcWO_ov&49H855p>X!(= z($`%l*195i$nq9+exQYNK;qAoE?~GhAO!2s`JzsLyKCSoQ+8&Q)H_x?<8Y-Zxq<(c za?{tymj5W6Oz-gE4<^O@p>cZt(Ed=~`nN4)VXiV|*$%%U(Sj7aH$N{s*7ist zD}lYR+r}97eHQepkqP>eW+te&hXRI44ze<$1qRHz`^e<+!{D8vP)nS|7O%UEua7}c zHBYrNDAoRsUzN}NVoB8(8GP(Aqr6-JKw=#}X49vPjbiZdMSDuH0Xz{JT42E)vu~k& z#>2lIK(R8!P8YVD!ORS>r>ET=D22cwdp7)j^kOAt$-4qRmg{&}Br;%3wBf!nEeZ=gimH(6Trmf+7 zkeD;gN?U-g&B+TLv4UWTefEc!Bf=InxnR8=|ABhNqhhXy!#^#0mE={$qaod= zms2z7yqq>l;S86ZVHOjOGJ@^obRMqwjD+R>$H;htyLhPoyO% zkrGjUoiO&G4o+xpJ`@?5?tiyg1qeWZqoPM1H+soc=WpjoDBvEm_Br?gvKA7fxc-p$ z&x?*&*UeKPu&G+-{jth&y=b-AkLMib`n4YX%9&4}ga_iq%{COMcO6P`XWd|X%#g#m zgb|tcr@A^CBYNZBvQ0J`ykfD{*t|Od7a}+vT7oB-{8+75H@2XE`sNwLNiXiVi~!YR z7iFZPe1C%oemGk1?|89801cwt=D#W^t7E5h_2@o*upWj|1uClpR6+moDuSCurG%%( z3g!+RzD`UWc(-jOYW;F5nQzwMHloU$6h0TaBpoC#zQ~i{Tp6nGxk51SYq_miB;5U zOuMhCDh>X&mC?g_f$5b{5M|D_8MW1Zv%zG0`2@#?d=Z)jK_Iyn5-_2=L&5jX^N8g! zqdNENPJ4E3@ax(`iVfs+{jRw3Sd+JvryRE2Hci#@kclVDL%hhBmrU#cjCb_fk(NR6R z@on$Ut!YwuG0tQqvwg-6m0@f7B6mS#0>8|tl%iXxC20wGcekeC2Gf0m1u8UkS`xk_ z=v0nZB5&-MjU{EOwJ}`z3;-G4#%INkA#flv0Gc|i4KMh!*&?ZNot4YAsxXr?upIS* z{^8DCvGt!!)T6F=MeHc*!1+3hb2secQ0RTuWYf@b&>b#kYD|J1`0ohU=C1>efy0Eo zb>)a|g-F|EA~XP&BcL#P$z=PYz!aIYd#-u$!@@W?Rlkta}X zadCRjMw#iyYRJoOm(zXL#Hq;43bVF^1Au}F8{ssvFaPQn*H=1PM<;N0dWnLKaqq*NR~6ZHC{BZyjg z=Huw%o9jBEq3DC^9gMmg14kp7?-ZE z!k}=0rEI*$v-o?I@y!SCa{QzMB(g0509oVO58{0C^MF%QA4j4BzOzx{3YdOx1OTy! zo*>lEv_7lhh2IY|xWD8;_KO6B)q#ZHTlN@$kbo247Wg9mYu?J;Z3}YOl%i!hq5x}| zhvO=qsRE%8D@I<_bCuLCzf9FMNL4|*{T`EkdIA7mlfnBeH&d}xAHDa&elun=I}lh+UuujY3QGIUhzHO1A-a}-I_6L}bP~bW8gVOwW;I9&<@DM6E%GA?*VT9o zm5B0Z-SXies45&IqO{Gu9Sau)ylwIVe35U-CIC3@GA;C82elqwmI12lGJ0TM^`g9{zXH8o?q$WSP=W#?#*3UOW;0tI{u;g+Sbj-R`X=Qr1aiV# ziBfR8|A-uE-w`hkR_xy$&&*hb_ZhBMOeftrrBccz776>hT z*tzD!+vSV<-zq}PjIfef_y7IC#-zju_^%3*ux$Vbp!<}UM8btv15b0=LxVvD|F5+- zYCl*J&6<)9H-UlIh@2x05xigF^QRjh?!;m2*)Yk3$_hBWP=>=WW1ttk|Lv_aR-+|L z&ckdph)%sf;87bLfS&*A-L!`_cVyj+Z?J0n*!_W_eef5h;?Er~?}#xgJ^<;#R$OH^ zmNcTaKHY;QS8;xQws<@r8IBv zf&(tW?h8Z(NTVx#d55ym&JL@X!JpMQJ?Zf%(sOmQSTZ7MfZpM&W4npyd;sDQgJ>i!U4#nSKH_Rz%oD~1)OTKc#U2KLL z^?EIR9+tU>@nCmz#(Md)=`@w_Bj~xLLgQ26x1Y&q)Sc&RCujNw(_f3Q3ueb1TPnGN z<8RliUGm4Yl0FuQ{EiU*;xW(D9)}fDUr89LcLD;(}@u{1M3n9ja-2P5bmE^4JMJk&~Jib?sndt*)`23n4GJzo^8j+ zb+Ja5Xy6sY9H0vqx62#%5%32th6%7z7mhygX3ryq*JcbX0>Y_i;eM1KRaSg4cn5y7E|;4OZo?Tz2+&=TVDzK#2XM11%^FnkkD z9V9m1C$)y?irx*;guOA>KZQo-XDtA-RCxOyJ|uRkAxKZw@c7#sF3(sd6u&PtVGPb5 zOKYa}k4SkJb8Y51Y|_wXqgVomGckRf#@OV+#EhSc<*|VhR{pA+&V~*|NQ$@tU5*Jc z2n5=`Ueb?$BrE9VOnX$2Z3rBU2k`iZT#Cde1^fRT*x1}t=Qim>S^bHB*zc!xLEZ1* zve<)1tnmH3b$2SHBzI@AWj{{^FvSJkQb;9Cmi$e-D3VfSEQA9OhXc>rn(HvId+u)ojU@eM{1pt9(zi#NQCuSw^R2}F8q64{Ceq4bgx{W1CDQ`kN9H(r5NtcsoioW8rEmHM(0M0L0cba>V-vc|W zICFjX$VGp_5E9smUgCVQ%zR@~*8pOyX5??^FC`bAOv+m=B<+jxl@nZFdNOau)fDO6YmiW6W9z{F27{WbFZ$3NKJi1LDJl( z$Cp<*yxatY03YE|KbSDGT^$}gw^}g@np)oB3NPq%pj00(528<7PW&HwkZnAH`#7iBnTY@zT1!d-JqEs2-~t0f4N8 zTW`tvR>TPPO4n@|y^-7C#?4k?ougfW-mp!oo#kl9+Pl2NG(qI}&*e}Tg=bmWQg25X zH=Ft&4mHD$?_?x#>F-q1;jSDeSh^duIcnO940KQL1YxPO!`v32=W4^7^n}7J``oLW z)17(66#^rQ18xW(l(8a!J0T6%Z7k)}?Z&xG4o)jPKtKoqOAj!3#qiFp)9yY>IMI3( zCvD)lW9VU4q^z#b>&MYZb;VByQ@So;7uDz!@S_uHD!2QDl=gE4HPFKt&bA?&MJ4$8gJt17N{d@dQ^%O_s)pO$KIO}df8l|)C7Z0}U7nyrCVho`=Vde1z za}zxV)`!N8fdtup^z3BXnHzh!8>+iI2B+wly70PpiB4Yj0EEGW2bfl{dwo#<{&>zcpyN9yg9B z-;#8C;|2g278%Q}yj`L{<5`ch4sN*8p^aQSeFDQ<`Zsev^<-B{(VWo${PZ2$dmgy% zBYFxM0z?lJP(*=fLSM%8;A@7&z=7GDrY(ktZ8i_F$hLg`e4IS)0!Cbb3R*tH%?viq z8JnjD*~@-+Z8~+B!-uNV9vh8tcntUBf$-Nay&3gKuhwtj%eryuSV86AF4#NpwM@zB zgC|3S#_eNc`nXJ{6w0lhVe5f-xSJhTluzqu(V<=?=#!CgX;W1_(Ch3XwR8XGBE(IN zWovqLgsi}}WIi!&V7hd+MLoPU*}1L%SZkEeYqE1+-qm&(^=WK?2NPLASoP3MkGty% zGU79A9l88;e(Dnx$+s(zUqDeT*Ol9Djqtg3t^9GBuG&NONiP?^EX@YxWW4JsB_pu^P{T`e@HFfn?Es&adf%cZ6^h8F@f{}CMAiggJHWTA z&Lnr+;s^GV$^uYX1CH=33yaW6rgGlK--S93u2XCu6ezt zjde9s^@QiyN4fY-Ldr?PDYb_bX{=UPY9bVT=8*V3Eu(Az8pWUVNq*nZWmap20q%iO0W;Cxj#ss0S3KiD zeNd1*#*V}2yZg710Q}K|faEcuE_EtEkaReJ7s>NhLBgtp9z6gkRzEqtXdZf3KZW98 zPS3e_Ao010!fFm_=c#Xef(#y}K?j*CE20K|7kvsh@a=D`WBvFhw`!0*| z+jf}r=C{3T%2Xm8Bg57W02Q$G;~qy$M|)?F*P>T!aNRF-z!~A3ff>tsQ@GIAv-kB0 z&8&ENRGywYa->`dLip3B!~)H7)&Im9LgQM;H`|&G&U3#$tV-g4NPoI=N+CMH@tU*R zv&*JQZRnJ}sUdPtd7h|{{5JM=KTu(R_WU^I}M6iO8QlrJ^Z8@v$%69{+AL+^a z`ur{%`K9^1V=nmSuAIucN5d@vsK)?+w(r0tJ+zEUbvR!NdCjU(tQ6*wJ$qXS?ZKpR zKM>6N(=(p?jh+Hf)HX*)A2<3KX8m+sM=i5)3I;_rTC?@dZDlfBX?q_5g9#j3QKmiTpx z0s#$KxfA&xwLOaHmA?3fXN{(uytfT1+M7NlBE6JA86|DYg5$tW6ab(*2fRPSB&jL3oR5a;0+>gb1A?t|mnCC^T1(Ns!TgzUfk-zY zq<8t84>}2+`ZS|l@;^IUC@qE8=0=vbnWmPv6SXyuaIe}5?p3R|`PY&#iFDW|H20?c z?avHQXivM?2Q8$>Dsmjz<7P`;ILV=IyS3|j^fc>U=~T62)rQ*KtQM3*Ho?*D2bbm` z!pDToj!OIyS_qRoUtKj~8LN)O`TcRD?ykopm;V@~d6AJ3&HCh)O!!+_|9yH+Ci06K zgsA}^w=bzM-=veYP%a~i{NratJl9eAdOhx>;qAHSpN*T|vZ%2YFwGK5Ds#O&ig!tn zV04wsYX~-T&XirNJ_S8& z8EjbGi|{d(*g&e>-6hHe`#)97V?w$f*t|||An<9M z6<^TykyjK0UFP=~5{cWCgGE=dCphX`tCcN`Wbe+^3oO|U5QGAb&seX5NUL(%$?R+A%JZ%CFqF;pTyR&ZSS>awiS3V>1W`2VAFWT?pDxC&HLvt&kjup~q*ezm67y{b^pZ2}&IzsU zYdRO}<|i#_XVXml$m5bEOP48%UmVf={Z>VdTT-Y0WPPE3q$8hJ-03s}TF_hVrT4_T z9F?G154>I~T_T4QP4_8Q6NHJ1PgP)gb!RH!053#p7S{URJx>zKD3*}!+_G7?226mo z{@4TD3ya3pYg4LfTF2+Qbq$c-S|!>qyyjHSt)?wsX(i(((1w;9T$5OSM|}G-J1Wb=h%zg2aT0+D@r$ClMyL} z+w{T~z!yMbG0$Gg^*pQR@T6z2n^XSA7JlV<&md|7s)0igr+(rCBwx(8B>AAwn`z~p z6zAo9sL=e?>Gw7tD##4}C`WKTIlc@T67oI3E$ASoI@A?wC!pK)U?;X6^ffN{$=&D| zN<7(?7z>uxGXajl>d0L&e4$eIGwkWoDJWxz1vQg zsvPv%T`kkJLpFLF=3Msua9JYf`x0RgYw^2800)k%ECpwFIvR8Fi!K!aO}+|wSgh7R zaX&%wyA^2C&zIB%;Xqr8*X?*@;(%v=(Q{;nJ=Zd31{rD z5^aj~jSq{F64JEh8&5t6xv5+m5q_aMIrNfwiNkJ4u#x?t-jtf$;dEs&EN%1l1(Gt^ zDj~Y%*lv3KO9UY3aK_lJzSTwXF&7b1om}+SZ#>`x?2!t=V5J#&AX?Kc)mwI78EjM# znl=Y~kH>-hVyZ#KM9~o>GFtuswTa&ejOq5h~LzA?-4FqchQ*G(6J`1xR$L4l__;M3t&F zp~BZnMgh|~0%wQGm&_OT*D)I=C_F#EBHvimZKgNo<$nXwKrX*DhXt=`g3!qRv;pHS zkc(}j5%q@pCM9uUQSEM32gqwZ8C|w)$d9Fq^BQ6@zr)z|#voYYVQQb8KapNX(Ok9A z#xZyZ`qVmw>s_t|R@sNT7^;qg(E)r5Vx-Y>?ExoC5|*KSJ=jX=s9GA>{|ICc3Bylg z(Oi|02&#a2m-@IJD=@cZ74J$hCbM>&?B>KqCvOoevXzv?7L}6(_y7n%v>^xpJO#T5 zTK)&4!b>yY023ep3j{Xrx~;u9#yllH(XQ0>sr1AFKDu@=@n!~Ozv`l?Xqj@qNs*JZ zTv(4=H=QNlBk=Vxo>XxLbkg0x-0fmi81B9GTCr*x(F)Ays7z#5Sv{Vw%2&Ju^3PihCju z1ONpPqz!=4j(bA#*UJh$aB!srMyh3N+(F#6`4ZbOVlg9J(C-M`@ zdB#SUy@a>2LG7dbb64+>>)Jd2X7>`HiQ=CAt+Yqj^%bpdW9UM3Y5MDT4|~;S-jtnA z=wwGFa~0oj&1pKk{iZ8fpx(vOn5h=|iCwIEM@g)Y^>>bJb$|dN2uHHNhSmz}0#p}l z$id(xgzL@3l!4iVcn#SuCx4@(5wYP*n|yQlVdAe~mM8F$QWvP%uf0kxB(YaeU(5lD za$WdkoU}*mOI4j(n-m=_PT0-*2``r~?IWx}L)=teN9ocwQq*hB+RxriRaR-kyY#|M zdLh*p!{w*sQ`p&si>hUYARPZiztuL+Fnjpw<~+6SALJi9^N9ItIJ7zkn2S?neZ!}8Xww_* zACioc-tz5l?UM6zKgZ8sMw-wjStWV(h61h3B(h7?Ev-~d*5 z6+{1c{3XKKU)2@s=NJ0eDJ?;J>iurVrR{z5;W3HE(Tu5eV%*$5r<}45bcefgq;hT2 z+IEd8vWNo2zbw^{&T|8 z#c|3;OnD+zPUB+YNm8BR#}vF*mQ8a0F&s$pk>F>$(w1 zcT&WgPDe23MVK|!aZ#K$wlN3)+VRIoU|a=-S|_Sf+0>W=d|`xy*bdPSXZeCTKnEI)vcdbq z=o>Mza(@mmhCl=%I!}f`;Rpl{tX6y0A-^YYT(OpFRsQGzfCHNAK9b19>8*v7We!iW zfv6jk3F%Z%Br@#{pq;l>%=)!?J?(bq0J@U2*vuG&pL3zZ5igZh`vc%00aKi?4-W=e zCTCs_X=u9$^SwOVeVMN=)f{to1RwypPcSh_{1N`E>v<>3dd)j#Fp?_ z-SkYZ{L0RHrSstIwQOZ1i?8osyS64ge6re*kuA`@LbqxF0Z>h4qTlt~$M&+P50kFI z{ff+UUE9qnXo5^mlOqoKP%3%e$+N@y8bAQ2#n!e=cm{j``xh4o3k7GHPZ*18hz1!Y znx4rm7FW9Cszt2!ywk--kgk24icKA3=Ta%$O`Db8N5Xv~S9gj~rzb};8hvC{{6Wp6 zAZ>{&*&RR+<@!y(!Np}{i?d&uooyvT0kv43Mtu0yS%pJH#6#5bClkW<>wjGbbTot9 z)FA+b5#Z*T2KnBfOI}p9J~Lfi00s9d<4 z%h#S0bbbYlp890wSWXlA8%=4fuz*4qmD({OAU!sp%*fw6%Kk^CEPFopn-3n{_M)7( zQyM$hhh5_|0jh)T`sy(B$rbxN0LtoA*&d!X;y@sX zLIk(r_Q41RzI{|ht*!IOSVgW~%bt2w@~7!Df8*>&U~EX?wRnu%D+odi9YH8Me^pZj z?)$m6Bt44WwI{B4CK~+p$(+D9W$ROsA3X$Mr5&ClClSWak7-=kdo;e*jWk>U!}L_S0KbLTca8LEndUCA{giZ( z?rC={!0(}Ig#0SG0CuKZp%N)AVJ z%gLAdSR7ra_I9?lw!rWkPfbdvB(UklaV%B-ivErca=>wu97hum*K5w;$sF*%QMl{B zRHhY6de(S~s5n05>PVKp$Z694C%9Y@(dIv(urVrjzmn^eEv*0W?_{;%XREK4IBVAPqW#=Y>B(R)rb)~0T?yO@qf}xCdPu}~e3;rP z^n7G`#RH5@cHuGYL29_f0*Q2~Sf`iyTT8+)?S;nYWut)~8rza+RB_}eJ7#gz;g)FV(ey)&pIXZNY_;{Q$Gn(iIr8^Y`0 z2z@{R7Y3sb4KR^sElcF(&iCzrga9EnVfqfE6&KL`Uy0XXe`j##LFYac>7jhnZnB;( z)1PqUUWX@c+|X8izW;1xT}&kNGY`3?rKJtrzL{9II>-qTrO8MXe&w0M<)v#OuE^;` z8O`nw$C|A4agKs80tgleAoQT5>}V*vSc`VsKh|{_T-JvBUH>||488*8`Smi(sr>96 z0l3^^-JZ%?8NIqKA8O)FOng3(92}cHX8ZeBjC(JH}5>+XEZ{Dkm*_AoZLe@r6eK#e>+d#2X=1cVseZ<5#?l7#i z#ygXBPp5hD-(Ixqpv=Rxo|@3+7kDet?ql|Nghuz5m4d;GB~0<2CGNQb?8UE(x)~Jx9SqH`1LOr=|?-dt2z_?vM z8S7JHm7lWlD0XTpD2Z#1+@N?|v@0KA00gfZaEA82^n(hf))KpLJ*8z}+y10_eyu?N z$GnIF0SFdR>{F(B0~q5w@Xo0NkCku}UnV5&QFgi*WK|cRLRyGz100hj1BFGC*KG2X zo+)jbr***6h5!UJ?WMdMvb6hx`;>9Mw6y;q00;!t5m)PQ+Y z4)Ub)WdnDi`<{9Ixs!C2j+86PB2BtzceUwNDK<^au6g`0-lk-lWJTWTkOBW>o0EM3aThUAzA#G#X zY^jVvDs!vd&}+1i_5*w>&P$CyK85|bF1+C7_@pbvOnp~C1Gv9U#}3}w)>XU&0uX!_ zdL{=Tb6F=yLCSak00;A(ScAzfp9r0C~?<3ow!0}u#603cOX>P+RG?y=xk7IfKsUF{_JNYazoQLn?OdJsYo zgb_xAxU9oQyFz+n+DwrkQ}wQ0hJU^}u1J~d75$!rh&7hpskAr*Su#|7ma=TL)Do@r z`i!9w&`9nLkAUqgHSeFy%?+}WWrx74w%V33XC-4yn&^Ol1!Z(VQ~v)xfmG@M?o%iL zzPDybND-3#~ken2f>`4fe1nX7Yni_W;+Ncm;QRa zDkG9R>M0VC5QG3DoLI|YzKavqLpM7Mk^%Uw8jQwYafWp2nu`X4!sb`t%Z%L{#d6Yx z>pW;kD|?G@rfa8e0RVsi!dsZ(Nk?Yqr#VB^@wq^zUeITc%Mi&{7xW2R>d@K94tece zyO?gAE6f6d3PVM@lmquhhctbuNBW({h(pa=_)>s?LIs?}Bn(riKaA9z{im?fB=8C5Sco?xP%}OHPEuDW8uu8Pf^C*lNho9CK9zJxaraq zOupWu04d&je(Nl4dd4QN-^m9d?SzYYCNC%e0)4viOCS5`3|_rm2zzt;Yx0%zgLl))S1^TzW5Sd&OUW6Rv=Q z2!bGpNQj047=(lZ1^_}5K!K0~1_t)u+u*yejm`N>eP6ktti$(YsQ~nLx+D{Zn`Q98 zBd{6*0SeAL!8L!SSt)K0l2wPJ-w)As`{RGrS!Zr%Y~&Px6@%CV3m4ca+o>|DKtLe` zQ-5j^wu;F-woTp`kFdFGQ-S_F@g7ocr}3%@>h>D>c`jEh*``<5Y_0J+jI)Wl8IYcm zG$y>Em>%ZIxH-EL{r+j-RrkF|JR`IkbFE5kC)08!KJU4%m;lSsgq%%La@e;MT~R`> zXnKX%-yFHM{}mhfDIg82Ofocx6lrqUp6QgJB8#z>k5R2;xxHP6S({!~Nt_YV_6-)q z>8wUYUl%$?6#unw+f@$j*mYcdQ?1H$vg)HgD40q(oLCOe=6Sma5ykHpAWJLvn`I>=y8J7!=1S9Z5iu2! zJTJT74sY6DH)+-1cCC1c?^L&nOW=WZ=Omo+H&|7~sK*_bPr(P}bbh8|Z5uw{jpof= zKXb?lA#EXTbpTv4>+;#BRbA0t!`+7PE^h5r`M#QPE%#pKLa^V-$;vjdC^3vb|Rj86D{6Eu|Zy6HRS2o|iWwn&eNFzOVox1m-?hhNs>$ zy1@KK1Gn!gU6Sw6PpK6YH^~9c8D+K83as4)r6B--00dkx1RwwaB&f6~euJgX%T#-S zL+mnr(ku>)iLIQEh)4KSzMAjt^mCg(9Da;MPFC`A>)T*kJB<@XIN6vVScC!*&k}=w z*5ez1*Yr%rPT)NU1N+5`M>&CXC|i&2duTM?Dv)?hF+c!WEd5SkLMoT^<&%-=Qwz<* z$-BX!h4^+FJyUOll4C0YC}6g;+)4t0dCX*Ew@JqIvOgF)(Rzd+4c_z7g_fKyPkK^~ zMpz9xbg`6%Uu!*a$iALp@au?SO~*JlnO&GeEYwZprY<*JKz~h0?_aOaVna{au|)*3 z`h0g5H|wff$&;1ub;#C7E=#SM&qQc#Mqjm}QMg)JS&Nu7xXK3nL;pGNoD4;iG9wqw3{)h;2`hMFPzlve-%KocPE6z$r&Dl>wTQ2-1q zDAw(qU;tud2ZvA3zJH1&Z94-rZ)H z>xQj-(bqY4d(k_Bb5i(q->agqdGRIv3mn=68i)HRZVt!KZ;V^3V_ZE!b7RB(W-k{=rlT4zb%cIQF z_o%x0O=NU;M@5z9jW&@#_`;xGnPuRS^s*?Qz45e|hYm&;A8m!B~=#%yjTruty(OwSkF?m-*gYCBIn5z67n z{%!YxrGc#Xk@W>C3`$aC*;%jvlLu85QB*lwRgB}1eBIyx5r&25Ay$QVaq3}-%d|sD zDVweG&6$Td(!pf(GG6zic>0|Ory0X`>EAsuR{6Hm|1ErkJc1p%2bo5NTE#^M0Fg)? zbHJDfcJtE6a%K-t2_=0+_E_nE30VV$GW%Hh90U9PCKm$tUV@Tio-apXqbRccvC;vu zI?*>ilfs++#ATj`cuOT)<_ehEGoL9000mOU&X50`7M$|O?Wbz0)@B~FMKUP;owi`QriJ<~!7r zi!M^^KPMS~nY)H^i}&nquuS%R#qw+eeb_48dnx_bL;28&gLeI4`P>ws_SRcu&4?vo zFJ=_fPukx(Es?Z@jjQFzja0}alYn)$J*bDR&68KE{WU=zz`hbm@XnX5I{VDaYz-|R zVK4Xpj+kFr+O-!XrYT&H!kS&&DrqVr!>#K9wHD3b*&-U;GX6 zp5LYo2TDSPLOTB|D-M>-+0_f_&Ts+#{FjP(+bUu-cj~KJ*}~hFNm$`1)aepKe$aPK z80&2(Ir+!_d88z9wU_<{8K<}2z~f>14a_hm<<;uVhh2*jaSs|YtpP+k6j073+6 zPVU7s?_U5w04;M3LB1PmZA$!-l0T3L0A`*&SpE-e&BOo&bf45hiZMz1thHdTrH>!Q z@)Wvm%4chHP@&az^4zW@2vsiG3y#+E*e?+vCZCIm(ExAjkshc1>*EHrJ7b&oqnztU zuPV^c7}!7W88KxO?*sPPW->e{jnWv`Ds$Q1gjlPFHjq<4H7Lq}K0?Z`JN9 z(1XJT2Q|l)iBZX<=EEOmTX)Bo0}&_cShZ1-uf|0s$Xs=Y$Dds4M|v5Wm_Eu*?c=sT z2C>()=U19!x(e$FmU`BBT>?DS_hHw4eWD(`o*QQt9xn1Doy>hE-+RlSafa()oF(wv zXuY^Bo|IHuR0jjxU?&HE!w5GGf&Y8%d>1wYcW^#_7#B8`K5{MLa?!ddJUS63*2lNZ zqc$?4^Zm$+8)vAO_!@GP>EqZ(;7t5qE$1ilEW_S*dJ?JaWA%f{c^0;s{9-AeE;iS{C+oCdn%0A4^!~0^FNJseMGB~n=^tx1OXQwKttIc+BHi@! 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 z�_l=O~hRe6pqf9>4GDolmH`2}Mo%U7%clDN316sVX8PC;zJohI^~p_SRj|&1b@*|ZYL=p4 zYuas@aw8_D^w1d}>F_t&mAkKIa-nWMBpp39JmtOwgWOb0uEHCkV7#7NZjg>+P{f*9 zoU~KaMF*cguf5!G7j)oa@8X>I+8UhTEQdLQY8OvASqv>_-Ig5``koGT&avKZw-_94 z&O+8UcJ0dGhI(REN$>GL@}j!&1~*U+4dDCv#$uwMV1aNDK;dD043)fGc9_kgh-AtJ zQ$ycZKz+w7sS|+PnD`|_2Gxi36fC_C1V2Bux`>J4rT8aVbnz=`cXe;PUM6x+y00?A z5t#6!#7+kdPqE*Rs*{*aat{c6nAliwa#5Z}{gZnGuknxdE~*Tu042Zn^5HG*P}P7* z(SQc_?bm!O7mT-1I1}ugCLAYu3sl^v&Eel>qz|FH4#kX_cd{$>kFgj`I+JG+NRw{Yo{1hBye1-UIw^uXo}YvKIA zHeVisxGzaz=<{O%ui~;0p=EKSjPyF&*|mS*5>MV->58*DB$W#-qHVnDYqtitAe_2f zo2r$T_uhyC%Y%<=sZN~O$vMQgf%O8VRLh44ICtM&&TqEx*5V@p)?Argj4)uXW3=ji z1|>)z$J*9^E(Pv9XU{4+qSA()LC#IySSh9)?(Cf*C@kAwyUe_5u%cGr0y_2%kH0G< z(!H`&NXd`HZFj!o(%``#CZ-YCPSq~;6g83p zg7{^78F-LudL%b{+ctfBV!CI`-Fi!K6Lemse9UrENe@6^Y?LViz!y~$7*UvShIdd8 zZt~VEz7EeymYGZ-LRdeN;TAjtjD;Udhe$*X%B|MX&_N=^#=9>1YV6=0DCnHwFyH1QPf`AQxardj}`fAe`3q zdKZ0tt7`p|*waG051S7@6LTKRgJ_rw`E@G3+w*|Pe5|0K>-8} z?B+7>Wc{+E$3zDNH@Rwc+y1j(?&GpK()lmD;7zsNl;R--2n*n0=sUmYtTtBaUuLMP zm8#zb)@|ywiaw_I0f=K2{7;EZ4L&_scG&}OJ5;HFtBZ`r{Za5wkR#rCrX>|s-I6Jo5oy~!7 z#*v3I>J)(CisCa~Iy@`ZN*fmZ%oY&4;N0YsQOxWZQo&>L;;lye5(}mc#3UYO1E*T9 zr|!q8xB>_rr{+i0@7i|8`?I=bMtIDW!a%Y8RYd9-)H(oar$?nu;dgcXS;RD45Bfmf z2&-7GYXYnJTh`X`oTK~MNMJwN)rb&Zm9M+-1@X)2q4481nYBRUuVOXHSjPi0rA5)O z=Y%FGEi6*<+iaE=JS$uN!Ed<@a5CQ(ZIhfO@QU*9i$QRoA>P)#eIhm!E#9?g`2e-? zvDpH6b!mYRS=i|V$D6#RNP5A1IcivLLS=H8TCZypxcn`YFSl>#{s4eqA^3M%Akyr$ zA@*sXaAppZV}@mQt~Xu3p_8(n^MmGB&3DdpfMLakl6V0I>F~@jeJ+zG9+u;xgO$y9 zz0R+N$26$bLrdX18i4e5gQvO-I8S>bpBXjVpiB%SwE$=Jf0rQd-~!k|491->H@LR| za`S~Q2qgc>ZkBQ8xtg^Em9B19vz5n$Tx1>qJRh87@}-yrk}P6;E?Ll34^=}@^m-sJ89E;}p;AaLbl?(CRxyXsE&j`GR_lfa z5?80fl&5?7j^(%;nIXfdxqQ-KRQJ7x3ZT$B*iE!4H+EQYtq}8x_Mzy%hPWHq{G2Cf zHtT@9vcmtN-l)t`XZPojWo8XjhuWq)q_uF^j@He+((^hEm~No$a{-A}UGQquf=t3< zm7=ErU7y4TQ8m@s&RbsJD6=ZcqkwSy@V9~Y2OG`I$L`}$x#BXR1l3lhSqMo5(^aI^ zc$>pfbxGaOCvok1DUbyz7-r-fdEcH>ZX!@;EFemDXv*Ho9cs z!h~>G+6UA>6tR6Ubr6hgVAW945vcG#Ty2&PNBAAtzpiD*rK5a_)y?XRd{hU{@l}8F z@%VjQB)*5Mby4CC*n>L`KtD7c`Nmxg=w~&IubV8kIVyih>0Q@4p|&B^uiObb>iLlW zDSVCKs=^<@!{)VNT-{@ICoO0jkkHSxb~-XFdpx8C<8NYLj*PSiP3fB2abBXR` zl(DI6nD{V31;Babh8Kyh-Bm|}GG23SULFoovzja?JT@v!nOtZohn_XmD779?vd4k~ z3_2ZMtfB$|ak8N9V%yysc) z5jz(Da241y0ND92ZZ#KPb^c&<(?dWC`~Z90xxlrxYzA=I_29Sqo+j)d@hzdiXi4G& zN1vU;6XjvNe806@Ts^RLwIdDQrTWsZca^TKRz9$m?sZXgWUL4-}@0d{1v!V^7j zw-q;cs9-VqK*R5=eJZslQ?!B-NprL|Pv%mQVuPM>Lg)!4Y^1hWX*XTRrH=ED)-*XC zxIlCL1HDemlht`YU8^WicrDHyN{CWR3Q2JI6_40EQDgD9_<7h{K2^y5ka**FbJ!o2 z3>r!2IjJPA`0$FpSsg;(=#!n*bW}iYtH9j2n9#a-8!D~+_zW;b)KRF{YvY($IeYIX zY!rAjG=#2Oz91kVDAj)^qJjNS7TO=^Kf%XrS8`XR`9SXSuuW@lO(3Z;DbCEd=u0id<*@TqOJPHG!S zOSyQM?rg0f9PY~pp4&{@?2X{(&zFpDf&7Q4GFT?L8#}nVy7((uA0udb{`va7yiTT( zOe5S!3;TwzokAMi-~Qr@cG)bC=#s!;)LU zfq{T1?<)dHfp&}l<`@Lp)&N;)aTbUC8~zVEIgxr7U(|zFDl10{P8$^ar_06W9)td2 zqmx@lI1)21+}kB?^?IKCAzzsE2tqDVar4Ip%~)G!pV~yr)|s23J+@wM>4Y|&u}U8z z6u!2o^(Sl6hx^OA!U@zty+)hF)YXFXM#jSY&os}jmxfDElBIgIlZ$c>>C%aRHnBI4 z_J3jS1((KrI#feXHF@8o_zxui&US=~PlhV5N8enr{Hw}Ia_2Ujd|%!VnSgi@gib%e zZ_iq{6wZ@x=*_BauL9?v2mSYUkd_p4@zZn+dE5M&;-=k|X=bP}v32YB%(G62EaAD} z!QW|U=R`pG)0nHb6zHPz2BI6CEVJ9gU|vI6o^1kmW^0bjq^JS^un@84oWEN5-M2-- zF6cY?CgpV?lj1He&f%FmwXsx zH$X8u(X_t4tp5)v0nb>Ydn0joD(qRM1|Vsu2>!KN#vPHv!#FyTHhUl3G_F2Cwm#)t zX5Fw=u)oMK9l3AaEJ6_A*;_9(spLQN!_ww@+TcTI;}8IcbG)5E$0u&%1Q|d}SA<5z z4A8mLp2-IcB7r%mITH_p2x=XacQf43t{b(P&#zn}gM-72X1{L>^3?~=R`O6C1nC^x>JLVK}gvDEZwLl6&RdnR%R6X^v>EyHj1 za(=~jI-_rn3CG~?V}BDIP$s}S1ZQlhCP)%D{%K&Yxup$1X=@J%XfVES z(=sndv=pa1Yp~&j_W}qNkeo{GO$sJu7rj(6Rg%3|*?(hpxkjL%&A{WkWpnrNRc#M8 zHXqQ{znX~+bANy9e9rzjFLOaZ2F#d*BR_m*6i{^u#>@XiX=95n<=8&7h^Iio2h;Ig zF5ea&ct5Ao2et2_3W9sEu_%y$LLmr*A`pl|Aqa#b5Qst{2qYk)Dk5-)!#jyVMHU5x zmRJ@RSzuUMWr1O3mIZ~DSOO?E7Fj_>6ckZGMHCcKK}8mdpXY(i!f%*-&ErHAl%+PN1Ix5}a)u|wDEhKn% z>Z)HSuNc65KZ=`tqeX}}x&|W0Eehd@a+QMw5I7z{d<}HBR;1Yxl(z$c=;rEUu9s|; z#@;FzOj7F4(c#F;?pp!R+usi80`o`*gfcE(?cixLs^R_#UOM=6-C7;_;s2DJdLMo+ z`X0<48#!D)UHU8=xc{n{;$$|U2x8y6KOgrHkGrS8epEr3`Xd)$35)D{DKtU?0w;WV zFs#?Ro{enXweJQLJ8)yS8*Qi7;tr71&i`)-eZFRa_(DknDL5LiP%5CG{={8IGbxrvtwouKd(VW6o0HPuOA z!cS)x0SdwI@Uri0bI}$yoyknA+jQ7dT_^HsCMpmUife~%xy`>{X8+mdbV5J>aq2B? zGB1HCM;|SQy*9#oH~3VqyWZ(}Xd`;vl<=F{@NLr|HVo zf(beuFpUn9CB40#5&mac6T6EB3d{*%`;j zOg6$Kkq?M;$-jmMYrRqwo#}wgT=~QJSMJuF@k(ne@zj|Oo)OAJLtKzW+xz-b#z>it zilx$t8sBErv~0jKrCcOIBkMDvy-`A*=a|&oY4cY4$b=%!?#e_t6VT0qd?T9orM193 zF1hXGYj9t=yZpUaKM2CJ!Pw4+wnOcJ$JyJv_pQT~qm^CkJ$v{Ypae2`>6b#qPjg%h z^4rENWLFQ;mCCSMdF0{z{*aGAT!-+~g|J`)0R5p4o_sg&0UQ)7%&%5o#C)8$rY-)> zP$>VPp*aEq2oOwyS~$O+03lrnsvs@_GF;zoU<;oW%91oEgMEmjQ9Seg_u*bg-(A?} zQ@tHIX?0D1f$|y2fhQdjA`_2c@*Ks~q_l^JJd0Q~% zH!}A_facR6xA6oJCf4-sTAVkS6Fj_0B|3Yz3K$qe%fq3g-vdS$*(9yv*ibdri-Ekg zQwKl98gowZ;Tb?4l@R<)^W5NJ01(S9Whk|t@bd!B)sY&!E`e5u+N=-$-CI>HT?6jQ z_m^4>h5!|T6lP&>xDJghcOM|x2aFtWRmjIU?ciDEfX!p7z4_{ zElp+KgVF$Qf?~ENmGN#C;2y9qDEFAI=VwlswMNdU z#p-v1EKAq#csQ^KR<$4$&!tXx8`SRPk1H;QhlIFcTu4001 z>P5Ekp8V3jqoV8j`xGE-%-`FhUzTj?vnNDgBWe)g^O_=c6RD->&`8-@*fS5GVujB}xPzg(zex7LMc>>8$I zs*>hWFG_MQWrFb_tHRkQ`*1#)JWxlpg2%(+5}g{@RYZ!aiWw*RpxG+5?V4gELPL+r zh5c5CCsl^d2UccuK@AXfgHp#mudt7h%pfb&=4+@BZ{J&xPVvF-a>0obc~5_jR0shl zDE$Cq<{`N|_)x}TH_3X2h@I}$R&MDiG5U1>`$gd62ciFNiLH{wGxm>!$qkS2R@0z5 zX*nRBcB;sEp_;XCW%#D%I05Cu*4}>oTa*O>z#uV!Oc0X31+Nkp(CcjZSOsbuoErqU zsORx`j17!S;eZV#NG!kIw638Fl&=>=3K}H5kX!ar*KkcB%U0sbnws>!&K9AT?nOm$ z7s7}(_xG@A4`=0`uiNCd)0WrPVVtg}g5ue`y66#L6K zws?QKa0HMdaUZM>fR$;(BU;(@b>QwB4(yAlMZ*V6UvLXyDOeo<;I}Y3Z22TI;9{Z3 z+eXiEKl`uf|7;tR_v=y=R^?ZO( zC@8CGW`6;6YlW^nk=ImmHm&&y~=N?R;*vcCs@pd9pAAtTENS4B{7mgkKMNT=e?i-Bj<($ zBt3eBgsI@?C*`U>TRov=fb#8bci!#%9`-z{7cI&5A1;ERz`$vcz{o04)UVF`Kb`!( z7sH0%v!C%3oj=Nn77z?|KE{Xp0R|}>?gf1I%V_MyeMu1tAJ7e4k{vvi^WyVzxzH>n zXdfyqy17NZS7`uB;2@s+nQF-x8uu4J-%)(`RPpT8r_BWBatgWK9R9YdIxI9a?=MWthX^|d7TARCX#{+^P6NKmx$=`g!~9osID@%M#Rf`E^NeHM_& z??A1^1PkQo0AEQINsM69i69t+?!U_(h>0Q#JH>4_ph3-fQK$EVR@4a(=b>$VcFPeH z;JtURD%(MfF|H7-c{GiZNe&*bjJ6#>+3E53r+AnBM=t3JVXn*DE^$*N0KmY&z`^V8f&fXggXarmAU-t?)f=n139i-p??sK# z={ikvHM{ehN4-3?zB$#&rpP_vulVshnJ`F!>oX6vBpLj*jo)zO2E;j8najqi>90Ur z?Noy<%2yMQrqqNlZW@cO%GqlLcK%ABf&|VT%HBTW*Xx$jGTV2RKME2R%YAo>9ia&1 z^aDext2C$gngE=6T+3GA!nne8^Iy2IjAqMT%F$Ko+WlrG@K9{VC1=YsVCjjV2)>Qt z{z^Fh$Qq9;urCr$HZWP6^`Fn218c<~0R$uF6WEZ$ukm+eJyrgqupA80{l z(TG4mKtv5d^V;maXOYSUs7BIwqM!|daH-Q))Kid$!aez|nNQE?dyM)gJ=Io#U|g?%m4= z;QUM7BpKRpqtze;l1@__&23k+|DB;TJ6(RM!&KSA1xUEpc|2q$S{pbDN?fn~ZA)9S zo&{=OLu~`8#8ku3SOQjIhjPn9VISS3<79fTaWwocf}r*x77f*Bxs2I0>%9D|Fu``& z_5;2NC2L29GvRQ&`<0Xd)@mb}`d<%rm#)$gj87NM&MBnUKO%L5TiFF&SSRf|D~d^A z-{;)aZ5#jC8>q-RypwMKOz+8O%ExWFs_V3s6X9kUu=|Jz2o=GH#$^-^MKlFV0_qPul$L!?f>*R6Qop#X-I1EjuwL*hG~@s~L) z*A<&L>9;=jh3M=s*4P1B0+V7g=NHjP*p6n>hY{qY3_t$k#On%v$I}bd(8QdJfaq`T%aK?q{n-_Jqtcj%TsXp&?+@+c{j(%#~`fwnJr|~8mXGyx3p~IzP zvJ0oc=>0p%*I! zmkI-xl6_cUEz#kn+K0Q=k`U~dseuZB+{gpJ;+EsvLoES$b(t_AfI(2LQ5yDa`*v|M z*dZgkqvqy={OVG{uIdasUB&L3gQOUIKTuHGDO-i}mZs5F=wknZeVOL1@2Y|Tfr`iN z@Qe_8pIp{^)t+F{on}&x*O~BSE?z=->GKX(cTw|J`CWrr z*ba-F(5!EwiRnhWDy}{yb@v{;iyRAGQ%0$3jxUgs4@_kFl6W8Aes^v&)iwWphuqy5R>rL2tqZ%!TNYc`pfB^3LKGBHMHEp*6ckZGMHCQ#f}qhv7%(s}FfvF&6^n4m zdl;>E@0+HHJUo5bhO3pP4=t;?W(#9H^w!aza(qXHt0Q2%?RhbL?5F^jM#%o=_Z|op z=7Q3P+P8HBaiOkxEP8C!sxG-lrS0Z^vjH(Jrii;_4mG|1ViY%FlQ~XNkW1ZgPI#iM zVaTS2YN7gzY8!vnJ`&mMP8)o$n=IfA+sx9Ziy{&L?+q>x!yLKB&|v?C*Q=rzPPoZ! zyY|0VIY$>qHkE|Qr-!oNGb^|RK}qp!@&>iDm>?h;NdQRhx!LNDF%$(dW9^6#5nU-4 zV3QJ}y4kHA7ub)3$a|^I9}oMD|ED253uojdF4I&7kiq1bZ4NM#KD~oQ(QBgRK^Xlf z_Vf)lVZVk0tOy7QDU@I8oP6|1RjWX9W?<4>Ha*>-ydIoPGVQQxF* za1a7j{b6m1*va1OW9J7xd5!NkkI#dO-Z(Agad=s=+rJ>et`07(^$*iR=x z)PK#;TWTD<$6jHUC?kT`{pkQE#_yAeMl$+-bekY)F^O}%R%zYv_CV_aA`v8${<8J7 z-Ah_}+*v*KR7nNOw;mtw3VIbChyI|5LLF#J*8tmJlm zpXKp%vmEugUjS8ycpbFS91WFD2d1Q%v`JdO9vh6F&3Z}sn@`-n<|$}B8GX8^2TzoV znx^2;!XyX&7uT@n9Zw`4chlhLUc*mu`hKvs>wttKx#RIZ!v=&V!v-5F?F1{8yhxGe zjx0f%-g{l^;AP&cGn=h{Lr4M$AX1`*_TAAo$lu{$x{v?z)ytIrS>Q4`@bz<4WmPnE zIB-Z8e<#(6;0Lz^#fq%?VbI+7LGhY+>o{qsysj0lDtlR0pI0{LO<`~t}>2cCwUVsjDkYGGMUh^^q8|>v(lC(X} z`nh0#zZVv9#vbbrd&Bc{U;<2DLO?05ejXNFLJ?QA)2n!AuINSIw^ksp2G1={3zn0| zes#e41KpylgTLrVG^Qr+U6h>XsRBhD60uGLlfH>b2?8)acq+j1hEir1mC&2O%3bS2 z1*u`dWq!_e-0=U+4L$Z3N?5AiicpLTOXrCe7&)topSS$jBdTy;(NBXuFY(A+4THWVxq8aWt0688{Jc`_wmMkZtFlA_ zzGNjrC0kygh-Tk=p&@$zCcZ4Z+}n$)Us|`a2q0H`ehXfD`cuMIdmwExbZ zr}M)C(Nt%0*Yo5)gulL8$CaJ?>}0F$aFGpiHELFjl7SOzmZp-8V52*f*D;rrmTyi2 z7;)sW$CTGrBB}Vaa7R@Z+R*JJOY@pRPya zC2JY83msI#nwf354Q>i`(qs~wNliUZhq(%lu23$508UqE013^7_(*`1cefpD+HHB0 zMZwn0opr$b`#Ota@{0@y2 zKUAyQNp2kVH++}T-f|3SYnT?DP7OcG&A>giPd0x=)1U2t;o4H3x2H@8=9G>X=bnGh zI$ZX?vQc>e5ffP+uK;`d!s|R2D@3y@K zyuzzCk4F+4PJXEY1P_z+^Xz~5BTGJ}-IH+87O6k$^Fm#(Wx3bL_|f3w++}2V@Q!v6 zFqdhZ>wnGqE{v;HcJa8g?s3983#JoupA7H%`0K7@*`v%lOG5Z z(bEm!{d7W4!Wj@})Uvm2u#!ogP5oaPc4F_qT=*z=*0g;v*3i#&9ksfIUtEfvl`ku* z4JclqNh0MU9hLzjpH!2>p#WIr=Mq-lm|6o+4paR{4hmK&_n7Jq0Vmd^V*)HF@tZ!r zO^bR-DSFj6$yjf)V6R<=d(TqgL0!7u-_>`(fCr&*CQ%e!VmX7O-%)iQxE5u z3()}8ZRdgTTx8{r%IB5ARt1kMq(+N_uUZJ?j^H54hGe0;rV6D zzg6>D7ku1FwJvwYg=(+4Iu6Soiaq0N_yW|_v{AOE8=tHd&+ivF7cA0A6IJK1Mel_9 zSDg4b+$z1RNAHxr_^Wjt-RG-e%n59xJYhrcXKeL!ge44;1W`~UXM+tt)u4nRAAta7 z=UJY{eoh~OKc$8=GJ$sSSdt0WBLQRlAqcYzNzi`K=KkLZFPv;BGp04&@kjRd3;l%L zZ~NbARD#TOZ~Dw=ovu4hj|B zCFmW7q@&7*htL6#CqQwt*DB91v$~aJf-CgD$}O|LY;2p5Z%A%%0Hd9C;%1u`%==yf z0uuC?h?w3j-*O77`Dl-m#oKPYbRL&7wYAMk-nA#_^>K_uA|V10gdx&&U;GYFap=0v zhwZ;J^FILTh(Zt{2to)q|GA%FW+gMz%Ud}21Fg6eFg{m-_!t-%7y|YCi!eZVgNTkt;ew0l`a|g4qKJPxB5bpBUK?}3 zHE%BoFa`J?#;zU>W6gc5*YpEEur9vy{S%*nKC-_6=GU~o9wUkni??(e{o1c^d0RT+ zjCcw);UtxEzh|$-?48=n(QZR+@vRCFPle6qw|G7C;AwIK0s?fW+#jQo*%7?iIIadg zd6h4K6S9^R5g;TpsYTBiuCnPf@qb^g#afo!505p$k0mX$T?MrQGdgVo#}<=d)44_@ z6f9CEhe!ib!xeK2NqkxkZu_LnyPN#MfgYX7PpJ8T_I|zr0o-*Z-m7_A9n`1RB^E=Z zKuAUC_vC`$Bc?RBytk;s_?P5y_|BYrFX}~l+CiJL&DId^vAYzdUY*ah@4|75cKexP z0bbsZ7wOZS42D+Ia?`biN1AP;XN6n|u1er4g_?5i&0%3NAHz@mqTQFFUMaTs{iO5f6sgc?Y-hKz(9-n-*mCeCAxqMYM+oWMb4f6}9uT&8wNoiTUE zLs$n01hrQ(vFdRt6~Ji2-*LVFQb?yqU8r_g=;AP0(9>kDAz|ZNLFRuAF@5XF2G2?u z?F{wp$`@H?c&@`f!Da3AFDso|+#HI?gd^Ey3xhuWcM5N=tsOzv19Z*x9bSVO!rG>O zleayvgwKDuIZu}s3BkxTuR99nfQJaY+Jg?3kO2e`uIkFN*wRSw8Nl3ov0Rb1@hKe` zv`2OVliTBk{U?CU9sz<)CIG(Tw=J)(luYNu>hW8ev!nXzNKY&FDubNY?nz0GVSlgM)&y_JyMY!-dj#pnM6 zmRW_RD~X}AgKWI9g*19ax=Ki;;%yBk-F~>|Nh5)kLeP;tRT)}xv15e(*2O4R2Jd2V z@4pJUz2nYxhJh~f=-(dsV8dYsT0gsAtQs&Z$;{K(Ms0eoV z=!}h&JgdTPN%SNtWZh zx|Du_cJG06s+P^A?UqC_6G?m^(FMp{`hzYX>aJh>7JGn@Nqdv_FtNl*HguAj@z=XH z&`VbAckuz6n8C9-t-XXDwzM&^R#M@$v2M-e-D&!C&h+5~jZ?tcP~X*ZexQ+BSyWxe z<05V{Qq)b_{=chWNb2BT)_S{;ANorGB`)Z6GiXhy%TmAq?i_yW6F;aNEW^cn&1M2V zTkAxyncWNba1}e@jAP_rU8AjBxUN{h+D5?Wx%GYEKtMqt-9%P;#~Epw*P$x11vFk0 zORLxgXAXVD#>A_QX6?y+Ir33p6Jhkc1o`rDy}C3uBZA zD%}>RQ}xeeHOtu$?8qyK5fc8&rP=&F)7>tg+N~Aa45Rl~SmA#1WuQSv+SRAKU^p17 zI%(CA+=ipL+?j3JimSEeho{uQ!@rzUXZf@GTdBX3uA15OSsX-Kk8TX(Ujm^bI{fip zJ?#22;y)MR+oSsBXu2DKIrX}u9=={_O0BS|ZPP9GEb_*lWV~QXc9z3U@iL+p>n5#J za;iZ98Wy=Jq+w9O^3{E?z(pnyjSFbhIuigpId z57VOD(n()I*F$Q&ARr)Nfy0?+|%ZUJ}`1&41I8=mc1)~jN)VMNLo zI6WFQ<|~<)x9j4FVc5chWEo4}&KqQ~tAq;Ao^w}StyF=DU_2vHfB7!tOxNPMc zQzz>SY?EYGQd3uL)_ruL{*~zu7M(NB75@m`Hru)ru4&oGuz~~-J>P)=4ak6o#6zNq z4CW$CJ8^e!#ej9QQBQsd@Zz&6M058p*9o^#A;r^H)y{q}P&we|*ZyQ{>fvC6C?FuU z*302OIkzTkPP0$C-gTu@af$0*aN0sK_o(N>+YfJJ_hF35K_s$9o{DnEEw`|tW9NeN zRVE`PEyVQle$5NA^&1eb?JxiDUeaR3Gcfy*kK}f$wN`uZy10ie+(HoFJo<1WuJ%9n zhf8j5xs2{H`uLW~<-l0dwu5j| zhj1~OuleVpXr0dFf~%|T%x62xKfsJxsZ;q#O*Tnx0wqRdKdN5f;`Qsd_f$2#zyuVU zdyKgq?PrN9(i|^It09YwT)$)V`MLUs>9KA(ebLMb+m}+jPRw>)x zs^A6_;CXwZ5RUBs%wf1eppyODzTP^hSAoYRcaLroMk(FvCIFIsYk8?{>^;DQ0cON1 z?kok?vHQ07N~TV^gS>|&3MimZ6rzYi5QHHJLm##2 z`tNu6{7=vI!Qi~1GN2GaNLIEI5F>sS?U0v0tR2T+Kvi3Uq50|H0?!2tLOe~hI+r*W z9z*pP&EEZ?Qv;KwY!DE)T=gX{CEy~%|4-wn5qQE5YiBE!%!4&{oB;?B-Z|+%IZ$G3 zzeEGo_RpS1ovcj#hBND&ehZeQ#r z!Keu&2t#aWZgg5MI9=d!o9@?qFcDjw>nK3#@H-T!CNcK?F`*fG%&b3|gUS|Ty*cDct(!I=b$@Y5to1kx20R#{f z{J1`=#KTwlldF1xu(bZ@tCi>2+t+q|fLXrhr=w^gyTO08a;d?lf?gTI=U?he%FYJM z5eJS{jt!5lC#%cFY5j8^TQK5+rn`_Cx=c?`TF~&Y2;Cep_YUw*GLs1-QCHopy6H#y zt^gmY>3EItyzIs_DK_swwOz;eZ?lq~hM>aYLbI81+V*SU0exmMYrO;Y@CVy|5ZNfH zEnUx-wba!6D}WH-|JrWbLNCS`8Gk{V{#B+j%_dTM!&1%{px@q_b;_{Y(3@Z9I0rNr zs}q8|c~t*1p03fXQLIivGcV%U<&kWB(zrl&K`l#h2py1leAh2NXc1EB0+kh@RR?L0 zZ`bvMw}daX&-wkH7#YKo1Mm;-$Z3GnacX2IrYQ9b%+#^!M>(JFWuy&iRDI9@6Cl)| zC+iWRVAphJy+KrU2+jvuiPN>(VQd&bE)@F0;x4~oD|jSG19)?R$@=i(T*o0bN6Bk$>hp1$i&ggdoA{j2F&5X1lGE(6H;k1Wd7L|U} zB$XroEw}rdf<;SQ4t?-`4|q1lys#BZf&T}1JDt1YYIjlmEuI5k;#89WL1L}j7{r<6 zbV`kDMVF)N(xv*pZQG;;nQ)=`eDZA*)!7YDm(b1s-c6s`LOrWam+xBjRoQD>{lSwB zg^a*NDhh=K?g{19V?PAUiidoJRV^hI~5Ve(t8X z;U4{QUIzf02_Dx&Vd~+~0>DFsTGSEudl(C##(WPWDem zz(A4&3$7MMK^ahBNdqr0!*{K}wLCzqAcjQ}Uf(Gb>iy3`_klV&%epCR`MZCZKuqFx zA?S+BG^s8dNjk7>sj|9~YSxEJdJpCD^i^3YeDr|!A8`Q$5cqmLeVL{mH4e3U&eIQb z9-FMY1yYw&)(&q8?UrwOyxy8l*LJ8UZUX+4&7?)T)&L-ZLJ4V~>NxNEOX*yi_Q&WP zI6;EV9A=%S*z0Xhl+x&sgq+=8EfxTev|od|5A?e5UihjWNf4D*)VM>^@XqwU)s87U zDX*Yf?qmM0nne6dv$!Atf*Wj}8gkY$3;OMZQ>%D*Z4>rqYbyI|pUfYVr)F&KlU1L-Lm<=)zjWQ66L%tw9Ug&`Iy9FC26s_oaFStPGg=>?p z60wD9YOl5QAs|kPWMoK!23B<7;&W~Id`%-Awl8zopssx4{`NN;V7$}^BP}|i+4P3` zg!2#~ou|if;&J@nh)Xkhfjlta-^0#Sx5zl?GL=d&T_8z%?3tZ{<+j!ynCC-+N zYmMGp8Q2Hdtfwk@FXiZl6Uq91&HBIKOG^D%dEBr$Czq`>HS%0Nb24-QfPkSW&q}8Y zo$3YzF3hZf>DfzsY54c>u8ANH)cq5=X1;#Ej7?H7Jp-QG5h{sW@HPSJOF{|D4Qkp{tspx60TtX)K_ z{I5*!XCD{V_rM{Ee!JNRmjR{+xyTOA5?@K4r1`nGWW!5Ki1BXy?X$qCrNYR!Px+Gn z=&(RT8mtRCrT#w|R4}K#F?Qmm0)F-JV zm?WIc1yT~k>C7br2Cdj zR;IUm_ywlxuL+q;{P_qIfP@x0)?+*E3j5X2Fdo_0hKSR=l2=GeOhpd6Y77>o=Ly1_ z2G4Z=H+_G+-F5(!Kx@CuS8sXVt&+tZ*nJNDxDp^BLLNh z@)90_5&$7s9?0JkP&ID>ikd%@?&RTJrCU7#h~_`xia#ptcgdFwH{J=Q5H} zUVfkNn7b>RpQ49-a^yDfYU_BCT3Z96LxggjOkE}u2SyKEV%A}z{_(3 zG7fJJL&iA(C4jijdO;JL*=2qQBjGItbL=+I47j>fGjmZ&;BeXKiaO1^5T#v#Wez@B;FF zFRrP9?*eqrB4O;4~b`T)c{Z|!VU0n!fo8ep$Wb?>50qX*-F=TPY5P}0(axOzpcESgmQ3)iJLkLLXh(bEpzRe&r79jFuV5^&5 z-ZVb`%QdHB0Fh7Mp(BS|Kp8nKU3SHF#P@48%zld5lSJ@0{GU7P5GLPM0P9Mf6*} z0L~Xc?i>*A%!EP$097JMCE=`5JkF0jPe5b4TiCgdZuSUasE(oUmXePNgl z6`#MOc&@);rWAk8_1ngR5}&-R#TUGpQ%P;dQkKNv8UPSe#eMH?K!67pmKsa}B{7MI z!BF4XLC$c}68HXpp6fCp2;$P@!{fuU`|1udctE%l6ieP@F#O8x9Sf1t6A1$g(f-{# z-9C7GvAbH30{VXGl-c$<3&lxtrYq#vqfn-`Y?}Gj%KT}=G4S+)Y;aI1HgVxJeY3iB`B*lwba_bZ`&g;&8k>Rnce1+hrO5(B$O$33Z=Zg3LP8tu zsgshEQ*?ODB{M2I?_PIprVZG7|1f-jXJrX~=5Q>N%WQKnbb)j(-vb*vI<1{DAD`u=9W`$Fig&dSJ$?F5m)@P=qJ&feEP%)n8DL?H;?aRL{6 zTjIl2P=F&o|Mo05GT#>0jS_!+W_yxR9lW! zmBYrwQ@1_1L&A#Q>-3<0KEPukV6;=}Un96>&zTwNQqsYNlW9N#?Wuln7v(H1FkbJ9 zcCN)oxGjBe&{^(kDv4FN9S($<1fBU*D=3)O8m$EWI}@5Y7DI~ zHvGEh4!#yUb`vfiuh@hm-X0vBUaTkK$l5#q?CY=cwR&d}AB#c{KzG5)2QC}AY}bS) z1Jmbj+N!Iw<6JCO>n@H_Hzh#+iUYLLAJ@1NWla}&8&h>X@E{cz)s{UQ~ z0`E%=O~@&-v~f=Qs^?j_E|->$`K(!kd``xuT+9|T#|GV~y~kZfHyw|4Z5L>dY`bEA zFC6XElZlXXeXlLJjf4E_bB>-4kQBM@zS(NCn^E6_z2sH8%E5aIaFmAd?@}{+rz`{U zKa;EN;kN6 zK#o=Ggi^Kx1%AL#Df)3-k2Y*3!h{}SdhCA>Y1Lo(J>(4}JX>(}BhJFG~ET9RE=&E*Raa;A!fb@ynAuEf!aAZ0#UPSS|Sb z5JPe&tsPGfR5yRtf!xkH1Y~1-;C!xg_&$!GslfGXc5oj`Ft){Ofy?D9HM~cw=YpGK ze3Ld?ESBA@Q;u6&fVc=@+#uMpl2|5oIe;?gyZ3kPCOf}?yl#LZ7yoYeSHY2-o_ev2 zY5&L#DbuFM0C(s^a>S`x;Ybw!H4DBMrz2z$8(h9yU>_jFYw=r*t2>n%>;g!l{=qyL zn++oVf&TqDCrKMx7p{`JFmw&LUDl*`-C8RK-nV^zyf{1QE~bs7Kc?_x2UY6Uy4-A# zY*EVYYTstMK1OcCZ}SC<+TpSRPf_aSWofnEkFNWTTd>ycl4eshj4X+Bms!?;VG9IU zu(jp8290Nk3U`6?XTQ|JIHdQuItL6ffUhnZXx#SVJ1}|u?BU(gzrKe^E~ls-!v$%A zyn?lMp<;?M3hE}V609b9Z1cJ5s4LH*{uCoz|E;_f|McBJqPU_mO5GX`^^T& zu(n&;hdC~zL;44qFCa_MdcpEpff{z)AM-bqli48R-kmx79p1Uhd*&8^d*4McTHgY0 zr{u<@k?7Dkh0W&uDiBQBx#lRU z6lFE8k2BG01^V3IqE53pYt;N0U@Xq%#M-<+W=?@IxYB7K05i~Kg2i9TO!N97@S3%C zQMuLsBt7?081T1f5Pu0-w=h+?;=a7izYKyeHj_-FtfRBuU zUvTUj)}-CYW^Z(JDQpvpFyRgg$%0+yVjIQAnO42@CcPl=4*=DNjB}I*LR&tKm34GQ zokhe28T+p4J_vggTv4^CWW&p#VBuhDR#uQdyf5jYT@qR}PO+1<%3zcd(@+5jkv*nC zt#mu+fuDa4TjV?sKR~xK&DvQ7%Dmw`$kGsmGJb6bnp89AYibRVXhI|pTlhJ(3|xaM z&IOeyDlCGF=w%uR0Vv7b9lNh>%A+*BE}I9Yf}B>|j0vcaCd{&-$>!ZY9tuiofpuxU%t zu;{j0wG3Tjbgbtw1(|^3vw5BIDz_|+Fc1P(``u4CR+?K}-b9d)A?oX}x!Z;zS;u}9 z;go^mZ&Eb^kTt~ovuurvp72`@KC22Jozwqc>#hrcw?tICc@Vc(b&kI+RtOwE;O^ee z*HM-D*`MGl=^}}}@rgk{X>@Bm^yxT5UxAWY#)(sATjkolUHWDLtb8gM`PxYS!iF_wC9E_wvbJjYPy- zCH7A#YQu#5hZCv{jtRG&X7(`uwz^go<*WS0wQwsA*B<+!q|j7o=haW_8^Xhy_1DY! z;Ar~|QoV89CNg;%VzK}`ez&f3eydEOP-Lhx;*({#RJU&Sn{8{Ogo_MR9Ws$d3BLU< zlHPOiL3OhsB$5OQ74vHO0Yzy-sQov65JE6~?!|aY47pyzYZ}WWiCfw0^OZ)zkGB zOBcdGJV_xU%|dv&6U>_}W`UDk z82fO^#m0jvts~_HqidYDji^Wjyd^gv@O8qWAJb^aExfRLtf2_PAqeQUvDN-?1H2jV zvUj6xS2O`x%jkIWEK2L?aL*bnPYEEPWT|ma*9_lR*yp44wa5~?Q0Jfn${X$D0g1b4iD=0@9`nk2#t^Kmk(PSAiMqgnyL)Lr>uJ+h!W{o?SjBHBMF?QKB<+ zoeYZl!>d=RvW%Ar;Nf+-X#VN%e)~=TuV3MUX4}u`0+`L;FSd*~k8L;WIIa|zru#^D zGe9Unf8zw^%pNOiV3IR9K7R=br! zmIQ4nFX3rYWi<}1pG4}pctlvIUXET>e&5}Xtw*gX=vF_{S|G=iLp@t&q z+rjQ&%Un^BvTgNrl)cAXds+|?k3txc)j^oX0u{&JRSOG93LX@eJO6+Wb_sW{b+YR2 zGK%kXs=4rxwUG<-5PJc!lNcF<1Ow3`91ptg(M7hWZHNOdXSN41eS=qZ#MpSX9f|TDm!fJ za~;C%%jWpJ@gNm>*R1juK(9jW8@u%F4U3aDAtg)i;OxQ12szyXI_>|Yx3w4yX_(3a zM%5fvD)8-i1n(-s$6OOXwGpdZ-I}_;dTNjsXdc5vn%&O^^ZnPvY}tkDs@ab28n_FR zh$z_r_S<#3{mcL%=A6-c3A0u9sTQ_tO6}ev*faO_k-iTM#jftXFRzsGFVal)ZgsSQ z0#qe?V%kM&n0wOef`pHPDN!r^hLFDRHKNFT!u9lQs#%$4+`@g{51@P>wKS}Ngd#=k z9QPYA-g`7v@JV;=6tDn>>$4ISG;>B9vH-aAs3rg!-=ar5STB$wXvQW%4Qh}7c6njLp#8}K% zp*0i#)!rL4t4$A$S_g3-A#s`~c@3x6A^8ED$mnYypX@nt%O1%7R_*?osr?f42N^E2 za1oPGdq?mMdmzC`w?&&G5QH4uIarpmwR2#8l4by1X2#k!r>@rO{d~6kCvMWzJ?;SE z_GIJp5QJYT!A;rFY*}mFJ^mNh+Pj|Qkz4H0^3$ALpa~+?@uBl0f$H~4oX$UXTKIgz zZY$-e`TQ(^fD)I%LkFLSu-xsjOb=nz2wkV*{0IRn|7w91v)n$n20wv<2c}DNHAJk+ zw-ig)i=B4($hPe9a!x<`u`9K1Yr1l@KG5zr#*$3;x|Y!VR=^TKjLq~Ud(yJJ0OeT( zU~_Mw6&Y%@*2o$#sHk1iG6L4DEamsHq6i=eJyb|r(*`2C?xz|2kzcW|Rnv60yO;2o z4`BO$DW1!I>AMBlAf$Te-3OnlsekDr$v4RV%+seWPN0E zjN~X;&xV?6v1A9CPLNP`60`7tu0*nFp^cy2U1I8JUl?gDg|10JB<)9=*g%mkIKJA-98sig!Vdx>) z^H7iiSj@ez5w!E608*qgxX1P~AOcchldjskcrdTT`(Ec;@MwgH9Q_n7L37FQ_&>g^ zKc+C|0u@WCJmcysZZ)p$y78I}UHP+Hz`k>69|tJ#-eO`qs9gEaAT&0s!O@P@vFzx} zY(JXYca;iz9Hqb~hafopIk3Lt9h@_;9Z(2D2CWpT@EU*?Quq!}EMt)Di`rWQb_I2b z%Oq6F$&}ZdHs*bu@x10m~%XzHle6|%XQtGTdVAwIn1g&jAdUs>dOoL;%xg~yEgx-T(Q?n>2JkBMn% z9xmr$Z#~vifhc$3;Ndr>EFzXl!(`KaP(@BuV8;QG+2n$~W(=5Kascx?gV)qhfG5GK zlZTBDd?q3P@iG>RUHr@M(hF4+ZYdUXe`;`SZ8Wm0TAIHYukB8*EB;z{EyCld( z_Mme;^@}+AuuVAAV5vV3@&v;75)D0Mj(5zCxi}Y)6)bf;j?8QuGgPflQAf)L5Q&=|l&2<_{EJ4Gktz?hvx_uROV}wiq+YAjQDn zf_$x*BVY)1HY&vsjfIN(=yw!+PKqZRZ^KH5s^gB`hRlbvvv8ixSR6N&d@T--4PqN9 zDRZE6xpz|H( zR{ow*1h_*%;oJI(meI|P&7+m$@6KKgGf}Hpu&i=wKF1O(I;R^iV!DRBU?A?qRhUqp zp2b800dN8U0SL^yO27Jj&R``Sf^;x znSAAZOZawVTW!BvkZy8xNW}OU7DQwo0SE+DFJef^X#%N)q{%XgZmo|^6%-~}Pj(M& zFRm_}cZv`BLzbglb+;K^Z{}l-!P$ZmK#C|zhAlyaE`mw$I~@S%*QE!Nm(|^xlS}i( zQiYcsH_aFn4(mK{d8_3OjSW?R!`T_QNre16Axw6)y!fq`yw0{7qYqqrozt@71ds?8 zQGo&)KH0?Wx>+Y6u>Fpwv#Wb1CFH&NO%+#Vat|C_y z`aZ;}FE9-Z--{DguMD52cQJ!f1N^i12j1k3@Bu2N1iDn`hEm7zwxiL}-97~Ca@)EN z<1!RoqCyYC(funZ4z3d5X*16UPOfa2pPl{MbeMX@IB12BLmvVwVZ;8#`z0MhDT_(8 z#LD3m!^$1acx=%CDDJ3SD0GK0ELFJ^KJJA>`P$1>==iXX3k^gVzl4BPLc4^uLErED zS45}F36^YKC0oUn@Csr2myDi{fI&n;yiWV;_&EX=t2q7{U2m)P# zm>rce&&^e@zJ53>hXIws@|O;Xh)c;#qtM$u1k4yPE`MMp$uLJW+lBXpa)jg72es0N z`oi8NA~?X?fV`_FX}y>m)rE*|`uh-Kd{&DMKxX(W7i|bZTSNlpD@KX(i$WFQfRqI+ zfIKJb1Oz3rP%yf?%-uGD;*_^>a{u*v<`@0e`;qLV+O(Um7D>yd7U&AFBqT0lX1e=0 z^YFO)IM-+gtN%}TPy81~1p@ z$Z*nAo8*QN5*u?T*g@XfoBI#^Be!ZLR1OoDYcH+et95;Lny?I z%XKR~oVnGiGM8Cj5Jv>g-KGN_ajd`OEbjnhLNVKaP{Bv%JYV8XO%xM5)D}wfXouk4 zdn9aFQ;+@|z%T;6oYp$q!&J2uyS*`9beZMJPis?*$b^IlM{3b2@CH_S{)Lhinx&+d zbIVf#2X7O8Vczz`<-X-c*Y;AN6H(#*KF80(z(~h9-smb{qi?Zofd3Imd}7X}UN-bY z&FO)4;U94gX3ewDaUULRQrWE5KfT$-$8l$W9M0}WH<;fR)jJ&C{m2tZRj!M>U_um7 zP-wJ#zNh?l;!0=(x8>jSG#3*pO3ucmpqlHhYdF)5969)%|9G z0ssLB^m5fO=a94nhmockb8hS1oH&ytzyyowPD@PL-q&6d4oO?$ytL0Q$c=%yNw8yPgC*?JCwYFK zTxz}bSoHJRjW$>Zmo`zrD1DlJSltC!1VLzW6+dXv)lpxx$OHR&etD|e)p+e zKiCYXQRR8XXFyr`AAO#l2!3b7Ab^7ADlW)BdmLS3&7-o3Wsb zSx&Z^>azst#?vmKWi)bOV2cNXY47nA})nK|i&VgS3T7*zq%*qI|&#d28n8 z7E{S&r1yC9JiF94b+!z*^zXj>UrM~Ul5=16+KiTpVqLmR7i$g`y`RfWf4l{RywBJ4 z%m1i*49*sK?M}Jw$r3a1MR$<|01|<2U=RXdp$RLW{z6tT;fEAHsZ5C)aMXr~2e=Vm zzC=#+8iSe*f%XJM>rp=hQXFuv=+jo5W_tf+6Ma}j1)d$~w@4owe+w0x6@4i0wee+&VZ?C?~J?qZz zuKO3+_j-<<<9u{>$IowjKE9uA(|z{tPqp6Oj7Qb?ZZ*s9_jTU)ecn3zci!{8?#p%U?|XaJu5-MD+}(QXd*_~=yz@=3Yqwf9-+AA4b$M5A z_4adpZ?^Zl?bo*D_pdQNE>hHb2l{}BVZtr)UH@nU~#j|?ciR;(AwqCgJdwJ`;d)qzt-#g`+ecE1$ z_S4?G?;YkQ_jh*d+v}db-+7(iZ@$$%^L9M!?z3uNd)>XA*K51Aee2$O?svD1Zr5*f z-tyzuUEcR~Z+orpUApHpyWBaq-*xxZ+fR>%B+-xn&;g(VU;xkn00LyeFie=30%bf2 zrUGC_6HEXEGGx)C0Wg@D0002c8VP^^5`z&m8X5+s&@>5v&;S6K022TLU;q(-CYTAD znqZn}#*+X5GBnTt005XKm@0maG-$#YDUBK`L5P|OhM52W13**qm;f3L1Y=Qzz%&Mi zMuvf)G&Com$YdiXLjqtXn33qvWYZ>%GGb2<$Qqc*f~T0KXbBFCni?7!XcGVc(?9@e zk)}qNjZD#zpbUTjj09w04H1<;6I02inkRuYPevx0GGb|ofiRd6lS3wqnKCrUX`@vJ zAqnUPiR8j*lSU>+1Y~6~FeaL0$>^9S3V54AFqjFGCPPM=Vq|S5O*V;*6HJW^lVTcV$&*bDC!sLY zOhD698USe1Kx$(~fM^o{m=kE5O(p|DGeI&jp%@9KjY=}$Qhwv~uUH!>1(7TXYAr>G z2k0^Y5{3YyA3O~9Gze0Ff)+q4g~%9yN&pOvBH|fnM3s7Wg_1Om7q5Cd63 zNkJgp$_OATfG*_#l9Un%W&|J`X*>)Z%b_b00*EIMZ%8abVhTVcAREX?02l-SP27M2 z3c#R&S_lCI6OIG`h3Ei~fCxYUARBR%1W}UGO2h;I^b#%P+sTLoF$8ay1d`^MG%x@_ z5{EECFeko{b;Uwg1p$HtAc2TbE(BkdASe(u=?xx0MQ9;QdIh=2fYiimR55A*O6N2H zkWd1kln8zux!nkplu%q13|`QpfeIo}CBY#nhy(#%(IEp>+~xNdH14}fS0jeb61W1~ z042N<+zCr%ktt1)0Yws`iUc7^c&N&=$vLQs%`lq4WHE=XLap_JR*iQ)&fl($55Q+(Gc`Qh*~pEvh_H zz9?6MffAJ0At;JO8XXX42ml~;5V!HcJaH#IkCa9>WMP(~3B?SHsXfZV|`Z9o!| zfIt;+JpD@6)B^$iCy;@ELsz#>-l-26Yc%HRXDy;z5OwvLcN;(a;h=0)ig!`U^}dcP z{-SFVxR68ZLmXQrfgEEdUrG$I$rOS#pc!T0gBA#gCZ#}mV1N*9MF5NWD~VzOHK--z zoT)i-SCWEoprn+N)(BimgxNBHixm~4sPuQ7Wv)3{WdH&Li@lK7VnkSfA`DVeh*M5x z+A_Y8;UxsFeu0=KeeYO~@w`nt;5HShkVo;gwYgDnS;J!zb1|dy)K61)*fwD2q+q%h z<-8ZACoYlPnYEoH{1lY;>fdh)QP=_TTOIiuHx=ym6dL96O!pg` z29NdL!HY(!&Es=`Kpd_k@FHBF*vSpZ1$hKvRsfk|P)nVX<=0*T72M_E#71rv)>mMY zvH$=}Q}3|H{q*yqTsKjvu}hA2q`j5$o=+*TBf&89kWE1byZO#VQv<=t0C}N1&DKpS z<-n>=9fM^A2UK~F}USKAA|Q7FtcWp69nYBmPaKhc-#%U+7y3V=uF_ z!&g<08et9qAf|!}3C0tF1fZSKodnL3sYyD^1t;Ix02c!-keY7MFaLVaG;YCy@-i)W zfB+k5U3K}mpfVBA_fW34w5VMvvL;^w3L5iCS2t4S}M<0jvlY}Nj@Z<@H z2L4qj1k|LQgP+4?CQJq&Pe=YiM^AF94&RNtia`f1Haxwcr*G+*V%k>(>%?hIF1Fm5 z)!|q@DpHAPz0uIe7t}8VG&*N8E7JDfn;v=h@aMKN=DImz_` z`^$0!JJ6{!x>^hck0;;pnv;ukN8+bP!g)?cK43i(a(|+VpzzOWgJeE>9~SuC%!>dRVWC-Eq}~a zX-|}#(MGv%TRmWZ$7$|kqG;t8+0eY{2=?4F$6ir1{+Q>_FHNy*eIZhXE9LE^X@Gpn z=KNI^GMtYMi*BAKuK^1h3GPl3`c5FA&J&0#0ywIIQV4wlETwN{8&b=$|Crms1weLD z7J$%LPR}uxk~F_Tg6Rf4$jUGtij@n#vz(}btDDBJn1j7kY<}%9yup805*APhmTbp=da!LFMIErP+=0vZZKYzzpb(a0 zb{&R3e>+je-jAEhW-4CEUrLqg`vJ44J>Mk=UvB5xQ2<30{4#Qy@93tZWm4coV<24c&I>AM>w%gcb(-YHvgK%_Q|T7#v+Tovy-qzDe}`Vit4EZ> zO4{ljvhVZ!w))ye-1BTyud?N(zL**?k`G#^QFeXbG~kS}_89WlED6C9$NxQKd`kkz zuQP}z+)rNlS}w5B@HL%FwjZ}cEtema`lmzi&1ar+)~ZM_MjLt90y(VZx=x)G)dJ9+ z%$eW&%Yqe~zRUG&26o2pAPgt%qEzq(Ho?C`o0^#|8lIiFj+?dyB)S53RINeE(?9V_ z_cz2!_hcn7z1kLocMpqc_91b2!_&-i0~)Hw-X3|T52I|8f~j@Ke>zPp^*p9#fwlig z9VfxIAmue6pS+g5&j#R(JH~S8w`GoVEsjcD?tG~#qR=CzDFwH7iloV{>{fSh!ctY| zsE&Hq2J_BOi6^piCvF|7W>O!M5_^3ym{kk?bW&+po=?DBL`Pb}f^4U$Lt#9NZlh~3 zg1;YnU-LYrqz%ceyR2J$xDCxF?@hm-wlsgQ_=?u<9S9~gfCJbfwD$X?xE)+jy88`$3MyB%J6R7%AG)G7+NVG6>uXWt&Dq3uFRRa2Y`v{A# z?R5I-w~zY$ZSpgt>$%};?>sBrpn%2x^u`<3+3gWz=Sg$ev4!}|lI0>si;pl-bT}BU z*`gyT+FX0D(ViDQvmf2@Lq$$`??Ls>vKNrmOauxB2QehJ$FiKxrqWKscs4ia-0)>T zXKaKry)k?*)b%t!fl{xRr$sD@oO(Byf`4@l(lsS;Bdue$9$QFi2lw=q$1Xr0)eFTS z7e|plEH!7kbP6gmc=0`Y8pIyzX+f zLI%^%a21pCG?2ea4s|=8xFF6{oYYnv==fWj*F)RH z;21St$+-eAWz-R!P!Q{&R1l#%Qepm}M&n7dw|%Z|pFU>GVbrbg>zsUSIWDq41zTSx zOurXCxZ*aptVo(~($*6kG<>_zSMn7F_5PT-JiZQXf}oB3QdbrsDt!%9&z5QMDM$fv zi_kIg+1wsO(m5VZR$s6p2WA=EQ69@}gH>zbn;rZPVQ%!`{&wPKg=|a{AN%-8<{i!U z!iRh7Kk)MCF{?}?#MRWYu>uXEauxVw7Uio?h#-q9NiDfH*zjn47yPw+WaH{%JP1bz z8ij}gSX*6|j7a4xz0AGKY}>4tY+6Er2GLTljwyu-g3?FFr?a(XJ+x*P#G3OTJ8o%j zpHo!nZygb9Wiqxxy3&rV3~WkN&kOO3AM9F4bWLJlEW6m*28Oqwwk`q)=HB74y;YTg z8U+~8L7y)K!4YpY>|=$9{~7#D)J2g~zUNdm6C%U=v~_IpFd(yWaJ%}`SS(i+9@1=A z4waqjwj=r|`UMi{Oz&w&V3ypP7n85ir&C8u{ZRz~J<1N?cu{st5#EceejlfxBtPK@ zZ<^ARkG&98_I4!F?jXNZ0_m|$^|zYX)V*uM9~LK?Y*#4=LJ))@2*?5Ly=ZaZvvK+q zjt{Ey3C10ZKrL2Ow=dq9R2|(BFR#*Fjt*vv9jm}qL0$>NYUxP?b8EPt@jT~V*85Z3 z?#}jpzq>mtBHvrq!}rmEslHfF0-|Z-5=ft>OFPjjPxv?7JP&l|i)Eu*{lXUER5E!f zd7;48yl_rp@7lC_g;Ngs#1lIeSmz&bQtlE)ccrKu_Z#Pk7i#CmH8Xu{#&5gxs5v|l zdckDLKEk=}O8rMFzhk4*RW~%}S{d_?lnAm*mPbC)w7;#e#1(SssTTYd8tm^{Jd!iA zj9OO@=wzd_ze8ujPMX0X(MZKvovP42=Wg1F12$@VjJT&8dRn+bm@o}sk1(L=cR+ia z&!*{4#U~93qCt)2-Fy&t%>nCS00r}35C6XPUJggd}{y`lH}I2QS#%il4?Nn!Ddt(mRs4Mjv&Xdq%l43k5k zthrCC-#768bUYcdAgLbJpFg0f^j0#p5?AvaHsQ2OR{iAAHJA}f&GVzLSEBYFaQJ{Z%>%H zR7PquX!IV^(I(5Ab9yOlD3}~P7t75CQREToM?H|Daa#KgS2_1CmJCDANdE@l-Kt)B z6@H|Yjq}5>$KCKeoklOJm^BG8UH^=}R}_*0f=nW4@OuI1*&#aw9RNYTJ45r41$VO? zCO)=NS@S<7zK|$~KfKD;>GTz7ldhqbFL+LT`aI1`UNki0sV65VB)BjK2ifgY>N10X zj10oaHr;{XdL)n3`Jbo!d{@+m<_fu}9pM^yriC)5mnm8KJo}+H{;FaC9u2%_Mi0tO zcj14(mxBTc?KStLa`$V?w`(s67{r3*%X3w?jEJEnVOi7T(WvXEuuwl~a;vrCC%<8) zD3*p%k52e3Xs07=OD{1f(}bo|gCQo8s|mq#2gP!l??dYvTI~?6rmIOg^WrxX7Hdr% zucSlyh`tNbKN^1f;V6;pJ*)PgMf?IX{DnNWht;DJ@p$s)dGf|qSP8=nKlcOe$e{cPm}t)F7Q2j{x_=BqS%W|z^p;FNGr;|U za2rbnaG75Sc8!nkw{zc|RGKczP8=@Q6C3w$nYG5$A;^=0bBQsBvI+VY=upe8JdE1k zT{-w@mR<^B)%;nV=MFTVM%Z22XZ59b&!k$;gRyCQDyuHXN(&BmCTGlvMMW|wT zfdn42dWOWE`sN;62+LPd?SKFTDobW28AYTZ^B`%xc#H?_WpdJzj1p(~e}@?RVk>&&uz(J>8OvC7Jc;uCFa%)M3k^QYwJbD< zveziPh38vdmQ=)H)pu>0@eU6{YY&1I9**#yqYjRB5TP@yKX4-YAEt6x?B6| z%RoY|sPugz9J?|9+l-qimy1Vr-!-5=$_e@6&eZ$LIanq(ydpSB=NRv2v!mdj*7P8c zf3SGD(DrKWIhO0EuvfmXA3xz&=EGE`c!IFA&fY2V$FzMajB*CybaWp>8Dq*`O0ajBwV}Q zv#*bbnF}*7niVVXQvj?+J%7d^qRG$K$*a%QyELY)c8cc~`igJwtc0*%1R219f`z3F zH16{MS1bta5Fp4V)D-{lAn^I^W~bK2E>|e4rI3M#g=XoJyGRX0tf(sK4(hSE!oMhoP@2|vyURF~ z&G$O@ANEavOplSh;T%5nhPQDGy!_!|fF*aVl`Bu443(&Etlo?6BN1DAI&I~c66Icy zN_M|{HKMby+w#IafBSpSxYEc(wQpfpeKj-;+@^T09-7?0F;u!E^Wf{lPC|TFRT{hK z?iVuh@CV}w(@TB^P3jxV-L-a!9;J_6y`$IT#FnYpu`=PL?M>&HJu!M*HPyXrM8o3!< ziH>PXpdH(lAT$F0_27o7vbE$n+@*A711D@F8l8Y52A8VQn8!kE{5HL06o1>)`gM0% z`bvy4W4%dvbinIp~o`c?~ za~i@>AhW3ffU2uSH5MtKxWB|nTxJBTUAn?CY?-=ICV(FEaVdiRisy&=zJsuBjkd7o z++kS8yxzy>(Kb4h|4SXAbde1jkrD-F(_H0Y9iV)Zh1Fqb>n+ zY3(3Yxz=URSWZcDnNaQjMHw@VK(2xb!3$wuIUu%53SCcCKmI`n8&J{{`XUZJEt!TZ zz-~Z6`)LjrtaO`9{Gxbcb?c@{wtxm8+GVz%Ub1b-XnSlzjhhFePVeWqJE-$gdBcn6 zD(hgR%$vIZHF|$(SZDaBmCT3qA^sn3<+Svi*`lvo=H_6RDa4wAbX9c_)72?pa(q&is7x zHbN$iFjDWLu*AXfKU-R<&@V<_$r@si3Airt(9g$a%wXL%!VsFUbBs$hY?FhH1A)=S z*nhL48PzPz>K&ceiumvH?%7bscSazDrO|}NNI;)~2>x;{b*(7qjU#%JVJ#PN_3pTu2r2Zhw?%7kS7KQDy~qB>jW4Reg_BHzmcnvnGQ~L z&f~_X*9wQ%ln5=Lf=C+-#S1ti(H*A(~Yl!gQ;e7sK+n~Wb z57hsJ#mLIonr$&ah(yJ;M>M?_aZ227z5S3YW>R&k%}VhWlBzxn5!+d}tAg$6c=bJA zX}X~}xi@do@VNRNi}}6EBw9^t zZJxcRM-VP=~c88AYk z*t|dlx{>3eOWkQd%Xk`bH@yM6v%7+y`+fSaI5k-gXPS{lVZlL@@=3{=oU;B=EP;kz zJSzj$o|gpZ2Vi3XF}ih2+|jgI8=`VEdFOI@*q55`#_*lQ&Wz(ZQPzJB`Evl@t(Yc z_8)t!42Eaa2DThAp}-iZBSgL#LFQD}8t zsO*Zh=e7M2?89>KB{V8xO3~)c*T$+N95r`Y+iOPwea}Jbm}DSeqS}w{eAbOk$y}qR zCPM~Prgz~l9R{!1@~r7xeAO3Y7B)SCmD<(P(#E@6#Ld(tcq!P%b>KuPEvIcf2_X<% zS2uA(n#wa>Gn>zgQb<$mSbnhWhLy|;^2GOCQ9L}$GtkCH)4`3TB*qty2$(#w7TboE zd7yYSf{Ky}QZ>@%*+>9EhQPvSvkJ=)xz$?p2QPg~2}(dTNXWCY`VLnoj3eHD0PHk2 z{esjMS1L-D$a$09>~?&258=zVaO-y+o-tC{kiRJCvwB;|g3%^^&k{=NcIVXB^)NAq z@L8seOv?ys$RNIp%6r^!iNdZx>-Hxg$f_1_oK{YnU9Bw3$57_~NLrsM-a(dYV~C(i z_jyx|C=jHt4t6701N|;fb#u+0wK)4jw3C}}^fKzSLi2G#Cv%(rcs+A3pq%8B)frJU z4}%5ZdXQN$n4mqSr*^VA*O7gUw7oriA<{Qcodc?3k#-l>78AUEt!_mh7y=3JSbqi#fn*6_H1072tgyOK(m2~%y_ zUM#BJuxnj8`-%xs!-NW)#x9p@4@_t~>WmyJDD~2+hQ_X9upgGD-;uzE#G>Z+?+1U^ zb_H*w4z0`Z0)ZqD5L_QQNn`^0?mu5EFhSw#M*90HDvmi_66qlTlRllSK_vu+=J?>PImp#5@Ye8wNRf0rq^Xf=3}UPcp$GwcQ; zJ&2(zT{qNZ{O!KdrfV@!EQADj*Du`5xrB{9ftu))>eQ<4STugrc$RE@M1O~^eUWT+ zOGh~p((P0Vwcz@+pJR{S)XpL40rsUWT`b6lc0!zt+U)c6Pm>dk(YueTky?l>FUT!6 zDO}@SP*C&z=zfu01sc;lfGbEvlZw zzA<3fedK1~j29u;!DvL@B_Onvh^l7ETaWRL@uk=A`q1h|cb{AyL;Itsk!~6cqhb+0 zr(vv1Z!9=18!le=`uEu&X>1I(T8q)AMs{bz-sXE6`|&A_2+r|znRo~?&Cc@54I)p> z%ZHFX=L8z*DFho219xt{_3DDt*Y8xbrng&1Vd#))W9VALK;NKs+;dsowuyGuO5gw+ zUY_u^4`Yxz1F?WB03Z3AKYc6PYvre1WdIxV|MIu#*NqxY8!(Jtu+BW^39eFurbXe( zL#rK*{VlEDG1!-J7{~4L3lW^Id|tH#;DLpp?Kp6IlR&muwoAwCehvAwVYj3#Nz{QR z1c}YrQ3ZR}Z)t1VD7aTwKJ7)Z)_)}l@udA}RdFsQ=n~`*Pit_JWv`o#2Cnt5VXu1G z>^xfs<-dI&qh`}n3!k@J(C&bp+lU0c08GFH>|tw9^Ku_8(*v?1*mtX>bkb4LO+dSH+((tniO@yEtePb3{wB+2PiRftIc;OL}dxBxupw)oWRLZ}; zcx@U_tsVMI?0eF$mVcV>$}m4J?za8BV+sowtfj(w^b~{oIU6d`r}$BqNi`}kKBh)c z`seQG;8fcn8S(2c{9k|bT?@P$r=TD}9m4HXU+h18TXy>%;_A75ove9)gKvFYX)`Un z?*5pKiX;$zVkR+8Jz=dPSy&$ z`d?QzRtV%Xotp7HE6(dJMYhWbuq6}&Lr-uC zV_Z6c(h@vb5GKeQP%D|On|4;E8n;9+e?LdA!4zWMR}}a9qahk+-j3nrnT_IF8Nj>-bG4* z1qc8j-Usr9f7UWo>s~yDN7G}qZ>6RDRo8LsgtKEHx!0wxt3qA{+RC^9WonnMH?A6l zhj0}HuO>A@Nnik~CDB4WaxAU0Bmg|tp3kjZ_1ChsyTfAA<#tzXWKQo5N~OLX30c?pNzu1{s>(X`I3cK& z|JX7~R~}b&guv7l()ThkaOT;zJMQ&%8)9{f7pH^>fcCUbOdv-zw~hNeO*P6}ox0^g zWVhX}{x+ zzrrdX*(U(2NftZwJxqnr<&5{@pY38%14z2n8xW*PReM#?NA~Ypp4a%bi^SKUmG_@g zOS@1G^rms3=isJ8);3I9)QITU?YkZ6We-T>h1f$+>$o#dxHC)sLadn70$hOQQZ(c> zsjl=5$67>8^=wzCSq@`r`L7Gbi56%idq6&l)fg6=fN&9l>VD6A?aeUk52Gi1@2WG@3HfozdEb}%DI!( zxRw~8+;eS_`)sX58){a++>2s1DiQi{q4NG@{k+`Q73cRAXwCTdLWPn)Np;cC@IkBz zgdqq*B|y*ZI?VkG*J~A$>3TLXUKZ=T9*Qrq8}hy`uZe{x-K6f?r%SD-D-uTu0Z@v| zl74EW07?S@N<5)K9W?-K06|rdW_mo~9kS;my<@yvV)3I)JY9uHk7Aj40s)hY@J8yc z-5BjrlBXGv=I^KZ2%tP!$u_NIQ{l6RM#$P)OZgQfhPev-3qM{qJM@@;b8ID$(FU+ z_y3#R+L-bfcG>vr;YMPAVy2j1R#OvMJZJ{I_iQ5_UEO|)td{o^=S2ozlPWsFVqkcy z9hB@l9B;U*y760ZxA;IYq5p3gHPK)zpgcR-Wl~I#p~~;4jI=4PWa7drE6#6VBS{2Z zvd-2GIsf_UzhnM#DiqnF0RaIBLI6Som>P^vBF`Tc8~`APqy!eBE>fIwIScAesc2f3 z7F>^~vMhKoo0QE?)lYte@|33=g#0X@Ew-E`>4GUM(o}KlJK@8Wt&5<-bU|||GC#k) z^nGxQwKU1RJ3POV(T!{98|Y85cX?_I$mY*hl4|hCUMCch7AWddkzRrWUP^fZZ%2+h z?eC`G1KQ+sVQn@T3Vh+9THeOIntQ+kaU|B_q?c0*5o17a-$^YUl1;$6I0IifVVE{$ zq4J)HK1wkQ1Q%luB1+8LPcLq&+8&#h4Oei}0kTT=)?VE#XT43V>bn!f7-;XU_`a zDy-k(9>sg+*`09p3S2{qSn)fWXs3)<5~MI5D14M+D(`LxSfveA!jo4`Qv`6 zIygOe<$aIIElJZfWf`uus0Qe56I8QP(O}a-~D~lluPNUl& z(1Af-_v!r(*v&H>{C5?3L>i6Dhk1)BQbz_6ywRPz7jO3{qjG8xj4n|2N6Y+{-%9Kn z!nVx2P^N6;21_}O$ya-^U{Xuc=r0F-j`c+jZ`Cr}VB^Y%59w@=I(qPhh}GjM8hDac z3(;D4uR;aI;pK8h#PID?*{nj~XJmctkk=rC@+ux}FuUl%QMZgsk3&tPvMN6R#1JdD zZs7gez%mw(OWw+=pL!A8rq?5>0rkX&jh4@p*6ul0Hra_6Zq)SNgzhhjXi<(Enjvtp zG}>qysbZw}3HP*8(2OTwhGJ^gU5AIBj?SD}hd{P2Cxd1p!#dS|dVH5-&g8_Tj`yx% z{EgaZ_SSS~pBi5R2mpaolF7s=VG4(LWPF5_&>v+C!m{#x{;xs7!`Zq9!!2gPiV{@Y ztx|0fDx7_8WHh49l!vyEM^-q^yp^6NW7OC@O2QzPIo!?aZNZGOjW9q_{1`r+gn%^l z3y&L;_S3!{66n`!MiA6jX>2Tug4kHtRaD0+*DsOG|FW)U(eXM3$7U--STm%QcDBz` z*_ocjBz>m<0N@7}Q-m{Fc{J&aByF}G1=8Cp4)1ttX!|zr>hVi3Dor0j@!`5`7Tn>I zN^IOzHQ+LdB%M-$H;Gy6KoRoX9g;CoobXddc4#`(GycMJHUx*O72euw?X&_>L#_^Ewe?IPnkhovcv<}+IjG;MN6$X*kDII>&0&W6 z+?n%Tk;X{!)e*>Kt-UBeF|yR~*6E#3sSgE~Q1=eXqw??R*zP8%P*EWHLjtZqdI`j# zmey52XwM=AZ=sviQt3M3%u#H^3LK{%iiSXrnc-JCwMiPIUjX~ufm^28bg5pY{6s1% zwm0rW_nU3?jIh^4UhU2^)KUTqk;zjZfvJPIKoEY1R+ePk*cEgB8NcU}QSzki(1Und z)+c@B~}!IhXq403Lc=1!qFR%WdwuyK%p+ zPt>$Hd%YQ%koFb!KeV)U5LTn*8^7^~Ze~1skN|?V)@nCCid($e;22fXA-?K0v@}p3 zg(L`16Y~j~r|`0|oMn9SS3!=!I9|8{tf@Mb<`Lm3rcq^0b%!e9- zz&*1pEG$j-6WtIDpaKuhH@#dmdBpbU`kMs1MG zh!dRxn=!pJZAMTS0R{mz z=JLijy2^n>T&{cp79g@k&rXY{hxXyeGxe$P@YTZj4mQgRgP4J0AXyYO$zP{EQ2A%|;rtE|jzzTB*9W5bsRu5bZdVT1u!y_)KCIOGCu+4!x-d zVWUz&w4Yv89VsV`?lcewo^9@HN3L(kXRt2=Me67Erhz}i)fLLR()mZ=c-Kg@?6Ax) z&Q}Nj!H6tDU+g^g{mrxJPC6rRMR{kqlXSB@*ma<<)>9WSf*&s_VBh=Z4`zjy*n7Nm zNA0^AHg$tGeBjfMkO+8=uF@s0aOzAau|>~S3v)_qa*3DgoUZJN4B2R{rXb*m0w~N+ ztq-xo=1X(C>HkeY_KNzU$!k;)KyH6Il<%^PGU8tIq}MQP_M~aY4AekBzgNaOJY{g# zA;sLnRdJY7`FS(!xZgb{r%EERAdBL6I%;wDu>|jxxj8Opa!mIT+ng{%NFObd{zFC| zmjbpH4F}3A-_P`gHXamiZeu|*7OI>@eI%a8N|;~tfq~C^<(wIEeogIEJ5(aWYm8}x z7_#?fn84OZ>rP3QXK#!k1U0?V_S{zOevAh2EG~ZY=MArs0nKo!dIcRN1qWAEx5mS0sxFt1d&Z>Gw_CJU1xm6_5?WQ&GXpd z!hXaqwEvgeY6~5?9^2E+14TBSjOUT{>BzE@qsU);J;FFewq-n(jLtB8IHuO8_b?pckeY~xIGTCxh!QfSg&!RzRG_fuRt&_Q7Qu& zrOHmXP~7<02Wy07?`4gC^I^5ijdX!xnbn|caK&~+`sy@4lDL%>RR>J~P9%=$1T=W%ZqJuIuJ4DgR%%CYk8V-#8We-@K8*e3v4OLmm zm-wdS8%$96L<7tU1#=atLE)hxp>W))!b=(oYb5bKH}3t!qm-hh()As8Jw^oI71_x& zEj5qsb@VVBckMWp2|CpU<@Yb}zRHvj4x^ccyR(5TRRay>fXk%Xu*ZX{Ecz1qbUf&F zXcF5!tUdZebE}`oJ#ccio@-9hCpSJNx-f2y`FwE)%x^jRh% z)1)Vk5?jDIPm=%$ir$91h+l?vV0WrhHa+QM#q=q?JxzC#$4uQ<|7pT%E8_O4TaL>! zBRDE(z9E4P)`phgpzIukM1vxwZpIf5583XjlY+%d(Ru#9+tNf@14*frQjj#FMUA)uVuOwEUJtq!d@!9oQ3B|V=e5UI13+& z+w`5QT33xVTUuVNFYk7t5{7yw3WY<$ndkz*j;j0@i&Bx-3l2T?NIWSA-6R71MH@rU zQLLK{tF&@yo=yLH{rf*%+4ic~mOs*H@ar$6VZ2)Pk-?|_H8kw)-vxAAE|)1bE6UT6 z)!s%iQ}8JL`H=&Do!>?-aw9^JyapQb79iN&vP3H`%D&mIMq3Wx*_&6tr7U~&1{?rmKnA|`>%svb8nFG7f=Zz(rR$O1 z3;5Jqn;6SZN=9ZQF4qZLIq7C17llGpS50@G_ZWS2gL|c)=(kXYT*c=!g>rL2w%7CD zM{$$lt#B&k&U!M>2WwXD3D5H=FbsvmmHA11TQ)P)M1n4r&G7km3@>?y-1njQ6F{5{ zgI{g3%c#o9$@&<5DI8?~J5Jsb_OP&{nfPG|Uz2csO6?-2Gu&dU@L(OE&IO?9?b8=D zVo_+3=ZHk}XNHal!*ESi6bLfBnUe3@aehNJaoF&+eb^s_`8D{QENc4jnMfrEnr-A` zuu&wD7wdWSp9qh9xff-^>|hk*oXnk!jy%-&5teqKugp=`hbE}3LncU=-cW} znCTz6mRUJb)m$|9Z8~>7$OZL(gu$s$mF4=EX@gA-Z3v#IVLDD1>jIi=v2i}Y=LK;)i>C_AQXVZSw1s@sr32uutAXdFy!s}~ zP!JM}I5L55u%|stVFkyGrWTCHcW`^S*8q($)2hwFwjWd31ZzofJRorYTk}zi`}Cep z4k(VcPVQoZvcOgZsQeet%0uVM^zMu?uuL}m8lgc4P205VAWQgsnNIj&;g}MoBdWt# z7?zuY5N4sO?8a^~y3^0KgmxJt&4ktzGdx(|KJg`sHz+CqW)u>t(IFxx<)EvopEXa# z3Ko~qcnXnDZ&hU%g|%VfOzEY>M&!#lm$kgG0R*m}_1PY#o2z21FwHJ*64xyQoW#F> zFY$`X%J{2M4W@2$3rs%0M6XS5ANP80Gr36o+0!}d_JbK2dJFS? zW{IL)w3`N#qV)gi&duo?SO_4ta_Sw77aMjz;6&K=Uh?{>GH%Z zkPWeYh5^6p!_i*%CX|t-^uka0sOXq|=9sDF8UwUfWC)!ieXiegz!Vi z2SWhTp`P5Sx;aL^YYrw(az4$d2t(aZFM9E5>#Z;|4q@rPr~8jmGBs`3Q1RIf?Kg}a zV9q$NVP&@&*N6Eh(xw%AjT#CyhXNo|j=Ogfm zmwMBh>TI**tI=zi!YSdRKm;D$ML8rYSdk5h@P;`(-uj>2^-&igstDTr<7FEO;~p5v z6*ePx-d8C)_|4@o*Bml-Z8;};D|eA5Cqsj7QUzsF2AKJhFGEMxc#41m^b?cfsNcNpR+BT28C1(`gW0#LxHPDP8OjQ&%rY7ogpHC2aPssG~srZ6Mlm2 zTE*bQ7ZN9p#CP+a7$*JXH%jT7sEO3xav_aU*Z?5xL)p)Mb8=hF8~L;Y5NW zaMhKrh6benVFSxf0_t?dr9;rJZ&yP)_5`IM^5@uNarjB>y;V9jaZG~5A198Z{LB#* zAq|OV(EtjbmWo5to>6&92bb4d%ra-7(@`Hwm(Cmo;$jot*9AfR92J5sgSANwoIig&q1YuU#M;!zYMM30m%2(5AN{O0{HFL!~-UBQD&2Fnae?O)+1-0#pad zZ!X6`lNDf?7AZ4A^H?jxNSUn`!g?@?GJBzmG-~Sv;q{5LiWZ}pS{Cux{=fi1UlCy* zJDOH7kTM<=b>&ILN%oSD)V2X{Wus16esf4HKR@H*XG2y|?Ij}FXRsVI1M_6Q0gVTr z=GGcI7UaL%wfNK)W|3MvTg$W`kTDmAg@44OltBJAy14-TE!P5?@h^$M=6YF>;MQokM0AM(fR(*Jf%cs zIK)0=K?aGd^H17-W+8v6>!Vt#u1^I>y##cuM;xU$8YS>DA4+@lZ{y{Wl7?9HNyr-V z6okPIc9NoswLiuXJS*3{+yy0?m_lxOI~}KHt&jb^SE#^V_VBXrESCHx?7(aGquw#M zb!`TQzQ*`m`w)_~`3|l`7dXOC77%iS2tG@Wl#-pbj8_giqyu9j7eIPJz~@N)2OvKAY*`UkKRyHWJD+#dj{=QTppC z_poGwAC_L1IxAz@@W0OM9||;vay_q_uGdfy2J$8F)tmw%G{GaZOR{ zkU#3kNt$I}HDijv?-bMKd#j;YobBq%p0`(sD8JQCMXRUMc|!<{Lj6ho32B_)>Va?4y+t?NAXObGHBF4TRl?~ocE)|s@6lT7$N?d zC2ZPCv~s0^!zI2+cL{b9*e953#2ePI*4K#Mr8+3fh4AoA^$mvo6hM6Np6kvO9J@a_ z6WyYOd(k_CGnsImgO*>q&KZjgYLd=fX0%8M)SaTbGPaYRd_WE`zd8mkKIE#yV2NO!@B_8&!Pmp@zxnAg* zUR1RUm|a&xv`6Pq+*?6D-u7M_e@9+H2G`vXcpVOe-v%h4s_GH%Z1U$N?psueL)+rKV^Cfz^I9v-^pg&s z2c9o@#5XiLv|d9Vlkr_baYt=GGA}1joRkkxCM#j8-g7jj$v9Tv5yrtvXYlDx-NuvO z$hM{?dIJqGsFfvcyKV;Ym6J~gn|Q-=$X|q;AVKF>1j2QmM!yNY_!9~>ba_^**YiC) z*{=+(Ld|`(O>Tlr%+F^ zP%G$r7WGy#$AID97yITKEP8&Oq78(>QeHNzq{h5a?^&v(RloocSf@CqeXX3_mkW>v zdI~Ra)e@T>)2XewrW?)k47F62RmAvKWTsj#{hGV03b!M6?|={er$9zusyT@{^q;tz99#5(SFR z&Y=UYd+ErSPZcj?ZCkSkK}yMWjOmkKbu#R2(M^Udxr$-rMs3(ni18mknFhk+OEbH}CTmed&wA%>i9u?NAnajeHizF?U8) zmc}?Pfy?g9UT`B1Z0yqD=wyVbeTMm*&%PoZTczingGtHXf3Uvio|O&AE`nyxs8F zx3||j=cfJ1xN*eNzcZ z2fm)SKHoXSJtFZRqw0fy7Y_(>WS;dGO2~1H0Q-~gLP6PeeL1i9=l6AxLKkO_qVmVgQWx)qjt#WYw}6RRyQ z{M)&)={0{m*MczxFSyQW7|@Ilg&0B(#+jwQAOYr_*#nPQTa# z;&t$Jl=)#GPH|CPT5>LdX43y2w{Da}` zygJ8t?r(j+nBQylOujZ==rPYa>n~S2PSjsoYG1)GWV(+GmdivZS%mGTR4>rhXn51NPnx~G1e3WxumJ!7B(@*_ z;ufx4+Vqk^9_$&mN=At}E(%nx=>%k@vV2&aAhZulSm8OFI0QxNsft2N%f{Bvikeyb z4lPKW6TuS;Ton{~J2Hp5KT$5u&YpvC<;73GjrfawbzgBoC)L|{PV}tV3!vTm{iq&p zUCO}#x0gR_>8H5OJp;XfvShaOU;?M!acsFT8OJ;}x6K@EwRKXfxNW2^p{|q1qO%)W zQB9TVqv0^j>p5+A*?JFp(YXZW$QVsDf8P-$X8?jW_RZ$95M(?s7uYII5koGFUtmN% zpHOc_nOsVLu;XhC+A0Ds3^$r4X+Dt;jiNlWjC5BKEiT`L%?nyp9Hi^=kEZ~r_gLWX z{|;Cp!O5L&lzINmg}Loz&30`%bS|86BECZS7QpqgIo5 zyQ&{d8q(d{z+vJ{b*vn7``7l8j>&+5@V&AG@jtfzI54Aqhdu z@KdB|9C*$n^;8c^>4EAxrRL(8w7HmS%Euy4Yl%kaOk27LXR$%BKe5+dU`E@XXfT`U zG;OW4E`^Maw9lK2yWeY2q3dy?cSwUTC&M!`4QWg=R=3(GTQvUnr3R~ZRapYzdUln$ z(FGa@WZ=_Ps5|Uc>V;fedWZJBTFBH1Zhx0^G+wydj$GDjHt79>{pEBEDgocq*9VwR z;|;CYP?@}zf%+B_sez7HQ4wF%yEuIXgI5oOpE7g9Tp@@8!r_E zf2s6tj%XK|-LUc#Cm9$Cm9w*9g)i81q@&@UI)HX)solqFbe1uX+y`13s=Pz*N>9ur z5C8xSn6{=vm?Vc>!^RJyYjwK&6A+IF=&BqJ_FCM1O?JBJXDt*}ha=Tx$kvsG9IJ-H z>>5$$To9ijZ!6hV99WntBF28tnJ=2*{>hV~<(yl+P=NLunjqUQv?fTxpUbo*iAW>W z4)nyyYQEWdVmdJE?NQfeP&uI#RcbvTbLE|(#F8Z0yW5^=s#Vszvhit6e$+>b}SRs~* zzlKA~BJgL{mj6A97%bWCdO+IE{niRu)TND~EB1U+U-p3x`BpfDrGwMVR$-L@C+Q|9}8Um;NaCX--^Ia#baSoAj zMx8!Qr5e5{LrPMeFAg+_-+-6s4zFQDm|<|u7~7Q58YVHa!slgj8e2ce1@B<#(^LbE zfR*CshF2{b_{P}#_3=JdBuf{{f7RGNQA<^8JHr^64Tw&X^zF{MKE zC^{5Xaqgy>Y7p0VY(Lq7wEB5cH1m=<@P(K=Mew_~3784zUGZ+n42PXhs6xiAh@Q~` z7uzSG#s+PLGPm3nrfn;9MO<4>7Bhc(!-@`m#O>afMA~fx!^8vA$I;L=*>15gk>(o& z`*C9XUyf5%&dlU?hE#6xPM7y>B6t6#p(lJ3a-!tgp?V{3CpbT%&JKACFXF)jR*&_g z;3+o~WQ^>ahHt!wwU@AU;Q1WkQX)I@AOTVD;6~ z13w)ldXd&y4dG;w@?EDULbU$}-rzn};}PQG)C@O&j-D$H{JqQ6gJSxoT3@%m zq1tj8MA{?C!Y60kpSK#Az$eY@gc&V)bL;w7poOnkHi8FVshJq&OaPz&2s?}b4X08D za*J*3cnSzH?fhW8qCK)CDzq5>c@$Sxnc{=!z;uzS=C4LuoPcaDr&C5#d$Z|wDVX5Q z@$PZ0*?I%pmnnn{XXIKT@yESd@hrNJ=2h&o(?2GSI$_7T>1`X2iY1vsCp#PR*T&(&i| z#|iY+@E^ewzz{{LC(k<&wx6o|1IOavzX>D_RF*ZVVcyJNWX*os2zpi$&3z6VR>QMO zNtS0ymeMG|#xRmXI{lr44LefxKmcs#cIQv&LbKxSeXQuVZfhy4N_q71w-o?3r!dg! zDq!8BW?Hb-36Ar=jug@}J@F{eIvBi{sQ@sMpaNe+16Ra4t+-NP}R zm3YbgsdtuO34q`5uQEx6ZCB9&%XiTJtYNG$92_lEOy+?dFbU#*#NxA2g);4|#LsLX zefs=g&%o>Fo&CPYK8<}`nfcvA&z4*|>V3IVM!Ms-JT!U6kLHL(^vpy;>bO#5htc!|tXt7Iv9iA&p{$W1GtG+D_4eP` zOJrz|DqC0 z=KHV*>8P;!(%{^FCWpFa!`Dl8|E})uOTKDXYd$o~WL1@+LJtfDG^H}bikZy8vX}6` zoY{lNnY5lgc67(tqJW8})I`f^;4nB(MSU$scwzY+2TScos^O#P-j-p%(T+U3o^4^w zTssE`GwlQ*k&`ztnurl#00=cnJ?CCDS9fFIwI_(y>Skb2sM2~Xw-paQOW(w?BoUK_ z!~fjd8V?szBL9zJt^2f7|DI<;@(8wSN0b1=zD^DjGrxVD;!|ZTf86@A$G@y5gEQq*PQ|%m_q@=oWbE)c2u>6~fPd1lrPj5%m zH%Tn-h5Z|8m9Z8SjG%%>knz2HO5`Bd%e1Vyx|vx{%D31|BdBOQRArA!4f@^6DII$y z7+VN_1irOOiNp{MjVVAuoU4fxJ(L7r`v5liC*tJRj?*c6L$qX9w^MA&(lIYuv(b(YZ3A)z1iZ2!; zNAu$}TZNy09stts03~2d-zFYPU%g1rBD!{N`eIb6Ut}K}5TWg2_)vmVGqxJv=_A{| zGo5!irIhM1DxXVln$xdH<$&BAt94t(-MQd~Ln@vrShJ_}ugdbGv+}?MlSn?jivl#g zH4{uTiOs*-bWgc;h98aRbG%`D-F;AK+st#+fz`pqwqw!OWR_ohwi+$%kZb!BvTVW( zhya#w30t}TZ4-fX2Y3Xy=LB+szySwGfXzX$r#Lg~F})TxHWZ{826{ylp@AnD?+B}b zEy8qJwuq3vkw~R9^h2oJwEpK^*w3jUb0vcBAhEQ9NovGVGeq5~WPm-E2gC?`bK(E{ zaF-brGQ~9v3*%#QH(!i#@jelG_#_4BE&zXS<9V;T+PJ7 zD{X8Qido?D$XEaXAg+K2Hp16gu2~4aOPHbdZ^va_SJK_S)t9jneaqb!jl_Sw7$F-{ zfVOF!bM@yro}-!Fla$OaevqH;cEF|FgsaD5r|>i= zyzk%2B4CJ8b?)Q)Ak#2N%fe-t?)4DJY9PY+O!OO)kI;K=Axpr6olnOA5Oo^18yWq7 zYZ!is5avAj&I_A4@aGX^{1lk)`^l~9mgm*}ey6$?k-bsV36WU9d9WLusWZ@_H#J2i z6dKo&q;{MYRgZnZ2qC}*-~dlF(zen2j`VZ>H#!g3O%Af~1D(E)CUOP@D=?y+v0iyE zVPNgB0DzK%OYT9i{yUh`4;lBwlZ)0?{j!O76~)Wk{c%~&YL@S%n_UZPw%A^KZ4%M> zS>UVmUUzAYcLcM;VRC$7-PZX=v@nEO{n-Chi)<@7ACi6dT<6ldIv8iP`mR9HQoS+W zmc;~>D8@zH2L>#;-q&Pvv}jJ0UWVTM;PiG=YPBs?Jyccar;8TjRBqOE(%Wo~;)+cb zrL)E`$E4g@R^kH?P#5yx0t%@I{_j?vc=Rm)w`~b=ewoAsOvSSPEZZysmhLL6P=ymV zwmHB06l_>kf-Lu6VtmVgD-gdi&j($+%hOs4Sb+#^m;u`#z8z4z!3zoz?@3}sJ(9F^ z(>w97xeT0yl&TS1v>=8$ITfKFX&jTf+gJ}*pS=IE%JZr$Tr_ZmyH2_sA4_`dF>T%EoVu1c%qb!d$;f%9qWQ#>}&_ z=Bq)0KgO0t%966Q9)x*|FZ1BqvG{*2y@r--hEw&yz~0VNoXk4sjo#lZ5Q7>c5~aQ} z_;Km$wBNHV*W>+dGH_j>mhOpa%1;q)jP=d;3U zwP9?M_WAX4I}WVP-GZE0Y4vkazBeTwA%W{rTBN9+X;s_g?b7#09Hqv|EKc4A&se0O*@rpkS@0%{Yg=5$y`=uGX& zeU}`NmxACIvuw{1t{udjzG_MA6M*F~5hGq1EJNenlb)mn*P{Umfh+{c*VBboV#ela z^KZ3fbRECg&9*L~YPG4&zzu*9F8d%(7!mRcOE#E?3n!C+>bO0Abq53}smyhE+m$`- ztzJbQTSCkB#FTngArEu@Kqqfn9@*JerxT!8Qm10I2c9bxx&I+frfVG}HjJV*ML@`K z!K5+Ja2&L#QEP^2D3n9UOLKJMsK2*l_Wilq{btXt(lff!HM+op03b54%}e4lcbPwG zuKK)Nb8~Ygv-i=j4HtegQ~wK%<-2d4)+K4R#}3z_T=ce^Nq$P>VBhaM!34>*GP=&{ z;iyZxnGrSCoCClx%C+!wdfdz z*V<*>zOli_(n|mN#5CmQ-)S8=oSIhRh(<)B}pQI)O5@<*nLJ;{HoYOD{3%M8;dqYVoh zr5CQ9I@nhn$(FX}4^y7w1hx9pBQ#)q-FzEv{7T@{pg_CWQ_wMw!92vRpLfmP{my(w z-4XN3VClwExIug>Kdanhy-g-|0{e9~CRwTIQZ^$pgJS+&y4iZ!{rC|e0HZctQS z2U>e5y}-Dsw0&hcv{pFL#Bny_w$D(;cOP`+>@-%TB9iN*m~{-UYB zQ$RYaZy%UZeNaisS*35x9YRkoh`pj3j|(9Hq+*e0b5n|Z!rk{?_tm68{KOjNa&Y`S zo5?YDBW?#c*>1O%*n3g>4bmD~jNzTU^SqCue~sgD{%J#Q(Q@|HY?W~%V)CRhugUdJ z8g)4xMhQLgox>uEsf^7>uaje*(`oz`-4&>ov@0u@g_FRYB8{6tcY)7DNW1fsl=D^%C=JTrZc-C5MS*H@Pc_;I6e?^iu6>cp7Zj z=4Sj~$E@7&KmY;iG}6Uaf7?o@PV>*tyn%IUvQ`{*O`pNa2@`DdBV-AE21-*9By{;6 z5@z3dFdJa9H}t;u>XtP#0^51SU&TosoP118nCa8 zvRp#UMxH#jI3$PRfd#c$Va#jIw=IbQv*avQ-5Hsk;(BN2%UrID#Z#f0+r0f9vWP~u zw6BB17gh+{@v8@1`lu)zaR6#>2L$E-|cZFcxfkwp-&qa$Li90DVB4!9M z{3?;Chlhdmv(c(80RN)z_x4XkGu!_JmCwat)~AyQrH*!=3)>`}LQ!hx0E8vP%30Xt33Fv9ztF9qX+VHd$hYnC#g3 zimCg`r{wQ2wBjQ>G8fh0D_I#8Gw#|@%t~*xFdtzPPBMvu0uJ~f#U33^Iwrr6$X*ND z@*ehgJQl(g#D#NzHmLsoKXj_E#pRd@k9L)qGO-((Dnswviq$MZUU(VU4h{*p zIS)5t{BxY))T;6fF(FkI&xDzFi7wylNjkB%@_m^V>!GzP z6dq&{000M?5Rf?43Bqg`^%Z^Jav_pBF$MbSOPV++3gl2q1nh zbLXJ7u<^Z~_CSG-TUZG(%1M&1i)if;HCkbafnWVWVdU5VaBwg2Zl$aqlwSTg1IIfE zeR|WeU%t1k_of{^Dzee5_bGTqD>;)+Z-_Si&zUiBc^k6fn z4xN8sh|T~ISZ%ATQqQoWB+)QeF`J~7(j#8g-4L-1Vl%fguHP;1@??xwzkuU2wOK@s z5p7GwUb+hqa73Mj6zOept?oByde482hFvR22xutapbEA}-e3BvQ>l3z+CbSCBj}CE zua17X3N|x|sBpsz;7JUUGaIIlhs*#$W}tl7gg#@xh{U;2^4^=-4c2rRj;bGUkZX94 z3^Q!=&I1ufILbW<{f4i;Qd0bve%Mq<+zJI0#`3xFX!BmoW<;4t)*b(39+r~fMttrs z@5izjOE`*Po>X8#=C({yh~2L&T=I{tRDEESk7|;-oyt1 zrQrDNnu0{9(|u<}K-(Bo*}UApF`*gKc;IfsmKdO3p(BF0`!xV#}luGk%pa6pj`;aF=E83uYMi3j%rc6Tu z2mpW|bI`U-tnKjDV(#kNVo*heO|LQKP-yKK?@Vz zp^F)Nry6R8-J#v2EZI373}ri;(~&?Ago=szLCz-otHf-mx|p*q1!N}T+|X`9?!Omz z2l-mL94MrJ)}4lM4-oYZG`$!;+0DD?h0rf8u=q0mOpSZXH#<<;`@OWO(yjp!VTZ(! zHjnSqYimZ*T+Vhxs5l9Z3R;YtZuuBg5(m~>g^~YlzY3~w$mkuu72N(kc!;!5Wtd^I zh#{zZnu8941h>$l)TCoPkq)Wc1*0UTpm+4T63kdXveaj3f)RQIp;(1~7j<8A7F_vg*ARN2sGZ&HJaHuAGH}SU?BB2cD`l-3yP_{ zmcM}sr6op?mpv=#q2MES@6-}Wn%;*tAdP0}+x#~Jcr$G+J;^u(e;#)jxifnE)#e{j zRd(t7&NeD~rL~S$HmFa`wi;F6z^&auW+}oCID4ue)3tXaE#uv0nD&?ketryJe$Xol z_Rmc0oHJy0|E8H{@#y$k<%c|Y0Z_O%N&jwk1^<;{Vy)nbsuN^wA;qDFN6QwMH=N|< zH-z(~S({Bl@|I?b9jkD`xqYem+G)rhULl&UhgDH=Was! zOxDg!mCrFt!eHIR>lcJwNRxheR~`-Q3@lw$tshPhqb%C2W?qcT)&(?7jQb0i)DiZ4 zH`Xgf(Yh%-_V`~&6imJ2B241wwV|e-V&YM95pDe;K|9@P9@a!^bsh>Gi|4mDJtV1=stOWXF`PO zm2sS~HPrQs3n1(}FnK}*&usM}b;~DDCT8;5H#9Irz#l?cKJtNYwN<2Ip;9lnjPa3A z&r;S{oH1E4Gv#pc=<-3dPtQ3oc~pd`s$Fj$DMERJNv}5Z>Rs<77$XPXbrCj5(RU-(eki+eT%kSInSRvK<6)(j8g=mr{thwi7|@T56at9xJHE=> z1M1xR5f5FCc{BW7grvq)K5zg85GWv{H1O+tjpI&BmVLK_-pSBBUT_Ljm-ma}PN((c z7T}zbbp{f-yzn|BGN_8n#(*&Z$eSu)#=nOK<@CaFc_PZE{`gK<>xzYKJ#fuYuXVc* zNa%@fs0EB&Lmq_JZ|B&d^HM57%ndWU2PZUAZaS=tH}b&QW3H_e$QS@YAs>SD?ZIaU zg`WR*4?Hs{nex>-&@vpMG3d3Vk6_{&m$INra+Bl^h#WJ~NX0dK*X=MfV-XXeR6}(i zU3V0~qBW7lvXdZF7CIP~zoV*=V{?|>w9`_;lkyQm(HXj)fSL$mZ2v zPvMXNgJ0v83C3)FS0nu6$FBCct(_!0@g4aWQj9JKV)!SpqH&Aq3B5*_(at{k3K4~A zA*4(6$6V~0Rxq&3h2#BoS%{g}vHEV>&~^H(LuWB9)lIQMSU$Y9iS*RyX`N*!uKT!I zW;zvclMHG}#XVr3pheRdn4wZR2Z=}E@!*E}jGvtL4xZ-kF_sP{wqWXrooY)~(^;H; zB*n2IAg)9J5KdYe9Q`i-t-+Jer;geBR9;uuo zGTs#!oaPSMlzt~4s0c*`y#XqAYEdLp1MEMx>@+~H1i5sqrnGV0)3X3g%0b?CEUH%dg;(R7B)ZpG+9b^mL5wtH*apFDOq1)!nfx zh0LByh0CPsuPfs@V;)l?vtUm*n_4=>CWCbvmc+7v{mY_aJqIXRb2LVja6QHEgq;Ht z!yiIgA!791n5+OnF*QA^U4zDbb(0;lIJ@PPhb%Ud9-otzgOoXoW<>2j>r&u#N?^;a zP5b*6&jzsgSwKZ7K+uk;g;dm9E=4swzsQ0?`-@C@;-GT>8H89d`x?n7M`=1|LE2)d zd>-r~5S3KD%{57j7@qg0BX?uW#IMTOtJ&W>W$2P3fN z8-OyT%pzk(g|Ipet61AIHF?1R006MzXbpSJZeiJ4l3kCC%&H8(JaOAk;7KKD6eop@ zZ4oxPe5tKei!E%eb}6*)3r6;L`8uK?RtchQ};_09EP2LB413xQo)Nk_101#COkdX-I%2rJ_NJrG_QYuud zRef%-FJo4!>OW>pN;gzVrNsk%BShY(7d z-sUrvNd^^^#Dt*QM!p@d?;8aNsmjIf7FLsLIfcnz0v7Nx=pcXy1;MVf$TJSW$K!5| zBa!W3M9GG2_rXsT>0r}y6truZ9KsKqI_MO)3lNoZ@t-KqG6lVxM8fb_-xT5yRVU>Y z^O6DUYnD&GHqNq%gEF%<)NzMyDr{O0^1Lr6v9so)wH0mwjUazPZzz3T4co z%Ub5c5Z8*i#{h{iWNxjuqS6;W&to9T-u(+kqr(tg>kD&3&(3a=^ATXiY>x`O%i{W*!|ISV^m zy`?5cF8imLhBxKqgq=|d4!ELj@6BxMblXDKwx3nsQwz}BU(<8 zVgP?Yevc7N446_r=?4Yd&tcO8Lg%eG_lXc8wv#2A*V*Pe-*G-Un(r~%y3At@HhR)Y zpsZz49T^y__rzuBr08=6e;m-vB+Ag#Pe$wAS6|=^ol;ITi9(0;e>S6uH@9(@pn@j@ z$RvLHbTo;(W2rN$b0MnoSLNd78u`u#?t*CMl73XXsIYu932wP60n8kCr&pzu7II`q zYG{V9`G>U{FK+g#ty7Eco-GM79QhfHFBs~eC@P{)`@waN^F{Ah6S!laJEG40F_(SM$lp?LghpM4CTHGO+?|y$x{}a- zFVJ4UqT)_Ky~+Cjx3tX|7H;=eOA$a&ADbVeEy*Ok#T8T?TQ=GSQ;DZR=RI@8mKrm3hXc zaQ0M&2cEEM(Z*RacNpV%rU^Ge;&&6O<38c zHL>oWjY!@3(=n;W*UR#gP9y!W8940#0uMB)68*Nw$EB0>;UzQq$qtnKq#_TFcrY^_ z%$Aaw>ZB0=3<Kj^7ee`f;5)c2i_;5b7eISUDQJ>xW|GSB+l4JO;k+ z+VxM6MNqa!P7XVJSlRN*Fqnm%MMD%7GaYd7071CUt#NLc@a-Nl@xpr~>Lx7h?87wm zpW&Y1vfz;@LDKL?6>c2H(|5hAHUtl8cDI^3^XJPJcBReL6`ALC6vP%qR-V#S9{wW~ zs}hPMHA8B}b!Y&900_ht9QgENKFE_2LFYqViH#F%nd42o4;Q@?xKB8Is9RJ@{tpER zCvtSg6I$CRQ4Xu&Zts9EeM5CEoc=+mXGR48XmoYXr%J%{&c5kywcsihk?yx>Vnwti z4@LJq^K+zQAxSX!tmRd%jOQFNdcXu3IdqAJ?RqILYA%+}4m?9&^DX*d~VW++_w^t!0;jut<2Xa9%N>Z6yN zFS?Wy9xM>|nC>epvxd2ds^MusQJghC#{t$6DQ4vAD&Y z1H5LOSp(k0lWy9N+rwRYlh#3|Q(PtjFQ*Aha%981O_PYMVu`=*U0YIt!&qJNy&|IC zlJ)Rr!+6Dq4d93n>L?_LsKgJHHieo-d<(k+N}70$|;}{ZdBpQwM9uPa{~;xZ(5LmRVgwBW`_$tA&zXIm#_}vnx@U!Nlrb&>p#HAR-=!;klSeeC&OiZVL$iqHz9O>`x! zIP-?EagPN;`x1p*$<5nZem&nbeWqlq5Qd80A4V#ddU18DLMyt1_9pgRB5#>#g6f<1 z&^0QDI4+WDgBq_xsoNUi$FNYIP}rj1EF=Iyf|=c!&bvq}MK$C>l`veTpFiq^*Fqzh zzx~l~<1m`hjigo7t9r@`p(J?lodT@!|Oq>M`Do%NE3s~xN~4tLS8K2SkB z`iV<|sDkgH&>Fs)(PCUH*V!7xFwA-U0Yr7d?)P-Z-`=!>QKe%y9>50x-ur+?eN-bD z_NP%yknprkiQ}PB)Z$dJEhqTTJiSYn8TJ&8Hu0)TlPQLw%!#{b0-F?#yzh?)DVTpg z6BI@Rz;7;YB++>AkP9-L{oV5N5NYMA6V9s>Xaoq^?L2KCQ)zp%6hn0N3^dSygv*^E z&q^sh6!)M)^@WM#W23O`7Lzw0A{g>|Yk|Ohs_ih5(yguZS6A%T)^E}iP)38u?O}wh zh@~tu2`@e!Wu-vonO`?Ay`$7YD%||aLb0STVBVu`Bu|h5!NAkqPJTVq8b+e_(8^eG z9)h{iL>GGIEjSm{9C^lRlN!!g@gdVZ+NpCC|2S2Xn5vuc`Pltam2=$ z56qr$m%Lg;m!7RhJqffMWFihF+)bK8au%&JQ#3SRYg@ofJi2(`^u>R;blzqRfzj(! zzkw?RCN5cTh+1ntKqOSJCMTG#&!~foTLF*Ken-Vaoo*ix%1l(dk8bz141S`Cac6l; z$G1AA=bEhWQFq**UQX6F!yDr?Szu@vQx`R_q)+MkS+_Pl1WD7z00=G)i#4UkR}1zf zk}+p#!7iKOEzRyqeUm4ay>1v3)CLO5C@eC4*Boq_rzLA4DGAw^4%&>ZZmmbKLRU z31aVd>>1Mbi^O6?_RZG8ZCV-4XZ1A&EO^oweJT}R*#s%~-hJn!L`nvoGI{RYH@CCQ z8XHTimWMS??7dlfrKbKnYqcpoQ>J5cB_B z#B`+^*7w`QL?0Z<(KV#(QU`VjZ@u+7*hJCDzxa`&)**Wrd8G7;|LVoh$*qH|WZLZh zoi*$FO(LW(^j9|NiZ^#cmVLq2*2`I3vcaN16boRCe|DQ!%5RTVQ8o_uK{`G0qJp{n zXrC2w?o-5C&(I>O!OUk_T%l{T#~n%B+(a@*zKXeF7Ly#;#huuWzkY@L!i~kFC#QfA z6MPP-H`CO2?=p?*gb{l?24jSZ8w`TYyIru$chq@xv;Scawe#$7Ku@Bl&b-Tr_xS1g zj&Y=kVogZ2uDbRAngg1=vSL$V@JV|~XuiXTpp@eLS6l_(7~c_ct!5s1*AvqF!j*;N6KS-;W?VY{+Z}JgPZ^?~-Ly>p zu`6h-hem_AsQ-NDq*AFs{}WwYYqc`DH`y4sYL3<22|uF3MS&itV+(SEX_~cW9`LQs ztpE<|jhOrg%RP)d%$TRhhpgFIf=u1*3qKC2Mr*Ab$-JGXtt_bwWpLQWn{_I_Gopu- z*?WE1)oFTXj&|%+oxx09}piX?>h=ceiCG2RZ zBTCtbhYSEg*8~$Ai)~@AHz!@0xeeM=MpS4S4b{fMAu`Vj5ug~}F(y`;5r2mhi=kCX zB@W$1rYH+v~TO6+Hu<>R%9RMVB z>5Y3NwDwfs8RT~_~l_Fri zjM)y9X-*ck+ZFn9nW)I(m2|X6`0ZkIPJqT^S>GJ$vgC8sjMty(rqq9!$v0S^;$b7b z#E*oi@{3X74)w8s1QQgN_Ys0|Msq8O_~K9F`HHm4qb8BsVNCr0-Hw-fN-zmYc1_}g zrgyN+otbAag|T(h=zTbng#OtpA6PD%>{gHf2rL$|xanCQl)2SB2$t6h>$7ndzr#Q| zqudcL+*-)@T?OCjSG#^UyLfj%yrNXoJk}=Czdf}zeWi3JMg6yms zR%!YtfVuBEqWIuz6MeD(AmAxsaYr>rGp#00HQU(SG#-$}KzGJu4u$v+j2eW}?Au{> zdcxt2?OGxbMmvpVZIX`V#Oc(ckP(7Bb7J-Y+Kx0S|3&%unN+r4v1@#cgfBBm1SCjGF zp^6qtyOeVnw8p$@226ishlBt@U-2}3)=O;NZ{=3K@qxa!a|F0V|ES3%)I98oJh)O} zO%DSzYI3>vzEh}?tN%CNI4QT<|70Et#TcctZDCzcoi^=Ad$Lw3kd{khLQ}*MlZ#Y` zmUxC-rK7{jGV9`QMMn`b)j*50hWEiw=90ID!)3u0b)}OxNw>~6&CywXMTNS#!YU`y zb=?gQr;A~7ziIK)99XO4yJ^pn!Rr$C(3O~so@9tKdbHc>eaPK`V09FPCTofLzYb(-~fUYC+cDA0V4q1leAseKYc} ztvr2ZF2%__z30u`x$EZm6v%VjQ-`Z z$zCiLW%@;u33iSrpS~DC%>>OGOwUICIoU-D8kl!aGn3GQ>eTaqf(rqO>gotz@mu@+ zIbOGLyG`E+-PUDVy^RMSz1KoaXe*wB7p%9&y#pC=wfjBf7bqXe-`c5?doB~OY9=vb zbC7U6g7^S}YRM4hXI7B5rZ5qJr(+V$;L9XU4e0GV0fe3sT(aH182?~k5nuoUVO>Qe z2YN{VGJd)i%GY~N!Zi*6&QF}0iNdaAQA)H{_=f!vJ1FFeHH$*t+)`m#h7n2iF>(pF zp^&$8+JB{>Dfu~#M$D zMKiwpANPWc;NuPP$5|!PGlAsK(F`-gP-Y@?_QuVHwGaJu0q{fLxF1}W%B3zkLC<8S+IW&5@=qb&EC0mzr-QOR zel~0^rcIF9%-$<`bOt^f{r673#73W0o==vffd^z41*26jBr1|U(^H+l{HHgpZ&jlDbL2=-Q4$bjoE;b0F!$BGoFvyl8~8NZgJ$2ikN9Fb+dS5JLu;}JS!0W#@ekD#h3%(^=uOWs%;$Cu4 zX>Il`%@_6gCt9g_AaN+MBZPfJ71OxTrV%Y0E5>_A51(m26PP|fkbE@_e3e_}h!kmL zN;K*F%D=D~3HPaSP`S{)=KWU%n&hg}{S9Rdt;Qk5-{f1RAiN2OCe8Z7ne{8eoAkBe zR!9*j;IRx0xJt*TgG4~h=8=DuaOT&;SXWAuy7D=ZZxD1Fp}Obr&VQXYja%4lJX-sT zAKwdn)-E%FKd7sn=`3fK3+feP;lo*6dW~LiFBH^uMIwE9n;>hGW$Ph| z42a6`ITRMj?Linf#qadRttc1Kp;#9hPgbe@)Q?*H4xu|Z?lm$<$D zAlUTSZ*2?MOuRlRDbN1^2ovIecHF|^+JZW$O(-VMIIkyGf!VG->Qm{rrBGh}C9Pyx z&3&y~bON!q`uo=3RJK+cr^^x)#nwqxMM0dnpoPzuQBO-oVV3ZhpK>22pGri@_a~g> z=!RkCCnED-Ga4-I3z$;NVzv(&sGU2x{r7FGHWM?*U8MCzr*V}>eyjK7zXeDy%ovkB z^FL*KkRbW>e}O>;nYfM;gL6&8)`fEewAo~Dw3vuo*=aXk#eLpGVkyK(tkt5wOgmPk z3sn%8WuM!)DsgAqm1-h`oAcmn{0I_?_+EM4xYk zdwE+B=|G?U1HYSAYlwip@R4St-^4|4jI(FmcWu;?{TykX)01!!=j@)jFopwry z1?(Pkk9_Mhy=m7_=?pZ}uN#a16Rig%Hj){}WoU#XDLC1Iv_uu6z*%xkIrfCwk)Q}xvMcuzHSlURrdB>NaG+W8EF+Y9BMg9UiU zVR#l$Kpijv8P{!f1~r~rSutIB|D96`{b^S3c+JG-4Vc(@nOU}Fm075sYF1$?Xs$Ko zD77T>_gz?LgCkQjxbPFfn_4vE_Z*q@G%Vtcnv!b$dq)pL8qoIWfdRZ`v(93Q1jH)I zGvY>>zK@gbKmrSg4Lv(P6?vewi6(n8P4j6Uac6T;e7EPGOZNAW32&$i#)`si|`kwfNCEkTRwbKQM!1}2Xr=fpwt682(s2UDC+T({K|cni({&J1G@j#C>q(wGFScp=w-{i$Otn0h{1qJtB*JG~m=AZ2 zl%>SN5mcxEK|`CUPMha@3LJDUAvT8uwLb1n9?Zvi%6U>D$0e${N(*URkX_gMLGWw& z20k9S_Hr(js%jfhrp-7Uxqe-EBLeLjuQUClNMG>5)nC3xwtCnd$S*-{ix`MgGGdJ3 zu8aHus~I8RiEbk_1%gzh(Q$H~v#hlMoxM=J>>lu$&#N{s^sSk4;8%;b9{+roxcm zrtm0M6xl7U&wG%p%w+#F$yFWG%&L0i)N zBZHq#6N5`EmEvP2Lw-=3aCk1qjt)KM`L8BcWR|)^4Df&qc{AjAU#B)jo>h=zk!*lG z1LTdt1UUf<9P$016%!S@n8n_oFRx~#0l~#2cIkL$-|m{$ujZWfNd|rG$Eaj)OwWk} zK(vP0Crh~tyv~Xg+Oc1YhnG`FF>KA)%J+~t2lCF!*&EG~Kxvkm#4Pw>O>D#}VK zy-9lS5PMFWAw24lNkNV!28i~wyoC-R$id>cn_E@uqedZ#_wFzNK^VNFMPnt?LPFb7 z3q!E#1&yOAYI{nXX$+posp)?YqkU45Uc{IH0tgA1qp_m$eE2;a)C;qRj6s*p`p+Rz z@e({u13&lH5r*|%*osrRSJUrK_L{2?ZPej}-Y)&j;AoC{B<`yzR<&gnfWxA{gbT0V zzf%mSTJ`xam(z84t$dBkNrhor;TI9b07DD!A&n!A0XklSK*1qTh?F~u<^&Y{c!NL1 z#mCPCjyAQE!=EpO4)6d$kxDNe=WRUth#+14NBnAcbeAk$*Hu^f#+WVG=llqedkin- zda%0(&c)c{oBM|{UWg7sMaJvTsM225kZ$y0tRVO~EXd_O;(dc()>kXJWU@@&@OkD> zqb13`BMz!3pI`cM=ZsSmpT;4TaUNSGg&7|jdzSZCX5NVp(|<_y}W&TWH03X#=e5KhX%J;ri$mY zE{UjKscus!wVo^z%l1R!XxIfdWv}cT-VpaIAialTy&#j>=>N z{gvb_XoQ$ga|2`iEF-40%a3M}{yeI?chqHhHIl+h$UQA*&!AT)Sm#CNi7^n)sLP?RTb&Dv*?mKu)bEz)gvAnk}Yea!?vCEMT^>Cns)tcIKVa?70nKO zs3`&mOyFuQ7x5TBo2lm`~>z{SJLN}kR#&^-cAxI0i8$afs3G0GF5ms@Yx`bQS z1EU^1?-ia_&JvpG{%HADXTB9tK4p7$S9}k~eMx7Y%V#&snYq%wD)2VcOglD*VQk&F zf?cAiFjtBEJw=~m=SbrFXI%x?=l(eAb+W)Cyas^pjmLd{pM^jV%ilzYZ|h!D*WG*n zeu{drOsoz@_!5XS5B3y6xvO&7a;w{XinQ~dglOr<31ZFqiM21Qc%Zpa00bvbkG=xN zQT6Tdy|RLR6L<{g-wCMT35=#Xs&bWzOkhOjVjcnI`*x;%a?_!Y14J z?f0YudtwQmM@#sFA|BT*463D)Uz+2swW4=d=HUtop}gs#G$m_*03d+l?(Et|r!rLV z=Svq74uluO!#u0S33E9PnGNh9TFV;vd6bXVXDiQzQmRVVfBj~gayKGQqB{5M3U55? z3t|F;&+jDUg`S>@t2Z^99P3l7aMe6AiV?A0cK5pSp~io%1sUgX^3KepNZ(W zLe*jjBgIFP-?I&>$VzCbUq|WT^5zM5V%W;QQgiF*bQ#etNBc6H^yHP<_40W$43co; z21qQOg^^!^f=*B1*58FmePa*mT#Q z#(Zn2X^C30y~YhvE8dMYXeJYnxvlYvHDOWwVCs$eU$f*VX2t}JH7xe{Spo|rykd@eGGhZZ{qGwScW6T!%RJW1J{)Cijh2`&e6IhE5Jy4hS8{Y z-Qth*Z6o%QxGg;qKI%DJ`3_2T>_>E`8Moi<=dn6EkfN?cW@JcMeRa>AZ+M3N zaYTWbYE=S^>%9dxhCTdTd>t#H#jp_z?h-##;cTJ_9yUh2+dU5=+X8=Y#*z$Z>Hx!R z|0w*d?TSMR3Tpra@efpnW-pF?2NhF1RZdok+QnZxU)`47BqLGITzy%DDoUEwZ@A;5 zY0!4lTC_l8T?zylUyNfTKO<)67lMao^3o6hRh7q%jM6>7TW3w?)nc_9M34Em{Nz11 zm|44IzLrL78EmcoH}?m7S9&b|{Jg*0870(>qf6j2r$a*cO-LgfD1a(s=~Z0Btc`>b zHxU?n#=;a4rp+;y6GR}(nj)Z-{2jRH>Xs$qy}B?4(t)F=a(r3@uh3YWCu*XrTJA7D z5GkrLW#=y(MK+IriI#Dr89T|DN+z|(8- zB@T`#Z~#GXn~c<0IxyYOo8HEd%tbMXa^YeA;M80jdUKL7?mv4Ob=3-E_^SX6>Du5Y z&V%edEl#?KWd|pCK-WtOtYyfJjPw*a!+*Red6(pJEF-+AlZ~vJz>wJUPIoHAGiv1v z-^H<@k}TdIDF#Tg&2|6+s<^9<%D_3b=pxK;fqv`W7t*-gXK%Djl#%|ZxFijhK;5}k z$CavsF4Y<#&=A8!zOt=$`9Q*PCob?{*0O`@tJKQt=M^v;sAbzZ7jQW3^M86V>>TQYy({)c z-X@X#1ovSkw0}Dz&{l>`>s+w zdq3kDW?V`j0R+0E6ftZOB5lOhs-H|J$uF~_{rBqN2Z>4ZE6e#2vck{no_wu=^ZbhL z;QR<~3-3tw#j{pU^!Sn`r&zI1pO)*|rqGB2#4aXl%(;q~f#8`@1C1D7>Gdj4%#-i} zz2C()t4%tphg@lPihXi)(^o`v^;X>pX#L#q8!c-VopP+__-Uf|5``-%z zgw|GNN62Mn;<-tc#T-OI$WRW`Y`Rr68aa5A?-jk((FEfq_f~sxp$zdG2%RW>(-^Q4 zO2q5gwrz0L+`2OWAv}eiHYL$i*KWqaNSJGLpR6Ep2AxNphGs*)^Xs`yYOe!u2fub4 zyignM*8wk!q$HmYJ$8#Le!lu6&W9<#j1=^#g5UxUU*FVnWk>TRM+pkbaX>UT zS0*aPb0DIwOc?{lT{fHVq&WG6IyJc9`SiiC_pjZ9W7ie|_o*{-wz!ETk^ zOocU}3! z?TQm~)k`%iUi6jOXcdf}m-mmJX!|1HjAeFAh+f?hb~&$)+lK8?*1^ZjD&=BcSq}Cx z`{f+PksV318Nn@s=)jnDXD7C@88gAD?>bxH6-oN+!PZ!%4Y;bV|Hh`rCg(l6b+*G; z06|!pRd{)b*Aw!#5S_JSk*De=-a+>bW#tkN{sa(G5=t{dRbI|B$8tH89KW-ywBB)! zt0HI-!<978yrH=*F639H96s3;Z~;R) zL@BckxBkfio(kx*!|c%2AS&s%fO zGJpYX(h4Bx%s}Ds#Xrg7=wf+^|+fZF;*_Q@2%ql41L@^>{j02Ai)Vozp=lOdJw*Vce5|pi=a0L-owS zMmc52lyuaqSk!e@_%a&y!f+5eUh=JTMLxr(bY@D9Qy-uPZr8hRQfrfwm#1VsxSCw!&$!k0UEo*>wn;nd~1h{MmH;0GZZ%@aGHj8 z8mZ&2%~&fA#J!Ba0>!V0VKVZydQUbDztEi*n#Qub8KyzPuPzouqBGVh6NU3A^Vxg`<%0n5tCF0V!VL zmb9z5AIAb_A@DqD2tLl`T7t(Z9-Fq!7*;CbxvfjktQ#LRL+f?+5lprr& zL#!VBf)^xp{x}jGB|6qwkmx_$v$c;hYu98n(KSBw=Z5Y=!ANrn`Ay_uuHkvLvDI(` z!g1QZNd)aMU5j=%%uuO-B%FmQRxu6R(G*{fkxb2%BA!m*g^JZsE|tSXHpCJ==LUiWe?qx-8VL&ZvqjHC&azZR=$EH3(A3fwkB?5ALD`hyNuRm{pCbd{H}t zJ_>ne+a#N29lHOm`(GOqlJ}+xyt5}C9X;KB(aKNRyDPhnE{)752VtIt=Dx*rn$j2+ zvJtbhGdk-T7{B*P&#TlwEtjHow@>>*&Xn$NOFK{^fo=Un`&q$KLg23f0%k z8tWc(n#z!%Q?i8vFS)#YLkqo=8ejTNPkW>pvU?j@rITYTvEX>dVG^mFNi7=rI@9*w z>|bJi%*QJY+BZ<=$V8svLk!RUuBLTtifAT~M- zHLfH1#{aFH)pKh56SwdD9S0~UpDuH7)~aUt*?67`tC*AWr1+Z3M%=x0s2K-v>RJ9C z%}@DqWMeJeWIdP9qMGWO;ofl<3QF$jrn(BcyZdFgApD82o@a(#;93ViUNd9EF{%|5 ztlDPryHiY^mIYPnF|jwZ z@P^eX6KjaU+3?gdOIb#sL>TslHn~8<8|zUu(v|1_!^yPjRo|bi4()WIhTcQyYw&t% z$D5VB;ot{VisbiUknMM~a%P<}NzF^tR1tI0^b0TpI9fyxT{jbtT2xpT@YDspQGx?-XYc)9GS4g3zJ0I#p^bIKhrRm1+> zJK^?V9`u$wukhE{k#Vn^s5!`+R(D)b>;hLQg;%i~AA5jDEc&4HqEA`|r=#iJ{ zS^Gx&xlU*tZ`nu}!!MI2F2MuqvDDciC&( zPAu;8b853#_fsu>tDPJvsG`+tjt|+E74!4CessO);FA7D1P}oRhbo3SA;j5dxqIgS z;P!HV3D{=Gik0WBGj$s_@|_Op>4|EgS3%gE!Wd-mduF7DMk8E`)4Y^)Q)@1^Z+2_L&%)X zjY)Lbo^%q6Sb-!%#731Uv5<`EB8>M9rAN1m+aX?0WxO_5KymHHwJP_p_8#|bo3BLH zUXnTs*$!A$0K@93wtzX_I;6MXwerYJmYx)(DM(u*m7F=Va{FqvTo-sosR za!zB6zB%N34XmoOi0WE|U@e7HvvSE0b)O^7 z+wSuRqcTIw9=cIBCCfoIBvw(bQ=Ez!rD~Uub~(R103gS3mQk{)`(O!wkQ^=MqjMfs z-N%cfkCW6{aIKM1xB(OiS@7POGKv~^p(GO;b`xqrA0Q3L>1O_-% z&)N_5O&>YZ^bFFn@tDDoIUZJ}n9W8luBeWG4Bka04d&YIUf6xs9c)IrRhw9uT|)Gy z5HejK*!yLRg*n3wmzRa6_MxQ~E|Btl2fI7UyBn)@T9%mp=2%*3$Ncp5@)sEbG~47R z*E4_w7L|F-f?J~cJleY-ShVkYw=S~lnB6XC>xQmDIHsf0Ar#gsp?&RiFH7&uLh6Y% zJ6e8lD6wzHW%iD1->cbHae=f$KWj_V@c>4B#I}=mbzW}C>{dH&HDQ#DfkNSj-JySB zkI&y0aK>yL>skkzAgspmQfx$$lc~Po83R>B7|6kyQ*3|)7JhNV=H;QKV>5$0LX>nz zo48J7yRBX)_d!iRJ8OzR)zqsZ>wM1yfdu|>tX)DzRmG-Kb$us0){~0i94jZUP%4Ac@3c~#QBuHSB6JyZZe@jnX0!(hrR)oEuFP*Vbo4Rr4~{6j%+m>|s_ zq6eRJ(0BuKhh-Vz?VwLHwA+OmrVxB<8-vU<#pyz5RAJ8|=FaG2-JIJOQZi-0_ZHKC zl>+KiP|{t8-Q$H67SB8&mS#C!ain+u%K zeE=+|BJL)K`*VAw8l)u(7{Z4M9`cEAREDu?Pr%L=O~;}N2JROJE2is3$`2cB1FwR- z&(R-cPm!Gtc&&$ryD9uWm*Yh5(4hA`l>2zmRW}`95R492-{RZa>b#JRpRaPgmMJI- z#xMk89I%Fa>cEI+d$*w-qr=Md0VV~=j+gu*dFdH7)1gGt>NSWOYTPh3JbW>ju&S7T zr-dbgZ4H&FCP1~D3NpL~zT97j=N2#i{CJ6W6Gjef9Y80!t4jCN$6QATpirS(eKnX* ztS??tZe2v+$$W|ODh-8KO_4i3ijE7p)6HrBj*Ukfcr52=bzjx*-l@3dD$p-*ix!O= zzSOnwan0K`yNnKIeqMw}=&b-F*4rs=pWPct0dbU!qa>h#2L4>Lwh z+?rfs*mXhHgpbm9a9}`GCkb7_mg*rnZ_)Fl5+C z?fL7GS$GN?I?ajgO+Vbnr4Yr2;+}YD93Jy2cM{%?0_cq^u#Oxdtaq?(5{4sX4H#X8 zG5*&uH{hF|m0k$H@(tFkz1skS5DF0KjlMy^ z%~qIjKH}0`Do#uv@w#Ej{Bw`uBCR|z_RG@n8b*UFn(M^yW%C@{V-SM@x=qOmZa?;& z1l>3rx3uM%e(mMdVl`rRe@UnbqWj6bvAWiS^a#lj3`Uy!bHH=z+)n#H8v0C~-8+PE zU@?r+_k<2L7V&1VuC*;!`FjYv5(q4CM5sXoXTBreq+*s29sKX+g@?A}t=TgdKe>cAk&; zIh{&OK*ngWz1{jFmUxqw+0Tg`Rr}wZyK*O1`Ef!Gv*>>I@38%xK^b$63WIk_d&~@? zOwV*fXVW}H`Stc5W|Q0LM71fGm+B`cy%dUjdRHPb{MeyaedKo~xlPB`esnIHD&W_* zDel%+3v_Ysxb^}So~qoM0$Cy8WK(`!k@G`Gv?byGfV zLb0<$mlQ>r%T?#?G#Y+i`*iFDd)G;V2>wdyrg)xe)eSdzNA>J*+F2l~ZR<0wI?Z8C zC?6e;2nxs10H|^{0ZNoB5%9uai*G9jMhm32M@{V5+Qv$nIaUhb00a;qJ;HzCVlmuf zmeKsV`CsD>>t-^n8cpDjZncfcGHxT{l3$qW#6SRpK;WtI$fad~@CnuH=!W_sPF~9$ z?_HbGJO7mjbsZZw#GSM07)qBh-8$SlcvEHW=FK%C z8s?&`Qc_v)J{WuvdPatC-%-zX)^PY4{+m4d8@97jjr}lsrzs%7wP+8K2pSWT*l%xE z_yNJgMvD&dL>(vRKuuuA#pTxVRoncy&sY_LuEa_0^OWKub-VZVYbc)majzjH(4U&B zxZ(QZzBd0GbOPH27bB0>+vIq&(tM-egT>5cshmxan1#gjJVHV<>2~Zdyf~!ck0n(e zz;F_=ibsAH4_DS-?DbH*tm(^O{|)%;VQTRMM}#cwRxwbz+DD#W;*87X&bRll!O>d+>wrNX@)@teX07^iiv&^$wq+UU zXNeMuDr?5~q8&6i*jq;gIbP=mDF_0gb#qTE6EXfH=9m8e%mEVOY`#n?dS#k>j^S-+ zweBvE0RDQ**ALFPVfRyV2Ktuvrp z3}^Cy2qtg1{`d335El9HK6~5FKWJ~MA}`@*UiXOjwFk*JeR3n`+a!&|RWCnKL;V82 z#J_y2(>#&WK-%m&xL#JK!EBLM0t12(P;RUK>HVmW^-ZzSiX7fjhf*YZZkC=Eia61y zl3{M3F5jXI06~bP$)=Kg-dP)@khgi`yjfl#2YH?(fY$N=~{S$j|@) zAb|Ju?pbxgQW17s!oH{K`n}+rTEpk`e$dm9YU}b^{X-&y4v_a{c(6mjA^&byE3(?k zo1Z0QX_rGtrszEOuJrhqWJ>P^UkAfk9?NmHeK8v4CvxhbF{kksw`xhb|BI%=ufU%v zh++Qnm9T&aCpDmg%*XQ>nMs}k#{8@up;~fPnC%7|(-^yyQr~espYE~-(q$BhJ{4Vw zWM+Q~bo?jR%bBCA4%{cwfQL0(2uJeW3-Yb^Mqdrr`867ohvV29)X{!{Y8g7@s)C~U z(e+6AJ9Sp0xlouo1}W8iY+xS$O6d)>>&~}-DbMIO`dt>V;eB=(t*5{esUV9O?lw<_ zm1}9t=;B75KEr(&hMd&wK1;iC zaD?ssb&{Xwc(T$c(k$*=67GGcT(u#Ad6s9K6f-)ZHRCtcuw;{63e{ZkI+ zF>LFu75ztA|)pJ$mm0%Hs2Z@S`Rn?#`ddT||7Yy+(561Wni7-Vk$dYu^{!^)&zk zxT9411l8Kem@HIXEZvi2^EP4di}hUlU)dD5e0!Nsv&>c`SDConkIX})s~%TCW`tRt zgLDVy8PIjH*=i`9;L3!_^0ks@+KRG-lj%H8ix~`(D{$lFjEFciT64Kht?gE41wXVx z^tBGfLp3kxRW0zmHt*sCSpRrdH^LD0@L`qQM^cDyOV0(rk;b)7cIJe0)Zg zKvSA18Ayulb)hdg0v)aA(yICvsK+Nb)&nO_V&9s}g=}59)9#k(!Mgy&#Ol*Ssz-?T zhH8GoV}oVfc}|YK@(qkqTX>+I-m=LoXUdjGecI)y`G`BPw#G2P_EN6YT{14}b(3-yj);AqYbPyq&-! U_%1}nf" + "task": 22, + "project": null, + "name": "cat", + "color": "#6080c0", + "type": "any", + "parent": null } }, { - "model": "engine.skeleton", - "pk": 2, + "model": "engine.label", + "pk": 64, "fields": { - "root": 22, - "svg": "" + "task": 22, + "project": null, + "name": "dog", + "color": "#406040", + "type": "any", + "parent": null } }, { - "model": "engine.skeleton", - "pk": 3, + "model": "engine.label", + "pk": 66, "fields": { - "root": 40, - "svg": "" + "task": 22, + "project": null, + "name": "sk", + "color": "#89b9bb", + "type": "skeleton", + "parent": null } }, { - "model": "engine.skeleton", - "pk": 4, + "model": "engine.label", + "pk": 67, "fields": { - "root": 46, - "svg": "" + "task": 22, + "project": null, + "name": "1", + "color": "#d12345", + "type": "points", + "parent": 66 + } +}, +{ + "model": "engine.label", + "pk": 68, + "fields": { + "task": 22, + "project": null, + "name": "2", + "color": "#350dea", + "type": "points", + "parent": 66 + } +}, +{ + "model": "engine.label", + "pk": 69, + "fields": { + "task": 22, + "project": null, + "name": "3", + "color": "#479ffe", + "type": "points", + "parent": 66 + } +}, +{ + "model": "engine.skeleton", + "pk": 1, + "fields": { + "root": 18, + "svg": "" + } +}, +{ + "model": "engine.skeleton", + "pk": 2, + "fields": { + "root": 22, + "svg": "" + } +}, +{ + "model": "engine.skeleton", + "pk": 3, + "fields": { + "root": 40, + "svg": "" + } +}, +{ + "model": "engine.skeleton", + "pk": 4, + "fields": { + "root": 46, + "svg": "" } }, { @@ -5284,6 +5670,14 @@ "svg": "" } }, +{ + "model": "engine.skeleton", + "pk": 6, + "fields": { + "root": 66, + "svg": "" + } +}, { "model": "engine.attributespec", "pk": 1, @@ -5460,6 +5854,248 @@ "source": "manual" } }, +{ + "model": "engine.labeledimage", + "pk": 162, + "fields": { + "job": 32, + "label": 63, + "frame": 0, + "group": null, + "source": "manual" + } +}, +{ + "model": "engine.labeledimage", + "pk": 163, + "fields": { + "job": 32, + "label": 64, + "frame": 1, + "group": null, + "source": "manual" + } +}, +{ + "model": "engine.labeledimage", + "pk": 164, + "fields": { + "job": 32, + "label": 66, + "frame": 2, + "group": null, + "source": "manual" + } +}, +{ + "model": "engine.labeledimage", + "pk": 165, + "fields": { + "job": 32, + "label": 63, + "frame": 3, + "group": null, + "source": "manual" + } +}, +{ + "model": "engine.labeledimage", + "pk": 166, + "fields": { + "job": 32, + "label": 64, + "frame": 4, + "group": null, + "source": "manual" + } +}, +{ + "model": "engine.labeledimage", + "pk": 167, + "fields": { + "job": 32, + "label": 63, + "frame": 5, + "group": null, + "source": "manual" + } +}, +{ + "model": "engine.labeledimage", + "pk": 168, + "fields": { + "job": 32, + "label": 66, + "frame": 6, + "group": null, + "source": "manual" + } +}, +{ + "model": "engine.labeledimage", + "pk": 169, + "fields": { + "job": 32, + "label": 64, + "frame": 7, + "group": null, + "source": "manual" + } +}, +{ + "model": "engine.labeledimage", + "pk": 170, + "fields": { + "job": 32, + "label": 63, + "frame": 8, + "group": null, + "source": "manual" + } +}, +{ + "model": "engine.labeledimage", + "pk": 171, + "fields": { + "job": 32, + "label": 64, + "frame": 9, + "group": null, + "source": "manual" + } +}, +{ + "model": "engine.labeledimage", + "pk": 172, + "fields": { + "job": 32, + "label": 64, + "frame": 10, + "group": null, + "source": "manual" + } +}, +{ + "model": "engine.labeledimage", + "pk": 217, + "fields": { + "job": 27, + "label": 66, + "frame": 0, + "group": null, + "source": "manual" + } +}, +{ + "model": "engine.labeledimage", + "pk": 218, + "fields": { + "job": 27, + "label": 63, + "frame": 1, + "group": null, + "source": "manual" + } +}, +{ + "model": "engine.labeledimage", + "pk": 219, + "fields": { + "job": 27, + "label": 64, + "frame": 2, + "group": null, + "source": "manual" + } +}, +{ + "model": "engine.labeledimage", + "pk": 220, + "fields": { + "job": 27, + "label": 66, + "frame": 3, + "group": null, + "source": "manual" + } +}, +{ + "model": "engine.labeledimage", + "pk": 221, + "fields": { + "job": 27, + "label": 66, + "frame": 4, + "group": null, + "source": "manual" + } +}, +{ + "model": "engine.labeledimage", + "pk": 222, + "fields": { + "job": 27, + "label": 66, + "frame": 5, + "group": null, + "source": "manual" + } +}, +{ + "model": "engine.labeledimage", + "pk": 223, + "fields": { + "job": 27, + "label": 66, + "frame": 6, + "group": null, + "source": "manual" + } +}, +{ + "model": "engine.labeledimage", + "pk": 224, + "fields": { + "job": 27, + "label": 66, + "frame": 7, + "group": null, + "source": "manual" + } +}, +{ + "model": "engine.labeledimage", + "pk": 225, + "fields": { + "job": 27, + "label": 66, + "frame": 8, + "group": null, + "source": "manual" + } +}, +{ + "model": "engine.labeledimage", + "pk": 226, + "fields": { + "job": 27, + "label": 64, + "frame": 9, + "group": null, + "source": "manual" + } +}, +{ + "model": "engine.labeledimage", + "pk": 227, + "fields": { + "job": 27, + "label": 66, + "frame": 10, + "group": null, + "source": "manual" + } +}, { "model": "engine.labeledshape", "pk": 1, @@ -6145,269 +6781,1981 @@ } }, { - "model": "engine.labeledshapeattributeval", - "pk": 1, + "model": "engine.labeledshape", + "pk": 373, "fields": { - "spec": 2, - "value": "white", - "shape": 36 + "job": 32, + "label": 64, + "frame": 0, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[128.70000000000073, 202.8154296875, 174.84953117370605, 252.62294394632772]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledshapeattributeval", - "pk": 2, + "model": "engine.labeledshape", + "pk": 374, "fields": { - "spec": 3, - "value": "val1", - "shape": 39 + "job": 32, + "label": 66, + "frame": 1, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[48.12463059940514, 49.56415639855863, 86.72866669447971, 79.88534367799434]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledshapeattributeval", - "pk": 3, + "model": "engine.labeledshape", + "pk": 375, "fields": { - "spec": 1, - "value": "mazda", - "shape": 42 - } -}, -{ - "model": "engine.labeledshapeattributeval", - "pk": 4, + "job": 32, + "label": 63, + "frame": 2, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[1.973846331831547, 45.77202532553066, 19.359541493051733, 49.59142754572273]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 376, "fields": { - "spec": 7, - "value": "non-default", - "shape": 54 + "job": 32, + "label": 63, + "frame": 3, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[28.151068739966007, 25.472817252545543, 69.01675105692789, 39.17582104149861]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledshapeattributeval", - "pk": 5, + "model": "engine.labeledshape", + "pk": 377, "fields": { - "spec": 8, - "value": "black", - "shape": 55 + "job": 32, + "label": 64, + "frame": 4, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[20.82859485196533, 20.20284211999498, 65.06449540153316, 36.586720678222335]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledshapeattributeval", - "pk": 6, + "model": "engine.labeledshape", + "pk": 378, "fields": { - "spec": 9, - "value": "non-default", - "shape": 56 + "job": 32, + "label": 66, + "frame": 5, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[33.79061149513946, 8.697799034160319, 66.8603743960803, 56.40259427136259]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledshapeattributeval", - "pk": 7, + "model": "engine.labeledshape", + "pk": 379, "fields": { - "spec": 10, - "value": "black", - "shape": 57 + "job": 32, + "label": 63, + "frame": 6, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[36.59042217067678, 11.640939649375332, 56.356138094129285, 23.152580340218726]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 1, + "model": "engine.labeledshape", + "pk": 380, "fields": { - "job": 18, - "label": 22, - "frame": 0, - "group": 0, + "job": 32, + "label": 64, + "frame": 7, + "group": null, "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[40.84676019536735, 49.73369769438821, 86.55210348083034, 92.67464655715418]", + "rotation": 0.0, "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 2, + "model": "engine.labeledshape", + "pk": 381, "fields": { - "job": 18, - "label": 23, - "frame": 0, - "group": 0, + "job": 32, + "label": 63, + "frame": 8, + "group": null, "source": "manual", - "parent": 1 + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[6.6512404187989596, 48.608637853937424, 38.47957672845558, 63.01814316203485]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 3, + "model": "engine.labeledshape", + "pk": 382, "fields": { - "job": 18, - "label": 24, - "frame": 0, - "group": 0, + "job": 32, + "label": 66, + "frame": 9, + "group": null, "source": "manual", - "parent": 1 + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[34.8591781560674, 46.909805505807725, 62.76884975235831, 71.15370887744085]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 4, + "model": "engine.labeledshape", + "pk": 383, "fields": { - "job": 18, - "label": 25, - "frame": 0, - "group": 0, + "job": 32, + "label": 63, + "frame": 10, + "group": null, "source": "manual", - "parent": 1 + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[40.01964032220059, 28.210223404990387, 63.80243197711431, 77.26899546998015]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 5, + "model": "engine.labeledshape", + "pk": 384, "fields": { - "job": 18, - "label": 26, + "job": 32, + "label": 63, "frame": 0, - "group": 0, + "group": null, "source": "manual", - "parent": 1 + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[21.771535357816685, 38.10394839707063, 46.66121542795621, 61.395778976883435]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 6, + "model": "engine.labeledshape", + "pk": 385, "fields": { - "job": 25, - "label": 58, - "frame": 0, - "group": 0, + "job": 32, + "label": 64, + "frame": 1, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[47.74069002745097, 8.979945307737525, 75.09009579972003, 49.944377666156775]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 386, + "fields": { + "job": 32, + "label": 63, + "frame": 2, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[31.519108441498556, 11.487384732875865, 33.9677855625604, 11.741460365690042]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 387, + "fields": { + "job": 32, + "label": 66, + "frame": 3, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[47.626061974587216, 4.742902857127573, 73.6431946747958, 21.98893892047218]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 388, + "fields": { + "job": 32, + "label": 64, + "frame": 4, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[39.9552116305673, 7.099389830892683, 81.50568347911505, 22.91276365749088]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 389, + "fields": { + "job": 32, + "label": 63, + "frame": 5, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[8.490724513815634, 4.967537330256527, 33.879170648858064, 41.48246323545371]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 390, + "fields": { + "job": 32, + "label": 64, + "frame": 6, + "group": null, "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[8.238478163045936, 30.506885409533453, 24.199550828477328, 52.470067436160306]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 391, + "fields": { + "job": 32, + "label": 64, + "frame": 7, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[48.699397805843304, 25.414220926373016, 98.21088655300638, 74.12108955171448]", + "rotation": 0.0, "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 7, + "model": "engine.labeledshape", + "pk": 392, + "fields": { + "job": 32, + "label": 63, + "frame": 8, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[23.44786013239356, 46.61655359142538, 38.03525661308419, 63.989553927693194]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 393, + "fields": { + "job": 32, + "label": 66, + "frame": 9, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[8.39848796382615, 21.848706178190497, 34.06199388884364, 58.755093781932075]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 394, + "fields": { + "job": 32, + "label": 66, + "frame": 10, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[49.33379108044891, 45.87438661706784, 97.62187411104203, 94.75916402425524]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 483, + "fields": { + "job": 27, + "label": 64, + "frame": 0, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[32.62534262708583, 20.60098154936127, 54.70276973433946, 42.65809723800925]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 484, + "fields": { + "job": 27, + "label": 64, + "frame": 1, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[16.165617100664203, 9.174072385736443, 34.292834517618566, 49.1800330458904]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 485, + "fields": { + "job": 27, + "label": 66, + "frame": 2, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[29.29325796839885, 17.76290795533808, 42.188980213015164, 19.15690194174448]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 486, + "fields": { + "job": 27, + "label": 64, + "frame": 3, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[12.900324218921977, 31.61197536878121, 14.59391078431892, 36.29094511026649]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 487, + "fields": { + "job": 27, + "label": 63, + "frame": 4, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[2.813694128785693, 30.20761291442227, 18.7208158667625, 36.10507213674266]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 488, + "fields": { + "job": 27, + "label": 63, + "frame": 5, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[3.508318958955836, 27.7047096625407, 26.54219559642832, 45.905198894448475]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 489, + "fields": { + "job": 27, + "label": 64, + "frame": 6, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[25.14030189623754, 5.6733962996246055, 38.20236513837561, 50.107446648679]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 490, + "fields": { + "job": 27, + "label": 64, + "frame": 7, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[31.485093194422202, 6.652309747763773, 78.90159992771716, 50.14729730944946]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 491, + "fields": { + "job": 27, + "label": 64, + "frame": 8, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[30.907609343908867, 26.920657464053736, 61.021803468648315, 34.33466966738635]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 492, + "fields": { + "job": 27, + "label": 64, + "frame": 9, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[40.67588165005975, 44.16433216489991, 72.56184147619327, 85.5429197134128]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 493, + "fields": { + "job": 27, + "label": 66, + "frame": 10, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[16.097754035046485, 4.573647979622352, 58.8933879574248, 31.93095871390559]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 494, + "fields": { + "job": 27, + "label": 63, + "frame": 0, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[108.53125, 181.1015625, 142.66406158880454, 222.9093914860714]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 495, + "fields": { + "job": 27, + "label": 66, + "frame": 1, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[9.683607669644278, 35.54745578773315, 17.07658182436379, 70.58735623784703]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 496, + "fields": { + "job": 27, + "label": 64, + "frame": 2, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[9.23320240197188, 14.307138152377041, 25.845440820735742, 44.032847830632605]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 497, + "fields": { + "job": 27, + "label": 63, + "frame": 3, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[24.730337557305866, 29.62228497877787, 29.24857191530591, 70.68451297781645]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 498, + "fields": { + "job": 27, + "label": 64, + "frame": 4, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[2.1121019722181886, 13.869054700136441, 11.324617420574125, 19.972173011282173]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 499, + "fields": { + "job": 27, + "label": 63, + "frame": 5, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[40.030467384964794, 14.766168952345382, 56.1585086234919, 33.38318513200221]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 500, + "fields": { + "job": 27, + "label": 66, + "frame": 6, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[22.669744730593095, 49.829940784412905, 49.045918115614874, 92.87818219175908]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 501, + "fields": { + "job": 27, + "label": 63, + "frame": 7, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[35.06714303007967, 34.81749603873695, 72.81534706452, 60.62236529733499]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 502, + "fields": { + "job": 27, + "label": 64, + "frame": 8, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[33.949231044002076, 43.79253250986025, 54.84733296216899, 62.44618575550419]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 503, + "fields": { + "job": 27, + "label": 64, + "frame": 9, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[15.01664682667706, 24.951413716977832, 34.52619994974882, 60.389045841248674]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 504, + "fields": { + "job": 27, + "label": 66, + "frame": 10, + "group": null, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[19.74201544469132, 30.437730521261773, 43.478177450860585, 38.85138665770247]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 505, + "fields": { + "job": 27, + "label": 63, + "frame": 2, + "group": 0, + "source": "manual", + "type": "polyline", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[191.880859375, 54.677734375, 244.87726265758647, 74.96046080888482, 318.8110270353427, 38.32071917035137, 374.4249205938322, 107.67451584329137]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 506, + "fields": { + "job": 27, + "label": 63, + "frame": 2, + "group": 0, + "source": "manual", + "type": "ellipse", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[535.3916015625, 94.59912109375, 570.72265625, 66.46484375]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 507, + "fields": { + "job": 27, + "label": 63, + "frame": 2, + "group": 0, + "source": "manual", + "type": "cuboid", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[401.25005136424625, 21.437188999945647, 401.25005136424625, 86.07529491001696, 476.49277230117514, 21.30941055245239, 476.49277230117514, 86.1453633191959, 482.3813022073682, 17.222011508036303, 482.3813022073682, 81.74829255695477, 407.4789834561907, 17.36159481238974, 407.4789834561907, 81.69191156113993]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 508, + "fields": { + "job": 27, + "label": 63, + "frame": 2, + "group": 0, + "source": "manual", + "type": "mask", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[22.0, 5.0, 143.0, 8.0, 140.0, 10.0, 138.0, 12.0, 137.0, 13.0, 30.0, 5.0, 101.0, 13.0, 29.0, 7.0, 100.0, 14.0, 27.0, 9.0, 99.0, 15.0, 25.0, 11.0, 99.0, 14.0, 25.0, 11.0, 100.0, 14.0, 24.0, 12.0, 99.0, 15.0, 23.0, 12.0, 100.0, 15.0, 22.0, 13.0, 99.0, 16.0, 22.0, 12.0, 100.0, 16.0, 21.0, 13.0, 100.0, 15.0, 22.0, 12.0, 101.0, 15.0, 21.0, 13.0, 100.0, 16.0, 21.0, 13.0, 100.0, 16.0, 20.0, 13.0, 101.0, 15.0, 21.0, 12.0, 102.0, 15.0, 20.0, 13.0, 102.0, 15.0, 20.0, 12.0, 103.0, 14.0, 21.0, 11.0, 103.0, 15.0, 20.0, 11.0, 104.0, 15.0, 19.0, 12.0, 103.0, 16.0, 18.0, 12.0, 104.0, 16.0, 18.0, 12.0, 104.0, 16.0, 17.0, 13.0, 103.0, 16.0, 17.0, 13.0, 104.0, 16.0, 17.0, 12.0, 105.0, 16.0, 16.0, 13.0, 78.0, 9.0, 17.0, 17.0, 15.0, 14.0, 75.0, 15.0, 14.0, 17.0, 15.0, 13.0, 74.0, 18.0, 13.0, 16.0, 15.0, 13.0, 73.0, 23.0, 9.0, 17.0, 16.0, 11.0, 72.0, 26.0, 8.0, 17.0, 15.0, 11.0, 70.0, 29.0, 8.0, 17.0, 14.0, 12.0, 68.0, 32.0, 6.0, 18.0, 14.0, 11.0, 67.0, 35.0, 5.0, 18.0, 13.0, 11.0, 67.0, 36.0, 5.0, 18.0, 12.0, 12.0, 66.0, 38.0, 3.0, 19.0, 12.0, 11.0, 66.0, 39.0, 3.0, 19.0, 11.0, 11.0, 66.0, 12.0, 4.0, 25.0, 1.0, 20.0, 10.0, 11.0, 66.0, 11.0, 9.0, 22.0, 1.0, 19.0, 10.0, 12.0, 65.0, 12.0, 11.0, 41.0, 8.0, 12.0, 65.0, 12.0, 13.0, 40.0, 8.0, 11.0, 65.0, 12.0, 15.0, 39.0, 7.0, 11.0, 65.0, 12.0, 16.0, 39.0, 6.0, 11.0, 66.0, 12.0, 17.0, 38.0, 5.0, 12.0, 65.0, 12.0, 18.0, 54.0, 66.0, 11.0, 20.0, 52.0, 66.0, 12.0, 20.0, 51.0, 66.0, 13.0, 20.0, 50.0, 67.0, 12.0, 21.0, 48.0, 69.0, 12.0, 22.0, 46.0, 69.0, 13.0, 22.0, 44.0, 70.0, 13.0, 24.0, 42.0, 71.0, 13.0, 25.0, 39.0, 72.0, 14.0, 25.0, 37.0, 36.0, 6.0, 32.0, 13.0, 26.0, 20.0, 1.0, 14.0, 36.0, 10.0, 30.0, 13.0, 26.0, 20.0, 4.0, 9.0, 36.0, 13.0, 28.0, 14.0, 27.0, 18.0, 5.0, 7.0, 36.0, 15.0, 28.0, 14.0, 27.0, 17.0, 48.0, 20.0, 24.0, 15.0, 26.0, 16.0, 48.0, 22.0, 22.0, 16.0, 27.0, 14.0, 48.0, 25.0, 20.0, 16.0, 27.0, 13.0, 48.0, 26.0, 20.0, 16.0, 28.0, 10.0, 50.0, 27.0, 19.0, 16.0, 28.0, 8.0, 52.0, 27.0, 19.0, 24.0, 21.0, 5.0, 54.0, 27.0, 19.0, 25.0, 82.0, 24.0, 19.0, 25.0, 83.0, 23.0, 19.0, 25.0, 83.0, 23.0, 19.0, 25.0, 86.0, 19.0, 20.0, 24.0, 89.0, 17.0, 20.0, 24.0, 90.0, 16.0, 20.0, 23.0, 91.0, 15.0, 20.0, 23.0, 94.0, 12.0, 20.0, 23.0, 94.0, 12.0, 20.0, 23.0, 94.0, 12.0, 20.0, 23.0, 93.0, 13.0, 21.0, 22.0, 92.0, 13.0, 22.0, 21.0, 92.0, 14.0, 23.0, 19.0, 93.0, 13.0, 25.0, 19.0, 91.0, 14.0, 25.0, 21.0, 88.0, 15.0, 26.0, 23.0, 83.0, 16.0, 28.0, 24.0, 80.0, 16.0, 30.0, 26.0, 75.0, 17.0, 33.0, 26.0, 72.0, 17.0, 36.0, 27.0, 68.0, 18.0, 37.0, 28.0, 64.0, 19.0, 41.0, 28.0, 59.0, 20.0, 44.0, 29.0, 54.0, 21.0, 47.0, 30.0, 47.0, 24.0, 50.0, 31.0, 40.0, 27.0, 52.0, 34.0, 32.0, 30.0, 56.0, 39.0, 19.0, 32.0, 62.0, 45.0, 5.0, 35.0, 65.0, 83.0, 70.0, 78.0, 74.0, 74.0, 77.0, 71.0, 81.0, 64.0, 88.0, 59.0, 91.0, 52.0, 103.0, 42.0, 110.0, 37.0, 123.0, 20.0, 135.0, 5.0, 3.0, 5.0, 46.0, 634.0, 38.0, 782.0, 145.0]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 509, + "fields": { + "job": 32, + "label": 66, + "frame": 0, + "group": 0, + "source": "manual", + "type": "skeleton", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 510, + "fields": { + "job": 32, + "label": 67, + "frame": 0, + "group": 0, + "source": "manual", + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[325.81183481270637, 169.3732236381784]", + "rotation": 0.0, + "parent": 509 + } +}, +{ + "model": "engine.labeledshape", + "pk": 511, + "fields": { + "job": 32, + "label": 68, + "frame": 0, + "group": 0, + "source": "manual", + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[405.6341290966555, 216.82961195061355]", + "rotation": 0.0, + "parent": 509 + } +}, +{ + "model": "engine.labeledshape", + "pk": 512, + "fields": { + "job": 32, + "label": 69, + "frame": 0, + "group": 0, + "source": "manual", + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[335.2453776397853, 246.57839351937508]", + "rotation": 0.0, + "parent": 509 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 1, + "fields": { + "spec": 2, + "value": "white", + "shape": 36 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 2, + "fields": { + "spec": 3, + "value": "val1", + "shape": 39 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 3, + "fields": { + "spec": 1, + "value": "mazda", + "shape": 42 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 4, + "fields": { + "spec": 7, + "value": "non-default", + "shape": 54 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 5, + "fields": { + "spec": 8, + "value": "black", + "shape": 55 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 6, + "fields": { + "spec": 9, + "value": "non-default", + "shape": 56 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 7, + "fields": { + "spec": 10, + "value": "black", + "shape": 57 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 1, + "fields": { + "job": 18, + "label": 22, + "frame": 0, + "group": 0, + "source": "manual", + "parent": null + } +}, +{ + "model": "engine.labeledtrack", + "pk": 2, + "fields": { + "job": 18, + "label": 23, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 1 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 3, + "fields": { + "job": 18, + "label": 24, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 1 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 4, + "fields": { + "job": 18, + "label": 25, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 1 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 5, + "fields": { + "job": 18, + "label": 26, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 1 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 6, + "fields": { + "job": 25, + "label": 58, + "frame": 0, + "group": 0, + "source": "manual", + "parent": null + } +}, +{ + "model": "engine.labeledtrack", + "pk": 7, + "fields": { + "job": 25, + "label": 59, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 6 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 8, + "fields": { + "job": 25, + "label": 60, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 6 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 9, + "fields": { + "job": 25, + "label": 61, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 6 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 10, + "fields": { + "job": 25, + "label": 62, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 6 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 11, + "fields": { + "job": 26, + "label": 58, + "frame": 6, + "group": 0, + "source": "manual", + "parent": null + } +}, +{ + "model": "engine.labeledtrack", + "pk": 12, + "fields": { + "job": 26, + "label": 59, + "frame": 6, + "group": 0, + "source": "manual", + "parent": 11 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 13, + "fields": { + "job": 26, + "label": 60, + "frame": 6, + "group": 0, + "source": "manual", + "parent": 11 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 14, + "fields": { + "job": 26, + "label": 61, + "frame": 6, + "group": 0, + "source": "manual", + "parent": 11 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 15, + "fields": { + "job": 26, + "label": 62, + "frame": 6, + "group": 0, + "source": "manual", + "parent": 11 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 107, + "fields": { + "job": 32, + "label": 64, + "frame": 1, + "group": null, + "source": "manual", + "parent": null + } +}, +{ + "model": "engine.labeledtrack", + "pk": 108, + "fields": { + "job": 32, + "label": 66, + "frame": 5, + "group": null, + "source": "manual", + "parent": null + } +}, +{ + "model": "engine.labeledtrack", + "pk": 117, + "fields": { + "job": 27, + "label": 64, + "frame": 4, + "group": null, + "source": "manual", + "parent": null + } +}, +{ + "model": "engine.labeledtrack", + "pk": 118, + "fields": { + "job": 27, + "label": 64, + "frame": 1, + "group": null, + "source": "manual", + "parent": null + } +}, +{ + "model": "engine.labeledtrack", + "pk": 119, + "fields": { + "job": 27, + "label": 66, + "frame": 2, + "group": 0, + "source": "manual", + "parent": null + } +}, +{ + "model": "engine.labeledtrack", + "pk": 120, + "fields": { + "job": 27, + "label": 63, + "frame": 2, + "group": 0, + "source": "manual", + "parent": null + } +}, +{ + "model": "engine.labeledtrack", + "pk": 121, + "fields": { + "job": 27, + "label": 63, + "frame": 0, + "group": 0, + "source": "manual", + "parent": null + } +}, +{ + "model": "engine.labeledtrack", + "pk": 122, + "fields": { + "job": 27, + "label": 67, + "frame": 2, + "group": 0, + "source": "manual", + "parent": 119 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 123, + "fields": { + "job": 27, + "label": 68, + "frame": 2, + "group": 0, + "source": "manual", + "parent": 119 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 124, + "fields": { + "job": 27, + "label": 69, + "frame": 2, + "group": 0, + "source": "manual", + "parent": 119 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 125, + "fields": { + "job": 27, + "label": 63, + "frame": 0, + "group": 0, + "source": "manual", + "parent": null + } +}, +{ + "model": "engine.labeledtrackattributeval", + "pk": 3, + "fields": { + "spec": 2, + "value": "white", + "track": 1 + } +}, +{ + "model": "engine.labeledtrackattributeval", + "pk": 4, + "fields": { + "spec": 3, + "value": "val1", + "track": 4 + } +}, +{ + "model": "engine.trackedshape", + "pk": 1, + "fields": { + "type": "skeleton", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[]", + "rotation": 0.0, + "track": 1, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 2, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[381.9130434782637, 355.0592829431864]", + "rotation": 0.0, + "track": 2, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 3, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[461.9389738212561, 583.320176176868]", + "rotation": 0.0, + "track": 3, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 4, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[655.6465767436227, 281.7391304347839]", + "rotation": 0.0, + "track": 4, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 5, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[708.000000000003, 586.0869565217404]", + "rotation": 0.0, + "track": 5, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 6, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[137.0966796875, 156.11214469590232]", + "rotation": 0.0, + "track": 2, + "frame": 3 + } +}, +{ + "model": "engine.trackedshape", + "pk": 7, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[217.12261003049207, 384.3730379295848]", + "rotation": 0.0, + "track": 3, + "frame": 3 + } +}, +{ + "model": "engine.trackedshape", + "pk": 8, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[410.83021295285835, 82.7919921875]", + "rotation": 0.0, + "track": 4, + "frame": 3 + } +}, +{ + "model": "engine.trackedshape", + "pk": 9, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[463.1836362092399, 387.13981827445605]", + "rotation": 0.0, + "track": 5, + "frame": 3 + } +}, +{ + "model": "engine.trackedshape", + "pk": 10, + "fields": { + "type": "skeleton", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[]", + "rotation": 0.0, + "track": 6, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 11, + "fields": { + "type": "points", + "occluded": false, + "outside": true, + "z_order": 0, + "points": "[230.39103314621025, 149.98846070356873]", + "rotation": 0.0, + "track": 7, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 12, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[230.39103314621025, 149.98846070356873]", + "rotation": 0.0, + "track": 7, + "frame": 3 + } +}, +{ + "model": "engine.trackedshape", + "pk": 13, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[292.80597636674844, 284.1818841927473]", + "rotation": 0.0, + "track": 8, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 14, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[377.016603158851, 94.95407858346152]", + "rotation": 0.0, + "track": 9, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 15, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[499.86507710826913, 316.59939612801213]", + "rotation": 0.0, + "track": 10, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 16, + "fields": { + "type": "skeleton", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[]", + "rotation": 0.0, + "track": 11, + "frame": 6 + } +}, +{ + "model": "engine.trackedshape", + "pk": 17, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[92.95325643333308, 129.2954675940839]", + "rotation": 0.0, + "track": 12, + "frame": 6 + } +}, +{ + "model": "engine.trackedshape", + "pk": 18, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[133.81649280769233, 195.4883603907146]", + "rotation": 0.0, + "track": 13, + "frame": 6 + } +}, +{ + "model": "engine.trackedshape", + "pk": 19, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[188.94942364574058, 102.14894385926891]", + "rotation": 0.0, + "track": 14, + "frame": 6 + } +}, +{ + "model": "engine.trackedshape", + "pk": 20, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[269.3786601426267, 211.47877807640333]", + "rotation": 0.0, + "track": 15, + "frame": 6 + } +}, +{ + "model": "engine.trackedshape", + "pk": 428, + "fields": { + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[89.16625482373604, 10.760448971018688, 21.130943971024195, 33.264143636745125, 82.08266620234568, 57.27050026015028, 31.61462894960768, 91.61837979864868, 61.318808891867995, 5.2591005982589145]", + "rotation": 0.0, + "track": 107, + "frame": 1 + } +}, +{ + "model": "engine.trackedshape", + "pk": 429, + "fields": { + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[86.12227563556914, 54.78519030863848, 5.965437872325186, 44.415919636543535, 21.508219614650393, 77.71533185704882, 56.56030517796948, 80.49138661336151, 92.11320758706701, 36.23616592947234]", + "rotation": 0.0, + "track": 107, + "frame": 2 + } +}, +{ + "model": "engine.trackedshape", + "pk": 430, + "fields": { + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[43.844133439202515, 52.766337685192056, 36.06107102732473, 41.86726929430576, 10.476592440122644, 76.08071328170251, 12.350073636556836, 42.14361527808913, 20.030324015224398, 97.33574207745058]", + "rotation": 0.0, + "track": 107, + "frame": 3 + } +}, +{ + "model": "engine.trackedshape", + "pk": 431, + "fields": { + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[46.32363927321131, 89.27799405888287, 11.543344424530844, 28.859146282381133, 39.954518702075006, 7.7721058829602345, 89.55146184028104, 41.32407558272474, 65.71210278333133, 4.723941407484478]", + "rotation": 0.0, + "track": 107, + "frame": 4 + } +}, +{ + "model": "engine.trackedshape", + "pk": 432, + "fields": { + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[63.75444524182796, 83.38994368964245, 89.86483302169569, 76.72264053847121, 65.79043486042822, 23.786207640718814, 77.73570584702074, 67.1092531599958]", + "rotation": 0.0, + "track": 107, + "frame": 5 + } +}, +{ + "model": "engine.trackedshape", + "pk": 433, + "fields": { + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[42.08516199103318, 29.942896326510805, 40.39823943435537, 49.37947128117274, 98.88115268683107, 79.11696631188182]", + "rotation": 0.0, + "track": 107, + "frame": 6 + } +}, +{ + "model": "engine.trackedshape", + "pk": 434, + "fields": { + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[81.78520462265138, 70.56947279185766, 73.77379910176585, 76.65691380291577, 78.13598264354707, 51.951762879932886]", + "rotation": 0.0, + "track": 107, + "frame": 7 + } +}, +{ + "model": "engine.trackedshape", + "pk": 435, + "fields": { + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[51.12165640102631, 99.11084197328293, 63.84797882103561, 45.89089381970446, 33.434440460259694, 19.765429813835755]", + "rotation": 0.0, + "track": 107, + "frame": 8 + } +}, +{ + "model": "engine.trackedshape", + "pk": 436, + "fields": { + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[60.89406682712508, 49.404300661462685, 10.175918797036033, 22.69300466402857, 13.636722568044934, 24.9397151458307, 20.52105176191774, 40.90671260779596, 57.81882237238361, 93.4250359257492]", + "rotation": 0.0, + "track": 107, + "frame": 9 + } +}, +{ + "model": "engine.trackedshape", + "pk": 437, + "fields": { + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[56.70821030480572, 38.20037623588232, 63.18175989344238, 41.73070749428784, 2.4862395912330637, 63.95431832704548]", + "rotation": 0.0, + "track": 108, + "frame": 5 + } +}, +{ + "model": "engine.trackedshape", + "pk": 438, + "fields": { + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[12.005563467361247, 51.17651673396597, 26.65775387838101, 83.60637658227678, 9.37445361764302, 98.39883962537608, 11.544015694368825, 82.39090054978801, 86.56240502418258, 88.15659541170685]", + "rotation": 0.0, + "track": 108, + "frame": 6 + } +}, +{ + "model": "engine.trackedshape", + "pk": 439, + "fields": { + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[27.49753431280614, 52.642159328363334, 88.61671771042018, 29.506649953484164, 99.84757744084266, 66.51086041463735, 98.64123905514187, 80.21191374336696, 12.032866200086401, 59.74691350332406]", + "rotation": 0.0, + "track": 108, + "frame": 7 + } +}, +{ + "model": "engine.trackedshape", + "pk": 440, + "fields": { + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[45.66798986781423, 4.961587842360249, 28.891554322880264, 88.49284935388283, 42.04171004313141, 52.41974372296537, 79.88779494689628, 78.70227858399868, 3.134998177462567, 60.093270566831016]", + "rotation": 0.0, + "track": 108, + "frame": 8 + } +}, +{ + "model": "engine.trackedshape", + "pk": 441, + "fields": { + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[69.62777852757223, 25.046431964099458, 59.00496511489233, 12.15728994349642, 10.618682601907793, 27.135941155386135, 24.750684503833043, 72.1563422338744]", + "rotation": 0.0, + "track": 108, + "frame": 9 + } +}, +{ + "model": "engine.trackedshape", + "pk": 479, + "fields": { + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[33.598779899537504, 47.72613723612956, 72.98403755948176, 46.37989500312985, 30.124643891237035, 37.121847333246016]", + "rotation": 0.0, + "track": 117, + "frame": 4 + } +}, +{ + "model": "engine.trackedshape", + "pk": 480, "fields": { - "job": 25, - "label": 59, - "frame": 0, - "group": 0, - "source": "manual", - "parent": 6 + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[46.51991234215712, 46.432609873899786, 45.655675472283754, 16.25754165859492, 43.56714102707272, 49.98897944826618, 5.709001866044616, 94.02221983606873, 50.4674845929161, 3.8063308724888167]", + "rotation": 0.0, + "track": 117, + "frame": 5 } }, { - "model": "engine.labeledtrack", - "pk": 8, + "model": "engine.trackedshape", + "pk": 482, "fields": { - "job": 25, - "label": 60, - "frame": 0, - "group": 0, - "source": "manual", - "parent": 6 + "type": "polygon", + "occluded": false, + "outside": true, + "z_order": 0, + "points": "[93.4636235933026, 75.92351333549601, 41.2227627513351, 34.350331204602604, 66.3432816308487, 54.056702329000764]", + "rotation": 0.0, + "track": 117, + "frame": 7 } }, { - "model": "engine.labeledtrack", - "pk": 9, + "model": "engine.trackedshape", + "pk": 483, "fields": { - "job": 25, - "label": 61, - "frame": 0, - "group": 0, - "source": "manual", - "parent": 6 + "type": "polygon", + "occluded": true, + "outside": false, + "z_order": 0, + "points": "[5.0376184452136314, 30.9548987882599, 43.94144681021965, 21.128727976625083, 48.469900205179414, 40.057149554521985]", + "rotation": 0.0, + "track": 117, + "frame": 8 } }, { - "model": "engine.labeledtrack", - "pk": 10, + "model": "engine.trackedshape", + "pk": 484, "fields": { - "job": 25, - "label": 62, - "frame": 0, - "group": 0, - "source": "manual", - "parent": 6 + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[20.627812291540625, 77.71815966193307, 21.07255019421953, 54.89527252097782, 44.701168842121064, 35.54993705233812, 21.962376189353606, 41.33264342135886]", + "rotation": 0.0, + "track": 117, + "frame": 9 } }, { - "model": "engine.labeledtrack", - "pk": 11, + "model": "engine.trackedshape", + "pk": 485, "fields": { - "job": 26, - "label": 58, - "frame": 6, - "group": 0, - "source": "manual", - "parent": null + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[14.249043106539217, 92.98784111986599, 75.59995790885854, 9.882230433856531, 74.64478290627322, 24.288343372649436]", + "rotation": 0.0, + "track": 118, + "frame": 1 } }, { - "model": "engine.labeledtrack", - "pk": 12, + "model": "engine.trackedshape", + "pk": 486, "fields": { - "job": 26, - "label": 59, - "frame": 6, - "group": 0, - "source": "manual", - "parent": 11 + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[20.40678024726209, 91.07758232974479, 91.93855431428733, 55.64212246699361, 98.18754824554128, 2.366735096391437]", + "rotation": 0.0, + "track": 118, + "frame": 2 } }, { - "model": "engine.labeledtrack", - "pk": 13, + "model": "engine.trackedshape", + "pk": 487, "fields": { - "job": 26, - "label": 60, - "frame": 6, - "group": 0, - "source": "manual", - "parent": 11 + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[64.07371618788767, 51.165624193155125, 16.507577217122392, 35.26978776115228, 3.3675085977394215, 35.92980168264138, 48.890071365309076, 42.285059057475024]", + "rotation": 0.0, + "track": 118, + "frame": 3 } }, { - "model": "engine.labeledtrack", - "pk": 14, + "model": "engine.trackedshape", + "pk": 488, "fields": { - "job": 26, - "label": 61, - "frame": 6, - "group": 0, - "source": "manual", - "parent": 11 + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[22.622019526627223, 62.31679157489255, 7.435732676703511, 0.9774883731428763, 33.48515389987684, 67.80446095923271, 29.811309771691985, 27.34743520630969, 94.97786135262317, 92.53355214231964]", + "rotation": 0.0, + "track": 118, + "frame": 4 } }, { - "model": "engine.labeledtrack", - "pk": 15, + "model": "engine.trackedshape", + "pk": 490, "fields": { - "job": 26, - "label": 62, - "frame": 6, - "group": 0, - "source": "manual", - "parent": 11 + "type": "polygon", + "occluded": true, + "outside": false, + "z_order": 0, + "points": "[0.8530259402693807, 44.13296596268512, 92.264556499544, 81.80448766928922, 31.08882580838178, 20.301451961901908, 31.47038000360235, 96.67947680961973]", + "rotation": 0.0, + "track": 118, + "frame": 6 } }, { - "model": "engine.labeledtrackattributeval", - "pk": 3, + "model": "engine.trackedshape", + "pk": 491, "fields": { - "spec": 2, - "value": "white", - "track": 1 + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[5.076584858511457, 53.839003005451126, 79.49480345687792, 80.4262644422021, 97.57877446416717, 73.8591873826985]", + "rotation": 0.0, + "track": 118, + "frame": 7 } }, { - "model": "engine.labeledtrackattributeval", - "pk": 4, + "model": "engine.trackedshape", + "pk": 492, "fields": { - "spec": 3, - "value": "val1", - "track": 4 + "type": "polygon", + "occluded": true, + "outside": false, + "z_order": 0, + "points": "[46.487048928881734, 74.79726052811286, 58.89940649861379, 63.46132083800071, 79.97978567976963, 37.370343440303344, 0.9690229199726064, 94.25236542125029]", + "rotation": 0.0, + "track": 118, + "frame": 8 } }, { "model": "engine.trackedshape", - "pk": 1, + "pk": 494, "fields": { "type": "skeleton", "occluded": false, @@ -6415,274 +8763,274 @@ "z_order": 0, "points": "[]", "rotation": 0.0, - "track": 1, - "frame": 0 + "track": 119, + "frame": 2 } }, { "model": "engine.trackedshape", - "pk": 2, + "pk": 495, "fields": { "type": "points", "occluded": false, "outside": false, "z_order": 0, - "points": "[381.9130434782637, 355.0592829431864]", + "points": "[394.7080078125, 132.537109375, 423.4960031454393, 133.1914787701262, 458.82718258259774, 118.79729455498818, 458.17290148191023, 152.81991179076977]", "rotation": 0.0, - "track": 2, - "frame": 0 + "track": 120, + "frame": 2 } }, { "model": "engine.trackedshape", - "pk": 3, + "pk": 496, "fields": { "type": "points", "occluded": false, - "outside": false, + "outside": true, "z_order": 0, - "points": "[461.9389738212561, 583.320176176868]", + "points": "[394.7080078125, 132.537109375, 423.4960031454393, 133.1914787701262, 458.82718258259774, 118.79729455498818, 458.17290148191023, 152.81991179076977]", "rotation": 0.0, - "track": 3, - "frame": 0 + "track": 120, + "frame": 4 } }, { "model": "engine.trackedshape", - "pk": 4, + "pk": 497, "fields": { - "type": "points", + "type": "cuboid", "occluded": false, "outside": false, "z_order": 0, - "points": "[655.6465767436227, 281.7391304347839]", + "points": "[266.92653575077566, 24.86851007975565, 266.92653575077566, 117.68501668390672, 300.94915298655724, 24.760093290749865, 300.94915298655724, 117.68501668383215, 304.35141471013594, 16.30584444966371, 304.35141471013594, 109.01393426480536, 270.40413416463343, 16.423849249653358, 270.40413416463343, 109.02402735721262]", "rotation": 0.0, - "track": 4, + "track": 121, "frame": 0 } }, { "model": "engine.trackedshape", - "pk": 5, + "pk": 498, "fields": { "type": "points", "occluded": false, "outside": false, "z_order": 0, - "points": "[708.000000000003, 586.0869565217404]", + "points": "[153.27734375, 110.2919921875]", "rotation": 0.0, - "track": 5, - "frame": 0 + "track": 122, + "frame": 2 } }, { "model": "engine.trackedshape", - "pk": 6, + "pk": 499, "fields": { "type": "points", "occluded": false, "outside": false, "z_order": 0, - "points": "[137.0966796875, 156.11214469590232]", + "points": "[112.478515625, 36.544921875]", "rotation": 0.0, - "track": 2, - "frame": 3 + "track": 122, + "frame": 4 } }, { "model": "engine.trackedshape", - "pk": 7, + "pk": 500, "fields": { "type": "points", "occluded": false, - "outside": false, + "outside": true, "z_order": 0, - "points": "[217.12261003049207, 384.3730379295848]", + "points": "[112.478515625, 36.544921875]", "rotation": 0.0, - "track": 3, - "frame": 3 + "track": 122, + "frame": 5 } }, { "model": "engine.trackedshape", - "pk": 8, + "pk": 501, "fields": { "type": "points", - "occluded": false, + "occluded": true, "outside": false, "z_order": 0, - "points": "[410.83021295285835, 82.7919921875]", + "points": "[229.1739514298206, 141.25929642527626]", "rotation": 0.0, - "track": 4, - "frame": 3 + "track": 123, + "frame": 2 } }, { "model": "engine.trackedshape", - "pk": 9, + "pk": 502, "fields": { "type": "points", "occluded": false, "outside": false, "z_order": 0, - "points": "[463.1836362092399, 387.13981827445605]", + "points": "[147.65302061127113, 49.58072867662486]", "rotation": 0.0, - "track": 5, - "frame": 3 + "track": 123, + "frame": 4 } }, { "model": "engine.trackedshape", - "pk": 10, + "pk": 503, "fields": { - "type": "skeleton", + "type": "points", "occluded": false, - "outside": false, + "outside": true, "z_order": 0, - "points": "[]", + "points": "[147.65302061127113, 49.58072867662486]", "rotation": 0.0, - "track": 6, - "frame": 0 + "track": 123, + "frame": 5 } }, { "model": "engine.trackedshape", - "pk": 11, + "pk": 504, "fields": { "type": "points", "occluded": false, "outside": true, "z_order": 0, - "points": "[230.39103314621025, 149.98846070356873]", + "points": "[162.24694184787768, 160.67163694048395]", "rotation": 0.0, - "track": 7, - "frame": 0 + "track": 124, + "frame": 2 } }, { "model": "engine.trackedshape", - "pk": 12, + "pk": 505, "fields": { "type": "points", "occluded": false, "outside": false, "z_order": 0, - "points": "[230.39103314621025, 149.98846070356873]", + "points": "[116.63550211839356, 57.75242869223621]", "rotation": 0.0, - "track": 7, - "frame": 3 + "track": 124, + "frame": 4 } }, { "model": "engine.trackedshape", - "pk": 13, + "pk": 506, "fields": { "type": "points", "occluded": false, - "outside": false, + "outside": true, "z_order": 0, - "points": "[292.80597636674844, 284.1818841927473]", + "points": "[116.63550211839356, 57.75242869223621]", "rotation": 0.0, - "track": 8, - "frame": 0 + "track": 124, + "frame": 5 } }, { "model": "engine.trackedshape", - "pk": 14, + "pk": 508, "fields": { - "type": "points", + "type": "ellipse", "occluded": false, "outside": false, "z_order": 0, - "points": "[377.016603158851, 94.95407858346152]", + "points": "[457.9970703125, 146.17578125, 492.673828125, 99.39453125]", "rotation": 0.0, - "track": 9, + "track": 125, "frame": 0 } }, { "model": "engine.trackedshape", - "pk": 15, + "pk": 509, "fields": { - "type": "points", + "type": "ellipse", "occluded": false, "outside": false, "z_order": 0, - "points": "[499.86507710826913, 316.59939612801213]", + "points": "[628.1103515625, 72.896484375, 662.787109375, 26.115234375]", "rotation": 0.0, - "track": 10, - "frame": 0 + "track": 125, + "frame": 1 } }, { "model": "engine.trackedshape", - "pk": 16, + "pk": 510, "fields": { - "type": "skeleton", + "type": "ellipse", "occluded": false, "outside": false, "z_order": 0, - "points": "[]", + "points": "[101.4140625, 125.2392578125, 136.0908203125, 78.4580078125]", "rotation": 0.0, - "track": 11, - "frame": 6 + "track": 125, + "frame": 2 } }, { "model": "engine.trackedshape", - "pk": 17, + "pk": 511, "fields": { - "type": "points", + "type": "ellipse", "occluded": false, "outside": false, "z_order": 0, - "points": "[92.95325643333308, 129.2954675940839]", + "points": "[142.6337890625, 241.046875, 177.310546875, 194.265625]", "rotation": 0.0, - "track": 12, - "frame": 6 + "track": 125, + "frame": 3 } }, { "model": "engine.trackedshape", - "pk": 18, + "pk": 512, "fields": { - "type": "points", + "type": "ellipse", "occluded": false, - "outside": false, + "outside": true, "z_order": 0, - "points": "[133.81649280769233, 195.4883603907146]", + "points": "[142.6337890625, 241.046875, 177.310546875, 194.265625]", "rotation": 0.0, - "track": 13, - "frame": 6 + "track": 125, + "frame": 4 } }, { "model": "engine.trackedshape", - "pk": 19, + "pk": 513, "fields": { - "type": "points", - "occluded": false, - "outside": false, + "type": "polygon", + "occluded": true, + "outside": true, "z_order": 0, - "points": "[188.94942364574058, 102.14894385926891]", + "points": "[46.487048928881734, 74.79726052811286, 58.89940649861379, 63.46132083800071, 79.97978567976963, 37.370343440303344, 0.9690229199726064, 94.25236542125029]", "rotation": 0.0, - "track": 14, - "frame": 6 + "track": 118, + "frame": 9 } }, { "model": "engine.trackedshape", - "pk": 20, + "pk": 514, "fields": { - "type": "points", + "type": "cuboid", "occluded": false, - "outside": false, + "outside": true, "z_order": 0, - "points": "[269.3786601426267, 211.47877807640333]", + "points": "[266.92653575077566, 24.86851007975565, 266.92653575077566, 117.68501668390672, 300.94915298655724, 24.760093290749865, 300.94915298655724, 117.68501668383215, 304.35141471013594, 16.30584444966371, 304.35141471013594, 109.01393426480536, 270.40413416463343, 16.423849249653358, 270.40413416463343, 109.02402735721262]", "rotation": 0.0, - "track": 15, - "frame": 6 + "track": 121, + "frame": 4 } }, { diff --git a/tests/python/shared/assets/jobs.json b/tests/python/shared/assets/jobs.json index 55c1cf3847fb..5d37894b45ac 100644 --- a/tests/python/shared/assets/jobs.json +++ b/tests/python/shared/assets/jobs.json @@ -1,8 +1,62 @@ { - "count": 19, + "count": 21, "next": null, "previous": null, "results": [ + { + "assignee": null, + "bug_tracker": null, + "data_chunk_size": 72, + "data_compressed_chunk_type": "imageset", + "dimension": "2d", + "id": 32, + "issues": { + "count": 0, + "url": "http://localhost:8080/api/issues?job_id=32" + }, + "labels": { + "count": 3, + "url": "http://localhost:8080/api/labels?job_id=32" + }, + "mode": "annotation", + "project_id": null, + "stage": "annotation", + "start_frame": 0, + "state": "in progress", + "status": "annotation", + "stop_frame": 10, + "task_id": 22, + "type": "ground_truth", + "updated_date": "2023-04-14T15:03:25.984688Z", + "url": "http://localhost:8080/api/jobs/32" + }, + { + "assignee": null, + "bug_tracker": null, + "data_chunk_size": 72, + "data_compressed_chunk_type": "imageset", + "dimension": "2d", + "id": 27, + "issues": { + "count": 0, + "url": "http://localhost:8080/api/issues?job_id=27" + }, + "labels": { + "count": 3, + "url": "http://localhost:8080/api/labels?job_id=27" + }, + "mode": "annotation", + "project_id": null, + "stage": "annotation", + "start_frame": 0, + "state": "in progress", + "status": "annotation", + "stop_frame": 10, + "task_id": 22, + "type": "normal", + "updated_date": "2023-04-14T14:58:50.944345Z", + "url": "http://localhost:8080/api/jobs/27" + }, { "assignee": null, "bug_tracker": null, diff --git a/tests/python/shared/assets/labels.json b/tests/python/shared/assets/labels.json index 204d1111b2f5..404bbc64fb31 100644 --- a/tests/python/shared/assets/labels.json +++ b/tests/python/shared/assets/labels.json @@ -1,5 +1,5 @@ { - "count": 35, + "count": 38, "next": null, "previous": null, "results": [ @@ -688,6 +688,65 @@ "svg": "", "task_id": 21, "type": "skeleton" + }, + { + "attributes": [], + "color": "#6080c0", + "has_parent": false, + "id": 63, + "name": "cat", + "parent_id": null, + "sublabels": [], + "task_id": 22, + "type": "any" + }, + { + "attributes": [], + "color": "#406040", + "has_parent": false, + "id": 64, + "name": "dog", + "parent_id": null, + "sublabels": [], + "task_id": 22, + "type": "any" + }, + { + "attributes": [], + "color": "#89b9bb", + "has_parent": false, + "id": 66, + "name": "sk", + "parent_id": null, + "sublabels": [ + { + "attributes": [], + "color": "#d12345", + "has_parent": true, + "id": 67, + "name": "1", + "type": "points" + }, + { + "attributes": [], + "color": "#350dea", + "has_parent": true, + "id": 68, + "name": "2", + "type": "points" + }, + { + "attributes": [], + "color": "#479ffe", + "has_parent": true, + "id": 69, + "name": "3", + "type": "points" + } + ], + "svg": "", + "task_id": 22, + "type": "skeleton" } ] } \ No newline at end of file diff --git a/tests/python/shared/assets/tasks.json b/tests/python/shared/assets/tasks.json index 756e5d491bb6..7effa4092f5d 100644 --- a/tests/python/shared/assets/tasks.json +++ b/tests/python/shared/assets/tasks.json @@ -1,8 +1,49 @@ { - "count": 16, + "count": 17, "next": null, "previous": null, "results": [ + { + "assignee": null, + "bug_tracker": "", + "created_date": "2023-04-14T14:40:10.333007Z", + "data": 21, + "data_chunk_size": 72, + "data_compressed_chunk_type": "imageset", + "data_original_chunk_type": "imageset", + "dimension": "2d", + "id": 22, + "image_quality": 70, + "jobs": { + "completed": 0, + "count": 6, + "url": "http://localhost:8080/api/jobs?task_id=22" + }, + "labels": { + "count": 3, + "url": "http://localhost:8080/api/labels?task_id=22" + }, + "mode": "annotation", + "name": "task3_with_gt_job", + "organization": 2, + "overlap": 0, + "owner": { + "first_name": "User", + "id": 3, + "last_name": "Second", + "url": "http://localhost:8080/api/users/3", + "username": "user2" + }, + "project_id": null, + "segment_size": 11, + "size": 11, + "source_storage": null, + "status": "annotation", + "subset": "Train", + "target_storage": null, + "updated_date": "2023-04-14T15:03:25.969578Z", + "url": "http://localhost:8080/api/tasks/22" + }, { "assignee": null, "bug_tracker": "", From e9997d313d8ede2d1a1c7f145c87bb00620eee80 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 14 Apr 2023 18:15:14 +0300 Subject: [PATCH 012/257] Simplify job removal tests --- tests/python/rest_api/test_jobs.py | 32 ++++++++---------------------- 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/tests/python/rest_api/test_jobs.py b/tests/python/rest_api/test_jobs.py index e05f3435e364..70723acf8642 100644 --- a/tests/python/rest_api/test_jobs.py +++ b/tests/python/rest_api/test_jobs.py @@ -168,35 +168,19 @@ def _test_destroy_job_fails(self, user, job_id, *, expected_status): assert response.status == expected_status return response - def test_can_destroy_gt_job(self, admin_user, tasks): - user = admin_user - job_frame_count = 4 - task = next( - t - for t in tasks - if not t["project_id"] and not t["organization"] and t["size"] > job_frame_count - ) - task_id = task["id"] - - job_spec = { - "task_id": task_id, - "type": "ground_truth", - "frame_selection_method": "manual", - "frames": list(range(job_frame_count)), - } - with make_api_client(user) as api_client: - (job, _) = api_client.jobs_api.create(models.JobWriteRequest(**job_spec)) + @pytest.mark.parametrize("job_type, allow", (("ground_truth", True), ("normal", False))) + def test_can_destroy_job(self, admin_user, jobs, job_type, allow): + job = next(j for j in jobs if j["type"] == job_type) - self._test_destroy_job_ok(user, job.id) - - def test_cannot_destroy_normal_job(self, admin_user, jobs): - job_id = next(j for j in jobs if j["type"] == "normal")["id"] - self._test_destroy_job_fails(admin_user, job_id, expected_status=HTTPStatus.BAD_REQUEST) + if allow: + self._test_destroy_job_ok(admin_user, job["id"]) + else: + self._test_destroy_job_fails(admin_user, job["id"], expected_status=HTTPStatus.BAD_REQUEST) @pytest.mark.usefixtures("restore_db_per_function") class TestGtComparison: - def test_can_compare_normal_with_gt_job(self, admin_user, tasks, jobs): + def test_can_compare_normal_and_gt_job(self, admin_user, tasks, jobs): user = admin_user job_frame_count = 4 task = next( From e12fcfca678b7b95290c24223108fcfef11a9f32 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 14 Apr 2023 20:30:49 +0300 Subject: [PATCH 013/257] Add gt job tests --- cvat/apps/engine/models.py | 16 ++++++++++-- cvat/apps/engine/serializers.py | 6 ++++- cvat/apps/engine/views.py | 4 ++- cvat/schema.yml | 28 ++++++++++++++++++-- tests/python/rest_api/test_jobs.py | 38 +++++++++++++++++++++++++++- tests/python/shared/assets/jobs.json | 4 +-- 6 files changed, 87 insertions(+), 9 deletions(-) diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index 52d2e987321c..0afa39d887b5 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -16,7 +16,7 @@ from django.contrib.auth.models import User from django.core.files.storage import FileSystemStorage from django.core.exceptions import ValidationError -from django.db import IntegrityError, models +from django.db import IntegrityError, models, transaction from django.db.models.fields import FloatField from drf_spectacular.types import OpenApiTypes from drf_spectacular.utils import extend_schema_field @@ -531,6 +531,11 @@ class Meta: default_permissions = () +class TaskGroundTruthJobsLimitError(ValidationError): + def __init__(self) -> None: + super().__init__("A task can have only 1 ground truth job") + + class Job(models.Model): segment = models.ForeignKey(Segment, on_delete=models.CASCADE) assignee = models.ForeignKey(User, null=True, blank=True, on_delete=models.SET_NULL) @@ -583,8 +588,15 @@ def get_labels(self): class Meta: default_permissions = () - + @transaction.atomic def save(self, *args, **kwargs) -> None: + # Constraints can't be set on the related model fields + # This method requires the save operation to be called as a transaction + if self.type == JobType.GROUND_TRUTH and Job.objects.filter( + segment__task=self.segment.task, type=JobType.GROUND_TRUTH.value + ).count() != 0: + raise TaskGroundTruthJobsLimitError() + self.full_clean() return super().save(*args, **kwargs) diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index 950d2a3b71c3..8eac7626329b 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -672,7 +672,11 @@ def create(self, validated_data): raise serializers.ValidationError(f"Unexpected job type '{validated_data['type']}'") validated_data['segment'] = segment - return super().create(validated_data) + + try: + return super().create(validated_data) + except models.TaskGroundTruthJobsLimitError as ex: + raise serializers.ValidationError(ex.message) from ex def update(self, instance, validated_data): state = validated_data.get('state') diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index 580b4789eac2..d706849bfc31 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -1274,7 +1274,9 @@ class JobViewSet(viewsets.GenericViewSet, mixins.ListModelMixin, mixins.CreateMo iam_organization_field = 'segment__task__organization' search_fields = ('task_name', 'project_name', 'assignee', 'state', 'stage') - filter_fields = list(search_fields) + ['id', 'task_id', 'project_id', 'updated_date', 'dimension'] + filter_fields = list(search_fields) + [ + 'id', 'task_id', 'project_id', 'updated_date', 'dimension', 'type' + ] simple_filters = list(set(filter_fields) - {'id', 'updated_date'}) ordering_fields = list(filter_fields) ordering = "-id" diff --git a/cvat/schema.yml b/cvat/schema.yml index 092a13d369c9..90f2ea2706f7 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -1751,7 +1751,7 @@ paths: in: query description: 'A filter term. Available filter_fields: [''task_name'', ''project_name'', ''assignee'', ''state'', ''stage'', ''id'', ''task_id'', ''project_id'', - ''updated_date'', ''dimension'']' + ''updated_date'', ''dimension'', ''type'']' schema: type: string - in: query @@ -1798,7 +1798,7 @@ paths: in: query description: 'Which field to use when ordering the results. Available ordering_fields: [''task_name'', ''project_name'', ''assignee'', ''state'', ''stage'', ''id'', - ''task_id'', ''project_id'', ''updated_date'', ''dimension'']' + ''task_id'', ''project_id'', ''updated_date'', ''dimension'', ''type'']' schema: type: string - name: stage @@ -1830,6 +1830,14 @@ paths: description: A simple equality filter for the task_name field schema: type: string + - name: type + in: query + description: A simple equality filter for the type field + schema: + type: string + enum: + - normal + - ground_truth tags: - jobs security: @@ -8289,6 +8297,11 @@ components: PatchedIssueWriteRequest: type: object properties: + position: + type: array + items: + type: number + format: double assignee: type: integer nullable: true @@ -8425,6 +8438,13 @@ components: type: string minLength: 1 maxLength: 256 + project_id: + type: integer + nullable: true + owner_id: + type: integer + writeOnly: true + nullable: true assignee_id: type: integer writeOnly: true @@ -8432,6 +8452,10 @@ components: bug_tracker: type: string maxLength: 2000 + labels: + type: array + items: + $ref: '#/components/schemas/PatchedLabelRequest' subset: type: string maxLength: 64 diff --git a/tests/python/rest_api/test_jobs.py b/tests/python/rest_api/test_jobs.py index 70723acf8642..cafa1f3a84bf 100644 --- a/tests/python/rest_api/test_jobs.py +++ b/tests/python/rest_api/test_jobs.py @@ -63,6 +63,16 @@ def _test_create_job_ok(self, user: str, data: Dict[str, Any], **kwargs): assert response.status == HTTPStatus.CREATED return response + def _test_create_job_fails(self, user: str, data: Dict[str, Any], *, expected_status): + with make_api_client(user) as api_client: + (_, response) = api_client.jobs_api.create( + models.JobWriteRequest(**deepcopy(data)), + _check_status=False, + _parse_response=False, + ) + assert response.status == expected_status + return response + @pytest.mark.parametrize( "task_mode", [ @@ -152,6 +162,22 @@ def test_can_create_gt_job_with_random_frames(self, admin_user, tasks, task_mode (job_meta, _) = api_client.jobs_api.retrieve_data_meta(job_id) assert [f.name for f in job_meta.frames] == ["0.png", "1.png", "5.png"] + def test_can_create_no_more_than_1_gt_job(self, admin_user, jobs): + user = admin_user + task_id = next(j for j in jobs if j["type"] == "ground_truth")["task_id"] + + job_spec = { + "task_id": task_id, + "type": "ground_truth", + "frame_selection_method": "random_uniform", + "count": 1, + } + + response = self._test_create_job_fails( + user, job_spec, expected_status=HTTPStatus.BAD_REQUEST + ) + assert b"A task can have only 1 ground truth job" in response.data + @pytest.mark.usefixtures("restore_db_per_function") class TestDeleteJobs: @@ -175,7 +201,9 @@ def test_can_destroy_job(self, admin_user, jobs, job_type, allow): if allow: self._test_destroy_job_ok(admin_user, job["id"]) else: - self._test_destroy_job_fails(admin_user, job["id"], expected_status=HTTPStatus.BAD_REQUEST) + self._test_destroy_job_fails( + admin_user, job["id"], expected_status=HTTPStatus.BAD_REQUEST + ) @pytest.mark.usefixtures("restore_db_per_function") @@ -340,6 +368,7 @@ def _get_endpoint(self, api_client: ApiClient) -> Endpoint: "stage", "task_id", "project_id", + "type", ), ) def test_can_use_simple_filter_for_object_list(self, field): @@ -468,6 +497,13 @@ def test_non_member_get_job_annotations( else: self._test_get_job_annotations_403(username, job_id, **kwargs) + @pytest.mark.parametrize("job_type", ("ground_truth", "normal")) + def test_can_get_annotations(self, admin_user, jobs, annotations, job_type): + job = next(j for j in jobs if j["type"] == job_type) + self._test_get_job_annotations_200( + admin_user, job["id"], annotations["job"][str(job["id"])] + ) + @pytest.mark.usefixtures("restore_db_per_function") class TestPatchJobAnnotations: diff --git a/tests/python/shared/assets/jobs.json b/tests/python/shared/assets/jobs.json index 5d37894b45ac..35e0e8e472ed 100644 --- a/tests/python/shared/assets/jobs.json +++ b/tests/python/shared/assets/jobs.json @@ -27,7 +27,7 @@ "stop_frame": 10, "task_id": 22, "type": "ground_truth", - "updated_date": "2023-04-14T15:03:25.984688Z", + "updated_date": "2023-04-14T15:03:25.984000Z", "url": "http://localhost:8080/api/jobs/32" }, { @@ -54,7 +54,7 @@ "stop_frame": 10, "task_id": 22, "type": "normal", - "updated_date": "2023-04-14T14:58:50.944345Z", + "updated_date": "2023-04-14T14:58:50.944000Z", "url": "http://localhost:8080/api/jobs/27" }, { From e5e1ef6d518ea6718b7aa13ef9eff630f2ccb514 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 14 Apr 2023 23:15:27 +0300 Subject: [PATCH 014/257] Add annotation update test --- cvat/apps/engine/models.py | 31 +++++++++++++++++++++------ tests/python/rest_api/test_jobs.py | 14 ++++++++---- tests/python/shared/assets/tasks.json | 6 +++--- 3 files changed, 37 insertions(+), 14 deletions(-) diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index 0afa39d887b5..141ee61af0f0 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -536,7 +536,31 @@ def __init__(self) -> None: super().__init__("A task can have only 1 ground truth job") +class JobQuerySet(models.QuerySet): + @transaction.atomic + def create(self, **kwargs: Any): + self._validate_constraints(kwargs) + + return super().create(**kwargs) + + @transaction.atomic + def get_or_create(self, *args, **kwargs: Any): + self._validate_constraints(kwargs) + + return super().get_or_create(*args, **kwargs) + + def _validate_constraints(self, obj: Dict[str, Any]): + # Constraints can't be set on the related model fields + # This method requires the save operation to be called as a transaction + if obj['type'] == JobType.GROUND_TRUTH and self.filter( + segment__task=obj['segment'].task, type=JobType.GROUND_TRUTH.value + ).count() != 0: + raise TaskGroundTruthJobsLimitError() + + class Job(models.Model): + objects = JobQuerySet.as_manager() + segment = models.ForeignKey(Segment, on_delete=models.CASCADE) assignee = models.ForeignKey(User, null=True, blank=True, on_delete=models.SET_NULL) updated_date = models.DateTimeField(auto_now=True) @@ -590,13 +614,6 @@ class Meta: @transaction.atomic def save(self, *args, **kwargs) -> None: - # Constraints can't be set on the related model fields - # This method requires the save operation to be called as a transaction - if self.type == JobType.GROUND_TRUTH and Job.objects.filter( - segment__task=self.segment.task, type=JobType.GROUND_TRUTH.value - ).count() != 0: - raise TaskGroundTruthJobsLimitError() - self.full_clean() return super().save(*args, **kwargs) diff --git a/tests/python/rest_api/test_jobs.py b/tests/python/rest_api/test_jobs.py index cafa1f3a84bf..44956283c85e 100644 --- a/tests/python/rest_api/test_jobs.py +++ b/tests/python/rest_api/test_jobs.py @@ -507,7 +507,7 @@ def test_can_get_annotations(self, admin_user, jobs, annotations, job_type): @pytest.mark.usefixtures("restore_db_per_function") class TestPatchJobAnnotations: - def _check_respone(self, username, jid, expect_success, data=None, org=None): + def _check_response(self, username, jid, expect_success, data=None, org=None): kwargs = {} if org is not None: if isinstance(org, str): @@ -583,7 +583,7 @@ def test_member_update_job_annotations( username, jid = find_job_staff_user(filtered_jobs, users, job_staff) data = request_data(jid) - self._check_respone(username, jid, expect_success, data, org=org) + self._check_response(username, jid, expect_success, data, org=org) @pytest.mark.parametrize("org", [2]) @pytest.mark.parametrize( @@ -607,7 +607,7 @@ def test_non_member_update_job_annotations( username, jid = find_job_staff_user(filtered_jobs, users, False) data = request_data(jid) - self._check_respone(username, jid, expect_success, data, org=org) + self._check_response(username, jid, expect_success, data, org=org) @pytest.mark.parametrize("org", [""]) @pytest.mark.parametrize( @@ -641,7 +641,13 @@ def test_user_update_job_annotations( username, jid = find_job_staff_user(filtered_jobs, users, job_staff) data = request_data(jid) - self._check_respone(username, jid, expect_success, data, org=org) + self._check_response(username, jid, expect_success, data, org=org) + + @pytest.mark.parametrize("job_type", ("ground_truth", "normal")) + def test_can_update_annotations(self, admin_user, jobs, request_data, job_type): + job = next(j for j in jobs if j["type"] == job_type) + data = request_data(job["id"]) + self._check_response(admin_user, job["id"], True, data) @pytest.mark.usefixtures("restore_db_per_function") diff --git a/tests/python/shared/assets/tasks.json b/tests/python/shared/assets/tasks.json index 7effa4092f5d..492202bd4f17 100644 --- a/tests/python/shared/assets/tasks.json +++ b/tests/python/shared/assets/tasks.json @@ -6,7 +6,7 @@ { "assignee": null, "bug_tracker": "", - "created_date": "2023-04-14T14:40:10.333007Z", + "created_date": "2023-04-14T14:40:10.333000Z", "data": 21, "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", @@ -39,9 +39,9 @@ "size": 11, "source_storage": null, "status": "annotation", - "subset": "Train", + "subset": "", "target_storage": null, - "updated_date": "2023-04-14T15:03:25.969578Z", + "updated_date": "2023-04-14T15:03:25.969000Z", "url": "http://localhost:8080/api/tasks/22" }, { From 81903d298195e8e22d130bd3de25cb50803c567d Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 17 Apr 2023 14:32:58 +0300 Subject: [PATCH 015/257] t --- compare_datasets.py | 270 ++++++++++++++++++++++++++++---------------- 1 file changed, 172 insertions(+), 98 deletions(-) diff --git a/compare_datasets.py b/compare_datasets.py index e3767ee3d75b..88d7fc34e263 100644 --- a/compare_datasets.py +++ b/compare_datasets.py @@ -23,6 +23,7 @@ Importer) from datumaro.util.image import Image from defusedxml import ElementTree +from scipy.stats import gmean class CvatPath: @@ -1121,6 +1122,15 @@ def _generate_frame_annotation_conflicts( ) -> List[AnnotationConflict]: conflicts = [] + shape_confusion_matrix_labels = { + t.name: i for i, t in enumerate(self._comparator.included_ann_types) + } + shape_confusion_matrix_labels[None] = len(shape_confusion_matrix_labels) + shape_confusion_matrix_label_count = len(shape_confusion_matrix_labels) + shape_confusion_matrix = np.zeros( + (shape_confusion_matrix_label_count, shape_confusion_matrix_label_count), dtype=int + ) + merged_results = [[], [], [], [], {}] for shape_type in self._comparator.included_ann_types: for merged_field, field in zip(merged_results, frame_results[shape_type][:-1]): @@ -1128,6 +1138,17 @@ def _generate_frame_annotation_conflicts( merged_results[-1].update(frame_results[shape_type][-1]) + matches, mismatches, gt_unmatched, ds_unmatched = frame_results[shape_type][:-1] + for gt_ann, ds_ann in itertools.chain( + matches, + mismatches, + itertools.zip_longest(ds_unmatched, itertools.repeat(None)), + itertools.zip_longest(itertools.repeat(None), gt_unmatched) + ): + ds_label_idx = shape_confusion_matrix_labels[ds_ann.type if ds_ann else ds_ann] + gt_label_idx = shape_confusion_matrix_labels[gt_ann.type if gt_ann else gt_ann] + shape_confusion_matrix[ds_label_idx][gt_label_idx] += 1 + matches, mismatches, gt_unmatched, ds_unmatched, pairwise_distances = merged_results def _distance(gt_obj, ds_obj): @@ -1229,6 +1250,8 @@ def _find_best_unmatched_distance(shape): invalid_labels_count = len(mismatches) total_labels_count = valid_labels_count + invalid_labels_count + matched_anns = [] + mismatched_anns = [] valid_attributes_count = 0 invalid_attributes_count = 0 missing_attributes_count = 0 @@ -1236,14 +1259,14 @@ def _find_best_unmatched_distance(shape): total_attributes_count = 0 ds_attributes_count = 0 gt_attributes_count = 0 - for gt_ann, matched_ann_id in matches: + for gt_ann, ds_ann in matches: # Datumaro wont match attributes ( attr_matches, attr_mismatches, attr_gt_extra, attr_ds_extra, - ) = self._comparator.match_attrs(gt_ann, matched_ann_id) + ) = self._comparator.match_attrs(gt_ann, ds_ann) for mismatched_attr in attr_mismatches: conflicts.append( @@ -1253,7 +1276,7 @@ def _find_best_unmatched_distance(shape): data={ "annotation_ids": [ self._dm_ann_to_ann_id( - matched_ann_id, ds_item, self._ds_dataset + ds_ann, ds_item, self._ds_dataset ), self._dm_ann_to_ann_id( gt_ann, gt_item, self._gt_dataset @@ -1262,7 +1285,7 @@ def _find_best_unmatched_distance(shape): "kind": MismatchingAnnotationKind.ATTRIBUTE, "attribute": mismatched_attr, "expected": gt_ann.attributes[mismatched_attr], - "actual": matched_ann_id.attributes[mismatched_attr], + "actual": ds_ann.attributes[mismatched_attr], }, ) ) @@ -1275,7 +1298,7 @@ def _find_best_unmatched_distance(shape): data={ "annotation_ids": [ self._dm_ann_to_ann_id( - matched_ann_id, ds_item, self._ds_dataset + ds_ann, ds_item, self._ds_dataset ), self._dm_ann_to_ann_id( gt_ann, gt_item, self._gt_dataset @@ -1297,7 +1320,7 @@ def _find_best_unmatched_distance(shape): data={ "annotation_ids": [ self._dm_ann_to_ann_id( - matched_ann_id, ds_item, self._ds_dataset + ds_ann, ds_item, self._ds_dataset ), self._dm_ann_to_ann_id( gt_ann, gt_item, self._gt_dataset @@ -1306,11 +1329,17 @@ def _find_best_unmatched_distance(shape): "kind": MismatchingAnnotationKind.ATTRIBUTE, "attribute": mismatched_attr, "expected": None, - "actual": matched_ann_id.attributes[extra_attr], + "actual": ds_ann.attributes[extra_attr], }, ) ) + attrs_match = (0 == len(attr_mismatches) + len(attr_gt_extra) + len(attr_ds_extra)) + if attrs_match: + matched_anns.append((gt_ann, ds_ann)) + else: + mismatched_anns.append((gt_ann, ds_ann)) + valid_attributes_count += len(attr_matches) invalid_attributes_count += len(attr_mismatches) missing_attributes_count += len(attr_gt_extra) @@ -1324,41 +1353,97 @@ def _find_best_unmatched_distance(shape): ds_attributes_count += len(attr_matches) + len(attr_mismatches) + len(attr_ds_extra) gt_attributes_count += len(attr_matches) + len(attr_mismatches) + len(attr_gt_extra) + + confusion_matrix_labels = { + label.name: i + for i, label in enumerate(self._gt_dataset.categories()[dm.AnnotationType.label]) + } + confusion_matrix_labels[None] = len(confusion_matrix_labels) + confusion_matrix_label_count = len(confusion_matrix_labels) + confusion_matrix = np.zeros( + (confusion_matrix_label_count, confusion_matrix_label_count), dtype=int + ) + for gt_ann, ds_ann in itertools.chain( + # fully matched annotations - shape, label, attributes + matched_anns, + mismatched_anns, + itertools.zip_longest(ds_unmatched, itertools.repeat(None)), + itertools.zip_longest(itertools.repeat(None), gt_unmatched) + ): + ds_label_idx = confusion_matrix_labels[ds_ann.label if ds_ann else ds_ann] + gt_label_idx = confusion_matrix_labels[gt_ann.label if gt_ann else gt_ann] + confusion_matrix[ds_label_idx][gt_label_idx] += 1 + + matched_ann_counts = np.diag(confusion_matrix) + ds_ann_counts = np.sum(confusion_matrix, axis=1) + gt_ann_counts = np.sum(confusion_matrix, axis=0) + label_accuracies = matched_ann_counts / ((ds_ann_counts + gt_ann_counts - matched_ann_counts) or 1) + label_precisions = matched_ann_counts / (ds_ann_counts or 1) + label_recalls = matched_ann_counts / (gt_ann_counts or 1) + + valid_annotations_count = np,sum(matched_ann_counts) + missing_annotations_count = np.sum(confusion_matrix[:, confusion_matrix_labels[None]]) + extra_annotations_count = np.sum(confusion_matrix[confusion_matrix_labels[None], :]) + total_annotations_count = np.sum(confusion_matrix) + ds_annotations_count = np.sum(ds_ann_counts) + gt_annotations_count = np.sum(gt_ann_counts) + self._frame_results.setdefault(frame_id, {}).update( - { - "annotation_kind": { - 'shape': { - 'valid_count': valid_shapes_count, - 'missing_count': missing_shapes_count, - 'extra_count': extra_shapes_count, - 'total_count': total_shapes_count, - 'ds_count': ds_shapes_count, - 'gt_count': gt_shapes_count, - 'mean_iou': mean_iou, - 'accuracy': valid_shapes_count / (total_shapes_count or 1), - }, - 'label': { - 'valid_count': valid_labels_count, - 'invalid_count': invalid_labels_count, - 'total_count': total_labels_count, - 'accuracy': valid_labels_count / (total_labels_count or 1), - }, - 'attribute': { - 'valid_count': valid_attributes_count, - 'invalid_count': invalid_attributes_count, - 'missing_count': missing_attributes_count, - 'extra_count': extra_attributes_count, - 'total_count': total_attributes_count, - 'ds_count': ds_attributes_count, - 'gt_count': gt_attributes_count, - 'accuracy': valid_attributes_count / (total_attributes_count or 1), - }, - }, - "errors_count": len( - conflicts - ), # assuming no more than 1 error per annotation - "errors": conflicts.copy(), - } + errors_count=len(conflicts), + annotations=dict( + valid_count=valid_annotations_count, + missing_count=missing_annotations_count, + extra_count=extra_annotations_count, + total_count=total_annotations_count, + ds_count=ds_annotations_count, + gt_count=gt_annotations_count, + accuracy=valid_annotations_count / (total_annotations_count or 1), + precision=valid_annotations_count / (ds_annotations_count or 1), + recall=valid_annotations_count / (gt_annotations_count or 1), + confusion_matrix=dict( + labels=confusion_matrix_labels, + axes=dict( + cols='gt', + rows='ds' + ), + rows=confusion_matrix, + precision=label_precisions, + recall=label_recalls, + accuracy=label_accuracies, + ) + ), + annotation_element=dict( + shape=dict( + valid_count=valid_shapes_count, + missing_count=missing_shapes_count, + extra_count=extra_shapes_count, + total_count=total_shapes_count, + ds_count=ds_shapes_count, + gt_count=gt_shapes_count, + accuracy=valid_shapes_count / (total_shapes_count or 1), + mean_iou=mean_iou, + # add per type stats + shape_confusion_matrix=shape_confusion_matrix, + ), + label=dict( + valid_count=valid_labels_count, + invalid_count=invalid_labels_count, + total_count=total_labels_count, + accuracy=valid_labels_count / (total_labels_count or 1), + ), + attribute=dict( + valid_count=valid_attributes_count, + invalid_count=invalid_attributes_count, + missing_count=missing_attributes_count, + extra_count=extra_attributes_count, + total_count=total_attributes_count, + ds_count=ds_attributes_count, + gt_count=gt_attributes_count, + accuracy=valid_attributes_count / (total_attributes_count or 1), + # add confusion matrix / per label stats + ), + ), + errors=conflicts.copy(), ) return conflicts @@ -1389,8 +1474,6 @@ def _set_nested_key(d, path, value): ) full_ds_comparable_shapes_count += 1 - full_ds_comparable_labels_count = full_ds_comparable_shapes_count - intersection_frames = [] summary_stats = {} mean_ious = [] @@ -1398,24 +1481,24 @@ def _set_nested_key(d, path, value): intersection_frames.append(frame_id) for path in [ - ["annotation_kind", "shape", "valid_count"], - ["annotation_kind", "shape", "missing_count"], - ["annotation_kind", "shape", "extra_count"], - ["annotation_kind", "shape", "total_count"], - ["annotation_kind", "shape", "ds_count"], - ["annotation_kind", "shape", "gt_count"], - - ["annotation_kind", "label", "valid_count"], - ["annotation_kind", "label", "invalid_count"], - ["annotation_kind", "label", "total_count"], - - ["annotation_kind", "attribute", "valid_count"], - ["annotation_kind", "attribute", "invalid_count"], - ["annotation_kind", "attribute", "missing_count"], - ["annotation_kind", "attribute", "extra_count"], - ["annotation_kind", "attribute", "total_count"], - ["annotation_kind", "attribute", "ds_count"], - ["annotation_kind", "attribute", "gt_count"], + ["annotation_element", "shape", "valid_count"], + ["annotation_element", "shape", "missing_count"], + ["annotation_element", "shape", "extra_count"], + ["annotation_element", "shape", "total_count"], + ["annotation_element", "shape", "ds_count"], + ["annotation_element", "shape", "gt_count"], + + ["annotation_element", "label", "valid_count"], + ["annotation_element", "label", "invalid_count"], + ["annotation_element", "label", "total_count"], + + ["annotation_element", "attribute", "valid_count"], + ["annotation_element", "attribute", "invalid_count"], + ["annotation_element", "attribute", "missing_count"], + ["annotation_element", "attribute", "extra_count"], + ["annotation_element", "attribute", "total_count"], + ["annotation_element", "attribute", "ds_count"], + ["annotation_element", "attribute", "gt_count"], ["errors_count"], ]: frame_value = _get_nested_key(frame_result, path) @@ -1425,26 +1508,20 @@ def _set_nested_key(d, path, value): except KeyError: _set_nested_key(summary_stats, path, frame_value) - mean_ious.append(frame_result["annotation_kind"]["shape"]["mean_iou"]) + mean_ious.append(frame_result["annotation_element"]["shape"]["mean_iou"]) - mean_shape_accuracy = _get_nested_key(summary_stats, ["annotation_kind", "shape", "valid_count"]) / (_get_nested_key(summary_stats, ["annotation_kind", "shape", "total_count"]) or 1) - mean_label_accuracy = _get_nested_key(summary_stats, ["annotation_kind", "label", "valid_count"]) / (_get_nested_key(summary_stats, ["annotation_kind", "label", "total_count"]) or 1) - mean_attribute_accuracy = _get_nested_key(summary_stats, ["annotation_kind", "attribute", "valid_count"]) / (_get_nested_key(summary_stats, ["annotation_kind", "attribute", "total_count"]) or 1) + mean_shape_accuracy = _get_nested_key(summary_stats, ["annotation_element", "shape", "valid_count"]) / (_get_nested_key(summary_stats, ["annotation_element", "shape", "total_count"]) or 1) + mean_label_accuracy = _get_nested_key(summary_stats, ["annotation_element", "label", "valid_count"]) / (_get_nested_key(summary_stats, ["annotation_element", "label", "total_count"]) or 1) + mean_attribute_accuracy = _get_nested_key(summary_stats, ["annotation_element", "attribute", "valid_count"]) / (_get_nested_key(summary_stats, ["annotation_element", "attribute", "total_count"]) or 1) mean_error_count = summary_stats["errors_count"] / len(intersection_frames) - - estimated_ds_invalid_shapes_count = int( - (1 - mean_shape_accuracy) * full_ds_comparable_shapes_count - ) - estimated_ds_invalid_labels_count = int( - (1 - mean_label_accuracy) * full_ds_comparable_labels_count - ) - estimated_ds_invalid_attributes_count = int( - (1 - mean_attribute_accuracy) * full_ds_comparable_attributes_count - ) + mean_accuracy = gmean([mean_shape_accuracy, mean_label_accuracy, mean_attribute_accuracy]) return dict( - included_annotation_types=[t.name for t in self._comparator.included_ann_types], - ignored_attributes=self._comparator.ignored_attrs, + parameters=dict( + included_annotation_types=[t.name for t in self._comparator.included_ann_types], + ignored_attributes=self._comparator.ignored_attrs, + iou_threshold=self._comparator._annotation_comparator.iou_threshold, + ), intersection_results=dict( frame_count=len(intersection_frames), @@ -1453,31 +1530,32 @@ def _set_nested_key(d, path, value): error_count=summary_stats["errors_count"], mean_error_count=mean_error_count, - annotation_kind={ + mean_accuracy=mean_accuracy, + annotation_element={ 'shape': { - 'valid_count': _get_nested_key(summary_stats, ["annotation_kind", "shape", "valid_count"]), - 'missing_count': _get_nested_key(summary_stats, ["annotation_kind", "shape", "missing_count"]), - 'extra_count': _get_nested_key(summary_stats, ["annotation_kind", "shape", "extra_count"]), - 'total_count': _get_nested_key(summary_stats, ["annotation_kind", "shape", "total_count"]), - 'ds_count': _get_nested_key(summary_stats, ["annotation_kind", "shape", "ds_count"]), - 'gt_count': _get_nested_key(summary_stats, ["annotation_kind", "shape", "gt_count"]), + 'valid_count': _get_nested_key(summary_stats, ["annotation_element", "shape", "valid_count"]), + 'missing_count': _get_nested_key(summary_stats, ["annotation_element", "shape", "missing_count"]), + 'extra_count': _get_nested_key(summary_stats, ["annotation_element", "shape", "extra_count"]), + 'total_count': _get_nested_key(summary_stats, ["annotation_element", "shape", "total_count"]), + 'ds_count': _get_nested_key(summary_stats, ["annotation_element", "shape", "ds_count"]), + 'gt_count': _get_nested_key(summary_stats, ["annotation_element", "shape", "gt_count"]), 'mean_iou': np.mean(mean_ious), 'accuracy': mean_shape_accuracy, }, 'label': { - 'valid_count': _get_nested_key(summary_stats, ["annotation_kind", "label", "valid_count"]), - 'invalid_count': _get_nested_key(summary_stats, ["annotation_kind", "label", "invalid_count"]), - 'total_count': _get_nested_key(summary_stats, ["annotation_kind", "label", "total_count"]), + 'valid_count': _get_nested_key(summary_stats, ["annotation_element", "label", "valid_count"]), + 'invalid_count': _get_nested_key(summary_stats, ["annotation_element", "label", "invalid_count"]), + 'total_count': _get_nested_key(summary_stats, ["annotation_element", "label", "total_count"]), 'accuracy': mean_label_accuracy, }, 'attribute': { - 'valid_count': _get_nested_key(summary_stats, ["annotation_kind", "attribute", "valid_count"]), - 'invalid_count': _get_nested_key(summary_stats, ["annotation_kind", "attribute", "invalid_count"]), - 'missing_count': _get_nested_key(summary_stats, ["annotation_kind", "attribute", "missing_count"]), - 'extra_count': _get_nested_key(summary_stats, ["annotation_kind", "attribute", "extra_count"]), - 'total_count': _get_nested_key(summary_stats, ["annotation_kind", "attribute", "total_count"]), - 'ds_count': _get_nested_key(summary_stats, ["annotation_kind", "attribute", "ds_count"]), - 'gt_count': _get_nested_key(summary_stats, ["annotation_kind", "attribute", "gt_count"]), + 'valid_count': _get_nested_key(summary_stats, ["annotation_element", "attribute", "valid_count"]), + 'invalid_count': _get_nested_key(summary_stats, ["annotation_element", "attribute", "invalid_count"]), + 'missing_count': _get_nested_key(summary_stats, ["annotation_element", "attribute", "missing_count"]), + 'extra_count': _get_nested_key(summary_stats, ["annotation_element", "attribute", "extra_count"]), + 'total_count': _get_nested_key(summary_stats, ["annotation_element", "attribute", "total_count"]), + 'ds_count': _get_nested_key(summary_stats, ["annotation_element", "attribute", "ds_count"]), + 'gt_count': _get_nested_key(summary_stats, ["annotation_element", "attribute", "gt_count"]), 'accuracy': mean_attribute_accuracy, }, }, @@ -1487,10 +1565,6 @@ def _set_nested_key(d, path, value): frame_count=len(self._ds_dataset), shapes_count=full_ds_comparable_shapes_count, attributes_count=full_ds_comparable_attributes_count, - - estimated_invalid_shapes_count=estimated_ds_invalid_shapes_count, - estimated_invalid_labels_count=estimated_ds_invalid_labels_count, - estimated_invalid_attributes_count=estimated_ds_invalid_attributes_count, ), frame_results=self._frame_results, From 0596997949f2e6ebff980765be0e8cca38322597 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 17 Apr 2023 19:42:10 +0300 Subject: [PATCH 016/257] Add import-export tests, implement gt job backups --- cvat/apps/dataset_manager/bindings.py | 10 +- cvat/apps/dataset_manager/task.py | 3 + cvat/apps/engine/backup.py | 41 +++++- cvat/apps/engine/models.py | 1 + cvat/apps/engine/serializers.py | 5 +- tests/python/rest_api/test_tasks.py | 98 +++++++++++++++ tests/python/shared/assets/annotations.json | 2 +- tests/python/shared/assets/cvat_db/data.json | 126 ++++++------------- tests/python/shared/assets/jobs.json | 8 +- tests/python/shared/assets/tasks.json | 2 +- 10 files changed, 194 insertions(+), 102 deletions(-) diff --git a/cvat/apps/dataset_manager/bindings.py b/cvat/apps/dataset_manager/bindings.py index ebd77a077b54..894208247f03 100644 --- a/cvat/apps/dataset_manager/bindings.py +++ b/cvat/apps/dataset_manager/bindings.py @@ -25,9 +25,9 @@ from cvat.apps.dataset_manager.formats.utils import get_label_color from cvat.apps.engine.frame_provider import FrameProvider -from cvat.apps.engine.models import AttributeSpec, AttributeType, DimensionType +from cvat.apps.engine.models import (AttributeSpec, AttributeType, DimensionType, JobType, + Label, LabelType, Project, ShapeType, Task) from cvat.apps.engine.models import Image as Img -from cvat.apps.engine.models import Label, LabelType, Project, ShapeType, Task from .annotation import AnnotationIR, AnnotationManager, TrackManager from .formats.transformations import CVATRleToCOCORle, EllipsesToMasks @@ -706,8 +706,10 @@ def meta_for_task(db_task, host, label_mapping=None): ("start", str(db_segment.start_frame)), ("stop", str(db_segment.stop_frame)), ("url", "{}/api/jobs/{}".format( - host, db_segment.job_set.all()[0].id))] - )) for db_segment in db_segments + host, db_segment.job_set.first().id))] + )) + for db_segment in db_segments + if db_segment.job_set.first().type == JobType.NORMAL ]), ("owner", OrderedDict([ diff --git a/cvat/apps/dataset_manager/task.py b/cvat/apps/dataset_manager/task.py index 08674082cf1b..051255a9da1a 100644 --- a/cvat/apps/dataset_manager/task.py +++ b/cvat/apps/dataset_manager/task.py @@ -647,6 +647,9 @@ def init_from_db(self): self.reset() for db_job in self.db_jobs: + if db_job.type != models.JobType.NORMAL: + continue + annotation = JobAnnotation(db_job.id, is_prefetched=True) annotation.init_from_db() if annotation.ir_data.version > self.ir_data.version: diff --git a/cvat/apps/engine/backup.py b/cvat/apps/engine/backup.py index fba18fb11af5..0ec2e8e4b5aa 100644 --- a/cvat/apps/engine/backup.py +++ b/cvat/apps/engine/backup.py @@ -31,7 +31,8 @@ import cvat.apps.dataset_manager as dm from cvat.apps.engine import models from cvat.apps.engine.log import slogger -from cvat.apps.engine.serializers import (AttributeSerializer, DataSerializer, LabelSerializer, +from cvat.apps.engine.serializers import (AttributeSerializer, DataSerializer, + JobWriteSerializer, LabelSerializer, LabeledDataSerializer, SegmentSerializer, SimpleJobSerializer, TaskReadSerializer, ProjectReadSerializer, ProjectFileSerializer, TaskFileSerializer) from cvat.apps.engine.utils import av_scan_paths, process_failed_job, configure_dependent_job, get_rq_job_meta @@ -146,6 +147,7 @@ def _prepare_data_meta(self, data): def _prepare_job_meta(self, job): allowed_fields = { 'status', + 'type', } return self._prepare_meta(allowed_fields, job) @@ -330,12 +332,13 @@ def serialize_segment(db_segment): job_serializer.fields.pop(field) job_data = self._prepare_job_meta(job_serializer.data) - segment_serailizer = SegmentSerializer(db_segment) - segment_serailizer.fields.pop('jobs') - segment = segment_serailizer.data + segment_serializer = SegmentSerializer(db_segment) + segment_serializer.fields.pop('jobs') + segment = segment_serializer.data + segment_type = segment.pop("type") segment.update(job_data) - if self._db_task.segment_size == 0: + if self._db_task.segment_size == 0 and segment_type == models.SegmentType.RANGE: segment.update(serialize_custom_file_mapping(db_segment)) return segment @@ -509,6 +512,8 @@ def _create_annotations(self, db_job, annotations): @staticmethod def _calculate_segment_size(jobs): + jobs = [j for j in jobs if j["type"] == models.JobType.NORMAL] + segment_size = jobs[0]['stop_frame'] - jobs[0]['start_frame'] + 1 overlap = 0 if len(jobs) == 1 else jobs[0]['stop_frame'] - jobs[1]['start_frame'] + 1 @@ -611,10 +616,36 @@ def _write_data(zip_object): db_data.storage = StorageChoice.LOCAL db_data.save(update_fields=['start_frame', 'stop_frame', 'frame_filter', 'storage', 'deleted_frames']) + # Recreate Ground Truth jobs (they won't be created automatically) + self._import_gt_jobs(jobs) + for db_job, job in zip(self._get_db_jobs(), jobs): db_job.status = job['status'] db_job.save() + def _import_gt_jobs(self, jobs): + for job in jobs: + # The type field will be missing in backups create before the GT jobs were introduced + try: + raw_job_type = job.get("type", models.JobType.NORMAL.value) + job_type = models.JobType(raw_job_type) + except ValueError: + raise ValidationError(f"Unexpected job type {raw_job_type}") + + if job_type == models.JobType.GROUND_TRUTH: + job_serializer = JobWriteSerializer(data={ + 'task_id': self._db_task.id, + 'type': job_type.value, + 'frame_selection_method': models.JobFrameSelectionMethod.MANUAL.value, + 'frames': job['frames'] + }) + job_serializer.is_valid(raise_exception=True) + job_serializer.save() + elif job_type == models.JobType.NORMAL: + continue + else: + assert False + def _import_annotations(self): db_jobs = self._get_db_jobs() for db_job, annotations in zip(db_jobs, self._annotations): diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index 141ee61af0f0..5db0d6ca21c3 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -504,6 +504,7 @@ class Segment(models.Model): stop_frame = models.IntegerField() type = models.CharField(choices=SegmentType.choices(), default=SegmentType.RANGE, max_length=32) + # TODO: try to reuse this field for custom task segments (aka job_file_mapping) # SegmentType.SPECIFIC_FRAMES fields frames = IntArrayField(store_sorted=True, unique_values=True, default='', blank=True) diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index 8eac7626329b..9e519431adf9 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -706,15 +706,16 @@ class SimpleJobSerializer(serializers.ModelSerializer): class Meta: model = models.Job - fields = ('url', 'id', 'assignee', 'status', 'stage', 'state') + fields = ('url', 'id', 'assignee', 'status', 'stage', 'state', 'type') read_only_fields = fields class SegmentSerializer(serializers.ModelSerializer): jobs = SimpleJobSerializer(many=True, source='job_set') + frames = serializers.ListSerializer(child=serializers.IntegerField(), allow_empty=True) class Meta: model = models.Segment - fields = ('start_frame', 'stop_frame', 'jobs') + fields = ('start_frame', 'stop_frame', 'jobs', 'type', 'frames') read_only_fields = fields class ClientFileSerializer(serializers.ModelSerializer): diff --git a/tests/python/rest_api/test_tasks.py b/tests/python/rest_api/test_tasks.py index 3f27ed1df3dd..cb557c7da5ae 100644 --- a/tests/python/rest_api/test_tasks.py +++ b/tests/python/rest_api/test_tasks.py @@ -1242,6 +1242,104 @@ def test_work_with_task_containing_non_stable_cloud_storage_files( assert image_name in ex.body +@pytest.mark.usefixtures("restore_db_per_function") +class TestWorkWithGtJobs: + def test_normal_and_gt_job_annotations_are_not_merged( + self, tmp_path, admin_user, tasks, jobs, annotations + ): + gt_job = next(j for j in jobs if j["type"] == "ground_truth") + task = tasks[gt_job["task_id"]] + task_jobs = [j for j in jobs if j["task_id"] == task["id"]] + + gt_job_source_annotations = annotations["job"][str(gt_job["id"])] + assert ( + gt_job_source_annotations["tags"] + or gt_job_source_annotations["shapes"] + or gt_job_source_annotations["tracks"] + ) + + with Client(BASE_URL) as client: + client.config.status_check_period = 0.01 + client.login((admin_user, USER_PASS)) + + for j in task_jobs: + if j["type"] != "ground_truth": + client.jobs.retrieve(j["id"]).remove_annotations() + + task_obj = client.tasks.retrieve(task["id"]) + task_raw_annotations = task_obj.get_annotations() + + # It's quite hard to parse the dataset files, just import the data back instead + dataset_format = "CVAT for images 1.1" + + dataset_file = tmp_path / "dataset.zip" + task_obj.export_dataset(dataset_format, dataset_file, include_images=True) + task_obj.import_annotations("CVAT 1.1", dataset_file) + task_dataset_file_annotations = task_obj.get_annotations() + + annotations_file = tmp_path / "annotations.zip" + task_obj.export_dataset(dataset_format, annotations_file, include_images=False) + task_obj.import_annotations("CVAT 1.1", annotations_file) + task_annotations_file_annotations = task_obj.get_annotations() + + for annotation_source in [ + task_raw_annotations, + task_dataset_file_annotations, + task_annotations_file_annotations, + ]: + assert not annotation_source.tags + assert not annotation_source.shapes + assert not annotation_source.tracks + + def test_can_backup_task_with_gt_jobs(self, tmp_path, admin_user, tasks, jobs, annotations): + gt_job = next( + j + for j in jobs + if j["type"] == "ground_truth" and tasks[j["task_id"]]["jobs"]["count"] == 2 + ) + task = tasks[gt_job["task_id"]] + normal_job = next(j for j in jobs if j["task_id"] == task["id"] and j["type"] == "normal") + + gt_job_source_annotations = annotations["job"][str(gt_job["id"])] + assert ( + gt_job_source_annotations["tags"] + or gt_job_source_annotations["shapes"] + or gt_job_source_annotations["tracks"] + ) + + normal_job_source_annotations = annotations["job"][str(normal_job["id"])] + + with Client(BASE_URL) as client: + client.config.status_check_period = 0.01 + client.login((admin_user, USER_PASS)) + + backup_file: Path = tmp_path / "dataset.zip" + client.tasks.retrieve(task["id"]).download_backup(backup_file) + + new_task = client.tasks.create_from_backup(backup_file) + updated_job_annotations = { + j.type: json.loads(j.api.retrieve_annotations(j.id)[1].data) + for j in new_task.get_jobs() + } + + for job_type, source_annotations in { + gt_job["type"]: gt_job_source_annotations, + normal_job["type"]: normal_job_source_annotations, + }.items(): + assert ( + DeepDiff( + source_annotations, + updated_job_annotations[job_type], + ignore_order=True, + exclude_regex_paths=[ + r"root(\['\w+'\]\[\d+\])+\['id'\]", + r"root(\['\w+'\]\[\d+\])+\['label_id'\]", + r"root(\['\w+'\]\[\d+\])+\['attributes'\]\[\d+\]\['spec_id'\]", + ], + ) + == {} + ) + @pytest.mark.usefixtures("restore_db_per_class") class TestGetTaskPreview: def _test_task_preview_200(self, username, task_id, **kwargs): diff --git a/tests/python/shared/assets/annotations.json b/tests/python/shared/assets/annotations.json index a0a427f96108..24ce2574d48b 100644 --- a/tests/python/shared/assets/annotations.json +++ b/tests/python/shared/assets/annotations.json @@ -3165,7 +3165,7 @@ ], "version": 0 }, - "32": { + "28": { "shapes": [ { "attributes": [], diff --git a/tests/python/shared/assets/cvat_db/data.json b/tests/python/shared/assets/cvat_db/data.json index 6b7afbbfc57c..81b265b794c3 100644 --- a/tests/python/shared/assets/cvat_db/data.json +++ b/tests/python/shared/assets/cvat_db/data.json @@ -4571,50 +4571,6 @@ "frames": "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]" } }, -{ - "model": "engine.segment", - "pk": 29, - "fields": { - "task": 22, - "start_frame": 0, - "stop_frame": 10, - "type": "specific_frames", - "frames": "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]" - } -}, -{ - "model": "engine.segment", - "pk": 30, - "fields": { - "task": 22, - "start_frame": 0, - "stop_frame": 10, - "type": "specific_frames", - "frames": "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]" - } -}, -{ - "model": "engine.segment", - "pk": 31, - "fields": { - "task": 22, - "start_frame": 0, - "stop_frame": 10, - "type": "specific_frames", - "frames": "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]" - } -}, -{ - "model": "engine.segment", - "pk": 32, - "fields": { - "task": 22, - "start_frame": 0, - "stop_frame": 10, - "type": "specific_frames", - "frames": "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]" - } -}, { "model": "engine.job", "pk": 2, @@ -4887,9 +4843,9 @@ }, { "model": "engine.job", - "pk": 32, + "pk": 28, "fields": { - "segment": 32, + "segment": 28, "assignee": null, "updated_date": "2023-04-14T15:03:25.984Z", "status": "annotation", @@ -5858,7 +5814,7 @@ "model": "engine.labeledimage", "pk": 162, "fields": { - "job": 32, + "job": 28, "label": 63, "frame": 0, "group": null, @@ -5869,7 +5825,7 @@ "model": "engine.labeledimage", "pk": 163, "fields": { - "job": 32, + "job": 28, "label": 64, "frame": 1, "group": null, @@ -5880,7 +5836,7 @@ "model": "engine.labeledimage", "pk": 164, "fields": { - "job": 32, + "job": 28, "label": 66, "frame": 2, "group": null, @@ -5891,7 +5847,7 @@ "model": "engine.labeledimage", "pk": 165, "fields": { - "job": 32, + "job": 28, "label": 63, "frame": 3, "group": null, @@ -5902,7 +5858,7 @@ "model": "engine.labeledimage", "pk": 166, "fields": { - "job": 32, + "job": 28, "label": 64, "frame": 4, "group": null, @@ -5913,7 +5869,7 @@ "model": "engine.labeledimage", "pk": 167, "fields": { - "job": 32, + "job": 28, "label": 63, "frame": 5, "group": null, @@ -5924,7 +5880,7 @@ "model": "engine.labeledimage", "pk": 168, "fields": { - "job": 32, + "job": 28, "label": 66, "frame": 6, "group": null, @@ -5935,7 +5891,7 @@ "model": "engine.labeledimage", "pk": 169, "fields": { - "job": 32, + "job": 28, "label": 64, "frame": 7, "group": null, @@ -5946,7 +5902,7 @@ "model": "engine.labeledimage", "pk": 170, "fields": { - "job": 32, + "job": 28, "label": 63, "frame": 8, "group": null, @@ -5957,7 +5913,7 @@ "model": "engine.labeledimage", "pk": 171, "fields": { - "job": 32, + "job": 28, "label": 64, "frame": 9, "group": null, @@ -5968,7 +5924,7 @@ "model": "engine.labeledimage", "pk": 172, "fields": { - "job": 32, + "job": 28, "label": 64, "frame": 10, "group": null, @@ -6784,7 +6740,7 @@ "model": "engine.labeledshape", "pk": 373, "fields": { - "job": 32, + "job": 28, "label": 64, "frame": 0, "group": null, @@ -6802,7 +6758,7 @@ "model": "engine.labeledshape", "pk": 374, "fields": { - "job": 32, + "job": 28, "label": 66, "frame": 1, "group": null, @@ -6820,7 +6776,7 @@ "model": "engine.labeledshape", "pk": 375, "fields": { - "job": 32, + "job": 28, "label": 63, "frame": 2, "group": null, @@ -6838,7 +6794,7 @@ "model": "engine.labeledshape", "pk": 376, "fields": { - "job": 32, + "job": 28, "label": 63, "frame": 3, "group": null, @@ -6856,7 +6812,7 @@ "model": "engine.labeledshape", "pk": 377, "fields": { - "job": 32, + "job": 28, "label": 64, "frame": 4, "group": null, @@ -6874,7 +6830,7 @@ "model": "engine.labeledshape", "pk": 378, "fields": { - "job": 32, + "job": 28, "label": 66, "frame": 5, "group": null, @@ -6892,7 +6848,7 @@ "model": "engine.labeledshape", "pk": 379, "fields": { - "job": 32, + "job": 28, "label": 63, "frame": 6, "group": null, @@ -6910,7 +6866,7 @@ "model": "engine.labeledshape", "pk": 380, "fields": { - "job": 32, + "job": 28, "label": 64, "frame": 7, "group": null, @@ -6928,7 +6884,7 @@ "model": "engine.labeledshape", "pk": 381, "fields": { - "job": 32, + "job": 28, "label": 63, "frame": 8, "group": null, @@ -6946,7 +6902,7 @@ "model": "engine.labeledshape", "pk": 382, "fields": { - "job": 32, + "job": 28, "label": 66, "frame": 9, "group": null, @@ -6964,7 +6920,7 @@ "model": "engine.labeledshape", "pk": 383, "fields": { - "job": 32, + "job": 28, "label": 63, "frame": 10, "group": null, @@ -6982,7 +6938,7 @@ "model": "engine.labeledshape", "pk": 384, "fields": { - "job": 32, + "job": 28, "label": 63, "frame": 0, "group": null, @@ -7000,7 +6956,7 @@ "model": "engine.labeledshape", "pk": 385, "fields": { - "job": 32, + "job": 28, "label": 64, "frame": 1, "group": null, @@ -7018,7 +6974,7 @@ "model": "engine.labeledshape", "pk": 386, "fields": { - "job": 32, + "job": 28, "label": 63, "frame": 2, "group": null, @@ -7036,7 +6992,7 @@ "model": "engine.labeledshape", "pk": 387, "fields": { - "job": 32, + "job": 28, "label": 66, "frame": 3, "group": null, @@ -7054,7 +7010,7 @@ "model": "engine.labeledshape", "pk": 388, "fields": { - "job": 32, + "job": 28, "label": 64, "frame": 4, "group": null, @@ -7072,7 +7028,7 @@ "model": "engine.labeledshape", "pk": 389, "fields": { - "job": 32, + "job": 28, "label": 63, "frame": 5, "group": null, @@ -7090,7 +7046,7 @@ "model": "engine.labeledshape", "pk": 390, "fields": { - "job": 32, + "job": 28, "label": 64, "frame": 6, "group": null, @@ -7108,7 +7064,7 @@ "model": "engine.labeledshape", "pk": 391, "fields": { - "job": 32, + "job": 28, "label": 64, "frame": 7, "group": null, @@ -7126,7 +7082,7 @@ "model": "engine.labeledshape", "pk": 392, "fields": { - "job": 32, + "job": 28, "label": 63, "frame": 8, "group": null, @@ -7144,7 +7100,7 @@ "model": "engine.labeledshape", "pk": 393, "fields": { - "job": 32, + "job": 28, "label": 66, "frame": 9, "group": null, @@ -7162,7 +7118,7 @@ "model": "engine.labeledshape", "pk": 394, "fields": { - "job": 32, + "job": 28, "label": 66, "frame": 10, "group": null, @@ -7648,7 +7604,7 @@ "model": "engine.labeledshape", "pk": 509, "fields": { - "job": 32, + "job": 28, "label": 66, "frame": 0, "group": 0, @@ -7666,7 +7622,7 @@ "model": "engine.labeledshape", "pk": 510, "fields": { - "job": 32, + "job": 28, "label": 67, "frame": 0, "group": 0, @@ -7684,7 +7640,7 @@ "model": "engine.labeledshape", "pk": 511, "fields": { - "job": 32, + "job": 28, "label": 68, "frame": 0, "group": 0, @@ -7702,7 +7658,7 @@ "model": "engine.labeledshape", "pk": 512, "fields": { - "job": 32, + "job": 28, "label": 69, "frame": 0, "group": 0, @@ -7963,7 +7919,7 @@ "model": "engine.labeledtrack", "pk": 107, "fields": { - "job": 32, + "job": 28, "label": 64, "frame": 1, "group": null, @@ -7975,7 +7931,7 @@ "model": "engine.labeledtrack", "pk": 108, "fields": { - "job": 32, + "job": 28, "label": 66, "frame": 5, "group": null, diff --git a/tests/python/shared/assets/jobs.json b/tests/python/shared/assets/jobs.json index 35e0e8e472ed..2ebf04540d18 100644 --- a/tests/python/shared/assets/jobs.json +++ b/tests/python/shared/assets/jobs.json @@ -9,14 +9,14 @@ "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", "dimension": "2d", - "id": 32, + "id": 28, "issues": { "count": 0, - "url": "http://localhost:8080/api/issues?job_id=32" + "url": "http://localhost:8080/api/issues?job_id=28" }, "labels": { "count": 3, - "url": "http://localhost:8080/api/labels?job_id=32" + "url": "http://localhost:8080/api/labels?job_id=28" }, "mode": "annotation", "project_id": null, @@ -28,7 +28,7 @@ "task_id": 22, "type": "ground_truth", "updated_date": "2023-04-14T15:03:25.984000Z", - "url": "http://localhost:8080/api/jobs/32" + "url": "http://localhost:8080/api/jobs/28" }, { "assignee": null, diff --git a/tests/python/shared/assets/tasks.json b/tests/python/shared/assets/tasks.json index 492202bd4f17..1fcd82e9ae2a 100644 --- a/tests/python/shared/assets/tasks.json +++ b/tests/python/shared/assets/tasks.json @@ -16,7 +16,7 @@ "image_quality": 70, "jobs": { "completed": 0, - "count": 6, + "count": 2, "url": "http://localhost:8080/api/jobs?task_id=22" }, "labels": { From 3f583e3b39267522225c31967c8fe22db8ccda2c Mon Sep 17 00:00:00 2001 From: klakhov Date: Tue, 18 Apr 2023 10:23:41 +0300 Subject: [PATCH 017/257] added gt job create form --- cvat-core/src/enums.ts | 5 + cvat-core/src/server-proxy.ts | 14 + cvat-core/src/server-response-types.ts | 3 +- cvat-core/src/session-implementation.ts | 12 +- cvat-core/src/session.ts | 61 ++--- cvat-ui/src/actions/jobs-actions.ts | 20 +- .../create-job-page/create-job-page.tsx | 71 ++++++ .../components/create-job-page/job-form.tsx | 239 ++++++++++++++++++ .../components/create-job-page/styles.scss | 45 ++++ cvat-ui/src/components/cvat-app.tsx | 2 + .../src/components/jobs-page/jobs-content.tsx | 6 +- cvat-ui/src/cvat-core-wrapper.ts | 3 +- cvat-ui/src/reducers/index.ts | 1 + cvat-ui/src/reducers/notifications-reducer.ts | 19 +- 14 files changed, 462 insertions(+), 39 deletions(-) create mode 100644 cvat-ui/src/components/create-job-page/create-job-page.tsx create mode 100644 cvat-ui/src/components/create-job-page/job-form.tsx create mode 100644 cvat-ui/src/components/create-job-page/styles.scss diff --git a/cvat-core/src/enums.ts b/cvat-core/src/enums.ts index 2ee04197cbae..fe42f6e86c92 100644 --- a/cvat-core/src/enums.ts +++ b/cvat-core/src/enums.ts @@ -34,6 +34,11 @@ export enum JobState { REJECTED = 'rejected', } +export enum JobType { + NORMAL = 'normal', + GROUND_TRUTH = 'ground_truth', +} + export enum DimensionType { DIMENSION_2D = '2d', DIMENSION_3D = '3d', diff --git a/cvat-core/src/server-proxy.ts b/cvat-core/src/server-proxy.ts index f75316210aa9..5e9cff522ab5 100644 --- a/cvat-core/src/server-proxy.ts +++ b/cvat-core/src/server-proxy.ts @@ -1351,6 +1351,19 @@ async function saveJob(id: number, jobData: Partial): Promise): Promise { + const { backendAPI } = config; + + let response = null; + try { + response = await Axios.post(`${backendAPI}/jobs`, jobData); + } catch (errorData) { + throw generateError(errorData); + } + + return response.data; +} + async function getUsers(filter = { page_size: 'all' }) { const { backendAPI } = config; @@ -2197,6 +2210,7 @@ export default Object.freeze({ get: getJobs, getPreview: getPreview('jobs'), save: saveJob, + create: createJob, exportDataset: exportDataset('jobs'), }), diff --git a/cvat-core/src/server-response-types.ts b/cvat-core/src/server-response-types.ts index d29b8d0630f7..e0f3b3dced51 100644 --- a/cvat-core/src/server-response-types.ts +++ b/cvat-core/src/server-response-types.ts @@ -4,7 +4,7 @@ import { ChunkType, - DimensionType, JobStage, JobState, ProjectStatus, + DimensionType, JobStage, JobState, JobType, ProjectStatus, ShareFileType, TaskMode, TaskStatus, } from 'enums'; import { SerializedModel } from 'core-types'; @@ -117,6 +117,7 @@ export interface SerializedJob { project_id: number | null; stage: JobStage; state: JobState; + type: JobType; startFrame: number; stopFrame: number; task_id: number; diff --git a/cvat-core/src/session-implementation.ts b/cvat-core/src/session-implementation.ts index bdde1c7c21de..ea33db36e809 100644 --- a/cvat-core/src/session-implementation.ts +++ b/cvat-core/src/session-implementation.ts @@ -61,7 +61,7 @@ async function restoreFrameWrapper(jobID, frame) { } export function implementJob(Job) { - Job.prototype.save.implementation = async function () { + Job.prototype.save.implementation = async function (additionalData: any) { if (this.id) { const jobData = this._updateTrigger.getUpdated(this); if (jobData.assignee) { @@ -73,7 +73,15 @@ export function implementJob(Job) { return new Job(data); } - throw new ArgumentError('Could not save job without id'); + const jobSpec = { + ...(this.assignee ? { assignee: this.assignee.id } : {}), + ...(this.stage ? { stage: this.stage } : {}), + ...(this.state ? { stage: this.state } : {}), + type: this.type, + task_id: this.taskId, + }; + const job = await serverProxy.jobs.create({ ...jobSpec, ...additionalData }); + return new Job(job); }; Job.prototype.issues.implementation = async function () { diff --git a/cvat-core/src/session.ts b/cvat-core/src/session.ts index 4a01202de8ca..91df825d6018 100644 --- a/cvat-core/src/session.ts +++ b/cvat-core/src/session.ts @@ -6,7 +6,7 @@ import _ from 'lodash'; import { ChunkType, DimensionType, JobStage, - JobState, StorageLocation, TaskMode, TaskStatus, + JobState, JobType, StorageLocation, TaskMode, TaskStatus, } from './enums'; import { Storage } from './storage'; @@ -318,6 +318,8 @@ export class Job extends Session { public readonly bugTracker: string | null; public readonly mode: TaskMode; public readonly labels: Label[]; + public readonly type: JobType; + public readonly frameSelectionMethod: JobType; public annotations: { get: CallableFunction; @@ -368,6 +370,7 @@ export class Job extends Session { assignee: null, stage: undefined, state: undefined, + type: JobType.NORMAL, start_frame: undefined, stop_frame: undefined, project_id: null, @@ -387,10 +390,6 @@ export class Job extends Session { if (property in initialData) { data[property] = initialData[property]; } - - if (data[property] === undefined) { - throw new ArgumentError(`Job field "${property}" was not initialized`); - } } } @@ -467,6 +466,9 @@ export class Job extends Session { data.state = state; }, }, + type: { + get: () => data.type, + }, startFrame: { get: () => data.start_frame, }, @@ -549,8 +551,8 @@ export class Job extends Session { }; } - async save() { - const result = await PluginRegistry.apiWrapper.call(this, Job.prototype.save); + async save(additionalData = {}) { + const result = await PluginRegistry.apiWrapper.call(this, Job.prototype.save, additionalData); return result; } @@ -721,28 +723,29 @@ export class Task extends Session { if (Array.isArray(initialData.jobs)) { for (const job of initialData.jobs) { - const jobInstance = new Job({ - url: job.url, - id: job.id, - assignee: job.assignee, - state: job.state, - stage: job.stage, - start_frame: job.start_frame, - stop_frame: job.stop_frame, - - // following fields also returned when doing API request /jobs/ - // here we know them from task and append to constructor - task_id: data.id, - project_id: data.project_id, - labels: data.labels, - bug_tracker: data.bug_tracker, - mode: data.mode, - dimension: data.dimension, - data_compressed_chunk_type: data.data_compressed_chunk_type, - data_chunk_size: data.data_chunk_size, - }); - - data.jobs.push(jobInstance); + if (job.type === JobType.NORMAL) { + const jobInstance = new Job({ + url: job.url, + id: job.id, + assignee: job.assignee, + state: job.state, + stage: job.stage, + start_frame: job.start_frame, + stop_frame: job.stop_frame, + + // following fields also returned when doing API request /jobs/ + // here we know them from task and append to constructor + task_id: data.id, + project_id: data.project_id, + labels: data.labels, + bug_tracker: data.bug_tracker, + mode: data.mode, + dimension: data.dimension, + data_compressed_chunk_type: data.data_compressed_chunk_type, + data_chunk_size: data.data_chunk_size, + }); + data.jobs.push(jobInstance); + } } } diff --git a/cvat-ui/src/actions/jobs-actions.ts b/cvat-ui/src/actions/jobs-actions.ts index 70dc5a6d5424..2110cd9de201 100644 --- a/cvat-ui/src/actions/jobs-actions.ts +++ b/cvat-ui/src/actions/jobs-actions.ts @@ -4,9 +4,10 @@ // SPDX-License-Identifier: MIT import { ActionUnion, createAction, ThunkAction } from 'utils/redux'; -import { getCore } from 'cvat-core-wrapper'; -import { JobsQuery, Job } from 'reducers'; +import { getCore, Job } from 'cvat-core-wrapper'; +import { JobsQuery } from 'reducers'; import { filterNull } from 'utils/filter-null'; +import { JobData } from 'components/create-job-page/job-form'; const cvat = getCore(); @@ -17,6 +18,7 @@ export enum JobsActionTypes { GET_JOB_PREVIEW = 'GET_JOB_PREVIEW', GET_JOB_PREVIEW_SUCCESS = 'GET_JOB_PREVIEW_SUCCESS', GET_JOB_PREVIEW_FAILED = 'GET_JOB_PREVIEW_FAILED', + CREATE_JOB_FAILED = 'CREATE_JOB_FAILED', } interface JobsList extends Array { @@ -38,6 +40,9 @@ const jobsActions = { getJobPreviewFailed: (jobID: number, error: any) => ( createAction(JobsActionTypes.GET_JOB_PREVIEW_FAILED, { jobID, error }) ), + createJobFailed: (error: any) => ( + createAction(JobsActionTypes.CREATE_JOB_FAILED, { error }) + ), }; export type JobsActions = ActionUnion; @@ -64,3 +69,14 @@ export const getJobPreviewAsync = (job: Job): ThunkAction => async (dispatch) => dispatch(jobsActions.getJobPreviewFailed(job.id, error)); } }; + +export const createJobAsync = (data: JobData): ThunkAction => async (dispatch) => { + const jobInstance = new cvat.classes.Job(data); + try { + const savedJob = await jobInstance.save(data); + return savedJob; + } catch (error) { + dispatch(jobsActions.createJobFailed(error)); + throw error; + } +}; diff --git a/cvat-ui/src/components/create-job-page/create-job-page.tsx b/cvat-ui/src/components/create-job-page/create-job-page.tsx new file mode 100644 index 000000000000..6e7b248d3eae --- /dev/null +++ b/cvat-ui/src/components/create-job-page/create-job-page.tsx @@ -0,0 +1,71 @@ +// Copyright (C) 2023 CVAT.ai Corporation +// +// SPDX-License-Identifier: MIT + +import './styles.scss'; + +import React, { useEffect, useState } from 'react'; +import { Row, Col } from 'antd/lib/grid'; +import { useParams } from 'react-router'; +import Text from 'antd/lib/typography/Text'; +import Spin from 'antd/lib/spin'; +import { Task } from 'reducers'; +import { notification } from 'antd'; +import { getCore } from 'cvat-core-wrapper'; +import JobForm from './job-form'; + +const core = getCore(); + +function CreateJobPage(): JSX.Element { + const [fetchingTask, setFetchingTask] = useState(true); + const [taskInstance, setTaskInstance] = useState(null); + + const id = +useParams<{ id: string }>().id; + useEffect((): void => { + if (Number.isInteger(id)) { + core.tasks.get({ id }) + .then(([task]: Task[]) => { + if (task) { + setTaskInstance(task); + } + }).catch((error: Error) => { + notification.error({ + message: 'Could not fetch requested task from the server', + description: error.toString(), + }); + }).finally(() => { + setFetchingTask(false); + }); + } else { + notification.error({ + message: 'Could not receive the requested task from the server', + description: `Requested task id "${id}" is not valid`, + }); + setFetchingTask(false); + } + }, []); + return ( +

+ ); +} + +export default React.memo(CreateJobPage); diff --git a/cvat-ui/src/components/create-job-page/job-form.tsx b/cvat-ui/src/components/create-job-page/job-form.tsx new file mode 100644 index 000000000000..9ddae94d15d7 --- /dev/null +++ b/cvat-ui/src/components/create-job-page/job-form.tsx @@ -0,0 +1,239 @@ +// Copyright (C) 2023 CVAT.ai Corporation +// +// SPDX-License-Identifier: MIT + +import './styles.scss'; + +import React, { useCallback } from 'react'; +import { Row, Col } from 'antd/lib/grid'; +import Form from 'antd/lib/form'; +import Button from 'antd/lib/button'; +import Select from 'antd/lib/select'; +import notification from 'antd/lib/notification'; +import InputNumber from 'antd/lib/input-number'; +import Text from 'antd/lib/typography/Text'; + +import { CombinedState } from 'reducers'; +import { useDispatch, useSelector } from 'react-redux'; +import { JobType } from 'cvat-core/src/enums'; +import { Task } from 'cvat-core-wrapper'; +import { createJobAsync } from 'actions/jobs-actions'; +import { useHistory } from 'react-router'; + +export enum FrameSelectionMethod { + RANDOM = 'random_uniform', +} + +interface JobDataMutual { + task_id: number, + frame_selection_method: FrameSelectionMethod, + type: JobType, + seed?: number, +} + +export interface JobData extends JobDataMutual { + count: number, +} + +export interface JobFormData extends JobDataMutual { + quantity: number, + frame_count: number, +} + +interface Props { + task: Task +} + +const defaultQuantity = 5; + +function JobForm(props: Props): JSX.Element { + const { task } = props; + const { size: taskSize } = task; + const [form] = Form.useForm(); + const dispatch = useDispatch(); + const history = useHistory(); + + const fetching = useSelector((state: CombinedState) => state.models.fetching); + + const submit = useCallback(async (): Promise => { + try { + const values: JobFormData = await form.validateFields(); + const data: JobData = { + frame_selection_method: values.frame_selection_method, + type: values.type, + seed: values.seed, + count: values.frame_count, + task_id: task.id, + }; + const createdJob = await dispatch(createJobAsync(data)); + + return createdJob; + } catch (e) { + return false; + } + }, [task]); + + const onSubmitAndOpen = async (): Promise => { + const createdJob = await submit(); + if (createdJob) { + history.push(`/tasks/${task.id}/jobs/${createdJob.id}`); + } + }; + + const onSubmit = async (): Promise => { + const res = await submit(); + if (res) { + form.resetFields(); + notification.info({ + message: 'Job has been successfully created', + className: 'cvat-notification-create-job-success', + }); + } + }; + + const onQuantityChange = useCallback((value: number | null) => { + if (value) { + const newFrameCount = Math.round((value * taskSize) / 100); + form.setFieldsValue({ + frame_count: newFrameCount, + }); + } + }, [taskSize]); + + const onFrameCountChange = useCallback((value: number | null) => { + if (value) { + const newQuantity = Math.floor((value / taskSize) * 100); + form.setFieldsValue({ + quantity: newQuantity, + }); + } + }, [taskSize]); + + return ( + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + {`of ${taskSize} selected`} + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+ ); +} + +export default React.memo(JobForm); diff --git a/cvat-ui/src/components/create-job-page/styles.scss b/cvat-ui/src/components/create-job-page/styles.scss new file mode 100644 index 000000000000..b1ef80a1b031 --- /dev/null +++ b/cvat-ui/src/components/create-job-page/styles.scss @@ -0,0 +1,45 @@ +// Copyright (C) 2023 CVAT.ai Corporation +// +// SPDX-License-Identifier: MIT + +@import '../../base.scss'; + +.cvat-create-job-page { + width: 100%; + height: 100%; + padding-top: $grid-unit-size * 5; + + .cvat-title { + font-size: 36px; + } +} + +.cvat-create-job-form-wrapper { + margin-top: $grid-unit-size * 3; + height: auto; + border: 1px solid $border-color-1; + border-radius: 3px; + padding: $grid-unit-size * 3; + background: $background-color-1; + text-align: initial; + + .ant-input-number { + width: $grid-unit-size * 25; + } +} + +.cvat-create-job-frames-tip { + display: flex; + align-items: center; + margin-left: $grid-unit-size * 2; + margin-top: $grid-unit-size; +} + +.cvat-create-job-actions { + margin-top: $grid-unit-size * 10; + + button { + min-width: $grid-unit-size * 15; + margin-left: $grid-unit-size; + } +} diff --git a/cvat-ui/src/components/cvat-app.tsx b/cvat-ui/src/components/cvat-app.tsx index 4ca5a6a331f3..711908c1c6ea 100644 --- a/cvat-ui/src/components/cvat-app.tsx +++ b/cvat-ui/src/components/cvat-app.tsx @@ -73,6 +73,7 @@ import EmailConfirmationPage from './email-confirmation-pages/email-confirmed'; import EmailVerificationSentPage from './email-confirmation-pages/email-verification-sent'; import IncorrectEmailConfirmationPage from './email-confirmation-pages/incorrect-email-confirmation'; import CreateModelPage from './create-model-page/create-model-page'; +import CreateJobPage from './create-job-page/create-job-page'; interface CVATAppProps { loadFormats: () => void; @@ -460,6 +461,7 @@ class CVATApplication extends React.PureComponent + diff --git a/cvat-ui/src/components/jobs-page/jobs-content.tsx b/cvat-ui/src/components/jobs-page/jobs-content.tsx index 8406e9f535e8..3105d5212494 100644 --- a/cvat-ui/src/components/jobs-page/jobs-content.tsx +++ b/cvat-ui/src/components/jobs-page/jobs-content.tsx @@ -6,11 +6,11 @@ import React from 'react'; import { useSelector } from 'react-redux'; import { Col, Row } from 'antd/lib/grid'; import { CombinedState } from 'reducers'; +import { Job, JobType } from 'cvat-core-wrapper'; import JobCard from './job-card'; function JobsContentComponent(): JSX.Element { const jobs = useSelector((state: CombinedState) => state.jobs.current); - const previews = useSelector((state: CombinedState) => state.jobs.previews); const dimensions = { md: 22, lg: 18, @@ -21,8 +21,8 @@ function JobsContentComponent(): JSX.Element { return ( - {jobs.map((job: any, idx: number): JSX.Element => ( - + {jobs.filter((job: Job) => job.type === JobType.NORMAL).map((job: Job): JSX.Element => ( + ))} diff --git a/cvat-ui/src/cvat-core-wrapper.ts b/cvat-ui/src/cvat-core-wrapper.ts index d36432d18eca..79ca3ccc9df7 100644 --- a/cvat-ui/src/cvat-core-wrapper.ts +++ b/cvat-ui/src/cvat-core-wrapper.ts @@ -15,7 +15,7 @@ import { SerializedAttribute, SerializedLabel } from 'cvat-core/src/server-respo import { Job, Task } from 'cvat-core/src/session'; import Project from 'cvat-core/src/project'; import { - ShapeType, LabelType, ModelKind, ModelProviders, ModelReturnType, DimensionType, + ShapeType, LabelType, ModelKind, ModelProviders, ModelReturnType, DimensionType, JobType, } from 'cvat-core/src/enums'; import { Storage, StorageData } from 'cvat-core/src/storage'; import Issue from 'cvat-core/src/issue'; @@ -57,6 +57,7 @@ export { ModelReturnType, DimensionType, Dumper, + JobType, }; export type { diff --git a/cvat-ui/src/reducers/index.ts b/cvat-ui/src/reducers/index.ts index b5139e5cb2fa..df2883fe6181 100644 --- a/cvat-ui/src/reducers/index.ts +++ b/cvat-ui/src/reducers/index.ts @@ -464,6 +464,7 @@ export interface NotificationsState { jobs: { updating: null | ErrorState; fetching: null | ErrorState; + creating: null | ErrorState; }; formats: { fetching: null | ErrorState; diff --git a/cvat-ui/src/reducers/notifications-reducer.ts b/cvat-ui/src/reducers/notifications-reducer.ts index 1f62b3f8fbc8..79c9de0391f9 100644 --- a/cvat-ui/src/reducers/notifications-reducer.ts +++ b/cvat-ui/src/reducers/notifications-reducer.ts @@ -61,6 +61,7 @@ const defaultState: NotificationsState = { jobs: { updating: null, fetching: null, + creating: null, }, formats: { fetching: null, @@ -1552,7 +1553,23 @@ export default function (state = defaultState, action: AnyAction): Notifications fetching: { message: 'Could not fetch a list of jobs', reason: action.payload.error.toString(), - className: 'cvat-notification-notice-update-organization-membership-failed', + className: 'cvat-notification-notice-update-get-jobs-failed', + }, + }, + }, + }; + } + case JobsActionTypes.CREATE_JOB_FAILED: { + return { + ...state, + errors: { + ...state.errors, + jobs: { + ...state.errors.jobs, + creating: { + message: 'Could not create job', + reason: action.payload.error.toString(), + className: 'cvat-notification-notice-create-job-failed', }, }, }, From d2cdda459c6673d68a02e024ef9e36be1aea0d77 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 18 Apr 2023 11:26:10 +0300 Subject: [PATCH 018/257] Add rules for job creation and removal --- cvat/apps/iam/permissions.py | 26 ++++++++++++++++++++++++-- cvat/apps/iam/rules/jobs.rego | 22 ++++++++++++++++++++-- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/cvat/apps/iam/permissions.py b/cvat/apps/iam/permissions.py index cbea2fe4dae9..c28e9ffb873a 100644 --- a/cvat/apps/iam/permissions.py +++ b/cvat/apps/iam/permissions.py @@ -1127,6 +1127,7 @@ def get_resource(self): class JobPermission(OpenPolicyAgentPermission): class Scopes(StrEnum): + CREATE = 'create' LIST = 'list' VIEW = 'view' UPDATE = 'update' @@ -1192,10 +1193,10 @@ def __init__(self, **kwargs): def get_scopes(request, view, obj): Scopes = __class__.Scopes scope = { - ('list', 'GET'): Scopes.LIST, # TODO: need to add the method + ('list', 'GET'): Scopes.LIST, + ('create', 'POST'): Scopes.CREATE, ('retrieve', 'GET'): Scopes.VIEW, ('partial_update', 'PATCH'): Scopes.UPDATE, - ('update', 'PUT'): Scopes.UPDATE, # TODO: do we need the method? ('destroy', 'DELETE'): Scopes.DELETE, ('annotations', 'GET'): Scopes.VIEW_ANNOTATIONS, ('annotations', 'PATCH'): Scopes.UPDATE_ANNOTATIONS, @@ -1272,6 +1273,27 @@ def get_resource(self): "assignee": { "id": getattr(self.obj.segment.task.project.assignee, 'id', None) } } if self.obj.segment.task.project else None } + elif self.scope == self.Scopes.CREATE: + task = Task.objects.get(id=self.task_id) + + if task.project: + organization = task.project.organization + else: + organization = task.organization + + data = { + 'organization': { + "id": getattr(organization, 'id', None) + }, + "task": { + "owner": { "id": getattr(task.owner, 'id', None) }, + "assignee": { "id": getattr(task.assignee, 'id', None) } + }, + "project": { + "owner": { "id": getattr(task.project.owner, 'id', None) }, + "assignee": { "id": getattr(task.project.assignee, 'id', None) } + } if task.project else None + } return data diff --git a/cvat/apps/iam/rules/jobs.rego b/cvat/apps/iam/rules/jobs.rego index b853dda6d946..f85a88b6d9a3 100644 --- a/cvat/apps/iam/rules/jobs.rego +++ b/cvat/apps/iam/rules/jobs.rego @@ -3,7 +3,7 @@ import data.utils import data.organizations # input: { -# "scope": <"view"|"list"|"update:state"|"update:stage"|"update:assignee""delete"| +# "scope": <"create"|"view"|"list"|"update:state"|"update:stage"|"update:assignee""delete"| # "view:annotations"|"update:annotations"|"delete:annotations"|"view:data"| # "export:annotations" | "export:dataset" |> or null, # "auth": { @@ -139,6 +139,21 @@ filter = [] { # Django Q object to filter list of entries {"segment__task__project__organization": input.auth.organization.id}, "|", "&"] } +allow { + { utils.CREATE, utils.DELETE }[input.scope] + utils.has_perm(utils.USER) + utils.is_sandbox + is_task_staff +} + +allow { + { utils.CREATE, utils.DELETE }[input.scope] + input.auth.organization.id == input.resource.organization.id + organizations.has_perm(organizations.WORKER) + utils.has_perm(utils.USER) + is_task_staff +} + allow { { utils.VIEW, utils.EXPORT_DATASET, utils.EXPORT_ANNOTATIONS, utils.VIEW_ANNOTATIONS, utils.VIEW_DATA, utils.VIEW_METADATA, utils.VIEW_COMMITS }[input.scope] utils.is_sandbox @@ -146,7 +161,10 @@ allow { } allow { - { utils.VIEW, utils.EXPORT_DATASET, utils.EXPORT_ANNOTATIONS, utils.VIEW_ANNOTATIONS, utils.VIEW_DATA, utils.VIEW_METADATA, utils.VIEW_COMMITS }[input.scope] + { utils.CREATE, utils.DELETE, utils.VIEW, + utils.EXPORT_DATASET, utils.EXPORT_ANNOTATIONS, + utils.VIEW_ANNOTATIONS, utils.VIEW_DATA, utils.VIEW_METADATA, utils.VIEW_COMMITS + }[input.scope] input.auth.organization.id == input.resource.organization.id utils.has_perm(utils.USER) organizations.has_perm(organizations.MAINTAINER) From 9dc5ac25a07262ab075562c9acbb280d21e8fad4 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 18 Apr 2023 15:00:50 +0300 Subject: [PATCH 019/257] Add gt job access tests --- cvat/apps/iam/permissions.py | 27 ++- cvat/apps/iam/rules/jobs.rego | 12 +- docker-compose.dev.yml | 2 + tests/python/rest_api/test_jobs.py | 278 ++++++++++++++++++++++++++-- tests/python/rest_api/test_tasks.py | 1 + 5 files changed, 297 insertions(+), 23 deletions(-) diff --git a/cvat/apps/iam/permissions.py b/cvat/apps/iam/permissions.py index c28e9ffb873a..c544cebd6481 100644 --- a/cvat/apps/iam/permissions.py +++ b/cvat/apps/iam/permissions.py @@ -874,6 +874,15 @@ def create(cls, request, view, obj): return permissions + @classmethod + def create_scope_view(cls, request, task_id: int): + try: + obj = Task.objects.get(id=task_id) + except Task.DoesNotExist as ex: + raise ValidationError(str(ex)) + + return cls(**cls.unpack_context(request), obj=obj, scope=__class__.Scopes.VIEW) + def __init__(self, **kwargs): super().__init__(**kwargs) self.url = settings.IAM_OPA_DATA_URL + '/tasks/allow' @@ -1126,6 +1135,8 @@ def get_resource(self): return data class JobPermission(OpenPolicyAgentPermission): + task_id: Optional[int] + class Scopes(StrEnum): CREATE = 'create' LIST = 'list' @@ -1153,8 +1164,17 @@ class Scopes(StrEnum): def create(cls, request, view, obj): permissions = [] if view.basename == 'job': + task_id = request.data.get('task_id') for scope in cls.get_scopes(request, view, obj): - self = cls.create_base_perm(request, view, scope, obj) + scope_params = {} + + if scope == __class__.Scopes.CREATE: + scope_params['task_id'] = task_id + + if task_id: + permissions.append(TaskPermission.create_scope_view(request, task_id)) + + self = cls.create_base_perm(request, view, scope, obj, **scope_params) permissions.append(self) if view.action == 'issues': @@ -1186,6 +1206,7 @@ def create_scope_view_data(cls, request, job_id): return cls(**cls.unpack_context(request), obj=obj, scope='view:data') def __init__(self, **kwargs): + self.task_id = kwargs.pop('task_id', None) super().__init__(**kwargs) self.url = settings.IAM_OPA_DATA_URL + '/jobs/allow' @@ -1273,7 +1294,9 @@ def get_resource(self): "assignee": { "id": getattr(self.obj.segment.task.project.assignee, 'id', None) } } if self.obj.segment.task.project else None } - elif self.scope == self.Scopes.CREATE: + elif self.scope == __class__.Scopes.CREATE: + if self.task_id is None: + raise ValidationError("task_id is not specified") task = Task.objects.get(id=self.task_id) if task.project: diff --git a/cvat/apps/iam/rules/jobs.rego b/cvat/apps/iam/rules/jobs.rego index f85a88b6d9a3..a7d49f893db6 100644 --- a/cvat/apps/iam/rules/jobs.rego +++ b/cvat/apps/iam/rules/jobs.rego @@ -149,13 +149,16 @@ allow { allow { { utils.CREATE, utils.DELETE }[input.scope] input.auth.organization.id == input.resource.organization.id - organizations.has_perm(organizations.WORKER) + organizations.has_perm(organizations.SUPERVISOR) utils.has_perm(utils.USER) is_task_staff } allow { - { utils.VIEW, utils.EXPORT_DATASET, utils.EXPORT_ANNOTATIONS, utils.VIEW_ANNOTATIONS, utils.VIEW_DATA, utils.VIEW_METADATA, utils.VIEW_COMMITS }[input.scope] + { utils.VIEW, + utils.EXPORT_DATASET, utils.EXPORT_ANNOTATIONS, + utils.VIEW_ANNOTATIONS, utils.VIEW_DATA, utils.VIEW_METADATA, utils.VIEW_COMMITS + }[input.scope] utils.is_sandbox is_job_staff } @@ -171,7 +174,10 @@ allow { } allow { - { utils.VIEW, utils.EXPORT_DATASET, utils.EXPORT_ANNOTATIONS, utils.VIEW_ANNOTATIONS, utils.VIEW_DATA, utils.VIEW_METADATA, utils.VIEW_COMMITS }[input.scope] + { utils.VIEW, + utils.EXPORT_DATASET, utils.EXPORT_ANNOTATIONS, + utils.VIEW_ANNOTATIONS, utils.VIEW_DATA, utils.VIEW_METADATA, utils.VIEW_COMMITS + }[input.scope] input.auth.organization.id == input.resource.organization.id organizations.has_perm(organizations.WORKER) is_job_staff diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 77961af2e316..fcb372770662 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -21,6 +21,8 @@ services: INSTALL_SOURCES: CVAT_DEBUG_ENABLED: environment: + # Use this with CVAT_DEBUG_ENABLED to avoid server response timeouts + # DJANGO_MODWSGI_EXTRA_ARGS: '--request-timeout 0 --queue-timeout 0 --socket-timeout 1000000' CVAT_DEBUG_ENABLED: '${CVAT_DEBUG_ENABLED:-no}' CVAT_DEBUG_PORT: '9090' # If 'yes', wait for a debugger connection on startup diff --git a/tests/python/rest_api/test_jobs.py b/tests/python/rest_api/test_jobs.py index 44956283c85e..f9e91400c8af 100644 --- a/tests/python/rest_api/test_jobs.py +++ b/tests/python/rest_api/test_jobs.py @@ -9,7 +9,7 @@ from copy import deepcopy from http import HTTPStatus from io import BytesIO -from typing import Any, Dict, List +from typing import Any, Dict, List, Optional import pytest from cvat_sdk import models @@ -63,10 +63,13 @@ def _test_create_job_ok(self, user: str, data: Dict[str, Any], **kwargs): assert response.status == HTTPStatus.CREATED return response - def _test_create_job_fails(self, user: str, data: Dict[str, Any], *, expected_status): + def _test_create_job_fails( + self, user: str, data: Dict[str, Any], *, expected_status: int, **kwargs + ): with make_api_client(user) as api_client: (_, response) = api_client.jobs_api.create( models.JobWriteRequest(**deepcopy(data)), + **kwargs, _check_status=False, _parse_response=False, ) @@ -178,24 +181,93 @@ def test_can_create_no_more_than_1_gt_job(self, admin_user, jobs): ) assert b"A task can have only 1 ground truth job" in response.data + def test_can_create_gt_job_in_sandbox_task(self, tasks, jobs, users): + task = next( + t + for t in tasks + if t["organization"] is None + and all(j["type"] != "ground_truth" for j in jobs if j["task_id"] == t["id"]) + and not users[t["owner"]["id"]]["is_superuser"] + ) + user = task["owner"]["username"] + + job_spec = { + "task_id": task["id"], + "type": "ground_truth", + "frame_selection_method": "random_uniform", + "count": 1, + } + + self._test_create_job_ok(user, job_spec) + + @pytest.mark.parametrize( + "org_role, is_staff, allow", + [ + ("owner", True, True), + ("owner", False, True), + ("maintainer", True, True), + ("maintainer", False, True), + ("supervisor", True, True), + ("supervisor", False, False), + ("worker", True, False), + ("worker", False, False), + ], + ) + def test_create_gt_job_in_org_task( + self, tasks, jobs, users, is_org_member, is_task_staff, org_role, is_staff, allow + ): + for user in users: + task = next( + ( + t + for t in tasks + if t["organization"] is not None + and all(j["type"] != "ground_truth" for j in jobs if j["task_id"] == t["id"]) + and is_task_staff(user["id"], t["id"]) == is_staff + and is_org_member(user["id"], t["organization"], role=org_role) + ), + None, + ) + if task is not None: + break + + assert task + + org_id = task["organization"] + extra_kwargs = {"org_id": org_id} + + job_spec = { + "task_id": task["id"], + "type": "ground_truth", + "frame_selection_method": "random_uniform", + "count": 1, + } + + if allow: + self._test_create_job_ok(user["username"], job_spec, **extra_kwargs) + else: + self._test_create_job_fails( + user["username"], job_spec, expected_status=HTTPStatus.FORBIDDEN, **extra_kwargs + ) + @pytest.mark.usefixtures("restore_db_per_function") class TestDeleteJobs: - def _test_destroy_job_ok(self, user, job_id): + def _test_destroy_job_ok(self, user, job_id, **kwargs): with make_api_client(user) as api_client: - (_, response) = api_client.jobs_api.destroy(job_id) + (_, response) = api_client.jobs_api.destroy(job_id, **kwargs) assert response.status == HTTPStatus.NO_CONTENT - def _test_destroy_job_fails(self, user, job_id, *, expected_status): + def _test_destroy_job_fails(self, user, job_id, *, expected_status: int, **kwargs): with make_api_client(user) as api_client: (_, response) = api_client.jobs_api.destroy( - job_id, _check_status=False, _parse_response=False + job_id, **kwargs, _check_status=False, _parse_response=False ) assert response.status == expected_status return response @pytest.mark.parametrize("job_type, allow", (("ground_truth", True), ("normal", False))) - def test_can_destroy_job(self, admin_user, jobs, job_type, allow): + def test_destroy_job(self, admin_user, jobs, job_type, allow): job = next(j for j in jobs if j["type"] == job_type) if allow: @@ -205,6 +277,90 @@ def test_can_destroy_job(self, admin_user, jobs, job_type, allow): admin_user, job["id"], expected_status=HTTPStatus.BAD_REQUEST ) + def test_can_destroy_gt_job_in_sandbox_task(self, tasks, jobs, users, admin_user): + task = next( + t + for t in tasks + if t["organization"] is None + and all(j["type"] != "ground_truth" for j in jobs if j["task_id"] == t["id"]) + and not users[t["owner"]["id"]]["is_superuser"] + ) + user = task["owner"]["username"] + + job_spec = { + "task_id": task["id"], + "type": "ground_truth", + "frame_selection_method": "random_uniform", + "count": 1, + } + + with make_api_client(admin_user) as api_client: + (job, _) = api_client.jobs_api.create(job_spec) + + self._test_destroy_job_ok(user, job.id) + + @pytest.mark.parametrize( + "org_role, is_staff, allow", + [ + ("owner", True, True), + ("owner", False, True), + ("maintainer", True, True), + ("maintainer", False, True), + ("supervisor", True, True), + ("supervisor", False, False), + ("worker", True, False), + ("worker", False, False), + ], + ) + def test_destroy_gt_job_in_org_task( + self, + tasks, + jobs, + users, + is_org_member, + is_task_staff, + org_role, + is_staff, + allow, + admin_user, + ): + for user in users: + task = next( + ( + t + for t in tasks + if t["organization"] is not None + and all(j["type"] != "ground_truth" for j in jobs if j["task_id"] == t["id"]) + and is_task_staff(user["id"], t["id"]) == is_staff + and is_org_member(user["id"], t["organization"], role=org_role) + ), + None, + ) + if task is not None: + break + + assert task + + org_id = task["organization"] + extra_kwargs = {"org_id": org_id} + + job_spec = { + "task_id": task["id"], + "type": "ground_truth", + "frame_selection_method": "random_uniform", + "count": 1, + } + + with make_api_client(admin_user) as api_client: + (job, _) = api_client.jobs_api.create(job_spec, **extra_kwargs) + + if allow: + self._test_destroy_job_ok(user["username"], job.id, **extra_kwargs) + else: + self._test_destroy_job_fails( + user["username"], job.id, expected_status=HTTPStatus.FORBIDDEN, **extra_kwargs + ) + @pytest.mark.usefixtures("restore_db_per_function") class TestGtComparison: @@ -254,19 +410,21 @@ def test_can_compare_normal_and_gt_job(self, admin_user, tasks, jobs): @pytest.mark.usefixtures("restore_db_per_class") class TestGetJobs: - def _test_get_job_200(self, user, jid, data, **kwargs): + def _test_get_job_200(self, user, jid, *, expected_data: Optional[Dict[str, Any]], **kwargs): with make_api_client(user) as client: (_, response) = client.jobs_api.retrieve(jid, **kwargs) assert response.status == HTTPStatus.OK - assert ( - DeepDiff( - data, - json.loads(response.data), - exclude_paths="root['updated_date']", - ignore_order=True, + + if expected_data is not None: + assert ( + DeepDiff( + expected_data, + json.loads(response.data), + exclude_paths="root['updated_date']", + ignore_order=True, + ) + == {} ) - == {} - ) def _test_get_job_403(self, user, jid, **kwargs): with make_api_client(user) as client: @@ -281,7 +439,7 @@ def test_admin_get_job(self, jobs, tasks, org): # keep only the reasonable amount of jobs for job in jobs[:8]: - self._test_get_job_200("admin2", job["id"], job, **kwargs) + self._test_get_job_200("admin2", job["id"], expected_data=job, **kwargs) @pytest.mark.parametrize("org_id", ["", None, 1, 2]) @pytest.mark.parametrize("groups", [["business"], ["user"], ["worker"], []]) @@ -297,10 +455,94 @@ def test_non_admin_get_job(self, org_id, groups, users, jobs, tasks, projects, o # check if the specific user in job_staff to see the job for user in users: if user["id"] in job_staff | org_staff: - self._test_get_job_200(user["username"], job["id"], job, **kwargs) + self._test_get_job_200(user["username"], job["id"], expected_data=job, **kwargs) else: self._test_get_job_403(user["username"], job["id"], **kwargs) + @pytest.mark.usefixtures("restore_db_per_function") + def test_can_get_gt_job_in_sandbox_task(self, tasks, jobs, users, admin_user): + task = next( + t + for t in tasks + if t["organization"] is None + and all(j["type"] != "ground_truth" for j in jobs if j["task_id"] == t["id"]) + and not users[t["owner"]["id"]]["is_superuser"] + ) + user = task["owner"]["username"] + + job_spec = { + "task_id": task["id"], + "type": "ground_truth", + "frame_selection_method": "random_uniform", + "count": 1, + } + + with make_api_client(admin_user) as api_client: + (job, _) = api_client.jobs_api.create(job_spec) + + self._test_get_job_200(user, job.id, expected_data=None) + + @pytest.mark.usefixtures("restore_db_per_function") + @pytest.mark.parametrize( + "org_role, is_staff, allow", + [ + ("owner", True, True), + ("owner", False, True), + ("maintainer", True, True), + ("maintainer", False, True), + ("supervisor", True, True), + ("supervisor", False, False), + ("worker", True, True), + ("worker", False, False), + ], + ) + def test_get_gt_job_in_org_task( + self, + tasks, + jobs, + users, + is_org_member, + is_task_staff, + org_role, + is_staff, + allow, + admin_user, + ): + for user in users: + task = next( + ( + t + for t in tasks + if t["organization"] is not None + and all(j["type"] != "ground_truth" for j in jobs if j["task_id"] == t["id"]) + and is_task_staff(user["id"], t["id"]) == is_staff + and is_org_member(user["id"], t["organization"], role=org_role) + ), + None, + ) + if task is not None: + break + + assert task + + org_id = task["organization"] + extra_kwargs = {"org_id": org_id} + + job_spec = { + "task_id": task["id"], + "type": "ground_truth", + "frame_selection_method": "random_uniform", + "count": 1, + } + + with make_api_client(admin_user) as api_client: + (job, _) = api_client.jobs_api.create(job_spec, **extra_kwargs) + + if allow: + self._test_get_job_200(user["username"], job.id, expected_data=None, **extra_kwargs) + else: + self._test_get_job_403(user["username"], job.id, **extra_kwargs) + @pytest.mark.usefixtures("restore_db_per_class") class TestListJobs: diff --git a/tests/python/rest_api/test_tasks.py b/tests/python/rest_api/test_tasks.py index cb557c7da5ae..1e378569a5bc 100644 --- a/tests/python/rest_api/test_tasks.py +++ b/tests/python/rest_api/test_tasks.py @@ -1340,6 +1340,7 @@ def test_can_backup_task_with_gt_jobs(self, tmp_path, admin_user, tasks, jobs, a == {} ) + @pytest.mark.usefixtures("restore_db_per_class") class TestGetTaskPreview: def _test_task_preview_200(self, username, task_id, **kwargs): From bab81017be7b0fa5a64eacf40572fa5032ce4eb4 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 18 Apr 2023 17:51:14 +0300 Subject: [PATCH 020/257] Add opa rules tests --- cvat/apps/iam/rules/tests/configs/jobs.csv | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cvat/apps/iam/rules/tests/configs/jobs.csv b/cvat/apps/iam/rules/tests/configs/jobs.csv index 2c463b654555..18533cbd45e3 100644 --- a/cvat/apps/iam/rules/tests/configs/jobs.csv +++ b/cvat/apps/iam/rules/tests/configs/jobs.csv @@ -57,3 +57,13 @@ import:annotations,Job,Sandbox,None,,PUT,/jobs/{id}/annotations?format=,Admin,N/ import:annotations,Job,Sandbox,"Project:owner, Project:assignee, Task:owner, Task:assignee, Assignee",,PUT,/jobs/{id}/annotations?format=,Worker,N/A import:annotations,Job,Organization,None,,PUT,/jobs/{id}/annotations?format=,User,Maintainer import:annotations,Job,Organization,"Project:owner, Project:assignee, Task:owner, Task:assignee, Assignee",,PUT,/jobs/{id}/annotations?format=,Worker,Worker +create,Job,Sandbox,None,,POST,/jobs,Admin,N/A +create,Job,Sandbox,"Project:owner, Project:assignee, Task:owner, Task:assignee",,POST,/jobs/{id},User,N/A +create,Job,Organization,None,,POST,/jobs,User,Maintainer +create,Job,Organization,"Project:owner, Project:assignee, Task:owner, Task:assignee",,POST,/jobs/{id},User,Supervisor +create,Job,Organization,"Project:owner, Project:assignee, Task:owner, Task:assignee, Assignee",,POST,/jobs/{id},User,Maintainer +delete,Job,Sandbox,None,,DELETE,/jobs/{id},Admin,N/A +delete,Job,Sandbox,"Project:owner, Project:assignee, Task:owner, Task:assignee",,DELETE,/jobs/{id},User,N/A +delete,Job,Organization,None,,DELETE,/jobs/{id},User,Maintainer +delete,Job,Organization,"Project:owner, Project:assignee, Task:owner, Task:assignee",,DELETE,/jobs/{id},User,Supervisor +delete,Job,Organization,"Project:owner, Project:assignee, Task:owner, Task:assignee, Assignee",,DELETE,/jobs/{id},User,Maintainer From a96f14ec711bd108c5e1b231c6a9493dd88471ab Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 18 Apr 2023 22:43:22 +0300 Subject: [PATCH 021/257] Simplify test assets --- tests/python/shared/assets/annotations.json | 3072 ++++++------------ tests/python/shared/assets/cvat_db/data.json | 382 +-- 2 files changed, 1213 insertions(+), 2241 deletions(-) diff --git a/tests/python/shared/assets/annotations.json b/tests/python/shared/assets/annotations.json index 24ce2574d48b..b2177f760594 100644 --- a/tests/python/shared/assets/annotations.json +++ b/tests/python/shared/assets/annotations.json @@ -1495,87 +1495,27 @@ "outside": false, "points": [ 401.25005136424625, - 21.437188999945647, + 29.26962500657828, 401.25005136424625, - 86.07529491001696, - 476.49277230117514, - 21.30941055245239, - 476.49277230117514, - 86.1453633191959, - 482.3813022073682, - 17.222011508036303, - 482.3813022073682, - 81.74829255695477, - 407.4789834561907, - 17.36159481238974, - 407.4789834561907, - 81.69191156113993 + 86.07529491000787, + 468.64120980117514, + 29.176652377986102, + 468.64120980117514, + 86.13805169507759, + 474.5653626349449, + 25.052984757909144, + 474.5653626349449, + 81.74240928838844, + 407.47898345618705, + 25.156734879141368, + 407.47898345618705, + 81.69191156110719 ], "rotation": 0.0, "source": "manual", "type": "cuboid", "z_order": 0 }, - { - "attributes": [], - "elements": [], - "frame": 2, - "group": null, - "id": 485, - "label_id": 66, - "occluded": false, - "outside": false, - "points": [ - 29.29325796839885, - 17.76290795533808, - 42.188980213015164, - 19.15690194174448 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 2, - "group": 0, - "id": 506, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 535.3916015625, - 94.59912109375, - 570.72265625, - 66.46484375 - ], - "rotation": 0.0, - "source": "manual", - "type": "ellipse", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 2, - "group": null, - "id": 496, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 9.23320240197188, - 14.307138152377041, - 25.845440820735742, - 44.032847830632605 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, { "attributes": [], "elements": [], @@ -2093,26 +2033,6 @@ "type": "polyline", "z_order": 0 }, - { - "attributes": [], - "elements": [], - "frame": 3, - "group": null, - "id": 486, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 12.900324218921977, - 31.61197536878121, - 14.59391078431892, - 36.29094511026649 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, { "attributes": [], "elements": [], @@ -2123,10 +2043,10 @@ "occluded": false, "outside": false, "points": [ - 24.730337557305866, - 29.62228497877787, - 29.24857191530591, - 70.68451297781645 + 258.3095703125, + 24.3876953125, + 295.5791015625, + 65.44992331153844 ], "rotation": 0.0, "source": "manual", @@ -2156,17 +2076,17 @@ { "attributes": [], "elements": [], - "frame": 4, + "frame": 5, "group": null, - "id": 498, - "label_id": 64, + "id": 499, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 2.1121019722181886, - 13.869054700136441, - 11.324617420574125, - 19.972173011282173 + 148.640625, + 86.0830078125, + 164.76866623852766, + 104.7000239921581 ], "rotation": 0.0, "source": "manual", @@ -2196,17 +2116,17 @@ { "attributes": [], "elements": [], - "frame": 5, + "frame": 6, "group": null, - "id": 499, - "label_id": 63, + "id": 500, + "label_id": 66, "occluded": false, "outside": false, "points": [ - 40.030467384964794, - 14.766168952345382, - 56.1585086234919, - 33.38318513200221 + 156.1435546875, + 55.7177734375, + 182.5197280725224, + 98.7660148448449 ], "rotation": 0.0, "source": "manual", @@ -2223,30 +2143,10 @@ "occluded": false, "outside": false, "points": [ - 25.14030189623754, - 5.6733962996246055, - 38.20236513837561, - 50.107446648679 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 6, - "group": null, - "id": 500, - "label_id": 66, - "occluded": false, - "outside": false, - "points": [ - 22.669744730593095, - 49.829940784412905, - 49.045918115614874, - 92.87818219175908 + 85.333984375, + 107.0869140625, + 98.39604761713781, + 151.52096441155481 ], "rotation": 0.0, "source": "manual", @@ -2263,10 +2163,10 @@ "occluded": false, "outside": false, "points": [ - 31.485093194422202, - 6.652309747763773, - 78.90159992771716, - 50.14729730944946 + 128.3193359375, + 38.0576171875, + 175.73584267079605, + 81.55260474918578 ], "rotation": 0.0, "source": "manual", @@ -2283,10 +2183,10 @@ "occluded": false, "outside": false, "points": [ - 35.06714303007967, - 34.81749603873695, - 72.81534706452, - 60.62236529733499 + 57.3134765625, + 22.38671875, + 95.06168059694028, + 48.191588008598046 ], "rotation": 0.0, "source": "manual", @@ -2303,10 +2203,10 @@ "occluded": false, "outside": false, "points": [ - 30.907609343908867, - 26.920657464053736, - 61.021803468648315, - 34.33466966738635 + 76.052734375, + 22.341796875, + 106.16692849973879, + 29.755809078333186 ], "rotation": 0.0, "source": "manual", @@ -2323,10 +2223,10 @@ "occluded": false, "outside": false, "points": [ - 33.949231044002076, - 43.79253250986025, - 54.84733296216899, - 62.44618575550419 + 97.4140625, + 100.0615234375, + 118.3121644181665, + 118.715176683143 ], "rotation": 0.0, "source": "manual", @@ -2363,10 +2263,10 @@ "occluded": false, "outside": false, "points": [ - 15.01664682667706, - 24.951413716977832, - 34.52619994974882, - 60.389045841248674 + 128.20703125, + 25.60546875, + 147.7165843730727, + 61.04310087427075 ], "rotation": 0.0, "source": "manual", @@ -2383,10 +2283,10 @@ "occluded": false, "outside": false, "points": [ - 19.74201544469132, - 30.437730521261773, - 43.478177450860585, - 38.85138665770247 + 79.2822265625, + 144.9013671875, + 103.01838856866925, + 190.00175781250073 ], "rotation": 0.0, "source": "manual", @@ -2403,10 +2303,10 @@ "occluded": false, "outside": false, "points": [ - 16.097754035046485, - 4.573647979622352, - 58.8933879574248, - 31.93095871390559 + 188.908203125, + 145.0830078125, + 231.70383704737833, + 172.4403185467836 ], "rotation": 0.0, "source": "manual", @@ -2537,16 +2437,38 @@ "occluded": false, "outside": false, "points": [ - 46.51991234215712, - 46.432609873899786, - 45.655675472283754, - 16.25754165859492, - 43.56714102707272, - 49.98897944826618, - 5.709001866044616, - 94.02221983606873, - 50.4674845929161, - 3.8063308724888167 + 81.20000000000073, + 43.20000000000073, + 58.70000000000073, + 40.5, + 43.567141027073376, + 49.988979448266036, + 5.709001866043764, + 94.02221983606796, + 50.46748459291666, + 3.8063308724886156 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 6, + "id": 537, + "occluded": false, + "outside": false, + "points": [ + 87.33181179665189, + 59.56175666774834, + 76.08181179665189, + 58.21175666774798, + 68.51538231018822, + 62.956246391880995, + 42.400000000001455, + 40.600000000000364, + 58.405383111883566, + 28.931516600745454 ], "rotation": 0.0, "type": "polygon", @@ -2595,14 +2517,14 @@ "occluded": false, "outside": false, "points": [ - 20.627812291540625, - 77.71815966193307, - 21.07255019421953, - 54.89527252097782, - 44.701168842121064, - 35.54993705233812, - 21.962376189353606, - 41.33264342135886 + 20.627812291540977, + 77.7181596619339, + 32.80000000000109, + 51.0, + 44.70116884212075, + 35.549937052337555, + 21.962376189354472, + 41.332643421359535 ], "rotation": 0.0, "type": "polygon", @@ -2641,14 +2563,14 @@ "frame": 2, "id": 486, "occluded": false, - "outside": false, + "outside": true, "points": [ - 20.40678024726209, - 91.07758232974479, - 91.93855431428733, - 55.64212246699361, - 98.18754824554128, - 2.366735096391437 + 20.40678024726185, + 91.07758232974447, + 91.9385543142871, + 55.6421224669939, + 50.400000000001455, + 41.600000000000364 ], "rotation": 0.0, "type": "polygon", @@ -2681,16 +2603,32 @@ "occluded": false, "outside": false, "points": [ - 22.622019526627223, - 62.31679157489255, - 7.435732676703511, - 0.9774883731428763, - 33.48515389987684, - 67.80446095923271, - 29.811309771691985, - 27.34743520630969, - 94.97786135262317, - 92.53355214231964 + 33.48515389987733, + 67.80446095923253, + 59.900000000001455, + 62.0, + 94.97786135262322, + 92.53355214232033 + ], + "rotation": 0.0, + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "frame": 5, + "id": 538, + "occluded": false, + "outside": false, + "points": [ + 68.90000000000146, + 93.90000000000146, + 76.08227824977257, + 71.90224383464374, + 63.03334358050233, + 56.41750205211065, + 32.477766951740705, + 82.24196888442566 ], "rotation": 0.0, "type": "polygon", @@ -2703,14 +2641,14 @@ "occluded": true, "outside": false, "points": [ - 0.8530259402693807, - 44.13296596268512, - 92.264556499544, - 81.80448766928922, - 31.08882580838178, - 20.301451961901908, - 31.47038000360235, - 96.67947680961973 + 0.8530259402687079, + 44.132965962684466, + 92.26455649954369, + 81.8044876692893, + 58.600000000000364, + 91.60000000000036, + 31.47038000360226, + 96.67947680962061 ], "rotation": 0.0, "type": "polygon", @@ -2792,7 +2730,7 @@ "frame": 2, "id": 498, "occluded": false, - "outside": false, + "outside": true, "points": [ 153.27734375, 110.2919921875 @@ -2844,7 +2782,7 @@ "frame": 2, "id": 501, "occluded": true, - "outside": false, + "outside": true, "points": [ 229.1739514298206, 141.25929642527626 @@ -3008,65 +2946,41 @@ }, { "attributes": [], - "frame": 0, + "frame": 1, "group": 0, - "id": 121, + "id": 126, "label_id": 63, "shapes": [ { "attributes": [], - "frame": 0, - "id": 497, + "frame": 1, + "id": 518, "occluded": false, "outside": false, "points": [ - 266.92653575077566, - 24.86851007975565, - 266.92653575077566, - 117.68501668390672, - 300.94915298655724, - 24.760093290749865, - 300.94915298655724, - 117.68501668383215, - 304.35141471013594, - 16.30584444966371, - 304.35141471013594, - 109.01393426480536, - 270.40413416463343, - 16.423849249653358, - 270.40413416463343, - 109.02402735721262 + 155.7216796875, + 95.029296875, + 190.3984375, + 48.248046875 ], "rotation": 0.0, - "type": "cuboid", + "type": "ellipse", "z_order": 0 }, { "attributes": [], - "frame": 4, - "id": 514, + "frame": 2, + "id": 519, "occluded": false, "outside": true, "points": [ - 266.92653575077566, - 24.86851007975565, - 266.92653575077566, - 117.68501668390672, - 300.94915298655724, - 24.760093290749865, - 300.94915298655724, - 117.68501668383215, - 304.35141471013594, - 16.30584444966371, - 304.35141471013594, - 109.01393426480536, - 270.40413416463343, - 16.423849249653358, - 270.40413416463343, - 109.02402735721262 + 155.7216796875, + 95.029296875, + 190.3984375, + 48.248046875 ], "rotation": 0.0, - "type": "cuboid", + "type": "ellipse", "z_order": 0 } ], @@ -3074,89 +2988,136 @@ }, { "attributes": [], - "frame": 0, - "group": 0, - "id": 125, - "label_id": 63, - "shapes": [ + "elements": [ { "attributes": [], "frame": 0, - "id": 508, - "occluded": false, - "outside": false, - "points": [ - 457.9970703125, - 146.17578125, - 492.673828125, - 99.39453125 + "group": 0, + "id": 128, + "label_id": 67, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 521, + "occluded": false, + "outside": false, + "points": [ + 520.1542352225897, + 152.06408387350893 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 1, + "id": 522, + "occluded": false, + "outside": true, + "points": [ + 492.0205078125, + 63.7373046875 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } ], - "rotation": 0.0, - "type": "ellipse", - "z_order": 0 + "source": "manual" }, { "attributes": [], - "frame": 1, - "id": 509, - "occluded": false, - "outside": false, - "points": [ - 628.1103515625, - 72.896484375, - 662.787109375, - 26.115234375 + "frame": 0, + "group": 0, + "id": 129, + "label_id": 68, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 523, + "occluded": true, + "outside": false, + "points": [ + 596.0508429024103, + 183.0313881112852 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 1, + "id": 524, + "occluded": true, + "outside": true, + "points": [ + 567.9171154923206, + 94.70460892527626 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } ], - "rotation": 0.0, - "type": "ellipse", - "z_order": 0 + "source": "manual" }, { "attributes": [], - "frame": 2, - "id": 510, - "occluded": false, - "outside": false, - "points": [ - 101.4140625, - 125.2392578125, - 136.0908203125, - 78.4580078125 + "frame": 0, + "group": 0, + "id": 130, + "label_id": 69, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 525, + "occluded": false, + "outside": true, + "points": [ + 529.1238333204674, + 202.44372862649288 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 1, + "id": 526, + "occluded": false, + "outside": true, + "points": [ + 500.9901059103777, + 114.11694944048395 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } ], - "rotation": 0.0, - "type": "ellipse", - "z_order": 0 - }, + "source": "manual" + } + ], + "frame": 0, + "group": 0, + "id": 127, + "label_id": 66, + "shapes": [ { "attributes": [], - "frame": 3, - "id": 511, + "frame": 0, + "id": 520, "occluded": false, "outside": false, - "points": [ - 142.6337890625, - 241.046875, - 177.310546875, - 194.265625 - ], - "rotation": 0.0, - "type": "ellipse", - "z_order": 0 - }, - { - "attributes": [], - "frame": 4, - "id": 512, - "occluded": false, - "outside": true, - "points": [ - 142.6337890625, - 241.046875, - 177.310546875, - 194.265625 - ], + "points": [], "rotation": 0.0, - "type": "ellipse", + "type": "skeleton", "z_order": 0 } ], @@ -3284,10 +3245,10 @@ "occluded": false, "outside": false, "points": [ - 48.12463059940514, - 49.56415639855863, - 86.72866669447971, - 79.88534367799434 + 86.7275390625, + 94.7099609375, + 125.33157515757557, + 125.03114821693453 ], "rotation": 0.0, "source": "manual", @@ -3304,10 +3265,10 @@ "occluded": false, "outside": false, "points": [ - 47.74069002745097, - 8.979945307737525, - 75.09009579972003, - 49.944377666156775 + 158.3134765625, + 35.8056640625, + 185.66288233476917, + 76.7700964209198 ], "rotation": 0.0, "source": "manual", @@ -3324,10 +3285,10 @@ "occluded": false, "outside": false, "points": [ - 31.519108441498556, - 11.487384732875865, - 33.9677855625604, - 11.741460365690042 + 131.6240234375, + 38.3125, + 162.9044921875011, + 69.3251953125 ], "rotation": 0.0, "source": "manual", @@ -3344,10 +3305,10 @@ "occluded": false, "outside": false, "points": [ - 1.973846331831547, - 45.77202532553066, - 19.359541493051733, - 49.59142754572273 + 227.0458984375, + 60.1220703125, + 244.4315935987197, + 83.61393346786463 ], "rotation": 0.0, "source": "manual", @@ -3424,10 +3385,10 @@ "occluded": false, "outside": false, "points": [ - 20.82859485196533, - 20.20284211999498, - 65.06449540153316, - 36.586720678222335 + 103.267578125, + 67.3115234375, + 147.5034786745673, + 83.69540199572657 ], "rotation": 0.0, "source": "manual", @@ -3444,10 +3405,10 @@ "occluded": false, "outside": false, "points": [ - 33.79061149513946, - 8.697799034160319, - 66.8603743960803, - 56.40259427136259 + 144.3642578125, + 56.4599609375, + 177.434020713441, + 104.16475617470314 ], "rotation": 0.0, "source": "manual", @@ -3484,10 +3445,10 @@ "occluded": false, "outside": false, "points": [ - 8.238478163045936, - 30.506885409533453, - 24.199550828477328, - 52.470067436160306 + 156.10546875, + 34.4326171875, + 172.06654141543186, + 56.39579921412769 ], "rotation": 0.0, "source": "manual", @@ -3524,10 +3485,10 @@ "occluded": false, "outside": false, "points": [ - 48.699397805843304, - 25.414220926373016, - 98.21088655300638, - 74.12108955171448 + 61.78515625, + 90.8427734375, + 111.29664499716273, + 139.54964206284058 ], "rotation": 0.0, "source": "manual", @@ -3544,10 +3505,10 @@ "occluded": false, "outside": false, "points": [ - 40.84676019536735, - 49.73369769438821, - 86.55210348083034, - 92.67464655715418 + 144.2236328125, + 51.0419921875, + 189.92897609796273, + 93.98294105026616 ], "rotation": 0.0, "source": "manual", @@ -3584,10 +3545,10 @@ "occluded": false, "outside": false, "points": [ - 6.6512404187989596, - 48.608637853937424, - 38.47957672845558, - 63.01814316203485 + 7.3056640625, + 91.791015625, + 39.13400037215615, + 106.20052093309823 ], "rotation": 0.0, "source": "manual", @@ -3604,10 +3565,10 @@ "occluded": false, "outside": false, "points": [ - 34.8591781560674, - 46.909805505807725, - 62.76884975235831, - 71.15370887744085 + 80.0048828125, + 95.9814453125, + 107.91455440878963, + 120.22534868413277 ], "rotation": 0.0, "source": "manual", @@ -3624,10 +3585,10 @@ "occluded": false, "outside": false, "points": [ - 8.39848796382615, - 21.848706178190497, - 34.06199388884364, - 58.755093781932075 + 126.8232421875, + 45.4033203125, + 152.48674811251658, + 82.30970791624168 ], "rotation": 0.0, "source": "manual", @@ -3782,8 +3743,6 @@ "points": [ 89.16625482373604, 10.760448971018688, - 21.130943971024195, - 33.264143636745125, 82.08266620234568, 57.27050026015028, 31.61462894960768, @@ -3830,8 +3789,6 @@ 41.86726929430576, 10.476592440122644, 76.08071328170251, - 12.350073636556836, - 42.14361527808913, 20.030324015224398, 97.33574207745058 ], @@ -3846,16 +3803,12 @@ "occluded": false, "outside": false, "points": [ - 46.32363927321131, - 89.27799405888287, - 11.543344424530844, - 28.859146282381133, - 39.954518702075006, - 7.7721058829602345, - 89.55146184028104, - 41.32407558272474, - 65.71210278333133, - 4.723941407484478 + 46.323639273210574, + 89.27799405888254, + 11.543344424530005, + 28.859146282380607, + 53.30000000000109, + 47.30000000000109 ], "rotation": 0.0, "type": "polygon", @@ -3942,16 +3895,14 @@ "occluded": false, "outside": false, "points": [ - 60.89406682712508, - 49.404300661462685, - 10.175918797036033, - 22.69300466402857, - 13.636722568044934, - 24.9397151458307, - 20.52105176191774, - 40.90671260779596, - 57.81882237238361, - 93.4250359257492 + 60.894066827124334, + 49.40430066146291, + 10.175918797036502, + 22.693004664028194, + 20.521051761917988, + 40.90671260779527, + 57.81882237238278, + 93.4250359257494 ], "rotation": 0.0, "type": "polygon", @@ -3992,16 +3943,12 @@ "occluded": false, "outside": false, "points": [ - 12.005563467361247, - 51.17651673396597, - 26.65775387838101, - 83.60637658227678, - 9.37445361764302, - 98.39883962537608, - 11.544015694368825, - 82.39090054978801, - 86.56240502418258, - 88.15659541170685 + 12.005563467360844, + 51.1765167339654, + 40.80000000000109, + 97.10000000000036, + 86.56240502418223, + 88.1565954117068 ], "rotation": 0.0, "type": "polygon", @@ -4014,16 +3961,16 @@ "occluded": false, "outside": false, "points": [ - 27.49753431280614, - 52.642159328363334, - 88.61671771042018, - 29.506649953484164, - 99.84757744084266, - 66.51086041463735, - 98.64123905514187, - 80.21191374336696, - 12.032866200086401, - 59.74691350332406 + 27.497534312806238, + 52.64215932836305, + 44.80000000000109, + 9.200000000000728, + 79.60000000000036, + 22.700000000000728, + 71.20000000000073, + 50.100000000000364, + 12.032866200086573, + 59.74691350332432 ], "rotation": 0.0, "type": "polygon", @@ -4036,16 +3983,12 @@ "occluded": false, "outside": false, "points": [ - 45.66798986781423, - 4.961587842360249, - 28.891554322880264, - 88.49284935388283, - 42.04171004313141, - 52.41974372296537, - 79.88779494689628, - 78.70227858399868, - 3.134998177462567, - 60.093270566831016 + 45.66798986781396, + 4.961587842361041, + 121.20000000000073, + 49.80000000000109, + 81.60000000000036, + 51.600000000000364 ], "rotation": 0.0, "type": "polygon", @@ -5615,87 +5558,27 @@ "outside": false, "points": [ 401.25005136424625, - 21.437188999945647, + 29.26962500657828, 401.25005136424625, - 86.07529491001696, - 476.49277230117514, - 21.30941055245239, - 476.49277230117514, - 86.1453633191959, - 482.3813022073682, - 17.222011508036303, - 482.3813022073682, - 81.74829255695477, - 407.4789834561907, - 17.36159481238974, - 407.4789834561907, - 81.69191156113993 + 86.07529491000787, + 468.64120980117514, + 29.176652377986102, + 468.64120980117514, + 86.13805169507759, + 474.5653626349449, + 25.052984757909144, + 474.5653626349449, + 81.74240928838844, + 407.47898345618705, + 25.156734879141368, + 407.47898345618705, + 81.69191156110719 ], "rotation": 0.0, "source": "manual", "type": "cuboid", "z_order": 0 }, - { - "attributes": [], - "elements": [], - "frame": 2, - "group": null, - "id": 485, - "label_id": 66, - "occluded": false, - "outside": false, - "points": [ - 29.29325796839885, - 17.76290795533808, - 42.188980213015164, - 19.15690194174448 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 2, - "group": 0, - "id": 506, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 535.3916015625, - 94.59912109375, - 570.72265625, - 66.46484375 - ], - "rotation": 0.0, - "source": "manual", - "type": "ellipse", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 2, - "group": null, - "id": 496, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 9.23320240197188, - 14.307138152377041, - 25.845440820735742, - 44.032847830632605 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, { "attributes": [], "elements": [], @@ -6213,26 +6096,6 @@ "type": "polyline", "z_order": 0 }, - { - "attributes": [], - "elements": [], - "frame": 3, - "group": null, - "id": 486, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 12.900324218921977, - 31.61197536878121, - 14.59391078431892, - 36.29094511026649 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, { "attributes": [], "elements": [], @@ -6243,10 +6106,10 @@ "occluded": false, "outside": false, "points": [ - 24.730337557305866, - 29.62228497877787, - 29.24857191530591, - 70.68451297781645 + 258.3095703125, + 24.3876953125, + 295.5791015625, + 65.44992331153844 ], "rotation": 0.0, "source": "manual", @@ -6276,17 +6139,17 @@ { "attributes": [], "elements": [], - "frame": 4, + "frame": 5, "group": null, - "id": 498, - "label_id": 64, + "id": 499, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 2.1121019722181886, - 13.869054700136441, - 11.324617420574125, - 19.972173011282173 + 148.640625, + 86.0830078125, + 164.76866623852766, + 104.7000239921581 ], "rotation": 0.0, "source": "manual", @@ -6316,17 +6179,17 @@ { "attributes": [], "elements": [], - "frame": 5, + "frame": 6, "group": null, - "id": 499, - "label_id": 63, + "id": 500, + "label_id": 66, "occluded": false, "outside": false, "points": [ - 40.030467384964794, - 14.766168952345382, - 56.1585086234919, - 33.38318513200221 + 156.1435546875, + 55.7177734375, + 182.5197280725224, + 98.7660148448449 ], "rotation": 0.0, "source": "manual", @@ -6343,30 +6206,10 @@ "occluded": false, "outside": false, "points": [ - 25.14030189623754, - 5.6733962996246055, - 38.20236513837561, - 50.107446648679 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 6, - "group": null, - "id": 500, - "label_id": 66, - "occluded": false, - "outside": false, - "points": [ - 22.669744730593095, - 49.829940784412905, - 49.045918115614874, - 92.87818219175908 + 85.333984375, + 107.0869140625, + 98.39604761713781, + 151.52096441155481 ], "rotation": 0.0, "source": "manual", @@ -6383,10 +6226,10 @@ "occluded": false, "outside": false, "points": [ - 31.485093194422202, - 6.652309747763773, - 78.90159992771716, - 50.14729730944946 + 128.3193359375, + 38.0576171875, + 175.73584267079605, + 81.55260474918578 ], "rotation": 0.0, "source": "manual", @@ -6403,10 +6246,10 @@ "occluded": false, "outside": false, "points": [ - 35.06714303007967, - 34.81749603873695, - 72.81534706452, - 60.62236529733499 + 57.3134765625, + 22.38671875, + 95.06168059694028, + 48.191588008598046 ], "rotation": 0.0, "source": "manual", @@ -6423,10 +6266,10 @@ "occluded": false, "outside": false, "points": [ - 30.907609343908867, - 26.920657464053736, - 61.021803468648315, - 34.33466966738635 + 76.052734375, + 22.341796875, + 106.16692849973879, + 29.755809078333186 ], "rotation": 0.0, "source": "manual", @@ -6443,10 +6286,10 @@ "occluded": false, "outside": false, "points": [ - 33.949231044002076, - 43.79253250986025, - 54.84733296216899, - 62.44618575550419 + 97.4140625, + 100.0615234375, + 118.3121644181665, + 118.715176683143 ], "rotation": 0.0, "source": "manual", @@ -6483,10 +6326,10 @@ "occluded": false, "outside": false, "points": [ - 15.01664682667706, - 24.951413716977832, - 34.52619994974882, - 60.389045841248674 + 128.20703125, + 25.60546875, + 147.7165843730727, + 61.04310087427075 ], "rotation": 0.0, "source": "manual", @@ -6503,10 +6346,10 @@ "occluded": false, "outside": false, "points": [ - 19.74201544469132, - 30.437730521261773, - 43.478177450860585, - 38.85138665770247 + 79.2822265625, + 144.9013671875, + 103.01838856866925, + 190.00175781250073 ], "rotation": 0.0, "source": "manual", @@ -6523,1296 +6366,231 @@ "occluded": false, "outside": false, "points": [ - 16.097754035046485, - 4.573647979622352, - 58.8933879574248, - 31.93095871390559 + 188.908203125, + 145.0830078125, + 231.70383704737833, + 172.4403185467836 ], "rotation": 0.0, "source": "manual", "type": "rectangle", "z_order": 0 - }, + } + ], + "tags": [ { "attributes": [], - "elements": [], "frame": 0, "group": null, - "id": 384, + "id": 217, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 1, + "group": null, + "id": 218, "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 21.771535357816685, - 38.10394839707063, - 46.66121542795621, - 61.395778976883435 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 + "source": "manual" }, { "attributes": [], - "elements": [], - "frame": 0, + "frame": 2, "group": null, - "id": 373, + "id": 219, "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 128.70000000000073, - 202.8154296875, - 174.84953117370605, - 252.62294394632772 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 + "source": "manual" }, { "attributes": [], - "elements": [ + "frame": 3, + "group": null, + "id": 220, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 4, + "group": null, + "id": 221, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 5, + "group": null, + "id": 222, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 6, + "group": null, + "id": 223, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 7, + "group": null, + "id": 224, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 8, + "group": null, + "id": 225, + "label_id": 66, + "source": "manual" + }, + { + "attributes": [], + "frame": 9, + "group": null, + "id": 226, + "label_id": 64, + "source": "manual" + }, + { + "attributes": [], + "frame": 10, + "group": null, + "id": 227, + "label_id": 66, + "source": "manual" + } + ], + "tracks": [ + { + "attributes": [], + "frame": 4, + "group": null, + "id": 117, + "label_id": 64, + "shapes": [ { "attributes": [], - "frame": 0, - "group": 0, - "id": 510, - "label_id": 67, + "frame": 4, + "id": 479, "occluded": false, "outside": false, "points": [ - 325.81183481270637, - 169.3732236381784 + 33.598779899537504, + 47.72613723612956, + 72.98403755948176, + 46.37989500312985, + 30.124643891237035, + 37.121847333246016 ], "rotation": 0.0, - "source": "manual", - "type": "points", + "type": "polygon", "z_order": 0 }, { "attributes": [], - "frame": 0, - "group": 0, - "id": 512, - "label_id": 69, + "frame": 5, + "id": 480, "occluded": false, "outside": false, "points": [ - 335.2453776397853, - 246.57839351937508 + 81.20000000000073, + 43.20000000000073, + 58.70000000000073, + 40.5, + 43.567141027073376, + 49.988979448266036, + 5.709001866043764, + 94.02221983606796, + 50.46748459291666, + 3.8063308724886156 ], "rotation": 0.0, - "source": "manual", - "type": "points", + "type": "polygon", "z_order": 0 }, { "attributes": [], - "frame": 0, - "group": 0, - "id": 511, - "label_id": 68, + "frame": 6, + "id": 537, "occluded": false, "outside": false, "points": [ - 405.6341290966555, - 216.82961195061355 + 87.33181179665189, + 59.56175666774834, + 76.08181179665189, + 58.21175666774798, + 68.51538231018822, + 62.956246391880995, + 42.400000000001455, + 40.600000000000364, + 58.405383111883566, + 28.931516600745454 ], "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - } - ], - "frame": 0, - "group": 0, - "id": 509, - "label_id": 66, - "occluded": false, - "outside": false, - "points": [], - "rotation": 0.0, - "source": "manual", - "type": "skeleton", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 1, - "group": null, - "id": 374, - "label_id": 66, - "occluded": false, - "outside": false, - "points": [ - 48.12463059940514, - 49.56415639855863, - 86.72866669447971, - 79.88534367799434 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 1, - "group": null, - "id": 385, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 47.74069002745097, - 8.979945307737525, - 75.09009579972003, - 49.944377666156775 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 2, - "group": null, - "id": 386, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 31.519108441498556, - 11.487384732875865, - 33.9677855625604, - 11.741460365690042 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 2, - "group": null, - "id": 375, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 1.973846331831547, - 45.77202532553066, - 19.359541493051733, - 49.59142754572273 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 3, - "group": null, - "id": 387, - "label_id": 66, - "occluded": false, - "outside": false, - "points": [ - 47.626061974587216, - 4.742902857127573, - 73.6431946747958, - 21.98893892047218 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 3, - "group": null, - "id": 376, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 28.151068739966007, - 25.472817252545543, - 69.01675105692789, - 39.17582104149861 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 4, - "group": null, - "id": 388, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 39.9552116305673, - 7.099389830892683, - 81.50568347911505, - 22.91276365749088 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 4, - "group": null, - "id": 377, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 20.82859485196533, - 20.20284211999498, - 65.06449540153316, - 36.586720678222335 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 5, - "group": null, - "id": 378, - "label_id": 66, - "occluded": false, - "outside": false, - "points": [ - 33.79061149513946, - 8.697799034160319, - 66.8603743960803, - 56.40259427136259 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 5, - "group": null, - "id": 389, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 8.490724513815634, - 4.967537330256527, - 33.879170648858064, - 41.48246323545371 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 6, - "group": null, - "id": 390, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 8.238478163045936, - 30.506885409533453, - 24.199550828477328, - 52.470067436160306 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 6, - "group": null, - "id": 379, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 36.59042217067678, - 11.640939649375332, - 56.356138094129285, - 23.152580340218726 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 7, - "group": null, - "id": 391, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 48.699397805843304, - 25.414220926373016, - 98.21088655300638, - 74.12108955171448 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 7, - "group": null, - "id": 380, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 40.84676019536735, - 49.73369769438821, - 86.55210348083034, - 92.67464655715418 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 8, - "group": null, - "id": 392, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 23.44786013239356, - 46.61655359142538, - 38.03525661308419, - 63.989553927693194 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 8, - "group": null, - "id": 381, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 6.6512404187989596, - 48.608637853937424, - 38.47957672845558, - 63.01814316203485 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 9, - "group": null, - "id": 382, - "label_id": 66, - "occluded": false, - "outside": false, - "points": [ - 34.8591781560674, - 46.909805505807725, - 62.76884975235831, - 71.15370887744085 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 9, - "group": null, - "id": 393, - "label_id": 66, - "occluded": false, - "outside": false, - "points": [ - 8.39848796382615, - 21.848706178190497, - 34.06199388884364, - 58.755093781932075 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 10, - "group": null, - "id": 394, - "label_id": 66, - "occluded": false, - "outside": false, - "points": [ - 49.33379108044891, - 45.87438661706784, - 97.62187411104203, - 94.75916402425524 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 10, - "group": null, - "id": 383, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 40.01964032220059, - 28.210223404990387, - 63.80243197711431, - 77.26899546998015 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - } - ], - "tags": [ - { - "attributes": [], - "frame": 0, - "group": null, - "id": 217, - "label_id": 66, - "source": "manual" - }, - { - "attributes": [], - "frame": 1, - "group": null, - "id": 218, - "label_id": 63, - "source": "manual" - }, - { - "attributes": [], - "frame": 2, - "group": null, - "id": 219, - "label_id": 64, - "source": "manual" - }, - { - "attributes": [], - "frame": 3, - "group": null, - "id": 220, - "label_id": 66, - "source": "manual" - }, - { - "attributes": [], - "frame": 4, - "group": null, - "id": 221, - "label_id": 66, - "source": "manual" - }, - { - "attributes": [], - "frame": 5, - "group": null, - "id": 222, - "label_id": 66, - "source": "manual" - }, - { - "attributes": [], - "frame": 6, - "group": null, - "id": 223, - "label_id": 66, - "source": "manual" - }, - { - "attributes": [], - "frame": 7, - "group": null, - "id": 224, - "label_id": 66, - "source": "manual" - }, - { - "attributes": [], - "frame": 8, - "group": null, - "id": 225, - "label_id": 66, - "source": "manual" - }, - { - "attributes": [], - "frame": 9, - "group": null, - "id": 226, - "label_id": 64, - "source": "manual" - }, - { - "attributes": [], - "frame": 10, - "group": null, - "id": 227, - "label_id": 66, - "source": "manual" - }, - { - "attributes": [], - "frame": 0, - "group": null, - "id": 162, - "label_id": 63, - "source": "manual" - }, - { - "attributes": [], - "frame": 1, - "group": null, - "id": 163, - "label_id": 64, - "source": "manual" - }, - { - "attributes": [], - "frame": 2, - "group": null, - "id": 164, - "label_id": 66, - "source": "manual" - }, - { - "attributes": [], - "frame": 3, - "group": null, - "id": 165, - "label_id": 63, - "source": "manual" - }, - { - "attributes": [], - "frame": 4, - "group": null, - "id": 166, - "label_id": 64, - "source": "manual" - }, - { - "attributes": [], - "frame": 5, - "group": null, - "id": 167, - "label_id": 63, - "source": "manual" - }, - { - "attributes": [], - "frame": 6, - "group": null, - "id": 168, - "label_id": 66, - "source": "manual" - }, - { - "attributes": [], - "frame": 7, - "group": null, - "id": 169, - "label_id": 64, - "source": "manual" - }, - { - "attributes": [], - "frame": 8, - "group": null, - "id": 170, - "label_id": 63, - "source": "manual" - }, - { - "attributes": [], - "frame": 9, - "group": null, - "id": 171, - "label_id": 64, - "source": "manual" - }, - { - "attributes": [], - "frame": 10, - "group": null, - "id": 172, - "label_id": 64, - "source": "manual" - } - ], - "tracks": [ - { - "attributes": [], - "frame": 4, - "group": null, - "id": 117, - "label_id": 64, - "shapes": [ - { - "attributes": [], - "frame": 4, - "id": 479, - "occluded": false, - "outside": false, - "points": [ - 33.598779899537504, - 47.72613723612956, - 72.98403755948176, - 46.37989500312985, - 30.124643891237035, - 37.121847333246016 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 5, - "id": 480, - "occluded": false, - "outside": false, - "points": [ - 46.51991234215712, - 46.432609873899786, - 45.655675472283754, - 16.25754165859492, - 43.56714102707272, - 49.98897944826618, - 5.709001866044616, - 94.02221983606873, - 50.4674845929161, - 3.8063308724888167 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 7, - "id": 482, - "occluded": false, - "outside": true, - "points": [ - 93.4636235933026, - 75.92351333549601, - 41.2227627513351, - 34.350331204602604, - 66.3432816308487, - 54.056702329000764 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 8, - "id": 483, - "occluded": true, - "outside": false, - "points": [ - 5.0376184452136314, - 30.9548987882599, - 43.94144681021965, - 21.128727976625083, - 48.469900205179414, - 40.057149554521985 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 9, - "id": 484, - "occluded": false, - "outside": false, - "points": [ - 20.627812291540625, - 77.71815966193307, - 21.07255019421953, - 54.89527252097782, - 44.701168842121064, - 35.54993705233812, - 21.962376189353606, - 41.33264342135886 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 0, - "id": 484, - "occluded": false, - "outside": true, - "points": [ - 20.627812291540625, - 77.71815966193307, - 21.07255019421953, - 54.89527252097782, - 44.701168842121064, - 35.54993705233812, - 21.962376189353606, - 41.33264342135886 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 1, - "group": null, - "id": 118, - "label_id": 64, - "shapes": [ - { - "attributes": [], - "frame": 1, - "id": 485, - "occluded": false, - "outside": false, - "points": [ - 14.249043106539217, - 92.98784111986599, - 75.59995790885854, - 9.882230433856531, - 74.64478290627322, - 24.288343372649436 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 2, - "id": 486, - "occluded": false, - "outside": false, - "points": [ - 20.40678024726209, - 91.07758232974479, - 91.93855431428733, - 55.64212246699361, - 98.18754824554128, - 2.366735096391437 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 3, - "id": 487, - "occluded": false, - "outside": false, - "points": [ - 64.07371618788767, - 51.165624193155125, - 16.507577217122392, - 35.26978776115228, - 3.3675085977394215, - 35.92980168264138, - 48.890071365309076, - 42.285059057475024 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 4, - "id": 488, - "occluded": false, - "outside": false, - "points": [ - 22.622019526627223, - 62.31679157489255, - 7.435732676703511, - 0.9774883731428763, - 33.48515389987684, - 67.80446095923271, - 29.811309771691985, - 27.34743520630969, - 94.97786135262317, - 92.53355214231964 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 6, - "id": 490, - "occluded": true, - "outside": false, - "points": [ - 0.8530259402693807, - 44.13296596268512, - 92.264556499544, - 81.80448766928922, - 31.08882580838178, - 20.301451961901908, - 31.47038000360235, - 96.67947680961973 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 7, - "id": 491, - "occluded": false, - "outside": false, - "points": [ - 5.076584858511457, - 53.839003005451126, - 79.49480345687792, - 80.4262644422021, - 97.57877446416717, - 73.8591873826985 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 8, - "id": 492, - "occluded": true, - "outside": false, - "points": [ - 46.487048928881734, - 74.79726052811286, - 58.89940649861379, - 63.46132083800071, - 79.97978567976963, - 37.370343440303344, - 0.9690229199726064, - 94.25236542125029 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 9, - "id": 513, - "occluded": true, - "outside": true, - "points": [ - 46.487048928881734, - 74.79726052811286, - 58.89940649861379, - 63.46132083800071, - 79.97978567976963, - 37.370343440303344, - 0.9690229199726064, - 94.25236542125029 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "elements": [ - { - "attributes": [], - "frame": 2, - "group": 0, - "id": 122, - "label_id": 67, - "shapes": [ - { - "attributes": [], - "frame": 2, - "id": 498, - "occluded": false, - "outside": false, - "points": [ - 153.27734375, - 110.2919921875 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 4, - "id": 499, - "occluded": false, - "outside": false, - "points": [ - 112.478515625, - 36.544921875 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 5, - "id": 500, - "occluded": false, - "outside": true, - "points": [ - 112.478515625, - 36.544921875 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 2, - "group": 0, - "id": 123, - "label_id": 68, - "shapes": [ - { - "attributes": [], - "frame": 2, - "id": 501, - "occluded": true, - "outside": false, - "points": [ - 229.1739514298206, - 141.25929642527626 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 4, - "id": 502, - "occluded": false, - "outside": false, - "points": [ - 147.65302061127113, - 49.58072867662486 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 5, - "id": 503, - "occluded": false, - "outside": true, - "points": [ - 147.65302061127113, - 49.58072867662486 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 2, - "group": 0, - "id": 124, - "label_id": 69, - "shapes": [ - { - "attributes": [], - "frame": 2, - "id": 504, - "occluded": false, - "outside": true, - "points": [ - 162.24694184787768, - 160.67163694048395 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 4, - "id": 505, - "occluded": false, - "outside": false, - "points": [ - 116.63550211839356, - 57.75242869223621 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 5, - "id": 506, - "occluded": false, - "outside": true, - "points": [ - 116.63550211839356, - 57.75242869223621 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - } - ], - "frame": 2, - "group": 0, - "id": 119, - "label_id": 66, - "shapes": [ - { - "attributes": [], - "frame": 2, - "id": 494, - "occluded": false, - "outside": false, - "points": [], - "rotation": 0.0, - "type": "skeleton", + "type": "polygon", "z_order": 0 }, { "attributes": [], - "frame": 0, - "id": 494, + "frame": 7, + "id": 482, "occluded": false, "outside": true, - "points": [], - "rotation": 0.0, - "type": "skeleton", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 2, - "group": 0, - "id": 120, - "label_id": 63, - "shapes": [ - { - "attributes": [], - "frame": 2, - "id": 495, - "occluded": false, - "outside": false, "points": [ - 394.7080078125, - 132.537109375, - 423.4960031454393, - 133.1914787701262, - 458.82718258259774, - 118.79729455498818, - 458.17290148191023, - 152.81991179076977 + 93.4636235933026, + 75.92351333549601, + 41.2227627513351, + 34.350331204602604, + 66.3432816308487, + 54.056702329000764 ], "rotation": 0.0, - "type": "points", + "type": "polygon", "z_order": 0 }, { "attributes": [], - "frame": 4, - "id": 496, - "occluded": false, - "outside": true, - "points": [ - 394.7080078125, - 132.537109375, - 423.4960031454393, - 133.1914787701262, - 458.82718258259774, - 118.79729455498818, - 458.17290148191023, - 152.81991179076977 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 121, - "label_id": 63, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 497, - "occluded": false, + "frame": 8, + "id": 483, + "occluded": true, "outside": false, "points": [ - 266.92653575077566, - 24.86851007975565, - 266.92653575077566, - 117.68501668390672, - 300.94915298655724, - 24.760093290749865, - 300.94915298655724, - 117.68501668383215, - 304.35141471013594, - 16.30584444966371, - 304.35141471013594, - 109.01393426480536, - 270.40413416463343, - 16.423849249653358, - 270.40413416463343, - 109.02402735721262 + 5.0376184452136314, + 30.9548987882599, + 43.94144681021965, + 21.128727976625083, + 48.469900205179414, + 40.057149554521985 ], "rotation": 0.0, - "type": "cuboid", + "type": "polygon", "z_order": 0 }, { "attributes": [], - "frame": 4, - "id": 514, + "frame": 9, + "id": 484, "occluded": false, - "outside": true, + "outside": false, "points": [ - 266.92653575077566, - 24.86851007975565, - 266.92653575077566, - 117.68501668390672, - 300.94915298655724, - 24.760093290749865, - 300.94915298655724, - 117.68501668383215, - 304.35141471013594, - 16.30584444966371, - 304.35141471013594, - 109.01393426480536, - 270.40413416463343, - 16.423849249653358, - 270.40413416463343, - 109.02402735721262 + 20.627812291540977, + 77.7181596619339, + 32.80000000000109, + 51.0, + 44.70116884212075, + 35.549937052337555, + 21.962376189354472, + 41.332643421359535 ], "rotation": 0.0, - "type": "cuboid", + "type": "polygon", "z_order": 0 } ], @@ -7820,118 +6598,120 @@ }, { "attributes": [], - "frame": 0, - "group": 0, - "id": 125, - "label_id": 63, + "frame": 1, + "group": null, + "id": 118, + "label_id": 64, "shapes": [ { "attributes": [], - "frame": 0, - "id": 508, + "frame": 1, + "id": 485, "occluded": false, "outside": false, "points": [ - 457.9970703125, - 146.17578125, - 492.673828125, - 99.39453125 + 14.249043106539217, + 92.98784111986599, + 75.59995790885854, + 9.882230433856531, + 74.64478290627322, + 24.288343372649436 ], "rotation": 0.0, - "type": "ellipse", + "type": "polygon", "z_order": 0 }, { "attributes": [], - "frame": 1, - "id": 509, + "frame": 2, + "id": 486, "occluded": false, - "outside": false, + "outside": true, "points": [ - 628.1103515625, - 72.896484375, - 662.787109375, - 26.115234375 + 20.40678024726185, + 91.07758232974447, + 91.9385543142871, + 55.6421224669939, + 50.400000000001455, + 41.600000000000364 ], "rotation": 0.0, - "type": "ellipse", + "type": "polygon", "z_order": 0 }, { "attributes": [], - "frame": 2, - "id": 510, + "frame": 3, + "id": 487, "occluded": false, "outside": false, "points": [ - 101.4140625, - 125.2392578125, - 136.0908203125, - 78.4580078125 + 64.07371618788767, + 51.165624193155125, + 16.507577217122392, + 35.26978776115228, + 3.3675085977394215, + 35.92980168264138, + 48.890071365309076, + 42.285059057475024 ], "rotation": 0.0, - "type": "ellipse", + "type": "polygon", "z_order": 0 }, { "attributes": [], - "frame": 3, - "id": 511, + "frame": 4, + "id": 488, "occluded": false, "outside": false, "points": [ - 142.6337890625, - 241.046875, - 177.310546875, - 194.265625 + 33.48515389987733, + 67.80446095923253, + 59.900000000001455, + 62.0, + 94.97786135262322, + 92.53355214232033 ], "rotation": 0.0, - "type": "ellipse", + "type": "polygon", "z_order": 0 }, { "attributes": [], - "frame": 4, - "id": 512, + "frame": 5, + "id": 538, "occluded": false, - "outside": true, + "outside": false, "points": [ - 142.6337890625, - 241.046875, - 177.310546875, - 194.265625 + 68.90000000000146, + 93.90000000000146, + 76.08227824977257, + 71.90224383464374, + 63.03334358050233, + 56.41750205211065, + 32.477766951740705, + 82.24196888442566 ], "rotation": 0.0, - "type": "ellipse", + "type": "polygon", "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 1, - "group": null, - "id": 107, - "label_id": 64, - "shapes": [ + }, { "attributes": [], - "frame": 1, - "id": 428, - "occluded": false, + "frame": 6, + "id": 490, + "occluded": true, "outside": false, "points": [ - 89.16625482373604, - 10.760448971018688, - 21.130943971024195, - 33.264143636745125, - 82.08266620234568, - 57.27050026015028, - 31.61462894960768, - 91.61837979864868, - 61.318808891867995, - 5.2591005982589145 + 0.8530259402687079, + 44.132965962684466, + 92.26455649954369, + 81.8044876692893, + 58.600000000000364, + 91.60000000000036, + 31.47038000360226, + 96.67947680962061 ], "rotation": 0.0, "type": "polygon", @@ -7939,21 +6719,17 @@ }, { "attributes": [], - "frame": 2, - "id": 429, + "frame": 7, + "id": 491, "occluded": false, "outside": false, "points": [ - 86.12227563556914, - 54.78519030863848, - 5.965437872325186, - 44.415919636543535, - 21.508219614650393, - 77.71533185704882, - 56.56030517796948, - 80.49138661336151, - 92.11320758706701, - 36.23616592947234 + 5.076584858511457, + 53.839003005451126, + 79.49480345687792, + 80.4262644422021, + 97.57877446416717, + 73.8591873826985 ], "rotation": 0.0, "type": "polygon", @@ -7961,21 +6737,19 @@ }, { "attributes": [], - "frame": 3, - "id": 430, - "occluded": false, + "frame": 8, + "id": 492, + "occluded": true, "outside": false, "points": [ - 43.844133439202515, - 52.766337685192056, - 36.06107102732473, - 41.86726929430576, - 10.476592440122644, - 76.08071328170251, - 12.350073636556836, - 42.14361527808913, - 20.030324015224398, - 97.33574207745058 + 46.487048928881734, + 74.79726052811286, + 58.89940649861379, + 63.46132083800071, + 79.97978567976963, + 37.370343440303344, + 0.9690229199726064, + 94.25236542125029 ], "rotation": 0.0, "type": "polygon", @@ -7983,120 +6757,293 @@ }, { "attributes": [], - "frame": 4, - "id": 431, - "occluded": false, - "outside": false, + "frame": 9, + "id": 513, + "occluded": true, + "outside": true, "points": [ - 46.32363927321131, - 89.27799405888287, - 11.543344424530844, - 28.859146282381133, - 39.954518702075006, - 7.7721058829602345, - 89.55146184028104, - 41.32407558272474, - 65.71210278333133, - 4.723941407484478 + 46.487048928881734, + 74.79726052811286, + 58.89940649861379, + 63.46132083800071, + 79.97978567976963, + 37.370343440303344, + 0.9690229199726064, + 94.25236542125029 ], "rotation": 0.0, "type": "polygon", "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "elements": [ + { + "attributes": [], + "frame": 2, + "group": 0, + "id": 122, + "label_id": 67, + "shapes": [ + { + "attributes": [], + "frame": 2, + "id": 498, + "occluded": false, + "outside": true, + "points": [ + 153.27734375, + 110.2919921875 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 4, + "id": 499, + "occluded": false, + "outside": false, + "points": [ + 112.478515625, + 36.544921875 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 5, + "id": 500, + "occluded": false, + "outside": true, + "points": [ + 112.478515625, + 36.544921875 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 2, + "group": 0, + "id": 123, + "label_id": 68, + "shapes": [ + { + "attributes": [], + "frame": 2, + "id": 501, + "occluded": true, + "outside": true, + "points": [ + 229.1739514298206, + 141.25929642527626 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 4, + "id": 502, + "occluded": false, + "outside": false, + "points": [ + 147.65302061127113, + 49.58072867662486 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 5, + "id": 503, + "occluded": false, + "outside": true, + "points": [ + 147.65302061127113, + 49.58072867662486 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" }, { "attributes": [], - "frame": 5, - "id": 432, + "frame": 2, + "group": 0, + "id": 124, + "label_id": 69, + "shapes": [ + { + "attributes": [], + "frame": 2, + "id": 504, + "occluded": false, + "outside": true, + "points": [ + 162.24694184787768, + 160.67163694048395 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 4, + "id": 505, + "occluded": false, + "outside": false, + "points": [ + 116.63550211839356, + 57.75242869223621 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 5, + "id": 506, + "occluded": false, + "outside": true, + "points": [ + 116.63550211839356, + 57.75242869223621 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + } + ], + "frame": 2, + "group": 0, + "id": 119, + "label_id": 66, + "shapes": [ + { + "attributes": [], + "frame": 2, + "id": 494, "occluded": false, "outside": false, - "points": [ - 63.75444524182796, - 83.38994368964245, - 89.86483302169569, - 76.72264053847121, - 65.79043486042822, - 23.786207640718814, - 77.73570584702074, - 67.1092531599958 - ], + "points": [], "rotation": 0.0, - "type": "polygon", + "type": "skeleton", "z_order": 0 - }, + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 2, + "group": 0, + "id": 120, + "label_id": 63, + "shapes": [ { "attributes": [], - "frame": 6, - "id": 433, + "frame": 2, + "id": 495, "occluded": false, "outside": false, "points": [ - 42.08516199103318, - 29.942896326510805, - 40.39823943435537, - 49.37947128117274, - 98.88115268683107, - 79.11696631188182 + 394.7080078125, + 132.537109375, + 423.4960031454393, + 133.1914787701262, + 458.82718258259774, + 118.79729455498818, + 458.17290148191023, + 152.81991179076977 ], "rotation": 0.0, - "type": "polygon", + "type": "points", "z_order": 0 }, { "attributes": [], - "frame": 7, - "id": 434, + "frame": 4, + "id": 496, "occluded": false, - "outside": false, + "outside": true, "points": [ - 81.78520462265138, - 70.56947279185766, - 73.77379910176585, - 76.65691380291577, - 78.13598264354707, - 51.951762879932886 + 394.7080078125, + 132.537109375, + 423.4960031454393, + 133.1914787701262, + 458.82718258259774, + 118.79729455498818, + 458.17290148191023, + 152.81991179076977 ], "rotation": 0.0, - "type": "polygon", + "type": "points", "z_order": 0 - }, + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 1, + "group": 0, + "id": 126, + "label_id": 63, + "shapes": [ { "attributes": [], - "frame": 8, - "id": 435, + "frame": 1, + "id": 518, "occluded": false, "outside": false, "points": [ - 51.12165640102631, - 99.11084197328293, - 63.84797882103561, - 45.89089381970446, - 33.434440460259694, - 19.765429813835755 + 155.7216796875, + 95.029296875, + 190.3984375, + 48.248046875 ], "rotation": 0.0, - "type": "polygon", + "type": "ellipse", "z_order": 0 }, { "attributes": [], - "frame": 9, - "id": 436, + "frame": 2, + "id": 519, "occluded": false, - "outside": false, + "outside": true, "points": [ - 60.89406682712508, - 49.404300661462685, - 10.175918797036033, - 22.69300466402857, - 13.636722568044934, - 24.9397151458307, - 20.52105176191774, - 40.90671260779596, - 57.81882237238361, - 93.4250359257492 + 155.7216796875, + 95.029296875, + 190.3984375, + 48.248046875 ], "rotation": 0.0, - "type": "polygon", + "type": "ellipse", "z_order": 0 } ], @@ -8104,113 +7051,136 @@ }, { "attributes": [], - "frame": 5, - "group": null, - "id": 108, - "label_id": 66, - "shapes": [ - { - "attributes": [], - "frame": 5, - "id": 437, - "occluded": false, - "outside": false, - "points": [ - 56.70821030480572, - 38.20037623588232, - 63.18175989344238, - 41.73070749428784, - 2.4862395912330637, - 63.95431832704548 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, + "elements": [ { "attributes": [], - "frame": 6, - "id": 438, - "occluded": false, - "outside": false, - "points": [ - 12.005563467361247, - 51.17651673396597, - 26.65775387838101, - 83.60637658227678, - 9.37445361764302, - 98.39883962537608, - 11.544015694368825, - 82.39090054978801, - 86.56240502418258, - 88.15659541170685 + "frame": 0, + "group": 0, + "id": 128, + "label_id": 67, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 521, + "occluded": false, + "outside": false, + "points": [ + 520.1542352225897, + 152.06408387350893 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 1, + "id": 522, + "occluded": false, + "outside": true, + "points": [ + 492.0205078125, + 63.7373046875 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 + "source": "manual" }, { "attributes": [], - "frame": 7, - "id": 439, - "occluded": false, - "outside": false, - "points": [ - 27.49753431280614, - 52.642159328363334, - 88.61671771042018, - 29.506649953484164, - 99.84757744084266, - 66.51086041463735, - 98.64123905514187, - 80.21191374336696, - 12.032866200086401, - 59.74691350332406 + "frame": 0, + "group": 0, + "id": 129, + "label_id": 68, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 523, + "occluded": true, + "outside": false, + "points": [ + 596.0508429024103, + 183.0313881112852 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 1, + "id": 524, + "occluded": true, + "outside": true, + "points": [ + 567.9171154923206, + 94.70460892527626 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 + "source": "manual" }, { "attributes": [], - "frame": 8, - "id": 440, - "occluded": false, - "outside": false, - "points": [ - 45.66798986781423, - 4.961587842360249, - 28.891554322880264, - 88.49284935388283, - 42.04171004313141, - 52.41974372296537, - 79.88779494689628, - 78.70227858399868, - 3.134998177462567, - 60.093270566831016 + "frame": 0, + "group": 0, + "id": 130, + "label_id": 69, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 525, + "occluded": false, + "outside": true, + "points": [ + 529.1238333204674, + 202.44372862649288 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 1, + "id": 526, + "occluded": false, + "outside": true, + "points": [ + 500.9901059103777, + 114.11694944048395 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, + "source": "manual" + } + ], + "frame": 0, + "group": 0, + "id": 127, + "label_id": 66, + "shapes": [ { "attributes": [], - "frame": 9, - "id": 441, + "frame": 0, + "id": 520, "occluded": false, "outside": false, - "points": [ - 69.62777852757223, - 25.046431964099458, - 59.00496511489233, - 12.15728994349642, - 10.618682601907793, - 27.135941155386135, - 24.750684503833043, - 72.1563422338744 - ], + "points": [], "rotation": 0.0, - "type": "polygon", + "type": "skeleton", "z_order": 0 } ], diff --git a/tests/python/shared/assets/cvat_db/data.json b/tests/python/shared/assets/cvat_db/data.json index 81b265b794c3..80352bbbb123 100644 --- a/tests/python/shared/assets/cvat_db/data.json +++ b/tests/python/shared/assets/cvat_db/data.json @@ -6767,7 +6767,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[48.12463059940514, 49.56415639855863, 86.72866669447971, 79.88534367799434]", + "points": "[86.7275390625, 94.7099609375, 125.33157515757557, 125.03114821693453]", "rotation": 0.0, "parent": null } @@ -6785,7 +6785,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[1.973846331831547, 45.77202532553066, 19.359541493051733, 49.59142754572273]", + "points": "[227.0458984375, 60.1220703125, 244.4315935987197, 83.61393346786463]", "rotation": 0.0, "parent": null } @@ -6821,7 +6821,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[20.82859485196533, 20.20284211999498, 65.06449540153316, 36.586720678222335]", + "points": "[103.267578125, 67.3115234375, 147.5034786745673, 83.69540199572657]", "rotation": 0.0, "parent": null } @@ -6839,7 +6839,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[33.79061149513946, 8.697799034160319, 66.8603743960803, 56.40259427136259]", + "points": "[144.3642578125, 56.4599609375, 177.434020713441, 104.16475617470314]", "rotation": 0.0, "parent": null } @@ -6875,7 +6875,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[40.84676019536735, 49.73369769438821, 86.55210348083034, 92.67464655715418]", + "points": "[144.2236328125, 51.0419921875, 189.92897609796273, 93.98294105026616]", "rotation": 0.0, "parent": null } @@ -6893,7 +6893,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[6.6512404187989596, 48.608637853937424, 38.47957672845558, 63.01814316203485]", + "points": "[7.3056640625, 91.791015625, 39.13400037215615, 106.20052093309823]", "rotation": 0.0, "parent": null } @@ -6911,7 +6911,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[34.8591781560674, 46.909805505807725, 62.76884975235831, 71.15370887744085]", + "points": "[80.0048828125, 95.9814453125, 107.91455440878963, 120.22534868413277]", "rotation": 0.0, "parent": null } @@ -6965,7 +6965,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[47.74069002745097, 8.979945307737525, 75.09009579972003, 49.944377666156775]", + "points": "[158.3134765625, 35.8056640625, 185.66288233476917, 76.7700964209198]", "rotation": 0.0, "parent": null } @@ -6983,7 +6983,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[31.519108441498556, 11.487384732875865, 33.9677855625604, 11.741460365690042]", + "points": "[131.6240234375, 38.3125, 162.9044921875011, 69.3251953125]", "rotation": 0.0, "parent": null } @@ -7055,7 +7055,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[8.238478163045936, 30.506885409533453, 24.199550828477328, 52.470067436160306]", + "points": "[156.10546875, 34.4326171875, 172.06654141543186, 56.39579921412769]", "rotation": 0.0, "parent": null } @@ -7073,7 +7073,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[48.699397805843304, 25.414220926373016, 98.21088655300638, 74.12108955171448]", + "points": "[61.78515625, 90.8427734375, 111.29664499716273, 139.54964206284058]", "rotation": 0.0, "parent": null } @@ -7109,7 +7109,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[8.39848796382615, 21.848706178190497, 34.06199388884364, 58.755093781932075]", + "points": "[126.8232421875, 45.4033203125, 152.48674811251658, 82.30970791624168]", "rotation": 0.0, "parent": null } @@ -7168,42 +7168,6 @@ "parent": null } }, -{ - "model": "engine.labeledshape", - "pk": 485, - "fields": { - "job": 27, - "label": 66, - "frame": 2, - "group": null, - "source": "manual", - "type": "rectangle", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[29.29325796839885, 17.76290795533808, 42.188980213015164, 19.15690194174448]", - "rotation": 0.0, - "parent": null - } -}, -{ - "model": "engine.labeledshape", - "pk": 486, - "fields": { - "job": 27, - "label": 64, - "frame": 3, - "group": null, - "source": "manual", - "type": "rectangle", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[12.900324218921977, 31.61197536878121, 14.59391078431892, 36.29094511026649]", - "rotation": 0.0, - "parent": null - } -}, { "model": "engine.labeledshape", "pk": 487, @@ -7253,7 +7217,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[25.14030189623754, 5.6733962996246055, 38.20236513837561, 50.107446648679]", + "points": "[85.333984375, 107.0869140625, 98.39604761713781, 151.52096441155481]", "rotation": 0.0, "parent": null } @@ -7271,7 +7235,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[31.485093194422202, 6.652309747763773, 78.90159992771716, 50.14729730944946]", + "points": "[128.3193359375, 38.0576171875, 175.73584267079605, 81.55260474918578]", "rotation": 0.0, "parent": null } @@ -7289,7 +7253,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[30.907609343908867, 26.920657464053736, 61.021803468648315, 34.33466966738635]", + "points": "[76.052734375, 22.341796875, 106.16692849973879, 29.755809078333186]", "rotation": 0.0, "parent": null } @@ -7325,7 +7289,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[16.097754035046485, 4.573647979622352, 58.8933879574248, 31.93095871390559]", + "points": "[188.908203125, 145.0830078125, 231.70383704737833, 172.4403185467836]", "rotation": 0.0, "parent": null } @@ -7366,24 +7330,6 @@ "parent": null } }, -{ - "model": "engine.labeledshape", - "pk": 496, - "fields": { - "job": 27, - "label": 64, - "frame": 2, - "group": null, - "source": "manual", - "type": "rectangle", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[9.23320240197188, 14.307138152377041, 25.845440820735742, 44.032847830632605]", - "rotation": 0.0, - "parent": null - } -}, { "model": "engine.labeledshape", "pk": 497, @@ -7397,25 +7343,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[24.730337557305866, 29.62228497877787, 29.24857191530591, 70.68451297781645]", - "rotation": 0.0, - "parent": null - } -}, -{ - "model": "engine.labeledshape", - "pk": 498, - "fields": { - "job": 27, - "label": 64, - "frame": 4, - "group": null, - "source": "manual", - "type": "rectangle", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[2.1121019722181886, 13.869054700136441, 11.324617420574125, 19.972173011282173]", + "points": "[258.3095703125, 24.3876953125, 295.5791015625, 65.44992331153844]", "rotation": 0.0, "parent": null } @@ -7433,7 +7361,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[40.030467384964794, 14.766168952345382, 56.1585086234919, 33.38318513200221]", + "points": "[148.640625, 86.0830078125, 164.76866623852766, 104.7000239921581]", "rotation": 0.0, "parent": null } @@ -7451,7 +7379,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[22.669744730593095, 49.829940784412905, 49.045918115614874, 92.87818219175908]", + "points": "[156.1435546875, 55.7177734375, 182.5197280725224, 98.7660148448449]", "rotation": 0.0, "parent": null } @@ -7469,7 +7397,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[35.06714303007967, 34.81749603873695, 72.81534706452, 60.62236529733499]", + "points": "[57.3134765625, 22.38671875, 95.06168059694028, 48.191588008598046]", "rotation": 0.0, "parent": null } @@ -7487,7 +7415,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[33.949231044002076, 43.79253250986025, 54.84733296216899, 62.44618575550419]", + "points": "[97.4140625, 100.0615234375, 118.3121644181665, 118.715176683143]", "rotation": 0.0, "parent": null } @@ -7505,7 +7433,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[15.01664682667706, 24.951413716977832, 34.52619994974882, 60.389045841248674]", + "points": "[128.20703125, 25.60546875, 147.7165843730727, 61.04310087427075]", "rotation": 0.0, "parent": null } @@ -7523,7 +7451,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[19.74201544469132, 30.437730521261773, 43.478177450860585, 38.85138665770247]", + "points": "[79.2822265625, 144.9013671875, 103.01838856866925, 190.00175781250073]", "rotation": 0.0, "parent": null } @@ -7546,24 +7474,6 @@ "parent": null } }, -{ - "model": "engine.labeledshape", - "pk": 506, - "fields": { - "job": 27, - "label": 63, - "frame": 2, - "group": 0, - "source": "manual", - "type": "ellipse", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[535.3916015625, 94.59912109375, 570.72265625, 66.46484375]", - "rotation": 0.0, - "parent": null - } -}, { "model": "engine.labeledshape", "pk": 507, @@ -7577,7 +7487,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[401.25005136424625, 21.437188999945647, 401.25005136424625, 86.07529491001696, 476.49277230117514, 21.30941055245239, 476.49277230117514, 86.1453633191959, 482.3813022073682, 17.222011508036303, 482.3813022073682, 81.74829255695477, 407.4789834561907, 17.36159481238974, 407.4789834561907, 81.69191156113993]", + "points": "[401.25005136424625, 29.26962500657828, 401.25005136424625, 86.07529491000787, 468.64120980117514, 29.176652377986102, 468.64120980117514, 86.13805169507759, 474.5653626349449, 25.052984757909144, 474.5653626349449, 81.74240928838844, 407.47898345618705, 25.156734879141368, 407.47898345618705, 81.69191156110719]", "rotation": 0.0, "parent": null } @@ -7987,18 +7897,6 @@ "parent": null } }, -{ - "model": "engine.labeledtrack", - "pk": 121, - "fields": { - "job": 27, - "label": 63, - "frame": 0, - "group": 0, - "source": "manual", - "parent": null - } -}, { "model": "engine.labeledtrack", "pk": 122, @@ -8037,16 +7935,64 @@ }, { "model": "engine.labeledtrack", - "pk": 125, + "pk": 126, "fields": { "job": 27, "label": 63, + "frame": 1, + "group": 0, + "source": "manual", + "parent": null + } +}, +{ + "model": "engine.labeledtrack", + "pk": 127, + "fields": { + "job": 27, + "label": 66, "frame": 0, "group": 0, "source": "manual", "parent": null } }, +{ + "model": "engine.labeledtrack", + "pk": 128, + "fields": { + "job": 27, + "label": 67, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 127 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 129, + "fields": { + "job": 27, + "label": 68, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 127 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 130, + "fields": { + "job": 27, + "label": 69, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 127 + } +}, { "model": "engine.labeledtrackattributeval", "pk": 3, @@ -8353,7 +8299,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[89.16625482373604, 10.760448971018688, 21.130943971024195, 33.264143636745125, 82.08266620234568, 57.27050026015028, 31.61462894960768, 91.61837979864868, 61.318808891867995, 5.2591005982589145]", + "points": "[89.16625482373604, 10.760448971018688, 82.08266620234568, 57.27050026015028, 31.61462894960768, 91.61837979864868, 61.318808891867995, 5.2591005982589145]", "rotation": 0.0, "track": 107, "frame": 1 @@ -8381,7 +8327,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[43.844133439202515, 52.766337685192056, 36.06107102732473, 41.86726929430576, 10.476592440122644, 76.08071328170251, 12.350073636556836, 42.14361527808913, 20.030324015224398, 97.33574207745058]", + "points": "[43.844133439202515, 52.766337685192056, 36.06107102732473, 41.86726929430576, 10.476592440122644, 76.08071328170251, 20.030324015224398, 97.33574207745058]", "rotation": 0.0, "track": 107, "frame": 3 @@ -8395,7 +8341,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[46.32363927321131, 89.27799405888287, 11.543344424530844, 28.859146282381133, 39.954518702075006, 7.7721058829602345, 89.55146184028104, 41.32407558272474, 65.71210278333133, 4.723941407484478]", + "points": "[46.323639273210574, 89.27799405888254, 11.543344424530005, 28.859146282380607, 53.30000000000109, 47.30000000000109]", "rotation": 0.0, "track": 107, "frame": 4 @@ -8465,7 +8411,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[60.89406682712508, 49.404300661462685, 10.175918797036033, 22.69300466402857, 13.636722568044934, 24.9397151458307, 20.52105176191774, 40.90671260779596, 57.81882237238361, 93.4250359257492]", + "points": "[60.894066827124334, 49.40430066146291, 10.175918797036502, 22.693004664028194, 20.521051761917988, 40.90671260779527, 57.81882237238278, 93.4250359257494]", "rotation": 0.0, "track": 107, "frame": 9 @@ -8493,7 +8439,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[12.005563467361247, 51.17651673396597, 26.65775387838101, 83.60637658227678, 9.37445361764302, 98.39883962537608, 11.544015694368825, 82.39090054978801, 86.56240502418258, 88.15659541170685]", + "points": "[12.005563467360844, 51.1765167339654, 40.80000000000109, 97.10000000000036, 86.56240502418223, 88.1565954117068]", "rotation": 0.0, "track": 108, "frame": 6 @@ -8507,7 +8453,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[27.49753431280614, 52.642159328363334, 88.61671771042018, 29.506649953484164, 99.84757744084266, 66.51086041463735, 98.64123905514187, 80.21191374336696, 12.032866200086401, 59.74691350332406]", + "points": "[27.497534312806238, 52.64215932836305, 44.80000000000109, 9.200000000000728, 79.60000000000036, 22.700000000000728, 71.20000000000073, 50.100000000000364, 12.032866200086573, 59.74691350332432]", "rotation": 0.0, "track": 108, "frame": 7 @@ -8521,7 +8467,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[45.66798986781423, 4.961587842360249, 28.891554322880264, 88.49284935388283, 42.04171004313141, 52.41974372296537, 79.88779494689628, 78.70227858399868, 3.134998177462567, 60.093270566831016]", + "points": "[45.66798986781396, 4.961587842361041, 121.20000000000073, 49.80000000000109, 81.60000000000036, 51.600000000000364]", "rotation": 0.0, "track": 108, "frame": 8 @@ -8563,7 +8509,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[46.51991234215712, 46.432609873899786, 45.655675472283754, 16.25754165859492, 43.56714102707272, 49.98897944826618, 5.709001866044616, 94.02221983606873, 50.4674845929161, 3.8063308724888167]", + "points": "[81.20000000000073, 43.20000000000073, 58.70000000000073, 40.5, 43.567141027073376, 49.988979448266036, 5.709001866043764, 94.02221983606796, 50.46748459291666, 3.8063308724886156]", "rotation": 0.0, "track": 117, "frame": 5 @@ -8605,7 +8551,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[20.627812291540625, 77.71815966193307, 21.07255019421953, 54.89527252097782, 44.701168842121064, 35.54993705233812, 21.962376189353606, 41.33264342135886]", + "points": "[20.627812291540977, 77.7181596619339, 32.80000000000109, 51.0, 44.70116884212075, 35.549937052337555, 21.962376189354472, 41.332643421359535]", "rotation": 0.0, "track": 117, "frame": 9 @@ -8631,9 +8577,9 @@ "fields": { "type": "polygon", "occluded": false, - "outside": false, + "outside": true, "z_order": 0, - "points": "[20.40678024726209, 91.07758232974479, 91.93855431428733, 55.64212246699361, 98.18754824554128, 2.366735096391437]", + "points": "[20.40678024726185, 91.07758232974447, 91.9385543142871, 55.6421224669939, 50.400000000001455, 41.600000000000364]", "rotation": 0.0, "track": 118, "frame": 2 @@ -8661,7 +8607,7 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[22.622019526627223, 62.31679157489255, 7.435732676703511, 0.9774883731428763, 33.48515389987684, 67.80446095923271, 29.811309771691985, 27.34743520630969, 94.97786135262317, 92.53355214231964]", + "points": "[33.48515389987733, 67.80446095923253, 59.900000000001455, 62.0, 94.97786135262322, 92.53355214232033]", "rotation": 0.0, "track": 118, "frame": 4 @@ -8675,7 +8621,7 @@ "occluded": true, "outside": false, "z_order": 0, - "points": "[0.8530259402693807, 44.13296596268512, 92.264556499544, 81.80448766928922, 31.08882580838178, 20.301451961901908, 31.47038000360235, 96.67947680961973]", + "points": "[0.8530259402687079, 44.132965962684466, 92.26455649954369, 81.8044876692893, 58.600000000000364, 91.60000000000036, 31.47038000360226, 96.67947680962061]", "rotation": 0.0, "track": 118, "frame": 6 @@ -8751,27 +8697,13 @@ "frame": 4 } }, -{ - "model": "engine.trackedshape", - "pk": 497, - "fields": { - "type": "cuboid", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[266.92653575077566, 24.86851007975565, 266.92653575077566, 117.68501668390672, 300.94915298655724, 24.760093290749865, 300.94915298655724, 117.68501668383215, 304.35141471013594, 16.30584444966371, 304.35141471013594, 109.01393426480536, 270.40413416463343, 16.423849249653358, 270.40413416463343, 109.02402735721262]", - "rotation": 0.0, - "track": 121, - "frame": 0 - } -}, { "model": "engine.trackedshape", "pk": 498, "fields": { "type": "points", "occluded": false, - "outside": false, + "outside": true, "z_order": 0, "points": "[153.27734375, 110.2919921875]", "rotation": 0.0, @@ -8813,7 +8745,7 @@ "fields": { "type": "points", "occluded": true, - "outside": false, + "outside": true, "z_order": 0, "points": "[229.1739514298206, 141.25929642527626]", "rotation": 0.0, @@ -8893,100 +8825,170 @@ }, { "model": "engine.trackedshape", - "pk": 508, + "pk": 513, "fields": { - "type": "ellipse", - "occluded": false, - "outside": false, + "type": "polygon", + "occluded": true, + "outside": true, "z_order": 0, - "points": "[457.9970703125, 146.17578125, 492.673828125, 99.39453125]", + "points": "[46.487048928881734, 74.79726052811286, 58.89940649861379, 63.46132083800071, 79.97978567976963, 37.370343440303344, 0.9690229199726064, 94.25236542125029]", "rotation": 0.0, - "track": 125, - "frame": 0 + "track": 118, + "frame": 9 } }, { "model": "engine.trackedshape", - "pk": 509, + "pk": 518, "fields": { "type": "ellipse", "occluded": false, "outside": false, "z_order": 0, - "points": "[628.1103515625, 72.896484375, 662.787109375, 26.115234375]", + "points": "[155.7216796875, 95.029296875, 190.3984375, 48.248046875]", "rotation": 0.0, - "track": 125, + "track": 126, "frame": 1 } }, { "model": "engine.trackedshape", - "pk": 510, + "pk": 519, "fields": { "type": "ellipse", "occluded": false, - "outside": false, + "outside": true, "z_order": 0, - "points": "[101.4140625, 125.2392578125, 136.0908203125, 78.4580078125]", + "points": "[155.7216796875, 95.029296875, 190.3984375, 48.248046875]", "rotation": 0.0, - "track": 125, + "track": 126, "frame": 2 } }, { "model": "engine.trackedshape", - "pk": 511, + "pk": 520, "fields": { - "type": "ellipse", + "type": "skeleton", "occluded": false, "outside": false, "z_order": 0, - "points": "[142.6337890625, 241.046875, 177.310546875, 194.265625]", + "points": "[]", "rotation": 0.0, - "track": 125, - "frame": 3 + "track": 127, + "frame": 0 } }, { "model": "engine.trackedshape", - "pk": 512, + "pk": 521, "fields": { - "type": "ellipse", + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[520.1542352225897, 152.06408387350893]", + "rotation": 0.0, + "track": 128, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 522, + "fields": { + "type": "points", "occluded": false, "outside": true, "z_order": 0, - "points": "[142.6337890625, 241.046875, 177.310546875, 194.265625]", + "points": "[492.0205078125, 63.7373046875]", "rotation": 0.0, - "track": 125, - "frame": 4 + "track": 128, + "frame": 1 } }, { "model": "engine.trackedshape", - "pk": 513, + "pk": 523, "fields": { - "type": "polygon", + "type": "points", + "occluded": true, + "outside": false, + "z_order": 0, + "points": "[596.0508429024103, 183.0313881112852]", + "rotation": 0.0, + "track": 129, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 524, + "fields": { + "type": "points", "occluded": true, "outside": true, "z_order": 0, - "points": "[46.487048928881734, 74.79726052811286, 58.89940649861379, 63.46132083800071, 79.97978567976963, 37.370343440303344, 0.9690229199726064, 94.25236542125029]", + "points": "[567.9171154923206, 94.70460892527626]", "rotation": 0.0, - "track": 118, - "frame": 9 + "track": 129, + "frame": 1 } }, { "model": "engine.trackedshape", - "pk": 514, + "pk": 525, "fields": { - "type": "cuboid", + "type": "points", "occluded": false, "outside": true, "z_order": 0, - "points": "[266.92653575077566, 24.86851007975565, 266.92653575077566, 117.68501668390672, 300.94915298655724, 24.760093290749865, 300.94915298655724, 117.68501668383215, 304.35141471013594, 16.30584444966371, 304.35141471013594, 109.01393426480536, 270.40413416463343, 16.423849249653358, 270.40413416463343, 109.02402735721262]", + "points": "[529.1238333204674, 202.44372862649288]", "rotation": 0.0, - "track": 121, - "frame": 4 + "track": 130, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 526, + "fields": { + "type": "points", + "occluded": false, + "outside": true, + "z_order": 0, + "points": "[500.9901059103777, 114.11694944048395]", + "rotation": 0.0, + "track": 130, + "frame": 1 + } +}, +{ + "model": "engine.trackedshape", + "pk": 537, + "fields": { + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[87.33181179665189, 59.56175666774834, 76.08181179665189, 58.21175666774798, 68.51538231018822, 62.956246391880995, 42.400000000001455, 40.600000000000364, 58.405383111883566, 28.931516600745454]", + "rotation": 0.0, + "track": 117, + "frame": 6 + } +}, +{ + "model": "engine.trackedshape", + "pk": 538, + "fields": { + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[68.90000000000146, 93.90000000000146, 76.08227824977257, 71.90224383464374, 63.03334358050233, 56.41750205211065, 32.477766951740705, 82.24196888442566]", + "rotation": 0.0, + "track": 118, + "frame": 5 } }, { From c1614ceb43d14777ab76d63c04995311b037a007 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 18 Apr 2023 23:19:56 +0300 Subject: [PATCH 022/257] Fix job dirs creation --- cvat/apps/dataset_manager/bindings.py | 4 ++-- cvat/apps/engine/backup.py | 3 ++- cvat/apps/engine/models.py | 6 ++++++ cvat/apps/engine/serializers.py | 4 +++- cvat/apps/engine/task.py | 6 +----- cvat/apps/engine/views.py | 4 +++- tests/python/rest_api/test_jobs.py | 20 ++++++++++++++++-- .../shared/assets/cvat_db/cvat_data.tar.bz2 | Bin 1130078 -> 890217 bytes 8 files changed, 35 insertions(+), 12 deletions(-) diff --git a/cvat/apps/dataset_manager/bindings.py b/cvat/apps/dataset_manager/bindings.py index 894208247f03..5a7d6013c42e 100644 --- a/cvat/apps/dataset_manager/bindings.py +++ b/cvat/apps/dataset_manager/bindings.py @@ -173,8 +173,8 @@ class CommonData(InstanceLabelData): TrackedShape = namedtuple( 'TrackedShape', 'type, frame, points, occluded, outside, keyframe, attributes, rotation, source, group, z_order, label, track_id, elements, id') TrackedShape.__new__.__defaults__ = (0, 'manual', 0, 0, None, 0, [], None) - Track = namedtuple('Track', 'id, label, group, source, shapes, elements') - Track.__new__.__defaults__ = ([], ) + Track = namedtuple('Track', 'label, group, source, shapes, elements, id') + Track.__new__.__defaults__ = ([], None) Tag = namedtuple('Tag', 'frame, label, attributes, source, group, id') Tag.__new__.__defaults__ = (0, None) Frame = namedtuple( diff --git a/cvat/apps/engine/backup.py b/cvat/apps/engine/backup.py index 0ec2e8e4b5aa..286df0ff6f6a 100644 --- a/cvat/apps/engine/backup.py +++ b/cvat/apps/engine/backup.py @@ -512,7 +512,8 @@ def _create_annotations(self, db_job, annotations): @staticmethod def _calculate_segment_size(jobs): - jobs = [j for j in jobs if j["type"] == models.JobType.NORMAL] + # The type field will be missing in backups create before the GT jobs were introduced + jobs = [j for j in jobs if j.get("type", models.JobType.NORMAL) == models.JobType.NORMAL] segment_size = jobs[0]['stop_frame'] - jobs[0]['start_frame'] + 1 overlap = 0 if len(jobs) == 1 else jobs[0]['stop_frame'] - jobs[1]['start_frame'] + 1 diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index 5db0d6ca21c3..e83007fb385a 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -628,6 +628,12 @@ def clean(self) -> None: return super().clean() + def make_dirs(self): + job_path = self.get_dirname() + if os.path.isdir(job_path): + shutil.rmtree(job_path) + os.makedirs(job_path) + class InvalidLabel(ValueError): pass diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index 9e519431adf9..5d9676095470 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -674,7 +674,9 @@ def create(self, validated_data): validated_data['segment'] = segment try: - return super().create(validated_data) + job = super().create(validated_data) + job.make_dirs() + return job except models.TaskGroundTruthJobsLimitError as ex: raise serializers.ValidationError(ex.message) from ex diff --git a/cvat/apps/engine/task.py b/cvat/apps/engine/task.py index 64c3d7050a73..87a1bd50374f 100644 --- a/cvat/apps/engine/task.py +++ b/cvat/apps/engine/task.py @@ -151,11 +151,7 @@ def _save_task_to_db(db_task: models.Task, *, job_file_mapping: Optional[JobFile db_job = models.Job(segment=db_segment) db_job.save() - - job_path = db_job.get_dirname() - if os.path.isdir(job_path): - shutil.rmtree(job_path) - os.makedirs(job_path) + db_job.make_dirs() db_task.data.save() db_task.save() diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index d706849bfc31..5316fae36051 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -1547,7 +1547,9 @@ def dataset_export(self, request, pk): responses={ '200': OpenApiResponse(OpenApiTypes.BINARY, description='Data of a specific type'), }) - @action(detail=True, methods=['GET']) + @action(detail=True, methods=['GET'], + simple_filters=[] # type query parameter conflicts with the filter + ) def data(self, request, pk): db_job = self.get_object() # call check_object_permissions as well data_type = request.query_params.get('type', None) diff --git a/tests/python/rest_api/test_jobs.py b/tests/python/rest_api/test_jobs.py index f9e91400c8af..13e9fb6ffca9 100644 --- a/tests/python/rest_api/test_jobs.py +++ b/tests/python/rest_api/test_jobs.py @@ -626,7 +626,17 @@ def _test_get_job_annotations_200(self, user, jid, data, **kwargs): response_data = json.loads(response.data) assert ( - DeepDiff(data, response_data, exclude_regex_paths=r"root\['version|updated_date'\]") + DeepDiff( + data, + response_data, + ignore_order=True, + exclude_regex_paths=[ + r"root\['version|updated_date'\]", + r"root(\['\w+'\]\[\d+\])+\['id'\]", + r"root(\['\w+'\]\[\d+\])+\['label_id'\]", + r"root(\['\w+'\]\[\d+\])+\['attributes'\]\[\d+\]\['spec_id'\]", + ], + ) == {} ) @@ -773,7 +783,13 @@ def _check_response(self, username, jid, expect_success, data=None, org=None): DeepDiff( data, json.loads(response.data), - exclude_regex_paths=r"root\['version|updated_date'\]", + ignore_order=True, + exclude_regex_paths=[ + r"root\['version|updated_date'\]", + r"root(\['\w+'\]\[\d+\])+\['id'\]", + r"root(\['\w+'\]\[\d+\])+\['label_id'\]", + r"root(\['\w+'\]\[\d+\])+\['attributes'\]\[\d+\]\['spec_id'\]", + ], ) == {} ) diff --git a/tests/python/shared/assets/cvat_db/cvat_data.tar.bz2 b/tests/python/shared/assets/cvat_db/cvat_data.tar.bz2 index 35ad52990b75e8d043297b5833f10d338bd4a452..640871f98a616fdee9a39d323c3db817310fc36b 100644 GIT binary patch literal 890217 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

kd$oq3O68cKIb6fvAOTQE@Sz|NLdZKF5Dl@A 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

^+ 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

)OUwG$q-kG_@_$|E% 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 Hd_Met^-;Mz literal 1130078 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

MK63>W5f`5?EsP8F_5YT#f2pKd_2ie3_ilD^HBN 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 (j(yh_O`v0tJ`s>K{SGh6* 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%0DBWL!8` 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

ck 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 z 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.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 ZojfDTpAye?WYA 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

~ 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%0AuK_2R#;`z%q4Y>kab^40$CK`NTE#=H|!>&&C7 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⁣7p$=#pS4TppkBG|z< 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

N5g=nu%u&l5o#DLBb0>%WxuIzBnM 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 B#N7Y@ From 56893f849c60fc5ffe56a985012cfdae5a8913b4 Mon Sep 17 00:00:00 2001 From: klakhov Date: Wed, 19 Apr 2023 11:05:07 +0300 Subject: [PATCH 023/257] added analytics page, empty quality page --- cvat-core/src/session.ts | 45 +++++---- .../components/actions-menu/actions-menu.tsx | 13 ++- cvat-ui/src/components/cvat-app.tsx | 2 + .../quality/empty-quality.tsx | 46 +++++++++ .../quality/task-quality-component.tsx | 28 ++++++ .../task-analytics-page/styles.scss | 22 +++++ .../task-analytics-page.tsx | 97 +++++++++++++++++++ cvat-ui/src/components/task-page/job-list.tsx | 6 +- cvat-ui/src/components/task-page/top-bar.tsx | 14 ++- .../src/components/tasks-page/task-item.tsx | 12 ++- .../containers/actions-menu/actions-menu.tsx | 5 +- 11 files changed, 259 insertions(+), 31 deletions(-) create mode 100644 cvat-ui/src/components/task-analytics-page/quality/empty-quality.tsx create mode 100644 cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx create mode 100644 cvat-ui/src/components/task-analytics-page/styles.scss create mode 100644 cvat-ui/src/components/task-analytics-page/task-analytics-page.tsx diff --git a/cvat-core/src/session.ts b/cvat-core/src/session.ts index 91df825d6018..721fd0d46eb9 100644 --- a/cvat-core/src/session.ts +++ b/cvat-core/src/session.ts @@ -723,29 +723,28 @@ export class Task extends Session { if (Array.isArray(initialData.jobs)) { for (const job of initialData.jobs) { - if (job.type === JobType.NORMAL) { - const jobInstance = new Job({ - url: job.url, - id: job.id, - assignee: job.assignee, - state: job.state, - stage: job.stage, - start_frame: job.start_frame, - stop_frame: job.stop_frame, - - // following fields also returned when doing API request /jobs/ - // here we know them from task and append to constructor - task_id: data.id, - project_id: data.project_id, - labels: data.labels, - bug_tracker: data.bug_tracker, - mode: data.mode, - dimension: data.dimension, - data_compressed_chunk_type: data.data_compressed_chunk_type, - data_chunk_size: data.data_chunk_size, - }); - data.jobs.push(jobInstance); - } + const jobInstance = new Job({ + url: job.url, + id: job.id, + assignee: job.assignee, + state: job.state, + stage: job.stage, + type: job.type, + start_frame: job.start_frame, + stop_frame: job.stop_frame, + + // following fields also returned when doing API request /jobs/ + // here we know them from task and append to constructor + task_id: data.id, + project_id: data.project_id, + labels: data.labels, + bug_tracker: data.bug_tracker, + mode: data.mode, + dimension: data.dimension, + data_compressed_chunk_type: data.data_compressed_chunk_type, + data_chunk_size: data.data_chunk_size, + }); + data.jobs.push(jobInstance); } } diff --git a/cvat-ui/src/components/actions-menu/actions-menu.tsx b/cvat-ui/src/components/actions-menu/actions-menu.tsx index 0fe59c8d370e..62426c332684 100644 --- a/cvat-ui/src/components/actions-menu/actions-menu.tsx +++ b/cvat-ui/src/components/actions-menu/actions-menu.tsx @@ -35,6 +35,7 @@ export enum Actions { MOVE_TASK_TO_PROJECT = 'move_task_to_project', OPEN_BUG_TRACKER = 'open_bug_tracker', BACKUP_TASK = 'backup_task', + VIEW_ANALYTICS = 'view_analytics', } function ActionsMenuComponent(props: Props): JSX.Element { @@ -107,10 +108,18 @@ function ActionsMenuComponent(props: Props): JSX.Element { ), 40]); + menuItems.push([( + + View analytics + + ), 50]); + if (projectID === null) { menuItems.push([( Move to project - ), 50]); + ), 60]); } menuItems.push([( @@ -118,7 +127,7 @@ function ActionsMenuComponent(props: Props): JSX.Element { Delete - ), 60]); + ), 70]); menuItems.push( ...plugins.map(({ component: Component, weight }, index) => { diff --git a/cvat-ui/src/components/cvat-app.tsx b/cvat-ui/src/components/cvat-app.tsx index 711908c1c6ea..09f24160085d 100644 --- a/cvat-ui/src/components/cvat-app.tsx +++ b/cvat-ui/src/components/cvat-app.tsx @@ -74,6 +74,7 @@ import EmailVerificationSentPage from './email-confirmation-pages/email-verifica import IncorrectEmailConfirmationPage from './email-confirmation-pages/incorrect-email-confirmation'; import CreateModelPage from './create-model-page/create-model-page'; import CreateJobPage from './create-job-page/create-job-page'; +import TaskAnalyticsPage from './task-analytics-page/task-analytics-page'; interface CVATAppProps { loadFormats: () => void; @@ -461,6 +462,7 @@ class CVATApplication extends React.PureComponent + diff --git a/cvat-ui/src/components/task-analytics-page/quality/empty-quality.tsx b/cvat-ui/src/components/task-analytics-page/quality/empty-quality.tsx new file mode 100644 index 000000000000..3f47ae1897c5 --- /dev/null +++ b/cvat-ui/src/components/task-analytics-page/quality/empty-quality.tsx @@ -0,0 +1,46 @@ +// Copyright (C) 2023 CVAT.ai Corporation +// +// SPDX-License-Identifier: MIT + +import './styles.scss'; + +import React from 'react'; +import { Link } from 'react-router-dom'; +import Text from 'antd/lib/typography/Text'; +import Empty from 'antd/lib/empty'; +import { Col, Row } from 'antd/lib/grid'; + +interface Props { + taskId: number, +} + +function EmptyQualityComponent(props: Props): JSX.Element { + const { taskId } = props; + + return ( +

+ ); +} + +export default React.memo(EmptyQualityComponent); diff --git a/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx b/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx new file mode 100644 index 000000000000..8f1d2054b259 --- /dev/null +++ b/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx @@ -0,0 +1,28 @@ +// Copyright (C) 2023 CVAT.ai Corporation +// +// SPDX-License-Identifier: MIT + +import './styles.scss'; + +import React from 'react'; +import { Job, JobType, Task } from 'cvat-core-wrapper'; +import EmptyQuality from './empty-quality'; + +interface Props { + task: Task, +} + +function TaskQualityComponent(props: Props): JSX.Element { + const { task } = props; + + const hasGTJob = task.jobs.some((job: Job) => job.type === JobType.GROUND_TRUTH); + if (!hasGTJob) { + return (); + } + + return ( +
hello
+ ); +} + +export default React.memo(TaskQualityComponent); diff --git a/cvat-ui/src/components/task-analytics-page/styles.scss b/cvat-ui/src/components/task-analytics-page/styles.scss new file mode 100644 index 000000000000..61715f66f6b3 --- /dev/null +++ b/cvat-ui/src/components/task-analytics-page/styles.scss @@ -0,0 +1,22 @@ +// Copyright (C) 2023 CVAT.ai Corporation +// +// SPDX-License-Identifier: MIT + +@import '../../base.scss'; + +.cvat-analytics-inner { + background: $background-color-1; + min-height: $grid-unit-size * 95; + padding: $grid-unit-size * 2; + + .ant-tabs { + height: 100%; + } +} + +.cvat-task-quality-page-empty { + display: flex; + justify-content: center; + align-items: center; + height: $grid-unit-size * 68; +} diff --git a/cvat-ui/src/components/task-analytics-page/task-analytics-page.tsx b/cvat-ui/src/components/task-analytics-page/task-analytics-page.tsx new file mode 100644 index 000000000000..5c49d1dca671 --- /dev/null +++ b/cvat-ui/src/components/task-analytics-page/task-analytics-page.tsx @@ -0,0 +1,97 @@ +// Copyright (C) 2023 CVAT.ai Corporation +// +// SPDX-License-Identifier: MIT + +import './styles.scss'; + +import React, { useEffect, useState } from 'react'; +import { Row, Col } from 'antd/lib/grid'; +import Tabs from 'antd/lib/tabs'; +import { useHistory, useParams } from 'react-router'; +import Text from 'antd/lib/typography/Text'; +import Spin from 'antd/lib/spin'; +import Button from 'antd/lib/button'; +import { Task } from 'reducers'; +import { notification } from 'antd'; +import { getCore } from 'cvat-core-wrapper'; +import { LeftOutlined } from '@ant-design/icons/lib/icons'; +import TaskQualityComponent from './quality/task-quality-component'; + +const core = getCore(); + +function TaskAnalyticsPage(): JSX.Element { + const [fetchingTask, setFetchingTask] = useState(true); + const [taskInstance, setTaskInstance] = useState(null); + + const history = useHistory(); + + const id = +useParams<{ id: string }>().id; + useEffect((): void => { + if (Number.isInteger(id)) { + core.tasks.get({ id }) + .then(([task]: Task[]) => { + if (task) { + setTaskInstance(task); + } + }).catch((error: Error) => { + notification.error({ + message: 'Could not fetch requested task from the server', + description: error.toString(), + }); + }).finally(() => { + setFetchingTask(false); + }); + } else { + notification.error({ + message: 'Could not receive the requested task from the server', + description: `Requested task id "${id}" is not valid`, + }); + setFetchingTask(false); + } + }, []); + return ( +
+ { + fetchingTask ? ( +
+ +
+ ) : ( + + + + + + + + Quality + + )} + key='quality' + > + + + + + + ) + } +
+ ); +} + +export default React.memo(TaskAnalyticsPage); diff --git a/cvat-ui/src/components/task-page/job-list.tsx b/cvat-ui/src/components/task-page/job-list.tsx index 16fe1b43b38c..75b68b28c99a 100644 --- a/cvat-ui/src/components/task-page/job-list.tsx +++ b/cvat-ui/src/components/task-page/job-list.tsx @@ -15,7 +15,7 @@ import Text from 'antd/lib/typography/Text'; import moment from 'moment'; import copy from 'copy-to-clipboard'; -import { Task, Job } from 'cvat-core-wrapper'; +import { Task, Job, JobType } from 'cvat-core-wrapper'; import { JobStage } from 'reducers'; import CVATTooltip from 'components/common/cvat-tooltip'; import UserSelector, { User } from './user-selector'; @@ -89,7 +89,9 @@ function JobListComponent(props: Props): JSX.Element { } = props; const history = useHistory(); - const { jobs, id: taskId } = taskInstance; + const { id: taskId } = taskInstance; + let { jobs } = taskInstance; + jobs = jobs.filter((job: Job) => job.type === JobType.NORMAL); function sorter(path: string) { return (obj1: any, obj2: any): number => { diff --git a/cvat-ui/src/components/task-page/top-bar.tsx b/cvat-ui/src/components/task-page/top-bar.tsx index 01542d619033..6a365caf255b 100644 --- a/cvat-ui/src/components/task-page/top-bar.tsx +++ b/cvat-ui/src/components/task-page/top-bar.tsx @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: MIT -import React from 'react'; +import React, { useCallback } from 'react'; import { useHistory } from 'react-router'; import { Row, Col } from 'antd/lib/grid'; import { LeftOutlined, MoreOutlined } from '@ant-design/icons'; @@ -21,6 +21,10 @@ export default function DetailsComponent(props: DetailsComponentProps): JSX.Elem const history = useHistory(); + const onViewAnalytics = useCallback(() => { + history.push(`/tasks/${taskInstance.id}/analytics`); + }, [history]); + return ( @@ -47,7 +51,13 @@ export default function DetailsComponent(props: DetailsComponentProps): JSX.Elem )} - }> + + )} + >
+ + ), + }, + { + title: 'Stage', + dataIndex: 'stage', + key: 'stage', + className: 'cvat-job-item-stage', + render: (jobInstance: any): JSX.Element => { + const { stage } = jobInstance; + + return ( +
+ {stage} +
+ ); + }, + sorter: sorter('stage.stage'), + filters: [ + { text: 'annotation', value: 'annotation' }, + { text: 'validation', value: 'validation' }, + { text: 'acceptance', value: 'acceptance' }, + ], + onFilter: (value: string | number | boolean, record: any) => record.stage.stage === value, + }, + { + title: 'Assignee', + dataIndex: 'assignee', + key: 'assignee', + className: 'cvat-job-item-assignee', + render: (jobInstance: any): JSX.Element => ( + {jobInstance?.assignee?.username} + ), + sorter: sorter('assignee.assignee.username'), + filters: collectUsers('assignee'), + onFilter: (value: string | number | boolean, record: any) => ( + record.assignee.assignee?.username || false + ) === value, + }, + { + title: 'Quality', + dataIndex: 'quality', + key: 'quality', + className: 'cvat-job-item-quality', + render: (jobInstance: Job): JSX.Element => ( + {jobsReports[jobInstance.id] ? jobsReports[jobInstance.id].summary.meanAccuracy : 0} + ), + }, + ]; + const data = jobs.reduce((acc: any[], job: any) => { + acc.push({ + key: job.id, + job: job.id, + stage: job, + assignee: job, + quality: job, + }); + + return acc; + }, []); + + return ( +
+ + + Jobs + + + + + + 'cvat-task-jobs-table-row'} + columns={columns} + dataSource={data} + size='small' + /> + + ); +} + +export default React.memo(JobListComponent); diff --git a/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx b/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx index 5f7c48fd6a4d..4e7cae85c76f 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx @@ -11,14 +11,26 @@ import Statistic from 'antd/lib/statistic'; import Card from 'antd/lib/card'; import moment from 'moment'; import { getColor } from 'utils/quality-color'; +import { QualityReport, Task } from 'cvat-core-wrapper'; +import { useSelector } from 'react-redux'; +import { CombinedState } from 'reducers'; -function MeanQuality(): JSX.Element { +interface Props { + task: Task; +} + +function MeanQuality(props: Props): JSX.Element { + const { task } = props; const data = { lastUpdatedTime: moment().fromNow(), summary: { meanAccuracy: 85, }, }; + const tasksReports: QualityReport[] = useSelector((state: CombinedState) => state.analytics.quality.tasksReports); + const taskReport = tasksReports.find((report: QualityReport) => report.taskId === task.id); + console.log(taskReport?.summary.meanAccuracy); + return ( diff --git a/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx b/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx index 558dd1cd9237..4d94d6c062b1 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx @@ -4,12 +4,16 @@ import '../styles.scss'; -import React from 'react'; +import React, { useEffect } from 'react'; import { Job, JobType, Task } from 'cvat-core-wrapper'; import { Row } from 'antd/lib/grid'; import JobItem from 'components/job-item/job-item'; +import { useDispatch, useSelector } from 'react-redux'; +import { getQualityReportsAsync } from 'actions/analytics-actions'; +import { CombinedState } from 'reducers'; import EmptyQuality from './empty-quality'; import MeanQuality from './mean-quality'; +import JobList from './job-list'; interface Props { task: Task, @@ -18,6 +22,12 @@ interface Props { function TaskQualityComponent(props: Props): JSX.Element { const { task, onJobUpdate } = props; + const dispatch = useDispatch(); + const query = useSelector((state: CombinedState) => state.analytics.quality.query); + + useEffect(() => { + dispatch(getQualityReportsAsync({ ...query, taskId: task.id })); + }, []); const gtJob = task.jobs.find((job: Job) => job.type === JobType.GROUND_TRUTH); if (!gtJob) { @@ -27,11 +37,14 @@ function TaskQualityComponent(props: Props): JSX.Element { return (
- + + + +
); } diff --git a/cvat-ui/src/components/task-analytics-page/styles.scss b/cvat-ui/src/components/task-analytics-page/styles.scss index 7776b6b297a8..67ac7f25d066 100644 --- a/cvat-ui/src/components/task-analytics-page/styles.scss +++ b/cvat-ui/src/components/task-analytics-page/styles.scss @@ -36,3 +36,13 @@ bottom: 0; right: $grid-unit-size; } + +.cvat-analytics-page { + height: 100%; +} + +.cvat-analytics-wrapper { + overflow-y: auto; + height: 90%; + width: 100%; +} diff --git a/cvat-ui/src/cvat-core-wrapper.ts b/cvat-ui/src/cvat-core-wrapper.ts index 70cede3580a1..1a0c4b79d822 100644 --- a/cvat-ui/src/cvat-core-wrapper.ts +++ b/cvat-ui/src/cvat-core-wrapper.ts @@ -14,6 +14,7 @@ import { import { SerializedAttribute, SerializedLabel } from 'cvat-core/src/server-response-types'; import { Job, Task } from 'cvat-core/src/session'; import Project from 'cvat-core/src/project'; +import QualityReport from 'cvat-core/src/quality-report'; import { ShapeType, LabelType, ModelKind, ModelProviders, ModelReturnType, DimensionType, JobType, JobStage, JobState, @@ -61,6 +62,7 @@ export { JobType, JobStage, JobState, + QualityReport, }; export type { diff --git a/cvat-ui/src/reducers/analytics-reducer.ts b/cvat-ui/src/reducers/analytics-reducer.ts new file mode 100644 index 000000000000..f0a0564de7fd --- /dev/null +++ b/cvat-ui/src/reducers/analytics-reducer.ts @@ -0,0 +1,55 @@ +// Copyright (C) 2023 CVAT.ai Corporation +// +// SPDX-License-Identifier: MIT + +import { AnalyticsActions, AnalyticsActionsTypes } from 'actions/analytics-actions'; +import { AnalyticsState } from 'reducers'; + +const defaultState: AnalyticsState = { + fetching: false, + quality: { + tasksReports: [], + jobsReports: [], + query: { + taskId: null, + parentId: null, + }, + }, +}; + +export default function ( + state: AnalyticsState = defaultState, + action: AnalyticsActions, +): AnalyticsState { + switch (action.type) { + case AnalyticsActionsTypes.GET_QUALITY_REPORTS: { + return { + ...state, + fetching: true, + quality: { + ...state.quality, + query: { + ...action.payload.query, + }, + }, + }; + } + case AnalyticsActionsTypes.GET_QUALITY_REPORTS_SUCCESS: + return { + ...state, + fetching: false, + quality: { + ...state.quality, + tasksReports: action.payload.tasksReports, + jobsReports: action.payload.jobsReports, + }, + }; + case AnalyticsActionsTypes.GET_QUALITY_REPORTS_FAILED: + return { + ...state, + fetching: false, + }; + default: + return state; + } +} diff --git a/cvat-ui/src/reducers/index.ts b/cvat-ui/src/reducers/index.ts index df2883fe6181..1276186c125a 100644 --- a/cvat-ui/src/reducers/index.ts +++ b/cvat-ui/src/reducers/index.ts @@ -6,7 +6,7 @@ import { Canvas3d } from 'cvat-canvas3d/src/typescript/canvas3d'; import { Canvas, RectDrawingMethod, CuboidDrawingMethod } from 'cvat-canvas-wrapper'; import { - Webhook, MLModel, ModelProvider, Organization, + Webhook, MLModel, ModelProvider, Organization, QualityReport, } from 'cvat-core-wrapper'; import { IntelligentScissors } from 'utils/opencv-wrapper/intelligent-scissors'; import { KeyMap } from 'utils/mousetrap-react'; @@ -889,6 +889,20 @@ export interface WebhooksState { query: WebhooksQuery; } +export interface QualityQuery { + taskId: number | null; + parentId: number | null; +} + +export interface AnalyticsState { + fetching: boolean; + quality: { + tasksReports: QualityReport[]; + jobsReports: QualityReport[]; + query: QualityQuery; + } +} + export interface CombinedState { auth: AuthState; projects: ProjectsState; @@ -910,6 +924,7 @@ export interface CombinedState { cloudStorages: CloudStoragesState; organizations: OrganizationState; webhooks: WebhooksState; + analytics: AnalyticsState; } export interface Indexable { diff --git a/cvat-ui/src/reducers/root-reducer.ts b/cvat-ui/src/reducers/root-reducer.ts index 1371015bbce4..16eb8d80014d 100644 --- a/cvat-ui/src/reducers/root-reducer.ts +++ b/cvat-ui/src/reducers/root-reducer.ts @@ -24,6 +24,7 @@ import importReducer from './import-reducer'; import cloudStoragesReducer from './cloud-storages-reducer'; import organizationsReducer from './organizations-reducer'; import webhooksReducer from './webhooks-reducer'; +import analyticsReducer from './analytics-reducer'; export default function createRootReducer(): Reducer { return combineReducers({ @@ -47,5 +48,6 @@ export default function createRootReducer(): Reducer { cloudStorages: cloudStoragesReducer, organizations: organizationsReducer, webhooks: webhooksReducer, + analytics: analyticsReducer, }); } From d1ccf0d408e8da4eeda41514b73c5fcc05a453e8 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Sat, 22 Apr 2023 00:05:50 +0300 Subject: [PATCH 032/257] Add test stubs --- tests/python/rest_api/test_quality_control.py | 56 +++++++++++++++++++ .../python/shared/assets/quality_reports.json | 6 ++ tests/python/shared/utils/dump_objects.py | 1 + 3 files changed, 63 insertions(+) create mode 100644 tests/python/rest_api/test_quality_control.py create mode 100644 tests/python/shared/assets/quality_reports.json diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py new file mode 100644 index 000000000000..9b1d3ec1fe5b --- /dev/null +++ b/tests/python/rest_api/test_quality_control.py @@ -0,0 +1,56 @@ +# Copyright (C) 2023 CVAT.ai Corporation +# +# SPDX-License-Identifier: MIT + +import json +from copy import deepcopy +from http import HTTPStatus +from typing import List + +import pytest +from cvat_sdk.api_client import models +from cvat_sdk.api_client.api_client import ApiClient, Endpoint +from cvat_sdk.core.helpers import get_paginated_collection +from deepdiff import DeepDiff + +from shared.utils.config import BASE_URL, USER_PASS, make_api_client + +from .utils import CollectionSimpleFilterTestBase, _test_create_task + + +class TestListQualityReports: + def _test_list_200(self, user, task_id, data, **kwargs): + with make_api_client(user) as api_client: + results = get_paginated_collection( + api_client.quality_reports_api.list_endpoint, + return_json=True, + task_id=task_id, + **kwargs, + ) + assert DeepDiff(data, results, ignore_order=True) == {} + + def test_can_list_quality_reports(self, admin_user, tasks, quality_reports): + task_id = next(t for t in tasks if t["quality_reports"]["count"] > 0)["id"] + reports = [r for r in quality_reports if r["target"] == "task" and r["task_id"] == task_id] + + self._test_list_200(admin_user, task_id, reports) + + # test the tree structure + # test filter values + + +class TestSimpleQualityReportsFilters(CollectionSimpleFilterTestBase): + @pytest.fixture(autouse=True) + def setup(self, restore_db_per_class, admin_user, quality_reports): + self.user = admin_user + self.samples = quality_reports + + def _get_endpoint(self, api_client: ApiClient) -> Endpoint: + return api_client.quality_reports_api.list_endpoint + + @pytest.mark.parametrize( + "field", + ("task_id", "job_id", "parent_id", "target"), + ) + def test_can_use_simple_filter_for_object_list(self, field): + return super().test_can_use_simple_filter_for_object_list(field) diff --git a/tests/python/shared/assets/quality_reports.json b/tests/python/shared/assets/quality_reports.json new file mode 100644 index 000000000000..d2bde8862b45 --- /dev/null +++ b/tests/python/shared/assets/quality_reports.json @@ -0,0 +1,6 @@ +{ + "count": 0, + "next": null, + "previous": null, + "results": [] +} \ No newline at end of file diff --git a/tests/python/shared/utils/dump_objects.py b/tests/python/shared/utils/dump_objects.py index c4c4e5648aa9..819090251be1 100644 --- a/tests/python/shared/utils/dump_objects.py +++ b/tests/python/shared/utils/dump_objects.py @@ -22,6 +22,7 @@ "issue", "webhook", "label", + "quality_report", ]: response = get_method("admin1", f"{obj}s", page_size="all") with open(ASSETS_DIR / f"{obj}s.json", "w") as f: From 6e4a9900dc58f7f7909c84b3c3d7e6ec0b6e0095 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Sat, 22 Apr 2023 00:12:41 +0300 Subject: [PATCH 033/257] Add basic impl --- cvat/apps/engine/quality_control.py | 112 ++++++++++++++++++++++- cvat/apps/engine/serializers.py | 13 ++- cvat/apps/engine/signals.py | 9 ++ cvat/apps/iam/rules/quality_reports.rego | 32 +++++-- cvat/settings/base.py | 7 ++ supervisord/worker.quality_reports.conf | 32 +++++++ 6 files changed, 191 insertions(+), 14 deletions(-) create mode 100644 supervisord/worker.quality_reports.conf diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index 2f0320c08811..af72e5884573 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -2,10 +2,13 @@ # # SPDX-License-Identifier: MIT +from datetime import datetime, timedelta from typing import Hashable, Iterator, List, Optional, Union from attrs import asdict, define import datumaro as dm +from django.conf import settings +import django_rq from django.db import transaction from cvat.apps.dataset_manager.task import JobAnnotation @@ -14,8 +17,8 @@ from cvat.apps.dataset_manager.formats.registry import dm_env from cvat.apps.profiler import silk_profile -from .models import (QualityReport, AnnotationConflict, - AnnotationConflictType, Job, MismatchingAnnotationKind) +from .models import (JobType, QualityReport, AnnotationConflict, + AnnotationConflictType, Job, MismatchingAnnotationKind, Task) @define(kw_only=True) @@ -344,3 +347,108 @@ def find_gt_conflicts( gt_job_last_updated=gt_job.updated_date, ) return _save_report_to_db(report, conflicts) + + +class QueueJobManager: + TASK_QUALITY_CHECK_JOB_DELAY = timedelta(hours=1) + _QUEUE_JOB_PREFIX = "update-quality-stats-task-" + + def _get_scheduler(self): + return django_rq.get_scheduler(settings.CVAT_QUEUES.QUALITY_REPORTS.value) + + def _make_initial_queue_job_id(self, task: Task) -> str: + return f'{self._QUEUE_JOB_PREFIX}{task.id}-initial' + + def _make_regular_queue_job_id(self, task: Task, start_time: datetime) -> str: + return f'{self._QUEUE_JOB_PREFIX}{task.id}-{start_time.timestamp()}' + + def _get_last_report_time(self, task: Task) -> Optional[datetime]: + report = QualityReport.objects.filter(task=task).order_by('-created_date').first() + if report: + return report.created_date + return None + + def schedule_quality_check_job(self, task: Task): + # This function schedules a report computing job in the queue + # The queue work algorithm is lock-free. It has and should keep the following properties: + # - job names are stable between potential writers + # - if multiple simultaneous writes can happen, the objects written must be the same + # - once a job is created, it can only be updated by the scheduler and the handling worker + + if not task.gt_job: + # Nothing to compute + return + + last_update_time = self._get_last_report_time(task) + if last_update_time is None: + # Report has never been computed + queue_job_id = self._make_initial_queue_job_id(task) + elif ( + next_update_time := last_update_time + self.TASK_QUALITY_CHECK_JOB_DELAY + ) <= task.updated_date: + queue_job_id = self._make_regular_queue_job_id(task, next_update_time) + else: + queue_job_id = None + + scheduler = self._get_scheduler() + if queue_job_id not in scheduler: + scheduler.enqueue_at( + task.updated_date + self.TASK_QUALITY_CHECK_JOB_DELAY, + self._update_task_quality_metrics_callback, + kwargs=dict(task_id=task.id), + job_id=queue_job_id, + ) + + @classmethod + def _update_task_quality_metrics_callback(cls, task_id: int): + with transaction.atomic(): + # The task could have been deleted during scheduling + try: + task = Task.objects.prefetch_related('segment__job').get(id=task_id) + except Task.DoesNotExist: + return + + # The GT job could have been removed during scheduling + if not task.gt_job: + return + + # TODO: Decide if all the task and job metrics must be updated here + # Probably, need to have this: + # task updated (the gt job, frame set or labels changed) -> everything is computed + # job updated -> job report is computed + + # Preload all the data for computations + gt_job = task.gt_job + gt_job_data_provider = _JobDataProvider(gt_job) + + jobs = task.segment_set.job_set.filter(type=JobType.NORMAL).all() + job_data_providers = { job.id: _JobDataProvider(job) for job in jobs } + + job_reports = {} + for job in jobs: + job_data_provider = job_data_providers[job.id] + comparator = DatasetComparator(job_data_provider, gt_job_data_provider) + conflicts = comparator.find_gt_conflicts() + report = QualityReport( + job=job, + job_last_updated=job.updated_date, + gt_job_last_updated=gt_job.updated_date, + ) + job_reports[job.id] = (report, conflicts) + + # TODO: is it a separate report (the task dataset can be different from any jobs' dataset + # because of frame overlaps) or a combined summary report? + task_report = QualityReport() + task_conflicts = [AnnotationConflict()] + + with transaction.atomic(): + # The task could have been deleted + try: + Task.objects.get(id=task_id) + except Task.DoesNotExist: + return + + for job_report, job_conflicts in job_reports.values(): + _save_report_to_db(job_report, job_conflicts) + + _save_report_to_db(task_report, task_conflicts) diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index 753fbc38cf5b..be1c2b701120 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -1940,6 +1940,15 @@ class Meta: read_only_fields = fields def to_representation(self, instance): - instance.summary = instance.data["intersection_results"] - instance.parameters = instance.data["parameters"] + instance.summary = dict( + frame_count=0, + frame_share_percent=0, + conflicts_count=0, + valid_count=0, + ds_count=0, + gt_count=0, + ) + instance.parameters = dict( + iou_threshold=0 + ) return super().to_representation(instance) diff --git a/cvat/apps/engine/signals.py b/cvat/apps/engine/signals.py index b3d3693bc6ee..d803999d3634 100644 --- a/cvat/apps/engine/signals.py +++ b/cvat/apps/engine/signals.py @@ -10,6 +10,9 @@ from .models import (CloudStorage, Data, Job, Profile, Project, StatusChoice, Task) +from cvat.apps.engine import quality_control as qc + + # TODO: need to log any problems reported by shutil.rmtree when the new # analytics feature is available. Now the log system can write information # into a file inside removed directory. @@ -33,6 +36,12 @@ def __save_job_handler(instance, created, **kwargs): db_task.status = status db_task.save() +@receiver(post_save, sender=Job, + dispatch_uid=__name__ + ".save_job_handler-update_quality_stats") +def __save_job_handler__update_quality_metrics(instance, created, **kwargs): + qc.QueueJobManager().schedule_quality_check_job(instance.segment.task) + + @receiver(post_save, sender=User, dispatch_uid=__name__ + ".save_user_handler") def __save_user_handler(instance, **kwargs): diff --git a/cvat/apps/iam/rules/quality_reports.rego b/cvat/apps/iam/rules/quality_reports.rego index 3c18b02cca3a..16a7abe9a54c 100644 --- a/cvat/apps/iam/rules/quality_reports.rego +++ b/cvat/apps/iam/rules/quality_reports.rego @@ -1,4 +1,4 @@ -package labels +package quality_reports import future.keywords.if import future.keywords.in @@ -66,17 +66,23 @@ filter = [] { # Django Q object to filter list of entries utils.is_organization org := input.auth.organization qobject := [ + {"job__segment__task__organization": org.id}, + {"job__segment__task__project__organization": org.id}, "|", {"task__organization": org.id}, - {"project__organization": org.id}, "|", + {"task__project__organization": org.id}, "|", ] } else = qobject { utils.is_sandbox user := input.auth.user qobject := [ - {"task__owner_id": user.id}, + {"job__segment__task__owner_id": user.id}, + {"job__segment__task__assignee_id": user.id}, "|", + {"job__segment__task__project__owner_id": user.id}, "|", + {"job__segment__task__project__assignee_id": user.id}, "|", + {"task__owner_id": user.id}, "|", {"task__assignee_id": user.id}, "|", - {"project__owner_id": user.id}, "|", - {"project__assignee_id": user.id}, "|", + {"task__project__owner_id": user.id}, "|", + {"task__project__assignee_id": user.id}, "|", ] } else = qobject { utils.is_organization @@ -84,16 +90,22 @@ filter = [] { # Django Q object to filter list of entries organizations.has_perm(organizations.MAINTAINER) org := input.auth.organization qobject := [ - {"task__organization": org.id}, - {"project__organization": org.id}, "|", + {"job__segment__task__organization": org.id}, + {"job__segment__task__project__organization": org.id}, "|", + {"task__organization": org.id}, "|", + {"task__project__organization": org.id}, "|", ] } else = qobject { organizations.has_perm(organizations.WORKER) user := input.auth.user qobject := [ - {"task__owner_id": user.id}, + {"job__segment__task__owner_id": user.id}, + {"job__segment__task__assignee_id": user.id}, "|", + {"job__segment__task__project__owner_id": user.id}, "|", + {"job__segment__task__project__assignee_id": user.id}, "|", + {"task__owner_id": user.id}, "|", {"task__assignee_id": user.id}, "|", - {"project__owner_id": user.id}, "|", - {"project__assignee_id": user.id}, "|", + {"task__project__owner_id": user.id}, "|", + {"task__project__assignee_id": user.id}, "|", ] } diff --git a/cvat/settings/base.py b/cvat/settings/base.py index cf420e94c806..87eb6533c6c6 100644 --- a/cvat/settings/base.py +++ b/cvat/settings/base.py @@ -294,6 +294,7 @@ class CVAT_QUEUES(Enum): AUTO_ANNOTATION = 'annotation' WEBHOOKS = 'webhooks' NOTIFICATIONS = 'notifications' + QUALITY_REPORTS = 'quality_reports' RQ_QUEUES = { CVAT_QUEUES.IMPORT_DATA.value: { @@ -326,6 +327,12 @@ class CVAT_QUEUES(Enum): 'DB': 0, 'DEFAULT_TIMEOUT': '1h' }, + CVAT_QUEUES.QUALITY_REPORTS.value: { + 'HOST': 'localhost', + 'PORT': 6379, + 'DB': 0, + 'DEFAULT_TIMEOUT': '15m', + }, } NUCLIO = { diff --git a/supervisord/worker.quality_reports.conf b/supervisord/worker.quality_reports.conf new file mode 100644 index 000000000000..c7ec68fc7437 --- /dev/null +++ b/supervisord/worker.quality_reports.conf @@ -0,0 +1,32 @@ +[unix_http_server] +file = /tmp/supervisord/supervisor.sock + +[supervisorctl] +serverurl = unix:///tmp/supervisord/supervisor.sock + + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[supervisord] +nodaemon=true +logfile=%(ENV_HOME)s/logs/supervisord.log ; supervisord log file +logfile_maxbytes=50MB ; maximum size of logfile before rotation +logfile_backups=10 ; number of backed up logfiles +loglevel=debug ; info, debug, warn, trace +pidfile=/tmp/supervisord/supervisord.pid ; pidfile location +childlogdir=%(ENV_HOME)s/logs/ ; where child log files will live + +[program:ssh-agent] +command=bash -c "rm /tmp/ssh-agent.sock -f && /usr/bin/ssh-agent -d -a /tmp/ssh-agent.sock" +priority=1 +autorestart=true + +[program:rqworker_quality_reports] +command=%(ENV_HOME)s/wait-for-it.sh %(ENV_CVAT_REDIS_HOST)s:6379 -t 0 -- bash -ic " \ + exec python3 %(ENV_HOME)s/manage.py rqworker -v 3 export \ + --worker-class cvat.rqworker.DefaultWorker \ + " +environment=SSH_AUTH_SOCK="/tmp/ssh-agent.sock",VECTOR_EVENT_HANDLER="SynchronousLogstashHandler" +numprocs=%(ENV_NUMPROCS)s +process_name=rqworker_quality_reports_%(process_num)s From d556e43ce727450109bb799b545118699c720fb1 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Sat, 22 Apr 2023 17:55:00 +0300 Subject: [PATCH 034/257] Add draft implementation for quality reports computations --- compare_datasets.py | 66 +- cvat/apps/dataset_manager/bindings.py | 9 +- .../migrations/0071_job_created_date.py | 7 +- .../migrations/0072_auto_20230422_1013.py | 35 + cvat/apps/engine/quality_control.py | 456 +++++- cvat/apps/engine/signals.py | 20 +- cvat/apps/engine/views.py | 6 +- cvat/settings/base.py | 2 +- supervisord/utils.conf | 2 +- supervisord/worker.quality_reports.conf | 2 +- tests/python/shared/assets/cvat_db/data.json | 1430 +++++++++++++++++ .../python/shared/assets/quality_reports.json | 45 +- 12 files changed, 1967 insertions(+), 113 deletions(-) create mode 100644 cvat/apps/engine/migrations/0072_auto_20230422_1013.py diff --git a/compare_datasets.py b/compare_datasets.py index 88d7fc34e263..1adc6e700f58 100644 --- a/compare_datasets.py +++ b/compare_datasets.py @@ -15,12 +15,7 @@ import datumaro as dm import numpy as np from attrs import asdict, define -from datumaro.components.annotation import (AnnotationType, Bbox, Label, - LabelCategories, Points, Polygon, - PolyLine, Skeleton) -from datumaro.components.dataset import DatasetItem -from datumaro.components.extractor import (DEFAULT_SUBSET_NAME, Extractor, - Importer) +from datumaro.components.extractor import DEFAULT_SUBSET_NAME from datumaro.util.image import Image from defusedxml import ElementTree from scipy.stats import gmean @@ -34,7 +29,7 @@ class CvatPath: BUILTIN_ATTRS = {"occluded", "outside", "keyframe", "track_id"} -class CvatExtractor(Extractor): +class CvatExtractor(dm.Extractor): _SUPPORTED_SHAPES = ("box", "polygon", "polyline", "points", "skeleton") def __init__(self, path, subsets=None): @@ -96,7 +91,7 @@ def parse_image_dir(image_dir, subset): for file in sorted(glob(image_dir), key=osp.basename): name, ext = osp.splitext(osp.basename(file)) if ext.lower() in CvatPath.MEDIA_EXTS: - items[(subset, name)] = DatasetItem( + items[(subset, name)] = dm.DatasetItem( id=name, annotations=[], image=Image(path=file), @@ -252,14 +247,14 @@ def _parse(cls, path): shape_element["points"].extend(map(float, pair.split(","))) if el.tag == "points" and el.attrib.get("occluded") == "1": - shape_element["visibility"] = [Points.Visibility.hidden] * ( + shape_element["visibility"] = [dm.Points.Visibility.hidden] * ( len(shape_element["points"]) // 2 ) else: shape_element["occluded"] = el.attrib.get("occluded") == "1" if el.tag == "points" and el.attrib.get("outside") == "1": - shape_element["visibility"] = [Points.Visibility.absent] * ( + shape_element["visibility"] = [dm.Points.Visibility.absent] * ( len(shape_element["points"]) // 2 ) else: @@ -503,7 +498,7 @@ def consumed(expected_state, tag): common_attrs.append("outside") common_attrs.append("track_id") - label_cat = LabelCategories(attributes=common_attrs) + label_cat = dm.LabelCategories(attributes=common_attrs) attribute_types = {} for label, params in labels.items(): attrs = {v["name"]: v for v in params["attributes"]} @@ -517,7 +512,7 @@ def consumed(expected_state, tag): for attr_name, attr_params in attrs.items(): attribute_types[attr_name] = attr_params["input_type"] - categories[AnnotationType.label] = label_cat + categories[dm.AnnotationType.label] = label_cat return categories, tasks_info, attribute_types @classmethod @@ -526,7 +521,7 @@ def _parse_shape_ann(cls, ann, categories, *, parent_label: str = None): ann_type = ann["type"] attributes = ann.get("attributes") or {} - if "occluded" in categories[AnnotationType.label].attributes: + if "occluded" in categories[dm.AnnotationType.label].attributes: attributes["occluded"] = ann.get("occluded", False) if "outside" in ann: attributes["outside"] = ann["outside"] @@ -540,7 +535,7 @@ def _parse_shape_ann(cls, ann, categories, *, parent_label: str = None): group = ann.get("group") label = ann.get("label") - label_id = categories[AnnotationType.label].find( + label_id = categories[dm.AnnotationType.label].find( label, parent=parent_label or "" )[0] if label_id is None: @@ -553,7 +548,7 @@ def _parse_shape_ann(cls, ann, categories, *, parent_label: str = None): points = ann.get("points", []) if ann_type == "polyline": - return PolyLine( + return dm.PolyLine( points, label=label_id, z_order=z_order, @@ -563,7 +558,7 @@ def _parse_shape_ann(cls, ann, categories, *, parent_label: str = None): ) elif ann_type == "polygon": - return Polygon( + return dm.Polygon( points, label=label_id, z_order=z_order, @@ -574,7 +569,7 @@ def _parse_shape_ann(cls, ann, categories, *, parent_label: str = None): elif ann_type == "points": visibility = ann.get("visibility", None) - return Points( + return dm.Points( points, visibility, label=label_id, @@ -587,7 +582,7 @@ def _parse_shape_ann(cls, ann, categories, *, parent_label: str = None): elif ann_type == "box": x, y = points[0], points[1] w, h = points[2] - x, points[3] - y - return Bbox( + return dm.Bbox( x, y, w, @@ -608,7 +603,7 @@ def _parse_shape_ann(cls, ann, categories, *, parent_label: str = None): ) ) - return Skeleton( + return dm.Skeleton( elements, label=label_id, z_order=z_order, @@ -623,10 +618,10 @@ def _parse_shape_ann(cls, ann, categories, *, parent_label: str = None): @classmethod def _parse_tag_ann(cls, ann, categories): label = ann.get("label") - label_id = categories[AnnotationType.label].find(label)[0] + label_id = categories[dm.AnnotationType.label].find(label)[0] group = ann.get("group") attributes = ann.get("attributes") - return Label(label_id, attributes=attributes, group=group) + return dm.Label(label_id, attributes=attributes, group=group) def _load_items(self, parsed, image_items): for (subset, frame_id), item_desc in parsed.items(): @@ -641,7 +636,7 @@ def _load_items(self, parsed, image_items): image = Image(path=image, size=tuple(map(int, image_size))) di = image_items.get( (subset, osp.splitext(name)[0]), - DatasetItem( + dm.DatasetItem( id=name, annotations=[], ), @@ -658,7 +653,7 @@ def _load_items(self, parsed, image_items): dm_env.extractors.register("cvat", CvatExtractor) -class CvatImporter(Importer): +class CvatImporter(dm.Importer): @classmethod def find_sources(cls, path): return cls._find_sources_recursive(path, ".xml", "cvat") @@ -840,32 +835,37 @@ def _match_segments(self, t, item_a, item_b, *, return returned_values def match_boxes(self, item_a, item_b): - return self._match_segments(AnnotationType.bbox, item_a, item_b) + return self._match_segments(dm.AnnotationType.bbox, item_a, item_b) def match_polygons(self, item_a, item_b): - return self._match_segments(AnnotationType.polygon, item_a, item_b) + return self._match_segments(dm.AnnotationType.polygon, item_a, item_b) def match_masks(self, item_a, item_b): - return self._match_segments(AnnotationType.mask, item_a, item_b) + return self._match_segments(dm.AnnotationType.mask, item_a, item_b) def match_lines(self, item_a, item_b): matcher = dm.ops.LineMatcher() - return self._match_segments(AnnotationType.polyline, item_a, item_b, + return self._match_segments(dm.AnnotationType.polyline, item_a, item_b, distance=matcher.distance) def match_points(self, item_a, item_b): - a_points = self._get_ann_type(AnnotationType.points, item_a) - b_points = self._get_ann_type(AnnotationType.points, item_b) + a_points = self._get_ann_type(dm.AnnotationType.points, item_a) + b_points = self._get_ann_type(dm.AnnotationType.points, item_b) if not a_points and not b_points: return [], [], [], [] instance_map = {} for s in [item_a.annotations, item_b.annotations]: s_instances = dm.ops.find_instances(s) - for inst in s_instances: - inst_bbox = dm.ops.max_bbox(inst) - for ann in inst: - instance_map[id(ann)] = [inst, inst_bbox] + for instance_group in s_instances: + instance_bbox = dm.ops.max_bbox( + a.get_bbox() if isinstance(a, dm.Skeleton) else a + for a in instance_group + if hasattr(a, 'get_bbox') + ) + + for ann in instance_group: + instance_map[id(ann)] = [instance_group, instance_bbox] matcher = _PointsMatcher(instance_map=instance_map) distance = matcher.distance diff --git a/cvat/apps/dataset_manager/bindings.py b/cvat/apps/dataset_manager/bindings.py index 5a7d6013c42e..0524b09ed561 100644 --- a/cvat/apps/dataset_manager/bindings.py +++ b/cvat/apps/dataset_manager/bindings.py @@ -1609,6 +1609,8 @@ def _convert_shape(self, dm_points = shape.points + anno = None + if shape.type == ShapeType.POINTS: anno = dm.Points(dm_points, label=dm_label, attributes=dm_attr, group=dm_group, @@ -1682,7 +1684,12 @@ def _convert_shape(self, else: raise Exception("Unknown shape type '%s'" % shape.type) - return [anno] + results = [] + + if anno: + results.append(anno) + + return results def _convert_shapes(self, shapes: List[CommonData.LabeledShape]) -> Iterable[dm.Annotation]: dm_anno = [] diff --git a/cvat/apps/engine/migrations/0071_job_created_date.py b/cvat/apps/engine/migrations/0071_job_created_date.py index 08ead72411eb..8e0742143c4d 100644 --- a/cvat/apps/engine/migrations/0071_job_created_date.py +++ b/cvat/apps/engine/migrations/0071_job_created_date.py @@ -28,5 +28,10 @@ class Migration(migrations.Migration): field=models.DateTimeField(auto_now_add=True, default=timezone.now, null=True), preserve_default=False, ), - migrations.RunPython(add_created_date_to_existing_jobs) + migrations.RunPython(add_created_date_to_existing_jobs), + migrations.AlterField( + model_name='job', + name='created_date', + field=models.DateTimeField(auto_now_add=True), + ), ] diff --git a/cvat/apps/engine/migrations/0072_auto_20230422_1013.py b/cvat/apps/engine/migrations/0072_auto_20230422_1013.py new file mode 100644 index 000000000000..988775ed609b --- /dev/null +++ b/cvat/apps/engine/migrations/0072_auto_20230422_1013.py @@ -0,0 +1,35 @@ +# Generated by Django 3.2.18 on 2023-04-22 10:13 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('engine', '0071_job_created_date'), + ] + + operations = [ + migrations.CreateModel( + name='QualityReport', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('created_date', models.DateTimeField(auto_now_add=True)), + ('target_last_updated', models.DateTimeField()), + ('gt_last_updated', models.DateTimeField()), + ('data', models.JSONField()), + ('job', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='quality_reports', to='engine.job')), + ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='engine.qualityreport')), + ('task', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='quality_reports', to='engine.task')), + ], + ), + migrations.AlterField( + model_name='annotationconflict', + name='report', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='conflicts', to='engine.qualityreport'), + ), + migrations.DeleteModel( + name='AnnotationConflictsReport', + ), + ] diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index af72e5884573..fc21a8661c17 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -3,13 +3,15 @@ # SPDX-License-Identifier: MIT from datetime import datetime, timedelta -from typing import Hashable, Iterator, List, Optional, Union +import itertools +from typing import Callable, Hashable, Iterator, List, Optional, Union, cast from attrs import asdict, define import datumaro as dm from django.conf import settings import django_rq from django.db import transaction +import numpy as np from cvat.apps.dataset_manager.task import JobAnnotation from cvat.apps.dataset_manager.bindings import (CommonData, CvatToDmAnnotationConverter, @@ -32,7 +34,7 @@ def to_dict(self) -> dict: return asdict(self) -class _JobDataProvider: +class JobDataProvider: @transaction.atomic def __init__(self, job_id: int) -> None: self.job_id = job_id @@ -119,11 +121,324 @@ def _save_report_to_db( return report +def OKS(a, b, sigma=None, bbox=None, scale=None, visibility=None): + """ + Object Keypoint Similarity metric. + https://cocodataset.org/#keypoints-eval + """ + + p1 = np.array(a.points).reshape((-1, 2)) + p2 = np.array(b.points).reshape((-1, 2)) + if len(p1) != len(p2): + return 0 + + if visibility is None: + visibility = np.ones(len(p1)) + else: + visibility = np.asarray(visibility, dtype=float) + + if not sigma: + sigma = 0.1 + else: + assert len(sigma) == len(p1) + + if not scale: + if bbox is None: + bbox = dm.ops.mean_bbox([a, b]) + scale = bbox[2] * bbox[3] + + dists = np.linalg.norm(p1 - p2, axis=1) + return np.sum( + visibility * np.exp(-(dists**2) / (2 * scale * (2 * sigma) ** 2)) + ) / np.sum(visibility) + + +@define(kw_only=True) +class _PointsMatcher(dm.ops.PointsMatcher): + def distance(self, a, b): + a_bbox = self.instance_map[id(a)][1] + b_bbox = self.instance_map[id(b)][1] + if dm.ops.bbox_iou(a_bbox, b_bbox) <= 0: + return 0 + bbox = dm.ops.mean_bbox([a_bbox, b_bbox]) + return OKS( + a, + b, + sigma=self.sigma, + bbox=bbox, + visibility=[v == dm.Points.Visibility.visible for v in a.visibility], + ) + + class _DistanceComparator(dm.ops.DistanceComparator): + def __init__( + self, + categories: dm.CategoriesInfo, + *, + included_ann_types: Optional[List[dm.AnnotationType]] = None, + return_distances: bool = False, + **kwargs, + ): + super().__init__(**kwargs) + self.categories = categories + self._skeleton_info = {} + self.included_ann_types = included_ann_types + self.return_distances = return_distances + + def _match_ann_type(self, t, *args): + if t not in self.included_ann_types: + return None + + # pylint: disable=no-value-for-parameter + if t == dm.AnnotationType.label: + return self.match_labels(*args) + elif t == dm.AnnotationType.bbox: + return self.match_boxes(*args) + elif t == dm.AnnotationType.polygon: + return self.match_polygons(*args) + elif t == dm.AnnotationType.mask: + return self.match_masks(*args) + elif t == dm.AnnotationType.points: + return self.match_points(*args) + elif t == dm.AnnotationType.skeleton: + return self.match_skeletons(*args) + elif t == dm.AnnotationType.polyline: + return self.match_lines(*args) + # pylint: enable=no-value-for-parameter + else: + return None + + def _match_segments(self, t, item_a, item_b, *, + distance: Callable = dm.ops.segment_iou + ): + a_objs = self._get_ann_type(t, item_a) + b_objs = self._get_ann_type(t, item_b) + if not a_objs and not b_objs: + return [], [], [], [] + + if self.return_distances: + distance, distances = self._make_memoizing_distance(distance) + + returned_values = dm.ops.match_segments(a_objs, b_objs, + distance=distance, dist_thresh=self.iou_threshold) + + if self.return_distances: + returned_values = returned_values + (distances, ) + + return returned_values + + def match_boxes(self, item_a, item_b): + return self._match_segments(dm.AnnotationType.bbox, item_a, item_b) + + def match_polygons(self, item_a, item_b): + return self._match_segments(dm.AnnotationType.polygon, item_a, item_b) + + def match_masks(self, item_a, item_b): + return self._match_segments(dm.AnnotationType.mask, item_a, item_b) + + def match_lines(self, item_a, item_b): + matcher = dm.ops.LineMatcher() + return self._match_segments(dm.AnnotationType.polyline, item_a, item_b, + distance=matcher.distance) + + def match_points(self, item_a, item_b): + a_points = self._get_ann_type(dm.AnnotationType.points, item_a) + b_points = self._get_ann_type(dm.AnnotationType.points, item_b) + if not a_points and not b_points: + return [], [], [], [] + + instance_map = {} + for s in [item_a.annotations, item_b.annotations]: + s_instances = dm.ops.find_instances(s) + for instance_group in s_instances: + instance_bbox = dm.ops.max_bbox( + a.get_bbox() if isinstance(a, dm.Skeleton) else a + for a in instance_group + if hasattr(a, 'get_bbox') + ) + + for ann in instance_group: + instance_map[id(ann)] = [instance_group, instance_bbox] + matcher = _PointsMatcher(instance_map=instance_map) + + distance = matcher.distance + + if self.return_distances: + distance, distances = self._make_memoizing_distance(distance) + + returned_values = dm.ops.match_segments( + a_points, + b_points, + dist_thresh=self.iou_threshold, + distance=distance, + ) + + if self.return_distances: + returned_values = returned_values + (distances, ) + + return returned_values + + def _get_skeleton_info(self, skeleton_label_id: int): + label_cat = cast(dm.LabelCategories, self.categories[dm.AnnotationType.label]) + skeleton_info = self._skeleton_info.get(skeleton_label_id) + + if skeleton_info is None: + skeleton_label_name = label_cat[skeleton_label_id].name + + # Build a sorted list of sublabels to arrange skeleton points during comparison + skeleton_info = sorted( + idx + for idx, label in enumerate(label_cat) + if label.parent == skeleton_label_name + ) + self._skeleton_info[skeleton_label_id] = skeleton_info + + return skeleton_info + + def match_skeletons(self, item_a, item_b): + a_skeletons = self._get_ann_type(dm.AnnotationType.skeleton, item_a) + b_skeletons = self._get_ann_type(dm.AnnotationType.skeleton, item_b) + if not a_skeletons and not b_skeletons: + return [], [], [], [] + + # Convert skeletons to point lists for comparison + # This is required to compute correct per-instance distance + # It is assumed that labels are the same in the datasets + skeleton_infos = {} + points_map = {} + skeleton_map = {} + a_points = [] + b_points = [] + for source, source_points in [(a_skeletons, a_points), (b_skeletons, b_points)]: + for skeleton in source: + skeleton_info = skeleton_infos.setdefault( + skeleton.label, self._get_skeleton_info(skeleton.label) + ) + + # Merge skeleton points into a single list + # The list is ordered by skeleton_info + skeleton_points = [ + next((p for p in skeleton.elements if p.label == sublabel), None) + for sublabel in skeleton_info + ] + + # Build a single Points object for further comparisons + merged_points = dm.Points( + points=list( + itertools.chain.from_iterable( + p.points if p else [0, 0] for p in skeleton_points + ) + ), + visibility=list( + itertools.chain.from_iterable( + p.visibility if p else [dm.Points.Visibility.absent] + for p in skeleton_points + ) + ), + label=skeleton.label + # no per-point attributes currently in CVAT + ) + + points_map[id(merged_points)] = skeleton + skeleton_map[id(skeleton)] = merged_points + source_points.append(merged_points) + + instance_map = {} + for source in [item_a.annotations, item_b.annotations]: + for instance_group in dm.ops.find_instances(source): + instance_bbox = dm.ops.max_bbox( + a.get_bbox() if isinstance(a, dm.Skeleton) else a + for a in instance_group + if hasattr(a, 'get_bbox') + ) + + instance_group = [ + skeleton_map[id(a)] if isinstance(a, dm.Skeleton) else a + for a in instance_group + ] + for ann in instance_group: + instance_map[id(ann)] = [instance_group, instance_bbox] + + matcher = _PointsMatcher(instance_map=instance_map) + + distance = matcher.distance + + if self.return_distances: + distance, distances = self._make_memoizing_distance(distance) + + matched, mismatched, a_extra, b_extra = dm.ops.match_segments( + a_points, + b_points, + dist_thresh=self.iou_threshold, + distance=distance, + ) + + matched = [(points_map[id(p_a)], points_map[id(p_b)]) for (p_a, p_b) in matched] + mismatched = [ + (points_map[id(p_a)], points_map[id(p_b)]) for (p_a, p_b) in mismatched + ] + a_extra = [points_map[id(p_a)] for p_a in a_extra] + b_extra = [points_map[id(p_b)] for p_b in b_extra] + + # Map points back to skeletons + if self.return_distances: + for (p_a_id, p_b_id) in list(distances.keys()): + dist = distances.pop((p_a_id, p_b_id)) + distances[( + id(points_map[p_a_id]), + id(points_map[p_b_id]) + )] = dist + + returned_values = (matched, mismatched, a_extra, b_extra) + + if self.return_distances: + returned_values = returned_values + (distances, ) + + return returned_values + + @classmethod + def _make_memoizing_distance(cls, distance_function): + distances = {} + notfound = object() + + def memoizing_distance(a, b): + key = (id(a), id(b)) + dist = distances.get(key, notfound) + + if dist is notfound: + dist = distance_function(a, b) + distances[key] = dist + + return dist + + return memoizing_distance, distances + +class _Comparator: + def __init__(self, categories: dm.CategoriesInfo): + self.ignored_attrs = [ + "track_id", # changes from task to task, can't be defined manually with the same name + "keyframe", # indicates the way annotation obtained, meaningless to compare + "z_order", # TODO: compare relative or 'visible' z_order + "group", # TODO: changes from task to task. But must be compared for existence + ] + self.included_ann_types = [ + dm.AnnotationType.bbox, + dm.AnnotationType.mask, + dm.AnnotationType.points, + dm.AnnotationType.polygon, + dm.AnnotationType.polyline, + dm.AnnotationType.skeleton, + ] + self._annotation_comparator = _DistanceComparator( + categories, included_ann_types=self.included_ann_types, return_distances=False, + ) + def match_attrs(self, ann_a: dm.Annotation, ann_b: dm.Annotation): a_attrs = ann_a.attributes b_attrs = ann_b.attributes + keys_to_match = (a_attrs.keys() | b_attrs.keys()).difference(self.ignored_attrs) + matches = [] mismatches = [] a_extra = [] @@ -131,7 +446,7 @@ def match_attrs(self, ann_a: dm.Annotation, ann_b: dm.Annotation): notfound = object() - for k in a_attrs.keys() | b_attrs.keys(): + for k in keys_to_match: a_attr = a_attrs.get(k, notfound) b_attr = b_attrs.get(k, notfound) @@ -147,46 +462,22 @@ def match_attrs(self, ann_a: dm.Annotation, ann_b: dm.Annotation): return matches, mismatches, a_extra, b_extra def match_annotations(self, item_a, item_b): - return {t: self._match_ann_type(t, item_a, item_b) for t in dm.AnnotationType} - - def _match_ann_type(self, t, *args): - # pylint: disable=no-value-for-parameter - if t == dm.AnnotationType.label: - return self.match_labels(*args) - elif t == dm.AnnotationType.bbox: - return self.match_boxes(*args) - elif t == dm.AnnotationType.polygon: - return self.match_polygons(*args) - elif t == dm.AnnotationType.mask: - return self.match_masks(*args) - elif t == dm.AnnotationType.points: - # TODO: test and fix point comparison - a_points = self._get_ann_type(dm.AnnotationType.points, args[0]) - b_points = self._get_ann_type(dm.AnnotationType.points, args[1]) - if not a_points and not b_points: - return [], [], [], [] - return self.match_points(*args) - elif t == dm.AnnotationType.polyline: - return self.match_lines(*args) - # pylint: enable=no-value-for-parameter - else: - return None + return self._annotation_comparator.match_annotations(item_a, item_b) class DatasetComparator: def __init__(self, - this_job_data_provider: _JobDataProvider, - gt_job_data_provider: _JobDataProvider + this_job_data_provider: JobDataProvider, + gt_job_data_provider: JobDataProvider ) -> None: self._this_job_data_provider = this_job_data_provider self._gt_job_data_provider = gt_job_data_provider - self._comparator = _DistanceComparator() + self._this_job_dataset = self._this_job_data_provider.dm_dataset + self._gt_job_dataset = self._gt_job_data_provider.dm_dataset + self._comparator = _Comparator(self._gt_job_dataset.categories()) def _iterate_datasets(self) -> Iterator: - this_job_dataset = self._this_job_data_provider.dm_dataset - gt_job_dataset = self._gt_job_data_provider.dm_dataset - - for gt_item in gt_job_dataset: - this_item = this_job_dataset.get(gt_item.id) + for gt_item in self._gt_job_dataset: + this_item = self._this_job_dataset.get(gt_item.id) if not this_item: continue # we need to compare only intersecting frames @@ -328,12 +619,37 @@ def _generate_frame_annotation_conflicts( return conflicts +def _create_report(this_job: Job, gt_job: Job, conflicts: List[AnnotationConflict]): + report = QualityReport( + job=this_job, + target_last_updated=this_job.updated_date, + gt_last_updated=gt_job.updated_date, + + # TODO: refactor, add real data + data=dict( + parameters=dict(), + + intersection_results=dict( + frame_count=0, + frame_share_percent=0, + frames=[], + + error_count=len(conflicts), + mean_error_count=0, + mean_accuracy=0, + ) + ) + ) + + return report + + @silk_profile() def find_gt_conflicts( this_job: Job, gt_job: Job, *, frame_id: Optional[int] = None ) -> QualityReport: - this_job_data_provider = _JobDataProvider(this_job.pk) - gt_job_data_provider = _JobDataProvider(gt_job.pk) + this_job_data_provider = JobDataProvider(this_job.pk) + gt_job_data_provider = JobDataProvider(gt_job.pk) comparator = DatasetComparator(this_job_data_provider, gt_job_data_provider) if frame_id is not None: @@ -341,17 +657,13 @@ def find_gt_conflicts( else: conflicts = comparator.find_gt_conflicts() - report = QualityReport( - job=this_job, - job_last_updated=this_job.updated_date, - gt_job_last_updated=gt_job.updated_date, - ) + report = _create_report(this_job, gt_job, conflicts) return _save_report_to_db(report, conflicts) class QueueJobManager: - TASK_QUALITY_CHECK_JOB_DELAY = timedelta(hours=1) - _QUEUE_JOB_PREFIX = "update-quality-stats-task-" + TASK_QUALITY_CHECK_JOB_DELAY = timedelta(seconds=5) # TODO: 1h + _QUEUE_JOB_PREFIX = "update-quality-metrics-task-" def _get_scheduler(self): return django_rq.get_scheduler(settings.CVAT_QUEUES.QUALITY_REPORTS.value) @@ -395,16 +707,16 @@ def schedule_quality_check_job(self, task: Task): scheduler.enqueue_at( task.updated_date + self.TASK_QUALITY_CHECK_JOB_DELAY, self._update_task_quality_metrics_callback, - kwargs=dict(task_id=task.id), + task_id=task.id, job_id=queue_job_id, ) @classmethod - def _update_task_quality_metrics_callback(cls, task_id: int): + def _update_task_quality_metrics_callback(cls, *, task_id: int): with transaction.atomic(): # The task could have been deleted during scheduling try: - task = Task.objects.prefetch_related('segment__job').get(id=task_id) + task = Task.objects.prefetch_related('segment_set__job_set').get(id=task_id) except Task.DoesNotExist: return @@ -412,37 +724,55 @@ def _update_task_quality_metrics_callback(cls, task_id: int): if not task.gt_job: return - # TODO: Decide if all the task and job metrics must be updated here - # Probably, need to have this: - # task updated (the gt job, frame set or labels changed) -> everything is computed - # job updated -> job report is computed + # TODO: Probably, can be optimized to this: + # - task updated (the gt job, frame set or labels changed) -> everything is computed + # - job updated -> job report is computed + # old reports can be reused in this case (need to add M-1 relationship in reports) - # Preload all the data for computations + # Preload all the data for the computations gt_job = task.gt_job - gt_job_data_provider = _JobDataProvider(gt_job) + gt_job_data_provider = JobDataProvider(gt_job.id) - jobs = task.segment_set.job_set.filter(type=JobType.NORMAL).all() - job_data_providers = { job.id: _JobDataProvider(job) for job in jobs } + jobs = [ + s.job_set.first() + for s in task.segment_set.filter(job__type=JobType.NORMAL).all() + ] + job_data_providers = { job.id: JobDataProvider(job.id) for job in jobs } job_reports = {} for job in jobs: job_data_provider = job_data_providers[job.id] comparator = DatasetComparator(job_data_provider, gt_job_data_provider) conflicts = comparator.find_gt_conflicts() - report = QualityReport( - job=job, - job_last_updated=job.updated_date, - gt_job_last_updated=gt_job.updated_date, - ) + report = _create_report(job, gt_job, conflicts) job_reports[job.id] = (report, conflicts) # TODO: is it a separate report (the task dataset can be different from any jobs' dataset # because of frame overlaps) or a combined summary report? - task_report = QualityReport() - task_conflicts = [AnnotationConflict()] + task_report = QualityReport( + task=task, + target_last_updated=task.updated_date, + gt_last_updated=gt_job.updated_date, + + # TODO: refactor, add real data + data=dict( + parameters=dict(), + + intersection_results=dict( + frame_count=0, + frame_share_percent=0, + frames=[], + + error_count=len(conflicts), + mean_error_count=0, + mean_accuracy=0, + ) + ) + ) + task_conflicts = [] with transaction.atomic(): - # The task could have been deleted + # The task could have been deleted during processing try: Task.objects.get(id=task_id) except Task.DoesNotExist: diff --git a/cvat/apps/engine/signals.py b/cvat/apps/engine/signals.py index d803999d3634..f19564b762ea 100644 --- a/cvat/apps/engine/signals.py +++ b/cvat/apps/engine/signals.py @@ -1,4 +1,5 @@ # Copyright (C) 2019-2022 Intel Corporation +# Copyright (C) 2023 CVAT.ai Corporation # # SPDX-License-Identifier: MIT import shutil @@ -36,12 +37,6 @@ def __save_job_handler(instance, created, **kwargs): db_task.status = status db_task.save() -@receiver(post_save, sender=Job, - dispatch_uid=__name__ + ".save_job_handler-update_quality_stats") -def __save_job_handler__update_quality_metrics(instance, created, **kwargs): - qc.QueueJobManager().schedule_quality_check_job(instance.segment.task) - - @receiver(post_save, sender=User, dispatch_uid=__name__ + ".save_user_handler") def __save_user_handler(instance, **kwargs): @@ -83,3 +78,16 @@ def __delete_data_handler(instance, **kwargs): dispatch_uid=__name__ + ".delete_cloudstorage_handler") def __delete_cloudstorage_handler(instance, **kwargs): shutil.rmtree(instance.get_storage_dirname(), ignore_errors=True) + + +# TODO: handle nested field updates (e.g. labels, annotations, import, export, etc.) + +@receiver(post_save, sender=Job, + dispatch_uid=__name__ + ".save_job_handler-update_quality_metrics") +def __save_job_handler__update_quality_metrics(instance, created, **kwargs): + qc.QueueJobManager().schedule_quality_check_job(instance.segment.task) + +@receiver(post_save, sender=Task, + dispatch_uid=__name__ + ".save_task_handler-update_quality_metrics") +def __save_task_handler__update_quality_metrics(instance, created, **kwargs): + qc.QueueJobManager().schedule_quality_check_job(instance) diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index 9c16e2691154..2d4c4d8fd81e 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -7,7 +7,6 @@ import os import os.path as osp import textwrap -from typing import cast import pytz import traceback from datetime import datetime @@ -1667,8 +1666,7 @@ def preview(self, request, pk): simple_filters=None, filter_fields=None, search_fields=None, pagination_class=None, ordering_fields=None) def conflicts(self, request, pk): - # TODO: add automatic type inference to get_object - this_job = cast(Job, self.get_object()) # call check_object_permissions as well + this_job = Job.objects.get(pk=pk) # call check_object_permissions as well gt_job = this_job.segment.task.gt_job if not gt_job: @@ -2283,7 +2281,7 @@ class QualityReportViewSet(viewsets.GenericViewSet, mixins.ListModelMixin, mixins.RetrieveModelMixin ): queryset = QualityReport.objects.prefetch_related( - 'job__segment__task' + 'job__segment__task', 'task', 'task__project' ).all() diff --git a/cvat/settings/base.py b/cvat/settings/base.py index 87eb6533c6c6..a443655c0169 100644 --- a/cvat/settings/base.py +++ b/cvat/settings/base.py @@ -331,7 +331,7 @@ class CVAT_QUEUES(Enum): 'HOST': 'localhost', 'PORT': 6379, 'DB': 0, - 'DEFAULT_TIMEOUT': '15m', + 'DEFAULT_TIMEOUT': '30m', }, } diff --git a/supervisord/utils.conf b/supervisord/utils.conf index edea3746c254..82979cd09927 100644 --- a/supervisord/utils.conf +++ b/supervisord/utils.conf @@ -30,7 +30,7 @@ numprocs=1 [program:rqscheduler] command=%(ENV_HOME)s/wait-for-it.sh %(ENV_CVAT_REDIS_HOST)s:6379 -t 0 -- bash -ic \ - "python3 /opt/venv/bin/rqscheduler --host %(ENV_CVAT_REDIS_HOST)s --password '%(ENV_CVAT_REDIS_PASSWORD)s' -i 30" + "python3 ~/rqscheduler.py --host %(ENV_CVAT_REDIS_HOST)s --password '%(ENV_CVAT_REDIS_PASSWORD)s' -i 30 --path '%(ENV_HOME)s'" environment=SSH_AUTH_SOCK="/tmp/ssh-agent.sock",VECTOR_EVENT_HANDLER="SynchronousLogstashHandler" numprocs=1 diff --git a/supervisord/worker.quality_reports.conf b/supervisord/worker.quality_reports.conf index c7ec68fc7437..e00dbb7a1201 100644 --- a/supervisord/worker.quality_reports.conf +++ b/supervisord/worker.quality_reports.conf @@ -24,7 +24,7 @@ autorestart=true [program:rqworker_quality_reports] command=%(ENV_HOME)s/wait-for-it.sh %(ENV_CVAT_REDIS_HOST)s:6379 -t 0 -- bash -ic " \ - exec python3 %(ENV_HOME)s/manage.py rqworker -v 3 export \ + exec python3 %(ENV_HOME)s/manage.py rqworker -v 3 quality_reports \ --worker-class cvat.rqworker.DefaultWorker \ " environment=SSH_AUTH_SOCK="/tmp/ssh-agent.sock",VECTOR_EVENT_HANDLER="SynchronousLogstashHandler" diff --git a/tests/python/shared/assets/cvat_db/data.json b/tests/python/shared/assets/cvat_db/data.json index cf9b24193469..fc8e38fe1eef 100644 --- a/tests/python/shared/assets/cvat_db/data.json +++ b/tests/python/shared/assets/cvat_db/data.json @@ -9735,6 +9735,1436 @@ "cloud_storage_id": null } }, +{ + "model": "engine.qualityreport", + "pk": 1, + "fields": { + "job": 27, + "task": null, + "parent": null, + "created_date": "2023-04-22T14:49:30.751Z", + "target_last_updated": "2023-04-14T14:58:50.944Z", + "gt_last_updated": "2023-04-14T15:03:25.984Z", + "data": { + "parameters": {}, + "intersection_results": { + "frames": [], + "error_count": 72, + "frame_count": 0, + "mean_accuracy": 0, + "mean_error_count": 0, + "frame_share_percent": 0 + } + } + } +}, +{ + "model": "engine.qualityreport", + "pk": 2, + "fields": { + "job": null, + "task": 22, + "parent": null, + "created_date": "2023-04-22T14:49:30.867Z", + "target_last_updated": "2023-04-14T15:03:25.969Z", + "gt_last_updated": "2023-04-14T15:03:25.984Z", + "data": { + "parameters": {}, + "intersection_results": { + "frames": [], + "error_count": 72, + "frame_count": 0, + "mean_accuracy": 0, + "mean_error_count": 0, + "frame_share_percent": 0 + } + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 1, + "fields": { + "report": 1, + "frame_id": 0, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 384, + "type": "rectangle", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 2, + "fields": { + "report": 1, + "frame_id": 0, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 373, + "type": "rectangle", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 3, + "fields": { + "report": 1, + "frame_id": 0, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 483, + "type": "rectangle", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 4, + "fields": { + "report": 1, + "frame_id": 0, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 494, + "type": "rectangle", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 5, + "fields": { + "report": 1, + "frame_id": 1, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 374, + "type": "rectangle", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 6, + "fields": { + "report": 1, + "frame_id": 1, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 385, + "type": "rectangle", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 7, + "fields": { + "report": 1, + "frame_id": 1, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 428, + "type": "polygon", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 8, + "fields": { + "report": 1, + "frame_id": 1, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 484, + "type": "rectangle", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 9, + "fields": { + "report": 1, + "frame_id": 1, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 495, + "type": "rectangle", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 10, + "fields": { + "report": 1, + "frame_id": 1, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 518, + "type": "ellipse", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 11, + "fields": { + "report": 1, + "frame_id": 1, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 485, + "type": "polygon", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 12, + "fields": { + "report": 1, + "frame_id": 2, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 386, + "type": "rectangle", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 13, + "fields": { + "report": 1, + "frame_id": 2, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 375, + "type": "rectangle", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 14, + "fields": { + "report": 1, + "frame_id": 2, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 429, + "type": "polygon", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 15, + "fields": { + "report": 1, + "frame_id": 2, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 508, + "type": "mask", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 16, + "fields": { + "report": 1, + "frame_id": 2, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 495, + "type": "points", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 17, + "fields": { + "report": 1, + "frame_id": 2, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 505, + "type": "polyline", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 18, + "fields": { + "report": 1, + "frame_id": 3, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 387, + "type": "rectangle", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 19, + "fields": { + "report": 1, + "frame_id": 3, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 376, + "type": "rectangle", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 20, + "fields": { + "report": 1, + "frame_id": 3, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 430, + "type": "polygon", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 21, + "fields": { + "report": 1, + "frame_id": 3, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 497, + "type": "rectangle", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 22, + "fields": { + "report": 1, + "frame_id": 3, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 495, + "type": "points", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 23, + "fields": { + "report": 1, + "frame_id": 3, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 487, + "type": "polygon", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 24, + "fields": { + "report": 1, + "frame_id": 4, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 388, + "type": "rectangle", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 25, + "fields": { + "report": 1, + "frame_id": 4, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 377, + "type": "rectangle", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 26, + "fields": { + "report": 1, + "frame_id": 4, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 431, + "type": "polygon", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 27, + "fields": { + "report": 1, + "frame_id": 4, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 487, + "type": "rectangle", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 28, + "fields": { + "report": 1, + "frame_id": 4, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 479, + "type": "polygon", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 29, + "fields": { + "report": 1, + "frame_id": 4, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 488, + "type": "polygon", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 30, + "fields": { + "report": 1, + "frame_id": 5, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 378, + "type": "rectangle", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 31, + "fields": { + "report": 1, + "frame_id": 5, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 389, + "type": "rectangle", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 32, + "fields": { + "report": 1, + "frame_id": 5, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 432, + "type": "polygon", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 33, + "fields": { + "report": 1, + "frame_id": 5, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 499, + "type": "rectangle", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 34, + "fields": { + "report": 1, + "frame_id": 5, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 488, + "type": "rectangle", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 35, + "fields": { + "report": 1, + "frame_id": 5, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 538, + "type": "polygon", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 36, + "fields": { + "report": 1, + "frame_id": 5, + "type": "mismatching_annotation", + "message": "", + "data": { + "kind": "label", + "actual": 1, + "expected": 2, + "annotation_ids": [ + { + "id": 480, + "type": "polygon", + "job_id": 27 + }, + { + "id": 437, + "type": "polygon", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 37, + "fields": { + "report": 1, + "frame_id": 6, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 390, + "type": "rectangle", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 38, + "fields": { + "report": 1, + "frame_id": 6, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 379, + "type": "rectangle", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 39, + "fields": { + "report": 1, + "frame_id": 6, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 433, + "type": "polygon", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 40, + "fields": { + "report": 1, + "frame_id": 6, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 500, + "type": "rectangle", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 41, + "fields": { + "report": 1, + "frame_id": 6, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 489, + "type": "rectangle", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 42, + "fields": { + "report": 1, + "frame_id": 6, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 537, + "type": "polygon", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 43, + "fields": { + "report": 1, + "frame_id": 6, + "type": "mismatching_annotation", + "message": "", + "data": { + "kind": "label", + "actual": 1, + "expected": 2, + "annotation_ids": [ + { + "id": 490, + "type": "polygon", + "job_id": 27 + }, + { + "id": 438, + "type": "polygon", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 44, + "fields": { + "report": 1, + "frame_id": 7, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 391, + "type": "rectangle", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 45, + "fields": { + "report": 1, + "frame_id": 7, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 380, + "type": "rectangle", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 46, + "fields": { + "report": 1, + "frame_id": 7, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 434, + "type": "polygon", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 47, + "fields": { + "report": 1, + "frame_id": 7, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 439, + "type": "polygon", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 48, + "fields": { + "report": 1, + "frame_id": 7, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 490, + "type": "rectangle", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 49, + "fields": { + "report": 1, + "frame_id": 7, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 501, + "type": "rectangle", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 50, + "fields": { + "report": 1, + "frame_id": 7, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 491, + "type": "polygon", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 51, + "fields": { + "report": 1, + "frame_id": 8, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 392, + "type": "rectangle", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 52, + "fields": { + "report": 1, + "frame_id": 8, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 381, + "type": "rectangle", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 53, + "fields": { + "report": 1, + "frame_id": 8, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 435, + "type": "polygon", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 54, + "fields": { + "report": 1, + "frame_id": 8, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 440, + "type": "polygon", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 55, + "fields": { + "report": 1, + "frame_id": 8, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 491, + "type": "rectangle", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 56, + "fields": { + "report": 1, + "frame_id": 8, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 502, + "type": "rectangle", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 57, + "fields": { + "report": 1, + "frame_id": 8, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 483, + "type": "polygon", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 58, + "fields": { + "report": 1, + "frame_id": 8, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 492, + "type": "polygon", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 59, + "fields": { + "report": 1, + "frame_id": 9, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 382, + "type": "rectangle", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 60, + "fields": { + "report": 1, + "frame_id": 9, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 393, + "type": "rectangle", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 61, + "fields": { + "report": 1, + "frame_id": 9, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 436, + "type": "polygon", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 62, + "fields": { + "report": 1, + "frame_id": 9, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 441, + "type": "polygon", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 63, + "fields": { + "report": 1, + "frame_id": 9, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 492, + "type": "rectangle", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 64, + "fields": { + "report": 1, + "frame_id": 9, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 503, + "type": "rectangle", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 65, + "fields": { + "report": 1, + "frame_id": 9, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 484, + "type": "polygon", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 66, + "fields": { + "report": 1, + "frame_id": 10, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 394, + "type": "rectangle", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 67, + "fields": { + "report": 1, + "frame_id": 10, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 383, + "type": "rectangle", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 68, + "fields": { + "report": 1, + "frame_id": 10, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 436, + "type": "polygon", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 69, + "fields": { + "report": 1, + "frame_id": 10, + "type": "missing_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 441, + "type": "polygon", + "job_id": 28 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 70, + "fields": { + "report": 1, + "frame_id": 10, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 504, + "type": "rectangle", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 71, + "fields": { + "report": 1, + "frame_id": 10, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 493, + "type": "rectangle", + "job_id": 27 + } + ] + } + } +}, +{ + "model": "engine.annotationconflict", + "pk": 72, + "fields": { + "report": 1, + "frame_id": 10, + "type": "extra_annotation", + "message": "", + "data": { + "annotation_ids": [ + { + "id": 484, + "type": "polygon", + "job_id": 27 + } + ] + } + } +}, { "model": "webhooks.webhook", "pk": 1, diff --git a/tests/python/shared/assets/quality_reports.json b/tests/python/shared/assets/quality_reports.json index d2bde8862b45..ae13946a185c 100644 --- a/tests/python/shared/assets/quality_reports.json +++ b/tests/python/shared/assets/quality_reports.json @@ -1,6 +1,47 @@ { - "count": 0, + "count": 2, "next": null, "previous": null, - "results": [] + "results": [ + { + "created_date": "2023-04-22T14:49:30.751747Z", + "gt_last_updated": "2023-04-14T15:03:25.984000Z", + "job_id": 27, + "parameters": { + "iou_threshold": 0.0 + }, + "parent_id": null, + "summary": { + "conflicts_count": 0, + "ds_count": 0, + "frame_count": 0, + "frame_share_percent": 0.0, + "gt_count": 0, + "valid_count": 0 + }, + "target": "job", + "target_last_updated": "2023-04-14T14:58:50.944000Z", + "task_id": null + }, + { + "created_date": "2023-04-22T14:49:30.867049Z", + "gt_last_updated": "2023-04-14T15:03:25.984000Z", + "job_id": null, + "parameters": { + "iou_threshold": 0.0 + }, + "parent_id": null, + "summary": { + "conflicts_count": 0, + "ds_count": 0, + "frame_count": 0, + "frame_share_percent": 0.0, + "gt_count": 0, + "valid_count": 0 + }, + "target": "task", + "target_last_updated": "2023-04-14T15:03:25.969000Z", + "task_id": 22 + } + ] } \ No newline at end of file From 7c00813d4f227aebf8a7a621f3f2d5703ac55a4b Mon Sep 17 00:00:00 2001 From: klakhov Date: Sun, 23 Apr 2023 15:23:15 +0300 Subject: [PATCH 035/257] added colors for quality page --- .../task-analytics-page/quality/job-list.tsx | 9 ++++++++- .../task-analytics-page/quality/mean-quality.tsx | 4 ++-- .../quality/task-quality-component.tsx | 2 +- .../src/components/task-analytics-page/styles.scss | 2 +- cvat-ui/src/utils/quality-color.ts | 12 ++++++++++-- 5 files changed, 22 insertions(+), 7 deletions(-) diff --git a/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx b/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx index 12b820d89796..8cbcc94afef0 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx @@ -19,6 +19,7 @@ import { import CVATTooltip from 'components/common/cvat-tooltip'; import { CombinedState } from 'reducers'; import { useSelector } from 'react-redux'; +import { getQualityColor } from 'utils/quality-color'; interface Props { task: Task; @@ -148,7 +149,13 @@ function JobListComponent(props: Props): JSX.Element { key: 'quality', className: 'cvat-job-item-quality', render: (jobInstance: Job): JSX.Element => ( - {jobsReports[jobInstance.id] ? jobsReports[jobInstance.id].summary.meanAccuracy : 0} + + {jobsReports[jobInstance.id] ? jobsReports[jobInstance.id].summary.meanAccuracy : 'N/A'} + ), }, ]; diff --git a/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx b/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx index 4e7cae85c76f..c6054bb9768a 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx @@ -10,7 +10,7 @@ import { Col } from 'antd/lib/grid'; import Statistic from 'antd/lib/statistic'; import Card from 'antd/lib/card'; import moment from 'moment'; -import { getColor } from 'utils/quality-color'; +import { getQualityColor } from 'utils/quality-color'; import { QualityReport, Task } from 'cvat-core-wrapper'; import { useSelector } from 'react-redux'; import { CombinedState } from 'reducers'; @@ -38,7 +38,7 @@ function MeanQuality(props: Props): JSX.Element { title='Mean annotaion quality' value={data.summary.meanAccuracy} precision={2} - valueStyle={{ color: getColor(data.summary.meanAccuracy) }} + valueStyle={{ color: getQualityColor(data.summary.meanAccuracy) }} suffix='%' />
diff --git a/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx b/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx index 4d94d6c062b1..7a65b2e9605b 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx @@ -39,7 +39,7 @@ function TaskQualityComponent(props: Props): JSX.Element { - + diff --git a/cvat-ui/src/components/task-analytics-page/styles.scss b/cvat-ui/src/components/task-analytics-page/styles.scss index 67ac7f25d066..10e2cdba066e 100644 --- a/cvat-ui/src/components/task-analytics-page/styles.scss +++ b/cvat-ui/src/components/task-analytics-page/styles.scss @@ -37,7 +37,7 @@ right: $grid-unit-size; } -.cvat-analytics-page { +.cvat-task-analytics-page { height: 100%; } diff --git a/cvat-ui/src/utils/quality-color.ts b/cvat-ui/src/utils/quality-color.ts index a4bb333a0448..5373a1457c70 100644 --- a/cvat-ui/src/utils/quality-color.ts +++ b/cvat-ui/src/utils/quality-color.ts @@ -6,6 +6,7 @@ enum QualityColors { GREEN = '#237804', YELLOW = '#ffec3d', RED = '#ff4d4f', + GRAY = '#8c8c8c', } const thresholds = { @@ -14,13 +15,20 @@ const thresholds = { high: 91, }; -export function getColor(value: number): QualityColors { +export function getQualityColor(value?: number): QualityColors { + if (!value) { + return QualityColors.GRAY; + } + if (value >= thresholds.high) { return QualityColors.GREEN; } if (value >= thresholds.middle) { return QualityColors.YELLOW; } + if (value >= thresholds.low) { + return QualityColors.RED; + } - return QualityColors.RED; + return QualityColors.GRAY; } From bf3468379f2443ca15c64beca7f46c4af017848b Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 24 Apr 2023 22:37:05 +0300 Subject: [PATCH 036/257] Update the comparison script --- compare_datasets.py | 537 +++++++++++++++++++++++++++----------------- 1 file changed, 337 insertions(+), 200 deletions(-) diff --git a/compare_datasets.py b/compare_datasets.py index 1adc6e700f58..ab7c55185409 100644 --- a/compare_datasets.py +++ b/compare_datasets.py @@ -10,7 +10,7 @@ from collections import OrderedDict from enum import Enum from glob import glob -from typing import Any, Callable, Dict, List, Optional, cast +from typing import Any, Callable, Dict, List, Optional, Sequence, cast import datumaro as dm import numpy as np @@ -18,7 +18,7 @@ from datumaro.components.extractor import DEFAULT_SUBSET_NAME from datumaro.util.image import Image from defusedxml import ElementTree -from scipy.stats import gmean +# from scipy.stats import gmean class CvatPath: @@ -777,6 +777,11 @@ def distance(self, a, b): ) +def arr_div(a_arr: np.ndarray, b_arr: np.ndarray): + divisor = b_arr.copy() + divisor[b_arr == 0] = 1 + return a_arr / divisor + class _DistanceComparator(dm.ops.DistanceComparator): def __init__( self, @@ -792,6 +797,22 @@ def __init__( self.included_ann_types = included_ann_types self.return_distances = return_distances + def _instance_bbox(self, instance_anns: Sequence[dm.Annotation]): + return dm.ops.max_bbox( + a.get_bbox() if isinstance(a, dm.Skeleton) else a + for a in instance_anns + if hasattr(a, 'get_bbox') + and not a.attributes.get('outside', False) + ) + + @staticmethod + def _get_ann_type(t, item): + return [ + a for a in item.annotations + if a.type == t + and not a.attributes.get('outside', False) + ] + def _match_ann_type(self, t, *args): if t not in self.included_ann_types: return None @@ -858,11 +879,7 @@ def match_points(self, item_a, item_b): for s in [item_a.annotations, item_b.annotations]: s_instances = dm.ops.find_instances(s) for instance_group in s_instances: - instance_bbox = dm.ops.max_bbox( - a.get_bbox() if isinstance(a, dm.Skeleton) else a - for a in instance_group - if hasattr(a, 'get_bbox') - ) + instance_bbox = self._instance_bbox(instance_group) for ann in instance_group: instance_map[id(ann)] = [instance_group, instance_bbox] @@ -946,6 +963,11 @@ def match_skeletons(self, item_a, item_b): # no per-point attributes currently in CVAT ) + if all(v == dm.Points.Visibility.absent for v in merged_points.visibility): + # The whole skeleton is outside, exclude it + skeleton_map[id(skeleton)] = None + continue + points_map[id(merged_points)] = skeleton skeleton_map[id(skeleton)] = merged_points source_points.append(merged_points) @@ -953,14 +975,12 @@ def match_skeletons(self, item_a, item_b): instance_map = {} for source in [item_a.annotations, item_b.annotations]: for instance_group in dm.ops.find_instances(source): - instance_bbox = dm.ops.max_bbox( - a.get_bbox() if isinstance(a, dm.Skeleton) else a - for a in instance_group - ) + instance_bbox = self._instance_bbox(instance_group) instance_group = [ skeleton_map[id(a)] if isinstance(a, dm.Skeleton) else a for a in instance_group + if not isinstance(a, dm.Skeleton) or skeleton_map[id(a)] is not None ] for ann in instance_group: instance_map[id(ann)] = [instance_group, instance_bbox] @@ -1027,6 +1047,8 @@ def __init__(self, categories: dm.CategoriesInfo): "keyframe", # indicates the way annotation obtained, meaningless to compare "z_order", # TODO: compare relative or 'visible' z_order "group", # TODO: changes from task to task. But must be compared for existence + "rotation", # should be handled by other means + "outside", # should be handled by other means ] self.included_ann_types = [ dm.AnnotationType.bbox, @@ -1080,6 +1102,7 @@ def __init__(self, ds_dataset: dm.Dataset, gt_dataset: dm.Dataset) -> None: self._frame_results = {} self._common_results = {"ds_annotations_count": 0} + self._ignored_frames = [] def _dm_ann_to_ann_id( self, ann: dm.Annotation, item: dm.DatasetItem, dataset: dm.Dataset @@ -1102,6 +1125,9 @@ def _find_gt_conflicts(self) -> List[AnnotationConflict]: if not ds_item: continue # we need to compare only intersecting frames + if gt_item.id in self._ignored_frames: + continue + self._process_frame(ds_item, gt_item) def _process_frame(self, ds_item, gt_item): @@ -1122,14 +1148,16 @@ def _generate_frame_annotation_conflicts( ) -> List[AnnotationConflict]: conflicts = [] - shape_confusion_matrix_labels = { - t.name: i for i, t in enumerate(self._comparator.included_ann_types) - } - shape_confusion_matrix_labels[None] = len(shape_confusion_matrix_labels) - shape_confusion_matrix_label_count = len(shape_confusion_matrix_labels) - shape_confusion_matrix = np.zeros( - (shape_confusion_matrix_label_count, shape_confusion_matrix_label_count), dtype=int - ) + # TODO: try to use PDJ for per-keypoint results + # shape_confusion_matrix_labels = { + # t: t.name for t in self._comparator.included_ann_types + # } + # shape_confusion_matrix_labels[None] = 'unmatched' + # shape_confusion_matrix_labels_rmap = { k: i for i, k in enumerate(shape_confusion_matrix_labels.keys()) } + # shape_confusion_matrix_label_count = len(shape_confusion_matrix_labels) + # shape_confusion_matrix = np.zeros( + # (shape_confusion_matrix_label_count, shape_confusion_matrix_label_count), dtype=int + # ) merged_results = [[], [], [], [], {}] for shape_type in self._comparator.included_ann_types: @@ -1138,16 +1166,17 @@ def _generate_frame_annotation_conflicts( merged_results[-1].update(frame_results[shape_type][-1]) - matches, mismatches, gt_unmatched, ds_unmatched = frame_results[shape_type][:-1] - for gt_ann, ds_ann in itertools.chain( - matches, - mismatches, - itertools.zip_longest(ds_unmatched, itertools.repeat(None)), - itertools.zip_longest(itertools.repeat(None), gt_unmatched) - ): - ds_label_idx = shape_confusion_matrix_labels[ds_ann.type if ds_ann else ds_ann] - gt_label_idx = shape_confusion_matrix_labels[gt_ann.type if gt_ann else gt_ann] - shape_confusion_matrix[ds_label_idx][gt_label_idx] += 1 + # matches, mismatches, gt_unmatched, ds_unmatched = frame_results[shape_type][:4] + # for gt_ann, ds_ann in itertools.chain( + # matches, + # mismatches, + # zip(itertools.repeat(None), ds_unmatched), + # zip(gt_unmatched, itertools.repeat(None)) + # ): + # # TODO: separate keys and displayed labels + # ds_label_idx = shape_confusion_matrix_labels_rmap[ds_ann.type if ds_ann else ds_ann] + # gt_label_idx = shape_confusion_matrix_labels_rmap[gt_ann.type if gt_ann else gt_ann] + # shape_confusion_matrix[ds_label_idx][gt_label_idx] += 1 matches, mismatches, gt_unmatched, ds_unmatched, pairwise_distances = merged_results @@ -1250,140 +1279,152 @@ def _find_best_unmatched_distance(shape): invalid_labels_count = len(mismatches) total_labels_count = valid_labels_count + invalid_labels_count - matched_anns = [] - mismatched_anns = [] - valid_attributes_count = 0 - invalid_attributes_count = 0 - missing_attributes_count = 0 - extra_attributes_count = 0 - total_attributes_count = 0 - ds_attributes_count = 0 - gt_attributes_count = 0 - for gt_ann, ds_ann in matches: - # Datumaro wont match attributes - ( - attr_matches, - attr_mismatches, - attr_gt_extra, - attr_ds_extra, - ) = self._comparator.match_attrs(gt_ann, ds_ann) - - for mismatched_attr in attr_mismatches: - conflicts.append( - AnnotationConflict( - frame_id=frame_id, - type=AnnotationConflictType.MISMATCHING_ANNOTATION, - data={ - "annotation_ids": [ - self._dm_ann_to_ann_id( - ds_ann, ds_item, self._ds_dataset - ), - self._dm_ann_to_ann_id( - gt_ann, gt_item, self._gt_dataset - ), - ], - "kind": MismatchingAnnotationKind.ATTRIBUTE, - "attribute": mismatched_attr, - "expected": gt_ann.attributes[mismatched_attr], - "actual": ds_ann.attributes[mismatched_attr], - }, - ) - ) - - for extra_attr in attr_gt_extra: - conflicts.append( - AnnotationConflict( - frame_id=frame_id, - type=AnnotationConflictType.MISMATCHING_ANNOTATION, - data={ - "annotation_ids": [ - self._dm_ann_to_ann_id( - ds_ann, ds_item, self._ds_dataset - ), - self._dm_ann_to_ann_id( - gt_ann, gt_item, self._gt_dataset - ), - ], - "kind": MismatchingAnnotationKind.ATTRIBUTE, - "attribute": mismatched_attr, - "expected": gt_ann.attributes[extra_attr], - "actual": None, - }, - ) - ) - - for extra_attr in attr_ds_extra: - conflicts.append( - AnnotationConflict( - frame_id=frame_id, - type=AnnotationConflictType.MISMATCHING_ANNOTATION, - data={ - "annotation_ids": [ - self._dm_ann_to_ann_id( - ds_ann, ds_item, self._ds_dataset - ), - self._dm_ann_to_ann_id( - gt_ann, gt_item, self._gt_dataset - ), - ], - "kind": MismatchingAnnotationKind.ATTRIBUTE, - "attribute": mismatched_attr, - "expected": None, - "actual": ds_ann.attributes[extra_attr], - }, - ) - ) - - attrs_match = (0 == len(attr_mismatches) + len(attr_gt_extra) + len(attr_ds_extra)) - if attrs_match: - matched_anns.append((gt_ann, ds_ann)) - else: - mismatched_anns.append((gt_ann, ds_ann)) - - valid_attributes_count += len(attr_matches) - invalid_attributes_count += len(attr_mismatches) - missing_attributes_count += len(attr_gt_extra) - extra_attributes_count += len(attr_ds_extra) - total_attributes_count += ( - len(attr_matches) - + len(attr_mismatches) - + len(attr_gt_extra) - + len(attr_ds_extra) - ) - ds_attributes_count += len(attr_matches) + len(attr_mismatches) + len(attr_ds_extra) - gt_attributes_count += len(attr_matches) + len(attr_mismatches) + len(attr_gt_extra) + # matched_anns = [] + # mismatched_anns = [] + # valid_attributes_count = 0 + # invalid_attributes_count = 0 + # missing_attributes_count = 0 + # extra_attributes_count = 0 + # total_attributes_count = 0 + # ds_attributes_count = 0 + # gt_attributes_count = 0 + # for gt_ann, ds_ann in matches: + # # Datumaro wont match attributes + # ( + # attr_matches, + # attr_mismatches, + # attr_gt_extra, + # attr_ds_extra, + # ) = self._comparator.match_attrs(gt_ann, ds_ann) + + # for mismatched_attr in attr_mismatches: + # conflicts.append( + # AnnotationConflict( + # frame_id=frame_id, + # type=AnnotationConflictType.MISMATCHING_ANNOTATION, + # data={ + # "annotation_ids": [ + # self._dm_ann_to_ann_id( + # ds_ann, ds_item, self._ds_dataset + # ), + # self._dm_ann_to_ann_id( + # gt_ann, gt_item, self._gt_dataset + # ), + # ], + # "kind": MismatchingAnnotationKind.ATTRIBUTE, + # "attribute": mismatched_attr, + # "expected": gt_ann.attributes[mismatched_attr], + # "actual": ds_ann.attributes[mismatched_attr], + # }, + # ) + # ) + + # for extra_attr in attr_gt_extra: + # conflicts.append( + # AnnotationConflict( + # frame_id=frame_id, + # type=AnnotationConflictType.MISMATCHING_ANNOTATION, + # data={ + # "annotation_ids": [ + # self._dm_ann_to_ann_id( + # ds_ann, ds_item, self._ds_dataset + # ), + # self._dm_ann_to_ann_id( + # gt_ann, gt_item, self._gt_dataset + # ), + # ], + # "kind": MismatchingAnnotationKind.ATTRIBUTE, + # "attribute": mismatched_attr, + # "expected": gt_ann.attributes[extra_attr], + # "actual": None, + # }, + # ) + # ) + + # for extra_attr in attr_ds_extra: + # conflicts.append( + # AnnotationConflict( + # frame_id=frame_id, + # type=AnnotationConflictType.MISMATCHING_ANNOTATION, + # data={ + # "annotation_ids": [ + # self._dm_ann_to_ann_id( + # ds_ann, ds_item, self._ds_dataset + # ), + # self._dm_ann_to_ann_id( + # gt_ann, gt_item, self._gt_dataset + # ), + # ], + # "kind": MismatchingAnnotationKind.ATTRIBUTE, + # "attribute": mismatched_attr, + # "expected": None, + # "actual": ds_ann.attributes[extra_attr], + # }, + # ) + # ) + + # attrs_match = (0 == (len(attr_mismatches) + len(attr_gt_extra) + len(attr_ds_extra))) + # if attrs_match: + # matched_anns.append((gt_ann, ds_ann)) + # else: + # mismatched_anns.append((gt_ann, ds_ann)) + + # valid_attributes_count += len(attr_matches) + # invalid_attributes_count += len(attr_mismatches) + # missing_attributes_count += len(attr_gt_extra) + # extra_attributes_count += len(attr_ds_extra) + # total_attributes_count += ( + # len(attr_matches) + # + len(attr_mismatches) + # + len(attr_gt_extra) + # + len(attr_ds_extra) + # ) + # ds_attributes_count += len(attr_matches) + len(attr_mismatches) + len(attr_ds_extra) + # gt_attributes_count += len(attr_matches) + len(attr_mismatches) + len(attr_gt_extra) confusion_matrix_labels = { - label.name: i + i: label.name for i, label in enumerate(self._gt_dataset.categories()[dm.AnnotationType.label]) + if not label.parent + } + confusion_matrix_labels[None] = 'unmatched' + confusion_matrix_labels_rmap = { + k: i for i, k in enumerate(confusion_matrix_labels.keys()) } - confusion_matrix_labels[None] = len(confusion_matrix_labels) confusion_matrix_label_count = len(confusion_matrix_labels) confusion_matrix = np.zeros( (confusion_matrix_label_count, confusion_matrix_label_count), dtype=int ) for gt_ann, ds_ann in itertools.chain( # fully matched annotations - shape, label, attributes - matched_anns, - mismatched_anns, - itertools.zip_longest(ds_unmatched, itertools.repeat(None)), - itertools.zip_longest(itertools.repeat(None), gt_unmatched) + matches, + mismatches, + zip(itertools.repeat(None), ds_unmatched), + zip(gt_unmatched, itertools.repeat(None)), ): - ds_label_idx = confusion_matrix_labels[ds_ann.label if ds_ann else ds_ann] - gt_label_idx = confusion_matrix_labels[gt_ann.label if gt_ann else gt_ann] - confusion_matrix[ds_label_idx][gt_label_idx] += 1 + # TODO: separate keys and displayed labels + ds_label_idx = confusion_matrix_labels_rmap[ds_ann.label if ds_ann else ds_ann] + gt_label_idx = confusion_matrix_labels_rmap[gt_ann.label if gt_ann else gt_ann] + confusion_matrix[ds_label_idx, gt_label_idx] += 1 + + # matched_shape_counts = np.diag(shape_confusion_matrix) + # ds_shape_counts = np.sum(shape_confusion_matrix, axis=1) + # gt_shape_counts = np.sum(shape_confusion_matrix, axis=0) + # shape_accuracies = arr_div(matched_shape_counts, ds_shape_counts + gt_shape_counts - matched_shape_counts) + # shape_precisions = arr_div(matched_shape_counts, ds_shape_counts) + # shape_recalls = arr_div(matched_shape_counts, gt_shape_counts) matched_ann_counts = np.diag(confusion_matrix) ds_ann_counts = np.sum(confusion_matrix, axis=1) gt_ann_counts = np.sum(confusion_matrix, axis=0) - label_accuracies = matched_ann_counts / ((ds_ann_counts + gt_ann_counts - matched_ann_counts) or 1) - label_precisions = matched_ann_counts / (ds_ann_counts or 1) - label_recalls = matched_ann_counts / (gt_ann_counts or 1) + label_accuracies = arr_div(matched_ann_counts, ds_ann_counts + gt_ann_counts - matched_ann_counts) + label_precisions = arr_div(matched_ann_counts, ds_ann_counts) + label_recalls = arr_div(matched_ann_counts, gt_ann_counts) - valid_annotations_count = np,sum(matched_ann_counts) - missing_annotations_count = np.sum(confusion_matrix[:, confusion_matrix_labels[None]]) - extra_annotations_count = np.sum(confusion_matrix[confusion_matrix_labels[None], :]) + valid_annotations_count = np.sum(matched_ann_counts) + missing_annotations_count = np.sum(confusion_matrix[:, confusion_matrix_labels_rmap[None]]) + extra_annotations_count = np.sum(confusion_matrix[confusion_matrix_labels_rmap[None], :]) total_annotations_count = np.sum(confusion_matrix) ds_annotations_count = np.sum(ds_ann_counts) gt_annotations_count = np.sum(gt_ann_counts) @@ -1401,7 +1442,7 @@ def _find_best_unmatched_distance(shape): precision=valid_annotations_count / (ds_annotations_count or 1), recall=valid_annotations_count / (gt_annotations_count or 1), confusion_matrix=dict( - labels=confusion_matrix_labels, + labels=list(confusion_matrix_labels.values()), axes=dict( cols='gt', rows='ds' @@ -1422,8 +1463,18 @@ def _find_best_unmatched_distance(shape): gt_count=gt_shapes_count, accuracy=valid_shapes_count / (total_shapes_count or 1), mean_iou=mean_iou, - # add per type stats - shape_confusion_matrix=shape_confusion_matrix, + # TODO: add per type stats (OKS, PDJ, ...) + # shape_confusion_matrix=dict( + # labels=list(shape_confusion_matrix_labels.values()), + # axes=dict( + # cols='gt', + # rows='ds' + # ), + # rows=shape_confusion_matrix, + # precision=shape_precisions, + # recall=shape_recalls, + # accuracy=shape_accuracies, + # ) ), label=dict( valid_count=valid_labels_count, @@ -1431,17 +1482,19 @@ def _find_best_unmatched_distance(shape): total_count=total_labels_count, accuracy=valid_labels_count / (total_labels_count or 1), ), - attribute=dict( - valid_count=valid_attributes_count, - invalid_count=invalid_attributes_count, - missing_count=missing_attributes_count, - extra_count=extra_attributes_count, - total_count=total_attributes_count, - ds_count=ds_attributes_count, - gt_count=gt_attributes_count, - accuracy=valid_attributes_count / (total_attributes_count or 1), - # add confusion matrix / per label stats - ), + # TODO: add attribute confusion matrix and decouple it + # with the label and full confusion matrices + # attribute=dict( + # valid_count=valid_attributes_count, + # invalid_count=invalid_attributes_count, + # missing_count=missing_attributes_count, + # extra_count=extra_attributes_count, + # total_count=total_attributes_count, + # ds_count=ds_attributes_count, + # gt_count=gt_attributes_count, + # accuracy=valid_attributes_count / (total_attributes_count or 1), + # # TODO: add confusion matrix / per label stats + # ), ), errors=conflicts.copy(), ) @@ -1474,6 +1527,7 @@ def _set_nested_key(d, path, value): ) full_ds_comparable_shapes_count += 1 + # accumulate stats intersection_frames = [] summary_stats = {} mean_ious = [] @@ -1487,18 +1541,21 @@ def _set_nested_key(d, path, value): ["annotation_element", "shape", "total_count"], ["annotation_element", "shape", "ds_count"], ["annotation_element", "shape", "gt_count"], + # ["annotation_element", "shape", "shape_confusion_matrix", "rows"], ["annotation_element", "label", "valid_count"], ["annotation_element", "label", "invalid_count"], ["annotation_element", "label", "total_count"], - ["annotation_element", "attribute", "valid_count"], - ["annotation_element", "attribute", "invalid_count"], - ["annotation_element", "attribute", "missing_count"], - ["annotation_element", "attribute", "extra_count"], - ["annotation_element", "attribute", "total_count"], - ["annotation_element", "attribute", "ds_count"], - ["annotation_element", "attribute", "gt_count"], + # ["annotation_element", "attribute", "valid_count"], + # ["annotation_element", "attribute", "invalid_count"], + # ["annotation_element", "attribute", "missing_count"], + # ["annotation_element", "attribute", "extra_count"], + # ["annotation_element", "attribute", "total_count"], + # ["annotation_element", "attribute", "ds_count"], + # ["annotation_element", "attribute", "gt_count"], + + ["annotations", "confusion_matrix", "rows"], ["errors_count"], ]: frame_value = _get_nested_key(frame_result, path) @@ -1510,16 +1567,56 @@ def _set_nested_key(d, path, value): mean_ious.append(frame_result["annotation_element"]["shape"]["mean_iou"]) + # shape_confusion_matrix_labels = { + # t: t.name for t in self._comparator.included_ann_types + # } + # shape_confusion_matrix_labels[None] = 'unmatched' + # shape_confusion_matrix = _get_nested_key(summary_stats, ["annotation_element", "shape", "shape_confusion_matrix", "rows"]) + # matched_shape_counts = np.diag(shape_confusion_matrix) + # ds_shape_counts = np.sum(shape_confusion_matrix, axis=1) + # gt_shape_counts = np.sum(shape_confusion_matrix, axis=0) + # shape_accuracies = arr_div(matched_shape_counts, ds_shape_counts + gt_shape_counts - matched_shape_counts) + # shape_precisions = arr_div(matched_shape_counts, ds_shape_counts) + # shape_recalls = arr_div(matched_shape_counts, gt_shape_counts) + + confusion_matrix_labels = { + i: label.name + for i, label in enumerate(self._gt_dataset.categories()[dm.AnnotationType.label]) + if not label.parent + } + confusion_matrix_labels[None] = 'unmatched' + confusion_matrix_labels_rmap = { + k: i for i, k in enumerate(confusion_matrix_labels.keys()) + } + confusion_matrix = _get_nested_key(summary_stats, ["annotations", "confusion_matrix", "rows"]) + matched_ann_counts = np.diag(confusion_matrix) + ds_ann_counts = np.sum(confusion_matrix, axis=1) + gt_ann_counts = np.sum(confusion_matrix, axis=0) + label_accuracies = arr_div(matched_ann_counts, ds_ann_counts + gt_ann_counts - matched_ann_counts) + label_precisions = arr_div(matched_ann_counts, ds_ann_counts) + label_recalls = arr_div(matched_ann_counts, gt_ann_counts) + + valid_annotations_count = np.sum(matched_ann_counts) + missing_annotations_count = np.sum(confusion_matrix[:, confusion_matrix_labels_rmap[None]]) + extra_annotations_count = np.sum(confusion_matrix[confusion_matrix_labels_rmap[None], :]) + total_annotations_count = np.sum(confusion_matrix) + ds_annotations_count = np.sum(ds_ann_counts) + gt_annotations_count = np.sum(gt_ann_counts) + mean_shape_accuracy = _get_nested_key(summary_stats, ["annotation_element", "shape", "valid_count"]) / (_get_nested_key(summary_stats, ["annotation_element", "shape", "total_count"]) or 1) mean_label_accuracy = _get_nested_key(summary_stats, ["annotation_element", "label", "valid_count"]) / (_get_nested_key(summary_stats, ["annotation_element", "label", "total_count"]) or 1) - mean_attribute_accuracy = _get_nested_key(summary_stats, ["annotation_element", "attribute", "valid_count"]) / (_get_nested_key(summary_stats, ["annotation_element", "attribute", "total_count"]) or 1) + # mean_attribute_accuracy = _get_nested_key(summary_stats, ["annotation_element", "attribute", "valid_count"]) / (_get_nested_key(summary_stats, ["annotation_element", "attribute", "total_count"]) or 1) + # TODO: this parameter is questionable and is hard to understand + # mean_accuracy = gmean([mean_shape_accuracy, mean_label_accuracy, + # mean_attribute_accuracy + # ]) + mean_error_count = summary_stats["errors_count"] / len(intersection_frames) - mean_accuracy = gmean([mean_shape_accuracy, mean_label_accuracy, mean_attribute_accuracy]) return dict( parameters=dict( included_annotation_types=[t.name for t in self._comparator.included_ann_types], - ignored_attributes=self._comparator.ignored_attrs, + # ignored_attributes=self._comparator.ignored_attrs, iou_threshold=self._comparator._annotation_comparator.iou_threshold, ), @@ -1530,41 +1627,76 @@ def _set_nested_key(d, path, value): error_count=summary_stats["errors_count"], mean_error_count=mean_error_count, - mean_accuracy=mean_accuracy, - annotation_element={ - 'shape': { - 'valid_count': _get_nested_key(summary_stats, ["annotation_element", "shape", "valid_count"]), - 'missing_count': _get_nested_key(summary_stats, ["annotation_element", "shape", "missing_count"]), - 'extra_count': _get_nested_key(summary_stats, ["annotation_element", "shape", "extra_count"]), - 'total_count': _get_nested_key(summary_stats, ["annotation_element", "shape", "total_count"]), - 'ds_count': _get_nested_key(summary_stats, ["annotation_element", "shape", "ds_count"]), - 'gt_count': _get_nested_key(summary_stats, ["annotation_element", "shape", "gt_count"]), - 'mean_iou': np.mean(mean_ious), - 'accuracy': mean_shape_accuracy, - }, - 'label': { - 'valid_count': _get_nested_key(summary_stats, ["annotation_element", "label", "valid_count"]), - 'invalid_count': _get_nested_key(summary_stats, ["annotation_element", "label", "invalid_count"]), - 'total_count': _get_nested_key(summary_stats, ["annotation_element", "label", "total_count"]), - 'accuracy': mean_label_accuracy, - }, - 'attribute': { - 'valid_count': _get_nested_key(summary_stats, ["annotation_element", "attribute", "valid_count"]), - 'invalid_count': _get_nested_key(summary_stats, ["annotation_element", "attribute", "invalid_count"]), - 'missing_count': _get_nested_key(summary_stats, ["annotation_element", "attribute", "missing_count"]), - 'extra_count': _get_nested_key(summary_stats, ["annotation_element", "attribute", "extra_count"]), - 'total_count': _get_nested_key(summary_stats, ["annotation_element", "attribute", "total_count"]), - 'ds_count': _get_nested_key(summary_stats, ["annotation_element", "attribute", "ds_count"]), - 'gt_count': _get_nested_key(summary_stats, ["annotation_element", "attribute", "gt_count"]), - 'accuracy': mean_attribute_accuracy, - }, - }, + # mean_accuracy=mean_accuracy, + + annotations=dict( + valid_count=valid_annotations_count, + missing_count=missing_annotations_count, + extra_count=extra_annotations_count, + total_count=total_annotations_count, + ds_count=ds_annotations_count, + gt_count=gt_annotations_count, + accuracy=valid_annotations_count / (total_annotations_count or 1), + precision=valid_annotations_count / (ds_annotations_count or 1), + recall=valid_annotations_count / (gt_annotations_count or 1), + confusion_matrix=dict( + labels=list(confusion_matrix_labels.values()), + axes=dict( + cols='gt', + rows='ds' + ), + rows=confusion_matrix, + precision=label_precisions, + recall=label_recalls, + accuracy=label_accuracies, + ) + ), + + annotation_element=dict( + shape=dict( + valid_count=_get_nested_key(summary_stats, ["annotation_element", "shape", "valid_count"]), + missing_count=_get_nested_key(summary_stats, ["annotation_element", "shape", "missing_count"]), + extra_count=_get_nested_key(summary_stats, ["annotation_element", "shape", "extra_count"]), + total_count=_get_nested_key(summary_stats, ["annotation_element", "shape", "total_count"]), + ds_count=_get_nested_key(summary_stats, ["annotation_element", "shape", "ds_count"]), + gt_count=_get_nested_key(summary_stats, ["annotation_element", "shape", "gt_count"]), + mean_iou=np.mean(mean_ious), + accuracy=mean_shape_accuracy, + # shape_confusion_matrix=dict( + # labels=list(shape_confusion_matrix_labels.values()), + # axes=dict( + # cols='gt', + # rows='ds' + # ), + # # rows=shape_confusion_matrix, + # precision=shape_precisions, + # recall=shape_recalls, + # accuracy=shape_accuracies, + # ) + ), + label=dict( + valid_count=_get_nested_key(summary_stats, ["annotation_element", "label", "valid_count"]), + invalid_count=_get_nested_key(summary_stats, ["annotation_element", "label", "invalid_count"]), + total_count=_get_nested_key(summary_stats, ["annotation_element", "label", "total_count"]), + accuracy=mean_label_accuracy, + ), + # attribute=dict( + # valid_count=_get_nested_key(summary_stats, ["annotation_element", "attribute", "valid_count"]), + # invalid_count=_get_nested_key(summary_stats, ["annotation_element", "attribute", "invalid_count"]), + # missing_count=_get_nested_key(summary_stats, ["annotation_element", "attribute", "missing_count"]), + # extra_count=_get_nested_key(summary_stats, ["annotation_element", "attribute", "extra_count"]), + # total_count=_get_nested_key(summary_stats, ["annotation_element", "attribute", "total_count"]), + # ds_count=_get_nested_key(summary_stats, ["annotation_element", "attribute", "ds_count"]), + # gt_count=_get_nested_key(summary_stats, ["annotation_element", "attribute", "gt_count"]), + # accuracy=mean_attribute_accuracy, + # ), + ), ), full_dataset=dict( frame_count=len(self._ds_dataset), shapes_count=full_ds_comparable_shapes_count, - attributes_count=full_ds_comparable_attributes_count, + # attributes_count=full_ds_comparable_attributes_count, ), frame_results=self._frame_results, @@ -1584,7 +1716,10 @@ def main(args=None): ds_dataset = dm.Dataset.import_from(args.ds, format=args.dsf, env=dm_env) comparator = DatasetComparator(ds_dataset, gt_dataset) + comparator._comparator._annotation_comparator.iou_threshold = 0.5 + comparator._ignored_frames = ["frame_{:06d}.PNG".format(i + 1) for i in [23, 50, 100, 104, 111, 118, 151, 165, 170, 184, 200, 222, 223, 232, 236, 237, 253, 293, 302, 314, 359, 372, 379, 409, 438, 469, 470, 500, 502, 554, 557, 615, 631, 664, 687, 729, 736, 778, 781, 797, 842, 874, 894, 895, 917, 919, 952, 1001, 1023, 1025, 1028, 1030, 1040, 1077, 1083, 1098, 1104, 1129, 1166, 1251, 1252, 1253, 1258, 1263, 1264, 1271, 1294, 1308, 1328, 1334, 1352, 1408, 1432, 1489, 1495, 1511, 1570, 1574, 1594, 1625, 1651, 1710, 1716, 1720, 1721, 1730, 1751, 1765, 1794, 1798]] # comparator._comparator.included_ann_types = [dm.AnnotationType.bbox] + # comparator._comparator.ignored_attrs.append('object_id') report = comparator.prepare_report() class JsonConverter(json.JSONEncoder): @@ -1593,6 +1728,8 @@ def default(self, o: Any): o, (AnnotationConflict, AnnotationConflictsReport, AnnotationId) ): return o.to_dict() + elif isinstance(o, (np.ndarray, np.number)): + return o.tolist() else: return super().default(o) From 6eb07f2495468a4882218294a1bee44cd4f35a62 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 24 Apr 2023 22:37:50 +0300 Subject: [PATCH 037/257] Add missing files for scheduler --- Dockerfile | 1 + docker-compose.yml | 22 ++++++++++++++++ rqscheduler.py | 66 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 89 insertions(+) create mode 100644 rqscheduler.py diff --git a/Dockerfile b/Dockerfile index 5baa41232b9b..83d57b4d2a7c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -171,6 +171,7 @@ COPY --chown=${USER} ssh ${HOME}/.ssh COPY --chown=${USER} mod_wsgi.conf wait-for-it.sh manage.py ${HOME}/ COPY --chown=${USER} utils/ ${HOME}/utils COPY --chown=${USER} cvat/ ${HOME}/cvat +COPY --chown=${USER} rqscheduler.py ${HOME} # RUN all commands below as 'django' user USER ${USER} diff --git a/docker-compose.yml b/docker-compose.yml index d84256cae202..412b12a7b06a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -176,6 +176,28 @@ services: networks: - cvat + cvat_worker_quality_reports: + container_name: cvat_worker_quality_reports + image: cvat/server:${CVAT_VERSION:-dev} + restart: always + depends_on: + - cvat_redis + - cvat_db + environment: + CVAT_REDIS_HOST: 'cvat_redis' + CVAT_POSTGRES_HOST: 'cvat_db' + DJANGO_LOG_SERVER_HOST: vector + DJANGO_LOG_SERVER_PORT: 80 + no_proxy: clickhouse,grafana,vector,nuclio,opa,${no_proxy:-} + NUMPROCS: 1 + command: -c supervisord/worker.quality_reports.conf + volumes: + - cvat_data:/home/django/data + - cvat_keys:/home/django/keys + - cvat_logs:/home/django/logs + networks: + - cvat + cvat_ui: container_name: cvat_ui image: cvat/ui:${CVAT_VERSION:-dev} diff --git a/rqscheduler.py b/rqscheduler.py new file mode 100644 index 000000000000..ef0767b998c1 --- /dev/null +++ b/rqscheduler.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python + +import argparse +import sys +import os + +from cvat.wsgi import application + +from redis import Redis +from rq_scheduler.scheduler import Scheduler + +from rq_scheduler.utils import setup_loghandlers + + +def main(): + parser = argparse.ArgumentParser(description='Runs RQ scheduler') + parser.add_argument('-b', '--burst', action='store_true', default=False, help='Run in burst mode (quit after all work is done)') + parser.add_argument('-H', '--host', default=os.environ.get('RQ_REDIS_HOST', 'localhost'), help="Redis host") + parser.add_argument('-p', '--port', default=int(os.environ.get('RQ_REDIS_PORT', 6379)), type=int, help="Redis port number") + parser.add_argument('-d', '--db', default=int(os.environ.get('RQ_REDIS_DB', 0)), type=int, help="Redis database") + parser.add_argument('-P', '--password', default=os.environ.get('RQ_REDIS_PASSWORD'), help="Redis password") + parser.add_argument('--verbose', '-v', action='store_true', default=False, help='Show more output') + parser.add_argument('--quiet', action='store_true', default=False, help='Show less output') + parser.add_argument('--url', '-u', default=os.environ.get('RQ_REDIS_URL') + , help='URL describing Redis connection details. \ + Overrides other connection arguments if supplied.') + parser.add_argument('-i', '--interval', default=60.0, type=float + , help="How often the scheduler checks for new jobs to add to the \ + queue (in seconds, can be floating-point for more precision).") + parser.add_argument('--path', default='.', help='Specify the import path.') + parser.add_argument('--pid', help='A filename to use for the PID file.', metavar='FILE') + parser.add_argument('-j', '--job-class', help='Custom RQ Job class') + parser.add_argument('-q', '--queue-class', help='Custom RQ Queue class') + + args = parser.parse_args() + + if args.path: + sys.path = args.path.split(':') + sys.path + + if args.pid: + pid = str(os.getpid()) + filename = args.pid + with open(filename, 'w') as f: + f.write(pid) + + if args.url is not None: + connection = Redis.from_url(args.url) + else: + connection = Redis(args.host, args.port, args.db, args.password) + + if args.verbose: + level = 'DEBUG' + elif args.quiet: + level = 'WARNING' + else: + level = 'INFO' + setup_loghandlers(level) + + scheduler = Scheduler(connection=connection, + interval=args.interval, + job_class=args.job_class, + queue_class=args.queue_class) + scheduler.run(burst=args.burst) + +if __name__ == '__main__': + main() From c40aac5d51ef53a8683cb54f742c9eff04ea7f3f Mon Sep 17 00:00:00 2001 From: klakhov Date: Tue, 25 Apr 2023 17:54:35 +0300 Subject: [PATCH 038/257] added show/hide GT annotations --- cvat-canvas/src/scss/canvas.scss | 4 +++ cvat-canvas/src/typescript/canvasView.ts | 24 ++++++++++++++ cvat-core/src/annotations-objects.ts | 5 +++ cvat-core/src/annotations.ts | 19 ++++++++--- cvat-core/src/api-implementation.ts | 11 +++++-- cvat-core/src/frames.ts | 11 ++++--- cvat-core/src/object-state.ts | 10 ++++-- cvat-core/src/session-implementation.ts | 4 +-- cvat-core/src/session.ts | 3 +- cvat-ui/src/actions/annotation-actions.ts | 33 +++++++++++++++++-- cvat-ui/src/actions/settings-actions.ts | 10 ++++++ .../annotation-page/appearance-block.tsx | 25 +++++++++++++- cvat-ui/src/reducers/annotation-reducer.ts | 31 ++++++++++++++++- cvat-ui/src/reducers/index.ts | 2 ++ cvat-ui/src/reducers/settings-reducer.ts | 19 +++++++++++ 15 files changed, 191 insertions(+), 20 deletions(-) diff --git a/cvat-canvas/src/scss/canvas.scss b/cvat-canvas/src/scss/canvas.scss index 954a15b931b6..81d01831685d 100644 --- a/cvat-canvas/src/scss/canvas.scss +++ b/cvat-canvas/src/scss/canvas.scss @@ -148,6 +148,10 @@ polyline.cvat_canvas_shape_splitting { stroke-dasharray: 5; } +.cvat_canvas_ground_truth { + stroke-dasharray: 45; +} + .cvat_canvas_shape_occluded_point { stroke-dasharray: 1 !important; stroke: white; diff --git a/cvat-canvas/src/typescript/canvasView.ts b/cvat-canvas/src/typescript/canvasView.ts index 410c27943102..7d41fcfa76b1 100644 --- a/cvat-canvas/src/typescript/canvasView.ts +++ b/cvat-canvas/src/typescript/canvasView.ts @@ -2705,6 +2705,10 @@ export class CanvasViewImpl implements CanvasView, Listener { rect.addClass('cvat_canvas_hidden'); } + if (state.isGroundTruth) { + rect.addClass('cvat_canvas_ground_truth'); + } + return rect; } @@ -2729,6 +2733,10 @@ export class CanvasViewImpl implements CanvasView, Listener { polygon.addClass('cvat_canvas_hidden'); } + if (state.isGroundTruth) { + polygon.addClass('cvat_canvas_ground_truth'); + } + return polygon; } @@ -2753,6 +2761,10 @@ export class CanvasViewImpl implements CanvasView, Listener { polyline.addClass('cvat_canvas_hidden'); } + if (state.isGroundTruth) { + polyline.addClass('cvat_canvas_ground_truth'); + } + return polyline; } @@ -2778,6 +2790,10 @@ export class CanvasViewImpl implements CanvasView, Listener { cube.addClass('cvat_canvas_hidden'); } + if (state.isGroundTruth) { + cube.addClass('cvat_canvas_ground_truth'); + } + return cube; } @@ -3352,6 +3368,10 @@ export class CanvasViewImpl implements CanvasView, Listener { rect.addClass('cvat_canvas_hidden'); } + if (state.isGroundTruth) { + rect.addClass('cvat_canvas_ground_truth'); + } + return rect; } @@ -3378,6 +3398,10 @@ export class CanvasViewImpl implements CanvasView, Listener { group.addClass('cvat_canvas_shape_occluded'); } + if (state.isGroundTruth) { + group.addClass('cvat_canvas_ground_truth'); + } + shape.remove = (): SVG.PolyLine => { this.selectize(false, shape); shape.constructor.prototype.remove.call(shape); diff --git a/cvat-core/src/annotations-objects.ts b/cvat-core/src/annotations-objects.ts index 38df9bd9360b..8c0c03997818 100644 --- a/cvat-core/src/annotations-objects.ts +++ b/cvat-core/src/annotations-objects.ts @@ -63,6 +63,7 @@ class Annotation { public label: Label; public frame: number; private _removed: boolean; + protected isGroundTruth: boolean; public lock: boolean; protected readOnlyFields: string[]; protected color: string; @@ -86,6 +87,7 @@ class Annotation { this.label = this.taskLabels[data.label_id]; this.frame = data.frame; this._removed = false; + this.isGroundTruth = data.is_gt || false; this.lock = false; this.readOnlyFields = injection.readOnlyFields || []; this.color = color; @@ -580,6 +582,7 @@ export class Shape extends Drawn { hidden: this.hidden, updated: this.updated, pinned: this.pinned, + isGroundTruth: this.isGroundTruth, frame, source: this.source, ...this.withContext(frame), @@ -946,6 +949,7 @@ export class Track extends Drawn { }, frame, source: this.source, + isGroundTruth: this.isGroundTruth, ...this.withContext(frame), }; } @@ -1473,6 +1477,7 @@ export class Tag extends Annotation { updated: this.updated, frame, source: this.source, + isGroundTruth: this.isGroundTruth, ...this.withContext(frame), }; } diff --git a/cvat-core/src/annotations.ts b/cvat-core/src/annotations.ts index af43dbb07b4c..058b1c08f07f 100644 --- a/cvat-core/src/annotations.ts +++ b/cvat-core/src/annotations.ts @@ -29,12 +29,23 @@ function getCache(sessionType) { throw new ScriptingError(`Unknown session type was received ${sessionType}`); } -async function getAnnotationsFromServer(session) { +async function getAnnotationsFromServer(session, GTAnnotaionsSource) { const sessionType = session instanceof Task ? 'task' : 'job'; const cache = getCache(sessionType); if (!cache.has(session)) { - const rawAnnotations = await serverProxy.annotations.getAnnotations(sessionType, session.id); + let rawAnnotations = await serverProxy.annotations.getAnnotations(sessionType, session.id); + if (GTAnnotaionsSource) { + const gtAnnotations = await serverProxy.annotations.getAnnotations(sessionType, GTAnnotaionsSource); + gtAnnotations.shapes.forEach(annotation => { annotation.is_gt = true; }); + gtAnnotations.tracks.forEach(annotation => { annotation.is_gt = true; }); + gtAnnotations.tags.forEach(annotation => { annotation.is_gt = true; }); + rawAnnotations = { + shapes: [...rawAnnotations.shapes, ...gtAnnotations.shapes], + tracks: [...rawAnnotations.tracks, ...gtAnnotations.tracks], + tags: [...rawAnnotations.tags, ...gtAnnotations.tags], + }; + } // Get meta information about frames const startFrame = sessionType === 'job' ? session.startFrame : 0; @@ -70,7 +81,7 @@ export async function clearCache(session) { } } -export async function getAnnotations(session, frame, allTracks, filters) { +export async function getAnnotations(session, frame, allTracks, filters, GTAnnotaionsSource) { const sessionType = session instanceof Task ? 'task' : 'job'; const cache = getCache(sessionType); @@ -78,7 +89,7 @@ export async function getAnnotations(session, frame, allTracks, filters) { return cache.get(session).collection.get(frame, allTracks, filters); } - await getAnnotationsFromServer(session); + await getAnnotationsFromServer(session, GTAnnotaionsSource); return cache.get(session).collection.get(frame, allTracks, filters); } diff --git a/cvat-core/src/api-implementation.ts b/cvat-core/src/api-implementation.ts index f624d22c2e0c..93bc76f6d55d 100644 --- a/cvat-core/src/api-implementation.ts +++ b/cvat-core/src/api-implementation.ts @@ -344,8 +344,15 @@ export default function implementAPI(cvat) { parentId: isInteger, }); - const searchParams = filterFieldsToSnakeCase(filter, ['taskId', 'parentId']); - const reportsData = await serverProxy.analytics.quality.get(searchParams); + // const searchParams = filterFieldsToSnakeCase(filter, ['taskId', 'parentId']); + // TMP solution aka filters disabled + let updatedParams: Record = {}; + if ('taskId' in filter) { + updatedParams = { + task_id: filter.taskId, + }; + } + const reportsData = await serverProxy.analytics.quality.get(updatedParams); return reportsData; }; diff --git a/cvat-core/src/frames.ts b/cvat-core/src/frames.ts index cd67e55ac3c0..9b2b5099ac84 100644 --- a/cvat-core/src/frames.ts +++ b/cvat-core/src/frames.ts @@ -322,10 +322,10 @@ function getFrameMeta(jobID, frame): FramesMetaData['frames'][0] { [size] = meta.frames; } else if (mode === 'annotation') { if (frame >= meta.size) { - throw new ArgumentError(`Meta information about frame ${frame} can't be received from the server`); - } else { - size = meta.frames[frame - startFrame]; + return null; + // throw new ArgumentError(`Meta information about frame ${frame} can't be received from the server`); } + size = meta.frames[frame - startFrame]; } else { throw new DataError(`Invalid mode is specified ${mode}`); } @@ -751,8 +751,11 @@ export async function findNotDeletedFrame(jobID, frameFrom, frameTo, offset) { const update = sign > 0 ? (frame) => frame + 1 : (frame) => frame - 1; let framesCounter = 0; let lastUndeletedFrame = null; + const check = (frame): boolean => (meta.included_frames ? + (meta.included_frames.includes(frame)) && !(frame in meta.deleted_frames) : + !(frame in meta.deleted_frames)); for (let frame = frameFrom; predicate(frame); frame = update(frame)) { - if (!(frame in meta.deleted_frames)) { + if (check(frame)) { lastUndeletedFrame = frame; framesCounter++; if (framesCounter === offset) { diff --git a/cvat-core/src/object-state.ts b/cvat-core/src/object-state.ts index 30646e417379..e9673ecefeff 100644 --- a/cvat-core/src/object-state.ts +++ b/cvat-core/src/object-state.ts @@ -51,6 +51,7 @@ export interface SerializedData { keyframe?: boolean; rotation?: number; descriptions?: string[]; + isGroundTruth?: boolean; keyframes?: { prev: number | null; next: number | null; @@ -80,6 +81,7 @@ export default class ObjectState { public readonly parentID: number | null; public readonly updated: number; public readonly group: { color: string; id: number; } | null; + public readonly isGroundTruth: boolean; public readonly keyframes: { first: number | null; prev: number | null; @@ -166,6 +168,7 @@ export default class ObjectState { hidden: false, pinned: false, source: Source.MANUAL, + isGroundTruth: serialized.isGroundTruth || false, keyframes: serialized.keyframes || null, group: serialized.group || null, updated: serialized.updated || Date.now(), @@ -197,7 +200,10 @@ export default class ObjectState { get: () => data.shapeType, }, source: { - get: () => data.source, + get: () => (data.isGroundTruth ? 'Ground truth' : data.source), + }, + isGroundTruth: { + get: () => data.isGroundTruth, }, clientID: { get: () => data.clientID, @@ -216,7 +222,7 @@ export default class ObjectState { }, }, color: { - get: () => data.color, + get: () => (this.isGroundTruth ? '#ffffff' : data.color), set: (color) => { data.updateFlags.color = true; data.color = color; diff --git a/cvat-core/src/session-implementation.ts b/cvat-core/src/session-implementation.ts index ea33db36e809..ee2d3b886238 100644 --- a/cvat-core/src/session-implementation.ts +++ b/cvat-core/src/session-implementation.ts @@ -195,7 +195,7 @@ export function implementJob(Job) { }; // TODO: Check filter for annotations - Job.prototype.annotations.get.implementation = async function (frame, allTracks, filters) { + Job.prototype.annotations.get.implementation = async function (frame, allTracks, filters, GTAnnotaionsSource) { if (!Array.isArray(filters)) { throw new ArgumentError('Filters must be an array'); } @@ -208,7 +208,7 @@ export function implementJob(Job) { throw new ArgumentError(`Frame ${frame} does not exist in the job`); } - const annotationsData = await getAnnotations(this, frame, allTracks, filters); + const annotationsData = await getAnnotations(this, frame, allTracks, filters, GTAnnotaionsSource); const deletedFrames = await getDeletedFrames('job', this.id); if (frame in deletedFrames) { return []; diff --git a/cvat-core/src/session.ts b/cvat-core/src/session.ts index 2c96478e5fc5..8aac64e02e59 100644 --- a/cvat-core/src/session.ts +++ b/cvat-core/src/session.ts @@ -67,13 +67,14 @@ function buildDuplicatedAPI(prototype) { return result; }, - async get(frame, allTracks = false, filters = []) { + async get(frame, allTracks = false, filters = [], GTAnnotaionsSource = null) { const result = await PluginRegistry.apiWrapper.call( this, prototype.annotations.get, frame, allTracks, filters, + GTAnnotaionsSource, ); return result; }, diff --git a/cvat-ui/src/actions/annotation-actions.ts b/cvat-ui/src/actions/annotation-actions.ts index eea338f50f7d..d31d1a33cbd0 100644 --- a/cvat-ui/src/actions/annotation-actions.ts +++ b/cvat-ui/src/actions/annotation-actions.ts @@ -12,7 +12,9 @@ import { CanvasMode as Canvas3DMode } from 'cvat-canvas3d-wrapper'; import { RectDrawingMethod, CuboidDrawingMethod, Canvas, CanvasMode as Canvas2DMode, } from 'cvat-canvas-wrapper'; -import { getCore, MLModel, DimensionType } from 'cvat-core-wrapper'; +import { + getCore, MLModel, DimensionType, JobType, Job, +} from 'cvat-core-wrapper'; import logger, { LogType } from 'cvat-logger'; import { getCVATStore } from 'cvat-store'; @@ -593,6 +595,11 @@ export function changeFrameAsync( visible: statisticsVisible, }, } = state.annotation; + const { + shapes: { + showGroundTruth, + }, + } = state.settings; const { filters, frame, showAllInterpolationTracks } = receiveAnnotationsParameters(); try { @@ -612,6 +619,7 @@ export function changeFrameAsync( delay: currentState.annotation.player.frame.delay, changeTime: currentState.annotation.player.frame.changeTime, states: currentState.annotation.annotations.states, + groundTruthStates: currentState.annotation.annotations.groundTruthStates, minZ: currentState.annotation.annotations.zLayer.min, maxZ: currentState.annotation.annotations.zLayer.max, curZ: currentState.annotation.annotations.zLayer.cur, @@ -632,7 +640,9 @@ export function changeFrameAsync( } const data = await job.frames.get(toFrame, fillBuffer, frameStep); - const states = await job.annotations.get(toFrame, showAllInterpolationTracks, filters); + let states = await job.annotations.get(toFrame, showAllInterpolationTracks, filters); + const groundTruthStates = states.filter((_state: any) => _state.isGroundTruth); + if (!showGroundTruth) states = states.filter((_state: any) => !_state.isGroundTruth); if (!isAbleToChangeFrame() || statisticsVisible || propagateVisible) { // while doing async actions above, canvas can become used by a user in another way @@ -677,6 +687,7 @@ export function changeFrameAsync( filename: data.filename, relatedFiles: data.relatedFiles, states, + groundTruthStates, minZ, maxZ, curZ: maxZ, @@ -877,10 +888,12 @@ export function getJobAsync( try { const state = getState(); const filters = initialFilters; + const { settings: { workspace: { showAllInterpolationTracks }, player: { showDeletedFrames }, + shapes: { showGroundTruth }, }, } = state; @@ -905,6 +918,12 @@ export function getJobAsync( ); const [job] = await cvat.jobs.get({ jobID: jid }); + let gtJob = null; + if (job.type === JobType.NORMAL) { + const [task] = await cvat.tasks.get({ id: tid }); + [gtJob] = task.jobs.filter((_job: Job) => _job.type === JobType.GROUND_TRUTH); + } + // navigate to correct first frame according to setup let frameNumber; if (initialFrame === null && !showDeletedFrames) { @@ -928,7 +947,14 @@ export function getJobAsync( }, }); } - const states = await job.annotations.get(frameNumber, showAllInterpolationTracks, filters); + + const GTAnnotaionsSource = gtJob ? gtJob.id : null; + let states = await job.annotations.get( + frameNumber, showAllInterpolationTracks, filters, GTAnnotaionsSource, + ); + const groundTruthStates = states.filter((_state: any) => _state.isGroundTruth); + if (!showGroundTruth) states = states.filter((_state: any) => !_state.isGroundTruth); + const issues = await job.issues(); const [minZ, maxZ] = computeZRange(states); const colors = [...cvat.enums.colors]; @@ -943,6 +969,7 @@ export function getJobAsync( job, issues, states, + groundTruthStates, frameNumber, frameFilename: frameData.filename, relatedFiles: frameData.relatedFiles, diff --git a/cvat-ui/src/actions/settings-actions.ts b/cvat-ui/src/actions/settings-actions.ts index 70e980e5ce03..0e37fe7d3da5 100644 --- a/cvat-ui/src/actions/settings-actions.ts +++ b/cvat-ui/src/actions/settings-actions.ts @@ -19,6 +19,7 @@ export enum SettingsActionTypes { CHANGE_SHAPES_OUTLINED_BORDERS = 'CHANGE_SHAPES_OUTLINED_BORDERS', CHANGE_SHAPES_SHOW_PROJECTIONS = 'CHANGE_SHAPES_SHOW_PROJECTIONS', CHANGE_SHOW_UNLABELED_REGIONS = 'CHANGE_SHOW_UNLABELED_REGIONS', + CHANGE_SHOW_GROUND_TRUTH = 'CHANGE_SHOW_GROUND_TRUTH', CHANGE_FRAME_STEP = 'CHANGE_FRAME_STEP', CHANGE_FRAME_SPEED = 'CHANGE_FRAME_SPEED', SWITCH_RESET_ZOOM = 'SWITCH_RESET_ZOOM', @@ -73,6 +74,15 @@ export function changeShapesColorBy(colorBy: ColorBy): AnyAction { }; } +export function changeShowGroundTruth(showGroundTruth: boolean): AnyAction { + return { + type: SettingsActionTypes.CHANGE_SHOW_GROUND_TRUTH, + payload: { + showGroundTruth, + }, + }; +} + export function changeShapesOutlinedBorders(outlined: boolean, color: string): AnyAction { return { type: SettingsActionTypes.CHANGE_SHAPES_OUTLINED_BORDERS, diff --git a/cvat-ui/src/components/annotation-page/appearance-block.tsx b/cvat-ui/src/components/annotation-page/appearance-block.tsx index 5970f1442c05..3e9d13e6d826 100644 --- a/cvat-ui/src/components/annotation-page/appearance-block.tsx +++ b/cvat-ui/src/components/annotation-page/appearance-block.tsx @@ -14,7 +14,7 @@ import Button from 'antd/lib/button'; import ColorPicker from 'components/annotation-page/standard-workspace/objects-side-bar/color-picker'; import { ColorizeIcon } from 'icons'; -import { ColorBy, CombinedState } from 'reducers'; +import { ColorBy, CombinedState, Workspace } from 'reducers'; import { DimensionType } from 'cvat-core-wrapper'; import { collapseAppearance as collapseAppearanceAction } from 'actions/annotation-actions'; import { @@ -24,6 +24,7 @@ import { changeShapesOutlinedBorders as changeShapesOutlinedBordersAction, changeShowBitmap as changeShowBitmapAction, changeShowProjections as changeShowProjectionsAction, + changeShowGroundTruth as changeShowGroundTruthAction, } from 'actions/settings-actions'; interface StateToProps { @@ -35,6 +36,8 @@ interface StateToProps { outlineColor: string; showBitmap: boolean; showProjections: boolean; + showGroundTruth: boolean; + workspace: Workspace; jobInstance: any; } @@ -42,6 +45,7 @@ interface DispatchToProps { collapseAppearance(): void; changeShapesColorBy(event: RadioChangeEvent): void; changeShapesOpacity(value: number): void; + changeShowGroundTruth(event: CheckboxChangeEvent): void; changeSelectedShapesOpacity(value: number): void; changeShapesOutlinedBorders(outlined: boolean, color: string): void; changeShowBitmap(event: CheckboxChangeEvent): void; @@ -52,11 +56,13 @@ function mapStateToProps(state: CombinedState): StateToProps { const { annotation: { appearanceCollapsed, + workspace, job: { instance: jobInstance }, }, settings: { shapes: { colorBy, opacity, selectedOpacity, outlined, outlineColor, showBitmap, showProjections, + showGroundTruth, }, }, } = state; @@ -70,6 +76,8 @@ function mapStateToProps(state: CombinedState): StateToProps { outlineColor, showBitmap, showProjections, + showGroundTruth, + workspace, jobInstance, }; } @@ -82,6 +90,9 @@ function mapDispatchToProps(dispatch: Dispatch): DispatchToProps { changeShapesColorBy(event: RadioChangeEvent): void { dispatch(changeShapesColorByAction(event.target.value)); }, + changeShowGroundTruth(event: CheckboxChangeEvent): void { + dispatch(changeShowGroundTruthAction(event.target.checked)); + }, changeShapesOpacity(value: number): void { dispatch(changeShapesOpacityAction(value)); }, @@ -112,8 +123,11 @@ function AppearanceBlock(props: Props): JSX.Element { outlineColor, showBitmap, showProjections, + showGroundTruth, + workspace, collapseAppearance, changeShapesColorBy, + changeShowGroundTruth, changeShapesOpacity, changeSelectedShapesOpacity, changeShapesOutlinedBorders, @@ -202,6 +216,15 @@ function AppearanceBlock(props: Props): JSX.Element { Show projections )} + {is2D && workspace === Workspace.REVIEW_WORKSPACE && ( + + Show ground truth annotations + + )}
diff --git a/cvat-ui/src/reducers/annotation-reducer.ts b/cvat-ui/src/reducers/annotation-reducer.ts index 509fd3fc0085..7914f589cb40 100644 --- a/cvat-ui/src/reducers/annotation-reducer.ts +++ b/cvat-ui/src/reducers/annotation-reducer.ts @@ -12,6 +12,7 @@ import { Canvas3d } from 'cvat-canvas3d-wrapper'; import { DimensionType } from 'cvat-core-wrapper'; import { clamp } from 'utils/math'; +import { SettingsActionTypes } from 'actions/settings-actions'; import { ActiveControl, AnnotationState, @@ -90,6 +91,7 @@ const defaultState: AnnotationState = { collapsed: {}, collapsedAll: true, states: [], + groundTruthStates: [], filters: [], resetGroupFlag: false, history: { @@ -139,6 +141,7 @@ export default (state = defaultState, action: AnyAction): AnnotationState => { const { job, states, + groundTruthStates, openTime, frameNumber: number, frameFilename: filename, @@ -183,6 +186,7 @@ export default (state = defaultState, action: AnyAction): AnnotationState => { annotations: { ...state.annotations, states, + groundTruthStates, filters, zLayer: { min: minZ, @@ -261,13 +265,13 @@ export default (state = defaultState, action: AnyAction): AnnotationState => { filename, relatedFiles, states, + groundTruthStates, minZ, maxZ, curZ, delay, changeTime, } = action.payload; - return { ...state, player: { @@ -286,6 +290,7 @@ export default (state = defaultState, action: AnyAction): AnnotationState => { ...state.annotations, activatedStateID: updateActivatedStateID(states, activatedStateID), states, + groundTruthStates, zLayer: { min: minZ, max: maxZ, @@ -1091,6 +1096,11 @@ export default (state = defaultState, action: AnyAction): AnnotationState => { return state; } + let newStates = state.annotations.states; + if (workspace !== Workspace.REVIEW_WORKSPACE) { + newStates = state.annotations.states.filter((_state: any) => !_state.isGroundTruth); + } + return { ...state, workspace, @@ -1098,6 +1108,7 @@ export default (state = defaultState, action: AnyAction): AnnotationState => { ...state.annotations, activatedStateID: null, activatedAttributeID: null, + states: newStates, }, }; } @@ -1176,6 +1187,24 @@ export default (state = defaultState, action: AnyAction): AnnotationState => { }, }; } + case SettingsActionTypes.CHANGE_SHOW_GROUND_TRUTH: { + if (action.payload.showGroundTruth) { + return { + ...state, + annotations: { + ...state.annotations, + states: [...state.annotations.states, ...state.annotations.groundTruthStates], + }, + }; + } + return { + ...state, + annotations: { + ...state.annotations, + states: state.annotations.states.filter((_state: any) => !_state.isGroundTruth), + }, + }; + } case AnnotationActionTypes.CLOSE_JOB: case AuthActionTypes.LOGOUT_SUCCESS: { if (state.canvas.instance) { diff --git a/cvat-ui/src/reducers/index.ts b/cvat-ui/src/reducers/index.ts index 1276186c125a..a92df9aec10d 100644 --- a/cvat-ui/src/reducers/index.ts +++ b/cvat-ui/src/reducers/index.ts @@ -713,6 +713,7 @@ export interface AnnotationState { collapsed: Record; collapsedAll: boolean; states: any[]; + groundTruthStates: any[]; filters: any[]; resetGroupFlag: boolean; history: { @@ -821,6 +822,7 @@ export interface ShapesSettingsState { outlineColor: string; showBitmap: boolean; showProjections: boolean; + showGroundTruth: boolean; } export interface SettingsState { diff --git a/cvat-ui/src/reducers/settings-reducer.ts b/cvat-ui/src/reducers/settings-reducer.ts index fbc575f272c4..e732f26a7e7d 100644 --- a/cvat-ui/src/reducers/settings-reducer.ts +++ b/cvat-ui/src/reducers/settings-reducer.ts @@ -23,6 +23,7 @@ const defaultState: SettingsState = { outlineColor: '#000000', showBitmap: false, showProjections: false, + showGroundTruth: false, }, workspace: { autoSave: false, @@ -118,6 +119,15 @@ export default (state = defaultState, action: AnyAction): SettingsState => { }, }; } + case SettingsActionTypes.CHANGE_SHOW_GROUND_TRUTH: { + return { + ...state, + shapes: { + ...state.shapes, + showGroundTruth: action.payload.showGroundTruth, + }, + }; + } case SettingsActionTypes.CHANGE_SHAPES_OPACITY: { return { ...state, @@ -437,6 +447,15 @@ export default (state = defaultState, action: AnyAction): SettingsState => { }, }; } + case AnnotationActionTypes.CHANGE_WORKSPACE: { + return { + ...state, + shapes: { + ...state.shapes, + showGroundTruth: false, + }, + }; + } case AuthActionTypes.LOGOUT_SUCCESS: { return { ...defaultState }; } From bc02dcbaf1e9be01b67f171102b07321806725e7 Mon Sep 17 00:00:00 2001 From: klakhov Date: Wed, 26 Apr 2023 10:53:06 +0300 Subject: [PATCH 039/257] updated getting quality reports --- cvat-core/src/annotations.ts | 21 +++++++++------ cvat-core/src/api-implementation.ts | 14 ++++++---- cvat-core/src/quality-report.ts | 26 +++++++++++++++--- cvat-core/src/server-proxy.ts | 5 ++-- cvat-ui/src/actions/analytics-actions.ts | 27 ++++++++++++------- cvat-ui/src/components/job-item/job-item.tsx | 4 +-- .../task-analytics-page/quality/job-list.tsx | 23 +++++++++------- .../quality/mean-quality.tsx | 18 +++++-------- .../quality/task-quality-component.tsx | 2 +- 9 files changed, 86 insertions(+), 54 deletions(-) diff --git a/cvat-core/src/annotations.ts b/cvat-core/src/annotations.ts index 058b1c08f07f..5ca8b6cb184d 100644 --- a/cvat-core/src/annotations.ts +++ b/cvat-core/src/annotations.ts @@ -29,6 +29,18 @@ function getCache(sessionType) { throw new ScriptingError(`Unknown session type was received ${sessionType}`); } +function processGroundTruthAnnotations(rawAnnotations, groundTruthAnnotations) { + groundTruthAnnotations.shapes.forEach((annotation) => { annotation.is_gt = true; }); + groundTruthAnnotations.tracks.forEach((annotation) => { annotation.is_gt = true; }); + groundTruthAnnotations.tags.forEach((annotation) => { annotation.is_gt = true; }); + const result = { + shapes: [...rawAnnotations.shapes, ...groundTruthAnnotations.shapes], + tracks: [...rawAnnotations.tracks, ...groundTruthAnnotations.tracks], + tags: [...rawAnnotations.tags, ...groundTruthAnnotations.tags], + }; + return result; +} + async function getAnnotationsFromServer(session, GTAnnotaionsSource) { const sessionType = session instanceof Task ? 'task' : 'job'; const cache = getCache(sessionType); @@ -37,14 +49,7 @@ async function getAnnotationsFromServer(session, GTAnnotaionsSource) { let rawAnnotations = await serverProxy.annotations.getAnnotations(sessionType, session.id); if (GTAnnotaionsSource) { const gtAnnotations = await serverProxy.annotations.getAnnotations(sessionType, GTAnnotaionsSource); - gtAnnotations.shapes.forEach(annotation => { annotation.is_gt = true; }); - gtAnnotations.tracks.forEach(annotation => { annotation.is_gt = true; }); - gtAnnotations.tags.forEach(annotation => { annotation.is_gt = true; }); - rawAnnotations = { - shapes: [...rawAnnotations.shapes, ...gtAnnotations.shapes], - tracks: [...rawAnnotations.tracks, ...gtAnnotations.tracks], - tags: [...rawAnnotations.tags, ...gtAnnotations.tags], - }; + rawAnnotations = processGroundTruthAnnotations(rawAnnotations, gtAnnotations); } // Get meta information about frames diff --git a/cvat-core/src/api-implementation.ts b/cvat-core/src/api-implementation.ts index 93bc76f6d55d..8c822684e061 100644 --- a/cvat-core/src/api-implementation.ts +++ b/cvat-core/src/api-implementation.ts @@ -25,6 +25,7 @@ import Project from './project'; import CloudStorage from './cloud-storage'; import Organization from './organization'; import Webhook from './webhook'; +import QualityReport from './quality-report'; export default function implementAPI(cvat) { cvat.plugins.list.implementation = PluginRegistry.list; @@ -339,10 +340,10 @@ export default function implementAPI(cvat) { }; cvat.analytics.quality.get.implementation = async (filter) => { - checkFilter(filter, { - taskId: isInteger, - parentId: isInteger, - }); + // checkFilter(filter, { + // taskId: isInteger, + // parentId: isInteger, + // }); // const searchParams = filterFieldsToSnakeCase(filter, ['taskId', 'parentId']); // TMP solution aka filters disabled @@ -350,10 +351,13 @@ export default function implementAPI(cvat) { if ('taskId' in filter) { updatedParams = { task_id: filter.taskId, + sort: '-created_date', + target: filter.target, }; } const reportsData = await serverProxy.analytics.quality.get(updatedParams); - return reportsData; + + return reportsData.map((report) => new QualityReport({ ...report })); }; return cvat; diff --git a/cvat-core/src/quality-report.ts b/cvat-core/src/quality-report.ts index 1212976732f5..5a57aef803a8 100644 --- a/cvat-core/src/quality-report.ts +++ b/cvat-core/src/quality-report.ts @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: MIT -interface RawQualityReportData { +export interface RawQualityReportData { id?: number; parent_id?: number; task_id?: number; @@ -11,13 +11,24 @@ interface RawQualityReportData { created_date?: string; gt_last_updated?: string; summary?: { - mean_accuracy: number; + frame_count: number, + frame_share_percent: number, + conflicts_count: number, + valid_count: number, + ds_count: number, + gt_count: number }; parameters?: object; } export interface QualitySummary { - meanAccuracy: number; + frameCount: number; + frameSharePercent: number; + conflictsCount: number; + validCount: number; + dsCount: number; + gtCount: number; + accuracy: number; } export default class QualityReport { @@ -73,7 +84,14 @@ export default class QualityReport { }, summary: { get: () => ({ - meanAccuracy: data.summary.mean_accuracy, + frameCount: data.summary.frame_count, + frameSharePercent: data.summary.frame_share_percent, + conflictsCount: data.summary.conflicts_count, + validCount: data.summary.valid_count, + dsCount: data.summary.ds_count, + gtCount: data.summary.gt_count, + accuracy: data.summary.valid_count / + (data.summary.ds_count + data.summary.gt_count - data.summary.valid_count), }), }, parameters: { diff --git a/cvat-core/src/server-proxy.ts b/cvat-core/src/server-proxy.ts index 299e6fb22fda..3df4cb5f16fe 100644 --- a/cvat-core/src/server-proxy.ts +++ b/cvat-core/src/server-proxy.ts @@ -13,7 +13,7 @@ import { SerializedAbout, SerializedShare, SerializedUserAgreement, SerializedRegister, JobsFilter, SerializedJob, } from 'server-response-types'; -import QualityReport from 'quality-report'; +import { RawQualityReportData } from 'quality-report'; import { Storage } from './storage'; import { StorageLocation, WebhookSourceType } from './enums'; import { isEmail } from './common'; @@ -2157,7 +2157,7 @@ async function receiveWebhookEvents(type: WebhookSourceType): Promise } } -async function getQualityReports(filter, pageSize = 10): Promise { +async function getQualityReports(filter): Promise { const params = enableOrganization(); const { backendAPI } = config; @@ -2166,7 +2166,6 @@ async function getQualityReports(filter, pageSize = 10): Promise createAction(AnalyticsActionsTypes.GET_QUALITY_REPORTS, { query }), + getQualityReports: (task: Task, query: QualityQuery) => ( + createAction(AnalyticsActionsTypes.GET_QUALITY_REPORTS, { query }) + ), getQualityReportsSuccess: (tasksReports: QualityReport[], jobsReports: QualityReport[]) => createAction( AnalyticsActionsTypes.GET_QUALITY_REPORTS_SUCCESS, { tasksReports, jobsReports }, ), getQualityReportsFailed: (error: any) => createAction(AnalyticsActionsTypes.GET_QUALITY_REPORTS_FAILED, { error }), }; -export const getQualityReportsAsync = (query: QualityQuery): ThunkAction => ( +export const getQualityReportsAsync = (task: Task, query: QualityQuery): ThunkAction => ( async (dispatch: ActionCreator): Promise => { - dispatch(analyticsActions.getQualityReports(query)); + dispatch(analyticsActions.getQualityReports(task, query)); - const filteredQuery = filterNull(query); + // const filteredQuery = filterNull(query); try { - await cvat.analytics.quality.get(filteredQuery); + // reports are returned in order -created_date + const [taskReport] = await cvat.analytics.quality.get({ taskId: task.id, target: 'task' }); + const jobReports = await cvat.analytics.quality.get({ taskId: task.id, target: 'job' }); + const jobIds = task.jobs.map((job) => job.id); + const relevantReports: QualityReport[] = []; + jobIds.forEach((jobId: number) => { + const report = jobReports.find((_report: QualityReport) => _report.jobId === jobId); + if (report) relevantReports.push(report); + }); + + dispatch(analyticsActions.getQualityReportsSuccess(taskReport ? [taskReport] : [], relevantReports)); } catch (error) { dispatch(analyticsActions.getQualityReportsFailed(error)); - return; } - - dispatch(analyticsActions.getQualityReportsSuccess([], [])); } ); diff --git a/cvat-ui/src/components/job-item/job-item.tsx b/cvat-ui/src/components/job-item/job-item.tsx index 7432c07ac98f..1287b1c6dc2b 100644 --- a/cvat-ui/src/components/job-item/job-item.tsx +++ b/cvat-ui/src/components/job-item/job-item.tsx @@ -37,7 +37,7 @@ function JobItem(props: Props): JSX.Element {
{job.type === JobType.GROUND_TRUTH ? : null } - + {`Job #${job.id}`} @@ -50,7 +50,7 @@ function JobItem(props: Props): JSX.Element { {`Started on ${created.format('MMMM Do YYYY HH:MM')}`} - + {`Duration: ${moment.duration(now.diff(created)).humanize()}`} diff --git a/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx b/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx index 8cbcc94afef0..517f705a6c3f 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx @@ -148,18 +148,21 @@ function JobListComponent(props: Props): JSX.Element { dataIndex: 'quality', key: 'quality', className: 'cvat-job-item-quality', - render: (jobInstance: Job): JSX.Element => ( - - {jobsReports[jobInstance.id] ? jobsReports[jobInstance.id].summary.meanAccuracy : 'N/A'} - - ), + render: (jobInstance: Job): JSX.Element => { + const meanAccuracy = jobsReports[jobInstance.id]?.summary?.accuracy; + return ( + + {meanAccuracy || 'N/A'} + + ); + }, }, ]; - const data = jobs.reduce((acc: any[], job: any) => { + const data = renderedJobs.reduce((acc: any[], job: any) => { acc.push({ key: job.id, job: job.id, diff --git a/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx b/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx index c6054bb9768a..2530425fe598 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx @@ -21,28 +21,22 @@ interface Props { function MeanQuality(props: Props): JSX.Element { const { task } = props; - const data = { - lastUpdatedTime: moment().fromNow(), - summary: { - meanAccuracy: 85, - }, - }; + const tasksReports: QualityReport[] = useSelector((state: CombinedState) => state.analytics.quality.tasksReports); const taskReport = tasksReports.find((report: QualityReport) => report.taskId === task.id); - console.log(taskReport?.summary.meanAccuracy); - + const meanAccuracy = taskReport?.summary.accuracy; return (
- {data.lastUpdatedTime} + {taskReport?.createdDate ? moment(taskReport?.createdDate).fromNow() : ''}
diff --git a/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx b/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx index 7a65b2e9605b..29c4763d5ddc 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx @@ -26,7 +26,7 @@ function TaskQualityComponent(props: Props): JSX.Element { const query = useSelector((state: CombinedState) => state.analytics.quality.query); useEffect(() => { - dispatch(getQualityReportsAsync({ ...query, taskId: task.id })); + dispatch(getQualityReportsAsync(task, { ...query, taskId: task.id })); }, []); const gtJob = task.jobs.find((job: Job) => job.type === JobType.GROUND_TRUTH); From 59e0af76a65bb37d74744bfc6bd4bab0fc225878 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 27 Apr 2023 17:58:52 +0300 Subject: [PATCH 040/257] Return included frames info for image segments --- cvat/apps/engine/serializers.py | 1 - cvat/apps/engine/views.py | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index be1c2b701120..6fb2b9470f79 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -1303,7 +1303,6 @@ class DataMetaReadSerializer(serializers.ModelSerializer): child=serializers.IntegerField(min_value=0), allow_null=True, required=False, help_text=textwrap.dedent("""\ A list of valid frame ids. The None value means all frames are included. - Only applicable for video data. """)) class Meta: diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index 2d4c4d8fd81e..7149fb011655 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -1606,14 +1606,12 @@ def metadata(self, request, pk): if hasattr(db_data, 'video'): media = [db_data.video] - db_data.included_frames = db_job.segment.frames or None else: media = [f for f in db_data.images.filter( frame__gte=data_start_frame, frame__lte=data_stop_frame, ).all() - if db_job.segment.contains_frame(f.frame) ] # Filter data with segment size @@ -1625,6 +1623,7 @@ def metadata(self, request, pk): db_data.start_frame = data_start_frame db_data.stop_frame = data_stop_frame db_data.size = db_job.segment.frame_count + db_data.included_frames = db_job.segment.frames or None frame_meta = [{ 'width': item.width, From 6d4f3857a591da88219ddaa0cb7655fdc1934e00 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 27 Apr 2023 18:05:46 +0300 Subject: [PATCH 041/257] Server updates --- compare_datasets.py | 21 +- .../migrations/0073_auto_20230426_1557.py | 37 + ...ename_frame_id_annotationconflict_frame.py | 18 + cvat/apps/engine/models.py | 153 +- cvat/apps/engine/quality_control.py | 1089 ++++++++++--- cvat/apps/engine/serializers.py | 38 +- cvat/apps/engine/signals.py | 25 +- cvat/apps/engine/urls.py | 1 + cvat/apps/engine/views.py | 67 +- cvat/schema.yml | 216 ++- tests/python/shared/assets/cvat_db/data.json | 1430 ----------------- 11 files changed, 1174 insertions(+), 1921 deletions(-) create mode 100644 cvat/apps/engine/migrations/0073_auto_20230426_1557.py create mode 100644 cvat/apps/engine/migrations/0074_rename_frame_id_annotationconflict_frame.py diff --git a/compare_datasets.py b/compare_datasets.py index ab7c55185409..a41d18e0bb51 100644 --- a/compare_datasets.py +++ b/compare_datasets.py @@ -777,11 +777,12 @@ def distance(self, a, b): ) -def arr_div(a_arr: np.ndarray, b_arr: np.ndarray): +def _arr_div(a_arr: np.ndarray, b_arr: np.ndarray): divisor = b_arr.copy() divisor[b_arr == 0] = 1 return a_arr / divisor + class _DistanceComparator(dm.ops.DistanceComparator): def __init__( self, @@ -1236,7 +1237,7 @@ def _find_best_unmatched_distance(shape): ) ) - for gt_ann, matched_ann_id in mismatches: + for gt_ann, ds_ann in mismatches: conflicts.append( AnnotationConflict( frame_id=frame_id, @@ -1244,13 +1245,13 @@ def _find_best_unmatched_distance(shape): data={ "annotation_ids": [ self._dm_ann_to_ann_id( - matched_ann_id, ds_item, self._ds_dataset + ds_ann, ds_item, self._ds_dataset ), self._dm_ann_to_ann_id(gt_ann, gt_item, self._gt_dataset), ], "kind": MismatchingAnnotationKind.LABEL, "expected": gt_ann.label, - "actual": matched_ann_id.label, + "actual": ds_ann.label, }, ) ) @@ -1418,9 +1419,9 @@ def _find_best_unmatched_distance(shape): matched_ann_counts = np.diag(confusion_matrix) ds_ann_counts = np.sum(confusion_matrix, axis=1) gt_ann_counts = np.sum(confusion_matrix, axis=0) - label_accuracies = arr_div(matched_ann_counts, ds_ann_counts + gt_ann_counts - matched_ann_counts) - label_precisions = arr_div(matched_ann_counts, ds_ann_counts) - label_recalls = arr_div(matched_ann_counts, gt_ann_counts) + label_accuracies = _arr_div(matched_ann_counts, ds_ann_counts + gt_ann_counts - matched_ann_counts) + label_precisions = _arr_div(matched_ann_counts, ds_ann_counts) + label_recalls = _arr_div(matched_ann_counts, gt_ann_counts) valid_annotations_count = np.sum(matched_ann_counts) missing_annotations_count = np.sum(confusion_matrix[:, confusion_matrix_labels_rmap[None]]) @@ -1592,9 +1593,9 @@ def _set_nested_key(d, path, value): matched_ann_counts = np.diag(confusion_matrix) ds_ann_counts = np.sum(confusion_matrix, axis=1) gt_ann_counts = np.sum(confusion_matrix, axis=0) - label_accuracies = arr_div(matched_ann_counts, ds_ann_counts + gt_ann_counts - matched_ann_counts) - label_precisions = arr_div(matched_ann_counts, ds_ann_counts) - label_recalls = arr_div(matched_ann_counts, gt_ann_counts) + label_accuracies = _arr_div(matched_ann_counts, ds_ann_counts + gt_ann_counts - matched_ann_counts) + label_precisions = _arr_div(matched_ann_counts, ds_ann_counts) + label_recalls = _arr_div(matched_ann_counts, gt_ann_counts) valid_annotations_count = np.sum(matched_ann_counts) missing_annotations_count = np.sum(confusion_matrix[:, confusion_matrix_labels_rmap[None]]) diff --git a/cvat/apps/engine/migrations/0073_auto_20230426_1557.py b/cvat/apps/engine/migrations/0073_auto_20230426_1557.py new file mode 100644 index 000000000000..713935336370 --- /dev/null +++ b/cvat/apps/engine/migrations/0073_auto_20230426_1557.py @@ -0,0 +1,37 @@ +# Generated by Django 3.2.18 on 2023-04-26 15:57 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('engine', '0072_auto_20230422_1013'), + ] + + operations = [ + migrations.RemoveField( + model_name='annotationconflict', + name='data', + ), + migrations.RemoveField( + model_name='annotationconflict', + name='message', + ), + migrations.AlterField( + model_name='annotationconflict', + name='type', + field=models.CharField(choices=[('missing_annotation', 'MISSING_ANNOTATION'), ('extra_annotation', 'EXTRA_ANNOTATION'), ('mismatching_label', 'MISMATCHING_LABEL')], max_length=32), + ), + migrations.CreateModel( + name='AnnotationId', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('obj_id', models.PositiveIntegerField()), + ('job_id', models.PositiveIntegerField()), + ('type', models.CharField(choices=[('rectangle', 'RECTANGLE'), ('polygon', 'POLYGON'), ('polyline', 'POLYLINE'), ('points', 'POINTS'), ('ellipse', 'ELLIPSE'), ('cuboid', 'CUBOID'), ('mask', 'MASK'), ('skeleton', 'SKELETON')], max_length=32)), + ('conflict', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='annotation_ids', to='engine.annotationconflict')), + ], + ), + ] diff --git a/cvat/apps/engine/migrations/0074_rename_frame_id_annotationconflict_frame.py b/cvat/apps/engine/migrations/0074_rename_frame_id_annotationconflict_frame.py new file mode 100644 index 000000000000..b230dcfcf0f4 --- /dev/null +++ b/cvat/apps/engine/migrations/0074_rename_frame_id_annotationconflict_frame.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.18 on 2023-04-27 12:52 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('engine', '0073_auto_20230426_1557'), + ] + + operations = [ + migrations.RenameField( + model_name='annotationconflict', + old_name='frame_id', + new_name='frame', + ), + ] diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index eddb558f9abc..fba0f36426dc 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -558,12 +558,24 @@ def create(self, **kwargs: Any): return super().create(**kwargs) + @transaction.atomic + def update(self, **kwargs: Any) -> int: + self._validate_constraints(kwargs) + + return super().update(**kwargs) + @transaction.atomic def get_or_create(self, *args, **kwargs: Any): self._validate_constraints(kwargs) return super().get_or_create(*args, **kwargs) + @transaction.atomic + def update_or_create(self, *args, **kwargs: Any): + self._validate_constraints(kwargs) + + return super().update_or_create(*args, **kwargs) + def _validate_constraints(self, obj: Dict[str, Any]): # Constraints can't be set on the related model fields # This method requires the save operation to be called as a transaction @@ -1013,7 +1025,7 @@ class Meta: class AnnotationConflictType(str, Enum): MISSING_ANNOTATION = 'missing_annotation' EXTRA_ANNOTATION = 'extra_annotation' - MISMATCHING_ANNOTATION = 'mismatching_annotation' + MISMATCHING_LABEL = 'mismatching_label' def __str__(self) -> str: return self.value @@ -1054,6 +1066,7 @@ class QualityReport(models.Model): parent = models.ForeignKey('self', on_delete=models.CASCADE, related_name='children', null=True, blank=True) + children: Sequence[QualityReport] created_date = models.DateTimeField(auto_now_add=True) target_last_updated = models.DateTimeField() @@ -1061,6 +1074,8 @@ class QualityReport(models.Model): data = models.JSONField() + conflicts: Sequence[AnnotationConflict] + @property def target(self) -> QualityReportTarget: if self.job: @@ -1070,102 +1085,72 @@ def target(self) -> QualityReportTarget: else: assert False + def _parse_report(self): + from cvat.apps.engine.quality_control import ComparisonReport + return ComparisonReport.from_json(self.data) + + @property + def parameters(self): + report = self._parse_report() + return report.parameters + + @property + def summary(self): + report = self._parse_report() + return report.comparison_summary + def get_task(self) -> Task: if self.task is not None: return self.task else: return self.job.segment.task - def save(self, *args, **kwargs) -> None: - self.full_clean() - return super().save(*args, **kwargs) - def clean(self): if not (self.job is not None) ^ (self.task is not None): raise ValidationError("One of the 'job' and 'task' fields must be set") - class AnnotationConflict(models.Model): report = models.ForeignKey(QualityReport, on_delete=models.CASCADE, related_name='conflicts') - frame_id = models.PositiveIntegerField() + frame = models.PositiveIntegerField() type = models.CharField(max_length=32, choices=AnnotationConflictType.choices()) - message = models.CharField(max_length=1024, blank=True, default="") - data = models.JSONField() - def clean(self): - class _AnnotationType(str, Enum): - TAG = 'tag' - - def __str__(self) -> str: - return self.value - - @classmethod - def choices(cls): - return tuple((x.value, x.name) for x in cls) + ShapeType.choices() - - class _MismatchingAnnotationConflict(models.Model): - kind = models.CharField(max_length=32, choices=MismatchingAnnotationKind.choices()) - expected = models.CharField(max_length=64, blank=True, null=True) - actual = models.CharField(max_length=64, blank=True, null=True) - - # KIND = ATTRIBUTE fields - attribute = models.CharField(max_length=64, null=True, blank=True, default=None) - - def clean(self) -> None: - if self.kind != MismatchingAnnotationKind.ATTRIBUTE: - if self.attribute is not None: - raise ValidationError( - "The 'attribute' field can only be used " - f"with the '{MismatchingAnnotationKind.ATTRIBUTE}' kind" - ) - else: - if not isinstance(self.attribute, str): - raise ValidationError("The 'attribute' field is required") - - if not self.attribute: - raise ValidationError("The 'attribute' field can not be empty") - - class _AnnotationId(models.Model): - my_id = models.AutoField(primary_key=True) # avoid name collision - id = models.PositiveIntegerField() - job_id = models.PositiveIntegerField() - type = models.CharField(max_length=32, choices=_AnnotationType.choices()) - - def _validate_annotation_ids(extra_data: Dict[str, Any], *, required_count: int): - annotation_ids = extra_data.pop('annotation_ids', None) - if annotation_ids is None: - raise ValidationError("Annotation ids must be provided") - elif not isinstance(annotation_ids, list): - raise ValidationError("Annotation ids must be a list") - else: - if len(annotation_ids) != required_count: - raise ValidationError(f"Expected exactly {required_count} annotation ids") - - for ann_id in annotation_ids: - if not isinstance(ann_id, dict): - raise ValidationError("Annotation ids must be a list of dicts") - _AnnotationId(**ann_id).full_clean() - - return annotation_ids - - if self.type == AnnotationConflictType.MISMATCHING_ANNOTATION: - if self.data is None: - raise ValidationError(f"Extra info must be provided in the 'data' field") - extra_data = self.data.copy() - - _validate_annotation_ids(extra_data, required_count=2) - - _MismatchingAnnotationConflict(**extra_data).full_clean() - - elif self.type in [ - AnnotationConflictType.EXTRA_ANNOTATION, AnnotationConflictType.MISSING_ANNOTATION - ]: - if self.data is None: - raise ValidationError(f"Extra info must be provided in the 'data' field") - extra_data = self.data.copy() - - _validate_annotation_ids(extra_data, required_count=1) + annotation_ids: Sequence[AnnotationId] - else: - raise ValidationError(f"Unknown conflict type {self.type}") + # def clean(self) -> None: + # def _validate_annotation_ids(annotation_ids: List[AnnotationId], *, required_count: int): + # if annotation_ids is None: + # raise ValueError("Annotation ids must be provided") + # elif not isinstance(annotation_ids, list): + # raise ValueError("Annotation ids must be a list") + # else: + # if len(annotation_ids) != required_count: + # raise ValueError(f"Expected exactly {required_count} annotation ids") + + # for ann_id in annotation_ids: + # if not isinstance(ann_id, dict): + # raise ValueError("Annotation ids must be a list of dicts") + # AnnotationId(data=ann_id).full_clean() + + # return annotation_ids + + # if self.type == AnnotationConflictType.MISMATCHING_LABEL: + # _validate_annotation_ids(list(self.annotation_ids), required_count=2) + + # elif self.type in [ + # AnnotationConflictType.EXTRA_ANNOTATION, AnnotationConflictType.MISSING_ANNOTATION + # ]: + # _validate_annotation_ids(list(self.annotation_ids), required_count=1) + + # else: + # raise ValueError(f"Unknown conflict type {self.type}") + + # return super().clean() + +class AnnotationId(models.Model): + conflict = models.ForeignKey(AnnotationConflict, + on_delete=models.CASCADE, related_name='annotation_ids', blank=False) + + obj_id = models.PositiveIntegerField() + job_id = models.PositiveIntegerField() + type = models.CharField(max_length=32, choices=ShapeType.choices()) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index fc21a8661c17..2b7ef847a51b 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -2,38 +2,359 @@ # # SPDX-License-Identifier: MIT -from datetime import datetime, timedelta +from __future__ import annotations +from copy import deepcopy +from datetime import timedelta + import itertools -from typing import Callable, Hashable, Iterator, List, Optional, Union, cast +import json +from typing import Any, Callable, Dict, Hashable, List, Optional, Sequence, Union, cast -from attrs import asdict, define +from attrs import asdict, define, has as is_attrs_type import datumaro as dm from django.conf import settings -import django_rq from django.db import transaction +from django.utils import timezone +import django_rq import numpy as np from cvat.apps.dataset_manager.task import JobAnnotation from cvat.apps.dataset_manager.bindings import (CommonData, CvatToDmAnnotationConverter, GetCVATDataExtractor, JobData) from cvat.apps.dataset_manager.formats.registry import dm_env -from cvat.apps.profiler import silk_profile +from cvat.apps.engine import models +from cvat.apps.engine.models import AnnotationConflictType, ShapeType + + +class _Serializable: + def _value_serializer(self, t, attr, v): + if isinstance(v, _Serializable): + return v.to_dict() + elif is_attrs_type(type(v)): + return asdict(v, value_serializer=self._value_serializer) + elif not isinstance(self, type(t)) and isinstance(t, _Serializable): + return t._value_serializer(t, attr, v) + else: + return v -from .models import (JobType, QualityReport, AnnotationConflict, - AnnotationConflictType, Job, MismatchingAnnotationKind, Task) + def to_dict(self) -> dict: + return asdict(self, value_serializer=self._value_serializer) @define(kw_only=True) -class AnnotationId: - # TODO: think if uuids can be provided - type: str - id: int +class AnnotationId(_Serializable): + obj_id: int job_id: int + type: ShapeType + + def _value_serializer(self, t, attr, v): + if isinstance(v, ShapeType): + return str(v) + else: + return super()._value_serializer(t, attr, v) + + @classmethod + def from_dict(cls, d): + return cls( + obj_id=d['obj_id'], + job_id=d['job_id'], + type=ShapeType(d['type']), + ) + +@define(kw_only=True) +class AnnotationConflict(_Serializable): + frame_id: int + type: AnnotationConflictType + annotation_ids: List[AnnotationId] + + def _value_serializer(self, t, attr, v): + if isinstance(v, AnnotationConflictType): + return str(v) + else: + return super()._value_serializer(t, attr, v) + + @classmethod + def from_dict(cls, d): + return cls( + frame_id=d['frame_id'], + type=AnnotationConflictType(d['type']), + annotation_ids=list(AnnotationId.from_dict(v) for v in d['annotation_ids']) + ) + + +@define(kw_only=True) +class ComparisonReportParameters(_Serializable): + included_annotation_types: List[str] + ignored_attributes: List[str] + iou_threshold: float + + @classmethod + def from_dict(cls, d): + return cls( + included_annotation_types=d['included_annotation_types'], + ignored_attributes=d['ignored_attributes'], + iou_threshold=d['iou_threshold'], + ) + + +@define(kw_only=True) +class ConfusionMatrix(_Serializable): + labels: List[str] + rows: np.array + precision: np.array + recall: np.array + accuracy: np.array + + @property + def axes(self): + return dict(cols='gt', rows='ds') + + def _value_serializer(self, t, attr, v): + if isinstance(v, np.ndarray): + return v.tolist() + else: + return super()._value_serializer(t, attr, v) + + def to_dict(self) -> dict: + result = super().to_dict() + result.update(**{ + k: getattr(self, k) for k in ['axes'] + }) + return result + + @classmethod + def from_dict(cls, d): + return cls( + labels=d['labels'], + rows=np.asarray(d['rows']), + precision=np.asarray(d['precision']), + recall=np.asarray(d['recall']), + accuracy=np.asarray(d['accuracy']), + ) + + +@define(kw_only=True) +class ComparisonReportAnnotationsSummary(_Serializable): + valid_count: int + missing_count: int + extra_count: int + total_count: int + ds_count: int + gt_count: int + confusion_matrix: ConfusionMatrix + + @property + def accuracy(self) -> float: + return self.valid_count / (self.total_count or 1) + + @property + def precision(self) -> float: + return self.valid_count / (self.ds_count or 1) + + @property + def recall(self) -> float: + return self.valid_count / (self.gt_count or 1) + + def accumulate(self, other: ComparisonReportAnnotationsSummary): + for field in [ + 'valid_count', 'missing_count', 'extra_count', 'total_count', 'ds_count', 'gt_count' + ]: + setattr(self, field, getattr(self, field) + getattr(other, field)) + + def to_dict(self) -> dict: + result = super().to_dict() + result.update(**{ + k: getattr(self, k) for k in ['accuracy', 'precision', 'recall'] + }) + return result + + @classmethod + def from_dict(cls, d): + return cls( + valid_count=d['valid_count'], + missing_count=d['missing_count'], + extra_count=d['extra_count'], + total_count=d['total_count'], + ds_count=d['ds_count'], + gt_count=d['gt_count'], + confusion_matrix=ConfusionMatrix.from_dict(d['confusion_matrix']) + ) + + +@define(kw_only=True) +class ComparisonReportAnnotationShapeSummary(_Serializable): + valid_count: int + missing_count: int + extra_count: int + total_count: int + ds_count: int + gt_count: int + mean_iou: float + + @property + def accuracy(self) -> float: + return self.valid_count / (self.total_count or 1) + + def accumulate(self, other: ComparisonReportAnnotationShapeSummary): + for field in [ + 'valid_count', 'missing_count', 'extra_count', 'total_count', 'ds_count', 'gt_count' + ]: + setattr(self, field, getattr(self, field) + getattr(other, field)) def to_dict(self) -> dict: - return asdict(self) + result = super().to_dict() + result.update(**{ + k: getattr(self, k) for k in ['accuracy'] + }) + return result + + @classmethod + def from_dict(cls, d): + return cls( + valid_count=d['valid_count'], + missing_count=d['missing_count'], + extra_count=d['extra_count'], + total_count=d['total_count'], + ds_count=d['ds_count'], + gt_count=d['gt_count'], + mean_iou=d['mean_iou'], + ) +@define(kw_only=True) +class ComparisonReportAnnotationLabelSummary(_Serializable): + valid_count: int + invalid_count: int + total_count: int + + @property + def accuracy(self) -> float: + return self.valid_count / (self.total_count or 1) + + def accumulate(self, other: ComparisonReportAnnotationLabelSummary): + for field in ['valid_count', 'total_count', 'invalid_count']: + setattr(self, field, getattr(self, field) + getattr(other, field)) + + def to_dict(self) -> dict: + result = super().to_dict() + result.update(**{ + k: getattr(self, k) for k in ['accuracy'] + }) + return result + + @classmethod + def from_dict(cls, d): + return cls( + valid_count=d['valid_count'], + invalid_count=d['invalid_count'], + total_count=d['total_count'], + ) + +@define(kw_only=True) +class QualityReportAnnotationComponentsSummary(_Serializable): + shape: ComparisonReportAnnotationShapeSummary + label: ComparisonReportAnnotationLabelSummary + + def accumulate(self, other: QualityReportAnnotationComponentsSummary): + self.shape.accumulate(other.shape) + self.label.accumulate(other.label) + + @classmethod + def from_dict(cls, d): + return cls( + shape=ComparisonReportAnnotationShapeSummary.from_dict(d['shape']), + label=ComparisonReportAnnotationLabelSummary.from_dict(d['label']), + ) + + +@define(kw_only=True) +class ComparisonReportComparisonSummary(_Serializable): + frame_share_percent: float + frames: List[str] + + conflict_count: int + mean_conflict_count: float + + annotations: ComparisonReportAnnotationsSummary + annotation_components: QualityReportAnnotationComponentsSummary + + @property + def frame_count(self) -> int: + return len(self.frames) + + def to_dict(self) -> dict: + result = super().to_dict() + result.update(**{ + k: getattr(self, k) for k in ['frame_count'] + }) + return result + + @classmethod + def from_dict(cls, d): + return cls( + frame_share_percent=d['frame_share_percent'], + frames=list(d['frames']), + conflict_count=d['conflict_count'], + mean_conflict_count=d['mean_conflict_count'], + annotations=ComparisonReportAnnotationsSummary.from_dict(d['annotations']), + annotation_components=QualityReportAnnotationComponentsSummary.from_dict(d['annotation_components']), + ) + + +@define(kw_only=True) +class ComparisonReportDatasetSummary(_Serializable): + frame_count: int + shape_count: int + + @classmethod + def from_dict(cls, d): + return cls( + frame_count=d['frame_count'], + shape_count=d['shape_count'], + ) + + +@define(kw_only=True) +class ComparisonReport(_Serializable): + parameters: ComparisonReportParameters + comparison_summary: ComparisonReportComparisonSummary + dataset_summary: ComparisonReportDatasetSummary + conflicts: List[AnnotationConflict] + + @property + def conflicts_count(self) -> int: + return len(self.conflicts) + + def to_dict(self) -> dict: + result = super().to_dict() + result.update(**{ + k: getattr(self, k) for k in ['conflicts_count'] + }) + return result + + @classmethod + def from_dict(cls, d: Dict[str, Any]) -> ComparisonReport: + return cls( + parameters=ComparisonReportParameters.from_dict(d['parameters']), + comparison_summary=ComparisonReportComparisonSummary.from_dict(d['comparison_summary']), + dataset_summary=ComparisonReportDatasetSummary.from_dict(d['dataset_summary']), + conflicts=list(AnnotationConflict.from_dict(v) for v in d['conflicts']), + ) + + def to_json(self) -> str: + class _JSONEncoder(json.JSONEncoder): + def default(self, o: Any) -> Any: + if isinstance(o, (np.ndarray, np.number)): + return o.tolist() + else: + return super().default(o) + + return json.dumps(self.to_dict(), cls=_JSONEncoder) + + @classmethod + def from_json(cls, data: str) -> ComparisonReport: + return cls.from_dict(json.loads(data)) + class JobDataProvider: @transaction.atomic def __init__(self, job_id: int) -> None: @@ -55,8 +376,8 @@ def dm_item_id_to_frame_id(self, item_id: str) -> int: def dm_ann_to_ann_id(self, ann: dm.Annotation) -> AnnotationId: source_ann = self._annotation_memo.get_source_ann(ann) - ann_type = 'tag' if isinstance(ann, CommonData.Tag) else source_ann.type - return AnnotationId(id=source_ann.id, type=ann_type, job_id=self.job_id) + ann_type = ShapeType(source_ann.type) + return AnnotationId(obj_id=source_ann.id, type=ann_type, job_id=self.job_id) class _MemoizingAnnotationConverterFactory: @@ -102,26 +423,7 @@ def _convert_shape(self, shape, *, index): return converted -@transaction.atomic -def _save_report_to_db( - report: QualityReport, conflicts: List[AnnotationConflict] -)-> QualityReport: - report.full_clean() - report.save() - - for c in conflicts: - c.report = report - - if annotation_ids := c.data.get('annotation_ids'): - c.data['annotation_ids'] = [a.to_dict() for a in annotation_ids] - c.full_clean() - - AnnotationConflict.objects.bulk_create(conflicts) - - return report - - -def OKS(a, b, sigma=None, bbox=None, scale=None, visibility=None): +def _OKS(a, b, sigma=None, bbox=None, scale=None, visibility=None): """ Object Keypoint Similarity metric. https://cocodataset.org/#keypoints-eval @@ -161,7 +463,7 @@ def distance(self, a, b): if dm.ops.bbox_iou(a_bbox, b_bbox) <= 0: return 0 bbox = dm.ops.mean_bbox([a_bbox, b_bbox]) - return OKS( + return _OKS( a, b, sigma=self.sigma, @@ -170,6 +472,11 @@ def distance(self, a, b): ) +def _arr_div(a_arr: np.ndarray, b_arr: np.ndarray) -> np.ndarray: + divisor = b_arr.copy() + divisor[b_arr == 0] = 1 + return a_arr / divisor + class _DistanceComparator(dm.ops.DistanceComparator): def __init__( self, @@ -185,6 +492,22 @@ def __init__( self.included_ann_types = included_ann_types self.return_distances = return_distances + def _instance_bbox(self, instance_anns: Sequence[dm.Annotation]): + return dm.ops.max_bbox( + a.get_bbox() if isinstance(a, dm.Skeleton) else a + for a in instance_anns + if hasattr(a, 'get_bbox') + and not a.attributes.get('outside', False) + ) + + @staticmethod + def _get_ann_type(t, item): + return [ + a for a in item.annotations + if a.type == t + and not a.attributes.get('outside', False) + ] + def _match_ann_type(self, t, *args): if t not in self.included_ann_types: return None @@ -251,11 +574,7 @@ def match_points(self, item_a, item_b): for s in [item_a.annotations, item_b.annotations]: s_instances = dm.ops.find_instances(s) for instance_group in s_instances: - instance_bbox = dm.ops.max_bbox( - a.get_bbox() if isinstance(a, dm.Skeleton) else a - for a in instance_group - if hasattr(a, 'get_bbox') - ) + instance_bbox = self._instance_bbox(instance_group) for ann in instance_group: instance_map[id(ann)] = [instance_group, instance_bbox] @@ -339,6 +658,11 @@ def match_skeletons(self, item_a, item_b): # no per-point attributes currently in CVAT ) + if all(v == dm.Points.Visibility.absent for v in merged_points.visibility): + # The whole skeleton is outside, exclude it + skeleton_map[id(skeleton)] = None + continue + points_map[id(merged_points)] = skeleton skeleton_map[id(skeleton)] = merged_points source_points.append(merged_points) @@ -346,15 +670,12 @@ def match_skeletons(self, item_a, item_b): instance_map = {} for source in [item_a.annotations, item_b.annotations]: for instance_group in dm.ops.find_instances(source): - instance_bbox = dm.ops.max_bbox( - a.get_bbox() if isinstance(a, dm.Skeleton) else a - for a in instance_group - if hasattr(a, 'get_bbox') - ) + instance_bbox = self._instance_bbox(instance_group) instance_group = [ skeleton_map[id(a)] if isinstance(a, dm.Skeleton) else a for a in instance_group + if not isinstance(a, dm.Skeleton) or skeleton_map[id(a)] is not None ] for ann in instance_group: instance_map[id(ann)] = [instance_group, instance_bbox] @@ -413,6 +734,7 @@ def memoizing_distance(a, b): return memoizing_distance, distances + class _Comparator: def __init__(self, categories: dm.CategoriesInfo): self.ignored_attrs = [ @@ -420,6 +742,8 @@ def __init__(self, categories: dm.CategoriesInfo): "keyframe", # indicates the way annotation obtained, meaningless to compare "z_order", # TODO: compare relative or 'visible' z_order "group", # TODO: changes from task to task. But must be compared for existence + "rotation", # should be handled by other means + "outside", # should be handled by other means ] self.included_ann_types = [ dm.AnnotationType.bbox, @@ -430,7 +754,7 @@ def __init__(self, categories: dm.CategoriesInfo): dm.AnnotationType.skeleton, ] self._annotation_comparator = _DistanceComparator( - categories, included_ann_types=self.included_ann_types, return_distances=False, + categories, included_ann_types=self.included_ann_types, return_distances=True, ) def match_attrs(self, ann_a: dm.Annotation, ann_b: dm.Annotation): @@ -464,201 +788,381 @@ def match_attrs(self, ann_a: dm.Annotation, ann_b: dm.Annotation): def match_annotations(self, item_a, item_b): return self._annotation_comparator.match_annotations(item_a, item_b) -class DatasetComparator: + +class _DatasetComparator: def __init__(self, - this_job_data_provider: JobDataProvider, - gt_job_data_provider: JobDataProvider + ds_data_provider: JobDataProvider, + gt_data_provider: JobDataProvider, ) -> None: - self._this_job_data_provider = this_job_data_provider - self._gt_job_data_provider = gt_job_data_provider - self._this_job_dataset = self._this_job_data_provider.dm_dataset - self._gt_job_dataset = self._gt_job_data_provider.dm_dataset - self._comparator = _Comparator(self._gt_job_dataset.categories()) + self._ds_data_provider = ds_data_provider + self._gt_data_provider = gt_data_provider + self._ds_dataset = self._ds_data_provider.dm_dataset + self._gt_dataset = self._gt_data_provider.dm_dataset - def _iterate_datasets(self) -> Iterator: - for gt_item in self._gt_job_dataset: - this_item = self._this_job_dataset.get(gt_item.id) - if not this_item: - continue # we need to compare only intersecting frames + self._frame_results = {} - yield this_item, gt_item + self.comparator = _Comparator(self._gt_dataset.categories()) + self.included_frames = gt_data_provider.job_data._db_job.segment.frame_set - def find_gt_conflicts(self) -> List[AnnotationConflict]: - conflicts = [] - - for this_item, gt_item in self._iterate_datasets(): - frame_id = self._gt_job_data_provider.dm_item_id_to_frame_id(this_item.id) - frame_results = self._comparator.match_annotations(gt_item, this_item) + def _dm_item_to_frame_id(self, item: dm.DatasetItem) -> int: + return self._gt_data_provider.dm_item_id_to_frame_id(item.id) - conflicts.extend(self._generate_frame_annotation_conflicts(frame_id, frame_results)) + def _dm_ann_to_ann_id(self, ann: dm.Annotation, dataset: dm.Dataset): + if dataset is self._ds_dataset: + source_data_provider = self._ds_data_provider + elif dataset is self._gt_dataset: + source_data_provider = self._gt_data_provider + else: + assert False - return conflicts + return source_data_provider.dm_ann_to_ann_id(ann) - def find_frame_gt_conflicts(self, frame_id: int) -> List[AnnotationConflict]: - conflicts = [] + def _find_gt_conflicts(self): + ds_job_dataset = self._ds_dataset + gt_job_dataset = self._gt_dataset - for this_item, gt_item in self._iterate_datasets(): - _frame_id = self._gt_job_data_provider.dm_item_id_to_frame_id(this_item.id) - if frame_id != _frame_id: - # TODO: find more optimal way - continue + for gt_item in gt_job_dataset: + ds_item = ds_job_dataset.get(gt_item.id) + if not ds_item: + continue # we need to compare only intersecting frames - frame_results = self._comparator.match_annotations(gt_item, this_item) + self._process_frame(ds_item, gt_item) - conflicts.extend(self._generate_frame_annotation_conflicts(_frame_id, frame_results)) + def _process_frame(self, ds_item, gt_item): + frame_id = self._dm_item_to_frame_id(ds_item) + if self.included_frames is not None and frame_id not in self.included_frames: + return - break + frame_results = self.comparator.match_annotations(gt_item, ds_item) + self._frame_results.setdefault(frame_id, {}) - return conflicts + self._generate_frame_annotation_conflicts(frame_id, frame_results) def _generate_frame_annotation_conflicts( - self, frame_id: int, frame_results + self, frame_id: str, frame_results, ) -> List[AnnotationConflict]: conflicts = [] - merged_results = [[], [], [], []] - for shape_type in [ - dm.AnnotationType.bbox, dm.AnnotationType.mask, - dm.AnnotationType.points, dm.AnnotationType.polygon, dm.AnnotationType.polyline - ]: - for merged_field, field in zip(merged_results, frame_results[shape_type]): + merged_results = [[], [], [], [], {}] + for shape_type in self.comparator.included_ann_types: + for merged_field, field in zip(merged_results, frame_results[shape_type][:-1]): merged_field.extend(field) - matches, mismatches, gt_unmatched, this_unmatched = merged_results + merged_results[-1].update(frame_results[shape_type][-1]) - for unmatched_ann in gt_unmatched: - conflicts.append(AnnotationConflict( - frame_id=frame_id, - type=AnnotationConflictType.MISSING_ANNOTATION, - data={ - 'annotation_ids': [ - self._gt_job_data_provider.dm_ann_to_ann_id(unmatched_ann) - ] - }, - )) + matches, mismatches, gt_unmatched, ds_unmatched, pairwise_distances = merged_results - for unmatched_ann in this_unmatched: - conflicts.append(AnnotationConflict( - frame_id=frame_id, - type=AnnotationConflictType.EXTRA_ANNOTATION, - data={ - 'annotation_ids': [ - self._this_job_data_provider.dm_ann_to_ann_id(unmatched_ann) - ] - }, - )) + def _get_distance(gt_ann: dm.Annotation, ds_ann: dm.Annotation) -> Optional[float]: + return pairwise_distances.get((id(gt_ann), id(ds_ann))) - for gt_ann, this_ann in mismatches: - conflicts.append(AnnotationConflict( - frame_id=frame_id, - type=AnnotationConflictType.MISMATCHING_ANNOTATION, - data={ - 'annotation_ids': [ - self._this_job_data_provider.dm_ann_to_ann_id(this_ann), - self._gt_job_data_provider.dm_ann_to_ann_id(gt_ann), - ], - 'kind': MismatchingAnnotationKind.LABEL, - 'expected': gt_ann.label, - 'actual': this_ann.label, - }, - )) + _matched_shapes = set( + id(shape) + for shape_pair in itertools.chain(matches, mismatches) + for shape in shape_pair + ) - for gt_ann, this_ann in matches: - # Datumaro wont match attributes - _, attr_mismatches, attr_gt_extra, attr_this_extra = \ - self._comparator.match_attrs(gt_ann, this_ann) + def _find_closest_unmatched_shape(shape: dm.Annotation): + this_shape_id = id(shape) - for mismatched_attr in attr_mismatches: - conflicts.append(AnnotationConflict( - frame_id=frame_id, - type=AnnotationConflictType.MISMATCHING_ANNOTATION, - data={ - 'annotation_ids': [ - self._this_job_data_provider.dm_ann_to_ann_id(this_ann), - self._gt_job_data_provider.dm_ann_to_ann_id(gt_ann), - ], - 'kind': MismatchingAnnotationKind.ATTRIBUTE, - 'attribute': mismatched_attr, - 'expected': gt_ann.attributes[mismatched_attr], - 'actual': this_ann.attributes[mismatched_attr], - }, - )) - - for extra_attr in attr_gt_extra: - conflicts.append(AnnotationConflict( - frame_id=frame_id, - type=AnnotationConflictType.MISMATCHING_ANNOTATION, - data={ - 'annotation_ids': [ - self._this_job_data_provider.dm_ann_to_ann_id(this_ann), - self._gt_job_data_provider.dm_ann_to_ann_id(gt_ann), - ], - 'kind': MismatchingAnnotationKind.ATTRIBUTE, - 'attribute': mismatched_attr, - 'expected': gt_ann.attributes[extra_attr], - 'actual': None, - }, - )) - - for extra_attr in attr_this_extra: - conflicts.append(AnnotationConflict( - frame_id=frame_id, - type=AnnotationConflictType.MISMATCHING_ANNOTATION, - data={ - 'annotation_ids': [ - self._this_job_data_provider.dm_ann_to_ann_id(this_ann), - self._gt_job_data_provider.dm_ann_to_ann_id(gt_ann), - ], - 'kind': MismatchingAnnotationKind.ATTRIBUTE, - 'attribute': mismatched_attr, - 'expected': None, - 'actual': this_ann.attributes[extra_attr], - }, - )) + this_shape_distances = [] - return conflicts + for (gt_shape_id, ds_shape_id), dist in pairwise_distances.items(): + if gt_shape_id == this_shape_id: + other_shape_id = ds_shape_id + elif ds_shape_id == this_shape_id: + other_shape_id = gt_shape_id + else: + continue + this_shape_distances.append((other_shape_id, dist)) -def _create_report(this_job: Job, gt_job: Job, conflicts: List[AnnotationConflict]): - report = QualityReport( - job=this_job, - target_last_updated=this_job.updated_date, - gt_last_updated=gt_job.updated_date, + matched_ann, distance = max(this_shape_distances, key=lambda v: v[1], default=(None, 0)) + return matched_ann, distance - # TODO: refactor, add real data - data=dict( - parameters=dict(), + for unmatched_ann in gt_unmatched: + conflicts.append( + AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.MISSING_ANNOTATION, + annotation_ids=[ + self._dm_ann_to_ann_id(unmatched_ann, self._gt_dataset) + ], + ) + ) - intersection_results=dict( - frame_count=0, - frame_share_percent=0, - frames=[], + for unmatched_ann in ds_unmatched: + conflicts.append( + AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.EXTRA_ANNOTATION, + annotation_ids=[ + self._dm_ann_to_ann_id(unmatched_ann, self._ds_dataset) + ], + ) + ) - error_count=len(conflicts), - mean_error_count=0, - mean_accuracy=0, + for gt_ann, ds_ann in mismatches: + conflicts.append( + AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.MISMATCHING_LABEL, + annotation_ids=[ + self._dm_ann_to_ann_id(ds_ann, self._ds_dataset), + self._dm_ann_to_ann_id(gt_ann, self._gt_dataset), + ] + ) ) - ) - ) - return report + resulting_distances = [ + _get_distance(gt_ann, ds_ann) + for gt_ann, ds_ann in itertools.chain(matches, mismatches) + ] + + for unmatched_ann in itertools.chain(gt_unmatched, ds_unmatched): + matched_ann_id, distance = _find_closest_unmatched_shape(unmatched_ann) + if matched_ann_id is not None: + _matched_shapes.add(matched_ann_id) + resulting_distances.append(distance) + + mean_iou = np.mean(resulting_distances) + + valid_shapes_count = len(matches) + len(mismatches) + missing_shapes_count = len(gt_unmatched) + extra_shapes_count = len(ds_unmatched) + total_shapes_count = len(matches) + len(mismatches) + len(gt_unmatched) + len(ds_unmatched) + ds_shapes_count = len(matches) + len(mismatches) + len(ds_unmatched) + gt_shapes_count = len(matches) + len(mismatches) + len(gt_unmatched) + + valid_labels_count = len(matches) + invalid_labels_count = len(mismatches) + total_labels_count = valid_labels_count + invalid_labels_count + + confusion_matrix_labels = { + i: label.name + for i, label in enumerate(self._gt_dataset.categories()[dm.AnnotationType.label]) + if not label.parent + } + confusion_matrix_labels[None] = 'unmatched' + confusion_matrix_labels_rmap = { + k: i for i, k in enumerate(confusion_matrix_labels.keys()) + } + confusion_matrix_label_count = len(confusion_matrix_labels) + confusion_matrix = np.zeros( + (confusion_matrix_label_count, confusion_matrix_label_count), dtype=int + ) + for gt_ann, ds_ann in itertools.chain( + # fully matched annotations - shape, label, attributes + matches, + mismatches, + zip(itertools.repeat(None), ds_unmatched), + zip(gt_unmatched, itertools.repeat(None)), + ): + # TODO: separate keys and displayed labels + ds_label_idx = confusion_matrix_labels_rmap[ds_ann.label if ds_ann else ds_ann] + gt_label_idx = confusion_matrix_labels_rmap[gt_ann.label if gt_ann else gt_ann] + confusion_matrix[ds_label_idx, gt_label_idx] += 1 + + matched_ann_counts = np.diag(confusion_matrix) + ds_ann_counts = np.sum(confusion_matrix, axis=1) + gt_ann_counts = np.sum(confusion_matrix, axis=0) + label_accuracies = _arr_div(matched_ann_counts, ds_ann_counts + gt_ann_counts - matched_ann_counts) + label_precisions = _arr_div(matched_ann_counts, ds_ann_counts) + label_recalls = _arr_div(matched_ann_counts, gt_ann_counts) + + valid_annotations_count = np.sum(matched_ann_counts) + missing_annotations_count = np.sum(confusion_matrix[:, confusion_matrix_labels_rmap[None]]) + extra_annotations_count = np.sum(confusion_matrix[confusion_matrix_labels_rmap[None], :]) + total_annotations_count = np.sum(confusion_matrix) + ds_annotations_count = np.sum(ds_ann_counts) + gt_annotations_count = np.sum(gt_ann_counts) + + self._frame_results.setdefault(frame_id, {}).update( + error_count=len(conflicts), + annotations=dict( + valid_count=valid_annotations_count, + missing_count=missing_annotations_count, + extra_count=extra_annotations_count, + total_count=total_annotations_count, + ds_count=ds_annotations_count, + gt_count=gt_annotations_count, + accuracy=valid_annotations_count / (total_annotations_count or 1), + precision=valid_annotations_count / (ds_annotations_count or 1), + recall=valid_annotations_count / (gt_annotations_count or 1), + confusion_matrix=dict( + labels=list(confusion_matrix_labels.values()), + axes=dict( + cols='gt', + rows='ds' + ), + rows=confusion_matrix, + precision=label_precisions, + recall=label_recalls, + accuracy=label_accuracies, + ) + ), + annotation_element=dict( + shape=dict( + valid_count=valid_shapes_count, + missing_count=missing_shapes_count, + extra_count=extra_shapes_count, + total_count=total_shapes_count, + ds_count=ds_shapes_count, + gt_count=gt_shapes_count, + accuracy=valid_shapes_count / (total_shapes_count or 1), + mean_iou=mean_iou, + ), + label=dict( + valid_count=valid_labels_count, + invalid_count=invalid_labels_count, + total_count=total_labels_count, + accuracy=valid_labels_count / (total_labels_count or 1), + ), + ), + errors=conflicts.copy(), + ) + return conflicts -@silk_profile() -def find_gt_conflicts( - this_job: Job, gt_job: Job, *, frame_id: Optional[int] = None -) -> QualityReport: - this_job_data_provider = JobDataProvider(this_job.pk) - gt_job_data_provider = JobDataProvider(gt_job.pk) + def generate_report(self) -> ComparisonReport: + self._find_gt_conflicts() + + def _get_nested_key(d, path): + for k in path: + d = d[k] + return d + + def _set_nested_key(d, path, value): + for k in path[:-1]: + d = d.setdefault(k, {}) + d[path[-1]] = value + return d + + full_ds_comparable_shapes_count = 0 + full_ds_comparable_attributes_count = 0 + for item in self._ds_dataset: + for ann in item.annotations: + if ann.type not in self.comparator.included_ann_types: + continue + + full_ds_comparable_attributes_count += len( + set(ann.attributes).difference(self.comparator.ignored_attrs) + ) + full_ds_comparable_shapes_count += 1 + + # accumulate stats + intersection_frames = [] + summary = {} + mean_ious = [] + for frame_id, frame_result in self._frame_results.items(): + intersection_frames.append(frame_id) + + for path in [ + ["annotation_element", "shape", "valid_count"], + ["annotation_element", "shape", "missing_count"], + ["annotation_element", "shape", "extra_count"], + ["annotation_element", "shape", "total_count"], + ["annotation_element", "shape", "ds_count"], + ["annotation_element", "shape", "gt_count"], + + ["annotation_element", "label", "valid_count"], + ["annotation_element", "label", "invalid_count"], + ["annotation_element", "label", "total_count"], + + ["annotations", "confusion_matrix", "rows"], + ["error_count"], + ]: + frame_value = _get_nested_key(frame_result, path) + try: + summary_value = _get_nested_key(summary, path) + _set_nested_key(summary, path, frame_value + summary_value) + except KeyError: + _set_nested_key(summary, path, frame_value) + + mean_ious.append(frame_result["annotation_element"]["shape"]["mean_iou"]) + + confusion_matrix_labels = { + i: label.name + for i, label in enumerate(self._gt_dataset.categories()[dm.AnnotationType.label]) + if not label.parent + } + confusion_matrix_labels[None] = 'unmatched' + confusion_matrix_labels_rmap = { + k: i for i, k in enumerate(confusion_matrix_labels.keys()) + } + confusion_matrix = _get_nested_key(summary, ["annotations", "confusion_matrix", "rows"]) + matched_ann_counts = np.diag(confusion_matrix) + ds_ann_counts = np.sum(confusion_matrix, axis=1) + gt_ann_counts = np.sum(confusion_matrix, axis=0) + label_accuracies = _arr_div(matched_ann_counts, ds_ann_counts + gt_ann_counts - matched_ann_counts) + label_precisions = _arr_div(matched_ann_counts, ds_ann_counts) + label_recalls = _arr_div(matched_ann_counts, gt_ann_counts) + + valid_annotations_count = np.sum(matched_ann_counts) + missing_annotations_count = np.sum(confusion_matrix[:, confusion_matrix_labels_rmap[None]]) + extra_annotations_count = np.sum(confusion_matrix[confusion_matrix_labels_rmap[None], :]) + total_annotations_count = np.sum(confusion_matrix) + ds_annotations_count = np.sum(ds_ann_counts) + gt_annotations_count = np.sum(gt_ann_counts) + + mean_error_count = summary["error_count"] / len(intersection_frames) + + return ComparisonReport( + parameters=ComparisonReportParameters( + included_annotation_types=[t.name for t in self.comparator.included_ann_types], + iou_threshold=self.comparator._annotation_comparator.iou_threshold, + ignored_attributes=self.comparator.ignored_attrs, + ), + + comparison_summary=ComparisonReportComparisonSummary( + frame_share_percent=len(intersection_frames) / (len(self._ds_dataset) or 1), + frames=intersection_frames, + + conflict_count=summary["error_count"], + mean_conflict_count=mean_error_count, + + annotations=ComparisonReportAnnotationsSummary( + valid_count=valid_annotations_count, + missing_count=missing_annotations_count, + extra_count=extra_annotations_count, + total_count=total_annotations_count, + ds_count=ds_annotations_count, + gt_count=gt_annotations_count, + confusion_matrix=ConfusionMatrix( + labels=list(confusion_matrix_labels.values()), + rows=confusion_matrix, + precision=label_precisions, + recall=label_recalls, + accuracy=label_accuracies, + ) + ), + + annotation_components=QualityReportAnnotationComponentsSummary( + shape=ComparisonReportAnnotationShapeSummary( + valid_count=_get_nested_key(summary, ["annotation_element", "shape", "valid_count"]), + missing_count=_get_nested_key(summary, ["annotation_element", "shape", "missing_count"]), + extra_count=_get_nested_key(summary, ["annotation_element", "shape", "extra_count"]), + total_count=_get_nested_key(summary, ["annotation_element", "shape", "total_count"]), + ds_count=_get_nested_key(summary, ["annotation_element", "shape", "ds_count"]), + gt_count=_get_nested_key(summary, ["annotation_element", "shape", "gt_count"]), + mean_iou=np.mean(mean_ious), + ), + label=ComparisonReportAnnotationLabelSummary( + valid_count=_get_nested_key(summary, ["annotation_element", "label", "valid_count"]), + invalid_count=_get_nested_key(summary, ["annotation_element", "label", "invalid_count"]), + total_count=_get_nested_key(summary, ["annotation_element", "label", "total_count"]), + ), + ), + ), - comparator = DatasetComparator(this_job_data_provider, gt_job_data_provider) - if frame_id is not None: - conflicts = comparator.find_frame_gt_conflicts(frame_id=frame_id) - else: - conflicts = comparator.find_gt_conflicts() + dataset_summary=ComparisonReportDatasetSummary( + frame_count=len(self._ds_dataset), + shape_count=full_ds_comparable_shapes_count, + ), - report = _create_report(this_job, gt_job, conflicts) - return _save_report_to_db(report, conflicts) + conflicts=list(itertools.chain.from_iterable( + r["errors"] for r in self._frame_results.values() + )) + ) class QueueJobManager: @@ -668,19 +1172,20 @@ class QueueJobManager: def _get_scheduler(self): return django_rq.get_scheduler(settings.CVAT_QUEUES.QUALITY_REPORTS.value) - def _make_initial_queue_job_id(self, task: Task) -> str: + def _make_initial_queue_job_id(self, task: models.Task) -> str: return f'{self._QUEUE_JOB_PREFIX}{task.id}-initial' - def _make_regular_queue_job_id(self, task: Task, start_time: datetime) -> str: + def _make_regular_queue_job_id(self, task: models.Task, start_time: timezone.datetime) -> str: return f'{self._QUEUE_JOB_PREFIX}{task.id}-{start_time.timestamp()}' - def _get_last_report_time(self, task: Task) -> Optional[datetime]: - report = QualityReport.objects.filter(task=task).order_by('-created_date').first() + @classmethod + def _get_last_report_time(cls, task: models.Task) -> Optional[timezone.datetime]: + report = models.QualityReport.objects.filter(task=task).order_by('-created_date').first() if report: return report.created_date return None - def schedule_quality_check_job(self, task: Task): + def schedule_quality_check_job(self, task: models.Task): # This function schedules a report computing job in the queue # The queue work algorithm is lock-free. It has and should keep the following properties: # - job names are stable between potential writers @@ -695,29 +1200,27 @@ def schedule_quality_check_job(self, task: Task): if last_update_time is None: # Report has never been computed queue_job_id = self._make_initial_queue_job_id(task) - elif ( - next_update_time := last_update_time + self.TASK_QUALITY_CHECK_JOB_DELAY - ) <= task.updated_date: - queue_job_id = self._make_regular_queue_job_id(task, next_update_time) else: - queue_job_id = None + # Ensure there is an updating job in the queue + next_update_time = last_update_time + self.TASK_QUALITY_CHECK_JOB_DELAY + queue_job_id = self._make_regular_queue_job_id(task, next_update_time) scheduler = self._get_scheduler() if queue_job_id not in scheduler: scheduler.enqueue_at( task.updated_date + self.TASK_QUALITY_CHECK_JOB_DELAY, - self._update_task_quality_metrics_callback, + self._update_task_quality_metrics, task_id=task.id, job_id=queue_job_id, ) @classmethod - def _update_task_quality_metrics_callback(cls, *, task_id: int): + def _update_task_quality_metrics(cls, *, task_id: int): with transaction.atomic(): # The task could have been deleted during scheduling try: - task = Task.objects.prefetch_related('segment_set__job_set').get(id=task_id) - except Task.DoesNotExist: + task = models.Task.objects.prefetch_related('segment_set__job_set').get(id=task_id) + except models.Task.DoesNotExist: return # The GT job could have been removed during scheduling @@ -733,52 +1236,132 @@ def _update_task_quality_metrics_callback(cls, *, task_id: int): gt_job = task.gt_job gt_job_data_provider = JobDataProvider(gt_job.id) - jobs = [ + jobs: List[models.Job] = [ s.job_set.first() - for s in task.segment_set.filter(job__type=JobType.NORMAL).all() + for s in task.segment_set.filter(job__type=models.JobType.NORMAL).all() ] job_data_providers = { job.id: JobDataProvider(job.id) for job in jobs } - job_reports = {} + job_comparison_reports: Dict[int, ComparisonReport] = {} for job in jobs: job_data_provider = job_data_providers[job.id] - comparator = DatasetComparator(job_data_provider, gt_job_data_provider) - conflicts = comparator.find_gt_conflicts() - report = _create_report(job, gt_job, conflicts) - job_reports[job.id] = (report, conflicts) - - # TODO: is it a separate report (the task dataset can be different from any jobs' dataset - # because of frame overlaps) or a combined summary report? - task_report = QualityReport( - task=task, - target_last_updated=task.updated_date, - gt_last_updated=gt_job.updated_date, - - # TODO: refactor, add real data - data=dict( - parameters=dict(), - - intersection_results=dict( - frame_count=0, - frame_share_percent=0, - frames=[], - - error_count=len(conflicts), - mean_error_count=0, - mean_accuracy=0, - ) - ) - ) + comparator = _DatasetComparator(job_data_provider, gt_job_data_provider) + job_comparison_reports[job.id] = comparator.generate_report() + + # The task dataset can be different from any jobs' dataset because of frame overlaps + # between jobs, from which annotations are merged to get the task annotations. + # Thus, a separate report could be computed for the task. Instead, here we only + # compute combined summary for job reports. + task_intersection_frames = set() task_conflicts = [] + task_shapes_count = 0 + task_annotations_summary = None + task_ann_components_summary = None + task_mean_shape_ious = [] + for r in job_comparison_reports.values(): + task_intersection_frames.update(r.comparison_summary.frames) + task_conflicts.extend(r.conflicts) + task_shapes_count += r.dataset_summary.shape_count + + if task_annotations_summary: + task_annotations_summary.accumulate(r.comparison_summary.annotations) + else: + task_annotations_summary = deepcopy(r.comparison_summary.annotations) + + if task_ann_components_summary: + task_ann_components_summary.accumulate(r.comparison_summary.annotation_components) + else: + task_ann_components_summary = deepcopy(r.comparison_summary.annotation_components) + task_mean_shape_ious.append(task_ann_components_summary.shape.mean_iou) + + task_ann_components_summary.shape.mean_iou = np.mean(task_mean_shape_ious) + + task_report_data = ComparisonReport( + parameters=next(iter(job_comparison_reports.values())).parameters, + + comparison_summary=ComparisonReportComparisonSummary( + frame_share_percent=len(task_intersection_frames) / (task.data.size or 1), + frames=sorted(task_intersection_frames), + + conflict_count=len(task_conflicts), + mean_conflict_count=len(task_conflicts) / (task.data.size or 1), + + annotations=task_annotations_summary, + annotation_components=task_ann_components_summary, + ), + + dataset_summary=ComparisonReportDatasetSummary( + frame_count=task.data.size, + shape_count=task_shapes_count + ), + + conflicts=task_conflicts + ) with transaction.atomic(): # The task could have been deleted during processing try: - Task.objects.get(id=task_id) - except Task.DoesNotExist: + models.Task.objects.get(id=task_id) + except models.Task.DoesNotExist: + return + + last_report_time = cls._get_last_report_time(task) + if (last_report_time + and timezone.now() < last_report_time + cls.TASK_QUALITY_CHECK_JOB_DELAY + ): + # Discard this report as it has probably been computed in parallel + # with another one return - for job_report, job_conflicts in job_reports.values(): - _save_report_to_db(job_report, job_conflicts) + job_quality_reports = {} + for job in jobs: + job_comparison_report = job_comparison_reports[job.id] + job_report = cls._save_report( + job=job, + target_last_updated=job.updated_date, + gt_last_updated=gt_job.updated_date, + data=job_comparison_report.to_json(), + conflicts=[c.to_dict() for c in job_comparison_report.conflicts], + ) + + job_quality_reports[job.id] = job_report + + cls._save_report( + task=task, + target_last_updated=task.updated_date, + gt_last_updated=gt_job.updated_date, + data=task_report_data.to_json(), + conflicts=[c.to_dict() for c in task_report_data.conflicts], + children=list(job_quality_reports.values()), + ) + + @classmethod + def _save_report(cls, **params) -> models.QualityReport: + conflicts = params.pop('conflicts') + children = params.pop('children', []) + + db_report = models.QualityReport(**params) + db_report.save() + + for conflict in conflicts: + db_conflict = db_report.conflicts.create( + type=conflict['type'], + frame=conflict['frame_id'], + ) + + for ann_id in conflict['annotation_ids']: + db_ann_id = db_conflict.annotation_ids.create( + job_id=ann_id['job_id'], + obj_id=ann_id['obj_id'], + type=ann_id['type'], + ) + db_ann_id.full_clean() + + db_conflict.full_clean() + + db_report.full_clean() + + for child in children: + db_report.children.add(child) - _save_report_to_db(task_report, task_conflicts) + return db_report diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index 6fb2b9470f79..18b7e40346d2 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -1906,26 +1906,38 @@ def _validate_existence_of_cloud_storage(cloud_storage_id): raise serializers.ValidationError(f'The specified cloud storage {cloud_storage_id} does not exist.') +class AnnotationIdSerializer(serializers.ModelSerializer): + class Meta: + model = models.AnnotationId + fields = ('obj_id', 'job_id', 'type') + read_only_fields = fields + + class AnnotationConflictSerializer(serializers.ModelSerializer): + annotation_ids = AnnotationIdSerializer(many=True) + class Meta: model = models.AnnotationConflict - fields = ('frame_id', 'type', 'message', 'data') + fields = ('frame', 'type', 'annotation_ids', 'report_id') + read_only_fields = fields class QualityReportSummarySerializer(serializers.Serializer): frame_count = serializers.IntegerField() frame_share_percent = serializers.FloatField() - conflicts_count = serializers.IntegerField() + conflicts_count = serializers.IntegerField(source='conflict_count') # This set is enough for basic characteristics, such as - # A_extra, B_extra, accuracy, precision and recall - valid_count = serializers.IntegerField() - ds_count = serializers.IntegerField() - gt_count = serializers.IntegerField() + # DS_unmatched, GT_unmatched, accuracy, precision and recall + valid_count = serializers.IntegerField(source='annotations.valid_count') + ds_count = serializers.IntegerField(source='annotations.ds_count') + gt_count = serializers.IntegerField(source='annotations.gt_count') + class QualityReportParametersSerializer(serializers.Serializer): iou_threshold = serializers.FloatField() + class QualityReportSerializer(serializers.ModelSerializer): target = serializers.ChoiceField(models.QualityReportTarget.choices()) summary = QualityReportSummarySerializer() @@ -1937,17 +1949,3 @@ class Meta: 'created_date', 'target_last_updated', 'gt_last_updated', ) read_only_fields = fields - - def to_representation(self, instance): - instance.summary = dict( - frame_count=0, - frame_share_percent=0, - conflicts_count=0, - valid_count=0, - ds_count=0, - gt_count=0, - ) - instance.parameters = dict( - iou_threshold=0 - ) - return super().to_representation(instance) diff --git a/cvat/apps/engine/signals.py b/cvat/apps/engine/signals.py index f19564b762ea..cd17e5c3d288 100644 --- a/cvat/apps/engine/signals.py +++ b/cvat/apps/engine/signals.py @@ -8,7 +8,7 @@ from django.db.models.signals import post_delete, post_save from django.dispatch import receiver -from .models import (CloudStorage, Data, Job, Profile, Project, +from .models import (Annotation, CloudStorage, Data, Job, Profile, Project, StatusChoice, Task) from cvat.apps.engine import quality_control as qc @@ -81,13 +81,20 @@ def __delete_cloudstorage_handler(instance, **kwargs): # TODO: handle nested field updates (e.g. labels, annotations, import, export, etc.) - @receiver(post_save, sender=Job, - dispatch_uid=__name__ + ".save_job_handler-update_quality_metrics") -def __save_job_handler__update_quality_metrics(instance, created, **kwargs): - qc.QueueJobManager().schedule_quality_check_job(instance.segment.task) - + dispatch_uid=__name__ + ".save_job-update_quality_metrics") @receiver(post_save, sender=Task, - dispatch_uid=__name__ + ".save_task_handler-update_quality_metrics") -def __save_task_handler__update_quality_metrics(instance, created, **kwargs): - qc.QueueJobManager().schedule_quality_check_job(instance) + dispatch_uid=__name__ + ".save_task-update_quality_metrics") +@receiver(post_save, sender=Annotation, + dispatch_uid=__name__ + ".save_annotation-update_quality_metrics") +def __save_job__update_quality_metrics(instance, created, **kwargs): + if isinstance(instance, Task): + task = instance + elif isinstance(instance, Job): + task = instance.segment.task + elif isinstance(instance, Annotation): + task = instance.job.segment.task + else: + assert False + + qc.QueueJobManager().schedule_quality_check_job(task) diff --git a/cvat/apps/engine/urls.py b/cvat/apps/engine/urls.py index a673ab4a8f19..56ea2e89c5a5 100644 --- a/cvat/apps/engine/urls.py +++ b/cvat/apps/engine/urls.py @@ -23,6 +23,7 @@ router.register('labels', views.LabelViewSet) router.register('cloudstorages', views.CloudStorageViewSet) router.register('quality_reports', views.QualityReportViewSet) +router.register('conflicts', views.ConflictsViewSet) urlpatterns = [ # Entry point for a client diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index 7149fb011655..734ae9bafec8 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -42,14 +42,13 @@ import cvat.apps.dataset_manager as dm import cvat.apps.dataset_manager.views # pylint: disable=unused-import -import cvat.apps.engine.quality_control as qc from cvat.apps.engine.cloud_provider import db_storage_to_storage_instance from cvat.apps.dataset_manager.bindings import CvatImportError from cvat.apps.dataset_manager.serializers import DatasetFormatsSerializer from cvat.apps.engine.frame_provider import FrameProvider from cvat.apps.engine.media_extractors import get_mime from cvat.apps.engine.models import ( - Job, JobType, Label, QualityReport, Task, Project, Issue, Data, + AnnotationConflict, Job, JobType, Label, QualityReport, Task, Project, Issue, Data, Comment, StorageMethodChoice, StorageChoice, CloudProviderChoice, Location ) @@ -78,8 +77,8 @@ from . import models, task from .log import slogger from cvat.apps.iam.permissions import (CloudStoragePermission, - CommentPermission, IssuePermission, JobPermission, LabelPermission, ProjectPermission, QualityReportPermission, - TaskPermission, UserPermission) + CommentPermission, IssuePermission, JobPermission, LabelPermission, + ProjectPermission, QualityReportPermission, TaskPermission, UserPermission) from cvat.apps.engine.cache import MediaCache from cvat.apps.events.handlers import handle_annotations_patch from cvat.apps.engine.view_utils import tus_chunk_action @@ -1655,38 +1654,6 @@ def preview(self, request, pk): return data_getter(request, self._object.segment.start_frame, self._object.segment.stop_frame, self._object.segment.task.data) - @extend_schema( - operation_id="jobs_check_conflicts", - parameters=[OpenApiParameter('frame_id', OpenApiTypes.INT)], - request=None, - responses=AnnotationConflictSerializer(many=True) - ) - @action(detail=True, methods=['POST'], url_path='conflicts', serializer_class=None, - simple_filters=None, filter_fields=None, search_fields=None, - pagination_class=None, ordering_fields=None) - def conflicts(self, request, pk): - this_job = Job.objects.get(pk=pk) # call check_object_permissions as well - - gt_job = this_job.segment.task.gt_job - if not gt_job: - raise ValidationError( - "The ground truth job is not set up for this task. Please create it and try again" - ) - - frame_id = request.query_params.get('frame_id', None) - if frame_id is not None: - frame_id = int(frame_id) - - if not this_job.segment.contains_frame(frame_id): - raise ValidationError("This frame does not belong to this job") - - if not gt_job.segment.contains_frame(frame_id): - raise ValidationError("This frame does not belong to the Ground Truth job") - - report = qc.find_gt_conflicts(this_job, gt_job, frame_id=frame_id) - - report_serializer = AnnotationConflictSerializer(report.conflicts, many=True) - return Response(report_serializer.data, status=status.HTTP_200_OK) @extend_schema(tags=['issues']) @extend_schema_view( @@ -2256,6 +2223,34 @@ def actions(self, request, pk): return HttpResponseBadRequest(msg) +@extend_schema(tags=['conflicts']) +@extend_schema_view( + list=extend_schema( + summary='Method returns a paginated list of annotation conflicts', + responses={ + '200': AnnotationConflictSerializer(many=True), + }), +) +class ConflictsViewSet(viewsets.GenericViewSet, mixins.ListModelMixin): + queryset = AnnotationConflict.objects.prefetch_related('report').all() + + # NOTE: This filter works incorrectly for this view + # it requires task__organization OR project__organization check. + # Thus, we rely on permission-based filtering + iam_organization_field = None + + search_fields = [] + filter_fields = list(search_fields) + ['id', 'report_id', 'frame', 'type', 'job_id'] + simple_filters = set(filter_fields) - {'id'} + lookup_fields = { + 'report_id': 'report__id', + 'job_id': 'report__job__id', + } + ordering_fields = list(filter_fields) + ordering = 'id' + serializer_class = AnnotationConflictSerializer + + @extend_schema(tags=['quality_reports']) @extend_schema_view( retrieve=extend_schema( diff --git a/cvat/schema.yml b/cvat/schema.yml index 793bb99ef02c..a8b51f2a1da5 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -1114,6 +1114,96 @@ paths: responses: '204': description: The comment has been deleted + /api/conflicts: + get: + operationId: conflicts_list + summary: Method returns a paginated list of annotation conflicts + parameters: + - in: header + name: X-Organization + schema: + type: string + - name: filter + required: false + in: query + description: 'A filter term. Available filter_fields: [''id'', ''report_id'', + ''frame'', ''type'', ''job_id'']' + schema: + type: string + - name: frame + in: query + description: A simple equality filter for the frame field + schema: + type: integer + - name: job_id + in: query + description: A simple equality filter for the job_id field + schema: + type: integer + - in: query + name: org + schema: + type: string + description: Organization unique slug + - in: query + name: org_id + schema: + type: integer + description: Organization identifier + - name: page + required: false + in: query + description: A page number within the paginated result set. + schema: + type: integer + - name: page_size + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: report_id + in: query + description: A simple equality filter for the report_id field + schema: + type: integer + - name: search + required: false + in: query + description: 'A search term. Available search_fields: []' + schema: + type: string + - name: sort + required: false + in: query + description: 'Which field to use when ordering the results. Available ordering_fields: + [''id'', ''report_id'', ''frame'', ''type'', ''job_id'']' + schema: + type: string + - name: type + in: query + description: A simple equality filter for the type field + schema: + type: string + enum: + - missing_annotation + - extra_annotation + - mismatching_label + tags: + - conflicts + security: + - sessionAuth: [] + csrfAuth: [] + tokenAuth: [] + - signatureAuth: [] + - basicAuth: [] + responses: + '200': + content: + application/vnd.cvat+json: + schema: + $ref: '#/components/schemas/PaginatedAnnotationConflictList' + description: '' /api/events: get: operationId: events_list @@ -2323,70 +2413,6 @@ paths: responses: '204': description: The annotation has been deleted - /api/jobs/{id}/conflicts: - post: - operationId: jobs_check_conflicts - parameters: - - in: header - name: X-Organization - schema: - type: string - - name: filter - required: false - in: query - description: 'A filter term. Available filter_fields: None' - schema: - type: string - - in: query - name: frame_id - schema: - type: integer - - in: path - name: id - schema: - type: integer - description: A unique integer value identifying this job. - required: true - - in: query - name: org - schema: - type: string - description: Organization unique slug - - in: query - name: org_id - schema: - type: integer - description: Organization identifier - - name: search - required: false - in: query - description: 'A search term. Available search_fields: None' - schema: - type: string - - name: sort - required: false - in: query - description: 'Which field to use when ordering the results. Available ordering_fields: - None' - schema: - type: string - tags: - - jobs - security: - - sessionAuth: [] - csrfAuth: [] - tokenAuth: [] - - signatureAuth: [] - - basicAuth: [] - responses: - '200': - content: - application/vnd.cvat+json: - schema: - type: array - items: - $ref: '#/components/schemas/AnnotationConflict' - description: '' /api/jobs/{id}/data: get: operationId: jobs_retrieve_data @@ -6557,27 +6583,27 @@ components: AnnotationConflict: type: object properties: - frame_id: + frame: type: integer - maximum: 2147483647 - minimum: 0 + readOnly: true type: - $ref: '#/components/schemas/AnnotationConflictTypeEnum' - message: - type: string - maxLength: 1024 - data: - type: object - additionalProperties: {} + allOf: + - $ref: '#/components/schemas/AnnotationConflictTypeEnum' + readOnly: true + annotation_ids: + type: array + items: + $ref: '#/components/schemas/AnnotationId' + report_id: + type: integer + readOnly: true required: - - data - - frame_id - - type + - annotation_ids AnnotationConflictTypeEnum: enum: - missing_annotation - extra_annotation - - mismatching_annotation + - mismatching_label type: string AnnotationFileRequest: type: object @@ -6587,6 +6613,19 @@ components: format: binary required: - annotation_file + AnnotationId: + type: object + properties: + obj_id: + type: integer + readOnly: true + job_id: + type: integer + readOnly: true + type: + allOf: + - $ref: '#/components/schemas/ShapeType' + readOnly: true AnnotationsRead: oneOf: - $ref: '#/components/schemas/LabeledData' @@ -6938,7 +6977,6 @@ components: nullable: true description: | A list of valid frame ids. The None value means all frames are included. - Only applicable for video data. required: - deleted_frames - frames @@ -8056,6 +8094,26 @@ components: additionalProperties: {} required: - slug + PaginatedAnnotationConflictList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?page=4 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?page=2 + results: + type: array + items: + $ref: '#/components/schemas/AnnotationConflict' PaginatedCloudStorageReadList: type: object properties: diff --git a/tests/python/shared/assets/cvat_db/data.json b/tests/python/shared/assets/cvat_db/data.json index fc8e38fe1eef..cf9b24193469 100644 --- a/tests/python/shared/assets/cvat_db/data.json +++ b/tests/python/shared/assets/cvat_db/data.json @@ -9735,1436 +9735,6 @@ "cloud_storage_id": null } }, -{ - "model": "engine.qualityreport", - "pk": 1, - "fields": { - "job": 27, - "task": null, - "parent": null, - "created_date": "2023-04-22T14:49:30.751Z", - "target_last_updated": "2023-04-14T14:58:50.944Z", - "gt_last_updated": "2023-04-14T15:03:25.984Z", - "data": { - "parameters": {}, - "intersection_results": { - "frames": [], - "error_count": 72, - "frame_count": 0, - "mean_accuracy": 0, - "mean_error_count": 0, - "frame_share_percent": 0 - } - } - } -}, -{ - "model": "engine.qualityreport", - "pk": 2, - "fields": { - "job": null, - "task": 22, - "parent": null, - "created_date": "2023-04-22T14:49:30.867Z", - "target_last_updated": "2023-04-14T15:03:25.969Z", - "gt_last_updated": "2023-04-14T15:03:25.984Z", - "data": { - "parameters": {}, - "intersection_results": { - "frames": [], - "error_count": 72, - "frame_count": 0, - "mean_accuracy": 0, - "mean_error_count": 0, - "frame_share_percent": 0 - } - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 1, - "fields": { - "report": 1, - "frame_id": 0, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 384, - "type": "rectangle", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 2, - "fields": { - "report": 1, - "frame_id": 0, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 373, - "type": "rectangle", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 3, - "fields": { - "report": 1, - "frame_id": 0, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 483, - "type": "rectangle", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 4, - "fields": { - "report": 1, - "frame_id": 0, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 494, - "type": "rectangle", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 5, - "fields": { - "report": 1, - "frame_id": 1, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 374, - "type": "rectangle", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 6, - "fields": { - "report": 1, - "frame_id": 1, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 385, - "type": "rectangle", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 7, - "fields": { - "report": 1, - "frame_id": 1, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 428, - "type": "polygon", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 8, - "fields": { - "report": 1, - "frame_id": 1, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 484, - "type": "rectangle", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 9, - "fields": { - "report": 1, - "frame_id": 1, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 495, - "type": "rectangle", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 10, - "fields": { - "report": 1, - "frame_id": 1, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 518, - "type": "ellipse", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 11, - "fields": { - "report": 1, - "frame_id": 1, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 485, - "type": "polygon", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 12, - "fields": { - "report": 1, - "frame_id": 2, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 386, - "type": "rectangle", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 13, - "fields": { - "report": 1, - "frame_id": 2, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 375, - "type": "rectangle", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 14, - "fields": { - "report": 1, - "frame_id": 2, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 429, - "type": "polygon", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 15, - "fields": { - "report": 1, - "frame_id": 2, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 508, - "type": "mask", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 16, - "fields": { - "report": 1, - "frame_id": 2, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 495, - "type": "points", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 17, - "fields": { - "report": 1, - "frame_id": 2, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 505, - "type": "polyline", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 18, - "fields": { - "report": 1, - "frame_id": 3, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 387, - "type": "rectangle", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 19, - "fields": { - "report": 1, - "frame_id": 3, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 376, - "type": "rectangle", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 20, - "fields": { - "report": 1, - "frame_id": 3, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 430, - "type": "polygon", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 21, - "fields": { - "report": 1, - "frame_id": 3, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 497, - "type": "rectangle", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 22, - "fields": { - "report": 1, - "frame_id": 3, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 495, - "type": "points", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 23, - "fields": { - "report": 1, - "frame_id": 3, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 487, - "type": "polygon", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 24, - "fields": { - "report": 1, - "frame_id": 4, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 388, - "type": "rectangle", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 25, - "fields": { - "report": 1, - "frame_id": 4, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 377, - "type": "rectangle", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 26, - "fields": { - "report": 1, - "frame_id": 4, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 431, - "type": "polygon", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 27, - "fields": { - "report": 1, - "frame_id": 4, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 487, - "type": "rectangle", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 28, - "fields": { - "report": 1, - "frame_id": 4, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 479, - "type": "polygon", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 29, - "fields": { - "report": 1, - "frame_id": 4, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 488, - "type": "polygon", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 30, - "fields": { - "report": 1, - "frame_id": 5, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 378, - "type": "rectangle", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 31, - "fields": { - "report": 1, - "frame_id": 5, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 389, - "type": "rectangle", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 32, - "fields": { - "report": 1, - "frame_id": 5, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 432, - "type": "polygon", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 33, - "fields": { - "report": 1, - "frame_id": 5, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 499, - "type": "rectangle", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 34, - "fields": { - "report": 1, - "frame_id": 5, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 488, - "type": "rectangle", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 35, - "fields": { - "report": 1, - "frame_id": 5, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 538, - "type": "polygon", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 36, - "fields": { - "report": 1, - "frame_id": 5, - "type": "mismatching_annotation", - "message": "", - "data": { - "kind": "label", - "actual": 1, - "expected": 2, - "annotation_ids": [ - { - "id": 480, - "type": "polygon", - "job_id": 27 - }, - { - "id": 437, - "type": "polygon", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 37, - "fields": { - "report": 1, - "frame_id": 6, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 390, - "type": "rectangle", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 38, - "fields": { - "report": 1, - "frame_id": 6, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 379, - "type": "rectangle", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 39, - "fields": { - "report": 1, - "frame_id": 6, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 433, - "type": "polygon", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 40, - "fields": { - "report": 1, - "frame_id": 6, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 500, - "type": "rectangle", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 41, - "fields": { - "report": 1, - "frame_id": 6, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 489, - "type": "rectangle", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 42, - "fields": { - "report": 1, - "frame_id": 6, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 537, - "type": "polygon", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 43, - "fields": { - "report": 1, - "frame_id": 6, - "type": "mismatching_annotation", - "message": "", - "data": { - "kind": "label", - "actual": 1, - "expected": 2, - "annotation_ids": [ - { - "id": 490, - "type": "polygon", - "job_id": 27 - }, - { - "id": 438, - "type": "polygon", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 44, - "fields": { - "report": 1, - "frame_id": 7, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 391, - "type": "rectangle", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 45, - "fields": { - "report": 1, - "frame_id": 7, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 380, - "type": "rectangle", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 46, - "fields": { - "report": 1, - "frame_id": 7, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 434, - "type": "polygon", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 47, - "fields": { - "report": 1, - "frame_id": 7, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 439, - "type": "polygon", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 48, - "fields": { - "report": 1, - "frame_id": 7, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 490, - "type": "rectangle", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 49, - "fields": { - "report": 1, - "frame_id": 7, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 501, - "type": "rectangle", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 50, - "fields": { - "report": 1, - "frame_id": 7, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 491, - "type": "polygon", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 51, - "fields": { - "report": 1, - "frame_id": 8, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 392, - "type": "rectangle", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 52, - "fields": { - "report": 1, - "frame_id": 8, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 381, - "type": "rectangle", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 53, - "fields": { - "report": 1, - "frame_id": 8, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 435, - "type": "polygon", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 54, - "fields": { - "report": 1, - "frame_id": 8, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 440, - "type": "polygon", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 55, - "fields": { - "report": 1, - "frame_id": 8, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 491, - "type": "rectangle", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 56, - "fields": { - "report": 1, - "frame_id": 8, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 502, - "type": "rectangle", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 57, - "fields": { - "report": 1, - "frame_id": 8, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 483, - "type": "polygon", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 58, - "fields": { - "report": 1, - "frame_id": 8, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 492, - "type": "polygon", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 59, - "fields": { - "report": 1, - "frame_id": 9, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 382, - "type": "rectangle", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 60, - "fields": { - "report": 1, - "frame_id": 9, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 393, - "type": "rectangle", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 61, - "fields": { - "report": 1, - "frame_id": 9, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 436, - "type": "polygon", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 62, - "fields": { - "report": 1, - "frame_id": 9, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 441, - "type": "polygon", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 63, - "fields": { - "report": 1, - "frame_id": 9, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 492, - "type": "rectangle", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 64, - "fields": { - "report": 1, - "frame_id": 9, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 503, - "type": "rectangle", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 65, - "fields": { - "report": 1, - "frame_id": 9, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 484, - "type": "polygon", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 66, - "fields": { - "report": 1, - "frame_id": 10, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 394, - "type": "rectangle", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 67, - "fields": { - "report": 1, - "frame_id": 10, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 383, - "type": "rectangle", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 68, - "fields": { - "report": 1, - "frame_id": 10, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 436, - "type": "polygon", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 69, - "fields": { - "report": 1, - "frame_id": 10, - "type": "missing_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 441, - "type": "polygon", - "job_id": 28 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 70, - "fields": { - "report": 1, - "frame_id": 10, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 504, - "type": "rectangle", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 71, - "fields": { - "report": 1, - "frame_id": 10, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 493, - "type": "rectangle", - "job_id": 27 - } - ] - } - } -}, -{ - "model": "engine.annotationconflict", - "pk": 72, - "fields": { - "report": 1, - "frame_id": 10, - "type": "extra_annotation", - "message": "", - "data": { - "annotation_ids": [ - { - "id": 484, - "type": "polygon", - "job_id": 27 - } - ] - } - } -}, { "model": "webhooks.webhook", "pk": 1, From 7e6497c1a7dc7b16fa63076906ca4d130cf5b073 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 27 Apr 2023 18:08:17 +0300 Subject: [PATCH 042/257] Add debug config for queue --- .vscode/launch.json | 20 ++++++++++++++++++++ docker-compose.dev.yml | 11 +++++++++++ 2 files changed, 31 insertions(+) diff --git a/.vscode/launch.json b/.vscode/launch.json index 0b02a0110cad..89a7127ff6a7 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -84,6 +84,26 @@ ], "justMyCode": false, }, + { + "name": "REST API tests: Attach to RQ quality rerports worker", + "type": "python", + "request": "attach", + "connect": { + "host": "127.0.0.1", + "port": 9094 + }, + "pathMappings": [ + { + "localRoot": "${workspaceFolder}", + "remoteRoot": "/home/django/" + }, + { + "localRoot": "${workspaceFolder}/.env", + "remoteRoot": "/opt/venv", + } + ], + "justMyCode": false, + }, { "type": "pwa-chrome", "request": "launch", diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index fcb372770662..f9390764fd9d 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -52,6 +52,17 @@ services: ports: - '9093:9093' + cvat_worker_quality_reports: + environment: + # For debugging, make sure to set 1 process + # Due to the supervisord specifics, the extra processes will fail and + # after few attempts supervisord will give up restarting, leaving only 1 process + # NUMPROCS: 1 + CVAT_DEBUG_ENABLED: '${CVAT_DEBUG_ENABLED:-no}' + CVAT_DEBUG_PORT: '9094' + ports: + - '9094:9094' + cvat_worker_annotation: environment: # For debugging, make sure to set 1 process From 992156f157c5fc2ba959f0e10d9c018140167b6d Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 27 Apr 2023 18:34:06 +0300 Subject: [PATCH 043/257] Add local debugging config --- .vscode/launch.json | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 89a7127ff6a7..f3317ec51baa 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -207,6 +207,7 @@ "args": [ "rqworker", "export", + "--with-scheduler", "--worker-class", "cvat.rqworker.SimpleWorker", ], @@ -219,7 +220,7 @@ "console": "internalConsole" }, { - "name": "server: RQ - scheduler", + "name": "server: RQ - quality reports", "type": "python", "request": "launch", "stopOnEntry": false, @@ -227,13 +228,18 @@ "python": "${command:python.interpreterPath}", "program": "${workspaceRoot}/manage.py", "args": [ - "rqscheduler", - "--queue", - "export" + "rqworker", + "quality_reports", + "--with-scheduler", + "--worker-class", + "cvat.rqworker.SimpleWorker", ], "django": true, "cwd": "${workspaceFolder}", - "env": {}, + "env": { + "DJANGO_LOG_SERVER_HOST": "localhost", + "DJANGO_LOG_SERVER_PORT": "8282" + }, "console": "internalConsole" }, { From 2fe64405473e865f26190883ae28bf76cd6f8605 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 27 Apr 2023 18:56:28 +0300 Subject: [PATCH 044/257] Add quality_report id in responses --- cvat/apps/engine/serializers.py | 2 +- cvat/schema.yml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index 18b7e40346d2..d1584ff521e8 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -1945,7 +1945,7 @@ class QualityReportSerializer(serializers.ModelSerializer): class Meta: model = models.QualityReport - fields = ('job_id', 'task_id', 'parent_id', 'target', 'summary', 'parameters', + fields = ('id', 'job_id', 'task_id', 'parent_id', 'target', 'summary', 'parameters', 'created_date', 'target_last_updated', 'gt_last_updated', ) read_only_fields = fields diff --git a/cvat/schema.yml b/cvat/schema.yml index a8b51f2a1da5..87664f9011c8 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -8895,6 +8895,9 @@ components: QualityReport: type: object properties: + id: + type: integer + readOnly: true job_id: type: integer nullable: true From eab1c83e9f748942f6fc6ed64e8f60c18423c1fb Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 27 Apr 2023 19:10:35 +0300 Subject: [PATCH 045/257] Allow all job types in job creation api schema --- cvat/apps/engine/serializers.py | 7 ++----- cvat/schema.yml | 6 +----- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index d1584ff521e8..a2b77a2c5cd1 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -567,13 +567,11 @@ class Meta: class JobWriteSerializer(WriteOnceMixin, serializers.ModelSerializer): assignee = serializers.IntegerField(allow_null=True, required=False) - # NOTE: It can be expressed using serializer inheritance, but it is + # NOTE: Field variations can be expressed using serializer inheritance, but it is # harder to use then: we need to make a manual switch in get_serializer_class() # and create an extra serializer type in the API schema. # Need to investigate how it can be simplified. - type = serializers.ChoiceField(choices=( - (models.JobType.GROUND_TRUTH.value, models.JobType.GROUND_TRUTH.name), - )) + type = serializers.ChoiceField(choices=models.JobType.choices()) task_id = serializers.IntegerField() frame_selection_method = serializers.ChoiceField( @@ -613,7 +611,6 @@ def create(self, validated_data): task_id = validated_data.pop('task_id') task = models.Task.objects.get(pk=task_id) - # TODO: extract to separate functions if validated_data["type"] == models.JobType.GROUND_TRUTH: if not task.data: raise serializers.ValidationError( diff --git a/cvat/schema.yml b/cvat/schema.yml index 87664f9011c8..31cc099dcc4c 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -7602,7 +7602,7 @@ components: state: $ref: '#/components/schemas/OperationStatus' type: - $ref: '#/components/schemas/JobWriteTypeEnum' + $ref: '#/components/schemas/JobType' task_id: type: integer frame_selection_method: @@ -7630,10 +7630,6 @@ components: required: - task_id - type - JobWriteTypeEnum: - enum: - - ground_truth - type: string JobsSummary: type: object properties: From e7366de6a6adefa2a05b5d7cc696e27c91ba2944 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 27 Apr 2023 20:18:20 +0300 Subject: [PATCH 046/257] Add report downloading endpoint --- cvat/apps/engine/models.py | 3 +++ cvat/apps/engine/views.py | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index fba0f36426dc..207856e3286b 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -1105,6 +1105,9 @@ def get_task(self) -> Task: else: return self.job.segment.task + def get_json_report(self) -> str: + return self.data + def clean(self): if not (self.job is not None) ^ (self.task is not None): raise ValidationError("One of the 'job' and 'task' fields must be set") diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index 734ae9bafec8..9111e5c8870d 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -2326,6 +2326,12 @@ def get_queryset(self): return queryset + @action(detail=True, methods=['GET'], url_path='data', serializer_class=None) + def data(self, request, pk): + report = self.get_object() # check permissions + json_report = report.get_json_report() + return HttpResponse(json_report.encode()) + def rq_exception_handler(rq_job, exc_type, exc_value, tb): rq_job.exc_info = "".join( From 975c3dc15c2bb9c36fc0ee5f9b43f84ab0e2ab00 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 27 Apr 2023 20:19:38 +0300 Subject: [PATCH 047/257] Update schema --- cvat/schema.yml | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/cvat/schema.yml b/cvat/schema.yml index 31cc099dcc4c..c050af53041f 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -4378,6 +4378,41 @@ paths: schema: $ref: '#/components/schemas/QualityReport' description: '' + /api/quality_reports/{id}/data: + get: + operationId: quality_reports_retrieve_data + parameters: + - in: header + name: X-Organization + schema: + type: string + - in: path + name: id + schema: + type: integer + description: A unique integer value identifying this quality report. + required: true + - in: query + name: org + schema: + type: string + description: Organization unique slug + - in: query + name: org_id + schema: + type: integer + description: Organization identifier + tags: + - quality_reports + security: + - sessionAuth: [] + csrfAuth: [] + tokenAuth: [] + - signatureAuth: [] + - basicAuth: [] + responses: + '200': + description: No response body /api/schema/: get: operationId: schema_retrieve From 6915c0326ab83aa777f56e1f50d072c6a29d51e3 Mon Sep 17 00:00:00 2001 From: klakhov Date: Fri, 28 Apr 2023 10:34:44 +0300 Subject: [PATCH 048/257] added conflicts, fixed bugs --- cvat-canvas/src/scss/canvas.scss | 5 + cvat-canvas/src/typescript/canvasView.ts | 24 ++++ cvat-core/src/annotations-objects.ts | 9 ++ cvat-core/src/annotations.ts | 26 +++- cvat-core/src/api-implementation.ts | 22 +++- cvat-core/src/api.ts | 8 +- cvat-core/src/object-state.ts | 14 +++ cvat-core/src/quality-conflict.ts | 115 ++++++++++++++++++ cvat-core/src/quality-report.ts | 4 +- cvat-core/src/server-proxy.ts | 22 +++- cvat-core/src/session-implementation.ts | 4 +- cvat-core/src/session.ts | 4 +- cvat-ui/src/actions/analytics-actions.ts | 6 +- cvat-ui/src/actions/annotation-actions.ts | 34 +++--- .../views/canvas2d/canvas-context-menu.tsx | 17 ++- .../canvas/views/canvas2d/canvas-wrapper.tsx | 40 +++++- .../review-workspace/review-workspace.tsx | 2 + .../annotation-page/review/conflict-label.tsx | 47 +++++++ .../review/conflicts-aggregator.tsx | 94 ++++++++++++++ .../annotation-page/review/styles.scss | 25 ++++ .../task-analytics-page/quality/job-list.tsx | 2 +- .../quality/mean-quality.tsx | 4 +- .../objects-side-bar/objects-list.tsx | 7 +- cvat-ui/src/cvat-core-wrapper.ts | 3 + cvat-ui/src/reducers/analytics-reducer.ts | 1 + cvat-ui/src/reducers/annotation-reducer.ts | 25 ++-- cvat-ui/src/reducers/index.ts | 8 +- cvat-ui/src/reducers/review-reducer.ts | 8 ++ 28 files changed, 518 insertions(+), 62 deletions(-) create mode 100644 cvat-core/src/quality-conflict.ts create mode 100644 cvat-ui/src/components/annotation-page/review/conflict-label.tsx create mode 100644 cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx diff --git a/cvat-canvas/src/scss/canvas.scss b/cvat-canvas/src/scss/canvas.scss index 81d01831685d..e1bb89b9fd33 100644 --- a/cvat-canvas/src/scss/canvas.scss +++ b/cvat-canvas/src/scss/canvas.scss @@ -152,6 +152,11 @@ polyline.cvat_canvas_shape_splitting { stroke-dasharray: 45; } +.cvat_canvas_conflicted { + stroke: red; + stroke-dasharray: 45; +} + .cvat_canvas_shape_occluded_point { stroke-dasharray: 1 !important; stroke: white; diff --git a/cvat-canvas/src/typescript/canvasView.ts b/cvat-canvas/src/typescript/canvasView.ts index 7d41fcfa76b1..0184297e7c39 100644 --- a/cvat-canvas/src/typescript/canvasView.ts +++ b/cvat-canvas/src/typescript/canvasView.ts @@ -2709,6 +2709,10 @@ export class CanvasViewImpl implements CanvasView, Listener { rect.addClass('cvat_canvas_ground_truth'); } + if (state.conflict) { + rect.addClass('cvat_canvas_conflicted'); + } + return rect; } @@ -2737,6 +2741,10 @@ export class CanvasViewImpl implements CanvasView, Listener { polygon.addClass('cvat_canvas_ground_truth'); } + if (state.conflict) { + polygon.addClass('cvat_canvas_conflicted'); + } + return polygon; } @@ -2765,6 +2773,10 @@ export class CanvasViewImpl implements CanvasView, Listener { polyline.addClass('cvat_canvas_ground_truth'); } + if (state.conflict) { + polyline.addClass('cvat_canvas_conflicted'); + } + return polyline; } @@ -2794,6 +2806,10 @@ export class CanvasViewImpl implements CanvasView, Listener { cube.addClass('cvat_canvas_ground_truth'); } + if (state.conflict) { + cube.addClass('cvat_canvas_conflicted'); + } + return cube; } @@ -3372,6 +3388,10 @@ export class CanvasViewImpl implements CanvasView, Listener { rect.addClass('cvat_canvas_ground_truth'); } + if (state.conflict) { + rect.addClass('cvat_canvas_conflicted'); + } + return rect; } @@ -3402,6 +3422,10 @@ export class CanvasViewImpl implements CanvasView, Listener { group.addClass('cvat_canvas_ground_truth'); } + if (state.conflict) { + group.addClass('cvat_canvas_conflicted'); + } + shape.remove = (): SVG.PolyLine => { this.selectize(false, shape); shape.constructor.prototype.remove.call(shape); diff --git a/cvat-core/src/annotations-objects.ts b/cvat-core/src/annotations-objects.ts index 8c0c03997818..19eddc01e9ca 100644 --- a/cvat-core/src/annotations-objects.ts +++ b/cvat-core/src/annotations-objects.ts @@ -57,6 +57,7 @@ class Annotation { protected history: any; protected groupColors: Record; public serverID: number | null; + protected jobID: number; protected parentID: number | null; protected dimension: DimensionType; public group: number; @@ -81,6 +82,7 @@ class Annotation { this.groupColors = injection.groupColors; this.clientID = clientID; this.serverID = data.id || null; + this.jobID = data.job_id; this.parentID = injection.parentID || null; this.dimension = injection.dimension; this.group = data.group; @@ -568,6 +570,7 @@ export class Shape extends Drawn { shapeType: this.shapeType, clientID: this.clientID, serverID: this.serverID, + jobID: this.jobID, parentID: this.parentID, occluded: this.occluded, lock: this.lock, @@ -934,6 +937,7 @@ export class Track extends Drawn { shapeType: this.shapeType, clientID: this.clientID, serverID: this.serverID, + jobID: this.jobID, parentID: this.parentID, lock: this.lock, color: this.color, @@ -1469,6 +1473,7 @@ export class Tag extends Annotation { objectType: ObjectType.TAG, clientID: this.clientID, serverID: this.serverID, + jobID: this.jobID, lock: this.lock, attributes: { ...this.attributes }, label: this.label, @@ -1993,9 +1998,11 @@ export class SkeletonShape extends Shape { shapeType: this.shapeType, clientID: this.clientID, serverID: this.serverID, + jobID: this.jobID, points: this.points, zOrder: this.zOrder, rotation: 0, + isGroundTruth: this.isGroundTruth, attributes: { ...this.attributes }, descriptions: [...this.descriptions], elements, @@ -2901,6 +2908,8 @@ export class SkeletonTrack extends Track { shapeType: this.shapeType, clientID: this.clientID, serverID: this.serverID, + jobID: this.jobID, + isGroundTruth: this.isGroundTruth, color: this.color, updated: Math.max(this.updated, ...this.elements.map((element) => element.updated)), label: this.label, diff --git a/cvat-core/src/annotations.ts b/cvat-core/src/annotations.ts index 5ca8b6cb184d..6f2c59bff7ef 100644 --- a/cvat-core/src/annotations.ts +++ b/cvat-core/src/annotations.ts @@ -41,17 +41,31 @@ function processGroundTruthAnnotations(rawAnnotations, groundTruthAnnotations) { return result; } -async function getAnnotationsFromServer(session, GTAnnotaionsSource) { +function addJobId(rawAnnotations, jobID) { + rawAnnotations.shapes.forEach((annotation) => { annotation.job_id = jobID; }); + rawAnnotations.tracks.forEach((annotation) => { annotation.job_id = jobID; }); + rawAnnotations.tags.forEach((annotation) => { annotation.job_id = jobID; }); + const result = { + shapes: [...rawAnnotations.shapes], + tracks: [...rawAnnotations.tracks], + tags: [...rawAnnotations.tags], + }; + return result; +} + +async function getAnnotationsFromServer(session, groundTruthJobId) { const sessionType = session instanceof Task ? 'task' : 'job'; const cache = getCache(sessionType); if (!cache.has(session)) { let rawAnnotations = await serverProxy.annotations.getAnnotations(sessionType, session.id); - if (GTAnnotaionsSource) { - const gtAnnotations = await serverProxy.annotations.getAnnotations(sessionType, GTAnnotaionsSource); + rawAnnotations = addJobId(rawAnnotations, session.id); + if (groundTruthJobId) { + let gtAnnotations = await serverProxy.annotations.getAnnotations(sessionType, groundTruthJobId); + gtAnnotations = addJobId(gtAnnotations, groundTruthJobId); rawAnnotations = processGroundTruthAnnotations(rawAnnotations, gtAnnotations); } - + console.log(rawAnnotations); // Get meta information about frames const startFrame = sessionType === 'job' ? session.startFrame : 0; const stopFrame = sessionType === 'job' ? session.stopFrame : session.size - 1; @@ -86,7 +100,7 @@ export async function clearCache(session) { } } -export async function getAnnotations(session, frame, allTracks, filters, GTAnnotaionsSource) { +export async function getAnnotations(session, frame, allTracks, filters, groundTruthJobId) { const sessionType = session instanceof Task ? 'task' : 'job'; const cache = getCache(sessionType); @@ -94,7 +108,7 @@ export async function getAnnotations(session, frame, allTracks, filters, GTAnnot return cache.get(session).collection.get(frame, allTracks, filters); } - await getAnnotationsFromServer(session, GTAnnotaionsSource); + await getAnnotationsFromServer(session, groundTruthJobId); return cache.get(session).collection.get(frame, allTracks, filters); } diff --git a/cvat-core/src/api-implementation.ts b/cvat-core/src/api-implementation.ts index 8c822684e061..6db215f0be29 100644 --- a/cvat-core/src/api-implementation.ts +++ b/cvat-core/src/api-implementation.ts @@ -26,6 +26,7 @@ import CloudStorage from './cloud-storage'; import Organization from './organization'; import Webhook from './webhook'; import QualityReport from './quality-report'; +import QualityConflict from './quality-conflict'; export default function implementAPI(cvat) { cvat.plugins.list.implementation = PluginRegistry.list; @@ -339,7 +340,7 @@ export default function implementAPI(cvat) { return webhooks; }; - cvat.analytics.quality.get.implementation = async (filter) => { + cvat.analytics.quality.reports.implementation = async (filter) => { // checkFilter(filter, { // taskId: isInteger, // parentId: isInteger, @@ -355,10 +356,27 @@ export default function implementAPI(cvat) { target: filter.target, }; } - const reportsData = await serverProxy.analytics.quality.get(updatedParams); + if ('jobId' in filter) { + updatedParams = { + job_id: filter.jobId, + sort: '-created_date', + target: filter.target, + }; + } + const reportsData = await serverProxy.analytics.quality.reports(updatedParams); return reportsData.map((report) => new QualityReport({ ...report })); }; + cvat.analytics.quality.conflicts.implementation = async (filter) => { + let updatedParams: Record = {}; + updatedParams = { + report_id: filter.reportId, + }; + const reportsData = await serverProxy.analytics.quality.conflicts(updatedParams); + + return reportsData.map((conflict) => new QualityConflict({ ...conflict })); + }; + return cvat; } diff --git a/cvat-core/src/api.ts b/cvat-core/src/api.ts index 9e16b66e9484..8e1146a1cfbb 100644 --- a/cvat-core/src/api.ts +++ b/cvat-core/src/api.ts @@ -266,8 +266,12 @@ function build() { }, analytics: { quality: { - async get(filter: any) { - const result = await PluginRegistry.apiWrapper(cvat.analytics.quality.get, filter); + async reports(filter: any) { + const result = await PluginRegistry.apiWrapper(cvat.analytics.quality.reports, filter); + return result; + }, + async conflicts(filter: any) { + const result = await PluginRegistry.apiWrapper(cvat.analytics.quality.conflicts, filter); return result; }, }, diff --git a/cvat-core/src/object-state.ts b/cvat-core/src/object-state.ts index e9673ecefeff..b14876e1a0a0 100644 --- a/cvat-core/src/object-state.ts +++ b/cvat-core/src/object-state.ts @@ -35,6 +35,7 @@ export interface SerializedData { shapeType?: ShapeType; clientID?: number; serverID?: number; + jobID?: number; parentID?: number; lock?: boolean; hidden?: boolean; @@ -78,10 +79,12 @@ export default class ObjectState { public readonly source: Source; public readonly clientID: number | null; public readonly serverID: number | null; + public readonly jobID: number | null; public readonly parentID: number | null; public readonly updated: number; public readonly group: { color: string; id: number; } | null; public readonly isGroundTruth: boolean; + public conflict: { description: string } | null; public readonly keyframes: { first: number | null; prev: number | null; @@ -169,12 +172,14 @@ export default class ObjectState { pinned: false, source: Source.MANUAL, isGroundTruth: serialized.isGroundTruth || false, + conflict: null, keyframes: serialized.keyframes || null, group: serialized.group || null, updated: serialized.updated || Date.now(), clientID: serialized.clientID || null, serverID: serialized.serverID || null, + jobID: serialized.jobID || null, parentID: serialized.parentID || null, frame: serialized.frame, @@ -211,6 +216,9 @@ export default class ObjectState { serverID: { get: () => data.serverID, }, + jobID: { + get: () => data.jobID, + }, parentID: { get: () => data.parentID, }, @@ -457,6 +465,12 @@ export default class ObjectState { return []; }, }, + conflict: { + get: () => data.conflict, + set: (conflict) => { + data.conflict = conflict; + }, + }, }), ); diff --git a/cvat-core/src/quality-conflict.ts b/cvat-core/src/quality-conflict.ts new file mode 100644 index 000000000000..adea789f0d04 --- /dev/null +++ b/cvat-core/src/quality-conflict.ts @@ -0,0 +1,115 @@ +// Copyright (C) 2023 CVAT.ai Corporation +// +// SPDX-License-Identifier: MIT + +export enum QualityConflictType { + EXTRA = 'extra_annotation', + MISMATCHING = 'mismatching_label', + MISSING = 'missing_annotation', +} + +export interface RawQualityConflictData { + id?: number; + frame?: number; + type?: string; + annotation_ids?: RawAnnotationConflictData[]; + data?: string; +} + +export interface RawAnnotationConflictData { + job_id?: number; + obj_id?: number; + type?: string; + conflict_type?: string; +} + +export class AnnotationConflict { + public readonly jobId: number; + public readonly objId: number; + public readonly type: string; + public readonly conflictType: QualityConflictType; + + constructor(initialData: RawAnnotationConflictData) { + const data: RawAnnotationConflictData = { + job_id: undefined, + obj_id: undefined, + type: undefined, + conflict_type: undefined, + }; + + for (const property in data) { + if (Object.prototype.hasOwnProperty.call(data, property) && property in initialData) { + data[property] = initialData[property]; + } + } + + Object.defineProperties( + this, + Object.freeze({ + jobId: { + get: () => data.job_id, + }, + objId: { + get: () => data.obj_id, + }, + type: { + get: () => data.type, + }, + conflictType: { + get: () => data.conflict_type, + }, + }), + ); + } +} + +export default class QualityConflict { + public readonly id: number; + public readonly frame: number; + public readonly type: QualityConflictType; + public readonly annotationConflicts: AnnotationConflict[]; + public readonly data: string; + + constructor(initialData: RawQualityConflictData) { + const data: RawQualityConflictData = { + id: undefined, + frame: undefined, + type: undefined, + annotation_ids: [], + data: '', + }; + + for (const property in data) { + if (Object.prototype.hasOwnProperty.call(data, property) && property in initialData) { + data[property] = initialData[property]; + } + } + + data.annotation_ids = data.annotation_ids + .map((rawData: RawAnnotationConflictData) => new AnnotationConflict({ + ...rawData, + conflict_type: data.type, + })); + + Object.defineProperties( + this, + Object.freeze({ + id: { + get: () => data.id, + }, + frame: { + get: () => data.frame, + }, + type: { + get: () => data.type, + }, + annotationConflicts: { + get: () => data.annotation_ids, + }, + data: { + get: () => data.data, + }, + }), + ); + } +} diff --git a/cvat-core/src/quality-report.ts b/cvat-core/src/quality-report.ts index 5a57aef803a8..ccd4896c908d 100644 --- a/cvat-core/src/quality-report.ts +++ b/cvat-core/src/quality-report.ts @@ -90,8 +90,8 @@ export default class QualityReport { validCount: data.summary.valid_count, dsCount: data.summary.ds_count, gtCount: data.summary.gt_count, - accuracy: data.summary.valid_count / - (data.summary.ds_count + data.summary.gt_count - data.summary.valid_count), + accuracy: (data.summary.valid_count / + (data.summary.ds_count + data.summary.gt_count - data.summary.valid_count)) * 100, }), }, parameters: { diff --git a/cvat-core/src/server-proxy.ts b/cvat-core/src/server-proxy.ts index 3df4cb5f16fe..33ef751d41b7 100644 --- a/cvat-core/src/server-proxy.ts +++ b/cvat-core/src/server-proxy.ts @@ -21,6 +21,7 @@ import config from './config'; import DownloadWorker from './download.worker'; import { ServerError } from './exceptions'; import { FunctionsResponseBody } from './server-response-types'; +import { RawQualityConflictData } from './quality-conflict'; type Params = { org: number | string, @@ -2175,6 +2176,24 @@ async function getQualityReports(filter): Promise { } } +async function getQualityConflicts(filter): Promise { + const params = enableOrganization(); + const { backendAPI } = config; + + try { + const response = await Axios.get(`${backendAPI}/conflicts`, { + params: { + ...params, + ...filter, + }, + }); + + return response.data.results; + } catch (errorData) { + throw generateError(errorData); + } +} + export default Object.freeze({ server: Object.freeze({ setAuthData, @@ -2322,7 +2341,8 @@ export default Object.freeze({ analytics: Object.freeze({ quality: Object.freeze({ - get: getQualityReports, + reports: getQualityReports, + conflicts: getQualityConflicts, }), }), }); diff --git a/cvat-core/src/session-implementation.ts b/cvat-core/src/session-implementation.ts index ee2d3b886238..bda599128527 100644 --- a/cvat-core/src/session-implementation.ts +++ b/cvat-core/src/session-implementation.ts @@ -195,7 +195,7 @@ export function implementJob(Job) { }; // TODO: Check filter for annotations - Job.prototype.annotations.get.implementation = async function (frame, allTracks, filters, GTAnnotaionsSource) { + Job.prototype.annotations.get.implementation = async function (frame, allTracks, filters, groundTruthJobId) { if (!Array.isArray(filters)) { throw new ArgumentError('Filters must be an array'); } @@ -208,7 +208,7 @@ export function implementJob(Job) { throw new ArgumentError(`Frame ${frame} does not exist in the job`); } - const annotationsData = await getAnnotations(this, frame, allTracks, filters, GTAnnotaionsSource); + const annotationsData = await getAnnotations(this, frame, allTracks, filters, groundTruthJobId); const deletedFrames = await getDeletedFrames('job', this.id); if (frame in deletedFrames) { return []; diff --git a/cvat-core/src/session.ts b/cvat-core/src/session.ts index 8aac64e02e59..3b7ec957bd77 100644 --- a/cvat-core/src/session.ts +++ b/cvat-core/src/session.ts @@ -67,14 +67,14 @@ function buildDuplicatedAPI(prototype) { return result; }, - async get(frame, allTracks = false, filters = [], GTAnnotaionsSource = null) { + async get(frame, allTracks = false, filters = [], groundTruthJobId = null) { const result = await PluginRegistry.apiWrapper.call( this, prototype.annotations.get, frame, allTracks, filters, - GTAnnotaionsSource, + groundTruthJobId, ); return result; }, diff --git a/cvat-ui/src/actions/analytics-actions.ts b/cvat-ui/src/actions/analytics-actions.ts index 549bda6a894c..0c79420ed4a8 100644 --- a/cvat-ui/src/actions/analytics-actions.ts +++ b/cvat-ui/src/actions/analytics-actions.ts @@ -6,7 +6,7 @@ import { getCore, QualityReport, Task } from 'cvat-core-wrapper'; import { Dispatch, ActionCreator } from 'redux'; import { QualityQuery } from 'reducers'; import { ActionUnion, createAction, ThunkAction } from 'utils/redux'; -import { filterNull } from 'utils/filter-null'; +// import { filterNull } from 'utils/filter-null'; const cvat = getCore(); @@ -34,8 +34,8 @@ export const getQualityReportsAsync = (task: Task, query: QualityQuery): ThunkAc try { // reports are returned in order -created_date - const [taskReport] = await cvat.analytics.quality.get({ taskId: task.id, target: 'task' }); - const jobReports = await cvat.analytics.quality.get({ taskId: task.id, target: 'job' }); + const [taskReport] = await cvat.analytics.quality.reports({ taskId: task.id, target: 'task' }); + const jobReports = await cvat.analytics.quality.reports({ taskId: task.id, target: 'job' }); const jobIds = task.jobs.map((job) => job.id); const relevantReports: QualityReport[] = []; jobIds.forEach((jobId: number) => { diff --git a/cvat-ui/src/actions/annotation-actions.ts b/cvat-ui/src/actions/annotation-actions.ts index d31d1a33cbd0..887c88dc06df 100644 --- a/cvat-ui/src/actions/annotation-actions.ts +++ b/cvat-ui/src/actions/annotation-actions.ts @@ -13,7 +13,7 @@ import { RectDrawingMethod, CuboidDrawingMethod, Canvas, CanvasMode as Canvas2DMode, } from 'cvat-canvas-wrapper'; import { - getCore, MLModel, DimensionType, JobType, Job, + getCore, MLModel, DimensionType, JobType, Job, QualityConflict, } from 'cvat-core-wrapper'; import logger, { LogType } from 'cvat-logger'; import { getCVATStore } from 'cvat-store'; @@ -595,11 +595,7 @@ export function changeFrameAsync( visible: statisticsVisible, }, } = state.annotation; - const { - shapes: { - showGroundTruth, - }, - } = state.settings; + const { filters, frame, showAllInterpolationTracks } = receiveAnnotationsParameters(); try { @@ -619,7 +615,6 @@ export function changeFrameAsync( delay: currentState.annotation.player.frame.delay, changeTime: currentState.annotation.player.frame.changeTime, states: currentState.annotation.annotations.states, - groundTruthStates: currentState.annotation.annotations.groundTruthStates, minZ: currentState.annotation.annotations.zLayer.min, maxZ: currentState.annotation.annotations.zLayer.max, curZ: currentState.annotation.annotations.zLayer.cur, @@ -640,9 +635,9 @@ export function changeFrameAsync( } const data = await job.frames.get(toFrame, fillBuffer, frameStep); - let states = await job.annotations.get(toFrame, showAllInterpolationTracks, filters); - const groundTruthStates = states.filter((_state: any) => _state.isGroundTruth); - if (!showGroundTruth) states = states.filter((_state: any) => !_state.isGroundTruth); + const states = await job.annotations.get(toFrame, showAllInterpolationTracks, filters); + // const groundTruthStates = states.filter((_state: any) => _state.isGroundTruth); + // if (!showGroundTruth) states = states.filter((_state: any) => !_state.isGroundTruth); if (!isAbleToChangeFrame() || statisticsVisible || propagateVisible) { // while doing async actions above, canvas can become used by a user in another way @@ -687,7 +682,6 @@ export function changeFrameAsync( filename: data.filename, relatedFiles: data.relatedFiles, states, - groundTruthStates, minZ, maxZ, curZ: maxZ, @@ -893,7 +887,6 @@ export function getJobAsync( settings: { workspace: { showAllInterpolationTracks }, player: { showDeletedFrames }, - shapes: { showGroundTruth }, }, } = state; @@ -948,12 +941,16 @@ export function getJobAsync( }); } - const GTAnnotaionsSource = gtJob ? gtJob.id : null; - let states = await job.annotations.get( - frameNumber, showAllInterpolationTracks, filters, GTAnnotaionsSource, + const groundTruthJobId = gtJob ? gtJob.id : null; + const states = await job.annotations.get( + frameNumber, showAllInterpolationTracks, filters, groundTruthJobId, ); - const groundTruthStates = states.filter((_state: any) => _state.isGroundTruth); - if (!showGroundTruth) states = states.filter((_state: any) => !_state.isGroundTruth); + + let conflicts: QualityConflict[] = []; + if (groundTruthJobId) { + const [report] = await cvat.analytics.quality.reports({ jobId: job.id, target: 'job' }); + if (report) conflicts = await cvat.analytics.quality.conflicts({ reportId: report.id }); + } const issues = await job.issues(); const [minZ, maxZ] = computeZRange(states); @@ -967,9 +964,10 @@ export function getJobAsync( payload: { openTime, job, + groundTruthJobId, issues, states, - groundTruthStates, + conflicts, frameNumber, frameFilename: frameData.filename, relatedFiles: frameData.relatedFiles, diff --git a/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-context-menu.tsx b/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-context-menu.tsx index 9b43ee8a825f..5c2cf8acf3f9 100644 --- a/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-context-menu.tsx +++ b/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-context-menu.tsx @@ -33,6 +33,7 @@ interface ReviewContextMenuProps { top: number; left: number; latestComments: string[]; + conflict: { description: string }; onClick: (param: MenuInfo) => void; } @@ -41,16 +42,25 @@ enum ReviewContextMenuKeys { QUICK_ISSUE_POSITION = 'quick_issue_position', QUICK_ISSUE_ATTRIBUTE = 'quick_issue_attribute', QUICK_ISSUE_FROM_LATEST = 'quick_issue_from_latest', + QUICK_ISSUE_FROM_CONFLICT = 'quick_issue_from_conflict', } function ReviewContextMenu({ - top, left, latestComments, onClick, + top, left, latestComments, conflict, onClick, }: ReviewContextMenuProps): JSX.Element { return ( Open an issue ... + {conflict ? ( + + {`Open an issue: ${conflict.description}`} + + ) : null} Quick issue: incorrect position @@ -97,6 +107,7 @@ export default function CanvasContextMenu(props: Props): JSX.Element | null { if (!visible || contextMenuClientID === null) { return null; } + const state = objectStates.find((_state: any): boolean => _state.clientID === contextMenuClientID); if (workspace === Workspace.REVIEW_WORKSPACE) { return ReactDOM.createPortal( @@ -104,9 +115,9 @@ export default function CanvasContextMenu(props: Props): JSX.Element | null { key={contextMenuClientID} top={top} left={left} + conflict={state.conflict} latestComments={latestComments} onClick={(param: MenuInfo) => { - const state = objectStates.find((_state: any): boolean => _state.clientID === contextMenuClientID); if (state) { let { points } = state; if ([ShapeType.ELLIPSE, ShapeType.RECTANGLE].includes(state.shapeType)) { @@ -144,6 +155,8 @@ export default function CanvasContextMenu(props: Props): JSX.Element | null { openIssue(points, config.QUICK_ISSUE_INCORRECT_POSITION_TEXT); } else if (param.key === ReviewContextMenuKeys.QUICK_ISSUE_ATTRIBUTE) { openIssue(points, config.QUICK_ISSUE_INCORRECT_ATTRIBUTE_TEXT); + } else if (param.key === ReviewContextMenuKeys.QUICK_ISSUE_FROM_CONFLICT) { + openIssue(points, state.conflict.description); } else if ( param.keyPath.length === 2 && param.keyPath[1] === ReviewContextMenuKeys.QUICK_ISSUE_FROM_LATEST diff --git a/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx b/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx index b1ca5a2b7644..bcc82edfa342 100644 --- a/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx +++ b/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx @@ -17,7 +17,9 @@ import { import { LogType } from 'cvat-logger'; import { Canvas } from 'cvat-canvas-wrapper'; import { Canvas3d } from 'cvat-canvas3d-wrapper'; -import { getCore } from 'cvat-core-wrapper'; +import { + AnnotationConflict, ObjectState, QualityConflict, getCore, +} from 'cvat-core-wrapper'; import config from 'config'; import CVATTooltip from 'components/common/cvat-tooltip'; import FrameTags from 'components/annotation-page/tag-annotation-workspace/frame-tags'; @@ -66,6 +68,7 @@ interface StateToProps { activatedStateID: number | null; activatedElementID: number | null; activatedAttributeID: number | null; + statesSources: number[]; annotations: any[]; frameData: any; frameAngle: number; @@ -105,6 +108,7 @@ interface StateToProps { switchableAutomaticBordering: boolean; keyMap: KeyMap; showTagsOnFrame: boolean; + conflicts: QualityConflict[]; } interface DispatchToProps { @@ -153,6 +157,7 @@ function mapStateToProps(state: CombinedState): StateToProps { activatedStateID, activatedElementID, activatedAttributeID, + statesSources, zLayer: { cur: curZLayer, min: minZLayer, max: maxZLayer }, }, workspace, @@ -186,6 +191,7 @@ function mapStateToProps(state: CombinedState): StateToProps { }, }, shortcuts: { keyMap }, + review: { conflicts }, } = state; return { @@ -237,6 +243,8 @@ function mapStateToProps(state: CombinedState): StateToProps { activeControl === ActiveControl.DRAW_POLYLINE || activeControl === ActiveControl.DRAW_MASK || activeControl === ActiveControl.EDIT, + statesSources, + conflicts, }; } @@ -422,6 +430,7 @@ class CanvasWrapperComponent extends React.PureComponent { showProjections, colorBy, onFetchAnnotation, + statesSources, } = this.props; const { canvasInstance } = this.props as { canvasInstance: Canvas }; @@ -496,6 +505,7 @@ class CanvasWrapperComponent extends React.PureComponent { if ( prevProps.annotations !== annotations || + prevProps.statesSources !== statesSources || prevProps.frameData !== frameData || prevProps.curZLayer !== curZLayer ) { @@ -864,13 +874,35 @@ class CanvasWrapperComponent extends React.PureComponent { private updateCanvas(): void { const { - curZLayer, annotations, frameData, canvasInstance, + curZLayer, annotations, frameData, canvasInstance, statesSources, conflicts, + workspace, } = this.props; - + console.log(annotations, conflicts); if (frameData !== null && canvasInstance) { + const filteredAnnotations = annotations.filter((e) => e.objectType !== ObjectType.TAG); + const shownAnnotations = filteredAnnotations.filter((e) => !e.jobID || statesSources.includes(e.jobID)); + const annotatationConflicts = conflicts.reduce( + (acc, qualityConflict: QualityConflict) => { + acc.push(qualityConflict.annotationConflicts[0]); + return acc; + }, [], + ); + filteredAnnotations.forEach((objectState: ObjectState) => { + const conflict = annotatationConflicts.find( + (c: AnnotationConflict) => c.objId === objectState.serverID && c.jobId === objectState.jobID, + ); + if (conflict && workspace === Workspace.REVIEW_WORKSPACE) { + objectState.conflict = { description: conflict.conflictType }; + } else { + objectState.conflict = null; + } + }); + const finalAnnotations = filteredAnnotations.filter((objectState: ObjectState) => ( + shownAnnotations.includes(objectState) || objectState.conflict + )); canvasInstance.setup( frameData, - frameData.deleted ? [] : annotations.filter((e) => e.objectType !== ObjectType.TAG), + frameData.deleted ? [] : finalAnnotations, curZLayer, ); } diff --git a/cvat-ui/src/components/annotation-page/review-workspace/review-workspace.tsx b/cvat-ui/src/components/annotation-page/review-workspace/review-workspace.tsx index bd75dd1409a2..ff2bb6f73b7a 100644 --- a/cvat-ui/src/components/annotation-page/review-workspace/review-workspace.tsx +++ b/cvat-ui/src/components/annotation-page/review-workspace/review-workspace.tsx @@ -13,6 +13,7 @@ import ObjectSideBarComponent from 'components/annotation-page/standard-workspac import ObjectsListContainer from 'containers/annotation-page/standard-workspace/objects-side-bar/objects-list'; import CanvasContextMenuContainer from 'containers/annotation-page/canvas/canvas-context-menu'; import IssueAggregatorComponent from 'components/annotation-page/review/issues-aggregator'; +import ConflictAggregatorComponent from 'components/annotation-page/review/conflicts-aggregator'; export default function ReviewWorkspaceComponent(): JSX.Element { return ( @@ -22,6 +23,7 @@ export default function ReviewWorkspaceComponent(): JSX.Element { } /> + ); } diff --git a/cvat-ui/src/components/annotation-page/review/conflict-label.tsx b/cvat-ui/src/components/annotation-page/review/conflict-label.tsx new file mode 100644 index 000000000000..ef381d2a4e66 --- /dev/null +++ b/cvat-ui/src/components/annotation-page/review/conflict-label.tsx @@ -0,0 +1,47 @@ +// Copyright (C) 2023 CVAT.ai Corporation +// +// SPDX-License-Identifier: MIT + +import React, { + ReactPortal, useRef, +} from 'react'; +import ReactDOM from 'react-dom'; +import Tag from 'antd/lib/tag'; +import { + ExclamationCircleOutlined, +} from '@ant-design/icons'; + +import CVATTooltip from 'components/common/cvat-tooltip'; + +interface Props { + top: number; + left: number; + angle: number; + scale: number; + text: string + onClick: () => void; +} + +export default function ConflictLabel(props: Props): ReactPortal { + const { + top, left, angle, scale, onClick, text, + } = props; + + const ref = useRef(null); + + const elementID = `cvat-hidden-issue-label-${top}`; + return ReactDOM.createPortal( + + + + + , + window.document.getElementById('cvat_canvas_attachment_board') as HTMLElement, + ); +} diff --git a/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx b/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx new file mode 100644 index 000000000000..a6c2144d08df --- /dev/null +++ b/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx @@ -0,0 +1,94 @@ +// Copyright (C) 2023 CVAT.ai Corporation +// +// SPDX-License-Identifier: MIT + +import './styles.scss'; +import React, { useState, useEffect } from 'react'; +import { useSelector } from 'react-redux'; + +import { CombinedState } from 'reducers'; +import { Canvas } from 'cvat-canvas/src/typescript/canvas'; + +import { AnnotationConflict, ObjectState, QualityConflict } from 'cvat-core-wrapper'; +import { translateToCanvas } from 'cvat-canvas/src/typescript/shared'; +import ConflictLabel from './conflict-label'; + +export default function ConflictAggregatorComponent(): JSX.Element | null { + const qualityConflicts = useSelector((state: CombinedState): any[] => state.review.conflicts); + const objectStates = useSelector((state: CombinedState): any[] => state.annotation.annotations.states); + const currentFrame = useSelector((state: CombinedState): number => state.annotation.player.frame.number); + const frameQualityConflicts = qualityConflicts.filter( + (conflict: QualityConflict) => conflict.frame === currentFrame, + ); + const conflicts = frameQualityConflicts.map((f: QualityConflict) => f.annotationConflicts[0]); + + const canvasInstance = useSelector((state: CombinedState) => state.annotation.canvas.instance); + const canvasIsReady = useSelector((state: CombinedState): boolean => state.annotation.canvas.ready); + const [geometry, setGeometry] = useState(null); + const conflictLabels: JSX.Element[] = []; + useEffect(() => { + if (canvasInstance instanceof Canvas) { + const { geometry: updatedGeometry } = canvasInstance; + setGeometry(updatedGeometry); + + const geometryListener = (): void => { + setGeometry(canvasInstance.geometry); + }; + + canvasInstance.html().addEventListener('canvas.zoom', geometryListener); + canvasInstance.html().addEventListener('canvas.fit', geometryListener); + canvasInstance.html().addEventListener('canvas.reshape', geometryListener); + + return () => { + canvasInstance.html().removeEventListener('canvas.zoom', geometryListener); + canvasInstance.html().removeEventListener('canvas.fit', geometryListener); + canvasInstance.html().addEventListener('canvas.reshape', geometryListener); + }; + } + + return () => {}; + }, [canvasInstance]); + const [mapping, setMapping] = useState([]); + useEffect(() => { + if (geometry) { + const newMapping = conflicts.map((c: AnnotationConflict) => { + const state = objectStates.find((s: ObjectState) => s.jobID === c.jobId && s.serverID === c.objId); + if (state) { + const points = [state.points[0], state.points[1]]; + const [x, y] = translateToCanvas(geometry?.offset, points); + return { + description: c.conflictType, + x, + y, + }; + } + return []; + }).filter((el) => !Array.isArray(el)); + setMapping(newMapping); + } + }, [geometry]); + + if (!(canvasInstance instanceof Canvas) || !canvasIsReady || !geometry) { + return null; + } + + for (const conflict of mapping) { + conflictLabels.push( + {}} + />, + ); + } + + return ( + <> + {conflictLabels} + + ); +} diff --git a/cvat-ui/src/components/annotation-page/review/styles.scss b/cvat-ui/src/components/annotation-page/review/styles.scss index 949844d26ebc..bb4a9f9cc4dc 100644 --- a/cvat-ui/src/components/annotation-page/review/styles.scss +++ b/cvat-ui/src/components/annotation-page/review/styles.scss @@ -37,6 +37,31 @@ } } +.cvat-conflict-label { + position: absolute; + min-width: 2 * $grid-unit-size; + opacity: 0.8; + z-index: 100; + transition: none; + pointer-events: auto; + overflow: hidden; + text-overflow: ellipsis; + border-radius: 0; + transform-origin: top left; + background: none; + border: none; + + &:hover { + opacity: 1; + } + + svg { + fill: red; + width: 1.5em; + height: 1.5em; + } +} + .cvat-issue-dialog { width: $grid-unit-size * 35; position: absolute; diff --git a/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx b/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx index 517f705a6c3f..516798ae9f84 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx @@ -156,7 +156,7 @@ function JobListComponent(props: Props): JSX.Element { color: getQualityColor(meanAccuracy), }} > - {meanAccuracy || 'N/A'} + {Number.isNaN(meanAccuracy) ? 'N/A' : `${meanAccuracy}%`} ); }, diff --git a/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx b/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx index 2530425fe598..aad8a4117a75 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx @@ -30,10 +30,10 @@ function MeanQuality(props: Props): JSX.Element {
{taskReport?.createdDate ? moment(taskReport?.createdDate).fromNow() : ''} diff --git a/cvat-ui/src/containers/annotation-page/standard-workspace/objects-side-bar/objects-list.tsx b/cvat-ui/src/containers/annotation-page/standard-workspace/objects-side-bar/objects-list.tsx index feb2c8788221..67eef67f8473 100644 --- a/cvat-ui/src/containers/annotation-page/standard-workspace/objects-side-bar/objects-list.tsx +++ b/cvat-ui/src/containers/annotation-page/standard-workspace/objects-side-bar/objects-list.tsx @@ -69,6 +69,7 @@ function mapStateToProps(state: CombinedState): StateToProps { activatedStateID, activatedElementID, zLayer: { min: minZLayer, max: maxZLayer }, + statesSources, }, job: { instance: jobInstance }, player: { @@ -84,8 +85,8 @@ function mapStateToProps(state: CombinedState): StateToProps { let statesHidden = true; let statesLocked = true; - - objectStates.forEach((objectState: ObjectState) => { + const filteredStates = objectStates.filter((e) => !e.jobID || statesSources.includes(e.jobID)); + filteredStates.forEach((objectState: ObjectState) => { const { lock } = objectState; if (!lock) { if (objectState.objectType !== ObjectType.TAG) { @@ -106,7 +107,7 @@ function mapStateToProps(state: CombinedState): StateToProps { statesLocked, statesCollapsedAll: collapsedAll, collapsedStates: collapsed, - objectStates, + objectStates: filteredStates, frameNumber, jobInstance, annotationsFilters, diff --git a/cvat-ui/src/cvat-core-wrapper.ts b/cvat-ui/src/cvat-core-wrapper.ts index 1a0c4b79d822..b1c079f63a0e 100644 --- a/cvat-ui/src/cvat-core-wrapper.ts +++ b/cvat-ui/src/cvat-core-wrapper.ts @@ -15,6 +15,7 @@ import { SerializedAttribute, SerializedLabel } from 'cvat-core/src/server-respo import { Job, Task } from 'cvat-core/src/session'; import Project from 'cvat-core/src/project'; import QualityReport from 'cvat-core/src/quality-report'; +import QualityConflict, { AnnotationConflict } from 'cvat-core/src/quality-conflict'; import { ShapeType, LabelType, ModelKind, ModelProviders, ModelReturnType, DimensionType, JobType, JobStage, JobState, @@ -63,6 +64,8 @@ export { JobStage, JobState, QualityReport, + QualityConflict, + AnnotationConflict, }; export type { diff --git a/cvat-ui/src/reducers/analytics-reducer.ts b/cvat-ui/src/reducers/analytics-reducer.ts index f0a0564de7fd..60ea1380c515 100644 --- a/cvat-ui/src/reducers/analytics-reducer.ts +++ b/cvat-ui/src/reducers/analytics-reducer.ts @@ -12,6 +12,7 @@ const defaultState: AnalyticsState = { jobsReports: [], query: { taskId: null, + jobId: null, parentId: null, }, }, diff --git a/cvat-ui/src/reducers/annotation-reducer.ts b/cvat-ui/src/reducers/annotation-reducer.ts index 7914f589cb40..de7bab47563b 100644 --- a/cvat-ui/src/reducers/annotation-reducer.ts +++ b/cvat-ui/src/reducers/annotation-reducer.ts @@ -56,6 +56,7 @@ const defaultState: AnnotationState = { openTime: null, labels: [], requestedId: null, + groundTruthJobId: null, instance: null, attributes: {}, fetching: false, @@ -90,8 +91,8 @@ const defaultState: AnnotationState = { }, collapsed: {}, collapsedAll: true, + statesSources: [], states: [], - groundTruthStates: [], filters: [], resetGroupFlag: false, history: { @@ -141,7 +142,6 @@ export default (state = defaultState, action: AnyAction): AnnotationState => { const { job, states, - groundTruthStates, openTime, frameNumber: number, frameFilename: filename, @@ -151,6 +151,7 @@ export default (state = defaultState, action: AnyAction): AnnotationState => { frameData: data, minZ, maxZ, + groundTruthJobId, } = action.payload; const isReview = job.stage === JobStage.REVIEW; @@ -182,17 +183,18 @@ export default (state = defaultState, action: AnyAction): AnnotationState => { acc[label.id] = label.attributes; return acc; }, {}), + groundTruthJobId, }, annotations: { ...state.annotations, states, - groundTruthStates, filters, zLayer: { min: minZ, max: maxZ, cur: maxZ, }, + statesSources: [job.id], }, player: { ...state.player, @@ -265,7 +267,6 @@ export default (state = defaultState, action: AnyAction): AnnotationState => { filename, relatedFiles, states, - groundTruthStates, minZ, maxZ, curZ, @@ -290,7 +291,6 @@ export default (state = defaultState, action: AnyAction): AnnotationState => { ...state.annotations, activatedStateID: updateActivatedStateID(states, activatedStateID), states, - groundTruthStates, zLayer: { min: minZ, max: maxZ, @@ -1096,9 +1096,9 @@ export default (state = defaultState, action: AnyAction): AnnotationState => { return state; } - let newStates = state.annotations.states; + let { statesSources } = state.annotations; if (workspace !== Workspace.REVIEW_WORKSPACE) { - newStates = state.annotations.states.filter((_state: any) => !_state.isGroundTruth); + statesSources = [state.job.instance.id]; } return { @@ -1108,7 +1108,7 @@ export default (state = defaultState, action: AnyAction): AnnotationState => { ...state.annotations, activatedStateID: null, activatedAttributeID: null, - states: newStates, + statesSources, }, }; } @@ -1193,7 +1193,10 @@ export default (state = defaultState, action: AnyAction): AnnotationState => { ...state, annotations: { ...state.annotations, - states: [...state.annotations.states, ...state.annotations.groundTruthStates], + statesSources: [ + state.job.instance.id, + state.job.groundTruthJobId, + ], }, }; } @@ -1201,7 +1204,9 @@ export default (state = defaultState, action: AnyAction): AnnotationState => { ...state, annotations: { ...state.annotations, - states: state.annotations.states.filter((_state: any) => !_state.isGroundTruth), + statesSources: [ + state.job.instance.id, + ], }, }; } diff --git a/cvat-ui/src/reducers/index.ts b/cvat-ui/src/reducers/index.ts index a92df9aec10d..9fc88e0e2acc 100644 --- a/cvat-ui/src/reducers/index.ts +++ b/cvat-ui/src/reducers/index.ts @@ -6,7 +6,7 @@ import { Canvas3d } from 'cvat-canvas3d/src/typescript/canvas3d'; import { Canvas, RectDrawingMethod, CuboidDrawingMethod } from 'cvat-canvas-wrapper'; import { - Webhook, MLModel, ModelProvider, Organization, QualityReport, + Webhook, MLModel, ModelProvider, Organization, QualityReport, QualityConflict, } from 'cvat-core-wrapper'; import { IntelligentScissors } from 'utils/opencv-wrapper/intelligent-scissors'; import { KeyMap } from 'utils/mousetrap-react'; @@ -677,6 +677,7 @@ export interface AnnotationState { openTime: null | number; labels: any[]; requestedId: number | null; + groundTruthJobId: number | null; instance: any | null | undefined; attributes: Record; fetching: boolean; @@ -712,8 +713,8 @@ export interface AnnotationState { activatedAttributeID: number | null; collapsed: Record; collapsedAll: boolean; + statesSources: number[]; states: any[]; - groundTruthStates: any[]; filters: any[]; resetGroupFlag: boolean; history: { @@ -856,6 +857,8 @@ export interface ReviewState { newIssuePosition: number[] | null; issuesHidden: boolean; issuesResolvedHidden: boolean; + conflicts: QualityConflict[]; + frameConflicts: QualityConflict[]; fetching: { jobId: number | null; issueId: number | null; @@ -893,6 +896,7 @@ export interface WebhooksState { export interface QualityQuery { taskId: number | null; + jobId: number | null; parentId: number | null; } diff --git a/cvat-ui/src/reducers/review-reducer.ts b/cvat-ui/src/reducers/review-reducer.ts index 007c89b6f98c..dd4d507eccf3 100644 --- a/cvat-ui/src/reducers/review-reducer.ts +++ b/cvat-ui/src/reducers/review-reducer.ts @@ -6,12 +6,15 @@ import config from 'config'; import { AnnotationActionTypes } from 'actions/annotation-actions'; import { ReviewActionTypes } from 'actions/review-actions'; import { AuthActionTypes } from 'actions/auth-actions'; +import { QualityConflict } from 'cvat-core-wrapper'; import { ReviewState } from '.'; const defaultState: ReviewState = { issues: [], latestComments: [], frameIssues: [], // saved on the server and not saved on the server + conflicts: [], + frameConflicts: [], newIssuePosition: null, issuesHidden: false, issuesResolvedHidden: false, @@ -26,14 +29,18 @@ export default function (state: ReviewState = defaultState, action: any): Review case AnnotationActionTypes.GET_JOB_SUCCESS: { const { issues, + conflicts, frameData: { number: frame }, } = action.payload; const frameIssues = issues.filter((issue: any): boolean => issue.frame === frame); + const frameConflicts = conflicts.filter((conflict: QualityConflict): boolean => conflict.frame === frame); return { ...state, issues, frameIssues, + conflicts, + frameConflicts, }; } case AnnotationActionTypes.CHANGE_FRAME: { @@ -81,6 +88,7 @@ export default function (state: ReviewState = defaultState, action: any): Review return { ...state, frameIssues: state.issues.filter((issue: any): boolean => issue.frame === frame), + frameConflicts: state.conflicts.filter((conflict: any): boolean => conflict.frame === frame), }; } case ReviewActionTypes.START_ISSUE: { From a0b4fcfbf755713dea79191525fc38c1958864c6 Mon Sep 17 00:00:00 2001 From: klakhov Date: Fri, 28 Apr 2023 10:39:35 +0300 Subject: [PATCH 049/257] fixed conflicts on changing frames --- .../components/annotation-page/review/conflicts-aggregator.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx b/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx index a6c2144d08df..718d3080ce2e 100644 --- a/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx +++ b/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx @@ -66,7 +66,7 @@ export default function ConflictAggregatorComponent(): JSX.Element | null { }).filter((el) => !Array.isArray(el)); setMapping(newMapping); } - }, [geometry]); + }, [geometry, objectStates]); if (!(canvasInstance instanceof Canvas) || !canvasIsReady || !geometry) { return null; From ffcc8f80173a24f7f70f6a9fcb7bddac96995e78 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 28 Apr 2023 11:04:10 +0300 Subject: [PATCH 050/257] Fix permission error --- cvat/apps/iam/rules/quality_reports.rego | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cvat/apps/iam/rules/quality_reports.rego b/cvat/apps/iam/rules/quality_reports.rego index 16a7abe9a54c..e3d195d1c872 100644 --- a/cvat/apps/iam/rules/quality_reports.rego +++ b/cvat/apps/iam/rules/quality_reports.rego @@ -68,7 +68,7 @@ filter = [] { # Django Q object to filter list of entries qobject := [ {"job__segment__task__organization": org.id}, {"job__segment__task__project__organization": org.id}, "|", - {"task__organization": org.id}, + {"task__organization": org.id}, "|", {"task__project__organization": org.id}, "|", ] } else = qobject { From b3619e1b340827ab95070a46a8e404a77fb52d3e Mon Sep 17 00:00:00 2001 From: klakhov Date: Fri, 28 Apr 2023 11:39:30 +0300 Subject: [PATCH 051/257] added fetch all for conflicts, gt info to sidebar --- cvat-canvas/src/scss/canvas.scss | 4 ++-- cvat-core/src/server-proxy.ts | 10 ++++------ .../objects-side-bar/object-item-basics.tsx | 3 +++ .../objects-side-bar/object-item.tsx | 3 +++ .../task-analytics-page/quality/job-list.tsx | 15 +++++++++++++++ .../objects-side-bar/object-item.tsx | 1 + 6 files changed, 28 insertions(+), 8 deletions(-) diff --git a/cvat-canvas/src/scss/canvas.scss b/cvat-canvas/src/scss/canvas.scss index e1bb89b9fd33..4b1c5e8ed205 100644 --- a/cvat-canvas/src/scss/canvas.scss +++ b/cvat-canvas/src/scss/canvas.scss @@ -149,12 +149,12 @@ polyline.cvat_canvas_shape_splitting { } .cvat_canvas_ground_truth { - stroke-dasharray: 45; + stroke-dasharray: 15; } .cvat_canvas_conflicted { stroke: red; - stroke-dasharray: 45; + stroke-dasharray: 15; } .cvat_canvas_shape_occluded_point { diff --git a/cvat-core/src/server-proxy.ts b/cvat-core/src/server-proxy.ts index 33ef751d41b7..6fcd4021d768 100644 --- a/cvat-core/src/server-proxy.ts +++ b/cvat-core/src/server-proxy.ts @@ -2181,14 +2181,12 @@ async function getQualityConflicts(filter): Promise { const { backendAPI } = config; try { - const response = await Axios.get(`${backendAPI}/conflicts`, { - params: { - ...params, - ...filter, - }, + const response = await fetchAll(`${backendAPI}/conflicts`, { + ...params, + ...filter, }); - return response.data.results; + return response.results; } catch (errorData) { throw generateError(errorData); } diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/object-item-basics.tsx b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/object-item-basics.tsx index 12c63eadd5c4..d91908a9affa 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/object-item-basics.tsx +++ b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/object-item-basics.tsx @@ -23,6 +23,7 @@ interface Props { labels: any[]; shapeType: ShapeType; objectType: ObjectType; + isGroundTruth: boolean; color: string; colorBy: ColorBy; type: string; @@ -67,6 +68,7 @@ function ItemTopComponent(props: Props): JSX.Element { toBackgroundShortcut, toForegroundShortcut, removeShortcut, + isGroundTruth, changeColor, changeLabel, copy, @@ -100,6 +102,7 @@ function ItemTopComponent(props: Props): JSX.Element {
{clientID} + {isGroundTruth ?  GT : null}
{ + const conflicts = jobsReports[jobInstance.id]?.summary?.conflictsCount; + return ( + + {Number.isNaN(conflicts) ? 'N/A' : conflicts} + + ); + }, + }, { title: 'Quality', dataIndex: 'quality', @@ -169,6 +183,7 @@ function JobListComponent(props: Props): JSX.Element { stage: job, assignee: job, quality: job, + conflicts: job, }); return acc; diff --git a/cvat-ui/src/containers/annotation-page/standard-workspace/objects-side-bar/object-item.tsx b/cvat-ui/src/containers/annotation-page/standard-workspace/objects-side-bar/object-item.tsx index 3b598bcef4f3..ad9d3491e966 100644 --- a/cvat-ui/src/containers/annotation-page/standard-workspace/objects-side-bar/object-item.tsx +++ b/cvat-ui/src/containers/annotation-page/standard-workspace/objects-side-bar/object-item.tsx @@ -336,6 +336,7 @@ class ObjectItemContainer extends React.PureComponent { serverID={objectState.serverID} locked={objectState.lock} labelID={objectState.label.id} + isGroundTruth={objectState.isGroundTruth} color={getColor(objectState, colorBy)} attributes={attributes} elements={objectState.elements} From 76713e2091ff794db49876e48819c6116ca8b34e Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 28 Apr 2023 11:56:29 +0300 Subject: [PATCH 052/257] Fix counts --- cvat/apps/engine/quality_control.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index 2b7ef847a51b..f5598b1f7c4a 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -973,8 +973,8 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): missing_annotations_count = np.sum(confusion_matrix[:, confusion_matrix_labels_rmap[None]]) extra_annotations_count = np.sum(confusion_matrix[confusion_matrix_labels_rmap[None], :]) total_annotations_count = np.sum(confusion_matrix) - ds_annotations_count = np.sum(ds_ann_counts) - gt_annotations_count = np.sum(gt_ann_counts) + ds_annotations_count = np.sum(ds_ann_counts) - ds_ann_counts[confusion_matrix_labels_rmap[None]] + gt_annotations_count = np.sum(gt_ann_counts) - gt_ann_counts[confusion_matrix_labels_rmap[None]] self._frame_results.setdefault(frame_id, {}).update( error_count=len(conflicts), @@ -1101,8 +1101,8 @@ def _set_nested_key(d, path, value): missing_annotations_count = np.sum(confusion_matrix[:, confusion_matrix_labels_rmap[None]]) extra_annotations_count = np.sum(confusion_matrix[confusion_matrix_labels_rmap[None], :]) total_annotations_count = np.sum(confusion_matrix) - ds_annotations_count = np.sum(ds_ann_counts) - gt_annotations_count = np.sum(gt_ann_counts) + ds_annotations_count = np.sum(ds_ann_counts) - ds_ann_counts[confusion_matrix_labels_rmap[None]] + gt_annotations_count = np.sum(gt_ann_counts) - gt_ann_counts[confusion_matrix_labels_rmap[None]] mean_error_count = summary["error_count"] / len(intersection_frames) From 34a084bc8ef8c0c60be109c245fef08b11530245 Mon Sep 17 00:00:00 2001 From: klakhov Date: Fri, 28 Apr 2023 12:25:12 +0300 Subject: [PATCH 053/257] added frame intersection to table, changed dashes --- cvat-canvas/src/scss/canvas.scss | 4 ++-- .../task-analytics-page/quality/job-list.tsx | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/cvat-canvas/src/scss/canvas.scss b/cvat-canvas/src/scss/canvas.scss index 4b1c5e8ed205..7db7dbe4174d 100644 --- a/cvat-canvas/src/scss/canvas.scss +++ b/cvat-canvas/src/scss/canvas.scss @@ -149,12 +149,12 @@ polyline.cvat_canvas_shape_splitting { } .cvat_canvas_ground_truth { - stroke-dasharray: 15; + stroke-dasharray: 1; } .cvat_canvas_conflicted { stroke: red; - stroke-dasharray: 15; + stroke-dasharray: 1; } .cvat_canvas_shape_occluded_point { diff --git a/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx b/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx index e0efc20851fd..9b3dc4278adf 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx @@ -143,6 +143,20 @@ function JobListComponent(props: Props): JSX.Element { record.assignee.assignee?.username || false ) === value, }, + { + title: 'Frame intersection', + dataIndex: 'frame_intersection', + key: 'frame_intersection', + className: 'cvat-job-item-frame-intersection', + render: (jobInstance: Job): JSX.Element => { + const frameSharePercent = jobsReports[jobInstance.id]?.summary?.frameSharePercent; + return ( + + {Number.isNaN(frameSharePercent) ? 'N/A' : `${Math.round(frameSharePercent * 100)}%`} + + ); + }, + }, { title: 'Conflicts', dataIndex: 'conflicts', @@ -184,6 +198,7 @@ function JobListComponent(props: Props): JSX.Element { assignee: job, quality: job, conflicts: job, + frame_intersection: job, }); return acc; From 96cef16485ba69a6319d2e730d9152d099e837f9 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 28 Apr 2023 12:33:38 +0300 Subject: [PATCH 054/257] Implement permission checks for new endpoints --- cvat/apps/engine/views.py | 25 ++++++- cvat/apps/iam/permissions.py | 38 +++++++++- cvat/apps/iam/rules/conflicts.rego | 111 +++++++++++++++++++++++++++++ 3 files changed, 172 insertions(+), 2 deletions(-) create mode 100644 cvat/apps/iam/rules/conflicts.rego diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index 9111e5c8870d..25f731ae1bba 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -76,7 +76,7 @@ from . import models, task from .log import slogger -from cvat.apps.iam.permissions import (CloudStoragePermission, +from cvat.apps.iam.permissions import (AnnotationConflictPermission, CloudStoragePermission, CommentPermission, IssuePermission, JobPermission, LabelPermission, ProjectPermission, QualityReportPermission, TaskPermission, UserPermission) from cvat.apps.engine.cache import MediaCache @@ -2227,6 +2227,11 @@ def actions(self, request, pk): @extend_schema_view( list=extend_schema( summary='Method returns a paginated list of annotation conflicts', + parameters=[ + # These filters are implemented differently from others + OpenApiParameter('task_id', type=OpenApiTypes.INT, + description='A simple equality filter for task id'), + ], responses={ '200': AnnotationConflictSerializer(many=True), }), @@ -2250,6 +2255,24 @@ class ConflictsViewSet(viewsets.GenericViewSet, mixins.ListModelMixin): ordering = 'id' serializer_class = AnnotationConflictSerializer + def get_queryset(self): + queryset = super().get_queryset() + + if self.action == 'list': + if task_id := self.request.GET.get('task_id', None): + # NOTE: This filter is too complex to be implemented by other means + task = Task.objects.get(id=task_id) + self.check_object_permissions(self.request, task) + queryset = queryset.filter( + Q(report__job__segment__task__id=task_id) | Q(report__task__id=task_id) + ) + else: + # In other cases permissions are checked already + perm = AnnotationConflictPermission.create_scope_list(self.request) + queryset = perm.filter(queryset) + + return queryset + @extend_schema(tags=['quality_reports']) @extend_schema_view( diff --git a/cvat/apps/iam/permissions.py b/cvat/apps/iam/permissions.py index ac9eb2614003..94fa9db7f38b 100644 --- a/cvat/apps/iam/permissions.py +++ b/cvat/apps/iam/permissions.py @@ -18,7 +18,7 @@ from rest_framework.permissions import BasePermission from cvat.apps.organizations.models import Membership, Organization -from cvat.apps.engine.models import CloudStorage, Label, Project, QualityReport, Task, Job, Issue +from cvat.apps.engine.models import AnnotationConflict, CloudStorage, Label, Project, QualityReport, Task, Job, Issue from cvat.apps.webhooks.models import WebhookTypeChoice from cvat.utils.http import make_requests_session @@ -1638,6 +1638,7 @@ def get_scopes(request, view, obj): return [{ 'list': Scopes.LIST, 'retrieve': Scopes.VIEW, + 'data': Scopes.VIEW, }.get(view.action, None)] def get_resource(self): @@ -1667,6 +1668,41 @@ def get_resource(self): return data +class AnnotationConflictPermission(OpenPolicyAgentPermission): + obj: Optional[AnnotationConflict] + + class Scopes(StrEnum): + LIST = 'list' + + @classmethod + def create(cls, request, view, obj): + Scopes = __class__.Scopes + + permissions = [] + if view.basename == 'conflict': + for scope in cls.get_scopes(request, view, obj): + if scope == Scopes.LIST and isinstance(obj, Task): + permissions.append(TaskPermission.create_base_perm(request, view, + scope=TaskPermission.Scopes.VIEW, obj=obj)) + else: + permissions.append(cls.create_base_perm(request, view, scope, obj)) + + return permissions + + def __init__(self, **kwargs): + super().__init__(**kwargs) + self.url = settings.IAM_OPA_DATA_URL + '/conflicts/allow' + + @staticmethod + def get_scopes(request, view, obj): + Scopes = __class__.Scopes + return [{ + 'list': Scopes.LIST, + }.get(view.action, None)] + + def get_resource(self): + return None + class PolicyEnforcer(BasePermission): # pylint: disable=no-self-use diff --git a/cvat/apps/iam/rules/conflicts.rego b/cvat/apps/iam/rules/conflicts.rego new file mode 100644 index 000000000000..ba6a3e15f381 --- /dev/null +++ b/cvat/apps/iam/rules/conflicts.rego @@ -0,0 +1,111 @@ +package conflicts + +import future.keywords.if +import future.keywords.in + +import data.utils +import data.organizations + +# input: { +# "scope": <"view"|"list"> or null, +# "auth": { +# "user": { +# "id": , +# "privilege": <"admin"|"business"|"user"|"worker"> or null +# }, +# "organization": { +# "id": , +# "owner": { +# "id": +# }, +# "user": { +# "role": <"owner"|"maintainer"|"supervisor"|"worker"> or null +# } +# } or null, +# }, +# "resource": { +# "id": , +# "owner": { "id": }, +# "organization": { "id": } or null, +# "task": { +# "id": , +# "owner": { "id": }, +# "assignee": { "id": }, +# "organization": { "id": } or null, +# } or null, +# "project": { +# "id": , +# "owner": { "id": }, +# "assignee": { "id": }, +# "organization": { "id": } or null, +# } or null, +# } +# } + +default allow = false + +allow { + utils.is_admin +} + +allow { + input.scope == utils.LIST + utils.is_sandbox +} + +allow { + input.scope == utils.LIST + organizations.is_member +} + +filter = [] { # Django Q object to filter list of entries + utils.is_admin + utils.is_sandbox +} else = qobject { + utils.is_admin + utils.is_organization + org := input.auth.organization + qobject := [ + {"report__job__segment__task__organization": org.id}, + {"report__job__segment__task__project__organization": org.id}, "|", + {"report__task__organization": org.id}, "|", + {"report__task__project__organization": org.id}, "|", + ] +} else = qobject { + utils.is_sandbox + user := input.auth.user + qobject := [ + {"report__job__segment__task__owner_id": user.id}, + {"report__job__segment__task__assignee_id": user.id}, "|", + {"report__job__segment__task__project__owner_id": user.id}, "|", + {"report__job__segment__task__project__assignee_id": user.id}, "|", + {"report__task__owner_id": user.id}, "|", + {"report__task__assignee_id": user.id}, "|", + {"report__task__project__owner_id": user.id}, "|", + {"report__task__project__assignee_id": user.id}, "|", + ] +} else = qobject { + utils.is_organization + utils.has_perm(utils.USER) + organizations.has_perm(organizations.MAINTAINER) + org := input.auth.organization + qobject := [ + {"report__job__segment__task__organization": org.id}, + {"report__job__segment__task__project__organization": org.id}, "|", + {"report__task__organization": org.id}, "|", + {"report__task__project__organization": org.id}, "|", + ] +} else = qobject { + organizations.has_perm(organizations.WORKER) + user := input.auth.user + qobject := [ + {"report__job__segment__task__owner_id": user.id}, + {"report__job__segment__task__assignee_id": user.id}, "|", + {"report__job__segment__task__project__owner_id": user.id}, "|", + {"report__job__segment__task__project__assignee_id": user.id}, "|", + {"report__task__owner_id": user.id}, "|", + {"report__task__assignee_id": user.id}, "|", + {"report__task__project__owner_id": user.id}, "|", + {"report__task__project__assignee_id": user.id}, "|", + ] +} From 2e61c61c0df3befa1f66cd27288bfb8343e80a4a Mon Sep 17 00:00:00 2001 From: klakhov Date: Fri, 28 Apr 2023 12:35:52 +0300 Subject: [PATCH 055/257] fixed getting job if task is not available --- cvat-ui/src/actions/annotation-actions.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/cvat-ui/src/actions/annotation-actions.ts b/cvat-ui/src/actions/annotation-actions.ts index 887c88dc06df..e2df7ed65258 100644 --- a/cvat-ui/src/actions/annotation-actions.ts +++ b/cvat-ui/src/actions/annotation-actions.ts @@ -913,8 +913,11 @@ export function getJobAsync( const [job] = await cvat.jobs.get({ jobID: jid }); let gtJob = null; if (job.type === JobType.NORMAL) { - const [task] = await cvat.tasks.get({ id: tid }); - [gtJob] = task.jobs.filter((_job: Job) => _job.type === JobType.GROUND_TRUTH); + try { + const [task] = await cvat.tasks.get({ id: tid }); + [gtJob] = task.jobs.filter((_job: Job) => _job.type === JobType.GROUND_TRUTH); + // eslint-disable-next-line no-empty + } catch (e) {} } // navigate to correct first frame according to setup From 05c13d1f7397dc821368785385aa08016d50d7b6 Mon Sep 17 00:00:00 2001 From: klakhov Date: Fri, 28 Apr 2023 13:26:02 +0300 Subject: [PATCH 056/257] hide gt annotations on conflict --- .../annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx b/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx index bcc82edfa342..1efd0bdd020c 100644 --- a/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx +++ b/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx @@ -898,7 +898,7 @@ class CanvasWrapperComponent extends React.PureComponent { } }); const finalAnnotations = filteredAnnotations.filter((objectState: ObjectState) => ( - shownAnnotations.includes(objectState) || objectState.conflict + shownAnnotations.includes(objectState) )); canvasInstance.setup( frameData, From 4fe0418492df6ec720272fcd88a1197d6d434a9f Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 28 Apr 2023 13:55:59 +0300 Subject: [PATCH 057/257] Add low overlap conflict type --- .../0075_alter_annotationconflict_type.py | 18 +++++++++++++++ cvat/apps/engine/models.py | 1 + cvat/apps/engine/quality_control.py | 22 +++++++++++++++---- 3 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 cvat/apps/engine/migrations/0075_alter_annotationconflict_type.py diff --git a/cvat/apps/engine/migrations/0075_alter_annotationconflict_type.py b/cvat/apps/engine/migrations/0075_alter_annotationconflict_type.py new file mode 100644 index 000000000000..e8b7597aa9d6 --- /dev/null +++ b/cvat/apps/engine/migrations/0075_alter_annotationconflict_type.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.18 on 2023-04-28 10:55 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('engine', '0074_rename_frame_id_annotationconflict_frame'), + ] + + operations = [ + migrations.AlterField( + model_name='annotationconflict', + name='type', + field=models.CharField(choices=[('missing_annotation', 'MISSING_ANNOTATION'), ('extra_annotation', 'EXTRA_ANNOTATION'), ('mismatching_label', 'MISMATCHING_LABEL'), ('low_overlap', 'LOW_OVERLAP')], max_length=32), + ), + ] diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index 207856e3286b..bb612e4e4b66 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -1026,6 +1026,7 @@ class AnnotationConflictType(str, Enum): MISSING_ANNOTATION = 'missing_annotation' EXTRA_ANNOTATION = 'extra_annotation' MISMATCHING_LABEL = 'mismatching_label' + LOW_OVERLAP = 'low_overlap' def __str__(self) -> str: return self.value diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index f5598b1f7c4a..af1020ca6818 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -802,6 +802,8 @@ def __init__(self, self._frame_results = {} self.comparator = _Comparator(self._gt_dataset.categories()) + self.comparator._annotation_comparator.iou_threshold = 0 + self.overlap_threshold = 0.5 self.included_frames = gt_data_provider.job_data._db_job.segment.frame_set def _dm_item_to_frame_id(self, item: dm.DatasetItem) -> int: @@ -852,7 +854,7 @@ def _generate_frame_annotation_conflicts( matches, mismatches, gt_unmatched, ds_unmatched, pairwise_distances = merged_results - def _get_distance(gt_ann: dm.Annotation, ds_ann: dm.Annotation) -> Optional[float]: + def _get_overlap(gt_ann: dm.Annotation, ds_ann: dm.Annotation) -> Optional[float]: return pairwise_distances.get((id(gt_ann), id(ds_ann))) _matched_shapes = set( @@ -879,6 +881,18 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): matched_ann, distance = max(this_shape_distances, key=lambda v: v[1], default=(None, 0)) return matched_ann, distance + for gt_ann, ds_ann in list(matches + mismatches): + overlap = _get_overlap(gt_ann, ds_ann) + if overlap and overlap < self.overlap_threshold: + conflicts.append(AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.LOW_OVERLAP, + annotation_ids=[ + self._dm_ann_to_ann_id(ds_ann, self._ds_dataset), + self._dm_ann_to_ann_id(gt_ann, self._gt_dataset), + ] + )) + for unmatched_ann in gt_unmatched: conflicts.append( AnnotationConflict( @@ -914,15 +928,15 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): ) resulting_distances = [ - _get_distance(gt_ann, ds_ann) + _get_overlap(gt_ann, ds_ann) for gt_ann, ds_ann in itertools.chain(matches, mismatches) ] for unmatched_ann in itertools.chain(gt_unmatched, ds_unmatched): - matched_ann_id, distance = _find_closest_unmatched_shape(unmatched_ann) + matched_ann_id, overlap = _find_closest_unmatched_shape(unmatched_ann) if matched_ann_id is not None: _matched_shapes.add(matched_ann_id) - resulting_distances.append(distance) + resulting_distances.append(overlap) mean_iou = np.mean(resulting_distances) From a88ef0525884b125c797f9a1ef773c4bb57a3ad7 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 28 Apr 2023 20:54:57 +0300 Subject: [PATCH 058/257] Refactor some code --- cvat/apps/engine/quality_control.py | 173 +++++++++++++--------------- 1 file changed, 82 insertions(+), 91 deletions(-) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index af1020ca6818..ea348e409030 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -251,11 +251,11 @@ def from_dict(cls, d): ) @define(kw_only=True) -class QualityReportAnnotationComponentsSummary(_Serializable): +class ComparisonReportAnnotationComponentsSummary(_Serializable): shape: ComparisonReportAnnotationShapeSummary label: ComparisonReportAnnotationLabelSummary - def accumulate(self, other: QualityReportAnnotationComponentsSummary): + def accumulate(self, other: ComparisonReportAnnotationComponentsSummary): self.shape.accumulate(other.shape) self.label.accumulate(other.label) @@ -276,7 +276,7 @@ class ComparisonReportComparisonSummary(_Serializable): mean_conflict_count: float annotations: ComparisonReportAnnotationsSummary - annotation_components: QualityReportAnnotationComponentsSummary + annotation_components: ComparisonReportAnnotationComponentsSummary @property def frame_count(self) -> int: @@ -297,7 +297,8 @@ def from_dict(cls, d): conflict_count=d['conflict_count'], mean_conflict_count=d['mean_conflict_count'], annotations=ComparisonReportAnnotationsSummary.from_dict(d['annotations']), - annotation_components=QualityReportAnnotationComponentsSummary.from_dict(d['annotation_components']), + annotation_components=ComparisonReportAnnotationComponentsSummary.from_dict( + d['annotation_components']), ) @@ -314,23 +315,35 @@ def from_dict(cls, d): ) +@define(kw_only=True) +class ComparisonReportFrameSummary(_Serializable): + conflict_count: int + conflicts: List[AnnotationConflict] + + annotations: ComparisonReportAnnotationsSummary + annotation_components: ComparisonReportAnnotationComponentsSummary + + @classmethod + def from_dict(cls, d): + return cls( + conflict_count=d['conflict_count'], + conflicts=[AnnotationConflict.from_dict(v) for v in d['conflicts']], + annotations=ComparisonReportAnnotationsSummary.from_dict(d['annotations']), + annotation_components=ComparisonReportAnnotationComponentsSummary.from_dict( + d['annotation_components']), + ) + + @define(kw_only=True) class ComparisonReport(_Serializable): parameters: ComparisonReportParameters comparison_summary: ComparisonReportComparisonSummary dataset_summary: ComparisonReportDatasetSummary - conflicts: List[AnnotationConflict] + frame_results: Dict[int, ComparisonReportFrameSummary] @property - def conflicts_count(self) -> int: - return len(self.conflicts) - - def to_dict(self) -> dict: - result = super().to_dict() - result.update(**{ - k: getattr(self, k) for k in ['conflicts_count'] - }) - return result + def conflicts(self) -> List[AnnotationConflict]: + return list(itertools.chain.from_iterable(r.conflicts for r in self.frame_results.values())) @classmethod def from_dict(cls, d: Dict[str, Any]) -> ComparisonReport: @@ -338,7 +351,10 @@ def from_dict(cls, d: Dict[str, Any]) -> ComparisonReport: parameters=ComparisonReportParameters.from_dict(d['parameters']), comparison_summary=ComparisonReportComparisonSummary.from_dict(d['comparison_summary']), dataset_summary=ComparisonReportDatasetSummary.from_dict(d['dataset_summary']), - conflicts=list(AnnotationConflict.from_dict(v) for v in d['conflicts']), + frame_results={ + k: ComparisonReportFrameSummary.from_dict(v) + for k, v in d['frame_results'].items() + } ) def to_json(self) -> str: @@ -349,7 +365,7 @@ def default(self, o: Any) -> Any: else: return super().default(o) - return json.dumps(self.to_dict(), cls=_JSONEncoder) + return json.dumps(self.to_dict(), cls=_JSONEncoder, indent=2) @classmethod def from_json(cls, data: str) -> ComparisonReport: @@ -799,11 +815,11 @@ def __init__(self, self._ds_dataset = self._ds_data_provider.dm_dataset self._gt_dataset = self._gt_data_provider.dm_dataset - self._frame_results = {} + self._frame_results: Dict[int, ComparisonReportFrameSummary] = {} self.comparator = _Comparator(self._gt_dataset.categories()) - self.comparator._annotation_comparator.iou_threshold = 0 - self.overlap_threshold = 0.5 + self.comparator._annotation_comparator.iou_threshold = 0.2 + self.overlap_threshold = 0.8 self.included_frames = gt_data_provider.job_data._db_job.segment.frame_set def _dm_item_to_frame_id(self, item: dm.DatasetItem) -> int: @@ -971,7 +987,6 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): zip(itertools.repeat(None), ds_unmatched), zip(gt_unmatched, itertools.repeat(None)), ): - # TODO: separate keys and displayed labels ds_label_idx = confusion_matrix_labels_rmap[ds_ann.label if ds_ann else ds_ann] gt_label_idx = confusion_matrix_labels_rmap[gt_ann.label if gt_ann else gt_ann] confusion_matrix[ds_label_idx, gt_label_idx] += 1 @@ -990,49 +1005,40 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): ds_annotations_count = np.sum(ds_ann_counts) - ds_ann_counts[confusion_matrix_labels_rmap[None]] gt_annotations_count = np.sum(gt_ann_counts) - gt_ann_counts[confusion_matrix_labels_rmap[None]] - self._frame_results.setdefault(frame_id, {}).update( - error_count=len(conflicts), - annotations=dict( + self._frame_results[frame_id] = ComparisonReportFrameSummary( + conflict_count=len(conflicts), + annotations=ComparisonReportAnnotationsSummary( valid_count=valid_annotations_count, missing_count=missing_annotations_count, extra_count=extra_annotations_count, total_count=total_annotations_count, ds_count=ds_annotations_count, gt_count=gt_annotations_count, - accuracy=valid_annotations_count / (total_annotations_count or 1), - precision=valid_annotations_count / (ds_annotations_count or 1), - recall=valid_annotations_count / (gt_annotations_count or 1), - confusion_matrix=dict( + confusion_matrix=ConfusionMatrix( labels=list(confusion_matrix_labels.values()), - axes=dict( - cols='gt', - rows='ds' - ), rows=confusion_matrix, precision=label_precisions, recall=label_recalls, accuracy=label_accuracies, ) ), - annotation_element=dict( - shape=dict( + annotation_components=ComparisonReportAnnotationComponentsSummary( + shape=ComparisonReportAnnotationShapeSummary( valid_count=valid_shapes_count, missing_count=missing_shapes_count, extra_count=extra_shapes_count, total_count=total_shapes_count, ds_count=ds_shapes_count, gt_count=gt_shapes_count, - accuracy=valid_shapes_count / (total_shapes_count or 1), mean_iou=mean_iou, ), - label=dict( + label=ComparisonReportAnnotationLabelSummary( valid_count=valid_labels_count, invalid_count=invalid_labels_count, total_count=total_labels_count, - accuracy=valid_labels_count / (total_labels_count or 1), ), ), - errors=conflicts.copy(), + conflicts=conflicts.copy(), ) return conflicts @@ -1040,17 +1046,6 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): def generate_report(self) -> ComparisonReport: self._find_gt_conflicts() - def _get_nested_key(d, path): - for k in path: - d = d[k] - return d - - def _set_nested_key(d, path, value): - for k in path[:-1]: - d = d.setdefault(k, {}) - d[path[-1]] = value - return d - full_ds_comparable_shapes_count = 0 full_ds_comparable_attributes_count = 0 for item in self._ds_dataset: @@ -1065,34 +1060,26 @@ def _set_nested_key(d, path, value): # accumulate stats intersection_frames = [] - summary = {} + conflict_count = 0 + annotations = None + annotation_components = None mean_ious = [] + confusion_matrices = [] for frame_id, frame_result in self._frame_results.items(): intersection_frames.append(frame_id) + conflict_count += frame_result.conflict_count - for path in [ - ["annotation_element", "shape", "valid_count"], - ["annotation_element", "shape", "missing_count"], - ["annotation_element", "shape", "extra_count"], - ["annotation_element", "shape", "total_count"], - ["annotation_element", "shape", "ds_count"], - ["annotation_element", "shape", "gt_count"], - - ["annotation_element", "label", "valid_count"], - ["annotation_element", "label", "invalid_count"], - ["annotation_element", "label", "total_count"], - - ["annotations", "confusion_matrix", "rows"], - ["error_count"], - ]: - frame_value = _get_nested_key(frame_result, path) - try: - summary_value = _get_nested_key(summary, path) - _set_nested_key(summary, path, frame_value + summary_value) - except KeyError: - _set_nested_key(summary, path, frame_value) - - mean_ious.append(frame_result["annotation_element"]["shape"]["mean_iou"]) + if annotations is None: + annotations = deepcopy(frame_result.annotations) + else: + annotations.accumulate(frame_result.annotations) + confusion_matrices.append(frame_result.annotations.confusion_matrix.rows) + + if annotation_components is None: + annotation_components = deepcopy(frame_result.annotation_components) + else: + annotation_components.accumulate(frame_result.annotation_components) + mean_ious.append(frame_result.annotation_components.shape.mean_iou) confusion_matrix_labels = { i: label.name @@ -1103,7 +1090,12 @@ def _set_nested_key(d, path, value): confusion_matrix_labels_rmap = { k: i for i, k in enumerate(confusion_matrix_labels.keys()) } - confusion_matrix = _get_nested_key(summary, ["annotations", "confusion_matrix", "rows"]) + if confusion_matrices: + confusion_matrix = np.sum(confusion_matrices, axis=0) + else: + confusion_matrix = np.zeros( + (len(confusion_matrix_labels), len(confusion_matrix_labels)), dtype=int + ) matched_ann_counts = np.diag(confusion_matrix) ds_ann_counts = np.sum(confusion_matrix, axis=1) gt_ann_counts = np.sum(confusion_matrix, axis=0) @@ -1118,7 +1110,7 @@ def _set_nested_key(d, path, value): ds_annotations_count = np.sum(ds_ann_counts) - ds_ann_counts[confusion_matrix_labels_rmap[None]] gt_annotations_count = np.sum(gt_ann_counts) - gt_ann_counts[confusion_matrix_labels_rmap[None]] - mean_error_count = summary["error_count"] / len(intersection_frames) + mean_conflict_count = conflict_count / (len(intersection_frames) or 1) return ComparisonReport( parameters=ComparisonReportParameters( @@ -1131,8 +1123,8 @@ def _set_nested_key(d, path, value): frame_share_percent=len(intersection_frames) / (len(self._ds_dataset) or 1), frames=intersection_frames, - conflict_count=summary["error_count"], - mean_conflict_count=mean_error_count, + conflict_count=conflict_count, + mean_conflict_count=mean_conflict_count, annotations=ComparisonReportAnnotationsSummary( valid_count=valid_annotations_count, @@ -1150,20 +1142,20 @@ def _set_nested_key(d, path, value): ) ), - annotation_components=QualityReportAnnotationComponentsSummary( + annotation_components=ComparisonReportAnnotationComponentsSummary( shape=ComparisonReportAnnotationShapeSummary( - valid_count=_get_nested_key(summary, ["annotation_element", "shape", "valid_count"]), - missing_count=_get_nested_key(summary, ["annotation_element", "shape", "missing_count"]), - extra_count=_get_nested_key(summary, ["annotation_element", "shape", "extra_count"]), - total_count=_get_nested_key(summary, ["annotation_element", "shape", "total_count"]), - ds_count=_get_nested_key(summary, ["annotation_element", "shape", "ds_count"]), - gt_count=_get_nested_key(summary, ["annotation_element", "shape", "gt_count"]), + valid_count=annotation_components.shape.valid_count, + missing_count=annotation_components.shape.missing_count, + extra_count=annotation_components.shape.extra_count, + total_count=annotation_components.shape.total_count, + ds_count=annotation_components.shape.ds_count, + gt_count=annotation_components.shape.gt_count, mean_iou=np.mean(mean_ious), ), label=ComparisonReportAnnotationLabelSummary( - valid_count=_get_nested_key(summary, ["annotation_element", "label", "valid_count"]), - invalid_count=_get_nested_key(summary, ["annotation_element", "label", "invalid_count"]), - total_count=_get_nested_key(summary, ["annotation_element", "label", "total_count"]), + valid_count=annotation_components.label.valid_count, + invalid_count=annotation_components.label.invalid_count, + total_count=annotation_components.label.total_count, ), ), ), @@ -1173,9 +1165,7 @@ def _set_nested_key(d, path, value): shape_count=full_ds_comparable_shapes_count, ), - conflicts=list(itertools.chain.from_iterable( - r["errors"] for r in self._frame_results.values() - )) + frame_results=self._frame_results ) @@ -1215,6 +1205,7 @@ def schedule_quality_check_job(self, task: models.Task): # Report has never been computed queue_job_id = self._make_initial_queue_job_id(task) else: + # TODO: fix enqueuing if the job is just scheduled # Ensure there is an updating job in the queue next_update_time = last_update_time + self.TASK_QUALITY_CHECK_JOB_DELAY queue_job_id = self._make_regular_queue_job_id(task, next_update_time) @@ -1309,7 +1300,7 @@ def _update_task_quality_metrics(cls, *, task_id: int): shape_count=task_shapes_count ), - conflicts=task_conflicts + frame_results={}, ) with transaction.atomic(): @@ -1345,7 +1336,7 @@ def _update_task_quality_metrics(cls, *, task_id: int): target_last_updated=task.updated_date, gt_last_updated=gt_job.updated_date, data=task_report_data.to_json(), - conflicts=[c.to_dict() for c in task_report_data.conflicts], + conflicts=[], # the task doesn't have own conflicts children=list(job_quality_reports.values()), ) From 35286b403ceb88ddb551615eeb543c1cb2904945 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 1 May 2023 01:49:57 +0300 Subject: [PATCH 059/257] optimizations - pre test full exclude --- cvat/apps/dataset_manager/annotation.py | 129 ++++++++++++---- cvat/apps/dataset_manager/bindings.py | 82 ++++++++--- cvat/apps/dataset_manager/task.py | 58 ++++++-- cvat/apps/dataset_manager/util.py | 13 ++ cvat/apps/engine/models.py | 3 + cvat/apps/engine/quality_control.py | 187 +++++++++++++++--------- cvat/apps/engine/serializers.py | 6 +- cvat/apps/engine/views.py | 15 +- 8 files changed, 359 insertions(+), 134 deletions(-) diff --git a/cvat/apps/dataset_manager/annotation.py b/cvat/apps/dataset_manager/annotation.py index 7fb5b84b202b..e005462c73d0 100644 --- a/cvat/apps/dataset_manager/annotation.py +++ b/cvat/apps/dataset_manager/annotation.py @@ -6,6 +6,7 @@ from copy import copy, deepcopy import math +from typing import Optional, Sequence import numpy as np from itertools import chain from scipy.optimize import linear_sum_assignment @@ -160,11 +161,18 @@ def merge(self, data, start_frame, overlap, dimension): tracks = TrackManager(self.data.tracks, dimension) tracks.merge(data.tracks, start_frame, overlap, dimension) - def to_shapes(self, end_frame, dimension): + def to_shapes(self, end_frame, dimension, *, + included_frames: Optional[Sequence[int]] = None, + include_outside_frames: bool = False + ): shapes = self.data.shapes tracks = TrackManager(self.data.tracks, dimension) - return shapes + tracks.to_shapes(end_frame) + if included_frames is not None: + shapes = [s for s in shapes if s["frame"] in included_frames] + + return shapes + tracks.to_shapes(end_frame, + included_frames=included_frames, include_outside_frames=include_outside_frames) def to_tracks(self): tracks = self.data.tracks @@ -408,39 +416,53 @@ def __init__(self, objects, dimension): self._dimension = dimension super().__init__(objects) - def to_shapes(self, end_frame, end_skeleton_frame=None): + def to_shapes(self, end_frame: int, *, + included_frames: Optional[Sequence[int]] = None, + include_outside_frames: bool = False, + ): shapes = [] for idx, track in enumerate(self.objects): track_shapes = {} + for shape in TrackManager.get_interpolated_shapes( track, 0, end_frame, self._dimension, - include_outside_frames=end_skeleton_frame is not None, + include_outside_frames=include_outside_frames, + included_frames=included_frames, ): + if included_frames is not None and shape["frame"] not in included_frames: + continue + shape["label_id"] = track["label_id"] shape["group"] = track["group"] shape["track_id"] = idx shape["attributes"] += track["attributes"] shape["elements"] = [] - track_shapes[shape["frame"]] = shape - last_frame = shape["frame"] - while end_skeleton_frame and shape["frame"] < end_skeleton_frame: - shape = deepcopy(shape) - shape["frame"] += 1 track_shapes[shape["frame"]] = shape - if len(track.get("elements", [])): + if not track_shapes: + # This track has no elements on the included frames + continue + + if track.get("elements"): track_elements = TrackManager(track["elements"], self._dimension) element_shapes = track_elements.to_shapes(end_frame, - end_skeleton_frame=last_frame) + included_frames=set(track_shapes.keys()) & (included_frames or []), + include_outside_frames=True # elements are controlled by the parent shape + ) for shape in element_shapes: + assert shape["frame"] in set(track_shapes.keys()) & (included_frames or []) track_shapes[shape["frame"]]["elements"].append(shape) - shapes.extend(list(track_shapes.values())) + # TODO: think if the whole shape can be filtered out if all elements are outside + # and outside shapes are not required + # if not include_outside_frames: + + shapes.extend(track_shapes.values()) return shapes @staticmethod @@ -505,16 +527,31 @@ def _modify_unmached_object(self, obj, end_frame): @staticmethod def get_interpolated_shapes( - track, start_frame, end_frame, dimension, *, include_outside_frames=False + track, start_frame, end_frame, dimension, *, + include_outside_frames=False, included_frames=None ): + def my_deepcopy(v): + if isinstance(v, dict): + return {k: my_deepcopy(vv) for k, vv in v.items()} + elif isinstance(v, (list, tuple, set)): + return type(v)(my_deepcopy(vv) for vv in v) + elif isinstance(v, (int, float, str, bool, type(None))): + return v + else: + return deepcopy(v) + def copy_shape(source, frame, points=None, rotation=None): - copied = deepcopy(source) + copied = source.copy() + copied["attributes"] = my_deepcopy(source["attributes"]) + copied["keyframe"] = False copied["frame"] = frame if rotation is not None: copied["rotation"] = rotation if points is not None: copied["points"] = points + else: + copied["points"] = source["points"].copy() return copied def find_angle_diff(right_angle, left_angle): @@ -539,7 +576,7 @@ def simple_interpolation(shape0, shape1): ) * offset + 360) % 360 points = shape0["points"] + diff * offset - shapes.append(copy_shape(shape0, frame, points.tolist(), rotation)) + shapes.append(copy_shape(shape0, frame, points, rotation)) return shapes @@ -618,7 +655,7 @@ def match_left_right(left_curve, right_curve): def match_right_left(left_curve, right_curve, left_right_matching): matched_right_points = list(chain.from_iterable(left_right_matching.values())) unmatched_right_points = filter(lambda x: x not in matched_right_points, range(len(right_curve))) - updated_matching = deepcopy(left_right_matching) + updated_matching = my_deepcopy(left_right_matching) for right_point in unmatched_right_points: left_point = find_nearest_pair(right_curve[right_point], left_curve) @@ -770,8 +807,11 @@ def polyshape_interpolation(shape0, shape1): shapes = [] is_polygon = shape0["type"] == ShapeType.POLYGON if is_polygon: - shape0["points"].extend(shape0["points"][:2]) - shape1["points"].extend(shape1["points"][:2]) + # Make the polygon closed for computations + shape0 = shape0.copy() + shape1 = shape1.copy() + shape0["points"] = shape0["points"] + shape0["points"][:2] + shape1["points"] = shape1["points"] + shape1["points"][:2] distance = shape1["frame"] - shape0["frame"] for frame in range(shape0["frame"] + 1, shape1["frame"]): @@ -781,6 +821,7 @@ def polyshape_interpolation(shape0, shape1): shapes.append(copy_shape(shape0, frame, points)) if is_polygon: + # Remove the extra point added shape0["points"] = shape0["points"][:-2] shape1["points"] = shape1["points"][:-2] for shape in shapes: @@ -815,26 +856,41 @@ def interpolate(shape0, shape1): return shapes + def propagate(shape, end_frame, *, included_frames=None): + return [ + copy_shape(shape, i) + for i in range(shape["frame"], end_frame) + if included_frames is None or i in included_frames + ] + shapes = [] - prev_shape = {} + prev_shape = None for shape in sorted(track["shapes"], key=lambda shape: shape["frame"]): curr_frame = shape["frame"] - if end_frame <= curr_frame: - # if we exceed endframe, we still need to interpolate using the next keyframe - # but we keep the results only up to end_frame - interpolated = interpolate(prev_shape, deepcopy(shape)) + if prev_shape and end_frame <= curr_frame: + # If we exceed the end_frame and there was a previous shape, + # we need to interpolate up to the next keyframe, + # but keep the results only up to the end_frame: + # vvvvvvv + # ---- | ------- | ----- | -----> + # prev end cur kf + interpolated = interpolate(prev_shape, shape) + for shape in sorted(interpolated, key=lambda shape: shape["frame"]): if shape["frame"] < end_frame: shapes.append(shape) else: break - return shapes + break # The track finishes here if prev_shape: - assert shape["frame"] > prev_shape["frame"] + assert curr_frame > prev_shape["frame"] # Catch invalid tracks + + # Propagate attributes for attr in prev_shape["attributes"]: if attr["spec_id"] not in map(lambda el: el["spec_id"], shape["attributes"]): - shape["attributes"].append(deepcopy(attr)) + shape["attributes"].append(my_deepcopy(attr)) + if not prev_shape["outside"] or include_outside_frames: shapes.extend(interpolate(prev_shape, shape)) @@ -842,11 +898,22 @@ def interpolate(shape0, shape1): shapes.append(shape) prev_shape = shape - if not prev_shape["outside"]: - # valid when the latest keyframe of a track less than end_frame and it is not outside, so, need to propagate - shape = deepcopy(prev_shape) - shape["frame"] = end_frame - shapes.extend(interpolate(prev_shape, shape)) + if prev_shape and (not prev_shape["outside"] or include_outside_frames): + # When the latest keyframe of a track is less than the end_frame + # and it is not outside, need to propagate + shapes.extend(propagate(prev_shape, end_frame, included_frames=included_frames)) + + shapes = [ + shape for shape in shapes + + # After interpolation there can be a finishing frame + # outside of the task boundaries. Filter it out to avoid errors. + # https://github.com/openvinotoolkit/cvat/issues/2827 + if track["frame"] < shape["frame"] < end_frame + + if not shape["outside"] or include_outside_frames + if included_frames is None or shape["frame"] in included_frames + ] return shapes diff --git a/cvat/apps/dataset_manager/bindings.py b/cvat/apps/dataset_manager/bindings.py index 0524b09ed561..dfbb551446ca 100644 --- a/cvat/apps/dataset_manager/bindings.py +++ b/cvat/apps/dataset_manager/bindings.py @@ -21,12 +21,14 @@ import rq from attr import attrib, attrs from datumaro.components.media import PointCloud +from django.db.models import QuerySet from django.utils import timezone from cvat.apps.dataset_manager.formats.utils import get_label_color +from cvat.apps.dataset_manager.util import add_prefetch_fields from cvat.apps.engine.frame_provider import FrameProvider -from cvat.apps.engine.models import (AttributeSpec, AttributeType, DimensionType, JobType, - Label, LabelType, Project, ShapeType, Task) +from cvat.apps.engine.models import (AttributeSpec, AttributeType, DimensionType, Job, JobType, + Label, LabelType, Project, SegmentType, ShapeType, Task) from cvat.apps.engine.models import Image as Img from .annotation import AnnotationIR, AnnotationManager, TrackManager @@ -37,15 +39,27 @@ class InstanceLabelData: Attribute = NamedTuple('Attribute', [('name', str), ('value', Any)]) + @classmethod + def add_prefetch_info(cls, queryset: QuerySet): + assert issubclass(queryset.model, Label) + + return add_prefetch_fields(queryset, [ + 'skeleton', + 'parent', + 'attributespec_set', + 'sublabels', + ]) + def __init__(self, instance: Union[Task, Project]) -> None: instance = instance.project if isinstance(instance, Task) and instance.project_id is not None else instance - db_labels = instance.label_set.all().prefetch_related('attributespec_set').order_by('pk') + db_labels = self.add_prefetch_info(instance.label_set.all()) # If this flag is set to true, create attribute within anntations import self._soft_attribute_import = False self._label_mapping = OrderedDict[int, Label]( - ((db_label.id, db_label) for db_label in db_labels), + (db_label.id, db_label) + for db_label in sorted(db_labels, key=lambda v: v.pk) ) self._attribute_mapping = {db_label.id: { @@ -227,6 +241,9 @@ def rel_frame_id(self, absolute_id): def _init_frame_info(self): self._deleted_frames = { k: True for k in self._db_data.deleted_frames } + + self._excluded_frames = set() + if hasattr(self._db_data, 'video'): self._frame_info = { frame: { @@ -385,29 +402,35 @@ def get_frame(idx): ) return frames[frame] + included_frames = set( + i for i in self.rel_range + if not self._is_frame_deleted(i) + and not self._is_frame_excluded(i) + ) + if include_empty: - for idx in self._frame_info: - if not self._is_frame_deleted(idx): - get_frame(idx) + for idx in sorted(set(self._frame_info) & included_frames): + get_frame(idx) anno_manager = AnnotationManager(self._annotation_ir) - for shape in sorted(anno_manager.to_shapes(self.stop, self._annotation_ir.dimension), - key=lambda shape: shape.get("z_order", 0)): + for shape in sorted( + anno_manager.to_shapes(self.stop, self._annotation_ir.dimension, + # Also we skipped deleted and excluded frames here + included_frames=included_frames, + include_outside_frames=False + ), + key=lambda shape: shape.get("z_order", 0) + ): shape_data = '' - if shape['frame'] not in self._frame_info or self._is_frame_deleted(shape['frame']): - # After interpolation there can be a finishing frame - # outside of the task boundaries. Filter it out to avoid errors. - # https://github.com/openvinotoolkit/cvat/issues/2827 - # Also we skipped deleted frames here - continue + if 'track_id' in shape: - if shape['outside']: - continue exported_shape = self._export_tracked_shape(shape) else: exported_shape = self._export_labeled_shape(shape) shape_data = self._export_shape(shape) + get_frame(shape['frame']).labeled_shapes.append(exported_shape) + if shape_data: get_frame(shape['frame']).shapes.append(shape_data) for label in self._label_mapping.values(): @@ -430,6 +453,9 @@ def shapes(self): def _is_frame_deleted(self, frame): return frame in self._deleted_frames + def _is_frame_excluded(self, frame): + return frame in self._excluded_frames + @property def tracks(self): for idx, track in enumerate(self._annotation_ir.tracks): @@ -641,12 +667,21 @@ def _init_meta(self): ("height", str(self._db_data.video.height)) ]) + def _init_frame_info(self): + super()._init_frame_info() + + if self.db_instance.segment.type == SegmentType.SPECIFIC_FRAMES: + self._excluded_frames.update( + frame for frame in self.rel_range + if self.abs_frame_id(frame) not in self.db_instance.segment.frame_set + ) + def __len__(self): segment = self._db_job.segment return segment.stop_frame - segment.start_frame + 1 def _get_queryset(self): - return self._db_data.images.filter(frame__in=self.abs_range) + return (image for image in self._db_data.images.all() if image.frame in self.abs_range) @property def abs_range(self): @@ -654,7 +689,6 @@ def abs_range(self): step = self._frame_step start_frame = self._db_data.start_frame + segment.start_frame * step stop_frame = self._db_data.start_frame + segment.stop_frame * step + 1 - return range(start_frame, stop_frame, step) @property @@ -676,6 +710,7 @@ def stop(self) -> int: def db_instance(self): return self._db_job + class TaskData(CommonData): META_FIELD = "task" def __init__(self, annotation_ir, db_task, host='', create_callback=None): @@ -1795,6 +1830,15 @@ def import_dm_annotations(dm_dataset: dm.Dataset, instance_data: Union[ProjectDa frame_number = instance_data.abs_frame_id( match_dm_item(item, instance_data, root_hint=root_hint)) + if (isinstance(instance_data.db_instance, Job) + and instance_data.db_instance.type == JobType.GROUND_TRUTH + and frame_number not in instance_data.db_instance.segment.frame_set + ): + # Given there is a dataset with annotated frames, + # it would be very hard to create annotations with frame skips for users, + # so we just skip such annotations. We still need to match the frames. + continue + # do not store one-item groups group_map = {0: 0} group_size = {0: 0} diff --git a/cvat/apps/dataset_manager/task.py b/cvat/apps/dataset_manager/task.py index ea9b33b06a2e..dcd372b72f3a 100644 --- a/cvat/apps/dataset_manager/task.py +++ b/cvat/apps/dataset_manager/task.py @@ -16,10 +16,10 @@ from cvat.apps.engine.plugins import plugin_decorator from cvat.apps.profiler import silk_profile -from .annotation import AnnotationIR, AnnotationManager -from .bindings import TaskData, JobData -from .formats.registry import make_exporter, make_importer -from .util import bulk_create +from cvat.apps.dataset_manager.annotation import AnnotationIR, AnnotationManager +from cvat.apps.dataset_manager.bindings import TaskData, JobData +from cvat.apps.dataset_manager.formats.registry import make_exporter, make_importer +from cvat.apps.dataset_manager.util import add_prefetch_fields, bulk_create class dotdict(OrderedDict): @@ -71,18 +71,48 @@ def _merge_table_rows(rows, keys_for_merge, field_id): return list(merged_rows.values()) class JobAnnotation: - def __init__(self, pk, is_prefetched=False): + @classmethod + def add_prefetch_info(cls, queryset): + assert issubclass(queryset.model, models.Job) + + label_qs = add_prefetch_fields(models.Label.objects.all(), [ + 'skeleton', + 'parent', + 'attributespec_set', + ]) + label_qs = JobData.add_prefetch_info(label_qs) + + return queryset.select_related( + 'segment', + 'segment__task', + ).prefetch_related( + 'segment__task__owner', + 'segment__task__assignee', + 'segment__task__project__owner', + 'segment__task__project__assignee', + + Prefetch('segment__task__data', + queryset=models.Data.objects.select_related('video').prefetch_related( + Prefetch('images', queryset=models.Image.objects.order_by('frame')) + )), + + Prefetch('segment__task__label_set', queryset=label_qs), + Prefetch('segment__task__project__label_set', queryset=label_qs), + ) + + def __init__(self, pk, *, is_prefetched=False, queryset=None): + if queryset is None: + queryset = self.add_prefetch_info(models.Job.objects).all() + if is_prefetched: - self.db_job = models.Job.objects.select_related('segment__task') \ - .select_for_update().get(id=pk) + self.db_job: models.Job = queryset.select_related( + 'segment__task' + ).select_for_update().get(id=pk) else: - self.db_job = models.Job.objects.prefetch_related( - 'segment', - 'segment__task', - Prefetch('segment__task__data', queryset=models.Data.objects.select_related('video').prefetch_related( - Prefetch('images', queryset=models.Image.objects.order_by('frame')) - )) - ).get(pk=pk) + try: + self.db_job: models.Job = next(job for job in queryset if job.pk == pk) + except StopIteration as ex: + raise models.Job.DoesNotExist from ex db_segment = self.db_job.segment self.start_frame = db_segment.start_frame diff --git a/cvat/apps/dataset_manager/util.py b/cvat/apps/dataset_manager/util.py index 8c4a4c7ed8e2..0a6cec4b5425 100644 --- a/cvat/apps/dataset_manager/util.py +++ b/cvat/apps/dataset_manager/util.py @@ -5,8 +5,11 @@ import inspect import os, os.path as osp +from typing import Sequence import zipfile + from django.conf import settings +from django.db.models import QuerySet def current_function_name(depth=1): @@ -35,3 +38,13 @@ def bulk_create(db_model, objects, flt_param): return db_model.objects.bulk_create(objects) return [] + +def is_prefetched(queryset: QuerySet, field: str) -> bool: + return field in queryset._prefetch_related_lookups + +def add_prefetch_fields(queryset: QuerySet, fields: Sequence[str]) -> QuerySet: + for field in fields: + if not is_prefetched(queryset, field): + queryset = queryset.prefetch_related(field) + + return queryset diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index bb612e4e4b66..f079eff3cad0 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -239,6 +239,9 @@ def get_frame_step(self): match = re.search(r"step\s*=\s*([1-9]\d*)", self.frame_filter) return int(match.group(1)) if match else 1 + def get_valid_frame_indices(self): + return range(self.start_frame, self.stop_frame, self.get_frame_step()) + def get_data_dirname(self): return os.path.join(settings.MEDIA_DATA_ROOT, str(self.id)) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index ea348e409030..f0bd37742128 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -5,9 +5,9 @@ from __future__ import annotations from copy import deepcopy from datetime import timedelta +from functools import cached_property import itertools -import json from typing import Any, Callable, Dict, Hashable, List, Optional, Sequence, Union, cast from attrs import asdict, define, has as is_attrs_type @@ -21,9 +21,13 @@ from cvat.apps.dataset_manager.task import JobAnnotation from cvat.apps.dataset_manager.bindings import (CommonData, CvatToDmAnnotationConverter, GetCVATDataExtractor, JobData) +from cvat.apps.dataset_manager.util import bulk_create from cvat.apps.dataset_manager.formats.registry import dm_env from cvat.apps.engine import models from cvat.apps.engine.models import AnnotationConflictType, ShapeType +from cvat.apps.profiler import silk_profile + +from datumaro.util import dump_json, parse_json class _Serializable: @@ -352,30 +356,29 @@ def from_dict(cls, d: Dict[str, Any]) -> ComparisonReport: comparison_summary=ComparisonReportComparisonSummary.from_dict(d['comparison_summary']), dataset_summary=ComparisonReportDatasetSummary.from_dict(d['dataset_summary']), frame_results={ - k: ComparisonReportFrameSummary.from_dict(v) + int(k): ComparisonReportFrameSummary.from_dict(v) for k, v in d['frame_results'].items() } ) def to_json(self) -> str: - class _JSONEncoder(json.JSONEncoder): - def default(self, o: Any) -> Any: - if isinstance(o, (np.ndarray, np.number)): - return o.tolist() - else: - return super().default(o) - - return json.dumps(self.to_dict(), cls=_JSONEncoder, indent=2) + d = self.to_dict() + d["frame_results"] = {str(k): v for k, v in d['frame_results'].items()} + return dump_json(d, indent=True, append_newline=True).decode() @classmethod def from_json(cls, data: str) -> ComparisonReport: - return cls.from_dict(json.loads(data)) + return cls.from_dict(parse_json(data)) class JobDataProvider: + @classmethod + def add_prefetch_info(cls, queryset): + return JobAnnotation.add_prefetch_info(queryset) + @transaction.atomic - def __init__(self, job_id: int) -> None: + def __init__(self, job_id: int, *, queryset=None) -> None: self.job_id = job_id - self.job_annotation = JobAnnotation(job_id) + self.job_annotation = JobAnnotation(job_id, queryset=queryset) self.job_annotation.init_from_db() self.job_data = JobData( annotation_ir=self.job_annotation.ir_data, @@ -383,9 +386,12 @@ def __init__(self, job_id: int) -> None: ) self._annotation_memo = _MemoizingAnnotationConverterFactory() + + @cached_property + def dm_dataset(self): extractor = GetCVATDataExtractor(self.job_data, convert_annotations=self._annotation_memo) - self.dm_dataset = dm.Dataset.from_extractors(extractor, env=dm_env) + return dm.Dataset.from_extractors(extractor, env=dm_env) def dm_item_id_to_frame_id(self, item_id: str) -> int: return self.job_data.match_frame(item_id) @@ -478,6 +484,7 @@ def distance(self, a, b): b_bbox = self.instance_map[id(b)][1] if dm.ops.bbox_iou(a_bbox, b_bbox) <= 0: return 0 + bbox = dm.ops.mean_bbox([a_bbox, b_bbox]) return _OKS( a, @@ -658,21 +665,16 @@ def match_skeletons(self, item_a, item_b): ] # Build a single Points object for further comparisons - merged_points = dm.Points( - points=list( - itertools.chain.from_iterable( - p.points if p else [0, 0] for p in skeleton_points - ) - ), - visibility=list( - itertools.chain.from_iterable( - p.visibility if p else [dm.Points.Visibility.absent] - for p in skeleton_points - ) - ), - label=skeleton.label - # no per-point attributes currently in CVAT - ) + merged_points = dm.Points() + merged_points.points = np.ravel([ + p.points if p else [0, 0] for p in skeleton_points + ]) + merged_points.visibility = np.ravel([ + p.visibility if p else [dm.Points.Visibility.absent] + for p in skeleton_points + ]) + merged_points.label = skeleton.label + # no per-point attributes currently in CVAT if all(v == dm.Points.Visibility.absent for v in merged_points.visibility): # The whole skeleton is outside, exclude it @@ -818,7 +820,7 @@ def __init__(self, self._frame_results: Dict[int, ComparisonReportFrameSummary] = {} self.comparator = _Comparator(self._gt_dataset.categories()) - self.comparator._annotation_comparator.iou_threshold = 0.2 + self.comparator._annotation_comparator.iou_threshold = 0.4 self.overlap_threshold = 0.8 self.included_frames = gt_data_provider.job_data._db_job.segment.frame_set @@ -1220,16 +1222,26 @@ def schedule_quality_check_job(self, task: models.Task): ) @classmethod + @silk_profile() def _update_task_quality_metrics(cls, *, task_id: int): with transaction.atomic(): # The task could have been deleted during scheduling try: - task = models.Task.objects.prefetch_related('segment_set__job_set').get(id=task_id) + task = models.Task.objects.select_related('data').get(id=task_id) except models.Task.DoesNotExist: return - # The GT job could have been removed during scheduling - if not task.gt_job: + # Try to use shared queryset to minimize DB requests + job_queryset = models.Job.objects.prefetch_related('segment') + job_queryset = JobDataProvider.add_prefetch_info(job_queryset) + job_queryset = job_queryset.filter(segment__task_id=task_id).all() + + # The GT job could have been removed during scheduling, so we need to check it exists + gt_job: models.Job = next( + (job for job in job_queryset if job.type == models.JobType.GROUND_TRUTH), + None + ) + if gt_job is None: return # TODO: Probably, can be optimized to this: @@ -1238,14 +1250,20 @@ def _update_task_quality_metrics(cls, *, task_id: int): # old reports can be reused in this case (need to add M-1 relationship in reports) # Preload all the data for the computations - gt_job = task.gt_job - gt_job_data_provider = JobDataProvider(gt_job.id) + # It must be done in a single transaction and before all the remaining computations + # because the task and jobs can be changed after the beginning, + # which will lead to inconsistent results + gt_job_data_provider = JobDataProvider(gt_job.id, queryset=job_queryset) jobs: List[models.Job] = [ - s.job_set.first() - for s in task.segment_set.filter(job__type=models.JobType.NORMAL).all() + j + for j in job_queryset + if j.type == models.JobType.NORMAL ] - job_data_providers = { job.id: JobDataProvider(job.id) for job in jobs } + job_data_providers = { + job.id: JobDataProvider(job.id, queryset=job_queryset) + for job in jobs + } job_comparison_reports: Dict[int, ComparisonReport] = {} for job in jobs: @@ -1253,6 +1271,9 @@ def _update_task_quality_metrics(cls, *, task_id: int): comparator = _DatasetComparator(job_data_provider, gt_job_data_provider) job_comparison_reports[job.id] = comparator.generate_report() + # Release resources + del job_data_provider.dm_dataset + # The task dataset can be different from any jobs' dataset because of frame overlaps # between jobs, from which annotations are merged to get the task annotations. # Thus, a separate report could be computed for the task. Instead, here we only @@ -1321,7 +1342,7 @@ def _update_task_quality_metrics(cls, *, task_id: int): job_quality_reports = {} for job in jobs: job_comparison_report = job_comparison_reports[job.id] - job_report = cls._save_report( + job_report = dict( job=job, target_last_updated=job.updated_date, gt_last_updated=gt_job.updated_date, @@ -1331,42 +1352,74 @@ def _update_task_quality_metrics(cls, *, task_id: int): job_quality_reports[job.id] = job_report - cls._save_report( - task=task, - target_last_updated=task.updated_date, - gt_last_updated=gt_job.updated_date, - data=task_report_data.to_json(), - conflicts=[], # the task doesn't have own conflicts - children=list(job_quality_reports.values()), + cls._save_reports( + task_report=dict( + task=task, + target_last_updated=task.updated_date, + gt_last_updated=gt_job.updated_date, + data=task_report_data.to_json(), + conflicts=[], # the task doesn't have own conflicts + ), + job_reports=list(job_quality_reports.values()) ) + @classmethod - def _save_report(cls, **params) -> models.QualityReport: - conflicts = params.pop('conflicts') - children = params.pop('children', []) + def _save_reports(cls, *, task_report, job_reports) -> models.QualityReport: + db_task_report = models.QualityReport.objects.create( + task=task_report['task'], + target_last_updated=task_report['target_last_updated'], + gt_last_updated=task_report['gt_last_updated'], + data=task_report['data'], + ) - db_report = models.QualityReport(**params) - db_report.save() + db_job_reports = bulk_create( + db_model=models.QualityReport, + objects=[ + models.QualityReport( + parent=db_task_report, + job=job_report['job'], + target_last_updated=job_report['target_last_updated'], + gt_last_updated=job_report['gt_last_updated'], + data=job_report['data'], + ) + for job_report in job_reports + ], + flt_param={} + ) - for conflict in conflicts: - db_conflict = db_report.conflicts.create( - type=conflict['type'], - frame=conflict['frame_id'], - ) + db_report_iter = itertools.chain([db_task_report], db_job_reports) + report_iter = itertools.chain([task_report], job_reports) + db_conflicts = bulk_create( + db_model=models.AnnotationConflict, + objects=[ + models.AnnotationConflict( + report=db_report, + type=conflict['type'], + frame=conflict['frame_id'], + ) + for db_report, report in zip(db_report_iter, report_iter) + for conflict in report['conflicts'] + ], + flt_param={} + ) - for ann_id in conflict['annotation_ids']: - db_ann_id = db_conflict.annotation_ids.create( + report_iter = itertools.chain([task_report], job_reports) + db_conflicts_iter = iter(db_conflicts) + bulk_create( + db_model=models.AnnotationId, + objects=[ + models.AnnotationId( + conflict=db_conflict, job_id=ann_id['job_id'], obj_id=ann_id['obj_id'], type=ann_id['type'], ) - db_ann_id.full_clean() - - db_conflict.full_clean() - - db_report.full_clean() - - for child in children: - db_report.children.add(child) + for report in report_iter + for db_conflict, conflict in zip(db_conflicts_iter, report['conflicts']) + for ann_id in conflict['annotation_ids'] + ], + flt_param={} + ) - return db_report + # TODO: add validation diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index a2b77a2c5cd1..d28f0e80f2d4 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -622,8 +622,7 @@ def create(self, validated_data): ) size = task.data.size - step = task.data.get_frame_step() - valid_frame_ids = range(task.data.start_frame, task.data.stop_frame, step) + valid_frame_ids = task.data.get_valid_frame_indices() frame_selection_method = validated_data.pop("frame_selection_method", None) if frame_selection_method == models.JobFrameSelectionMethod.RANDOM_UNIFORM: @@ -643,6 +642,9 @@ def create(self, validated_data): elif frame_selection_method == models.JobFrameSelectionMethod.MANUAL: frames = validated_data.pop("frames") + if not frames: + raise serializers.ValidationError("The list of frames cannot be empty") + unique_frames = set(frames) if len(unique_frames) != len(frames): raise serializers.ValidationError(f"Frames must not repeat") diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index 25f731ae1bba..2b3566b567d9 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -73,6 +73,7 @@ from cvat.apps.engine import backup from cvat.apps.engine.mixins import PartialUpdateModelMixin, UploadMixin, AnnotationMixin, SerializeMixin from cvat.apps.engine.location import get_location_configuration, StorageType +from cvat.apps.profiler import silk_profile from . import models, task from .log import slogger @@ -2298,9 +2299,11 @@ class QualityReportViewSet(viewsets.GenericViewSet, mixins.ListModelMixin, mixins.RetrieveModelMixin ): queryset = QualityReport.objects.prefetch_related( + 'job', + 'job__segment', 'job__segment__task', 'task', - 'task__project' + 'task__project', ).all() # NOTE: This filter works incorrectly for this view @@ -2355,6 +2358,16 @@ def data(self, request, pk): json_report = report.get_json_report() return HttpResponse(json_report.encode()) + @extend_schema(parameters=[ + OpenApiParameter('task_id', type=OpenApiTypes.INT) + ]) + @action(detail=False, methods=['GET'], url_path='debug', serializer_class=None) + @silk_profile() + def debug(self, request): + from .quality_control import QueueJobManager + QueueJobManager._update_task_quality_metrics(task_id=request.GET.get('task_id')) + return HttpResponse({}) + def rq_exception_handler(rq_job, exc_type, exc_value, tb): rq_job.exc_info = "".join( From 39f7d82542f4fb2407753b90218210b4cc936850 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 1 May 2023 02:44:36 +0300 Subject: [PATCH 060/257] optimization - full annotation filtering --- cvat/apps/dataset_manager/annotation.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/cvat/apps/dataset_manager/annotation.py b/cvat/apps/dataset_manager/annotation.py index e005462c73d0..2fafd9189f4a 100644 --- a/cvat/apps/dataset_manager/annotation.py +++ b/cvat/apps/dataset_manager/annotation.py @@ -460,7 +460,11 @@ def to_shapes(self, end_frame: int, *, # TODO: think if the whole shape can be filtered out if all elements are outside # and outside shapes are not required - # if not include_outside_frames: + if not include_outside_frames: + track_shapes = { + k: v for k, v in track_shapes.items() + if any(not elem["outside"] for elem in v["elements"]) + } shapes.extend(track_shapes.values()) return shapes @@ -576,7 +580,8 @@ def simple_interpolation(shape0, shape1): ) * offset + 360) % 360 points = shape0["points"] + diff * offset - shapes.append(copy_shape(shape0, frame, points, rotation)) + if included_frames is None or frame in included_frames: + shapes.append(copy_shape(shape0, frame, points, rotation)) return shapes @@ -603,7 +608,8 @@ def points_interpolation(shape0, shape1): else: shapes = [] for frame in range(shape0["frame"] + 1, shape1["frame"]): - shapes.append(copy_shape(shape0, frame)) + if included_frames is None or frame in included_frames: + shapes.append(copy_shape(shape0, frame)) return shapes @@ -818,7 +824,8 @@ def polyshape_interpolation(shape0, shape1): offset = (frame - shape0["frame"]) / distance points = interpolate_position(shape0, shape1, offset) - shapes.append(copy_shape(shape0, frame, points)) + if included_frames is None or frame in included_frames: + shapes.append(copy_shape(shape0, frame, points)) if is_polygon: # Remove the extra point added @@ -909,7 +916,7 @@ def propagate(shape, end_frame, *, included_frames=None): # After interpolation there can be a finishing frame # outside of the task boundaries. Filter it out to avoid errors. # https://github.com/openvinotoolkit/cvat/issues/2827 - if track["frame"] < shape["frame"] < end_frame + if track["frame"] <= shape["frame"] < end_frame if not shape["outside"] or include_outside_frames if included_frames is None or shape["frame"] in included_frames From cf86e79553cf0f097b23a5a617250fd4714f5f68 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 1 May 2023 02:44:58 +0300 Subject: [PATCH 061/257] Fix error in report --- cvat/apps/engine/quality_control.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index f0bd37742128..d1bed072259e 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -1001,8 +1001,8 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): label_recalls = _arr_div(matched_ann_counts, gt_ann_counts) valid_annotations_count = np.sum(matched_ann_counts) - missing_annotations_count = np.sum(confusion_matrix[:, confusion_matrix_labels_rmap[None]]) - extra_annotations_count = np.sum(confusion_matrix[confusion_matrix_labels_rmap[None], :]) + missing_annotations_count = np.sum(confusion_matrix[confusion_matrix_labels_rmap[None], :]) + extra_annotations_count = np.sum(confusion_matrix[:, confusion_matrix_labels_rmap[None]]) total_annotations_count = np.sum(confusion_matrix) ds_annotations_count = np.sum(ds_ann_counts) - ds_ann_counts[confusion_matrix_labels_rmap[None]] gt_annotations_count = np.sum(gt_ann_counts) - gt_ann_counts[confusion_matrix_labels_rmap[None]] @@ -1106,8 +1106,8 @@ def generate_report(self) -> ComparisonReport: label_recalls = _arr_div(matched_ann_counts, gt_ann_counts) valid_annotations_count = np.sum(matched_ann_counts) - missing_annotations_count = np.sum(confusion_matrix[:, confusion_matrix_labels_rmap[None]]) - extra_annotations_count = np.sum(confusion_matrix[confusion_matrix_labels_rmap[None], :]) + missing_annotations_count = np.sum(confusion_matrix[confusion_matrix_labels_rmap[None], :]) + extra_annotations_count = np.sum(confusion_matrix[:, confusion_matrix_labels_rmap[None]]) total_annotations_count = np.sum(confusion_matrix) ds_annotations_count = np.sum(ds_ann_counts) - ds_ann_counts[confusion_matrix_labels_rmap[None]] gt_annotations_count = np.sum(gt_ann_counts) - gt_ann_counts[confusion_matrix_labels_rmap[None]] From f1ffc3e02eba0ce67f2bca5bde473c0932c4b16c Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 1 May 2023 12:28:59 +0300 Subject: [PATCH 062/257] Refactor some code --- cvat/apps/dataset_manager/annotation.py | 34 +++++++++++++------------ cvat/apps/dataset_manager/bindings.py | 9 +++---- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/cvat/apps/dataset_manager/annotation.py b/cvat/apps/dataset_manager/annotation.py index 2fafd9189f4a..a25cc15044b6 100644 --- a/cvat/apps/dataset_manager/annotation.py +++ b/cvat/apps/dataset_manager/annotation.py @@ -161,9 +161,12 @@ def merge(self, data, start_frame, overlap, dimension): tracks = TrackManager(self.data.tracks, dimension) tracks.merge(data.tracks, start_frame, overlap, dimension) - def to_shapes(self, end_frame, dimension, *, + def to_shapes(self, + end_frame: int, + dimension: DimensionType, + *, included_frames: Optional[Sequence[int]] = None, - include_outside_frames: bool = False + include_outside: bool = False ): shapes = self.data.shapes tracks = TrackManager(self.data.tracks, dimension) @@ -172,7 +175,8 @@ def to_shapes(self, end_frame, dimension, *, shapes = [s for s in shapes if s["frame"] in included_frames] return shapes + tracks.to_shapes(end_frame, - included_frames=included_frames, include_outside_frames=include_outside_frames) + included_frames=included_frames, include_outside=include_outside + ) def to_tracks(self): tracks = self.data.tracks @@ -418,7 +422,7 @@ def __init__(self, objects, dimension): def to_shapes(self, end_frame: int, *, included_frames: Optional[Sequence[int]] = None, - include_outside_frames: bool = False, + include_outside: bool = False, ): shapes = [] for idx, track in enumerate(self.objects): @@ -429,12 +433,9 @@ def to_shapes(self, end_frame: int, *, 0, end_frame, self._dimension, - include_outside_frames=include_outside_frames, + include_outside=include_outside, included_frames=included_frames, ): - if included_frames is not None and shape["frame"] not in included_frames: - continue - shape["label_id"] = track["label_id"] shape["group"] = track["group"] shape["track_id"] = idx @@ -451,16 +452,16 @@ def to_shapes(self, end_frame: int, *, track_elements = TrackManager(track["elements"], self._dimension) element_shapes = track_elements.to_shapes(end_frame, included_frames=set(track_shapes.keys()) & (included_frames or []), - include_outside_frames=True # elements are controlled by the parent shape + include_outside=True # elements are controlled by the parent shape ) for shape in element_shapes: assert shape["frame"] in set(track_shapes.keys()) & (included_frames or []) track_shapes[shape["frame"]]["elements"].append(shape) - # TODO: think if the whole shape can be filtered out if all elements are outside - # and outside shapes are not required - if not include_outside_frames: + # The whole shape can be filtered out, if all its elements are outside, + # and outside shapes are not requested. + if not include_outside: track_shapes = { k: v for k, v in track_shapes.items() if any(not elem["outside"] for elem in v["elements"]) @@ -532,7 +533,8 @@ def _modify_unmached_object(self, obj, end_frame): @staticmethod def get_interpolated_shapes( track, start_frame, end_frame, dimension, *, - include_outside_frames=False, included_frames=None + included_frames: Optional[Sequence[int]] = None, + include_outside: bool = False, ): def my_deepcopy(v): if isinstance(v, dict): @@ -898,14 +900,14 @@ def propagate(shape, end_frame, *, included_frames=None): if attr["spec_id"] not in map(lambda el: el["spec_id"], shape["attributes"]): shape["attributes"].append(my_deepcopy(attr)) - if not prev_shape["outside"] or include_outside_frames: + if not prev_shape["outside"] or include_outside: shapes.extend(interpolate(prev_shape, shape)) shape["keyframe"] = True shapes.append(shape) prev_shape = shape - if prev_shape and (not prev_shape["outside"] or include_outside_frames): + if prev_shape and (not prev_shape["outside"] or include_outside): # When the latest keyframe of a track is less than the end_frame # and it is not outside, need to propagate shapes.extend(propagate(prev_shape, end_frame, included_frames=included_frames)) @@ -918,7 +920,7 @@ def propagate(shape, end_frame, *, included_frames=None): # https://github.com/openvinotoolkit/cvat/issues/2827 if track["frame"] <= shape["frame"] < end_frame - if not shape["outside"] or include_outside_frames + if not shape["outside"] or include_outside if included_frames is None or shape["frame"] in included_frames ] diff --git a/cvat/apps/dataset_manager/bindings.py b/cvat/apps/dataset_manager/bindings.py index dfbb551446ca..d60f5bd79069 100644 --- a/cvat/apps/dataset_manager/bindings.py +++ b/cvat/apps/dataset_manager/bindings.py @@ -382,7 +382,7 @@ def _export_label(label): type=label.type ) - def group_by_frame(self, include_empty=False): + def group_by_frame(self, include_empty: bool = False): frames = {} def get_frame(idx): frame_info = self._frame_info[idx] @@ -415,9 +415,8 @@ def get_frame(idx): anno_manager = AnnotationManager(self._annotation_ir) for shape in sorted( anno_manager.to_shapes(self.stop, self._annotation_ir.dimension, - # Also we skipped deleted and excluded frames here - included_frames=included_frames, - include_outside_frames=False + # Skip outside, deleted and excluded frames + included_frames=included_frames, include_outside=False ), key=lambda shape: shape.get("z_order", 0) ): @@ -438,7 +437,7 @@ def get_frame(idx): get_frame(shape['frame']).labels.update({label.id: label}) for tag in self._annotation_ir.tags: - if tag['frame'] not in self._frame_info or tag['frame'] in self._deleted_frames: + if tag['frame'] not in included_frames: continue get_frame(tag['frame']).tags.append(self._export_tag(tag)) From d5edfa21350378eff582870d26dd1083142912a1 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 1 May 2023 12:29:54 +0300 Subject: [PATCH 063/257] Extend shape type in annotation ids --- .../0076_alter_annotationid_type.py | 18 +++++++++++++++ cvat/apps/engine/models.py | 22 ++++++++++++++++++- cvat/apps/engine/quality_control.py | 22 ++++++++++++++----- cvat/schema.yml | 22 ++++++++++++++++++- 4 files changed, 76 insertions(+), 8 deletions(-) create mode 100644 cvat/apps/engine/migrations/0076_alter_annotationid_type.py diff --git a/cvat/apps/engine/migrations/0076_alter_annotationid_type.py b/cvat/apps/engine/migrations/0076_alter_annotationid_type.py new file mode 100644 index 000000000000..158e9bb6edd2 --- /dev/null +++ b/cvat/apps/engine/migrations/0076_alter_annotationid_type.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.18 on 2023-04-30 23:58 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('engine', '0075_alter_annotationconflict_type'), + ] + + operations = [ + migrations.AlterField( + model_name='annotationid', + name='type', + field=models.CharField(choices=[('tag', 'TAG'), ('track', 'TRACK'), ('rectangle', 'RECTANGLE'), ('polygon', 'POLYGON'), ('polyline', 'POLYLINE'), ('points', 'POINTS'), ('ellipse', 'ELLIPSE'), ('cuboid', 'CUBOID'), ('mask', 'MASK'), ('skeleton', 'SKELETON')], max_length=32), + ), + ] diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index f079eff3cad0..4aba45301f1b 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -1154,10 +1154,30 @@ class AnnotationConflict(models.Model): # return super().clean() +class AnnotationType(str, Enum): + TAG = 'tag' + TRACK = 'track' + RECTANGLE = 'rectangle' + POLYGON = 'polygon' + POLYLINE = 'polyline' + POINTS = 'points' + ELLIPSE = 'ellipse' + CUBOID = 'cuboid' + MASK = 'mask' + SKELETON = 'skeleton' + + def __str__(self) -> str: + return self.value + + @classmethod + def choices(cls): + return tuple((x.value, x.name) for x in cls) + + class AnnotationId(models.Model): conflict = models.ForeignKey(AnnotationConflict, on_delete=models.CASCADE, related_name='annotation_ids', blank=False) obj_id = models.PositiveIntegerField() job_id = models.PositiveIntegerField() - type = models.CharField(max_length=32, choices=ShapeType.choices()) + type = models.CharField(max_length=32, choices=AnnotationType.choices()) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index d1bed072259e..9861c6ee9a79 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -24,7 +24,7 @@ from cvat.apps.dataset_manager.util import bulk_create from cvat.apps.dataset_manager.formats.registry import dm_env from cvat.apps.engine import models -from cvat.apps.engine.models import AnnotationConflictType, ShapeType +from cvat.apps.engine.models import AnnotationConflictType, AnnotationType from cvat.apps.profiler import silk_profile from datumaro.util import dump_json, parse_json @@ -49,10 +49,10 @@ def to_dict(self) -> dict: class AnnotationId(_Serializable): obj_id: int job_id: int - type: ShapeType + type: AnnotationType def _value_serializer(self, t, attr, v): - if isinstance(v, ShapeType): + if isinstance(v, AnnotationType): return str(v) else: return super()._value_serializer(t, attr, v) @@ -62,7 +62,7 @@ def from_dict(cls, d): return cls( obj_id=d['obj_id'], job_id=d['job_id'], - type=ShapeType(d['type']), + type=AnnotationType(d['type']), ) @define(kw_only=True) @@ -398,8 +398,18 @@ def dm_item_id_to_frame_id(self, item_id: str) -> int: def dm_ann_to_ann_id(self, ann: dm.Annotation) -> AnnotationId: source_ann = self._annotation_memo.get_source_ann(ann) - ann_type = ShapeType(source_ann.type) - return AnnotationId(obj_id=source_ann.id, type=ann_type, job_id=self.job_id) + if 'track_id' in ann.attributes: + source_ann_id = ann.attributes["track_id"] + ann_type = 'track' + else: + if isinstance(source_ann, CommonData.LabeledShape): + ann_type = AnnotationType(source_ann.type) + elif isinstance(source_ann, CommonData.Tag): + ann_type = AnnotationType.TAG + + source_ann_id = source_ann.id + + return AnnotationId(obj_id=source_ann_id, type=ann_type, job_id=self.job_id) class _MemoizingAnnotationConverterFactory: diff --git a/cvat/schema.yml b/cvat/schema.yml index c050af53041f..e404dd871827 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -1180,6 +1180,11 @@ paths: [''id'', ''report_id'', ''frame'', ''type'', ''job_id'']' schema: type: string + - in: query + name: task_id + schema: + type: integer + description: A simple equality filter for task id - name: type in: query description: A simple equality filter for the type field @@ -1189,6 +1194,7 @@ paths: - missing_annotation - extra_annotation - mismatching_label + - low_overlap tags: - conflicts security: @@ -6639,6 +6645,7 @@ components: - missing_annotation - extra_annotation - mismatching_label + - low_overlap type: string AnnotationFileRequest: type: object @@ -6659,8 +6666,21 @@ components: readOnly: true type: allOf: - - $ref: '#/components/schemas/ShapeType' + - $ref: '#/components/schemas/AnnotationIdTypeEnum' readOnly: true + AnnotationIdTypeEnum: + enum: + - tag + - track + - rectangle + - polygon + - polyline + - points + - ellipse + - cuboid + - mask + - skeleton + type: string AnnotationsRead: oneOf: - $ref: '#/components/schemas/LabeledData' From b45751815cdf4cb218527b63ce50a924eea86159 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 1 May 2023 16:16:49 +0300 Subject: [PATCH 064/257] Fix job removal --- cvat/apps/engine/models.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index 4aba45301f1b..e63d9e5f83d6 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -545,6 +545,10 @@ def clean(self) -> None: return super().clean() + @cache_deleted + def delete(self, using=None, keep_parents=False): + super().delete(using, keep_parents) + class Meta: default_permissions = () @@ -661,6 +665,13 @@ def clean(self) -> None: return super().clean() + @cache_deleted + def delete(self, using=None, keep_parents=False): + if self.segment: + self.segment.delete(using=using, keep_parents=keep_parents) + + super().delete(using, keep_parents) + def make_dirs(self): job_path = self.get_dirname() if os.path.isdir(job_path): From 4ce4e7d0e4fe298becdd146912f2edf5d8bf20dd Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 1 May 2023 16:17:31 +0300 Subject: [PATCH 065/257] Fix interpolation for post end_frame fragment --- cvat/apps/dataset_manager/annotation.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/cvat/apps/dataset_manager/annotation.py b/cvat/apps/dataset_manager/annotation.py index a25cc15044b6..24a04d56c44f 100644 --- a/cvat/apps/dataset_manager/annotation.py +++ b/cvat/apps/dataset_manager/annotation.py @@ -878,18 +878,24 @@ def propagate(shape, end_frame, *, included_frames=None): curr_frame = shape["frame"] if prev_shape and end_frame <= curr_frame: # If we exceed the end_frame and there was a previous shape, - # we need to interpolate up to the next keyframe, + # we still need to interpolate up to the next keyframe, # but keep the results only up to the end_frame: # vvvvvvv # ---- | ------- | ----- | -----> # prev end cur kf interpolated = interpolate(prev_shape, shape) + interpolated.append(shape) for shape in sorted(interpolated, key=lambda shape: shape["frame"]): if shape["frame"] < end_frame: shapes.append(shape) else: break + + # Update the last added shape + shape["keyframe"] = True + prev_shape = shape + break # The track finishes here if prev_shape: From 166230697308c25ae97accf9c76a7731268b9d1b Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 1 May 2023 21:04:02 +0300 Subject: [PATCH 066/257] Add conflict id in responses --- cvat/apps/engine/serializers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index d28f0e80f2d4..904fa12bbaab 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -1917,7 +1917,7 @@ class AnnotationConflictSerializer(serializers.ModelSerializer): class Meta: model = models.AnnotationConflict - fields = ('frame', 'type', 'annotation_ids', 'report_id') + fields = ('id', 'frame', 'type', 'annotation_ids', 'report_id') read_only_fields = fields From fab0f8e34ab82cc690e9d537aa8fd87a85e06193 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 1 May 2023 21:39:14 +0300 Subject: [PATCH 067/257] Add simple validation on report saving --- cvat/apps/engine/quality_control.py | 76 ++++++++++++++++------------- 1 file changed, 43 insertions(+), 33 deletions(-) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index 9861c6ee9a79..8317ec455176 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -1376,60 +1376,70 @@ def _update_task_quality_metrics(cls, *, task_id: int): @classmethod def _save_reports(cls, *, task_report, job_reports) -> models.QualityReport: - db_task_report = models.QualityReport.objects.create( + # TODO: add full validation (e.g. ann id count for different types of conflicts) + + db_task_report = models.QualityReport( task=task_report['task'], target_last_updated=task_report['target_last_updated'], gt_last_updated=task_report['gt_last_updated'], data=task_report['data'], ) + db_task_report.full_clean() + db_task_report.save() + + db_job_reports = [] + for job_report in job_reports: + db_job_report = models.QualityReport( + parent=db_task_report, + job=job_report['job'], + target_last_updated=job_report['target_last_updated'], + gt_last_updated=job_report['gt_last_updated'], + data=job_report['data'], + ) + db_job_report.full_clean() + db_job_reports.append(db_job_report) db_job_reports = bulk_create( db_model=models.QualityReport, - objects=[ - models.QualityReport( - parent=db_task_report, - job=job_report['job'], - target_last_updated=job_report['target_last_updated'], - gt_last_updated=job_report['gt_last_updated'], - data=job_report['data'], - ) - for job_report in job_reports - ], + objects=db_job_reports, flt_param={} ) + db_conflicts = [] db_report_iter = itertools.chain([db_task_report], db_job_reports) report_iter = itertools.chain([task_report], job_reports) - db_conflicts = bulk_create( - db_model=models.AnnotationConflict, - objects=[ - models.AnnotationConflict( + for report, db_report in zip(report_iter, db_report_iter): + for conflict in report['conflicts']: + db_conflict = models.AnnotationConflict( report=db_report, type=conflict['type'], frame=conflict['frame_id'], ) - for db_report, report in zip(db_report_iter, report_iter) - for conflict in report['conflicts'] - ], + db_conflict.full_clean() + db_conflicts.append(db_conflict) + + db_conflicts = bulk_create( + db_model=models.AnnotationConflict, + objects=db_conflicts, flt_param={} ) - report_iter = itertools.chain([task_report], job_reports) + db_ann_ids = [] db_conflicts_iter = iter(db_conflicts) - bulk_create( + for report in itertools.chain([task_report], job_reports): + for conflict, db_conflict in zip(report['conflicts'], db_conflicts_iter): + for ann_id in conflict['annotation_ids']: + db_ann_id = models.AnnotationId( + conflict=db_conflict, + job_id=ann_id['job_id'], + obj_id=ann_id['obj_id'], + type=ann_id['type'], + ) + db_ann_id.full_clean() + db_ann_ids.append(db_ann_id) + + db_ann_ids = bulk_create( db_model=models.AnnotationId, - objects=[ - models.AnnotationId( - conflict=db_conflict, - job_id=ann_id['job_id'], - obj_id=ann_id['obj_id'], - type=ann_id['type'], - ) - for report in report_iter - for db_conflict, conflict in zip(db_conflicts_iter, report['conflicts']) - for ann_id in conflict['annotation_ids'] - ], + objects=db_ann_ids, flt_param={} ) - - # TODO: add validation From d9d53eb459fa4ccdc67bea915bf55d81f93b0403 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 1 May 2023 21:40:15 +0300 Subject: [PATCH 068/257] Fix db problems --- cvat/apps/dataset_manager/task.py | 2 +- cvat/apps/engine/models.py | 2 +- cvat/apps/engine/views.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cvat/apps/dataset_manager/task.py b/cvat/apps/dataset_manager/task.py index dcd372b72f3a..8dcf2c8bc9fd 100644 --- a/cvat/apps/dataset_manager/task.py +++ b/cvat/apps/dataset_manager/task.py @@ -110,7 +110,7 @@ def __init__(self, pk, *, is_prefetched=False, queryset=None): ).select_for_update().get(id=pk) else: try: - self.db_job: models.Job = next(job for job in queryset if job.pk == pk) + self.db_job: models.Job = next(job for job in queryset if job.pk == int(pk)) except StopIteration as ex: raise models.Job.DoesNotExist from ex diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index e63d9e5f83d6..66e36651e87a 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -1187,7 +1187,7 @@ def choices(cls): class AnnotationId(models.Model): conflict = models.ForeignKey(AnnotationConflict, - on_delete=models.CASCADE, related_name='annotation_ids', blank=False) + on_delete=models.CASCADE, related_name='annotation_ids') obj_id = models.PositiveIntegerField() job_id = models.PositiveIntegerField() diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index 2b3566b567d9..65de466fc9bf 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -2238,7 +2238,7 @@ def actions(self, request, pk): }), ) class ConflictsViewSet(viewsets.GenericViewSet, mixins.ListModelMixin): - queryset = AnnotationConflict.objects.prefetch_related('report').all() + queryset = AnnotationConflict.objects.prefetch_related('report', 'annotation_ids').all() # NOTE: This filter works incorrectly for this view # it requires task__organization OR project__organization check. From 7f33edbdbf8c7921528661017de5716dd10c45ad Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 1 May 2023 21:41:16 +0300 Subject: [PATCH 069/257] Add server ids for tracks --- cvat/apps/dataset_manager/annotation.py | 13 ++++--- cvat/apps/dataset_manager/bindings.py | 48 +++++++++++++++++++------ cvat/apps/engine/quality_control.py | 8 +++-- 3 files changed, 51 insertions(+), 18 deletions(-) diff --git a/cvat/apps/dataset_manager/annotation.py b/cvat/apps/dataset_manager/annotation.py index 24a04d56c44f..f879b9a769f9 100644 --- a/cvat/apps/dataset_manager/annotation.py +++ b/cvat/apps/dataset_manager/annotation.py @@ -166,7 +166,8 @@ def to_shapes(self, dimension: DimensionType, *, included_frames: Optional[Sequence[int]] = None, - include_outside: bool = False + include_outside: bool = False, + use_server_track_ids: bool = False ): shapes = self.data.shapes tracks = TrackManager(self.data.tracks, dimension) @@ -175,7 +176,8 @@ def to_shapes(self, shapes = [s for s in shapes if s["frame"] in included_frames] return shapes + tracks.to_shapes(end_frame, - included_frames=included_frames, include_outside=include_outside + included_frames=included_frames, include_outside=include_outside, + use_server_track_ids=use_server_track_ids ) def to_tracks(self): @@ -423,9 +425,11 @@ def __init__(self, objects, dimension): def to_shapes(self, end_frame: int, *, included_frames: Optional[Sequence[int]] = None, include_outside: bool = False, + use_server_track_ids: bool = False ): shapes = [] for idx, track in enumerate(self.objects): + track_id = track["id"] if use_server_track_ids else idx track_shapes = {} for shape in TrackManager.get_interpolated_shapes( @@ -438,7 +442,7 @@ def to_shapes(self, end_frame: int, *, ): shape["label_id"] = track["label_id"] shape["group"] = track["group"] - shape["track_id"] = idx + shape["track_id"] = track_id shape["attributes"] += track["attributes"] shape["elements"] = [] @@ -452,7 +456,8 @@ def to_shapes(self, end_frame: int, *, track_elements = TrackManager(track["elements"], self._dimension) element_shapes = track_elements.to_shapes(end_frame, included_frames=set(track_shapes.keys()) & (included_frames or []), - include_outside=True # elements are controlled by the parent shape + include_outside=True, # elements are controlled by the parent shape + use_server_track_ids=use_server_track_ids ) for shape in element_shapes: diff --git a/cvat/apps/dataset_manager/bindings.py b/cvat/apps/dataset_manager/bindings.py index d60f5bd79069..07ff1fcc8163 100644 --- a/cvat/apps/dataset_manager/bindings.py +++ b/cvat/apps/dataset_manager/bindings.py @@ -195,7 +195,14 @@ class CommonData(InstanceLabelData): 'Frame', 'idx, id, frame, name, width, height, labeled_shapes, tags, shapes, labels') Label = namedtuple('Label', 'id, name, color, type') - def __init__(self, annotation_ir, db_task, host='', create_callback=None) -> None: + def __init__(self, + annotation_ir, + db_task, + *, + host='', + create_callback=None, + use_server_track_ids: bool = False + ) -> None: self._dimension = annotation_ir.dimension self._annotation_ir = annotation_ir self._host = host @@ -205,6 +212,7 @@ def __init__(self, annotation_ir, db_task, host='', create_callback=None) -> Non self._frame_mapping = {} self._frame_step = db_task.data.get_frame_step() self._db_data = db_task.data + self._use_server_track_ids = use_server_track_ids super().__init__(db_task) @@ -358,7 +366,7 @@ def _export_track(self, track, idx): track, 0, self.stop, self._annotation_ir.dimension) for tracked_shape in tracked_shapes: tracked_shape["attributes"] += track["attributes"] - tracked_shape["track_id"] = idx + tracked_shape["track_id"] = track["track_id"] if self._use_server_track_ids else idx tracked_shape["group"] = track["group"] tracked_shape["source"] = track["source"] tracked_shape["label_id"] = track["label_id"] @@ -416,7 +424,9 @@ def get_frame(idx): for shape in sorted( anno_manager.to_shapes(self.stop, self._annotation_ir.dimension, # Skip outside, deleted and excluded frames - included_frames=included_frames, include_outside=False + included_frames=included_frames, + include_outside=False, + use_server_track_ids=self._use_server_track_ids ), key=lambda shape: shape.get("z_order", 0) ): @@ -616,11 +626,11 @@ def match_frame_fuzzy(self, path): class JobData(CommonData): META_FIELD = "job" - def __init__(self, annotation_ir, db_job, host='', create_callback=None): + def __init__(self, annotation_ir, db_job, **kwargs): self._db_job = db_job self._db_task = db_job.segment.task - super().__init__(annotation_ir, self._db_task, host, create_callback) + super().__init__(annotation_ir, self._db_task, **kwargs) def _init_meta(self): db_segment = self._db_job.segment @@ -712,9 +722,9 @@ def db_instance(self): class TaskData(CommonData): META_FIELD = "task" - def __init__(self, annotation_ir, db_task, host='', create_callback=None): + def __init__(self, annotation_ir, db_task, **kwargs): self._db_task = db_task - super().__init__(annotation_ir, db_task, host, create_callback) + super().__init__(annotation_ir, db_task, **kwargs) @staticmethod def meta_for_task(db_task, host, label_mapping=None): @@ -860,7 +870,15 @@ class Frame: task_id: int = attrib(default=None) subset: str = attrib(default=None) - def __init__(self, annotation_irs: Mapping[str, AnnotationIR], db_project: Project, host: str = '', task_annotations: Mapping[int, Any] = None, project_annotation=None): + def __init__(self, + annotation_irs: Mapping[str, AnnotationIR], + db_project: Project, + host: str = '', + task_annotations: Mapping[int, Any] = None, + project_annotation=None, + *, + use_server_track_ids: bool = False + ): self._annotation_irs = annotation_irs self._db_project = db_project self._task_annotations = task_annotations @@ -873,6 +891,7 @@ def __init__(self, annotation_irs: Mapping[str, AnnotationIR], db_project: Proje self._frame_mapping: Dict[Tuple[str, str], Tuple[int, int]] = dict() self._frame_steps: Dict[int, int] = {} self.new_tasks: Set[int] = set() + self._use_server_track_ids = use_server_track_ids InstanceLabelData.__init__(self, db_project) self.init() @@ -1060,7 +1079,7 @@ def _export_track(self, track: dict, task_id: int, task_size: int, idx: int): ) for tracked_shape in tracked_shapes: tracked_shape["attributes"] += track["attributes"] - tracked_shape["track_id"] = idx + tracked_shape["track_id"] = track["track_id"] if self._use_server_track_ids else idx tracked_shape["group"] = track["group"] tracked_shape["source"] = track["source"] tracked_shape["label_id"] = track["label_id"] @@ -1103,10 +1122,17 @@ def get_frame(task_id: int, idx: int) -> ProjectData.Frame: for task in self._db_tasks.values(): anno_manager = AnnotationManager(self._annotation_irs[task.id]) - for shape in sorted(anno_manager.to_shapes(task.data.size, self._annotation_irs[task.id].dimension), - key=lambda shape: shape.get("z_order", 0)): + for shape in sorted( + anno_manager.to_shapes( + task.data.size, self._annotation_irs[task.id].dimension, + include_outside=False, + use_server_track_ids=self._use_server_track_ids + ), + key=lambda shape: shape.get("z_order", 0) + ): if (task.id, shape['frame']) not in self._frame_info or (task.id, shape['frame']) in self._deleted_frames: continue + if 'track_id' in shape: if shape['outside']: continue diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index 8317ec455176..4ae0cad7656d 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -382,7 +382,8 @@ def __init__(self, job_id: int, *, queryset=None) -> None: self.job_annotation.init_from_db() self.job_data = JobData( annotation_ir=self.job_annotation.ir_data, - db_job=self.job_annotation.db_job + db_job=self.job_annotation.db_job, + use_server_track_ids=True ) self._annotation_memo = _MemoizingAnnotationConverterFactory() @@ -390,7 +391,8 @@ def __init__(self, job_id: int, *, queryset=None) -> None: @cached_property def dm_dataset(self): extractor = GetCVATDataExtractor(self.job_data, - convert_annotations=self._annotation_memo) + convert_annotations=self._annotation_memo + ) return dm.Dataset.from_extractors(extractor, env=dm_env) def dm_item_id_to_frame_id(self, item_id: str) -> int: @@ -399,7 +401,7 @@ def dm_item_id_to_frame_id(self, item_id: str) -> int: def dm_ann_to_ann_id(self, ann: dm.Annotation) -> AnnotationId: source_ann = self._annotation_memo.get_source_ann(ann) if 'track_id' in ann.attributes: - source_ann_id = ann.attributes["track_id"] + source_ann_id = source_ann.track_id ann_type = 'track' else: if isinstance(source_ann, CommonData.LabeledShape): From 40620e94679048d36f62a35cf4743385f80dac71 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 1 May 2023 21:41:38 +0300 Subject: [PATCH 070/257] Fix track import --- cvat/apps/dataset_manager/annotation.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cvat/apps/dataset_manager/annotation.py b/cvat/apps/dataset_manager/annotation.py index f879b9a769f9..18baf968a9f8 100644 --- a/cvat/apps/dataset_manager/annotation.py +++ b/cvat/apps/dataset_manager/annotation.py @@ -480,6 +480,9 @@ def _get_objects_by_frame(objects, start_frame): # Just for unification. All tracks are assigned on the same frame objects_by_frame = {0: []} for obj in objects: + if not obj["shapes"]: + continue + shape = obj["shapes"][-1] # optimization for old tracks if shape["frame"] >= start_frame or not shape["outside"]: objects_by_frame[0].append(obj) @@ -502,9 +505,11 @@ def _calc_objects_similarity(obj0, obj1, start_frame, overlap, dimension): end_frame = start_frame + overlap obj0_shapes = TrackManager.get_interpolated_shapes(obj0, start_frame, end_frame, dimension) obj1_shapes = TrackManager.get_interpolated_shapes(obj1, start_frame, end_frame, dimension) + if not obj0_shapes or not obj1_shapes: + return 0 + obj0_shapes_by_frame = {shape["frame"]:shape for shape in obj0_shapes} obj1_shapes_by_frame = {shape["frame"]:shape for shape in obj1_shapes} - assert obj0_shapes_by_frame and obj1_shapes_by_frame count, error = 0, 0 for frame in range(start_frame, end_frame): From ba5a926c5e9b2bf739de4185807a69a127e52de6 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 1 May 2023 21:46:13 +0300 Subject: [PATCH 071/257] Fix incorrect computation for task progress --- cvat/apps/engine/views.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index 65de466fc9bf..a8217423b1f7 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -21,7 +21,6 @@ from django.db import IntegrityError from django.http import HttpResponse, HttpResponseNotFound, HttpResponseBadRequest from django.utils import timezone -import django.db.models as dj_models from django.db.models import Count, Q from drf_spectacular.types import OpenApiTypes @@ -670,9 +669,10 @@ class TaskViewSet(viewsets.GenericViewSet, mixins.ListModelMixin, 'label_set__sublabels__attributespec_set', 'project__label_set__sublabels__attributespec_set' ).annotate( - completed_jobs_count=dj_models.Count( + completed_jobs_count=Count( 'segment__job', - filter=dj_models.Q(segment__job__state=models.StateChoice.COMPLETED.value) + filter=Q(segment__job__state=models.StateChoice.COMPLETED.value), + distinct=True ), task_labels_count=Count('label', filter=Q(label__parent__isnull=True), distinct=True), From 385f5f152c75e2c4fb765d417b62d3019a7731c6 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 2 May 2023 00:24:57 +0300 Subject: [PATCH 072/257] Remove validation for better performance --- cvat/apps/engine/quality_control.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index 4ae0cad7656d..fb075099f420 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -1378,7 +1378,7 @@ def _update_task_quality_metrics(cls, *, task_id: int): @classmethod def _save_reports(cls, *, task_report, job_reports) -> models.QualityReport: - # TODO: add full validation (e.g. ann id count for different types of conflicts) + # TODO: add validation (e.g. ann id count for different types of conflicts) db_task_report = models.QualityReport( task=task_report['task'], @@ -1386,7 +1386,6 @@ def _save_reports(cls, *, task_report, job_reports) -> models.QualityReport: gt_last_updated=task_report['gt_last_updated'], data=task_report['data'], ) - db_task_report.full_clean() db_task_report.save() db_job_reports = [] @@ -1398,7 +1397,6 @@ def _save_reports(cls, *, task_report, job_reports) -> models.QualityReport: gt_last_updated=job_report['gt_last_updated'], data=job_report['data'], ) - db_job_report.full_clean() db_job_reports.append(db_job_report) db_job_reports = bulk_create( @@ -1417,7 +1415,6 @@ def _save_reports(cls, *, task_report, job_reports) -> models.QualityReport: type=conflict['type'], frame=conflict['frame_id'], ) - db_conflict.full_clean() db_conflicts.append(db_conflict) db_conflicts = bulk_create( @@ -1437,7 +1434,6 @@ def _save_reports(cls, *, task_report, job_reports) -> models.QualityReport: obj_id=ann_id['obj_id'], type=ann_id['type'], ) - db_ann_id.full_clean() db_ann_ids.append(db_ann_id) db_ann_ids = bulk_create( From c04bb9733301314889ad242da73ddc33f2b1b0fb Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 2 May 2023 00:35:15 +0300 Subject: [PATCH 073/257] Optimize performance, load only intersection frames --- cvat/apps/dataset_manager/annotation.py | 20 +++++------------ cvat/apps/dataset_manager/bindings.py | 30 +++++++++++++++++++------ cvat/apps/dataset_manager/util.py | 15 ++++++++++++- cvat/apps/engine/quality_control.py | 9 +++++--- 4 files changed, 48 insertions(+), 26 deletions(-) diff --git a/cvat/apps/dataset_manager/annotation.py b/cvat/apps/dataset_manager/annotation.py index 18baf968a9f8..dd429f36fb5c 100644 --- a/cvat/apps/dataset_manager/annotation.py +++ b/cvat/apps/dataset_manager/annotation.py @@ -14,6 +14,7 @@ from cvat.apps.engine.models import ShapeType, DimensionType from cvat.apps.engine.serializers import LabeledDataSerializer +from cvat.apps.dataset_manager.util import deepcopy_simple class AnnotationIR: @@ -461,7 +462,6 @@ def to_shapes(self, end_frame: int, *, ) for shape in element_shapes: - assert shape["frame"] in set(track_shapes.keys()) & (included_frames or []) track_shapes[shape["frame"]]["elements"].append(shape) # The whole shape can be filtered out, if all its elements are outside, @@ -469,7 +469,7 @@ def to_shapes(self, end_frame: int, *, if not include_outside: track_shapes = { k: v for k, v in track_shapes.items() - if any(not elem["outside"] for elem in v["elements"]) + if not v['elements'] or not all(elem["outside"] for elem in v["elements"]) } shapes.extend(track_shapes.values()) @@ -546,19 +546,9 @@ def get_interpolated_shapes( included_frames: Optional[Sequence[int]] = None, include_outside: bool = False, ): - def my_deepcopy(v): - if isinstance(v, dict): - return {k: my_deepcopy(vv) for k, vv in v.items()} - elif isinstance(v, (list, tuple, set)): - return type(v)(my_deepcopy(vv) for vv in v) - elif isinstance(v, (int, float, str, bool, type(None))): - return v - else: - return deepcopy(v) - def copy_shape(source, frame, points=None, rotation=None): copied = source.copy() - copied["attributes"] = my_deepcopy(source["attributes"]) + copied["attributes"] = deepcopy_simple(source["attributes"]) copied["keyframe"] = False copied["frame"] = frame @@ -673,7 +663,7 @@ def match_left_right(left_curve, right_curve): def match_right_left(left_curve, right_curve, left_right_matching): matched_right_points = list(chain.from_iterable(left_right_matching.values())) unmatched_right_points = filter(lambda x: x not in matched_right_points, range(len(right_curve))) - updated_matching = my_deepcopy(left_right_matching) + updated_matching = deepcopy_simple(left_right_matching) for right_point in unmatched_right_points: left_point = find_nearest_pair(right_curve[right_point], left_curve) @@ -914,7 +904,7 @@ def propagate(shape, end_frame, *, included_frames=None): # Propagate attributes for attr in prev_shape["attributes"]: if attr["spec_id"] not in map(lambda el: el["spec_id"], shape["attributes"]): - shape["attributes"].append(my_deepcopy(attr)) + shape["attributes"].append(deepcopy_simple(attr)) if not prev_shape["outside"] or include_outside: shapes.extend(interpolate(prev_shape, shape)) diff --git a/cvat/apps/dataset_manager/bindings.py b/cvat/apps/dataset_manager/bindings.py index 07ff1fcc8163..8c47216f115b 100644 --- a/cvat/apps/dataset_manager/bindings.py +++ b/cvat/apps/dataset_manager/bindings.py @@ -13,7 +13,7 @@ from pathlib import Path from types import SimpleNamespace from typing import (Any, Callable, DefaultDict, Dict, Iterable, List, Literal, Mapping, - NamedTuple, OrderedDict, Set, Tuple, Union) + NamedTuple, Optional, OrderedDict, Sequence, Set, Tuple, Union) import datumaro as dm import defusedxml.ElementTree as ET @@ -201,7 +201,8 @@ def __init__(self, *, host='', create_callback=None, - use_server_track_ids: bool = False + use_server_track_ids: bool = False, + included_frames: Optional[Sequence[int]] = None ) -> None: self._dimension = annotation_ir.dimension self._annotation_ir = annotation_ir @@ -213,6 +214,7 @@ def __init__(self, self._frame_step = db_task.data.get_frame_step() self._db_data = db_task.data self._use_server_track_ids = use_server_track_ids + self._required_frames = included_frames super().__init__(db_task) @@ -410,11 +412,7 @@ def get_frame(idx): ) return frames[frame] - included_frames = set( - i for i in self.rel_range - if not self._is_frame_deleted(i) - and not self._is_frame_excluded(i) - ) + included_frames = self.get_included_frames() if include_empty: for idx in sorted(set(self._frame_info) & included_frames): @@ -459,12 +457,23 @@ def shapes(self): if not self._is_frame_deleted(shape["frame"]): yield self._export_labeled_shape(shape) + def get_included_frames(self): + return set( + i for i in self.rel_range + if not self._is_frame_deleted(i) + and not self._is_frame_excluded(i) + and self._is_frame_required(i) + ) + def _is_frame_deleted(self, frame): return frame in self._deleted_frames def _is_frame_excluded(self, frame): return frame in self._excluded_frames + def _is_frame_required(self, frame): + return self._required_frames is None or frame in self._required_frames + @property def tracks(self): for idx, track in enumerate(self._annotation_ir.tracks): @@ -685,6 +694,13 @@ def _init_frame_info(self): if self.abs_frame_id(frame) not in self.db_instance.segment.frame_set ) + if self._required_frames: + abs_range = self.abs_range + self._required_frames = set( + self.abs_frame_id(frame) for frame in self._required_frames + if frame in abs_range + ) + def __len__(self): segment = self._db_job.segment return segment.stop_frame - segment.start_frame + 1 diff --git a/cvat/apps/dataset_manager/util.py b/cvat/apps/dataset_manager/util.py index 0a6cec4b5425..7359defb92dd 100644 --- a/cvat/apps/dataset_manager/util.py +++ b/cvat/apps/dataset_manager/util.py @@ -3,9 +3,10 @@ # # SPDX-License-Identifier: MIT +from copy import deepcopy +from typing import Sequence import inspect import os, os.path as osp -from typing import Sequence import zipfile from django.conf import settings @@ -48,3 +49,15 @@ def add_prefetch_fields(queryset: QuerySet, fields: Sequence[str]) -> QuerySet: queryset = queryset.prefetch_related(field) return queryset + +def deepcopy_simple(v): + # Default deepcopy is very slow + + if isinstance(v, dict): + return {k: deepcopy_simple(vv) for k, vv in v.items()} + elif isinstance(v, (list, tuple, set)): + return type(v)(deepcopy_simple(vv) for vv in v) + elif isinstance(v, (int, float, str, bool)) or v is None: + return v + else: + return deepcopy(v) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index fb075099f420..1244f73afb3f 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -376,14 +376,15 @@ def add_prefetch_info(cls, queryset): return JobAnnotation.add_prefetch_info(queryset) @transaction.atomic - def __init__(self, job_id: int, *, queryset=None) -> None: + def __init__(self, job_id: int, *, queryset=None, included_frames=None) -> None: self.job_id = job_id self.job_annotation = JobAnnotation(job_id, queryset=queryset) self.job_annotation.init_from_db() self.job_data = JobData( annotation_ir=self.job_annotation.ir_data, db_job=self.job_annotation.db_job, - use_server_track_ids=True + use_server_track_ids=True, + included_frames=included_frames, ) self._annotation_memo = _MemoizingAnnotationConverterFactory() @@ -1266,6 +1267,7 @@ def _update_task_quality_metrics(cls, *, task_id: int): # because the task and jobs can be changed after the beginning, # which will lead to inconsistent results gt_job_data_provider = JobDataProvider(gt_job.id, queryset=job_queryset) + gt_job_frames = gt_job_data_provider.job_data.get_included_frames() jobs: List[models.Job] = [ j @@ -1273,7 +1275,8 @@ def _update_task_quality_metrics(cls, *, task_id: int): if j.type == models.JobType.NORMAL ] job_data_providers = { - job.id: JobDataProvider(job.id, queryset=job_queryset) + job.id: JobDataProvider(job.id, queryset=job_queryset, + included_frames=gt_job_frames) for job in jobs } From 9cc35bbe98ef0b1bfc24a37eb21a93c8016120f0 Mon Sep 17 00:00:00 2001 From: klakhov Date: Tue, 2 May 2023 11:59:49 +0300 Subject: [PATCH 074/257] truncated numbers --- .../src/components/task-analytics-page/quality/job-list.tsx | 2 +- .../components/task-analytics-page/quality/mean-quality.tsx | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx b/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx index 9b3dc4278adf..dc3fbd06bf35 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx @@ -184,7 +184,7 @@ function JobListComponent(props: Props): JSX.Element { color: getQualityColor(meanAccuracy), }} > - {Number.isNaN(meanAccuracy) ? 'N/A' : `${meanAccuracy}%`} + {!Number.isFinite(meanAccuracy) ? 'N/A' : `${meanAccuracy.toFixed(1)}%`} ); }, diff --git a/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx b/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx index aad8a4117a75..980e1d8666df 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx @@ -30,10 +30,10 @@ function MeanQuality(props: Props): JSX.Element {
{taskReport?.createdDate ? moment(taskReport?.createdDate).fromNow() : ''} From 726026263243cd782a8d079b36732c225953918f Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 2 May 2023 22:35:54 +0300 Subject: [PATCH 075/257] Add mask-polygon comparisons, remove whole dataset stats from report --- cvat/apps/engine/quality_control.py | 147 ++++++++++++++++++---------- 1 file changed, 98 insertions(+), 49 deletions(-) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index 1244f73afb3f..03f0c361849f 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -5,7 +5,7 @@ from __future__ import annotations from copy import deepcopy from datetime import timedelta -from functools import cached_property +from functools import cached_property, partial import itertools from typing import Any, Callable, Dict, Hashable, List, Optional, Sequence, Union, cast @@ -342,7 +342,7 @@ def from_dict(cls, d): class ComparisonReport(_Serializable): parameters: ComparisonReportParameters comparison_summary: ComparisonReportComparisonSummary - dataset_summary: ComparisonReportDatasetSummary + # dataset_summary: ComparisonReportDatasetSummary frame_results: Dict[int, ComparisonReportFrameSummary] @property @@ -354,7 +354,8 @@ def from_dict(cls, d: Dict[str, Any]) -> ComparisonReport: return cls( parameters=ComparisonReportParameters.from_dict(d['parameters']), comparison_summary=ComparisonReportComparisonSummary.from_dict(d['comparison_summary']), - dataset_summary=ComparisonReportDatasetSummary.from_dict(d['dataset_summary']), + # TODO: Not computed because of optimizations. Need to think if it is really needed + # dataset_summary=ComparisonReportDatasetSummary.from_dict(d['dataset_summary']), frame_results={ int(k): ComparisonReportFrameSummary.from_dict(v) for k, v in d['frame_results'].items() @@ -477,7 +478,7 @@ def _OKS(a, b, sigma=None, bbox=None, scale=None, visibility=None): if not sigma: sigma = 0.1 else: - assert len(sigma) == len(p1) + assert isinstance(sigma, (int, float, np.number)) or len(sigma) == len(p1) if not scale: if bbox is None: @@ -513,6 +514,33 @@ def _arr_div(a_arr: np.ndarray, b_arr: np.ndarray) -> np.ndarray: divisor[b_arr == 0] = 1 return a_arr / divisor +def _segment_iou(a, b, *, img_h, img_w): + """ + Generic IoU computation with masks and polygons. + Returns -1 if no intersection, [0; 1] otherwise + """ + # Comparing to the dm version, this fixes the comparison for segments, + # as the images size are required for correct decoding. + # Boxes are not included, because they are not needed + + from pycocotools import mask as mask_utils + + def _to_rle(ann): + if ann.type == dm.AnnotationType.polygon: + return mask_utils.frPyObjects([ann.points], img_h, img_w) + elif isinstance(ann, dm.RleMask): + return [ann.rle] + elif ann.type == dm.AnnotationType.mask: + return [mask_utils.encode(ann.image)] + else: + raise TypeError("Unexpected arguments: %s, %s" % (a, b)) + + a = _to_rle(a) + b = _to_rle(b) + + # Note that mask_utils.iou expects (dt, gt). Check this if the 3rd param is True + return float(mask_utils.iou(b, a, [0])) + class _DistanceComparator(dm.ops.DistanceComparator): def __init__( self, @@ -528,6 +556,10 @@ def __init__( self.included_ann_types = included_ann_types self.return_distances = return_distances + # % of the shape area, halved + # https://github.com/cocodataset/cocoapi/blob/8c9bcc3cf640524c4c20a9c40e89cb6a2f2fa0e9/PythonAPI/pycocotools/cocoeval.py#L523 + self.oks_sigma = 0.09 + def _instance_bbox(self, instance_anns: Sequence[dm.Annotation]): return dm.ops.max_bbox( a.get_bbox() if isinstance(a, dm.Skeleton) else a @@ -554,9 +586,7 @@ def _match_ann_type(self, t, *args): elif t == dm.AnnotationType.bbox: return self.match_boxes(*args) elif t == dm.AnnotationType.polygon: - return self.match_polygons(*args) - elif t == dm.AnnotationType.mask: - return self.match_masks(*args) + return self.match_segmentations(*args) elif t == dm.AnnotationType.points: return self.match_points(*args) elif t == dm.AnnotationType.skeleton: @@ -568,10 +598,14 @@ def _match_ann_type(self, t, *args): return None def _match_segments(self, t, item_a, item_b, *, - distance: Callable = dm.ops.segment_iou + distance: Callable = dm.ops.segment_iou, + a_objs: Optional[Sequence[dm.Annotation]] = None, + b_objs: Optional[Sequence[dm.Annotation]] = None, ): - a_objs = self._get_ann_type(t, item_a) - b_objs = self._get_ann_type(t, item_b) + if a_objs is None: + a_objs = self._get_ann_type(t, item_a) + if b_objs is None: + b_objs = self._get_ann_type(t, item_b) if not a_objs and not b_objs: return [], [], [], [] @@ -589,11 +623,16 @@ def _match_segments(self, t, item_a, item_b, *, def match_boxes(self, item_a, item_b): return self._match_segments(dm.AnnotationType.bbox, item_a, item_b) - def match_polygons(self, item_a, item_b): - return self._match_segments(dm.AnnotationType.polygon, item_a, item_b) + def match_segmentations(self, item_a, item_b): + def _get_anns(item): + return self._get_ann_type(dm.AnnotationType.polygon, item) + \ + self._get_ann_type(dm.AnnotationType.mask, item) - def match_masks(self, item_a, item_b): - return self._match_segments(dm.AnnotationType.mask, item_a, item_b) + img_h, img_w = item_a.image.size + return self._match_segments(dm.AnnotationType.polygon, item_a, item_b, + a_objs=_get_anns(item_a), b_objs=_get_anns(item_b), + distance=partial(_segment_iou, img_h=img_h, img_w=img_w) + ) def match_lines(self, item_a, item_b): matcher = dm.ops.LineMatcher() @@ -614,7 +653,7 @@ def match_points(self, item_a, item_b): for ann in instance_group: instance_map[id(ann)] = [instance_group, instance_bbox] - matcher = _PointsMatcher(instance_map=instance_map) + matcher = _PointsMatcher(instance_map=instance_map, sigma=self.oks_sigma) distance = matcher.distance @@ -711,7 +750,7 @@ def match_skeletons(self, item_a, item_b): for ann in instance_group: instance_map[id(ann)] = [instance_group, instance_bbox] - matcher = _PointsMatcher(instance_map=instance_map) + matcher = _PointsMatcher(instance_map=instance_map, sigma=self.oks_sigma) distance = matcher.distance @@ -778,8 +817,7 @@ def __init__(self, categories: dm.CategoriesInfo): ] self.included_ann_types = [ dm.AnnotationType.bbox, - dm.AnnotationType.mask, - dm.AnnotationType.points, + dm.AnnotationType.points, # masks are compared together with polygons dm.AnnotationType.polygon, dm.AnnotationType.polyline, dm.AnnotationType.skeleton, @@ -817,7 +855,21 @@ def match_attrs(self, ann_a: dm.Annotation, ann_b: dm.Annotation): return matches, mismatches, a_extra, b_extra def match_annotations(self, item_a, item_b): - return self._annotation_comparator.match_annotations(item_a, item_b) + per_type_results = self._annotation_comparator.match_annotations(item_a, item_b) + + merged_results = [[], [], [], [], {}] + for shape_type in self.included_ann_types: + for merged_field, field in zip(merged_results, per_type_results[shape_type][:-1]): + merged_field.extend(field) + + merged_results[-1].update(per_type_results[shape_type][-1]) + + return merged_results + + def get_distance(self, + pairwise_distances, gt_ann: dm.Annotation, ds_ann: dm.Annotation + ) -> Optional[float]: + return pairwise_distances.get((id(gt_ann), id(ds_ann))) class _DatasetComparator: @@ -833,8 +885,12 @@ def __init__(self, self._frame_results: Dict[int, ComparisonReportFrameSummary] = {} self.comparator = _Comparator(self._gt_dataset.categories()) + + # iou_threshold is used for distinction between matched / unmatched shapes + # overlap_threshold is used for distinction between strong / weak (low_overlap) matches self.comparator._annotation_comparator.iou_threshold = 0.4 self.overlap_threshold = 0.8 + self.included_frames = gt_data_provider.job_data._db_job.segment.frame_set def _dm_item_to_frame_id(self, item: dm.DatasetItem) -> int: @@ -876,17 +932,10 @@ def _generate_frame_annotation_conflicts( ) -> List[AnnotationConflict]: conflicts = [] - merged_results = [[], [], [], [], {}] - for shape_type in self.comparator.included_ann_types: - for merged_field, field in zip(merged_results, frame_results[shape_type][:-1]): - merged_field.extend(field) - - merged_results[-1].update(frame_results[shape_type][-1]) - - matches, mismatches, gt_unmatched, ds_unmatched, pairwise_distances = merged_results + matches, mismatches, gt_unmatched, ds_unmatched, pairwise_distances = frame_results def _get_overlap(gt_ann: dm.Annotation, ds_ann: dm.Annotation) -> Optional[float]: - return pairwise_distances.get((id(gt_ann), id(ds_ann))) + return self.comparator.get_distance(pairwise_distances, gt_ann, ds_ann) _matched_shapes = set( id(shape) @@ -969,7 +1018,7 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): _matched_shapes.add(matched_ann_id) resulting_distances.append(overlap) - mean_iou = np.mean(resulting_distances) + mean_iou = np.mean(resulting_distances) if resulting_distances else 0 valid_shapes_count = len(matches) + len(mismatches) missing_shapes_count = len(gt_unmatched) @@ -1061,17 +1110,17 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): def generate_report(self) -> ComparisonReport: self._find_gt_conflicts() - full_ds_comparable_shapes_count = 0 - full_ds_comparable_attributes_count = 0 - for item in self._ds_dataset: - for ann in item.annotations: - if ann.type not in self.comparator.included_ann_types: - continue + # full_ds_comparable_shapes_count = 0 + # full_ds_comparable_attributes_count = 0 + # for item in self._ds_dataset: + # for ann in item.annotations: + # if ann.type not in self.comparator.included_ann_types: + # continue - full_ds_comparable_attributes_count += len( - set(ann.attributes).difference(self.comparator.ignored_attrs) - ) - full_ds_comparable_shapes_count += 1 + # full_ds_comparable_attributes_count += len( + # set(ann.attributes).difference(self.comparator.ignored_attrs) + # ) + # full_ds_comparable_shapes_count += 1 # accumulate stats intersection_frames = [] @@ -1175,10 +1224,10 @@ def generate_report(self) -> ComparisonReport: ), ), - dataset_summary=ComparisonReportDatasetSummary( - frame_count=len(self._ds_dataset), - shape_count=full_ds_comparable_shapes_count, - ), + # dataset_summary=ComparisonReportDatasetSummary( + # frame_count=len(self._ds_dataset), + # shape_count=full_ds_comparable_shapes_count, + # ), frame_results=self._frame_results ) @@ -1295,14 +1344,14 @@ def _update_task_quality_metrics(cls, *, task_id: int): # compute combined summary for job reports. task_intersection_frames = set() task_conflicts = [] - task_shapes_count = 0 + # task_shapes_count = 0 task_annotations_summary = None task_ann_components_summary = None task_mean_shape_ious = [] for r in job_comparison_reports.values(): task_intersection_frames.update(r.comparison_summary.frames) task_conflicts.extend(r.conflicts) - task_shapes_count += r.dataset_summary.shape_count + # task_shapes_count += r.dataset_summary.shape_count if task_annotations_summary: task_annotations_summary.accumulate(r.comparison_summary.annotations) @@ -1331,10 +1380,10 @@ def _update_task_quality_metrics(cls, *, task_id: int): annotation_components=task_ann_components_summary, ), - dataset_summary=ComparisonReportDatasetSummary( - frame_count=task.data.size, - shape_count=task_shapes_count - ), + # dataset_summary=ComparisonReportDatasetSummary( + # frame_count=task.data.size, + # shape_count=task_shapes_count + # ), frame_results={}, ) From 27237694606f0e42d1cc42c44b230a8098e35518 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 3 May 2023 13:24:33 +0300 Subject: [PATCH 076/257] Fix frame matching --- cvat/apps/engine/quality_control.py | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index 03f0c361849f..bf6e153aadef 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -20,7 +20,7 @@ from cvat.apps.dataset_manager.task import JobAnnotation from cvat.apps.dataset_manager.bindings import (CommonData, CvatToDmAnnotationConverter, - GetCVATDataExtractor, JobData) + GetCVATDataExtractor, JobData, match_dm_item) from cvat.apps.dataset_manager.util import bulk_create from cvat.apps.dataset_manager.formats.registry import dm_env from cvat.apps.engine import models @@ -397,8 +397,8 @@ def dm_dataset(self): ) return dm.Dataset.from_extractors(extractor, env=dm_env) - def dm_item_id_to_frame_id(self, item_id: str) -> int: - return self.job_data.match_frame(item_id) + def dm_item_id_to_frame_id(self, item: dm.DatasetItem) -> int: + return match_dm_item(item, self.job_data) def dm_ann_to_ann_id(self, ann: dm.Annotation) -> AnnotationId: source_ann = self._annotation_memo.get_source_ann(ann) @@ -894,7 +894,7 @@ def __init__(self, self.included_frames = gt_data_provider.job_data._db_job.segment.frame_set def _dm_item_to_frame_id(self, item: dm.DatasetItem) -> int: - return self._gt_data_provider.dm_item_id_to_frame_id(item.id) + return self._gt_data_provider.dm_item_id_to_frame_id(item) def _dm_ann_to_ann_id(self, ann: dm.Annotation, dataset: dm.Dataset): if dataset is self._ds_dataset: @@ -1125,8 +1125,22 @@ def generate_report(self) -> ComparisonReport: # accumulate stats intersection_frames = [] conflict_count = 0 - annotations = None - annotation_components = None + annotations = ComparisonReportAnnotationsSummary( + valid_count=0, missing_count=0, + extra_count=0, total_count=0, + ds_count=0, gt_count=0, + confusion_matrix=None + ) + annotation_components = ComparisonReportAnnotationComponentsSummary( + shape=ComparisonReportAnnotationShapeSummary( + valid_count=0, missing_count=0, + extra_count=0, total_count=0, + ds_count=0, gt_count=0, mean_iou=0 + ), + label=ComparisonReportAnnotationLabelSummary( + valid_count=0, invalid_count=0, total_count=0, + ), + ) mean_ious = [] confusion_matrices = [] for frame_id, frame_result in self._frame_results.items(): From dce66736b5bfcecfed04c2bcca4df4acea5ded4a Mon Sep 17 00:00:00 2001 From: klakhov Date: Wed, 3 May 2023 15:43:10 +0300 Subject: [PATCH 077/257] tried to fix conflicts for masks/skeletons --- cvat-canvas/src/typescript/canvas.ts | 7 ++- cvat-canvas/src/typescript/canvasModel.ts | 6 +++ cvat-canvas/src/typescript/canvasView.ts | 32 +++++++++--- .../canvas/views/canvas2d/canvas-wrapper.tsx | 12 +++-- .../review/conflicts-aggregator.tsx | 49 ++++++++++--------- 5 files changed, 73 insertions(+), 33 deletions(-) diff --git a/cvat-canvas/src/typescript/canvas.ts b/cvat-canvas/src/typescript/canvas.ts index 9b4c6c60d11a..5e07159826d5 100644 --- a/cvat-canvas/src/typescript/canvas.ts +++ b/cvat-canvas/src/typescript/canvas.ts @@ -32,7 +32,8 @@ interface Canvas { html(): HTMLDivElement; setup(frameData: any, objectStates: any[], zLayer?: number): void; setupIssueRegions(issueRegions: Record): void; - activate(clientID: number | null, attributeID?: number): void; + setupConflictRegions(clientID: number): number[]; + activate(clientID: number | null, attributeID?: number): number[]; rotate(rotationAngle: number): void; focus(clientID: number, padding?: number): void; fit(): void; @@ -84,6 +85,10 @@ class CanvasImpl implements Canvas { this.model.setupIssueRegions(issueRegions); } + public setupConflictsRegions(clientID: number): number[] { + return this.view.setupConflictsRegions(clientID); + } + public fitCanvas(): void { this.model.fitCanvas(this.view.html().clientWidth, this.view.html().clientHeight); } diff --git a/cvat-canvas/src/typescript/canvasModel.ts b/cvat-canvas/src/typescript/canvasModel.ts index 5f271f88b4d6..cbf8e77fcbec 100644 --- a/cvat-canvas/src/typescript/canvasModel.ts +++ b/cvat-canvas/src/typescript/canvasModel.ts @@ -68,6 +68,7 @@ export interface Configuration { textContent?: string; undefinedAttrValue?: string; showProjections?: boolean; + showConflicts?: boolean; forceDisableEditing?: boolean; intelligentPolygonCrop?: boolean; forceFrameUpdate?: boolean; @@ -347,6 +348,7 @@ export class CanvasModelImpl extends MasterImpl implements CanvasModel { autoborders: false, displayAllText: false, showProjections: false, + showConflicts: false, forceDisableEditing: false, intelligentPolygonCrop: false, forceFrameUpdate: false, @@ -826,6 +828,10 @@ export class CanvasModelImpl extends MasterImpl implements CanvasModel { this.data.configuration.colorBy = configuration.colorBy; } + if (typeof configuration.showConflicts === 'boolean') { + this.data.configuration.showConflicts = configuration.showConflicts; + } + if (typeof configuration.CSSImageFilter === 'string') { this.data.configuration.CSSImageFilter = configuration.CSSImageFilter; } diff --git a/cvat-canvas/src/typescript/canvasView.ts b/cvat-canvas/src/typescript/canvasView.ts index 0184297e7c39..0e9ddc4dd9cb 100644 --- a/cvat-canvas/src/typescript/canvasView.ts +++ b/cvat-canvas/src/typescript/canvasView.ts @@ -63,6 +63,7 @@ import { export interface CanvasView { html(): HTMLDivElement; + setupConflictsRegions(clientID: number): number[]; } export class CanvasViewImpl implements CanvasView, Listener { @@ -1308,6 +1309,11 @@ export class CanvasViewImpl implements CanvasView, Listener { (shapeView as any).instance .fill({ color: fill, opacity: fillOpacity }) .stroke({ color: stroke }); + if (configuration.showConflicts && objectState?.conflict) { + shapeView.classList.add('cvat_canvas_conflicted'); + } else if (!configuration.showConflicts && objectState?.conflict) { + shapeView.classList.remove('cvat_canvas_conflicted'); + } } if (drawnState.elements) { @@ -1319,7 +1325,8 @@ export class CanvasViewImpl implements CanvasView, Listener { const withUpdatingShapeViews = configuration.shapeOpacity !== this.configuration.shapeOpacity || configuration.selectedShapeOpacity !== this.configuration.selectedShapeOpacity || configuration.outlinedBorders !== this.configuration.outlinedBorders || - configuration.colorBy !== this.configuration.colorBy; + configuration.colorBy !== this.configuration.colorBy || + configuration.showConflicts !== this.configuration.showConflicts; if (configuration.displayAllText && !this.configuration.displayAllText) { for (const i in this.drawnStates) { @@ -1709,6 +1716,17 @@ export class CanvasViewImpl implements CanvasView, Listener { return this.canvas; } + public setupConflictsRegions(SShape: any): number[] { + let cx = 0; + let cy = 0; + const shape = this.svgShapes[SShape.clientID]; + if (!shape) return []; + const box = (shape.node as any).getBBox(); + cx = box.x + (box.x + box.width - box.x) / 2; + cy = box.y + (box.y + box.height - box.y) / 2; + return [cx, cy]; + } + private redrawBitmap(): void { const width = +this.background.style.width.slice(0, -2); const height = +this.background.style.height.slice(0, -2); @@ -2709,7 +2727,7 @@ export class CanvasViewImpl implements CanvasView, Listener { rect.addClass('cvat_canvas_ground_truth'); } - if (state.conflict) { + if (state.conflict && this.configuration.showConflicts) { rect.addClass('cvat_canvas_conflicted'); } @@ -2741,7 +2759,7 @@ export class CanvasViewImpl implements CanvasView, Listener { polygon.addClass('cvat_canvas_ground_truth'); } - if (state.conflict) { + if (state.conflict && this.configuration.showConflicts) { polygon.addClass('cvat_canvas_conflicted'); } @@ -2773,7 +2791,7 @@ export class CanvasViewImpl implements CanvasView, Listener { polyline.addClass('cvat_canvas_ground_truth'); } - if (state.conflict) { + if (state.conflict && this.configuration.showConflicts) { polyline.addClass('cvat_canvas_conflicted'); } @@ -2806,7 +2824,7 @@ export class CanvasViewImpl implements CanvasView, Listener { cube.addClass('cvat_canvas_ground_truth'); } - if (state.conflict) { + if (state.conflict && this.configuration.showConflicts) { cube.addClass('cvat_canvas_conflicted'); } @@ -3388,7 +3406,7 @@ export class CanvasViewImpl implements CanvasView, Listener { rect.addClass('cvat_canvas_ground_truth'); } - if (state.conflict) { + if (state.conflict && this.configuration.showConflicts) { rect.addClass('cvat_canvas_conflicted'); } @@ -3422,7 +3440,7 @@ export class CanvasViewImpl implements CanvasView, Listener { group.addClass('cvat_canvas_ground_truth'); } - if (state.conflict) { + if (state.conflict && this.configuration.showConflicts) { group.addClass('cvat_canvas_conflicted'); } diff --git a/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx b/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx index 1efd0bdd020c..bc6800e47013 100644 --- a/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx +++ b/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx @@ -109,6 +109,7 @@ interface StateToProps { keyMap: KeyMap; showTagsOnFrame: boolean; conflicts: QualityConflict[]; + showGroundTruth: boolean; } interface DispatchToProps { @@ -187,7 +188,7 @@ function mapStateToProps(state: CombinedState): StateToProps { textContent, }, shapes: { - opacity, colorBy, selectedOpacity, outlined, outlineColor, showBitmap, showProjections, + opacity, colorBy, selectedOpacity, outlined, outlineColor, showBitmap, showProjections, showGroundTruth, }, }, shortcuts: { keyMap }, @@ -245,6 +246,7 @@ function mapStateToProps(state: CombinedState): StateToProps { activeControl === ActiveControl.EDIT, statesSources, conflicts, + showGroundTruth, }; } @@ -367,6 +369,7 @@ class CanvasWrapperComponent extends React.PureComponent { colorBy, outlined, outlineColor, + showGroundTruth, } = this.props; const { canvasInstance } = this.props as { canvasInstance: Canvas }; @@ -381,6 +384,7 @@ class CanvasWrapperComponent extends React.PureComponent { displayAllText: showObjectsTextAlways, autoborders: automaticBordering, showProjections, + showConflicts: showGroundTruth, intelligentPolygonCrop, selectedShapeOpacity: selectedOpacity, controlPointsSize, @@ -431,6 +435,7 @@ class CanvasWrapperComponent extends React.PureComponent { colorBy, onFetchAnnotation, statesSources, + showGroundTruth, } = this.props; const { canvasInstance } = this.props as { canvasInstance: Canvas }; @@ -448,7 +453,8 @@ class CanvasWrapperComponent extends React.PureComponent { prevProps.textContent !== textContent || prevProps.colorBy !== colorBy || prevProps.outlineColor !== outlineColor || - prevProps.outlined !== outlined + prevProps.outlined !== outlined || + prevProps.showGroundTruth !== showGroundTruth ) { canvasInstance.configure({ undefinedAttrValue: config.UNDEFINED_ATTRIBUTE_VALUE, @@ -465,6 +471,7 @@ class CanvasWrapperComponent extends React.PureComponent { controlPointsSize, textPosition, textContent, + showConflicts: showGroundTruth, }); } @@ -877,7 +884,6 @@ class CanvasWrapperComponent extends React.PureComponent { curZLayer, annotations, frameData, canvasInstance, statesSources, conflicts, workspace, } = this.props; - console.log(annotations, conflicts); if (frameData !== null && canvasInstance) { const filteredAnnotations = annotations.filter((e) => e.objectType !== ObjectType.TAG); const shownAnnotations = filteredAnnotations.filter((e) => !e.jobID || statesSources.includes(e.jobID)); diff --git a/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx b/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx index 718d3080ce2e..75d87106e3c3 100644 --- a/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx +++ b/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx @@ -10,13 +10,13 @@ import { CombinedState } from 'reducers'; import { Canvas } from 'cvat-canvas/src/typescript/canvas'; import { AnnotationConflict, ObjectState, QualityConflict } from 'cvat-core-wrapper'; -import { translateToCanvas } from 'cvat-canvas/src/typescript/shared'; import ConflictLabel from './conflict-label'; export default function ConflictAggregatorComponent(): JSX.Element | null { - const qualityConflicts = useSelector((state: CombinedState): any[] => state.review.conflicts); - const objectStates = useSelector((state: CombinedState): any[] => state.annotation.annotations.states); - const currentFrame = useSelector((state: CombinedState): number => state.annotation.player.frame.number); + const qualityConflicts = useSelector((state: CombinedState) => state.review.conflicts); + const objectStates = useSelector((state: CombinedState) => state.annotation.annotations.states); + const currentFrame = useSelector((state: CombinedState) => state.annotation.player.frame.number); + const showConflicts = useSelector((state: CombinedState) => state.settings.shapes.showGroundTruth); const frameQualityConflicts = qualityConflicts.filter( (conflict: QualityConflict) => conflict.frame === currentFrame, ); @@ -50,23 +50,28 @@ export default function ConflictAggregatorComponent(): JSX.Element | null { }, [canvasInstance]); const [mapping, setMapping] = useState([]); useEffect(() => { - if (geometry) { - const newMapping = conflicts.map((c: AnnotationConflict) => { - const state = objectStates.find((s: ObjectState) => s.jobID === c.jobId && s.serverID === c.objId); - if (state) { - const points = [state.points[0], state.points[1]]; - const [x, y] = translateToCanvas(geometry?.offset, points); - return { - description: c.conflictType, - x, - y, - }; - } - return []; - }).filter((el) => !Array.isArray(el)); - setMapping(newMapping); - } - }, [geometry, objectStates]); + setTimeout(() => { + if (geometry && showConflicts) { + const newMapping = conflicts.map((c: AnnotationConflict) => { + const state = objectStates.find((s: ObjectState) => s.jobID === c.jobId && s.serverID === c.objId); + if (state && canvasInstance) { + const points = canvasInstance.setupConflictsRegions(state); + if (points) { + return { + description: c.conflictType, + x: points[0], + y: points[1], + }; + } + } + return []; + }).filter((el) => !Array.isArray(el)); + setMapping(newMapping); + } else { + setMapping([]); + } + }); + }, [geometry, objectStates, showConflicts, currentFrame]); if (!(canvasInstance instanceof Canvas) || !canvasIsReady || !geometry) { return null; @@ -75,7 +80,7 @@ export default function ConflictAggregatorComponent(): JSX.Element | null { for (const conflict of mapping) { conflictLabels.push( Date: Thu, 4 May 2023 20:09:48 +0300 Subject: [PATCH 078/257] Implement correct line comparisons --- .../0077_alter_annotationconflict_type.py | 18 ++ cvat/apps/engine/models.py | 1 + cvat/apps/engine/quality_control.py | 215 ++++++++++++++++-- 3 files changed, 216 insertions(+), 18 deletions(-) create mode 100644 cvat/apps/engine/migrations/0077_alter_annotationconflict_type.py diff --git a/cvat/apps/engine/migrations/0077_alter_annotationconflict_type.py b/cvat/apps/engine/migrations/0077_alter_annotationconflict_type.py new file mode 100644 index 000000000000..7714551cf6db --- /dev/null +++ b/cvat/apps/engine/migrations/0077_alter_annotationconflict_type.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.18 on 2023-05-04 16:34 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('engine', '0076_alter_annotationid_type'), + ] + + operations = [ + migrations.AlterField( + model_name='annotationconflict', + name='type', + field=models.CharField(choices=[('missing_annotation', 'MISSING_ANNOTATION'), ('extra_annotation', 'EXTRA_ANNOTATION'), ('mismatching_label', 'MISMATCHING_LABEL'), ('low_overlap', 'LOW_OVERLAP'), ('mismatching_direction', 'MISMATCHING_DIRECTION')], max_length=32), + ), + ] diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index 66e36651e87a..5bcb14ce07ae 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -1041,6 +1041,7 @@ class AnnotationConflictType(str, Enum): EXTRA_ANNOTATION = 'extra_annotation' MISMATCHING_LABEL = 'mismatching_label' LOW_OVERLAP = 'low_overlap' + MISMATCHING_DIRECTION = 'mismatching_direction' def __str__(self) -> str: return self.value diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index bf6e153aadef..dd179127901d 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -8,7 +8,7 @@ from functools import cached_property, partial import itertools -from typing import Any, Callable, Dict, Hashable, List, Optional, Sequence, Union, cast +from typing import Any, Callable, Dict, Hashable, List, Optional, Sequence, Tuple, Union, cast from attrs import asdict, define, has as is_attrs_type import datumaro as dm @@ -459,7 +459,7 @@ def _convert_shape(self, shape, *, index): return converted -def _OKS(a, b, sigma=None, bbox=None, scale=None, visibility=None): +def _OKS(a, b, sigma=0.1, bbox=None, scale=None, visibility=None): """ Object Keypoint Similarity metric. https://cocodataset.org/#keypoints-eval @@ -475,11 +475,6 @@ def _OKS(a, b, sigma=None, bbox=None, scale=None, visibility=None): else: visibility = np.asarray(visibility, dtype=float) - if not sigma: - sigma = 0.1 - else: - assert isinstance(sigma, (int, float, np.number)) or len(sigma) == len(p1) - if not scale: if bbox is None: bbox = dm.ops.mean_bbox([a, b]) @@ -541,6 +536,148 @@ def _to_rle(ann): # Note that mask_utils.iou expects (dt, gt). Check this if the 3rd param is True return float(mask_utils.iou(b, a, [0])) +@define(kw_only=True) +class _LineMatcher(dm.ops.LineMatcher): + torso_r: float = 0.25 + oriented: bool = False + scale: float = None + _approx_cache = None + + def distance(self, gt_ann, ds_ann): + # Approximate lines to the same number of points for pointwise comparison + a, b = self.get_approximated_lines(gt_ann, ds_ann) + + # Compare the direct and, optionally, the reverse variants + similarities = [] + candidates = [b] + if not self.oriented: + candidates.append(b[::-1]) + + for candidate_b in candidates: + similarities.append(self.compare(a, candidate_b)) + + return max(similarities) + + def compare(self, a: np.ndarray, b: np.ndarray) -> float: + dists = np.linalg.norm(a - b, axis=1) + + scale = self.scale + if scale is None: + segment_dists = np.linalg.norm(a[1:] - a[:-1], axis=1) + scale = np.sum(segment_dists) ** 2 + + # Compute Gaussian for approximated lines similarly to OKS + return np.sum( + np.exp(-(dists**2) / (2 * scale * (2 * self.torso_r) ** 2)) + ) / len(a) + + def get_approximated_lines(self, gt_ann: dm.PolyLine, ds_ann: dm.PolyLine): + cached_data = None + if self._approx_cache is not None: + for is_key_reversed, key in { + False: (id(gt_ann), id(ds_ann)), True: (id(ds_ann), id(gt_ann)) + }.items(): + cached_data = self._approx_cache.get() + if not cached_data: + break + + if cached_data: + if is_key_reversed: + key = key[::-1] + a, b = key + + if cached_data is None: + a, b = self.approximate_points( + np.array(gt_ann.points).reshape((-1, 2)), + np.array(ds_ann.points).reshape((-1, 2)) + ) + + if self._approx_cache is not None: + # Can't cache independently, because the approximation result + # depends on both lines + self._approx_cache[(id(gt_ann), id(ds_ann))] = (a, b) + + return a, b + + @classmethod + def approximate_points(cls, a: np.ndarray, b: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: + """ + Creates 2 polylines with the same numbers of points, + the points are placed on the original lines with the same step. + The step for each point is determined as minimal to the next original + point on one of the curves. + A simpler, but slower version could be just approximate each curve to + some big number of points. The advantage of this algo is that it keeps + corners and original points untouched, while adding intermediate points. + """ + a_segment_count = len(a) - 1 + b_segment_count = len(b) - 1 + + a_segment_lengths = list(np.linalg.norm(a[1:] - a[:-1], axis=1)) + a_segment_end_dists = [0] + for l in a_segment_lengths: + a_segment_end_dists.append(a_segment_end_dists[-1] + l) + a_segment_end_dists.pop(0) + a_segment_end_dists.append(a_segment_end_dists[-1]) # duplicate for simpler code + + b_segment_lengths = list(np.linalg.norm(b[1:] - b[:-1], axis=1)) + b_segment_end_dists = [0] + for l in b_segment_lengths: + b_segment_end_dists.append(b_segment_end_dists[-1] + l) + b_segment_end_dists.pop(0) + b_segment_end_dists.append(b_segment_end_dists[-1]) # duplicate for simpler code + + a_length = a_segment_end_dists[-1] + b_length = b_segment_end_dists[-1] + + new_points_count = len(a) + len(b) - 1 + a_new_points = np.empty((new_points_count, 2)) + b_new_points = np.empty((new_points_count, 2)) + a_new_points[0] = a[0] + b_new_points[0] = b[0] + + a_segment_idx = 0 + b_segment_idx = 0 + while a_segment_idx < a_segment_count or b_segment_idx < b_segment_count: + # The algorithm is similar to merge sort + + cur_point_idx = a_segment_idx + b_segment_idx + + a_segment_end_pos = a_segment_end_dists[a_segment_idx] / (a_length or 1) + b_segment_end_pos = b_segment_end_dists[b_segment_idx] / (b_length or 1) + if a_segment_idx < a_segment_count and a_segment_end_pos <= b_segment_end_pos: + if b_segment_idx < b_segment_count: + # advance b in a position in the current segment + r = (a_segment_end_pos * b_length - ( + b_segment_end_dists[b_segment_idx] - b_segment_lengths[b_segment_idx] + )) / (b_segment_lengths[b_segment_idx] or 1) + b_new_points[cur_point_idx + 1] = \ + b[b_segment_idx] * (1 - r) + b[1 + b_segment_idx] * r + + # advance a to the end of this segment + a_new_points[cur_point_idx + 1] = a[1 + a_segment_idx] + + a_segment_idx += 1 + + elif b_segment_idx < b_segment_count: + if a_segment_idx < a_segment_count: + # advance a in a position in the current segment + r = (b_segment_end_pos * a_length - ( + a_segment_end_dists[a_segment_idx] - a_segment_lengths[a_segment_idx] + )) / (a_segment_lengths[a_segment_idx] or 1) + a_new_points[cur_point_idx + 1] = \ + a[a_segment_idx] * (1 - r) + a[1 + a_segment_idx] * r + + # advance b to the end of this segment + b_new_points[cur_point_idx + 1] = b[1 + b_segment_idx] + + b_segment_idx += 1 + + else: + assert False + + return a_new_points, b_new_points + class _DistanceComparator(dm.ops.DistanceComparator): def __init__( self, @@ -556,10 +693,17 @@ def __init__( self.included_ann_types = included_ann_types self.return_distances = return_distances - # % of the shape area, halved + # % of the shape area + # https://cocodataset.org/#keypoints-eval # https://github.com/cocodataset/cocoapi/blob/8c9bcc3cf640524c4c20a9c40e89cb6a2f2fa0e9/PythonAPI/pycocotools/cocoeval.py#L523 self.oks_sigma = 0.09 + self.oriented_lines = False + + # % of the line length + # Here we use a % of image size in pixels, using the image size as the scale + self.line_torso_radius = 0.01 + def _instance_bbox(self, instance_anns: Sequence[dm.Annotation]): return dm.ops.max_bbox( a.get_bbox() if isinstance(a, dm.Skeleton) else a @@ -635,7 +779,8 @@ def _get_anns(item): ) def match_lines(self, item_a, item_b): - matcher = dm.ops.LineMatcher() + matcher = _LineMatcher(oriented=self.oriented_lines, torso_r=self.line_torso_radius, + scale=np.prod(item_a.image.size)) return self._match_segments(dm.AnnotationType.polyline, item_a, item_b, distance=matcher.distance) @@ -823,7 +968,8 @@ def __init__(self, categories: dm.CategoriesInfo): dm.AnnotationType.skeleton, ] self._annotation_comparator = _DistanceComparator( - categories, included_ann_types=self.included_ann_types, return_distances=True, + categories, included_ann_types=self.included_ann_types, + return_distances=True ) def match_attrs(self, ann_a: dm.Annotation, ann_b: dm.Annotation): @@ -891,6 +1037,9 @@ def __init__(self, self.comparator._annotation_comparator.iou_threshold = 0.4 self.overlap_threshold = 0.8 + # Indicates that polylines have direction + self.oriented_lines = True + self.included_frames = gt_data_provider.job_data._db_job.segment.frame_set def _dm_item_to_frame_id(self, item: dm.DatasetItem) -> int: @@ -925,16 +1074,17 @@ def _process_frame(self, ds_item, gt_item): frame_results = self.comparator.match_annotations(gt_item, ds_item) self._frame_results.setdefault(frame_id, {}) - self._generate_frame_annotation_conflicts(frame_id, frame_results) + self._generate_frame_annotation_conflicts(frame_id, frame_results, + gt_item=gt_item, ds_item=ds_item) def _generate_frame_annotation_conflicts( - self, frame_id: str, frame_results, + self, frame_id: str, frame_results, *, gt_item: dm.DatasetItem, ds_item: dm.DatasetItem ) -> List[AnnotationConflict]: conflicts = [] matches, mismatches, gt_unmatched, ds_unmatched, pairwise_distances = frame_results - def _get_overlap(gt_ann: dm.Annotation, ds_ann: dm.Annotation) -> Optional[float]: + def _get_similarity(gt_ann: dm.Annotation, ds_ann: dm.Annotation) -> Optional[float]: return self.comparator.get_distance(pairwise_distances, gt_ann, ds_ann) _matched_shapes = set( @@ -962,8 +1112,8 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): return matched_ann, distance for gt_ann, ds_ann in list(matches + mismatches): - overlap = _get_overlap(gt_ann, ds_ann) - if overlap and overlap < self.overlap_threshold: + similarity = _get_similarity(gt_ann, ds_ann) + if similarity and similarity < self.overlap_threshold: conflicts.append(AnnotationConflict( frame_id=frame_id, type=AnnotationConflictType.LOW_OVERLAP, @@ -1008,18 +1158,47 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): ) resulting_distances = [ - _get_overlap(gt_ann, ds_ann) + _get_similarity(gt_ann, ds_ann) for gt_ann, ds_ann in itertools.chain(matches, mismatches) ] for unmatched_ann in itertools.chain(gt_unmatched, ds_unmatched): - matched_ann_id, overlap = _find_closest_unmatched_shape(unmatched_ann) + matched_ann_id, similarity = _find_closest_unmatched_shape(unmatched_ann) if matched_ann_id is not None: _matched_shapes.add(matched_ann_id) - resulting_distances.append(overlap) + resulting_distances.append(similarity) mean_iou = np.mean(resulting_distances) if resulting_distances else 0 + if self.oriented_lines and dm.AnnotationType.polyline in self.comparator.included_ann_types: + # Check line directions + line_matcher = _LineMatcher( + torso_r=self.comparator._annotation_comparator.line_torso_radius, + oriented=False, + scale=np.prod(gt_item.image.size) + ) + + for gt_ann, ds_ann in zip(gt_item.annotations, ds_item.annotations): + if gt_ann.type != ds_ann.type or gt_ann.type != dm.AnnotationType.polyline: + continue + + non_oriented_distance = _get_similarity(gt_ann, ds_ann) + if not non_oriented_distance: + continue + + oriented_distance = line_matcher.distance(gt_ann, ds_ann) + if oriented_distance < non_oriented_distance: + conflicts.append( + AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.MISMATCHING_DIRECTION, + annotation_ids=[ + self._dm_ann_to_ann_id(ds_ann, self._ds_dataset), + self._dm_ann_to_ann_id(gt_ann, self._gt_dataset), + ] + ) + ) + valid_shapes_count = len(matches) + len(mismatches) missing_shapes_count = len(gt_unmatched) extra_shapes_count = len(ds_unmatched) From 6965e16e3841a36ed4067eb2ed07a962015b8706 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 4 May 2023 21:27:09 +0300 Subject: [PATCH 079/257] Add early exit --- cvat/apps/engine/quality_control.py | 46 ++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 14 deletions(-) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index dd179127901d..5a49bd175262 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -541,11 +541,28 @@ class _LineMatcher(dm.ops.LineMatcher): torso_r: float = 0.25 oriented: bool = False scale: float = None + zero_distance_threshold: float = 0.01 _approx_cache = None - def distance(self, gt_ann, ds_ann): - # Approximate lines to the same number of points for pointwise comparison - a, b = self.get_approximated_lines(gt_ann, ds_ann) + def distance(self, gt_ann: dm.PolyLine, ds_ann: dm.PolyLine): + cached_data = self._load_from_cache(gt_ann, ds_ann) + if cached_data: + a, b = cached_data + else: + # Check distances of the very coarse estimates for the curves + def _get_bbox_points(bbox): + x, y, w, h = bbox + return np.array([ (x, y), (x, y + h), (x + w, y), (x + w, y + h) ]) + + gt_bbox = _get_bbox_points(gt_ann.get_bbox()) + ds_bbox = _get_bbox_points(ds_ann.get_bbox()) + if self._compare_lines(gt_bbox, ds_bbox) < self.zero_distance_threshold: + return 0 + + if cached_data is None: + # Approximate lines to the same number of points for pointwise comparison + a, b = self._get_approximated_lines(gt_ann, ds_ann) + self._save_in_cache(gt_ann, ds_ann, (a, b)) # Compare the direct and, optionally, the reverse variants similarities = [] @@ -554,11 +571,11 @@ def distance(self, gt_ann, ds_ann): candidates.append(b[::-1]) for candidate_b in candidates: - similarities.append(self.compare(a, candidate_b)) + similarities.append(self._compare_lines(a, candidate_b)) return max(similarities) - def compare(self, a: np.ndarray, b: np.ndarray) -> float: + def _compare_lines(self, a: np.ndarray, b: np.ndarray) -> float: dists = np.linalg.norm(a - b, axis=1) scale = self.scale @@ -571,7 +588,7 @@ def compare(self, a: np.ndarray, b: np.ndarray) -> float: np.exp(-(dists**2) / (2 * scale * (2 * self.torso_r) ** 2)) ) / len(a) - def get_approximated_lines(self, gt_ann: dm.PolyLine, ds_ann: dm.PolyLine): + def _load_from_cache(self, gt_ann: dm.PolyLine, ds_ann: dm.PolyLine): cached_data = None if self._approx_cache is not None: for is_key_reversed, key in { @@ -584,20 +601,21 @@ def get_approximated_lines(self, gt_ann: dm.PolyLine, ds_ann: dm.PolyLine): if cached_data: if is_key_reversed: key = key[::-1] - a, b = key + cached_data = cached_data[::-1] - if cached_data is None: - a, b = self.approximate_points( - np.array(gt_ann.points).reshape((-1, 2)), - np.array(ds_ann.points).reshape((-1, 2)) - ) + return cached_data + def _save_in_cache(self, gt_ann: dm.PolyLine, ds_ann: dm.PolyLine, cached_data): if self._approx_cache is not None: # Can't cache independently, because the approximation result # depends on both lines - self._approx_cache[(id(gt_ann), id(ds_ann))] = (a, b) + self._approx_cache[(id(gt_ann), id(ds_ann))] = cached_data - return a, b + def _get_approximated_lines(self, gt_ann: dm.PolyLine, ds_ann: dm.PolyLine): + return self.approximate_points( + np.array(gt_ann.points).reshape((-1, 2)), + np.array(ds_ann.points).reshape((-1, 2)) + ) @classmethod def approximate_points(cls, a: np.ndarray, b: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: From 15fe2ff281a7c343302fd89541a27e526010f63a Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 5 May 2023 02:06:42 +0300 Subject: [PATCH 080/257] Optimizations, stability improvements --- cvat/apps/engine/quality_control.py | 114 +++++++++++----------------- 1 file changed, 43 insertions(+), 71 deletions(-) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index 5a49bd175262..56f09ad8ae3f 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -541,28 +541,31 @@ class _LineMatcher(dm.ops.LineMatcher): torso_r: float = 0.25 oriented: bool = False scale: float = None - zero_distance_threshold: float = 0.01 - _approx_cache = None def distance(self, gt_ann: dm.PolyLine, ds_ann: dm.PolyLine): - cached_data = self._load_from_cache(gt_ann, ds_ann) - if cached_data: - a, b = cached_data - else: - # Check distances of the very coarse estimates for the curves - def _get_bbox_points(bbox): - x, y, w, h = bbox - return np.array([ (x, y), (x, y + h), (x + w, y), (x + w, y + h) ]) - - gt_bbox = _get_bbox_points(gt_ann.get_bbox()) - ds_bbox = _get_bbox_points(ds_ann.get_bbox()) - if self._compare_lines(gt_bbox, ds_bbox) < self.zero_distance_threshold: - return 0 + # Check distances of the very coarse estimates for the curves + def _get_bbox_circle(ann: dm.PolyLine): + xs = ann.points[0::2] + ys = ann.points[1::2] + x0 = min(xs) + x1 = max(xs) + y0 = min(ys) + y1 = max(ys) + return (x0 + x1) / 2, (y0 + y1) / 2, (x1 - x0) ** 2 + (y1 - y0) ** 2 + + gt_center_x, gt_center_y, gt_r2 = _get_bbox_circle(gt_ann) + ds_center_x, ds_center_y, ds_r2 = _get_bbox_circle(ds_ann) + sigma2_x6 = self.scale * (6 * self.torso_r) ** 2 + if ( + (ds_center_x - gt_center_x) ** 2 + (ds_center_y - gt_center_y) ** 2 + ) > ds_r2 + gt_r2 + sigma2_x6: + return 0 - if cached_data is None: - # Approximate lines to the same number of points for pointwise comparison - a, b = self._get_approximated_lines(gt_ann, ds_ann) - self._save_in_cache(gt_ann, ds_ann, (a, b)) + # Approximate lines to the same number of points for pointwise comparison + a, b = self.approximate_points( + np.array(gt_ann.points).reshape((-1, 2)), + np.array(ds_ann.points).reshape((-1, 2)) + ) # Compare the direct and, optionally, the reverse variants similarities = [] @@ -584,39 +587,10 @@ def _compare_lines(self, a: np.ndarray, b: np.ndarray) -> float: scale = np.sum(segment_dists) ** 2 # Compute Gaussian for approximated lines similarly to OKS - return np.sum( + return sum( np.exp(-(dists**2) / (2 * scale * (2 * self.torso_r) ** 2)) ) / len(a) - def _load_from_cache(self, gt_ann: dm.PolyLine, ds_ann: dm.PolyLine): - cached_data = None - if self._approx_cache is not None: - for is_key_reversed, key in { - False: (id(gt_ann), id(ds_ann)), True: (id(ds_ann), id(gt_ann)) - }.items(): - cached_data = self._approx_cache.get() - if not cached_data: - break - - if cached_data: - if is_key_reversed: - key = key[::-1] - cached_data = cached_data[::-1] - - return cached_data - - def _save_in_cache(self, gt_ann: dm.PolyLine, ds_ann: dm.PolyLine, cached_data): - if self._approx_cache is not None: - # Can't cache independently, because the approximation result - # depends on both lines - self._approx_cache[(id(gt_ann), id(ds_ann))] = cached_data - - def _get_approximated_lines(self, gt_ann: dm.PolyLine, ds_ann: dm.PolyLine): - return self.approximate_points( - np.array(gt_ann.points).reshape((-1, 2)), - np.array(ds_ann.points).reshape((-1, 2)) - ) - @classmethod def approximate_points(cls, a: np.ndarray, b: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: """ @@ -631,14 +605,14 @@ def approximate_points(cls, a: np.ndarray, b: np.ndarray) -> Tuple[np.ndarray, n a_segment_count = len(a) - 1 b_segment_count = len(b) - 1 - a_segment_lengths = list(np.linalg.norm(a[1:] - a[:-1], axis=1)) + a_segment_lengths = np.linalg.norm(a[1:] - a[:-1], axis=1) a_segment_end_dists = [0] for l in a_segment_lengths: a_segment_end_dists.append(a_segment_end_dists[-1] + l) a_segment_end_dists.pop(0) a_segment_end_dists.append(a_segment_end_dists[-1]) # duplicate for simpler code - b_segment_lengths = list(np.linalg.norm(b[1:] - b[:-1], axis=1)) + b_segment_lengths = np.linalg.norm(b[1:] - b[:-1], axis=1) b_segment_end_dists = [0] for l in b_segment_lengths: b_segment_end_dists.append(b_segment_end_dists[-1] + l) @@ -658,36 +632,35 @@ def approximate_points(cls, a: np.ndarray, b: np.ndarray) -> Tuple[np.ndarray, n b_segment_idx = 0 while a_segment_idx < a_segment_count or b_segment_idx < b_segment_count: # The algorithm is similar to merge sort - - cur_point_idx = a_segment_idx + b_segment_idx + next_point_idx = a_segment_idx + b_segment_idx + 1 a_segment_end_pos = a_segment_end_dists[a_segment_idx] / (a_length or 1) b_segment_end_pos = b_segment_end_dists[b_segment_idx] / (b_length or 1) if a_segment_idx < a_segment_count and a_segment_end_pos <= b_segment_end_pos: if b_segment_idx < b_segment_count: # advance b in a position in the current segment - r = (a_segment_end_pos * b_length - ( - b_segment_end_dists[b_segment_idx] - b_segment_lengths[b_segment_idx] - )) / (b_segment_lengths[b_segment_idx] or 1) - b_new_points[cur_point_idx + 1] = \ - b[b_segment_idx] * (1 - r) + b[1 + b_segment_idx] * r + q = ( + b_segment_end_dists[b_segment_idx] - a_segment_end_pos * b_length + ) / (b_segment_lengths[b_segment_idx] or 1) + b_new_points[next_point_idx] = \ + b[b_segment_idx] * q + b[1 + b_segment_idx] * (1 - q) # advance a to the end of this segment - a_new_points[cur_point_idx + 1] = a[1 + a_segment_idx] + a_new_points[next_point_idx] = a[1 + a_segment_idx] a_segment_idx += 1 elif b_segment_idx < b_segment_count: if a_segment_idx < a_segment_count: # advance a in a position in the current segment - r = (b_segment_end_pos * a_length - ( - a_segment_end_dists[a_segment_idx] - a_segment_lengths[a_segment_idx] - )) / (a_segment_lengths[a_segment_idx] or 1) - a_new_points[cur_point_idx + 1] = \ - a[a_segment_idx] * (1 - r) + a[1 + a_segment_idx] * r + q = ( + a_segment_end_dists[a_segment_idx] - b_segment_end_pos * a_length + ) / (a_segment_lengths[a_segment_idx] or 1) + a_new_points[next_point_idx] = \ + a[a_segment_idx] * q + a[1 + a_segment_idx] * (1 - q) # advance b to the end of this segment - b_new_points[cur_point_idx + 1] = b[1 + b_segment_idx] + b_new_points[next_point_idx] = b[1 + b_segment_idx] b_segment_idx += 1 @@ -1196,16 +1169,15 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): scale=np.prod(gt_item.image.size) ) - for gt_ann, ds_ann in zip(gt_item.annotations, ds_item.annotations): + for gt_ann, ds_ann in itertools.chain(matches, mismatches): if gt_ann.type != ds_ann.type or gt_ann.type != dm.AnnotationType.polyline: continue non_oriented_distance = _get_similarity(gt_ann, ds_ann) - if not non_oriented_distance: - continue - oriented_distance = line_matcher.distance(gt_ann, ds_ann) - if oriented_distance < non_oriented_distance: + + # need to filter computation errors from line approximation + if non_oriented_distance - oriented_distance > 0.01: conflicts.append( AnnotationConflict( frame_id=frame_id, @@ -1299,7 +1271,7 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): total_count=total_labels_count, ), ), - conflicts=conflicts.copy(), + conflicts=conflicts, ) return conflicts From 141d6b1065cb3e39e46423a5ce769fa4a0853058 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 5 May 2023 09:47:01 +0300 Subject: [PATCH 081/257] Use stronger filtration for lines in comparison --- cvat/apps/engine/quality_control.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index 56f09ad8ae3f..0ba501380fad 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -551,7 +551,7 @@ def _get_bbox_circle(ann: dm.PolyLine): x1 = max(xs) y0 = min(ys) y1 = max(ys) - return (x0 + x1) / 2, (y0 + y1) / 2, (x1 - x0) ** 2 + (y1 - y0) ** 2 + return (x0 + x1) / 2, (y0 + y1) / 2, ((x1 - x0) ** 2 + (y1 - y0) ** 2) / 4 gt_center_x, gt_center_y, gt_r2 = _get_bbox_circle(gt_ann) ds_center_x, ds_center_y, ds_r2 = _get_bbox_circle(ds_ann) From cb038c925428a03dc3c2de50c08ff781660f367a Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 5 May 2023 09:49:03 +0300 Subject: [PATCH 082/257] Update debug configuration for scheduler --- .vscode/launch.json | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index f3317ec51baa..accf76a1d4a0 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -207,7 +207,6 @@ "args": [ "rqworker", "export", - "--with-scheduler", "--worker-class", "cvat.rqworker.SimpleWorker", ], @@ -230,7 +229,6 @@ "args": [ "rqworker", "quality_reports", - "--with-scheduler", "--worker-class", "cvat.rqworker.SimpleWorker", ], @@ -242,6 +240,25 @@ }, "console": "internalConsole" }, + { + "name": "server: RQ - scheduler", + "type": "python", + "request": "launch", + "stopOnEntry": false, + "justMyCode": false, + "python": "${command:python.interpreterPath}", + "program": "${workspaceRoot}/rqscheduler.py", + "django": true, + "cwd": "${workspaceFolder}", + "args": [ + "-i", "1" + ], + "env": { + "DJANGO_LOG_SERVER_HOST": "localhost", + "DJANGO_LOG_SERVER_PORT": "8282" + }, + "console": "internalConsole" + }, { "name": "server: RQ - annotation", "type": "python", From 7605db33bcd109659fb6d2aa42a90964a394e1d3 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Sat, 6 May 2023 00:18:15 +0300 Subject: [PATCH 083/257] Fix ann comparisons and line approximation --- cvat/apps/engine/quality_control.py | 127 ++++++++++++++++++++-------- 1 file changed, 94 insertions(+), 33 deletions(-) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index 0ba501380fad..7935487e5721 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -15,6 +15,7 @@ from django.conf import settings from django.db import transaction from django.utils import timezone +from scipy.optimize import linear_sum_assignment import django_rq import numpy as np @@ -450,14 +451,60 @@ def __init__(self, def _convert_tag(self, tag): converted = list(super()._convert_tag(tag)) + for dm_ann in converted: + dm_ann.id = tag.id + self._factory.remember_conversion(tag, converted) return converted def _convert_shape(self, shape, *, index): converted = list(super()._convert_shape(shape, index=index)) + for dm_ann in converted: + dm_ann.id = shape.id + self._factory.remember_conversion(shape, converted) return converted +def _match_segments( + a_segms, + b_segms, + distance=dm.ops.segment_iou, + dist_thresh=1.0, + label_matcher=lambda a, b: a.label == b.label, +): + assert callable(distance), distance + assert callable(label_matcher), label_matcher + + distances = np.array([ + [ + 1 - distance(a, b) + for b in b_segms + ] + for a in a_segms + ]) + distances[distances > 1 - dist_thresh] = 1 + a_matches, b_matches = linear_sum_assignment(distances) + + # matches: boxes we succeeded to match completely + # mispred: boxes we succeeded to match, having label mismatch + matches = [] + mispred = [] + # *_umatched: boxes of (*) we failed to match + a_unmatched = [] + b_unmatched = [] + for a_idx, b_idx in zip(a_matches, b_matches): + if distances[a_idx, b_idx] > 1 - dist_thresh: + a_unmatched.append(a_segms[a_idx]) + b_unmatched.append(b_segms[b_idx]) + else: + a_ann = a_segms[a_idx] + b_ann = b_segms[b_idx] + if label_matcher(a_ann, b_ann): + matches.append((a_ann, b_ann)) + else: + mispred.append((a_ann, b_ann)) + + return matches, mispred, a_unmatched, b_unmatched def _OKS(a, b, sigma=0.1, bbox=None, scale=None, visibility=None): """ @@ -553,12 +600,12 @@ def _get_bbox_circle(ann: dm.PolyLine): y1 = max(ys) return (x0 + x1) / 2, (y0 + y1) / 2, ((x1 - x0) ** 2 + (y1 - y0) ** 2) / 4 - gt_center_x, gt_center_y, gt_r2 = _get_bbox_circle(gt_ann) - ds_center_x, ds_center_y, ds_r2 = _get_bbox_circle(ds_ann) - sigma2_x6 = self.scale * (6 * self.torso_r) ** 2 + gt_center_x, gt_center_y, gt_r2 = _get_bbox_circle(gt_ann) + ds_center_x, ds_center_y, ds_r2 = _get_bbox_circle(ds_ann) + sigma6_2 = self.scale * (6 * self.torso_r) ** 2 if ( (ds_center_x - gt_center_x) ** 2 + (ds_center_y - gt_center_y) ** 2 - ) > ds_r2 + gt_r2 + sigma2_x6: + ) > ds_r2 + gt_r2 + sigma6_2: return 0 # Approximate lines to the same number of points for pointwise comparison @@ -622,51 +669,64 @@ def approximate_points(cls, a: np.ndarray, b: np.ndarray) -> Tuple[np.ndarray, n a_length = a_segment_end_dists[-1] b_length = b_segment_end_dists[-1] - new_points_count = len(a) + len(b) - 1 - a_new_points = np.empty((new_points_count, 2)) - b_new_points = np.empty((new_points_count, 2)) + # lines can have lesser number of points in some cases + max_points_count = len(a) + len(b) - 1 + a_new_points = np.zeros((max_points_count, 2)) + b_new_points = np.zeros((max_points_count, 2)) a_new_points[0] = a[0] b_new_points[0] = b[0] a_segment_idx = 0 b_segment_idx = 0 while a_segment_idx < a_segment_count or b_segment_idx < b_segment_count: - # The algorithm is similar to merge sort next_point_idx = a_segment_idx + b_segment_idx + 1 a_segment_end_pos = a_segment_end_dists[a_segment_idx] / (a_length or 1) b_segment_end_pos = b_segment_end_dists[b_segment_idx] / (b_length or 1) if a_segment_idx < a_segment_count and a_segment_end_pos <= b_segment_end_pos: if b_segment_idx < b_segment_count: - # advance b in a position in the current segment - q = ( - b_segment_end_dists[b_segment_idx] - a_segment_end_pos * b_length - ) / (b_segment_lengths[b_segment_idx] or 1) - b_new_points[next_point_idx] = \ - b[b_segment_idx] * q + b[1 + b_segment_idx] * (1 - q) - - # advance a to the end of this segment - a_new_points[next_point_idx] = a[1 + a_segment_idx] - + # advance b in the current segment to the relative position in a + q = (b_segment_end_pos - a_segment_end_pos) * ( + b_length / (b_segment_lengths[b_segment_idx] or 1) + ) + if abs(q) <= 0.0000001: + b_new_points[next_point_idx] = b[1 + b_segment_idx] + else: + b_new_points[next_point_idx] = \ + b[b_segment_idx] * q + b[1 + b_segment_idx] * (1 - q) + elif b_segment_idx == b_segment_count: + b_new_points[next_point_idx] = b[b_segment_idx] + + # advance a to the end of the current segment a_segment_idx += 1 + a_new_points[next_point_idx] = a[a_segment_idx] elif b_segment_idx < b_segment_count: if a_segment_idx < a_segment_count: - # advance a in a position in the current segment - q = ( - a_segment_end_dists[a_segment_idx] - b_segment_end_pos * a_length - ) / (a_segment_lengths[a_segment_idx] or 1) - a_new_points[next_point_idx] = \ - a[a_segment_idx] * q + a[1 + a_segment_idx] * (1 - q) - - # advance b to the end of this segment - b_new_points[next_point_idx] = b[1 + b_segment_idx] - + # advance a in the current segment to the relative position in b + q = (a_segment_end_pos - b_segment_end_pos) * ( + a_length / (a_segment_lengths[a_segment_idx] or 1) + ) + if abs(q) <= 0.0000001: + a_new_points[next_point_idx] = a[1 + a_segment_idx] + else: + a_new_points[next_point_idx] = \ + a[a_segment_idx] * q + a[1 + a_segment_idx] * (1 - q) + elif a_segment_idx == a_segment_count: + a_new_points[next_point_idx] = a[a_segment_idx] + + # advance b to the end of the current segment b_segment_idx += 1 + b_new_points[next_point_idx] = b[b_segment_idx] else: assert False + # truncate the final values + if next_point_idx < max_points_count: + a_new_points = a_new_points[:next_point_idx] + b_new_points = b_new_points[:next_point_idx] + return a_new_points, b_new_points class _DistanceComparator(dm.ops.DistanceComparator): @@ -747,7 +807,7 @@ def _match_segments(self, t, item_a, item_b, *, if self.return_distances: distance, distances = self._make_memoizing_distance(distance) - returned_values = dm.ops.match_segments(a_objs, b_objs, + returned_values = _match_segments(a_objs, b_objs, distance=distance, dist_thresh=self.iou_threshold) if self.return_distances: @@ -796,7 +856,7 @@ def match_points(self, item_a, item_b): if self.return_distances: distance, distances = self._make_memoizing_distance(distance) - returned_values = dm.ops.match_segments( + returned_values = _match_segments( a_points, b_points, dist_thresh=self.iou_threshold, @@ -893,7 +953,7 @@ def match_skeletons(self, item_a, item_b): if self.return_distances: distance, distances = self._make_memoizing_distance(distance) - matched, mismatched, a_extra, b_extra = dm.ops.match_segments( + matched, mismatched, a_extra, b_extra = _match_segments( a_points, b_points, dist_thresh=self.iou_threshold, @@ -1165,7 +1225,7 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): # Check line directions line_matcher = _LineMatcher( torso_r=self.comparator._annotation_comparator.line_torso_radius, - oriented=False, + oriented=True, scale=np.prod(gt_item.image.size) ) @@ -1177,7 +1237,8 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): oriented_distance = line_matcher.distance(gt_ann, ds_ann) # need to filter computation errors from line approximation - if non_oriented_distance - oriented_distance > 0.01: + # and (almost) orientation-independent cases + if non_oriented_distance - oriented_distance > 0.1: conflicts.append( AnnotationConflict( frame_id=frame_id, From d11b6dd50e2af7143deb5eee59fbd9bdad65d222 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Sat, 6 May 2023 00:18:32 +0300 Subject: [PATCH 084/257] Fix ui code --- .../annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx b/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx index 1543a1ef493d..1146ceb27112 100644 --- a/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx +++ b/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx @@ -456,7 +456,7 @@ class CanvasWrapperComponent extends React.PureComponent { prevProps.colorBy !== colorBy || prevProps.outlineColor !== outlineColor || prevProps.outlined !== outlined || - prevProps.showGroundTruth !== showGroundTruth + prevProps.showGroundTruth !== showGroundTruth || prevProps.resetZoom !== resetZoom ) { canvasInstance.configure({ From 6aa5c9dc994969fb959e7d9906144b5372336f12 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Sat, 6 May 2023 17:01:47 +0300 Subject: [PATCH 085/257] Add bbox rotation support, attribute and group matching --- .../0078_alter_annotationconflict_type.py | 18 ++++ cvat/apps/engine/models.py | 2 + cvat/apps/engine/quality_control.py | 86 +++++++++++++++++-- 3 files changed, 99 insertions(+), 7 deletions(-) create mode 100644 cvat/apps/engine/migrations/0078_alter_annotationconflict_type.py diff --git a/cvat/apps/engine/migrations/0078_alter_annotationconflict_type.py b/cvat/apps/engine/migrations/0078_alter_annotationconflict_type.py new file mode 100644 index 000000000000..4fbf6c91ec90 --- /dev/null +++ b/cvat/apps/engine/migrations/0078_alter_annotationconflict_type.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.18 on 2023-05-06 13:44 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('engine', '0077_alter_annotationconflict_type'), + ] + + operations = [ + migrations.AlterField( + model_name='annotationconflict', + name='type', + field=models.CharField(choices=[('missing_annotation', 'MISSING_ANNOTATION'), ('extra_annotation', 'EXTRA_ANNOTATION'), ('mismatching_label', 'MISMATCHING_LABEL'), ('low_overlap', 'LOW_OVERLAP'), ('mismatching_direction', 'MISMATCHING_DIRECTION'), ('mismatching_attributes', 'MISMATCHING_ATTRIBUTES'), ('mismatching_groups', 'MISMATCHING_GROUPS')], max_length=32), + ), + ] diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index 5bcb14ce07ae..6a54c6dadd2e 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -1042,6 +1042,8 @@ class AnnotationConflictType(str, Enum): MISMATCHING_LABEL = 'mismatching_label' LOW_OVERLAP = 'low_overlap' MISMATCHING_DIRECTION = 'mismatching_direction' + MISMATCHING_ATTRIBUTES = 'mismatching_attributes' + MISMATCHING_GROUPS = 'mismatching_groups' def __str__(self) -> str: return self.value diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index 7935487e5721..540a9cd228f3 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -8,6 +8,7 @@ from functools import cached_property, partial import itertools +import math from typing import Any, Callable, Dict, Hashable, List, Optional, Sequence, Tuple, Union, cast from attrs import asdict, define, has as is_attrs_type @@ -475,12 +476,13 @@ def _match_segments( assert callable(distance), distance assert callable(label_matcher), label_matcher + max_anns = max(len(a_segms), len(b_segms)) distances = np.array([ [ - 1 - distance(a, b) - for b in b_segms + 1 - distance(a, b) if a and b else 1 + for b, _ in itertools.zip_longest(b_segms, range(max_anns), fillvalue=None) ] - for a in a_segms + for a, _ in itertools.zip_longest(a_segms, range(max_anns), fillvalue=None) ]) distances[distances > 1 - dist_thresh] = 1 a_matches, b_matches = linear_sum_assignment(distances) @@ -494,8 +496,10 @@ def _match_segments( b_unmatched = [] for a_idx, b_idx in zip(a_matches, b_matches): if distances[a_idx, b_idx] > 1 - dist_thresh: - a_unmatched.append(a_segms[a_idx]) - b_unmatched.append(b_segms[b_idx]) + if a_idx < len(a_segms): + a_unmatched.append(a_segms[a_idx]) + if b_idx < len(b_segms): + b_unmatched.append(b_segms[b_idx]) else: a_ann = a_segms[a_idx] b_ann = b_segms[b_idx] @@ -816,7 +820,31 @@ def _match_segments(self, t, item_a, item_b, *, return returned_values def match_boxes(self, item_a, item_b): - return self._match_segments(dm.AnnotationType.bbox, item_a, item_b) + def _to_polygon(bbox_ann: dm.Bbox): + points = bbox_ann.as_polygon() + angle = bbox_ann.attributes.get('rotation', 0) / 180 * math.pi + + if angle: + points = np.reshape(points, (-1, 2)) + center = (points[0] + points[2]) / 2 + rel_points = points - center + cos = np.cos(angle) + sin = np.sin(angle) + rotation_matrix = ((cos, sin), (-sin, cos)) + points = np.matmul(rel_points, rotation_matrix) + center + points = points.flatten() + + return dm.Polygon(points) + + def _bbox_iou(a: dm.Bbox, b: dm.Bbox, *, img_w: int, img_h: int) -> float: + if a.attributes.get('rotation', 0) == b.attributes.get('rotation', 0): + return dm.ops.bbox_iou(a, b) + else: + return _segment_iou(_to_polygon(a), _to_polygon(b), img_h=img_h, img_w=img_w) + + img_h, img_w = item_a.image.size + return self._match_segments(dm.AnnotationType.bbox, item_a, item_b, + distance=partial(_bbox_iou, img_h=img_h, img_w=img_w)) def match_segmentations(self, item_a, item_b): def _get_anns(item): @@ -1051,6 +1079,16 @@ def match_attrs(self, ann_a: dm.Annotation, ann_b: dm.Annotation): return matches, mismatches, a_extra, b_extra + def find_groups(self, item: dm.DatasetItem) -> Dict[int, List[dm.Annotation]]: + grouped_anns = [ + ann for ann in item.annotations if ann.group and ann.type in self.included_ann_types + ] + grouped_anns = sorted(grouped_anns, key=lambda a: a.group) + return { + group: list(anns) + for group, anns in itertools.groupby(grouped_anns, lambda a: a.group) + } + def match_annotations(self, item_a, item_b): per_type_results = self._annotation_comparator.match_annotations(item_a, item_b) @@ -1091,6 +1129,9 @@ def __init__(self, # Indicates that polylines have direction self.oriented_lines = True + # Checks for mismatching groupings + self.compare_groups = True + self.included_frames = gt_data_provider.job_data._db_job.segment.frame_set def _dm_item_to_frame_id(self, item: dm.DatasetItem) -> int: @@ -1162,7 +1203,7 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): matched_ann, distance = max(this_shape_distances, key=lambda v: v[1], default=(None, 0)) return matched_ann, distance - for gt_ann, ds_ann in list(matches + mismatches): + for gt_ann, ds_ann in itertools.chain(matches, mismatches): similarity = _get_similarity(gt_ann, ds_ann) if similarity and similarity < self.overlap_threshold: conflicts.append(AnnotationConflict( @@ -1250,6 +1291,37 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): ) ) + for gt_ann, ds_ann in matches: + attribute_results = self.comparator.match_attrs(gt_ann, ds_ann) + if len(attribute_results[1]) + len(attribute_results[2]) + len(attribute_results[3]): + conflicts.append( + AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.MISMATCHING_ATTRIBUTES, + annotation_ids=[ + self._dm_ann_to_ann_id(ds_ann, self._ds_dataset), + self._dm_ann_to_ann_id(gt_ann, self._gt_dataset), + ] + ) + ) + + if self.compare_groups: + gt_groups = self.comparator.find_groups(gt_item) + ds_groups = self.comparator.find_groups(ds_item) + + for gt_ann, ds_ann in itertools.chain(matches, mismatches): + if len(gt_groups.get(gt_ann.group, [1])) != len(ds_groups.get(ds_ann.group, [1])): + conflicts.append( + AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.MISMATCHING_GROUPS, + annotation_ids=[ + self._dm_ann_to_ann_id(ds_ann, self._ds_dataset), + self._dm_ann_to_ann_id(gt_ann, self._gt_dataset), + ] + ) + ) + valid_shapes_count = len(matches) + len(mismatches) missing_shapes_count = len(gt_unmatched) extra_shapes_count = len(ds_unmatched) From 410d9166836aedc58a1f7ba5ce61acc6b7761269 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Sun, 7 May 2023 03:08:27 +0300 Subject: [PATCH 086/257] Fix import for checkbox with default value --- cvat/apps/dataset_manager/bindings.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cvat/apps/dataset_manager/bindings.py b/cvat/apps/dataset_manager/bindings.py index 8c47216f115b..b4aa97894e6d 100644 --- a/cvat/apps/dataset_manager/bindings.py +++ b/cvat/apps/dataset_manager/bindings.py @@ -123,7 +123,9 @@ def _import_attribute(self, label_id, attribute, mutable=False): if spec.input_type == AttributeType.NUMBER: pass # no extra processing required elif spec.input_type == AttributeType.CHECKBOX: - if isinstance(value, str): + if value == spec.default_value: + pass + elif isinstance(value, str): value = value.lower() assert value in {'true', 'false'} elif isinstance(value, (bool, int, float)): From 57cbcbe13af254b5ec4a1b395ce3c0f4bf5fec06 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Sun, 7 May 2023 03:08:57 +0300 Subject: [PATCH 087/257] Add object coverage checks --- .../0079_alter_annotationconflict_type.py | 18 ++++ cvat/apps/engine/models.py | 1 + cvat/apps/engine/quality_control.py | 84 +++++++++++++++---- 3 files changed, 89 insertions(+), 14 deletions(-) create mode 100644 cvat/apps/engine/migrations/0079_alter_annotationconflict_type.py diff --git a/cvat/apps/engine/migrations/0079_alter_annotationconflict_type.py b/cvat/apps/engine/migrations/0079_alter_annotationconflict_type.py new file mode 100644 index 000000000000..2d1a137ff5db --- /dev/null +++ b/cvat/apps/engine/migrations/0079_alter_annotationconflict_type.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.18 on 2023-05-06 23:06 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('engine', '0078_alter_annotationconflict_type'), + ] + + operations = [ + migrations.AlterField( + model_name='annotationconflict', + name='type', + field=models.CharField(choices=[('missing_annotation', 'MISSING_ANNOTATION'), ('extra_annotation', 'EXTRA_ANNOTATION'), ('mismatching_label', 'MISMATCHING_LABEL'), ('low_overlap', 'LOW_OVERLAP'), ('mismatching_direction', 'MISMATCHING_DIRECTION'), ('mismatching_attributes', 'MISMATCHING_ATTRIBUTES'), ('mismatching_groups', 'MISMATCHING_GROUPS'), ('covered_annotation', 'COVERED_ANNOTATION')], max_length=32), + ), + ] diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index 6a54c6dadd2e..433d0cb0de2a 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -1044,6 +1044,7 @@ class AnnotationConflictType(str, Enum): MISMATCHING_DIRECTION = 'mismatching_direction' MISMATCHING_ATTRIBUTES = 'mismatching_attributes' MISMATCHING_GROUPS = 'mismatching_groups' + COVERED_ANNOTATION = 'covered_annotation' def __str__(self) -> str: return self.value diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index 540a9cd228f3..803a069ca157 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -13,6 +13,7 @@ from attrs import asdict, define, has as is_attrs_type import datumaro as dm +import datumaro.util.mask_tools from django.conf import settings from django.db import transaction from django.utils import timezone @@ -805,14 +806,16 @@ def _match_segments(self, t, item_a, item_b, *, a_objs = self._get_ann_type(t, item_a) if b_objs is None: b_objs = self._get_ann_type(t, item_b) - if not a_objs and not b_objs: - return [], [], [], [] if self.return_distances: distance, distances = self._make_memoizing_distance(distance) - returned_values = _match_segments(a_objs, b_objs, - distance=distance, dist_thresh=self.iou_threshold) + if not a_objs and not b_objs: + distances = {} + returned_values = [], [], [], [] + else: + returned_values = _match_segments(a_objs, b_objs, + distance=distance, dist_thresh=self.iou_threshold) if self.return_distances: returned_values = returned_values + (distances, ) @@ -976,17 +979,16 @@ def match_skeletons(self, item_a, item_b): matcher = _PointsMatcher(instance_map=instance_map, sigma=self.oks_sigma) - distance = matcher.distance + results = self._match_segments( + dm.AnnotationType.points, item_a, item_b, + a_objs=a_points, + b_objs=b_points, + distance=matcher.distance, + ) + matched, mismatched, a_extra, b_extra = results[:4] if self.return_distances: - distance, distances = self._make_memoizing_distance(distance) - - matched, mismatched, a_extra, b_extra = _match_segments( - a_points, - b_points, - dist_thresh=self.iou_threshold, - distance=distance, - ) + distances = results[4] matched = [(points_map[id(p_a)], points_map[id(p_b)]) for (p_a, p_b) in matched] mismatched = [ @@ -1089,7 +1091,44 @@ def find_groups(self, item: dm.DatasetItem) -> Dict[int, List[dm.Annotation]]: for group, anns in itertools.groupby(grouped_anns, lambda a: a.group) } - def match_annotations(self, item_a, item_b): + def find_covered(self, item: dm.DatasetItem) -> List[dm.Annotation]: + # Get annotations that can cover or be covered + spatial_types = { + dm.AnnotationType.polygon, dm.AnnotationType.mask, dm.AnnotationType.bbox + }.intersection(self.included_ann_types) + source_anns = sorted([a for a in item.annotations if a.type in spatial_types], + key=lambda a: a.z_order) + + segms = [] + for ann in source_anns: + if ann.type == dm.AnnotationType.bbox: + segms.append(ann.as_polygon()) + elif ann.type == dm.AnnotationType.polygon: + segms.append(ann.points) + # elif isinstance(ann, dm.RleMask): + # dst_segms.append(ann.image) + elif ann.type == dm.AnnotationType.mask: + segms.append(datumaro.util.mask_tools.mask_to_rle(ann.image)) + else: + assert False + + img_h, img_w = item.image.size + segms = datumaro.util.mask_tools.crop_covered_segments(segms, + width=img_w, height=img_h, return_masks=True, ratio_tolerance=0) + + covered = [] + for mask_data, ann in zip(segms, source_anns): + mask = dm.Mask(image=mask_data) + ann_to_check = ann + if ann.type == dm.AnnotationType.bbox: + ann_to_check = dm.Polygon(ann.as_polygon()) + + if _segment_iou(ann_to_check, mask, img_h=img_h, img_w=img_w) <= 0: + covered.append(ann) + + return covered + + def match_annotations(self, item_a: dm.DatasetItem, item_b: dm.DatasetItem): per_type_results = self._annotation_comparator.match_annotations(item_a, item_b) merged_results = [[], [], [], [], {}] @@ -1132,6 +1171,9 @@ def __init__(self, # Checks for mismatching groupings self.compare_groups = True + # Check for fully-covered annotations + self.check_covered_annotations = True + self.included_frames = gt_data_provider.job_data._db_job.segment.frame_set def _dm_item_to_frame_id(self, item: dm.DatasetItem) -> int: @@ -1291,6 +1333,20 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): ) ) + if self.check_covered_annotations: + ds_covered_anns = self.comparator.find_covered(ds_item) + + for ds_ann in ds_covered_anns: + conflicts.append( + AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.COVERED_ANNOTATION, + annotation_ids=[ + self._dm_ann_to_ann_id(ds_ann, self._ds_dataset), + ] + ) + ) + for gt_ann, ds_ann in matches: attribute_results = self.comparator.match_attrs(gt_ann, ds_ann) if len(attribute_results[1]) + len(attribute_results[2]) + len(attribute_results[3]): From b72a438e0a40d47d9e380e1cc10cfc67c2547b20 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Sun, 7 May 2023 15:54:34 +0300 Subject: [PATCH 088/257] Fix and optimize coverage checks --- cvat/apps/engine/quality_control.py | 88 ++++++++++++++++++++--------- 1 file changed, 61 insertions(+), 27 deletions(-) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index 803a069ca157..9f35068efecd 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -1030,9 +1030,44 @@ def memoizing_distance(a, b): return memoizing_distance, distances + def match_annotations(self, item_a, item_b): + return {t: self._match_ann_type(t, item_a, item_b) for t in self.included_ann_types} + +def _find_covered_segments( + segments, *, img_w: int, img_h: int, tolerance: float = 0.01 +) -> Sequence[int]: + from pycocotools import mask as mask_utils + + segments = [[s] for s in segments] + input_rles = [mask_utils.frPyObjects(s, img_h, img_w) for s in segments] + covered_ids = [] + for i, bottom_rles in enumerate(input_rles): + top_rles = input_rles[i+1:] + top_rle = mask_utils.merge(list(itertools.chain.from_iterable(top_rles))) + intersection_rle = mask_utils.merge([top_rle] + bottom_rles, intersect=True) + union_rle = mask_utils.merge([top_rle] + bottom_rles) + + bottom_area, intersection_area, union_area = mask_utils.area( + bottom_rles + [intersection_rle, union_rle] + ) + iou = intersection_area / (union_area or 1) + + if iou == 0: + continue + + # Check if the bottom segment is fully covered by the top one + if bottom_area / (union_area or 1) - iou < tolerance: + covered_ids.append(i) + + return covered_ids class _Comparator: - def __init__(self, categories: dm.CategoriesInfo): + def __init__(self, + categories: dm.CategoriesInfo, + *, + iou_threshold: float = 0.5, + coverage_threshold: float = 0.05, + ): self.ignored_attrs = [ "track_id", # changes from task to task, can't be defined manually with the same name "keyframe", # indicates the way annotation obtained, meaningless to compare @@ -1043,15 +1078,22 @@ def __init__(self, categories: dm.CategoriesInfo): ] self.included_ann_types = [ dm.AnnotationType.bbox, - dm.AnnotationType.points, # masks are compared together with polygons + dm.AnnotationType.points, + dm.AnnotationType.mask, dm.AnnotationType.polygon, dm.AnnotationType.polyline, dm.AnnotationType.skeleton, ] self._annotation_comparator = _DistanceComparator( - categories, included_ann_types=self.included_ann_types, + categories, + included_ann_types=set(self.included_ann_types) - { + dm.AnnotationType.mask # masks are compared together with polygons + }, return_distances=True ) + self._annotation_comparator.iou_threshold = iou_threshold + + self.coverage_threshold = coverage_threshold def match_attrs(self, ann_a: dm.Annotation, ann_b: dm.Annotation): a_attrs = ann_a.attributes @@ -1096,44 +1138,36 @@ def find_covered(self, item: dm.DatasetItem) -> List[dm.Annotation]: spatial_types = { dm.AnnotationType.polygon, dm.AnnotationType.mask, dm.AnnotationType.bbox }.intersection(self.included_ann_types) - source_anns = sorted([a for a in item.annotations if a.type in spatial_types], + anns = sorted([a for a in item.annotations if a.type in spatial_types], key=lambda a: a.z_order) segms = [] - for ann in source_anns: + for ann in anns: if ann.type == dm.AnnotationType.bbox: segms.append(ann.as_polygon()) elif ann.type == dm.AnnotationType.polygon: segms.append(ann.points) - # elif isinstance(ann, dm.RleMask): - # dst_segms.append(ann.image) elif ann.type == dm.AnnotationType.mask: segms.append(datumaro.util.mask_tools.mask_to_rle(ann.image)) else: assert False img_h, img_w = item.image.size - segms = datumaro.util.mask_tools.crop_covered_segments(segms, - width=img_w, height=img_h, return_masks=True, ratio_tolerance=0) - - covered = [] - for mask_data, ann in zip(segms, source_anns): - mask = dm.Mask(image=mask_data) - ann_to_check = ann - if ann.type == dm.AnnotationType.bbox: - ann_to_check = dm.Polygon(ann.as_polygon()) - - if _segment_iou(ann_to_check, mask, img_h=img_h, img_w=img_w) <= 0: - covered.append(ann) - - return covered + covered_ids = _find_covered_segments(segms, + img_w=img_w, img_h=img_h, tolerance=self.coverage_threshold + ) + return [anns[i] for i in covered_ids] def match_annotations(self, item_a: dm.DatasetItem, item_b: dm.DatasetItem): per_type_results = self._annotation_comparator.match_annotations(item_a, item_b) merged_results = [[], [], [], [], {}] for shape_type in self.included_ann_types: - for merged_field, field in zip(merged_results, per_type_results[shape_type][:-1]): + shape_type_results = per_type_results.get(shape_type, None) + if shape_type_results is None: + continue + + for merged_field, field in zip(merged_results, shape_type_results[:-1]): merged_field.extend(field) merged_results[-1].update(per_type_results[shape_type][-1]) @@ -1158,18 +1192,18 @@ def __init__(self, self._frame_results: Dict[int, ComparisonReportFrameSummary] = {} - self.comparator = _Comparator(self._gt_dataset.categories()) + self.comparator = _Comparator(self._gt_dataset.categories(), iou_threshold=0.4) # iou_threshold is used for distinction between matched / unmatched shapes # overlap_threshold is used for distinction between strong / weak (low_overlap) matches - self.comparator._annotation_comparator.iou_threshold = 0.4 self.overlap_threshold = 0.8 # Indicates that polylines have direction self.oriented_lines = True + self.line_orientation_threshold = 0.1 # Checks for mismatching groupings - self.compare_groups = True + self.compare_groups = False # Check for fully-covered annotations self.check_covered_annotations = True @@ -1307,7 +1341,7 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): if self.oriented_lines and dm.AnnotationType.polyline in self.comparator.included_ann_types: # Check line directions line_matcher = _LineMatcher( - torso_r=self.comparator._annotation_comparator.line_torso_radius, + torso_r=self.line_torso_radius, oriented=True, scale=np.prod(gt_item.image.size) ) @@ -1321,7 +1355,7 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): # need to filter computation errors from line approximation # and (almost) orientation-independent cases - if non_oriented_distance - oriented_distance > 0.1: + if non_oriented_distance - oriented_distance > self.line_orientation_threshold: conflicts.append( AnnotationConflict( frame_id=frame_id, From 89a71837c434b13fed4a1057088e4039c62901ca Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Sun, 7 May 2023 16:26:30 +0300 Subject: [PATCH 089/257] Change approach to check visibility --- cvat/apps/engine/quality_control.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index 9f35068efecd..ef1e029efbd6 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -1034,7 +1034,7 @@ def match_annotations(self, item_a, item_b): return {t: self._match_ann_type(t, item_a, item_b) for t in self.included_ann_types} def _find_covered_segments( - segments, *, img_w: int, img_h: int, tolerance: float = 0.01 + segments, *, img_w: int, img_h: int, visibility_threshold: float = 0.01 ) -> Sequence[int]: from pycocotools import mask as mask_utils @@ -1056,7 +1056,7 @@ def _find_covered_segments( continue # Check if the bottom segment is fully covered by the top one - if bottom_area / (union_area or 1) - iou < tolerance: + if 1 - intersection_area / (bottom_area or 1) < visibility_threshold: covered_ids.append(i) return covered_ids @@ -1154,7 +1154,7 @@ def find_covered(self, item: dm.DatasetItem) -> List[dm.Annotation]: img_h, img_w = item.image.size covered_ids = _find_covered_segments(segms, - img_w=img_w, img_h=img_h, tolerance=self.coverage_threshold + img_w=img_w, img_h=img_h, visibility_threshold=self.coverage_threshold ) return [anns[i] for i in covered_ids] @@ -1341,7 +1341,7 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): if self.oriented_lines and dm.AnnotationType.polyline in self.comparator.included_ann_types: # Check line directions line_matcher = _LineMatcher( - torso_r=self.line_torso_radius, + torso_r=self.comparator._annotation_comparator.line_torso_radius, oriented=True, scale=np.prod(gt_item.image.size) ) From 865a31e1dc91bf173101945cdb61ec39e8d7f295 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 8 May 2023 20:48:08 +0300 Subject: [PATCH 090/257] Improve group matching approach --- cvat/apps/engine/quality_control.py | 56 ++++++++++++++++++++++++++--- 1 file changed, 51 insertions(+), 5 deletions(-) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index ef1e029efbd6..f49b1ba58e42 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -486,7 +486,12 @@ def _match_segments( for a, _ in itertools.zip_longest(a_segms, range(max_anns), fillvalue=None) ]) distances[distances > 1 - dist_thresh] = 1 - a_matches, b_matches = linear_sum_assignment(distances) + + if a_segms and b_segms: + a_matches, b_matches = linear_sum_assignment(distances) + else: + a_matches = [] + b_matches = [] # matches: boxes we succeeded to match completely # mispred: boxes we succeeded to match, having label mismatch @@ -496,7 +501,8 @@ def _match_segments( a_unmatched = [] b_unmatched = [] for a_idx, b_idx in zip(a_matches, b_matches): - if distances[a_idx, b_idx] > 1 - dist_thresh: + dist = distances[a_idx, b_idx] + if dist > 1 - dist_thresh or dist == 1: if a_idx < len(a_segms): a_unmatched.append(a_segms[a_idx]) if b_idx < len(b_segms): @@ -1133,6 +1139,34 @@ def find_groups(self, item: dm.DatasetItem) -> Dict[int, List[dm.Annotation]]: for group, anns in itertools.groupby(grouped_anns, lambda a: a.group) } + def match_groups(self, gt_groups, ds_groups, matched_anns): + matched_ann_ids = dict((id(a), id(b)) for a, b in matched_anns) + + def _group_distance(gt_group_id, ds_group_id): + return sum( + 1 + for gt_ann in gt_groups[gt_group_id] + for ds_ann in ds_groups[ds_group_id] + if matched_ann_ids.get(id(gt_ann), None) == id(ds_ann) + ) / len(gt_groups[gt_group_id]) + + matches, mismatches, gt_unmatched, ds_unmatched = _match_segments( + list(gt_groups), list(ds_groups), + distance=_group_distance, + label_matcher=lambda a, b: _group_distance(a, b) == 1, + dist_thresh=0 # any non-zero matches are valid + ) + + ds_to_gt_groups = { + ds_group_id: gt_group_id + for gt_group_id, ds_group_id in itertools.chain( + matches, mismatches, zip(itertools.repeat(None), ds_unmatched) + ) + } + ds_to_gt_groups[None] = gt_unmatched + + return ds_to_gt_groups + def find_covered(self, item: dm.DatasetItem) -> List[dm.Annotation]: # Get annotations that can cover or be covered spatial_types = { @@ -1203,7 +1237,7 @@ def __init__(self, self.line_orientation_threshold = 0.1 # Checks for mismatching groupings - self.compare_groups = False + self.compare_groups = True # Check for fully-covered annotations self.check_covered_annotations = True @@ -1398,9 +1432,21 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): if self.compare_groups: gt_groups = self.comparator.find_groups(gt_item) ds_groups = self.comparator.find_groups(ds_item) + matched_objects = matches + mismatches + ds_to_gt_groups = self.comparator.match_groups(gt_groups, ds_groups, matched_objects) - for gt_ann, ds_ann in itertools.chain(matches, mismatches): - if len(gt_groups.get(gt_ann.group, [1])) != len(ds_groups.get(ds_ann.group, [1])): + for gt_ann, ds_ann in matched_objects: + gt_group = gt_groups.get(gt_ann.group, [gt_ann]) + ds_group = ds_groups.get(ds_ann.group, [ds_ann]) + ds_gt_group = ds_to_gt_groups.get(ds_ann.group, None) or 0 + + if ( + # Check ungrouped objects + (len(gt_group) == 1 and len(ds_group) != 1) or + + # Check grouped objects + ds_gt_group != gt_ann.group + ): conflicts.append( AnnotationConflict( frame_id=frame_id, From 191659ec5afb932b52379416d6461bd524c48317 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 9 May 2023 02:53:13 +0300 Subject: [PATCH 091/257] Implement panoptic comparison and grouping support for segmentations --- cvat/apps/engine/quality_control.py | 173 +++++++++++++++++++++++++--- 1 file changed, 159 insertions(+), 14 deletions(-) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index f49b1ba58e42..8d74d3b5ea2d 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -480,7 +480,7 @@ def _match_segments( max_anns = max(len(a_segms), len(b_segms)) distances = np.array([ [ - 1 - distance(a, b) if a and b else 1 + 1 - distance(a, b) if a is not None and b is not None else 1 for b, _ in itertools.zip_longest(b_segms, range(max_anns), fillvalue=None) ] for a, _ in itertools.zip_longest(a_segms, range(max_anns), fillvalue=None) @@ -805,6 +805,7 @@ def _match_ann_type(self, t, *args): def _match_segments(self, t, item_a, item_b, *, distance: Callable = dm.ops.segment_iou, + label_matcher: Callable = None, a_objs: Optional[Sequence[dm.Annotation]] = None, b_objs: Optional[Sequence[dm.Annotation]] = None, ): @@ -820,8 +821,13 @@ def _match_segments(self, t, item_a, item_b, *, distances = {} returned_values = [], [], [], [] else: + extra_args = {} + if label_matcher: + extra_args['label_matcher'] = label_matcher + returned_values = _match_segments(a_objs, b_objs, - distance=distance, dist_thresh=self.iou_threshold) + distance=distance, dist_thresh=self.iou_threshold, **extra_args + ) if self.return_distances: returned_values = returned_values + (distances, ) @@ -856,16 +862,149 @@ def _bbox_iou(a: dm.Bbox, b: dm.Bbox, *, img_w: int, img_h: int) -> float: distance=partial(_bbox_iou, img_h=img_h, img_w=img_w)) def match_segmentations(self, item_a, item_b): - def _get_anns(item): + def _get_segmentations(item): return self._get_ann_type(dm.AnnotationType.polygon, item) + \ self._get_ann_type(dm.AnnotationType.mask, item) img_h, img_w = item_a.image.size - return self._match_segments(dm.AnnotationType.polygon, item_a, item_b, - a_objs=_get_anns(item_a), b_objs=_get_anns(item_b), - distance=partial(_segment_iou, img_h=img_h, img_w=img_w) + + a_anns = _get_segmentations(item_a) + b_anns = _get_segmentations(item_b) + + def _find_instances(annotations): + # Group instance annotations by label. + # Annotations with the same label and group will be merged, + # and considered a single object in comparison + instances = [] + instance_map = {} # ann id -> instance id + for ann_group in dm.ops.find_instances(annotations): + ann_group = sorted(ann_group, key=lambda a: a.label) + for _, label_group in itertools.groupby(ann_group, key=lambda a: a.label): + label_group = list(label_group) + instance_id = len(instances) + instances.append(label_group) + for ann in label_group: + instance_map[id(ann)] = instance_id + + return instances, instance_map + + a_instances, a_instance_map = _find_instances(a_anns) + b_instances, b_instance_map = _find_instances(b_anns) + + def _get_compiled_mask( + anns: Sequence[dm.Annotation], + *, + instance_ids: Dict[int, int] + ) -> dm.CompiledMask: + from pycocotools import mask as mask_utils + + if not anns: + return None + + def _to_rle(ann): + if ann.type == dm.AnnotationType.polygon: + return mask_utils.frPyObjects([ann.points], img_h, img_w) + elif isinstance(ann, dm.RleMask): + return [ann.rle] + elif ann.type == dm.AnnotationType.mask: + return [mask_utils.encode(ann.image)] + else: + assert False + + object_rle_groups = [_to_rle(ann) for ann in anns] + object_rles = [mask_utils.merge(g) for g in object_rle_groups] + object_masks = mask_utils.decode(object_rles) + + return dm.CompiledMask.from_instance_masks( + # need to increment labels and instance ids by 1 to avoid confusion with background + instance_masks=( + dm.Mask(image=object_masks[:, :, i], z_order=ann.z_order, label=ann.label + 1) + for i, ann in enumerate(anns) + ), + instance_ids=(iid + 1 for iid in instance_ids), + ) + + a_compiled_mask = _get_compiled_mask( + list(itertools.chain.from_iterable(a_instances)), + instance_ids=[ + a_instance_map[id(ann)] for ann in itertools.chain.from_iterable(a_instances) + ] + ) + b_compiled_mask = _get_compiled_mask( + list(itertools.chain.from_iterable(b_instances)), + instance_ids=[ + b_instance_map[id(ann)] for ann in itertools.chain.from_iterable(b_instances) + ] + ) + + segment_cache = {} + def _get_segment(obj_id: int, compiled_mask: dm.CompiledMask): + key = (id(compiled_mask), obj_id) + rle = segment_cache.get(key) + + if rle is None: + mask = compiled_mask.extract(obj_id + 1) + + from pycocotools import mask as mask_utils + rle = mask_utils.encode(mask) + + segment_cache[key] = rle + + return rle + + def _segment_comparator(a_inst_id: int, b_inst_id: int) -> float: + a_segm = _get_segment(a_inst_id, a_compiled_mask) + b_segm = _get_segment(b_inst_id, b_compiled_mask) + + from pycocotools import mask as mask_utils + return float(mask_utils.iou([b_segm], [a_segm], [0])[0]) + + def _label_matcher(a_inst_id: int, b_inst_id: int) -> bool: + # labels are the same in the instance annotations + a = a_instances[a_inst_id][0] + b = b_instances[b_inst_id][0] + return a.label == b.label + + results = self._match_segments( + dm.AnnotationType.polygon, item_a, item_b, + a_objs=list(range(len(a_instances))), b_objs=list(range(len(b_instances))), + distance=_segment_comparator, label_matcher=_label_matcher ) + # restore results for original annotations + matched, mismatched, a_extra, b_extra = results[:4] + if self.return_distances: + distances = results[4] + + # i_x ~ instance idx in _x + # ia_x ~ instance annotation in _x + matched = [ + (ia_a, ia_b) + for (i_a, i_b) in matched + for (ia_a, ia_b) in itertools.product(a_instances[i_a], b_instances[i_b]) + ] + mismatched = [ + (ia_a, ia_b) + for (i_a, i_b) in mismatched + for (ia_a, ia_b) in itertools.product(a_instances[i_a], b_instances[i_b]) + ] + a_extra = [ia_a for i_a in a_extra for ia_a in a_instances[i_a]] + b_extra = [ia_b for i_b in b_extra for ia_b in b_instances[i_b]] + + if self.return_distances: + for (i_a, i_b) in list(distances.keys()): + dist = distances.pop((i_a, i_b)) + + for (ia_a, ia_b) in itertools.product(a_instances[i_a], b_instances[i_b]): + distances[(id(ia_a), id(ia_b))] = dist + + returned_values = (matched, mismatched, a_extra, b_extra) + + if self.return_distances: + returned_values = returned_values + (distances, ) + + return returned_values + def match_lines(self, item_a, item_b): matcher = _LineMatcher(oriented=self.oriented_lines, torso_r=self.line_torso_radius, scale=np.prod(item_a.image.size)) @@ -1025,7 +1164,11 @@ def _make_memoizing_distance(cls, distance_function): notfound = object() def memoizing_distance(a, b): - key = (id(a), id(b)) + if isinstance(a, int) and isinstance(b, int): + key = (a, b) + else: + key = (id(a), id(b)) + dist = distances.get(key, notfound) if dist is notfound: @@ -1067,6 +1210,13 @@ def _find_covered_segments( return covered_ids +def _find_annotation_groups(annotations: Sequence[dm.Annotation]) -> Dict[int, List[dm.Annotation]]: + grouped_anns = sorted(annotations, key=lambda a: a.group) + return { + group: list(anns) + for group, anns in itertools.groupby(grouped_anns, lambda a: a.group) + } + class _Comparator: def __init__(self, categories: dm.CategoriesInfo, @@ -1130,14 +1280,9 @@ def match_attrs(self, ann_a: dm.Annotation, ann_b: dm.Annotation): return matches, mismatches, a_extra, b_extra def find_groups(self, item: dm.DatasetItem) -> Dict[int, List[dm.Annotation]]: - grouped_anns = [ + return _find_annotation_groups([ ann for ann in item.annotations if ann.group and ann.type in self.included_ann_types - ] - grouped_anns = sorted(grouped_anns, key=lambda a: a.group) - return { - group: list(anns) - for group, anns in itertools.groupby(grouped_anns, lambda a: a.group) - } + ]) def match_groups(self, gt_groups, ds_groups, matched_anns): matched_ann_ids = dict((id(a), id(b)) for a, b in matched_anns) From 6edd5ffa8d844bf0cb5472548b97603e7a5aa1df Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 9 May 2023 16:46:27 +0300 Subject: [PATCH 092/257] Improved group comparison, make panoptic mode optional, refactor some code --- cvat/apps/engine/quality_control.py | 164 +++++++++++++++++----------- 1 file changed, 100 insertions(+), 64 deletions(-) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index 8d74d3b5ea2d..32a8d827cc9f 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -747,6 +747,15 @@ def __init__( *, included_ann_types: Optional[List[dm.AnnotationType]] = None, return_distances: bool = False, + + # https://cocodataset.org/#keypoints-eval + # https://github.com/cocodataset/cocoapi/blob/8c9bcc3cf640524c4c20a9c40e89cb6a2f2fa0e9/PythonAPI/pycocotools/cocoeval.py#L523 + oks_sigma: float = 0.09, + + oriented_lines: bool = False, + line_torso_radius: float = 0.01, + panoptic_comparison: bool = False, + **kwargs, ): super().__init__(**kwargs) @@ -755,16 +764,18 @@ def __init__( self.included_ann_types = included_ann_types self.return_distances = return_distances - # % of the shape area - # https://cocodataset.org/#keypoints-eval - # https://github.com/cocodataset/cocoapi/blob/8c9bcc3cf640524c4c20a9c40e89cb6a2f2fa0e9/PythonAPI/pycocotools/cocoeval.py#L523 - self.oks_sigma = 0.09 + self.oks_sigma = oks_sigma + "% of the shape area" - self.oriented_lines = False + self.oriented_lines = oriented_lines + "Whether lines are oriented or not" - # % of the line length # Here we use a % of image size in pixels, using the image size as the scale - self.line_torso_radius = 0.01 + self.line_torso_radius = line_torso_radius + "% of the line length at the specified scale" + + self.panoptic_comparison = panoptic_comparison + "Compare only the visible parts of polygons and masks" def _instance_bbox(self, instance_anns: Sequence[dm.Annotation]): return dm.ops.max_bbox( @@ -868,9 +879,6 @@ def _get_segmentations(item): img_h, img_w = item_a.image.size - a_anns = _get_segmentations(item_a) - b_anns = _get_segmentations(item_b) - def _find_instances(annotations): # Group instance annotations by label. # Annotations with the same label and group will be merged, @@ -888,29 +896,26 @@ def _find_instances(annotations): return instances, instance_map - a_instances, a_instance_map = _find_instances(a_anns) - b_instances, b_instance_map = _find_instances(b_anns) + def _to_rle(ann): + from pycocotools import mask as mask_utils + if ann.type == dm.AnnotationType.polygon: + return mask_utils.frPyObjects([ann.points], img_h, img_w) + elif isinstance(ann, dm.RleMask): + return [ann.rle] + elif ann.type == dm.AnnotationType.mask: + return [mask_utils.encode(ann.image)] + else: + assert False def _get_compiled_mask( anns: Sequence[dm.Annotation], *, instance_ids: Dict[int, int] ) -> dm.CompiledMask: - from pycocotools import mask as mask_utils - if not anns: return None - def _to_rle(ann): - if ann.type == dm.AnnotationType.polygon: - return mask_utils.frPyObjects([ann.points], img_h, img_w) - elif isinstance(ann, dm.RleMask): - return [ann.rle] - elif ann.type == dm.AnnotationType.mask: - return [mask_utils.encode(ann.image)] - else: - assert False - + from pycocotools import mask as mask_utils object_rle_groups = [_to_rle(ann) for ann in anns] object_rles = [mask_utils.merge(g) for g in object_rle_groups] object_masks = mask_utils.decode(object_rles) @@ -924,37 +929,57 @@ def _to_rle(ann): instance_ids=(iid + 1 for iid in instance_ids), ) - a_compiled_mask = _get_compiled_mask( - list(itertools.chain.from_iterable(a_instances)), - instance_ids=[ - a_instance_map[id(ann)] for ann in itertools.chain.from_iterable(a_instances) - ] - ) - b_compiled_mask = _get_compiled_mask( - list(itertools.chain.from_iterable(b_instances)), - instance_ids=[ - b_instance_map[id(ann)] for ann in itertools.chain.from_iterable(b_instances) - ] - ) + a_anns = _get_segmentations(item_a) + b_anns = _get_segmentations(item_b) + a_instances, a_instance_map = _find_instances(a_anns) + b_instances, b_instance_map = _find_instances(b_anns) + + if self.panoptic_comparison: + a_compiled_mask = _get_compiled_mask( + list(itertools.chain.from_iterable(a_instances)), + instance_ids=[ + a_instance_map[id(ann)] for ann in itertools.chain.from_iterable(a_instances) + ] + ) + b_compiled_mask = _get_compiled_mask( + list(itertools.chain.from_iterable(b_instances)), + instance_ids=[ + b_instance_map[id(ann)] for ann in itertools.chain.from_iterable(b_instances) + ] + ) + else: + a_compiled_mask = None + b_compiled_mask = None segment_cache = {} - def _get_segment(obj_id: int, compiled_mask: dm.CompiledMask): - key = (id(compiled_mask), obj_id) + def _get_segment( + obj_id: int, *, compiled_mask: Optional[dm.CompiledMask] = None, instances + ): + key = (id(instances), obj_id) rle = segment_cache.get(key) if rle is None: - mask = compiled_mask.extract(obj_id + 1) - from pycocotools import mask as mask_utils - rle = mask_utils.encode(mask) + if compiled_mask is not None: + mask = compiled_mask.extract(obj_id + 1) + + rle = mask_utils.encode(mask) + else: + object_anns = instances[obj_id] + object_rle_groups = [_to_rle(ann) for ann in object_anns] + rle = mask_utils.merge(list(itertools.chain.from_iterable(object_rle_groups))) segment_cache[key] = rle return rle def _segment_comparator(a_inst_id: int, b_inst_id: int) -> float: - a_segm = _get_segment(a_inst_id, a_compiled_mask) - b_segm = _get_segment(b_inst_id, b_compiled_mask) + a_segm = _get_segment( + a_inst_id, compiled_mask=a_compiled_mask, instances=a_instances + ) + b_segm = _get_segment( + b_inst_id, compiled_mask=b_compiled_mask, instances=b_instances + ) from pycocotools import mask as mask_utils return float(mask_utils.iou([b_segm], [a_segm], [0])[0]) @@ -967,7 +992,7 @@ def _label_matcher(a_inst_id: int, b_inst_id: int) -> bool: results = self._match_segments( dm.AnnotationType.polygon, item_a, item_b, - a_objs=list(range(len(a_instances))), b_objs=list(range(len(b_instances))), + a_objs=range(len(a_instances)), b_objs=range(len(b_instances)), distance=_segment_comparator, label_matcher=_label_matcher ) @@ -1210,19 +1235,13 @@ def _find_covered_segments( return covered_ids -def _find_annotation_groups(annotations: Sequence[dm.Annotation]) -> Dict[int, List[dm.Annotation]]: - grouped_anns = sorted(annotations, key=lambda a: a.group) - return { - group: list(anns) - for group, anns in itertools.groupby(grouped_anns, lambda a: a.group) - } - class _Comparator: def __init__(self, categories: dm.CategoriesInfo, *, iou_threshold: float = 0.5, coverage_threshold: float = 0.05, + group_match_threshold = 0.5, ): self.ignored_attrs = [ "track_id", # changes from task to task, can't be defined manually with the same name @@ -1245,12 +1264,15 @@ def __init__(self, included_ann_types=set(self.included_ann_types) - { dm.AnnotationType.mask # masks are compared together with polygons }, - return_distances=True + return_distances=True, + panoptic_comparison=True ) self._annotation_comparator.iou_threshold = iou_threshold self.coverage_threshold = coverage_threshold + self.group_match_threshold = group_match_threshold + def match_attrs(self, ann_a: dm.Annotation, ann_b: dm.Annotation): a_attrs = ann_a.attributes b_attrs = ann_b.attributes @@ -1279,27 +1301,41 @@ def match_attrs(self, ann_a: dm.Annotation, ann_b: dm.Annotation): return matches, mismatches, a_extra, b_extra - def find_groups(self, item: dm.DatasetItem) -> Dict[int, List[dm.Annotation]]: - return _find_annotation_groups([ - ann for ann in item.annotations if ann.group and ann.type in self.included_ann_types + def find_groups( + self, item: dm.DatasetItem + ) -> Tuple[Dict[int, List[dm.Annotation]], Dict[int, int]]: + ann_groups = dm.ops.find_instances([ + ann for ann in item.annotations + if ann.type in self.included_ann_types ]) + groups = {} + group_map = {} # ann id -> group id + for group_id, group in enumerate(ann_groups): + groups[group_id] = group + for ann in group: + group_map[id(ann)] = group_id + + return groups, group_map + def match_groups(self, gt_groups, ds_groups, matched_anns): matched_ann_ids = dict((id(a), id(b)) for a, b in matched_anns) def _group_distance(gt_group_id, ds_group_id): - return sum( + intersection = sum( 1 for gt_ann in gt_groups[gt_group_id] for ds_ann in ds_groups[ds_group_id] if matched_ann_ids.get(id(gt_ann), None) == id(ds_ann) - ) / len(gt_groups[gt_group_id]) + ) + union = len(gt_groups[gt_group_id]) + len(ds_groups[ds_group_id]) - intersection + return intersection / (union or 1) matches, mismatches, gt_unmatched, ds_unmatched = _match_segments( list(gt_groups), list(ds_groups), distance=_group_distance, label_matcher=lambda a, b: _group_distance(a, b) == 1, - dist_thresh=0 # any non-zero matches are valid + dist_thresh=self.group_match_threshold ) ds_to_gt_groups = { @@ -1575,22 +1611,22 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): ) if self.compare_groups: - gt_groups = self.comparator.find_groups(gt_item) - ds_groups = self.comparator.find_groups(ds_item) + gt_groups, gt_group_map = self.comparator.find_groups(gt_item) + ds_groups, ds_group_map = self.comparator.find_groups(ds_item) matched_objects = matches + mismatches ds_to_gt_groups = self.comparator.match_groups(gt_groups, ds_groups, matched_objects) for gt_ann, ds_ann in matched_objects: - gt_group = gt_groups.get(gt_ann.group, [gt_ann]) - ds_group = ds_groups.get(ds_ann.group, [ds_ann]) - ds_gt_group = ds_to_gt_groups.get(ds_ann.group, None) or 0 + gt_group = gt_groups.get(gt_group_map[id(gt_ann)], [gt_ann]) + ds_group = ds_groups.get(ds_group_map[id(ds_ann)], [ds_ann]) + ds_gt_group = ds_to_gt_groups.get(ds_group_map[id(ds_ann)], None) if ( # Check ungrouped objects (len(gt_group) == 1 and len(ds_group) != 1) or # Check grouped objects - ds_gt_group != gt_ann.group + ds_gt_group != gt_group_map[id(gt_ann)] ): conflicts.append( AnnotationConflict( From 347127620e94469b7bfb58278a10f4989b76aa2e Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 9 May 2023 20:00:12 +0300 Subject: [PATCH 093/257] Fix job queuing --- cvat/apps/engine/quality_control.py | 67 ++++++++++++++++++++++------- 1 file changed, 52 insertions(+), 15 deletions(-) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index 32a8d827cc9f..61115361a6c3 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -1873,11 +1873,14 @@ class QueueJobManager: def _get_scheduler(self): return django_rq.get_scheduler(settings.CVAT_QUEUES.QUALITY_REPORTS.value) + def _make_queue_job_prefix(self, task: models.Task) -> str: + return f'{self._QUEUE_JOB_PREFIX}{task.id}-' + def _make_initial_queue_job_id(self, task: models.Task) -> str: - return f'{self._QUEUE_JOB_PREFIX}{task.id}-initial' + return f'{self._make_queue_job_prefix(task)}initial' def _make_regular_queue_job_id(self, task: models.Task, start_time: timezone.datetime) -> str: - return f'{self._QUEUE_JOB_PREFIX}{task.id}-{start_time.timestamp()}' + return f'{self._make_queue_job_prefix(task)}{start_time.timestamp()}' @classmethod def _get_last_report_time(cls, task: models.Task) -> Optional[timezone.datetime]: @@ -1886,9 +1889,46 @@ def _get_last_report_time(cls, task: models.Task) -> Optional[timezone.datetime] return report.created_date return None + def _find_next_job_id( + self, existing_job_ids: Sequence[str], task: models.Task, *, now: timezone.datetime + ) -> str: + job_id_prefix = self._make_queue_job_prefix(task) + + def _get_timestamp(job_id: str) -> timezone.datetime: + job_timestamp = job_id.split(job_id_prefix, maxsplit=1)[-1] + if job_timestamp == 'initial': + return timezone.datetime.min + else: + return timezone.datetime.fromtimestamp(float(job_timestamp), tz=timezone.utc) + + max_job_id = max( + (j for j in existing_job_ids if j.startswith(job_id_prefix)), + key=_get_timestamp, + default=None + ) + max_timestamp = _get_timestamp(max_job_id) if max_job_id else None + + last_update_time = self._get_last_report_time(task) + if last_update_time is None: + # Report has never been computed, is queued, or is being computed + queue_job_id = self._make_initial_queue_job_id(task) + elif max_timestamp is not None and now < max_timestamp: + # Reuse the existing next job + queue_job_id = max_job_id + else: + # Add an updating job in the queue in the next time frame + intervals = max( + 1, + 1 + (now - last_update_time) // self.TASK_QUALITY_CHECK_JOB_DELAY + ) + next_update_time = last_update_time + self.TASK_QUALITY_CHECK_JOB_DELAY * intervals + queue_job_id = self._make_regular_queue_job_id(task, next_update_time) + + return queue_job_id + def schedule_quality_check_job(self, task: models.Task): # This function schedules a report computing job in the queue - # The queue work algorithm is lock-free. It has and should keep the following properties: + # The queue work algorithm is lock-free. It should keep the following properties: # - job names are stable between potential writers # - if multiple simultaneous writes can happen, the objects written must be the same # - once a job is created, it can only be updated by the scheduler and the handling worker @@ -1897,20 +1937,17 @@ def schedule_quality_check_job(self, task: models.Task): # Nothing to compute return - last_update_time = self._get_last_report_time(task) - if last_update_time is None: - # Report has never been computed - queue_job_id = self._make_initial_queue_job_id(task) - else: - # TODO: fix enqueuing if the job is just scheduled - # Ensure there is an updating job in the queue - next_update_time = last_update_time + self.TASK_QUALITY_CHECK_JOB_DELAY - queue_job_id = self._make_regular_queue_job_id(task, next_update_time) - + now = timezone.now() scheduler = self._get_scheduler() - if queue_job_id not in scheduler: + existing_job_ids = set(j.id for j in scheduler.get_jobs( + until=now.utcnow() + self.TASK_QUALITY_CHECK_JOB_DELAY + )) + + queue_job_id = self._find_next_job_id(existing_job_ids, task, now=now) + + if queue_job_id not in existing_job_ids: scheduler.enqueue_at( - task.updated_date + self.TASK_QUALITY_CHECK_JOB_DELAY, + now.utcnow() + self.TASK_QUALITY_CHECK_JOB_DELAY, self._update_task_quality_metrics, task_id=task.id, job_id=queue_job_id, From 92ea805cb7865f2317fdd9112b5c6a3c6a43027f Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 10 May 2023 12:29:02 +0300 Subject: [PATCH 094/257] Sync report data --- cvat/apps/engine/quality_control.py | 55 +++++++++++++++-------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index 61115361a6c3..5b552abc9af8 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -357,8 +357,6 @@ def from_dict(cls, d: Dict[str, Any]) -> ComparisonReport: return cls( parameters=ComparisonReportParameters.from_dict(d['parameters']), comparison_summary=ComparisonReportComparisonSummary.from_dict(d['comparison_summary']), - # TODO: Not computed because of optimizations. Need to think if it is really needed - # dataset_summary=ComparisonReportDatasetSummary.from_dict(d['dataset_summary']), frame_results={ int(k): ComparisonReportFrameSummary.from_dict(v) for k, v in d['frame_results'].items() @@ -1729,18 +1727,6 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): def generate_report(self) -> ComparisonReport: self._find_gt_conflicts() - # full_ds_comparable_shapes_count = 0 - # full_ds_comparable_attributes_count = 0 - # for item in self._ds_dataset: - # for ann in item.annotations: - # if ann.type not in self.comparator.included_ann_types: - # continue - - # full_ds_comparable_attributes_count += len( - # set(ann.attributes).difference(self.comparator.ignored_attrs) - # ) - # full_ds_comparable_shapes_count += 1 - # accumulate stats intersection_frames = [] conflict_count = 0 @@ -1857,11 +1843,6 @@ def generate_report(self) -> ComparisonReport: ), ), - # dataset_summary=ComparisonReportDatasetSummary( - # frame_count=len(self._ds_dataset), - # shape_count=full_ds_comparable_shapes_count, - # ), - frame_results=self._frame_results ) @@ -2014,14 +1995,14 @@ def _update_task_quality_metrics(cls, *, task_id: int): # compute combined summary for job reports. task_intersection_frames = set() task_conflicts = [] - # task_shapes_count = 0 task_annotations_summary = None task_ann_components_summary = None task_mean_shape_ious = [] + task_frame_results = {} + task_frame_results_counts = {} for r in job_comparison_reports.values(): task_intersection_frames.update(r.comparison_summary.frames) task_conflicts.extend(r.conflicts) - # task_shapes_count += r.dataset_summary.shape_count if task_annotations_summary: task_annotations_summary.accumulate(r.comparison_summary.annotations) @@ -2034,6 +2015,31 @@ def _update_task_quality_metrics(cls, *, task_id: int): task_ann_components_summary = deepcopy(r.comparison_summary.annotation_components) task_mean_shape_ious.append(task_ann_components_summary.shape.mean_iou) + for frame_id, job_frame_result in r.frame_results.items(): + task_frame_result = cast( + Optional[ComparisonReportFrameSummary], task_frame_results.get(frame_id) + ) + frame_results_count = task_frame_results_counts.get(frame_id, 0) + + if task_frame_result is None: + task_frame_result = deepcopy(job_frame_result) + else: + task_frame_result.conflicts += job_frame_result.conflicts + task_frame_result.conflict_count = len(task_frame_result.conflicts) + + task_frame_result.annotations.accumulate(job_frame_result.annotations) + task_frame_result.annotation_components.accumulate( + job_frame_result.annotation_components + ) + + task_frame_result.annotation_components.shape.mean_iou = ( + task_frame_result.annotation_components.shape.mean_iou * \ + frame_results_count + \ + job_frame_result.annotation_components.shape.mean_iou + ) / (frame_results_count + 1) + + task_frame_results_counts[frame_id] = 1 + frame_results_count + task_ann_components_summary.shape.mean_iou = np.mean(task_mean_shape_ious) task_report_data = ComparisonReport( @@ -2050,12 +2056,7 @@ def _update_task_quality_metrics(cls, *, task_id: int): annotation_components=task_ann_components_summary, ), - # dataset_summary=ComparisonReportDatasetSummary( - # frame_count=task.data.size, - # shape_count=task_shapes_count - # ), - - frame_results={}, + frame_results=task_frame_results, ) with transaction.atomic(): From 0fab98c8e0345b500ddb51872325752962047ad8 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 10 May 2023 15:23:38 +0300 Subject: [PATCH 095/257] Add conflict importance and summary info --- cvat-core/src/quality-report.ts | 6 +- .../task-analytics-page/quality/job-list.tsx | 2 +- .../0080_annotationconflict_importance.py | 19 ++ cvat/apps/engine/models.py | 12 ++ cvat/apps/engine/quality_control.py | 176 +++++++++++++----- cvat/apps/engine/serializers.py | 6 +- cvat/schema.yml | 4 +- 7 files changed, 167 insertions(+), 58 deletions(-) create mode 100644 cvat/apps/engine/migrations/0080_annotationconflict_importance.py diff --git a/cvat-core/src/quality-report.ts b/cvat-core/src/quality-report.ts index ccd4896c908d..c53fdc114a46 100644 --- a/cvat-core/src/quality-report.ts +++ b/cvat-core/src/quality-report.ts @@ -13,7 +13,7 @@ export interface RawQualityReportData { summary?: { frame_count: number, frame_share_percent: number, - conflicts_count: number, + conflict_count: number, valid_count: number, ds_count: number, gt_count: number @@ -24,7 +24,7 @@ export interface RawQualityReportData { export interface QualitySummary { frameCount: number; frameSharePercent: number; - conflictsCount: number; + conflictCount: number; validCount: number; dsCount: number; gtCount: number; @@ -86,7 +86,7 @@ export default class QualityReport { get: () => ({ frameCount: data.summary.frame_count, frameSharePercent: data.summary.frame_share_percent, - conflictsCount: data.summary.conflicts_count, + conflictCount: data.summary.conflict_count, validCount: data.summary.valid_count, dsCount: data.summary.ds_count, gtCount: data.summary.gt_count, diff --git a/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx b/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx index dc3fbd06bf35..c052abd6de4c 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx @@ -163,7 +163,7 @@ function JobListComponent(props: Props): JSX.Element { key: 'conflicts', className: 'cvat-job-item-conflicts', render: (jobInstance: Job): JSX.Element => { - const conflicts = jobsReports[jobInstance.id]?.summary?.conflictsCount; + const conflicts = jobsReports[jobInstance.id]?.summary?.conflictCount; return ( {Number.isNaN(conflicts) ? 'N/A' : conflicts} diff --git a/cvat/apps/engine/migrations/0080_annotationconflict_importance.py b/cvat/apps/engine/migrations/0080_annotationconflict_importance.py new file mode 100644 index 000000000000..213aeaa6c72d --- /dev/null +++ b/cvat/apps/engine/migrations/0080_annotationconflict_importance.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.18 on 2023-05-10 11:31 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('engine', '0079_alter_annotationconflict_type'), + ] + + operations = [ + migrations.AddField( + model_name='annotationconflict', + name='importance', + field=models.CharField(choices=[('warning', 'WARNING'), ('error', 'ERROR')], default='error', max_length=32), + preserve_default=False, + ), + ] diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index 433d0cb0de2a..7d3c2fa5419b 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -1053,6 +1053,17 @@ def __str__(self) -> str: def choices(cls): return tuple((x.value, x.name) for x in cls) +class AnnotationConflictImportance(str, Enum): + WARNING = 'warning' + ERROR = 'error' + + def __str__(self) -> str: + return self.value + + @classmethod + def choices(cls): + return tuple((x.value, x.name) for x in cls) + class MismatchingAnnotationKind(str, Enum): ATTRIBUTE = 'attribute' LABEL = 'label' @@ -1136,6 +1147,7 @@ class AnnotationConflict(models.Model): on_delete=models.CASCADE, related_name='conflicts') frame = models.PositiveIntegerField() type = models.CharField(max_length=32, choices=AnnotationConflictType.choices()) + importance = models.CharField(max_length=32, choices=AnnotationConflictImportance.choices()) annotation_ids: Sequence[AnnotationId] diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index 5b552abc9af8..36324304d525 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -27,7 +27,8 @@ from cvat.apps.dataset_manager.util import bulk_create from cvat.apps.dataset_manager.formats.registry import dm_env from cvat.apps.engine import models -from cvat.apps.engine.models import AnnotationConflictType, AnnotationType +from cvat.apps.engine.models import (AnnotationConflictImportance, + AnnotationConflictType, AnnotationType) from cvat.apps.profiler import silk_profile from datumaro.util import dump_json, parse_json @@ -74,12 +75,40 @@ class AnnotationConflict(_Serializable): type: AnnotationConflictType annotation_ids: List[AnnotationId] + @property + def importance(self) -> AnnotationConflictImportance: + if self.type in [ + AnnotationConflictType.MISSING_ANNOTATION, + AnnotationConflictType.EXTRA_ANNOTATION, + AnnotationConflictType.MISMATCHING_LABEL, + ]: + importance = AnnotationConflictImportance.ERROR + elif self.type in [ + AnnotationConflictType.LOW_OVERLAP, + AnnotationConflictType.MISMATCHING_ATTRIBUTES, + AnnotationConflictType.MISMATCHING_DIRECTION, + AnnotationConflictType.MISMATCHING_GROUPS, + AnnotationConflictType.COVERED_ANNOTATION, + ]: + importance = AnnotationConflictImportance.WARNING + else: + assert False + + return importance + def _value_serializer(self, t, attr, v): if isinstance(v, AnnotationConflictType): return str(v) else: return super()._value_serializer(t, attr, v) + def to_dict(self) -> dict: + result = super().to_dict() + result.update(**{ + k: getattr(self, k) for k in ['importance'] + }) + return result + @classmethod def from_dict(cls, d): return cls( @@ -279,8 +308,13 @@ class ComparisonReportComparisonSummary(_Serializable): frame_share_percent: float frames: List[str] + @property + def mean_conflict_count(self) -> float: + return self.conflict_count / (len(self.frames) or 1) + conflict_count: int - mean_conflict_count: float + warning_count: int + error_count: int annotations: ComparisonReportAnnotationsSummary annotation_components: ComparisonReportAnnotationComponentsSummary @@ -292,7 +326,7 @@ def frame_count(self) -> int: def to_dict(self) -> dict: result = super().to_dict() result.update(**{ - k: getattr(self, k) for k in ['frame_count'] + k: getattr(self, k) for k in ['frame_count', 'mean_conflict_count'] }) return result @@ -302,7 +336,8 @@ def from_dict(cls, d): frame_share_percent=d['frame_share_percent'], frames=list(d['frames']), conflict_count=d['conflict_count'], - mean_conflict_count=d['mean_conflict_count'], + warning_count=d.get('warning_count', 0), + error_count=d.get('error_count', 0), annotations=ComparisonReportAnnotationsSummary.from_dict(d['annotations']), annotation_components=ComparisonReportAnnotationComponentsSummary.from_dict( d['annotation_components']), @@ -322,18 +357,51 @@ def from_dict(cls, d): ) -@define(kw_only=True) +@define(kw_only=True, init=False) class ComparisonReportFrameSummary(_Serializable): - conflict_count: int conflicts: List[AnnotationConflict] + @cached_property + def conflict_count(self) -> int: + return len(self.conflicts) + + @cached_property + def warning_count(self) -> int: + return len([ + c for c in self.conflicts + if c.importance == AnnotationConflictImportance.WARNING + ]) + + @cached_property + def error_count(self) -> int: + return len([ + c for c in self.conflicts + if c.importance == AnnotationConflictImportance.ERROR + ]) + annotations: ComparisonReportAnnotationsSummary annotation_components: ComparisonReportAnnotationComponentsSummary + def __init__(self, *args, **kwargs): + # these fields are optional, but can be computed on access + for field_name in ['conflict_count', 'warning_count', 'error_count']: + if field_name in kwargs: + setattr(self, field_name, kwargs.pop(field_name)) + + self.__attrs_init__(*args, **kwargs) + @classmethod def from_dict(cls, d): return cls( - conflict_count=d['conflict_count'], + **dict( + conflict_count=d['conflict_count'], + ) if 'conflict_count' in d else {}, + **dict( + warning_count=d['warning_count'], + ) if 'warning_count' in d else {}, + **dict( + error_count=d['error_count'], + ) if 'error_count' in d else {}, conflicts=[AnnotationConflict.from_dict(v) for v in d['conflicts']], annotations=ComparisonReportAnnotationsSummary.from_dict(d['annotations']), annotation_components=ComparisonReportAnnotationComponentsSummary.from_dict( @@ -345,7 +413,6 @@ def from_dict(cls, d): class ComparisonReport(_Serializable): parameters: ComparisonReportParameters comparison_summary: ComparisonReportComparisonSummary - # dataset_summary: ComparisonReportDatasetSummary frame_results: Dict[int, ComparisonReportFrameSummary] @property @@ -565,7 +632,19 @@ def _arr_div(a_arr: np.ndarray, b_arr: np.ndarray) -> np.ndarray: divisor[b_arr == 0] = 1 return a_arr / divisor -def _segment_iou(a, b, *, img_h, img_w): +def _to_rle(ann: dm.Annotation, *, img_h: int, img_w: int): + from pycocotools import mask as mask_utils + + if ann.type == dm.AnnotationType.polygon: + return mask_utils.frPyObjects([ann.points], img_h, img_w) + elif isinstance(ann, dm.RleMask): + return [ann.rle] + elif ann.type == dm.AnnotationType.mask: + return [mask_utils.encode(ann.image)] + else: + assert False + +def _segment_iou(a: dm.Annotation, b: dm.Annotation, *, img_h: int, img_w: int) -> float: """ Generic IoU computation with masks and polygons. Returns -1 if no intersection, [0; 1] otherwise @@ -576,18 +655,8 @@ def _segment_iou(a, b, *, img_h, img_w): from pycocotools import mask as mask_utils - def _to_rle(ann): - if ann.type == dm.AnnotationType.polygon: - return mask_utils.frPyObjects([ann.points], img_h, img_w) - elif isinstance(ann, dm.RleMask): - return [ann.rle] - elif ann.type == dm.AnnotationType.mask: - return [mask_utils.encode(ann.image)] - else: - raise TypeError("Unexpected arguments: %s, %s" % (a, b)) - - a = _to_rle(a) - b = _to_rle(b) + a = _to_rle(a, img_h=img_h, img_w=img_w) + b = _to_rle(b, img_h=img_h, img_w=img_w) # Note that mask_utils.iou expects (dt, gt). Check this if the 3rd param is True return float(mask_utils.iou(b, a, [0])) @@ -598,7 +667,7 @@ class _LineMatcher(dm.ops.LineMatcher): oriented: bool = False scale: float = None - def distance(self, gt_ann: dm.PolyLine, ds_ann: dm.PolyLine): + def distance(self, gt_ann: dm.PolyLine, ds_ann: dm.PolyLine) -> float: # Check distances of the very coarse estimates for the curves def _get_bbox_circle(ann: dm.PolyLine): xs = ann.points[0::2] @@ -775,7 +844,9 @@ def __init__( self.panoptic_comparison = panoptic_comparison "Compare only the visible parts of polygons and masks" - def _instance_bbox(self, instance_anns: Sequence[dm.Annotation]): + def _instance_bbox( + self, instance_anns: Sequence[dm.Annotation] + ) -> Tuple[float, float, float, float]: return dm.ops.max_bbox( a.get_bbox() if isinstance(a, dm.Skeleton) else a for a in instance_anns @@ -784,7 +855,7 @@ def _instance_bbox(self, instance_anns: Sequence[dm.Annotation]): ) @staticmethod - def _get_ann_type(t, item): + def _get_ann_type(t, item: dm.Annotation) -> Sequence[dm.Annotation]: return [ a for a in item.annotations if a.type == t @@ -894,17 +965,6 @@ def _find_instances(annotations): return instances, instance_map - def _to_rle(ann): - from pycocotools import mask as mask_utils - if ann.type == dm.AnnotationType.polygon: - return mask_utils.frPyObjects([ann.points], img_h, img_w) - elif isinstance(ann, dm.RleMask): - return [ann.rle] - elif ann.type == dm.AnnotationType.mask: - return [mask_utils.encode(ann.image)] - else: - assert False - def _get_compiled_mask( anns: Sequence[dm.Annotation], *, @@ -914,7 +974,7 @@ def _get_compiled_mask( return None from pycocotools import mask as mask_utils - object_rle_groups = [_to_rle(ann) for ann in anns] + object_rle_groups = [_to_rle(ann, img_h=img_h, img_w=img_w) for ann in anns] object_rles = [mask_utils.merge(g) for g in object_rle_groups] object_masks = mask_utils.decode(object_rles) @@ -963,8 +1023,12 @@ def _get_segment( rle = mask_utils.encode(mask) else: + # Create merged RLE for the instance shapes object_anns = instances[obj_id] - object_rle_groups = [_to_rle(ann) for ann in object_anns] + object_rle_groups = [ + _to_rle(ann, img_h=img_h, img_w=img_w) + for ann in object_anns + ] rle = mask_utils.merge(list(itertools.chain.from_iterable(object_rle_groups))) segment_cache[key] = rle @@ -984,6 +1048,7 @@ def _segment_comparator(a_inst_id: int, b_inst_id: int) -> float: def _label_matcher(a_inst_id: int, b_inst_id: int) -> bool: # labels are the same in the instance annotations + # instances are required to have the same labels in all shapes a = a_instances[a_inst_id][0] b = b_instances[b_inst_id][0] return a.label == b.label @@ -1029,8 +1094,11 @@ def _label_matcher(a_inst_id: int, b_inst_id: int) -> bool: return returned_values def match_lines(self, item_a, item_b): - matcher = _LineMatcher(oriented=self.oriented_lines, torso_r=self.line_torso_radius, - scale=np.prod(item_a.image.size)) + matcher = _LineMatcher( + oriented=self.oriented_lines, + torso_r=self.line_torso_radius, + scale=np.prod(item_a.image.size) + ) return self._match_segments(dm.AnnotationType.polyline, item_a, item_b, distance=matcher.distance) @@ -1244,8 +1312,8 @@ def __init__(self, self.ignored_attrs = [ "track_id", # changes from task to task, can't be defined manually with the same name "keyframe", # indicates the way annotation obtained, meaningless to compare - "z_order", # TODO: compare relative or 'visible' z_order - "group", # TODO: changes from task to task. But must be compared for existence + "z_order", # changes from frame to frame, compared by other means + "group", # changes from job to job, compared by other means "rotation", # should be handled by other means "outside", # should be handled by other means ] @@ -1687,7 +1755,6 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): gt_annotations_count = np.sum(gt_ann_counts) - gt_ann_counts[confusion_matrix_labels_rmap[None]] self._frame_results[frame_id] = ComparisonReportFrameSummary( - conflict_count=len(conflicts), annotations=ComparisonReportAnnotationsSummary( valid_count=valid_annotations_count, missing_count=missing_annotations_count, @@ -1729,7 +1796,7 @@ def generate_report(self) -> ComparisonReport: # accumulate stats intersection_frames = [] - conflict_count = 0 + conflicts = [] annotations = ComparisonReportAnnotationsSummary( valid_count=0, missing_count=0, extra_count=0, total_count=0, @@ -1750,7 +1817,7 @@ def generate_report(self) -> ComparisonReport: confusion_matrices = [] for frame_id, frame_result in self._frame_results.items(): intersection_frames.append(frame_id) - conflict_count += frame_result.conflict_count + conflicts += frame_result.conflicts if annotations is None: annotations = deepcopy(frame_result.annotations) @@ -1793,8 +1860,6 @@ def generate_report(self) -> ComparisonReport: ds_annotations_count = np.sum(ds_ann_counts) - ds_ann_counts[confusion_matrix_labels_rmap[None]] gt_annotations_count = np.sum(gt_ann_counts) - gt_ann_counts[confusion_matrix_labels_rmap[None]] - mean_conflict_count = conflict_count / (len(intersection_frames) or 1) - return ComparisonReport( parameters=ComparisonReportParameters( included_annotation_types=[t.name for t in self.comparator.included_ann_types], @@ -1806,8 +1871,13 @@ def generate_report(self) -> ComparisonReport: frame_share_percent=len(intersection_frames) / (len(self._ds_dataset) or 1), frames=intersection_frames, - conflict_count=conflict_count, - mean_conflict_count=mean_conflict_count, + conflict_count=len(conflicts), + warning_count=len([ + c for c in conflicts if c.importance == AnnotationConflictImportance.WARNING + ]), + error_count=len([ + c for c in conflicts if c.importance == AnnotationConflictImportance.ERROR + ]), annotations=ComparisonReportAnnotationsSummary( valid_count=valid_annotations_count, @@ -2025,7 +2095,6 @@ def _update_task_quality_metrics(cls, *, task_id: int): task_frame_result = deepcopy(job_frame_result) else: task_frame_result.conflicts += job_frame_result.conflicts - task_frame_result.conflict_count = len(task_frame_result.conflicts) task_frame_result.annotations.accumulate(job_frame_result.annotations) task_frame_result.annotation_components.accumulate( @@ -2050,7 +2119,14 @@ def _update_task_quality_metrics(cls, *, task_id: int): frames=sorted(task_intersection_frames), conflict_count=len(task_conflicts), - mean_conflict_count=len(task_conflicts) / (task.data.size or 1), + warning_count=len([ + c for c in task_conflicts + if c.importance == AnnotationConflictImportance.WARNING + ]), + error_count=len([ + c for c in task_conflicts + if c.importance == AnnotationConflictImportance.ERROR + ]), annotations=task_annotations_summary, annotation_components=task_ann_components_summary, diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index 904fa12bbaab..59eda614dc44 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -1917,14 +1917,16 @@ class AnnotationConflictSerializer(serializers.ModelSerializer): class Meta: model = models.AnnotationConflict - fields = ('id', 'frame', 'type', 'annotation_ids', 'report_id') + fields = ('id', 'frame', 'type', 'annotation_ids', 'report_id', 'importance') read_only_fields = fields class QualityReportSummarySerializer(serializers.Serializer): frame_count = serializers.IntegerField() frame_share_percent = serializers.FloatField() - conflicts_count = serializers.IntegerField(source='conflict_count') + conflict_count = serializers.IntegerField() + warning_count = serializers.IntegerField() + error_count = serializers.IntegerField() # This set is enough for basic characteristics, such as # DS_unmatched, GT_unmatched, accuracy, precision and recall diff --git a/cvat/schema.yml b/cvat/schema.yml index e404dd871827..c19951565bc2 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -8999,7 +8999,7 @@ components: frame_share_percent: type: number format: double - conflicts_count: + conflict_count: type: integer valid_count: type: integer @@ -9008,7 +9008,7 @@ components: gt_count: type: integer required: - - conflicts_count + - conflict_count - ds_count - frame_count - frame_share_percent From 0f65e1ec43eea912c3dd903a3a94f0160ca77fc9 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 10 May 2023 17:56:23 +0300 Subject: [PATCH 096/257] Refactor comparison parameters, add more settings --- cvat/apps/engine/quality_control.py | 166 +++++++++++++++++----------- 1 file changed, 102 insertions(+), 64 deletions(-) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index 36324304d525..d23f98bcefa7 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -11,7 +11,7 @@ import math from typing import Any, Callable, Dict, Hashable, List, Optional, Sequence, Tuple, Union, cast -from attrs import asdict, define, has as is_attrs_type +from attrs import asdict, define, fields_dict, has as is_attrs_type import datumaro as dm import datumaro.util.mask_tools from django.conf import settings @@ -119,18 +119,65 @@ def from_dict(cls, d): @define(kw_only=True) -class ComparisonReportParameters(_Serializable): - included_annotation_types: List[str] - ignored_attributes: List[str] - iou_threshold: float +class ComparisonParameters(_Serializable): + included_annotation_types: List[dm.AnnotationType] = [ + dm.AnnotationType.bbox, + dm.AnnotationType.points, + dm.AnnotationType.mask, + dm.AnnotationType.polygon, + dm.AnnotationType.polyline, + dm.AnnotationType.skeleton, + ] + + ignored_attributes: List[str] = [] + + iou_threshold: float = 0.4 + "Used for distinction between matched / unmatched shapes" + + low_overlap_threshold: float = 0.8 + "Used for distinction between strong / weak (low_overlap) matches" + + oks_sigma: float = 0.09 + "Like IoU threshold, but for points, % of the bbox area to match a pair of points" + + line_thickness: float = 0.01 + "Thickness of polylines, relatively to the (image area) ^ 0.5" + + oriented_lines: bool = True + "Indicates that polylines have direction" + + line_orientation_threshold: float = 0.1 + """ + The minimal gain in the IoU between the given and reversed line directions + to count the line inverted + """ + + compare_groups: bool = True + "Checks for mismatching groupings" + + group_match_threshold: float = 0.5 + "Minimal IoU for groups to be considered matching" + + check_covered_annotations: bool = True + "Check for fully-covered annotations" + + object_visibility_threshold: float = 0.05 + "Minimal visible area % of the spatial annotations" + + panoptic_comparison: bool = True + "Use only the visible part of the masks and polygons in comparisons" + + + def _value_serializer(self, t, attr, v): + if isinstance(v, dm.AnnotationType): + return str(v.name) + else: + return super()._value_serializer(t, attr, v) @classmethod def from_dict(cls, d): - return cls( - included_annotation_types=d['included_annotation_types'], - ignored_attributes=d['ignored_attributes'], - iou_threshold=d['iou_threshold'], - ) + fields = fields_dict(cls) + return cls(**{ field_name: d[field_name] for field_name in fields if field_name in d }) @define(kw_only=True) @@ -411,7 +458,7 @@ def from_dict(cls, d): @define(kw_only=True) class ComparisonReport(_Serializable): - parameters: ComparisonReportParameters + parameters: ComparisonParameters comparison_summary: ComparisonReportComparisonSummary frame_results: Dict[int, ComparisonReportFrameSummary] @@ -422,7 +469,7 @@ def conflicts(self) -> List[AnnotationConflict]: @classmethod def from_dict(cls, d: Dict[str, Any]) -> ComparisonReport: return cls( - parameters=ComparisonReportParameters.from_dict(d['parameters']), + parameters=ComparisonParameters.from_dict(d['parameters']), comparison_summary=ComparisonReportComparisonSummary.from_dict(d['comparison_summary']), frame_results={ int(k): ComparisonReportFrameSummary.from_dict(v) @@ -663,6 +710,8 @@ def _segment_iou(a: dm.Annotation, b: dm.Annotation, *, img_h: int, img_w: int) @define(kw_only=True) class _LineMatcher(dm.ops.LineMatcher): + EPSILON = 1e-7 + torso_r: float = 0.25 oriented: bool = False scale: float = None @@ -767,7 +816,7 @@ def approximate_points(cls, a: np.ndarray, b: np.ndarray) -> Tuple[np.ndarray, n q = (b_segment_end_pos - a_segment_end_pos) * ( b_length / (b_segment_lengths[b_segment_idx] or 1) ) - if abs(q) <= 0.0000001: + if abs(q) <= cls.EPSILON: b_new_points[next_point_idx] = b[1 + b_segment_idx] else: b_new_points[next_point_idx] = \ @@ -785,7 +834,7 @@ def approximate_points(cls, a: np.ndarray, b: np.ndarray) -> Tuple[np.ndarray, n q = (a_segment_end_pos - b_segment_end_pos) * ( a_length / (a_segment_lengths[a_segment_idx] or 1) ) - if abs(q) <= 0.0000001: + if abs(q) <= cls.EPSILON: a_new_points[next_point_idx] = a[1 + a_segment_idx] else: a_new_points[next_point_idx] = \ @@ -815,6 +864,8 @@ def __init__( included_ann_types: Optional[List[dm.AnnotationType]] = None, return_distances: bool = False, + iou_threshold: float = 0.5, + # https://cocodataset.org/#keypoints-eval # https://github.com/cocodataset/cocoapi/blob/8c9bcc3cf640524c4c20a9c40e89cb6a2f2fa0e9/PythonAPI/pycocotools/cocoeval.py#L523 oks_sigma: float = 0.09, @@ -822,10 +873,8 @@ def __init__( oriented_lines: bool = False, line_torso_radius: float = 0.01, panoptic_comparison: bool = False, - - **kwargs, ): - super().__init__(**kwargs) + super().__init__(iou_threshold=iou_threshold) self.categories = categories self._skeleton_info = {} self.included_ann_types = included_ann_types @@ -1305,39 +1354,32 @@ class _Comparator: def __init__(self, categories: dm.CategoriesInfo, *, - iou_threshold: float = 0.5, - coverage_threshold: float = 0.05, - group_match_threshold = 0.5, + settings: ComparisonParameters ): - self.ignored_attrs = [ + self.ignored_attrs = set(settings.ignored_attributes) | { "track_id", # changes from task to task, can't be defined manually with the same name "keyframe", # indicates the way annotation obtained, meaningless to compare "z_order", # changes from frame to frame, compared by other means "group", # changes from job to job, compared by other means - "rotation", # should be handled by other means - "outside", # should be handled by other means - ] - self.included_ann_types = [ - dm.AnnotationType.bbox, - dm.AnnotationType.points, - dm.AnnotationType.mask, - dm.AnnotationType.polygon, - dm.AnnotationType.polyline, - dm.AnnotationType.skeleton, - ] + "rotation", # handled by other means + "outside", # handled by other means + } + self.included_ann_types = settings.included_annotation_types self._annotation_comparator = _DistanceComparator( categories, included_ann_types=set(self.included_ann_types) - { dm.AnnotationType.mask # masks are compared together with polygons }, return_distances=True, - panoptic_comparison=True - ) - self._annotation_comparator.iou_threshold = iou_threshold - - self.coverage_threshold = coverage_threshold - self.group_match_threshold = group_match_threshold + panoptic_comparison=settings.panoptic_comparison, + iou_threshold=settings.iou_threshold, + oks_sigma=settings.oks_sigma, + line_torso_radius=settings.line_thickness, + oriented_lines=False # should not be taken from outside, handled differently + ) + self.coverage_threshold = settings.object_visibility_threshold + self.group_match_threshold = settings.group_match_threshold def match_attrs(self, ann_a: dm.Annotation, ann_b: dm.Annotation): a_attrs = ann_a.attributes @@ -1462,10 +1504,18 @@ def get_distance(self, class _DatasetComparator: + DEFAULT_SETTINGS = ComparisonParameters() + def __init__(self, ds_data_provider: JobDataProvider, gt_data_provider: JobDataProvider, + *, + settings: Optional[ComparisonParameters] = None ) -> None: + if settings is None: + settings = self.DEFAULT_SETTINGS + self.settings = settings + self._ds_data_provider = ds_data_provider self._gt_data_provider = gt_data_provider self._ds_dataset = self._ds_data_provider.dm_dataset @@ -1473,21 +1523,7 @@ def __init__(self, self._frame_results: Dict[int, ComparisonReportFrameSummary] = {} - self.comparator = _Comparator(self._gt_dataset.categories(), iou_threshold=0.4) - - # iou_threshold is used for distinction between matched / unmatched shapes - # overlap_threshold is used for distinction between strong / weak (low_overlap) matches - self.overlap_threshold = 0.8 - - # Indicates that polylines have direction - self.oriented_lines = True - self.line_orientation_threshold = 0.1 - - # Checks for mismatching groupings - self.compare_groups = True - - # Check for fully-covered annotations - self.check_covered_annotations = True + self.comparator = _Comparator(self._gt_dataset.categories(), settings=settings) self.included_frames = gt_data_provider.job_data._db_job.segment.frame_set @@ -1562,7 +1598,7 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): for gt_ann, ds_ann in itertools.chain(matches, mismatches): similarity = _get_similarity(gt_ann, ds_ann) - if similarity and similarity < self.overlap_threshold: + if similarity and similarity < self.settings.low_overlap_threshold: conflicts.append(AnnotationConflict( frame_id=frame_id, type=AnnotationConflictType.LOW_OVERLAP, @@ -1619,10 +1655,13 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): mean_iou = np.mean(resulting_distances) if resulting_distances else 0 - if self.oriented_lines and dm.AnnotationType.polyline in self.comparator.included_ann_types: + if ( + self.settings.oriented_lines and + dm.AnnotationType.polyline in self.comparator.included_ann_types + ): # Check line directions line_matcher = _LineMatcher( - torso_r=self.comparator._annotation_comparator.line_torso_radius, + torso_r=self.settings.line_thickness, oriented=True, scale=np.prod(gt_item.image.size) ) @@ -1636,7 +1675,10 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): # need to filter computation errors from line approximation # and (almost) orientation-independent cases - if non_oriented_distance - oriented_distance > self.line_orientation_threshold: + if ( + non_oriented_distance - oriented_distance > + self.settings.line_orientation_threshold + ): conflicts.append( AnnotationConflict( frame_id=frame_id, @@ -1648,7 +1690,7 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): ) ) - if self.check_covered_annotations: + if self.settings.check_covered_annotations: ds_covered_anns = self.comparator.find_covered(ds_item) for ds_ann in ds_covered_anns: @@ -1676,7 +1718,7 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): ) ) - if self.compare_groups: + if self.settings.compare_groups: gt_groups, gt_group_map = self.comparator.find_groups(gt_item) ds_groups, ds_group_map = self.comparator.find_groups(ds_item) matched_objects = matches + mismatches @@ -1861,11 +1903,7 @@ def generate_report(self) -> ComparisonReport: gt_annotations_count = np.sum(gt_ann_counts) - gt_ann_counts[confusion_matrix_labels_rmap[None]] return ComparisonReport( - parameters=ComparisonReportParameters( - included_annotation_types=[t.name for t in self.comparator.included_ann_types], - iou_threshold=self.comparator._annotation_comparator.iou_threshold, - ignored_attributes=self.comparator.ignored_attrs, - ), + parameters=self.settings, comparison_summary=ComparisonReportComparisonSummary( frame_share_percent=len(intersection_frames) / (len(self._ds_dataset) or 1), From 20e6f06817491bff04b8093419c17cd5a0693dd2 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 10 May 2023 21:30:08 +0300 Subject: [PATCH 097/257] Add quality settings api --- .../engine/migrations/0081_qualitysettings.py | 33 +++ cvat/apps/engine/models.py | 43 ++++ cvat/apps/engine/quality_control.py | 43 ++-- cvat/apps/engine/serializers.py | 46 +++- cvat/apps/engine/urls.py | 1 + cvat/apps/engine/views.py | 33 ++- cvat/schema.yml | 226 +++++++++++++++++- 7 files changed, 404 insertions(+), 21 deletions(-) create mode 100644 cvat/apps/engine/migrations/0081_qualitysettings.py diff --git a/cvat/apps/engine/migrations/0081_qualitysettings.py b/cvat/apps/engine/migrations/0081_qualitysettings.py new file mode 100644 index 000000000000..bd335f64f14a --- /dev/null +++ b/cvat/apps/engine/migrations/0081_qualitysettings.py @@ -0,0 +1,33 @@ +# Generated by Django 3.2.18 on 2023-05-10 17:20 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('engine', '0080_annotationconflict_importance'), + ] + + operations = [ + migrations.CreateModel( + name='QualitySettings', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('iou_threshold', models.FloatField()), + ('oks_sigma', models.FloatField()), + ('line_thickness', models.FloatField()), + ('low_overlap_threshold', models.FloatField()), + ('oriented_lines', models.BooleanField()), + ('line_orientation_threshold', models.FloatField()), + ('compare_groups', models.BooleanField()), + ('group_match_threshold', models.FloatField()), + ('check_covered_annotations', models.BooleanField()), + ('object_visibility_threshold', models.FloatField()), + ('panoptic_comparison', models.BooleanField()), + ('compare_attributes', models.BooleanField()), + ('task', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='quality_settings', to='engine.task')), + ], + ), + ] diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index 7d3c2fa5419b..b314d17a887b 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: MIT from __future__ import annotations +from copy import deepcopy import os import re @@ -1208,3 +1209,45 @@ class AnnotationId(models.Model): obj_id = models.PositiveIntegerField() job_id = models.PositiveIntegerField() type = models.CharField(max_length=32, choices=AnnotationType.choices()) + + +class QualitySettings(models.Model): + task = models.OneToOneField(Task, + on_delete=models.CASCADE, related_name='quality_settings' + ) + + iou_threshold = models.FloatField() + oks_sigma = models.FloatField() + line_thickness = models.FloatField() + + low_overlap_threshold = models.FloatField() + + oriented_lines = models.BooleanField() + line_orientation_threshold = models.FloatField() + + compare_groups = models.BooleanField() + group_match_threshold = models.FloatField() + + check_covered_annotations = models.BooleanField() + object_visibility_threshold = models.FloatField() + + panoptic_comparison = models.BooleanField() + + compare_attributes = models.BooleanField() + + def __init__(self, *args: Any, **kwargs: Any) -> None: + params = deepcopy(self.get_defaults()) + params.update(kwargs) + super().__init__(*args, **params) + + @classmethod + def get_defaults(cls) -> dict: + import cvat.apps.engine.quality_control as qc + default_settings = qc.DatasetComparator.DEFAULT_SETTINGS.to_dict() + + existing_fields = {f.name for f in cls._meta.fields} + return {k: v for k, v in default_settings.items() if k in existing_fields} + + def to_dict(self): + from django.forms.models import model_to_dict + return model_to_dict(self) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index d23f98bcefa7..d645c59db50f 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -129,6 +129,9 @@ class ComparisonParameters(_Serializable): dm.AnnotationType.skeleton, ] + compare_attributes: bool = True + "Enables or disables attribute checks" + ignored_attributes: List[str] = [] iou_threshold: float = 0.4 @@ -153,7 +156,7 @@ class ComparisonParameters(_Serializable): """ compare_groups: bool = True - "Checks for mismatching groupings" + "Enables or disables group checks" group_match_threshold: float = 0.5 "Minimal IoU for groups to be considered matching" @@ -1503,7 +1506,7 @@ def get_distance(self, return pairwise_distances.get((id(gt_ann), id(ds_ann))) -class _DatasetComparator: +class DatasetComparator: DEFAULT_SETTINGS = ComparisonParameters() def __init__(self, @@ -1704,19 +1707,20 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): ) ) - for gt_ann, ds_ann in matches: - attribute_results = self.comparator.match_attrs(gt_ann, ds_ann) - if len(attribute_results[1]) + len(attribute_results[2]) + len(attribute_results[3]): - conflicts.append( - AnnotationConflict( - frame_id=frame_id, - type=AnnotationConflictType.MISMATCHING_ATTRIBUTES, - annotation_ids=[ - self._dm_ann_to_ann_id(ds_ann, self._ds_dataset), - self._dm_ann_to_ann_id(gt_ann, self._gt_dataset), - ] + if self.settings.compare_attributes: + for gt_ann, ds_ann in matches: + attribute_results = self.comparator.match_attrs(gt_ann, ds_ann) + if any(attribute_results[1:]): + conflicts.append( + AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.MISMATCHING_ATTRIBUTES, + annotation_ids=[ + self._dm_ann_to_ann_id(ds_ann, self._ds_dataset), + self._dm_ann_to_ann_id(gt_ann, self._gt_dataset), + ] + ) ) - ) if self.settings.compare_groups: gt_groups, gt_group_map = self.comparator.find_groups(gt_item) @@ -2088,10 +2092,14 @@ def _update_task_quality_metrics(cls, *, task_id: int): for job in jobs } + quality_params = cls._get_task_quality_params(task) + job_comparison_reports: Dict[int, ComparisonReport] = {} for job in jobs: job_data_provider = job_data_providers[job.id] - comparator = _DatasetComparator(job_data_provider, gt_job_data_provider) + comparator = DatasetComparator( + job_data_provider, gt_job_data_provider, settings=quality_params + ) job_comparison_reports[job.id] = comparator.generate_report() # Release resources @@ -2278,3 +2286,8 @@ def _save_reports(cls, *, task_report, job_reports) -> models.QualityReport: objects=db_ann_ids, flt_param={} ) + + @classmethod + def _get_task_quality_params(cls, task: models.Task) -> Optional[ComparisonParameters]: + quality_params, _ = models.QualitySettings.objects.get_or_create(task=task) + return ComparisonParameters.from_dict(quality_params.to_dict()) diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index 59eda614dc44..bb96e79e8044 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -674,11 +674,12 @@ def create(self, validated_data): try: job = super().create(validated_data) - job.make_dirs() - return job except models.TaskGroundTruthJobsLimitError as ex: raise serializers.ValidationError(ex.message) from ex + job.make_dirs() + return job + def update(self, instance, validated_data): state = validated_data.get('state') stage = validated_data.get('stage') @@ -981,6 +982,7 @@ class Meta: 'status', 'data_chunk_size', 'data_compressed_chunk_type', 'data_original_chunk_type', 'size', 'image_quality', 'data', 'dimension', 'subset', 'organization', 'target_storage', 'source_storage', 'jobs', 'labels', + 'quality_settings' ) read_only_fields = fields extra_kwargs = { @@ -1950,3 +1952,43 @@ class Meta: 'created_date', 'target_last_updated', 'gt_last_updated', ) read_only_fields = fields + + +class QualitySettingsSerializer(serializers.ModelSerializer): + class Meta: + model = models.QualitySettings + fields = ( + 'task', + + 'iou_threshold', + 'oks_sigma', + 'line_thickness', + + 'low_overlap_threshold', + + 'oriented_lines', + 'line_orientation_threshold', + + 'compare_groups', + 'group_match_threshold', + + 'check_covered_annotations', + 'object_visibility_threshold', + + 'panoptic_comparison', + + 'compare_attributes', + ) + read_only_fields = ('task', ) + extra_kwargs = { + k: {'required': False} + for k in fields + } + + def validate(self, attrs): + for k, v in attrs.items(): + if k.endswith('_threshold') or k in ['oks_sigma', 'line_thickness']: + if not 0 <= v <= 1: + raise serializers.ValidationError(f"{k} must be in the range [0; 1]") + + return super().validate(attrs) diff --git a/cvat/apps/engine/urls.py b/cvat/apps/engine/urls.py index 56ea2e89c5a5..94e6557224d6 100644 --- a/cvat/apps/engine/urls.py +++ b/cvat/apps/engine/urls.py @@ -24,6 +24,7 @@ router.register('cloudstorages', views.CloudStorageViewSet) router.register('quality_reports', views.QualityReportViewSet) router.register('conflicts', views.ConflictsViewSet) +router.register('quality_settings', views.QualitySettingsViewSet) urlpatterns = [ # Entry point for a client diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index a8217423b1f7..e90d6b656990 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -47,7 +47,8 @@ from cvat.apps.engine.frame_provider import FrameProvider from cvat.apps.engine.media_extractors import get_mime from cvat.apps.engine.models import ( - AnnotationConflict, Job, JobType, Label, QualityReport, Task, Project, Issue, Data, + AnnotationConflict, Job, JobType, Label, QualitySettings, QualityReport, + Task, Project, Issue, Data, Comment, StorageMethodChoice, StorageChoice, CloudProviderChoice, Location ) @@ -57,7 +58,7 @@ DataMetaReadSerializer, DataMetaWriteSerializer, DataSerializer, FileInfoSerializer, JobReadSerializer, JobWriteSerializer, LabelSerializer, LabeledDataSerializer, - ProjectReadSerializer, ProjectWriteSerializer, + ProjectReadSerializer, ProjectWriteSerializer, QualitySettingsSerializer, RqStatusSerializer, TaskReadSerializer, TaskWriteSerializer, UserSerializer, PluginsSerializer, IssueReadSerializer, IssueWriteSerializer, CommentReadSerializer, CommentWriteSerializer, CloudStorageWriteSerializer, @@ -2321,7 +2322,10 @@ class QualityReportViewSet(viewsets.GenericViewSet, }) ordering_fields = list(filter_fields) ordering = 'id' - serializer_class = QualityReportSerializer + + def get_serializer_class(self): + # a separate method is required for drf-spectacular to work + return QualityReportSerializer def get_queryset(self): queryset = super().get_queryset() @@ -2369,6 +2373,29 @@ def debug(self, request): return HttpResponse({}) +@extend_schema(tags=['quality_settings']) +@extend_schema_view( + retrieve=extend_schema( + summary='Method returns details of a quality settings', + responses={ + '200': QualitySettingsSerializer, + }), +) +class QualitySettingsViewSet(viewsets.GenericViewSet, + mixins.RetrieveModelMixin, PartialUpdateModelMixin +): + queryset = QualitySettings.objects.select_related('task').all() + + iam_organization_field = 'task__organization' + + search_fields = [] + filter_fields = [] + ordering_fields = ['id'] + ordering = 'id' + + serializer_class = QualitySettingsSerializer + + def rq_exception_handler(rq_job, exc_type, exc_value, tb): rq_job.exc_info = "".join( traceback.format_exception_only(exc_type, exc_value)) diff --git a/cvat/schema.yml b/cvat/schema.yml index c19951565bc2..30bb4a58fe44 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -1195,6 +1195,10 @@ paths: - extra_annotation - mismatching_label - low_overlap + - mismatching_direction + - mismatching_attributes + - mismatching_groups + - covered_annotation tags: - conflicts security: @@ -4418,7 +4422,131 @@ paths: - basicAuth: [] responses: '200': - description: No response body + content: + application/vnd.cvat+json: + schema: + $ref: '#/components/schemas/QualityReport' + description: '' + /api/quality_reports/debug: + get: + operationId: quality_reports_retrieve_debug + parameters: + - in: header + name: X-Organization + schema: + type: string + - in: query + name: org + schema: + type: string + description: Organization unique slug + - in: query + name: org_id + schema: + type: integer + description: Organization identifier + - in: query + name: task_id + schema: + type: integer + tags: + - quality_reports + security: + - sessionAuth: [] + csrfAuth: [] + tokenAuth: [] + - signatureAuth: [] + - basicAuth: [] + responses: + '200': + content: + application/vnd.cvat+json: + schema: + $ref: '#/components/schemas/QualityReport' + description: '' + /api/quality_settings/{id}: + get: + operationId: quality_settings_retrieve + summary: Method returns details of a quality settings + parameters: + - in: header + name: X-Organization + schema: + type: string + - in: path + name: id + schema: + type: integer + description: A unique integer value identifying this quality settings. + required: true + - in: query + name: org + schema: + type: string + description: Organization unique slug + - in: query + name: org_id + schema: + type: integer + description: Organization identifier + tags: + - quality_settings + security: + - sessionAuth: [] + csrfAuth: [] + tokenAuth: [] + - signatureAuth: [] + - basicAuth: [] + responses: + '200': + content: + application/vnd.cvat+json: + schema: + $ref: '#/components/schemas/QualitySettings' + description: '' + patch: + operationId: quality_settings_partial_update + parameters: + - in: header + name: X-Organization + schema: + type: string + - in: path + name: id + schema: + type: integer + description: A unique integer value identifying this quality settings. + required: true + - in: query + name: org + schema: + type: string + description: Organization unique slug + - in: query + name: org_id + schema: + type: integer + description: Organization identifier + tags: + - quality_settings + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedQualitySettingsRequest' + security: + - sessionAuth: [] + csrfAuth: [] + tokenAuth: [] + - signatureAuth: [] + - basicAuth: [] + responses: + '200': + content: + application/vnd.cvat+json: + schema: + $ref: '#/components/schemas/QualitySettings' + description: '' /api/schema/: get: operationId: schema_retrieve @@ -6624,6 +6752,9 @@ components: AnnotationConflict: type: object properties: + id: + type: integer + readOnly: true frame: type: integer readOnly: true @@ -6638,6 +6769,10 @@ components: report_id: type: integer readOnly: true + importance: + allOf: + - $ref: '#/components/schemas/ImportanceEnum' + readOnly: true required: - annotation_ids AnnotationConflictTypeEnum: @@ -6646,6 +6781,10 @@ components: - extra_annotation - mismatching_label - low_overlap + - mismatching_direction + - mismatching_attributes + - mismatching_groups + - covered_annotation type: string AnnotationFileRequest: type: object @@ -7417,6 +7556,11 @@ components: - random_uniform - manual type: string + ImportanceEnum: + enum: + - warning + - error + type: string InputTypeEnum: enum: - checkbox @@ -8704,6 +8848,40 @@ components: type: string minLength: 1 writeOnly: true + PatchedQualitySettingsRequest: + type: object + properties: + iou_threshold: + type: number + format: double + oks_sigma: + type: number + format: double + line_thickness: + type: number + format: double + low_overlap_threshold: + type: number + format: double + oriented_lines: + type: boolean + line_orientation_threshold: + type: number + format: double + compare_groups: + type: boolean + group_match_threshold: + type: number + format: double + check_covered_annotations: + type: boolean + object_visibility_threshold: + type: number + format: double + panoptic_comparison: + type: boolean + compare_attributes: + type: boolean PatchedTaskWriteRequest: type: object properties: @@ -9001,6 +9179,10 @@ components: format: double conflict_count: type: integer + warning_count: + type: integer + error_count: + type: integer valid_count: type: integer ds_count: @@ -9010,15 +9192,54 @@ components: required: - conflict_count - ds_count + - error_count - frame_count - frame_share_percent - gt_count - valid_count + - warning_count QualityReportTarget: enum: - job - task type: string + QualitySettings: + type: object + properties: + task: + type: integer + readOnly: true + iou_threshold: + type: number + format: double + oks_sigma: + type: number + format: double + line_thickness: + type: number + format: double + low_overlap_threshold: + type: number + format: double + oriented_lines: + type: boolean + line_orientation_threshold: + type: number + format: double + compare_groups: + type: boolean + group_match_threshold: + type: number + format: double + check_covered_annotations: + type: boolean + object_visibility_threshold: + type: number + format: double + panoptic_comparison: + type: boolean + compare_attributes: + type: boolean RegisterSerializerEx: type: object properties: @@ -9490,6 +9711,9 @@ components: $ref: '#/components/schemas/JobsSummary' labels: $ref: '#/components/schemas/LabelsSummary' + quality_settings: + type: integer + readOnly: true required: - jobs - labels From a919b4640cb093aaf7a49490321dbe2b2e02954d Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 11 May 2023 11:17:35 +0300 Subject: [PATCH 098/257] Initialize quality settings on task creation --- cvat/apps/engine/signals.py | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/cvat/apps/engine/signals.py b/cvat/apps/engine/signals.py index cd17e5c3d288..3a48c2c4dfab 100644 --- a/cvat/apps/engine/signals.py +++ b/cvat/apps/engine/signals.py @@ -9,7 +9,7 @@ from django.dispatch import receiver from .models import (Annotation, CloudStorage, Data, Job, Profile, Project, - StatusChoice, Task) + StatusChoice, Task, QualitySettings) from cvat.apps.engine import quality_control as qc @@ -80,21 +80,36 @@ def __delete_cloudstorage_handler(instance, **kwargs): shutil.rmtree(instance.get_storage_dirname(), ignore_errors=True) -# TODO: handle nested field updates (e.g. labels, annotations, import, export, etc.) @receiver(post_save, sender=Job, dispatch_uid=__name__ + ".save_job-update_quality_metrics") @receiver(post_save, sender=Task, dispatch_uid=__name__ + ".save_task-update_quality_metrics") +@receiver(post_save, sender=Project, + dispatch_uid=__name__ + ".save_project-update_quality_metrics") @receiver(post_save, sender=Annotation, dispatch_uid=__name__ + ".save_annotation-update_quality_metrics") def __save_job__update_quality_metrics(instance, created, **kwargs): - if isinstance(instance, Task): - task = instance + tasks = [] + + if isinstance(instance, Project): + tasks += list(instance.tasks.all()) + elif isinstance(instance, Task): + tasks.append(instance) elif isinstance(instance, Job): - task = instance.segment.task + tasks.append(instance.segment.task) elif isinstance(instance, Annotation): - task = instance.job.segment.task + tasks.append(instance.job.segment.task) else: assert False - qc.QueueJobManager().schedule_quality_check_job(task) + for task in tasks: + qc.QueueJobManager().schedule_quality_check_job(task) + + +@receiver(post_save, sender=Task, + dispatch_uid=__name__ + ".save_task-initialize_quality_settings") +def __save_task__initialize_quality_settings(instance, created, **kwargs): + # Initializes default quality settings for the task + # this is done here to make the components decoupled + if created: + QualitySettings.objects.get_or_create(task=instance) From f2c1e0113e35fe3ba7c3062e444bf9348ec870ac Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 11 May 2023 12:43:58 +0300 Subject: [PATCH 099/257] Add access rules to new endpoints --- cvat/apps/engine/urls.py | 6 +- cvat/apps/iam/permissions.py | 75 ++++++++++++++++- cvat/apps/iam/rules/quality_settings.rego | 99 +++++++++++++++++++++++ 3 files changed, 174 insertions(+), 6 deletions(-) create mode 100644 cvat/apps/iam/rules/quality_settings.rego diff --git a/cvat/apps/engine/urls.py b/cvat/apps/engine/urls.py index 94e6557224d6..bce714cd189e 100644 --- a/cvat/apps/engine/urls.py +++ b/cvat/apps/engine/urls.py @@ -22,9 +22,9 @@ router.register('comments', views.CommentViewSet) router.register('labels', views.LabelViewSet) router.register('cloudstorages', views.CloudStorageViewSet) -router.register('quality_reports', views.QualityReportViewSet) -router.register('conflicts', views.ConflictsViewSet) -router.register('quality_settings', views.QualitySettingsViewSet) +router.register('quality_reports', views.QualityReportViewSet, basename='quality_reports') +router.register('conflicts', views.ConflictsViewSet, basename='annotation_conflicts') +router.register('quality_settings', views.QualitySettingsViewSet, basename='quality_settings') urlpatterns = [ # Entry point for a client diff --git a/cvat/apps/iam/permissions.py b/cvat/apps/iam/permissions.py index 94fa9db7f38b..f67a2e4f319c 100644 --- a/cvat/apps/iam/permissions.py +++ b/cvat/apps/iam/permissions.py @@ -18,7 +18,7 @@ from rest_framework.permissions import BasePermission from cvat.apps.organizations.models import Membership, Organization -from cvat.apps.engine.models import AnnotationConflict, CloudStorage, Label, Project, QualityReport, Task, Job, Issue +from cvat.apps.engine.models import AnnotationConflict, CloudStorage, Label, Project, QualityReport, QualitySettings, Task, Job, Issue from cvat.apps.webhooks.models import WebhookTypeChoice from cvat.utils.http import make_requests_session @@ -1610,7 +1610,7 @@ def create(cls, request, view, obj): Scopes = __class__.Scopes permissions = [] - if view.basename == 'quality_report': + if view.basename == 'quality_reports': for scope in cls.get_scopes(request, view, obj): if scope == Scopes.VIEW: obj = cast(QualityReport, obj) @@ -1668,6 +1668,7 @@ def get_resource(self): return data + class AnnotationConflictPermission(OpenPolicyAgentPermission): obj: Optional[AnnotationConflict] @@ -1679,7 +1680,7 @@ def create(cls, request, view, obj): Scopes = __class__.Scopes permissions = [] - if view.basename == 'conflict': + if view.basename == 'annotation_conflicts': for scope in cls.get_scopes(request, view, obj): if scope == Scopes.LIST and isinstance(obj, Task): permissions.append(TaskPermission.create_base_perm(request, view, @@ -1704,6 +1705,74 @@ def get_resource(self): return None +class QualitySettingPermission(OpenPolicyAgentPermission): + obj: Optional[QualitySettings] + + class Scopes(StrEnum): + LIST = 'list' + VIEW = 'view' + + @classmethod + def create(cls, request, view, obj): + Scopes = __class__.Scopes + + permissions = [] + if view.basename == 'quality_settings': + for scope in cls.get_scopes(request, view, obj): + if scope == Scopes.VIEW: + obj = cast(QualitySettings, obj) + + # Access rights are the same as in the owning task + # This component doesn't define its own rules in this case + owning_perm = TaskPermission.create_base_perm(request, view, + scope=TaskPermission.Scopes.VIEW, obj=obj.task) + permissions.append(owning_perm) + else: + permissions.append(cls.create_base_perm(request, view, scope, obj)) + + return permissions + + def __init__(self, **kwargs): + super().__init__(**kwargs) + self.url = settings.IAM_OPA_DATA_URL + '/quality_reports/allow' + + @staticmethod + def get_scopes(request, view, obj): + Scopes = __class__.Scopes + return [{ + 'list': Scopes.LIST, + 'retrieve': Scopes.VIEW, + 'data': Scopes.VIEW, + }.get(view.action, None)] + + def get_resource(self): + data = None + + if self.obj: + task = self.obj.task + if task.project: + organization = task.project.organization + else: + organization = task.organization + + data = { + "id": self.obj.id, + 'organization': { + "id": getattr(organization, 'id', None) + }, + "task": { + "owner": { "id": getattr(task.owner, 'id', None) }, + "assignee": { "id": getattr(task.assignee, 'id', None) } + } if task else None, + "project": { + "owner": { "id": getattr(task.project.owner, 'id', None) }, + "assignee": { "id": getattr(task.project.assignee, 'id', None) } + } if task.project else None, + } + + return data + + class PolicyEnforcer(BasePermission): # pylint: disable=no-self-use def check_permission(self, request, view, obj): diff --git a/cvat/apps/iam/rules/quality_settings.rego b/cvat/apps/iam/rules/quality_settings.rego new file mode 100644 index 000000000000..84182f36f355 --- /dev/null +++ b/cvat/apps/iam/rules/quality_settings.rego @@ -0,0 +1,99 @@ +package quality_settings + +import future.keywords.if +import future.keywords.in + +import data.utils +import data.organizations + +# input: { +# "scope": <"view"> or null, +# "auth": { +# "user": { +# "id": , +# "privilege": <"admin"|"business"|"user"|"worker"> or null +# }, +# "organization": { +# "id": , +# "owner": { +# "id": +# }, +# "user": { +# "role": <"owner"|"maintainer"|"supervisor"|"worker"> or null +# } +# } or null, +# }, +# "resource": { +# "id": , +# "owner": { "id": }, +# "organization": { "id": } or null, +# "task": { +# "id": , +# "owner": { "id": }, +# "assignee": { "id": }, +# "organization": { "id": } or null, +# } or null, +# "project": { +# "id": , +# "owner": { "id": }, +# "assignee": { "id": }, +# "organization": { "id": } or null, +# } or null, +# } +# } + +default allow = false + +allow { + utils.is_admin +} + +allow { + input.scope == utils.LIST + utils.is_sandbox +} + +allow { + input.scope == utils.LIST + organizations.is_member +} + +filter = [] { # Django Q object to filter list of entries + utils.is_admin + utils.is_sandbox +} else = qobject { + utils.is_admin + utils.is_organization + org := input.auth.organization + qobject := [ + {"task__organization": org.id}, "|", + {"task__project__organization": org.id}, "|", + ] +} else = qobject { + utils.is_sandbox + user := input.auth.user + qobject := [ + {"task__owner_id": user.id}, "|", + {"task__assignee_id": user.id}, "|", + {"task__project__owner_id": user.id}, "|", + {"task__project__assignee_id": user.id}, "|", + ] +} else = qobject { + utils.is_organization + utils.has_perm(utils.USER) + organizations.has_perm(organizations.MAINTAINER) + org := input.auth.organization + qobject := [ + {"task__organization": org.id}, "|", + {"task__project__organization": org.id}, "|", + ] +} else = qobject { + organizations.has_perm(organizations.WORKER) + user := input.auth.user + qobject := [ + {"task__owner_id": user.id}, "|", + {"task__assignee_id": user.id}, "|", + {"task__project__owner_id": user.id}, "|", + {"task__project__assignee_id": user.id}, "|", + ] +} From 637615b1741ed816d1d38e546e7c8d23f54e33ae Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 11 May 2023 14:32:27 +0300 Subject: [PATCH 100/257] Update .vscode/launch.json Co-authored-by: Roman Donchenko --- .vscode/launch.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index accf76a1d4a0..28056a0edd62 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -85,7 +85,7 @@ "justMyCode": false, }, { - "name": "REST API tests: Attach to RQ quality rerports worker", + "name": "REST API tests: Attach to RQ quality reports worker", "type": "python", "request": "attach", "connect": { From b369450e05f6cf4360a7886dc743c12a0b6d3f8d Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 11 May 2023 14:33:56 +0300 Subject: [PATCH 101/257] Fix debug task name --- .vscode/launch.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index accf76a1d4a0..28056a0edd62 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -85,7 +85,7 @@ "justMyCode": false, }, { - "name": "REST API tests: Attach to RQ quality rerports worker", + "name": "REST API tests: Attach to RQ quality reports worker", "type": "python", "request": "attach", "connect": { From 1c708e5f19a597c7043b7ad73511f5576ca5fa83 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 11 May 2023 20:33:56 +0300 Subject: [PATCH 102/257] Fix frame retrieval error in non-first jobs --- cvat-core/src/frames.ts | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/cvat-core/src/frames.ts b/cvat-core/src/frames.ts index 9b2b5099ac84..1a99573cc091 100644 --- a/cvat-core/src/frames.ts +++ b/cvat-core/src/frames.ts @@ -317,20 +317,19 @@ FrameData.prototype.data.implementation = async function (onServerRequest) { function getFrameMeta(jobID, frame): FramesMetaData['frames'][0] { const { meta, mode, startFrame } = frameDataCache[jobID]; - let size = null; + let frame_meta = null; if (mode === 'interpolation') { - [size] = meta.frames; + [frame_meta] = meta.frames; } else if (mode === 'annotation') { - if (frame >= meta.size) { - return null; - // throw new ArgumentError(`Meta information about frame ${frame} can't be received from the server`); + if (frame > meta.stop_frame) { + throw new ArgumentError(`Meta information about frame ${frame} can't be received from the server`); } - size = meta.frames[frame - startFrame]; + frame_meta = meta.frames[frame - startFrame]; } else { throw new DataError(`Invalid mode is specified ${mode}`); } - return size; + return frame_meta; } class FrameBuffer { @@ -685,7 +684,6 @@ export async function getFrame( nextChunkRequest: null, }; - // relevant only for video chunks const frameMeta = getFrameMeta(jobID, frame); frameDataCache[jobID].provider.setRenderSize(frameMeta.width, frameMeta.height); } From 00813cd0c32e94546cf7a5aa92e06a4767a00339 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 12 May 2023 00:05:21 +0300 Subject: [PATCH 103/257] Fix points matching --- cvat/apps/engine/quality_control.py | 94 ++++++++++++++++++++--------- 1 file changed, 67 insertions(+), 27 deletions(-) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index d645c59db50f..f003c381dde8 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -660,8 +660,8 @@ def _OKS(a, b, sigma=0.1, bbox=None, scale=None, visibility=None): @define(kw_only=True) -class _PointsMatcher(dm.ops.PointsMatcher): - def distance(self, a, b): +class _KeypointsMatcher(dm.ops.PointsMatcher): + def distance(self, a: dm.Points, b: dm.Points) -> float: a_bbox = self.instance_map[id(a)][1] b_bbox = self.instance_map[id(b)][1] if dm.ops.bbox_iou(a_bbox, b_bbox) <= 0: @@ -1039,10 +1039,8 @@ def _get_compiled_mask( instance_ids=(iid + 1 for iid in instance_ids), ) - a_anns = _get_segmentations(item_a) - b_anns = _get_segmentations(item_b) - a_instances, a_instance_map = _find_instances(a_anns) - b_instances, b_instance_map = _find_instances(b_anns) + a_instances, a_instance_map = _find_instances(_get_segmentations(item_a)) + b_instances, b_instance_map = _find_instances(_get_segmentations(item_b)) if self.panoptic_comparison: a_compiled_mask = _get_compiled_mask( @@ -1157,35 +1155,77 @@ def match_lines(self, item_a, item_b): def match_points(self, item_a, item_b): a_points = self._get_ann_type(dm.AnnotationType.points, item_a) b_points = self._get_ann_type(dm.AnnotationType.points, item_b) - if not a_points and not b_points: - return [], [], [], [] - instance_map = {} - for s in [item_a.annotations, item_b.annotations]: - s_instances = dm.ops.find_instances(s) - for instance_group in s_instances: + instance_map = {} # points id -> (instance group, instance bbox) + for source_anns in [item_a.annotations, item_b.annotations]: + source_instances = dm.ops.find_instances(source_anns) + for instance_group in source_instances: instance_bbox = self._instance_bbox(instance_group) for ann in instance_group: - instance_map[id(ann)] = [instance_group, instance_bbox] - matcher = _PointsMatcher(instance_map=instance_map, sigma=self.oks_sigma) + if ann.type == dm.AnnotationType.points: + instance_map[id(ann)] = [instance_group, instance_bbox] - distance = matcher.distance + img_h, img_w = item_a.image.size - if self.return_distances: - distance, distances = self._make_memoizing_distance(distance) + def _distance(a: dm.Points, b: dm.Points) -> float: + a_bbox = instance_map[id(a)][1] + b_bbox = instance_map[id(b)][1] + a_area = a_bbox[2] * a_bbox[3] + b_area = b_bbox[2] * b_bbox[3] - returned_values = _match_segments( - a_points, - b_points, - dist_thresh=self.iou_threshold, - distance=distance, - ) + if a_area == 0 and b_area == 0: + # Simple case: singular points without bbox + # match them in the image space + return _OKS(a, b, sigma=self.oks_sigma, scale=img_h * img_w) - if self.return_distances: - returned_values = returned_values + (distances, ) + else: + # Complex case: multiple points, grouped points, points with a bbox + # Try to align points and then return the metric + # match them in their bbox space - return returned_values + if dm.ops.bbox_iou(a_bbox, b_bbox) <= 0: + return 0 + + bbox = dm.ops.mean_bbox([a_bbox, b_bbox]) + scale = bbox[2] * bbox[3] + + a_points = np.reshape(a.points, (-1, 2)) + b_points = np.reshape(b.points, (-1, 2)) + + matches, mismatches, a_extra, b_extra = _match_segments( + range(len(a_points)), + range(len(b_points)), + distance=lambda ai, bi: _OKS( + dm.Points(a_points[ai]), dm.Points(b_points[bi]), + sigma=self.oks_sigma, scale=scale + ), + dist_thresh=self.iou_threshold, + label_matcher=lambda ai, bi: True + ) + + # the exact array is determined by the label matcher + # all the points will have the same match status, + # because there is only 1 shared label for all the points + matched_points = matches + mismatches + + a_sorting_indices = [ai for ai, _ in matched_points] + a_points = a_points[a_sorting_indices] + + b_sorting_indices = [bi for _, bi in matched_points] + b_points = b_points[b_sorting_indices] + + # Compute OKS for 2 groups of points, matching points aligned + dists = np.linalg.norm(a_points - b_points, axis=1) + return np.sum( + np.exp(-(dists**2) / (2 * scale * (2 * self.oks_sigma) ** 2)) + ) / (len(matched_points) + len(a_extra) + len(b_extra)) + + return self._match_segments(dm.AnnotationType.points, item_a, item_b, + a_objs=a_points, + b_objs=b_points, + distance=_distance, + ) def _get_skeleton_info(self, skeleton_label_id: int): label_cat = cast(dm.LabelCategories, self.categories[dm.AnnotationType.label]) @@ -1265,7 +1305,7 @@ def match_skeletons(self, item_a, item_b): for ann in instance_group: instance_map[id(ann)] = [instance_group, instance_bbox] - matcher = _PointsMatcher(instance_map=instance_map, sigma=self.oks_sigma) + matcher = _KeypointsMatcher(instance_map=instance_map, sigma=self.oks_sigma) results = self._match_segments( dm.AnnotationType.points, item_a, item_b, From dbc2a487b156b4567645dda2f424e28f41f03e32 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 12 May 2023 12:36:55 +0300 Subject: [PATCH 104/257] Rename NORMAL to ANNOTATION job type --- cvat-core/src/enums.ts | 2 +- cvat-core/src/session.ts | 2 +- cvat-ui/src/actions/annotation-actions.ts | 2 +- .../src/components/jobs-page/jobs-content.tsx | 2 +- .../task-analytics-page/quality/job-list.tsx | 2 +- cvat-ui/src/components/task-page/job-list.tsx | 2 +- cvat/apps/dataset_manager/bindings.py | 2 +- cvat/apps/dataset_manager/task.py | 4 +- cvat/apps/engine/backup.py | 9 ++-- .../migrations/0068_auto_20230406_1333.py | 2 +- .../engine/migrations/0082_alter_job_type.py | 37 +++++++++++++ cvat/apps/engine/models.py | 4 +- cvat/apps/engine/quality_control.py | 2 +- tests/python/rest_api/test_jobs.py | 52 ++----------------- tests/python/rest_api/test_tasks.py | 8 +-- 15 files changed, 64 insertions(+), 68 deletions(-) create mode 100644 cvat/apps/engine/migrations/0082_alter_job_type.py diff --git a/cvat-core/src/enums.ts b/cvat-core/src/enums.ts index fe42f6e86c92..1246d536ccbc 100644 --- a/cvat-core/src/enums.ts +++ b/cvat-core/src/enums.ts @@ -35,7 +35,7 @@ export enum JobState { } export enum JobType { - NORMAL = 'normal', + ANNOTATION = 'annotation', GROUND_TRUTH = 'ground_truth', } diff --git a/cvat-core/src/session.ts b/cvat-core/src/session.ts index 3b7ec957bd77..ab1ca48b9b87 100644 --- a/cvat-core/src/session.ts +++ b/cvat-core/src/session.ts @@ -373,7 +373,7 @@ export class Job extends Session { assignee: null, stage: undefined, state: undefined, - type: JobType.NORMAL, + type: JobType.ANNOTATION, start_frame: undefined, stop_frame: undefined, project_id: null, diff --git a/cvat-ui/src/actions/annotation-actions.ts b/cvat-ui/src/actions/annotation-actions.ts index e2df7ed65258..744c8d0f0b6a 100644 --- a/cvat-ui/src/actions/annotation-actions.ts +++ b/cvat-ui/src/actions/annotation-actions.ts @@ -912,7 +912,7 @@ export function getJobAsync( const [job] = await cvat.jobs.get({ jobID: jid }); let gtJob = null; - if (job.type === JobType.NORMAL) { + if (job.type === JobType.ANNOTATION) { try { const [task] = await cvat.tasks.get({ id: tid }); [gtJob] = task.jobs.filter((_job: Job) => _job.type === JobType.GROUND_TRUTH); diff --git a/cvat-ui/src/components/jobs-page/jobs-content.tsx b/cvat-ui/src/components/jobs-page/jobs-content.tsx index 3105d5212494..db34eece8cfd 100644 --- a/cvat-ui/src/components/jobs-page/jobs-content.tsx +++ b/cvat-ui/src/components/jobs-page/jobs-content.tsx @@ -21,7 +21,7 @@ function JobsContentComponent(): JSX.Element { return (
- {jobs.filter((job: Job) => job.type === JobType.NORMAL).map((job: Job): JSX.Element => ( + {jobs.filter((job: Job) => job.type === JobType.ANNOTATION).map((job: Job): JSX.Element => ( ))} diff --git a/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx b/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx index c052abd6de4c..51567d9f1375 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx @@ -33,7 +33,7 @@ function JobListComponent(props: Props): JSX.Element { const history = useHistory(); const { id: taskId } = taskInstance; const { jobs } = taskInstance; - const [renderedJobs] = useState(jobs.filter((job: Job) => job.type === JobType.NORMAL)); + const [renderedJobs] = useState(jobs.filter((job: Job) => job.type === JobType.ANNOTATION)); const [jobsReports, setJobsReports] = useState>({}); const jobReportsFromState: QualityReport[] = useSelector((state: CombinedState) => state.analytics.quality.jobsReports); diff --git a/cvat-ui/src/components/task-page/job-list.tsx b/cvat-ui/src/components/task-page/job-list.tsx index 8adb2eb2eb2b..bf3f369374c7 100644 --- a/cvat-ui/src/components/task-page/job-list.tsx +++ b/cvat-ui/src/components/task-page/job-list.tsx @@ -93,7 +93,7 @@ function JobListComponent(props: Props): JSX.Element { const history = useHistory(); const { id: taskId } = taskInstance; let { jobs } = taskInstance; - jobs = jobs.filter((job: Job) => job.type === JobType.NORMAL); + jobs = jobs.filter((job: Job) => job.type === JobType.ANNOTATION); function sorter(path: string) { return (obj1: any, obj2: any): number => { diff --git a/cvat/apps/dataset_manager/bindings.py b/cvat/apps/dataset_manager/bindings.py index b4aa97894e6d..1d5f3e3ca9f3 100644 --- a/cvat/apps/dataset_manager/bindings.py +++ b/cvat/apps/dataset_manager/bindings.py @@ -771,7 +771,7 @@ def meta_for_task(db_task, host, label_mapping=None): host, db_segment.job_set.first().id))] )) for db_segment in db_segments - if db_segment.job_set.first().type == JobType.NORMAL + if db_segment.job_set.first().type == JobType.ANNOTATION ]), ("owner", OrderedDict([ diff --git a/cvat/apps/dataset_manager/task.py b/cvat/apps/dataset_manager/task.py index 8dcf2c8bc9fd..62663afa210b 100644 --- a/cvat/apps/dataset_manager/task.py +++ b/cvat/apps/dataset_manager/task.py @@ -627,7 +627,7 @@ def __init__(self, pk): # Postgres doesn't guarantee an order by default without explicit order_by self.db_jobs = models.Job.objects.select_related("segment").filter( - segment__task_id=pk, type=models.JobType.NORMAL.value, + segment__task_id=pk, type=models.JobType.ANNOTATION.value, ).order_by('id') self.ir_data = AnnotationIR(self.db_task.dimension) @@ -679,7 +679,7 @@ def init_from_db(self): self.reset() for db_job in self.db_jobs: - if db_job.type != models.JobType.NORMAL: + if db_job.type != models.JobType.ANNOTATION: continue annotation = JobAnnotation(db_job.id, is_prefetched=True) diff --git a/cvat/apps/engine/backup.py b/cvat/apps/engine/backup.py index 286df0ff6f6a..3e6f68a49304 100644 --- a/cvat/apps/engine/backup.py +++ b/cvat/apps/engine/backup.py @@ -513,7 +513,10 @@ def _create_annotations(self, db_job, annotations): @staticmethod def _calculate_segment_size(jobs): # The type field will be missing in backups create before the GT jobs were introduced - jobs = [j for j in jobs if j.get("type", models.JobType.NORMAL) == models.JobType.NORMAL] + jobs = [ + j for j in jobs + if j.get("type", models.JobType.ANNOTATION) == models.JobType.ANNOTATION + ] segment_size = jobs[0]['stop_frame'] - jobs[0]['start_frame'] + 1 overlap = 0 if len(jobs) == 1 else jobs[0]['stop_frame'] - jobs[1]['start_frame'] + 1 @@ -628,7 +631,7 @@ def _import_gt_jobs(self, jobs): for job in jobs: # The type field will be missing in backups create before the GT jobs were introduced try: - raw_job_type = job.get("type", models.JobType.NORMAL.value) + raw_job_type = job.get("type", models.JobType.ANNOTATION.value) job_type = models.JobType(raw_job_type) except ValueError: raise ValidationError(f"Unexpected job type {raw_job_type}") @@ -642,7 +645,7 @@ def _import_gt_jobs(self, jobs): }) job_serializer.is_valid(raise_exception=True) job_serializer.save() - elif job_type == models.JobType.NORMAL: + elif job_type == models.JobType.ANNOTATION: continue else: assert False diff --git a/cvat/apps/engine/migrations/0068_auto_20230406_1333.py b/cvat/apps/engine/migrations/0068_auto_20230406_1333.py index 5480caeb3d2b..d3c568f404fd 100644 --- a/cvat/apps/engine/migrations/0068_auto_20230406_1333.py +++ b/cvat/apps/engine/migrations/0068_auto_20230406_1333.py @@ -14,7 +14,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name='job', name='type', - field=models.CharField(choices=[('normal', 'NORMAL'), ('ground_truth', 'GROUND_TRUTH')], default=cvat.apps.engine.models.JobType['NORMAL'], max_length=32), + field=models.CharField(choices=[('normal', 'NORMAL'), ('ground_truth', 'GROUND_TRUTH')], default='normal', max_length=32), ), migrations.AddField( model_name='segment', diff --git a/cvat/apps/engine/migrations/0082_alter_job_type.py b/cvat/apps/engine/migrations/0082_alter_job_type.py new file mode 100644 index 000000000000..f033688e2edc --- /dev/null +++ b/cvat/apps/engine/migrations/0082_alter_job_type.py @@ -0,0 +1,37 @@ +# Generated by Django 3.2.18 on 2023-05-12 09:19 + +import cvat.apps.engine.models +from django.db import migrations, models + + +def rename_normal_to_annotation(apps, schema_editor): + Job = apps.get_model("engine", "Job") + + jobs = Job.objects.select_related('segment').all() + for job in jobs: + if job.type == 'normal': + job.type = 'annotation' + + Job.objects.bulk_update(jobs, fields=['type']) + + +class Migration(migrations.Migration): + + dependencies = [ + ('engine', '0081_qualitysettings'), + ] + + operations = [ + migrations.AlterField( + model_name='job', + name='type', + field=models.CharField(choices=[('normal', 'NORMAL'), ('annotation', 'ANNOTATION'), ('ground_truth', 'GROUND_TRUTH')], default=cvat.apps.engine.models.JobType['ANNOTATION'], max_length=32), + ), + migrations.RunPython(rename_normal_to_annotation), + migrations.AlterField( + model_name='job', + name='type', + field=models.CharField(choices=[('annotation', 'ANNOTATION'), ('ground_truth', 'GROUND_TRUTH')], default=cvat.apps.engine.models.JobType['ANNOTATION'], max_length=32), + ), + + ] diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index b314d17a887b..926024a72262 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -160,7 +160,7 @@ def __str__(self): return self.value class JobType(str, Enum): - NORMAL = 'normal' + ANNOTATION = 'annotation' GROUND_TRUTH = 'ground_truth' @classmethod @@ -614,7 +614,7 @@ class Job(models.Model): default=StateChoice.NEW) type = models.CharField(max_length=32, choices=JobType.choices(), - default=JobType.NORMAL) + default=JobType.ANNOTATION) def get_dirname(self): return os.path.join(settings.JOBS_ROOT, str(self.id)) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index f003c381dde8..d3092250e13b 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -2124,7 +2124,7 @@ def _update_task_quality_metrics(cls, *, task_id: int): jobs: List[models.Job] = [ j for j in job_queryset - if j.type == models.JobType.NORMAL + if j.type == models.JobType.ANNOTATION ] job_data_providers = { job.id: JobDataProvider(job.id, queryset=job_queryset, diff --git a/tests/python/rest_api/test_jobs.py b/tests/python/rest_api/test_jobs.py index e96e6eaba0a5..f5c352ce2371 100644 --- a/tests/python/rest_api/test_jobs.py +++ b/tests/python/rest_api/test_jobs.py @@ -260,7 +260,7 @@ def _test_destroy_job_fails(self, user, job_id, *, expected_status: int, **kwarg return response @pytest.mark.usefixtures("restore_cvat_data") - @pytest.mark.parametrize("job_type, allow", (("ground_truth", True), ("normal", False))) + @pytest.mark.parametrize("job_type, allow", (("ground_truth", True), ("annotation", False))) def test_destroy_job(self, admin_user, jobs, job_type, allow): job = next(j for j in jobs if j["type"] == job_type) @@ -356,52 +356,6 @@ def test_destroy_gt_job_in_org_task( ) -@pytest.mark.usefixtures("restore_db_per_function") -class TestGtComparison: - def test_can_compare_normal_and_gt_job(self, admin_user, tasks, jobs): - user = admin_user - job_frame_count = 4 - task = next( - t - for t in tasks - if not t["project_id"] - and not t["organization"] - and t["mode"] == "annotation" - and t["size"] > job_frame_count - ) - task_id = task["id"] - with make_api_client(user) as api_client: - (task_meta, _) = api_client.tasks_api.retrieve_data_meta(task_id) - frame_step = int(task_meta.frame_filter.split("=")[-1]) if task_meta.frame_filter else 1 - - job_frame_ids = list(range(task_meta.start_frame, task_meta.stop_frame, frame_step))[ - :job_frame_count - ] - job_spec = { - "task_id": task_id, - "type": "ground_truth", - "frame_selection_method": "manual", - "frames": job_frame_ids, - } - - with make_api_client(user) as api_client: - (gt_job, _) = api_client.jobs_api.create(job_write_request=job_spec) - - normal_job = next( - j - for j in jobs - if j["task_id"] == task_id - and j["type"] == "normal" - and set(job_frame_ids) & set(range(j["start_frame"], j["stop_frame"])) - ) - - with make_api_client(user) as api_client: - (conflicts, response) = api_client.jobs_api.check_conflicts(normal_job["id"]) - assert response.status == HTTPStatus.OK - - assert len(conflicts) > 0 - - @pytest.mark.usefixtures("restore_db_per_class") class TestGetJobs: def _test_get_job_200(self, user, jid, *, expected_data: Optional[Dict[str, Any]], **kwargs): @@ -717,7 +671,7 @@ def test_non_member_get_job_annotations( else: self._test_get_job_annotations_403(username, job_id, **kwargs) - @pytest.mark.parametrize("job_type", ("ground_truth", "normal")) + @pytest.mark.parametrize("job_type", ("ground_truth", "annotation")) def test_can_get_annotations(self, admin_user, jobs, annotations, job_type): job = next(j for j in jobs if j["type"] == job_type) self._test_get_job_annotations_200( @@ -856,7 +810,7 @@ def test_user_update_job_annotations( data = request_data(jid) self._check_response(username, jid, expect_success, data, org=org) - @pytest.mark.parametrize("job_type", ("ground_truth", "normal")) + @pytest.mark.parametrize("job_type", ("ground_truth", "annotation")) def test_can_update_annotations(self, admin_user, jobs, request_data, job_type): job = next(j for j in jobs if j["type"] == job_type) data = request_data(job["id"]) diff --git a/tests/python/rest_api/test_tasks.py b/tests/python/rest_api/test_tasks.py index 85118013271f..0b209ba5c710 100644 --- a/tests/python/rest_api/test_tasks.py +++ b/tests/python/rest_api/test_tasks.py @@ -1299,7 +1299,9 @@ def test_can_backup_task_with_gt_jobs(self, tmp_path, admin_user, tasks, jobs, a if j["type"] == "ground_truth" and tasks[j["task_id"]]["jobs"]["count"] == 2 ) task = tasks[gt_job["task_id"]] - normal_job = next(j for j in jobs if j["task_id"] == task["id"] and j["type"] == "normal") + annotation_job = next( + j for j in jobs if j["task_id"] == task["id"] and j["type"] == "annotation" + ) gt_job_source_annotations = annotations["job"][str(gt_job["id"])] assert ( @@ -1308,7 +1310,7 @@ def test_can_backup_task_with_gt_jobs(self, tmp_path, admin_user, tasks, jobs, a or gt_job_source_annotations["tracks"] ) - normal_job_source_annotations = annotations["job"][str(normal_job["id"])] + annotation_job_source_annotations = annotations["job"][str(annotation_job["id"])] with Client(BASE_URL) as client: client.config.status_check_period = 0.01 @@ -1325,7 +1327,7 @@ def test_can_backup_task_with_gt_jobs(self, tmp_path, admin_user, tasks, jobs, a for job_type, source_annotations in { gt_job["type"]: gt_job_source_annotations, - normal_job["type"]: normal_job_source_annotations, + annotation_job["type"]: annotation_job_source_annotations, }.items(): assert ( DeepDiff( From 533ef8debf7b150a860c2d4e2e7a02f5bd7d2ad4 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 12 May 2023 13:43:35 +0300 Subject: [PATCH 105/257] Add frame results in the task report --- cvat/apps/engine/quality_control.py | 1 + 1 file changed, 1 insertion(+) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index d3092250e13b..3db143ab6206 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -2194,6 +2194,7 @@ def _update_task_quality_metrics(cls, *, task_id: int): ) / (frame_results_count + 1) task_frame_results_counts[frame_id] = 1 + frame_results_count + task_frame_results[frame_id] = task_frame_result task_ann_components_summary.shape.mean_iou = np.mean(task_mean_shape_ious) From dbfd59aab03d7292191c686ae36da91a0fd7d7be Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 12 May 2023 13:43:56 +0300 Subject: [PATCH 106/257] Handle the case with no matches --- cvat/apps/engine/quality_control.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index 3db143ab6206..86df3139b0c2 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -615,6 +615,7 @@ def _match_segments( # *_umatched: boxes of (*) we failed to match a_unmatched = [] b_unmatched = [] + for a_idx, b_idx in zip(a_matches, b_matches): dist = distances[a_idx, b_idx] if dist > 1 - dist_thresh or dist == 1: @@ -630,6 +631,10 @@ def _match_segments( else: mispred.append((a_ann, b_ann)) + if not len(a_matches) and not len(b_matches): + a_unmatched = list(a_segms) + b_unmatched = list(b_segms) + return matches, mispred, a_unmatched, b_unmatched def _OKS(a, b, sigma=0.1, bbox=None, scale=None, visibility=None): From b3144ffde81ef6007b8932a2150b605acbeed2e9 Mon Sep 17 00:00:00 2001 From: klakhov Date: Fri, 12 May 2023 15:27:03 +0300 Subject: [PATCH 107/257] added raw conflict frame filter --- cvat-core/src/frames.ts | 18 +- cvat-core/src/session-implementation.ts | 9 +- cvat-core/src/session.ts | 18 ++ cvat-ui/src/actions/annotation-actions.ts | 62 ++++- .../components/annotation-page/styles.scss | 9 + .../annotation-page/top-bar/filters-modal.tsx | 237 +++++++++++++----- .../annotation-page/top-bar/right-group.tsx | 6 +- .../annotation-page/top-bar/top-bar.tsx | 21 +- cvat-ui/src/reducers/annotation-reducer.ts | 11 + cvat-ui/src/reducers/index.ts | 1 + 10 files changed, 303 insertions(+), 89 deletions(-) diff --git a/cvat-core/src/frames.ts b/cvat-core/src/frames.ts index 1a99573cc091..8f2f9055ff5e 100644 --- a/cvat-core/src/frames.ts +++ b/cvat-core/src/frames.ts @@ -6,6 +6,7 @@ import { isBrowser, isNode } from 'browser-or-node'; import * as cvatData from 'cvat-data'; +import jsonLogic from 'json-logic-js'; import { DimensionType } from 'enums'; import PluginRegistry from './plugins'; import serverProxy, { FramesMetaData } from './server-proxy'; @@ -737,21 +738,30 @@ export async function patchMeta(jobID) { frameDataCache[jobID].meta.deleted_frames = prevDeletedFrames; } -export async function findNotDeletedFrame(jobID, frameFrom, frameTo, offset) { +export async function findFrame(jobID, frameFrom, frameTo, filters, externalMeta) { + const offset = filters.offset || 1; let meta; if (!frameDataCache[jobID]) { meta = await serverProxy.frames.getMeta('job', jobID); } else { meta = frameDataCache[jobID].meta; } + const sign = Math.sign(frameTo - frameFrom); const predicate = sign > 0 ? (frame) => frame <= frameTo : (frame) => frame >= frameTo; const update = sign > 0 ? (frame) => frame + 1 : (frame) => frame - 1; let framesCounter = 0; let lastUndeletedFrame = null; - const check = (frame): boolean => (meta.included_frames ? - (meta.included_frames.includes(frame)) && !(frame in meta.deleted_frames) : - !(frame in meta.deleted_frames)); + const check = (frame): boolean => { + if (meta.included_frames) { + return (meta.included_frames.includes(frame)) && !(frame in meta.deleted_frames); + } + if (Array.isArray(filters.jsonFilters) && filters.jsonFilters.length) { + const frameConvert = { conflicted: externalMeta.conflictedFrames.includes(frame) }; + return jsonLogic.apply(filters.jsonFilters[0], frameConvert); + } + return !(frame in meta.deleted_frames); + }; for (let frame = frameFrom; predicate(frame); frame = update(frame)) { if (check(frame)) { lastUndeletedFrame = frame; diff --git a/cvat-core/src/session-implementation.ts b/cvat-core/src/session-implementation.ts index bda599128527..a7ceba4b9f86 100644 --- a/cvat-core/src/session-implementation.ts +++ b/cvat-core/src/session-implementation.ts @@ -14,7 +14,7 @@ import { restoreFrame, getRanges, clear as clearFrames, - findNotDeletedFrame, + findFrame, getContextImage, patchMeta, getDeletedFrames, @@ -189,11 +189,16 @@ export function implementJob(Job) { throw new ArgumentError('The stop frame is out of the job'); } if (filters.notDeleted) { - return findNotDeletedFrame(this.id, frameFrom, frameTo, filters.offset || 1); + return findFrame(this.id, frameFrom, frameTo, filters, this.frameMeta); } return null; }; + Job.prototype.frames.updateMeta.implementation = async function (meta) { + this.frameMeta = meta; + return null; + }; + // TODO: Check filter for annotations Job.prototype.annotations.get.implementation = async function (frame, allTracks, filters, groundTruthJobId) { if (!Array.isArray(filters)) { diff --git a/cvat-core/src/session.ts b/cvat-core/src/session.ts index ab1ca48b9b87..9c8d09fa25f8 100644 --- a/cvat-core/src/session.ts +++ b/cvat-core/src/session.ts @@ -234,6 +234,14 @@ function buildDuplicatedAPI(prototype) { ); return result; }, + async updateMeta(meta) { + const result = await PluginRegistry.apiWrapper.call( + this, + prototype.frames.updateMeta, + meta, + ); + return result; + }, }, writable: true, }), @@ -323,6 +331,7 @@ export class Job extends Session { public readonly frameSelectionMethod: JobType; public readonly createdDate: string; public readonly updatedDate: string; + public frameMeta: { conflictedFrames: number[] }; public annotations: { get: CallableFunction; @@ -360,6 +369,7 @@ export class Job extends Session { preview: CallableFunction; contextImage: CallableFunction; search: CallableFunction; + updateMeta: CallableFunction; }; public logger: { @@ -410,6 +420,7 @@ export class Job extends Session { return new Label(labelData); }).filter((label) => !label.hasParent); } + let frameMeta = { conflictedFrames: [] }; Object.defineProperties( this, @@ -510,6 +521,12 @@ export class Job extends Session { updatedDate: { get: () => data.updated_date, }, + frameMeta: { + get: () => frameMeta, + set: (meta) => { + frameMeta = meta; + }, + }, _updateTrigger: { get: () => updateTrigger, }, @@ -555,6 +572,7 @@ export class Job extends Session { preview: Object.getPrototypeOf(this).frames.preview.bind(this), search: Object.getPrototypeOf(this).frames.search.bind(this), contextImage: Object.getPrototypeOf(this).frames.contextImage.bind(this), + updateMeta: Object.getPrototypeOf(this).frames.updateMeta.bind(this), }; this.logger = { diff --git a/cvat-ui/src/actions/annotation-actions.ts b/cvat-ui/src/actions/annotation-actions.ts index 744c8d0f0b6a..b80ff92a5e20 100644 --- a/cvat-ui/src/actions/annotation-actions.ts +++ b/cvat-ui/src/actions/annotation-actions.ts @@ -163,6 +163,7 @@ export enum AnnotationActionTypes { SWITCH_PROPAGATE_VISIBILITY = 'SWITCH_PROPAGATE_VISIBILITY', SWITCH_SHOWING_STATISTICS = 'SWITCH_SHOWING_STATISTICS', SWITCH_SHOWING_FILTERS = 'SWITCH_SHOWING_FILTERS', + CHANGE_FRAME_FILTERS = 'CHANGE_FRAME_FILTERS', COLLECT_STATISTICS = 'COLLECT_STATISTICS', COLLECT_STATISTICS_SUCCESS = 'COLLECT_STATISTICS_SUCCESS', COLLECT_STATISTICS_FAILED = 'COLLECT_STATISTICS_FAILED', @@ -916,10 +917,20 @@ export function getJobAsync( try { const [task] = await cvat.tasks.get({ id: tid }); [gtJob] = task.jobs.filter((_job: Job) => _job.type === JobType.GROUND_TRUTH); - // eslint-disable-next-line no-empty - } catch (e) {} + // eslint-disable-next-line no-empty + } catch (e) { } } + const groundTruthJobId = gtJob ? gtJob.id : null; + let conflicts: QualityConflict[] = []; + if (groundTruthJobId) { + const [report] = await cvat.analytics.quality.reports({ jobId: job.id, target: 'job' }); + if (report) conflicts = await cvat.analytics.quality.conflicts({ reportId: report.id }); + } + + const conflictedFrames = conflicts.map((conflict: QualityConflict) => conflict.frame); + await job.frames.updateMeta({ conflictedFrames: [...new Set(conflictedFrames)] }); + // navigate to correct first frame according to setup let frameNumber; if (initialFrame === null && !showDeletedFrames) { @@ -944,17 +955,10 @@ export function getJobAsync( }); } - const groundTruthJobId = gtJob ? gtJob.id : null; const states = await job.annotations.get( frameNumber, showAllInterpolationTracks, filters, groundTruthJobId, ); - let conflicts: QualityConflict[] = []; - if (groundTruthJobId) { - const [report] = await cvat.analytics.quality.reports({ jobId: job.id, target: 'job' }); - if (report) conflicts = await cvat.analytics.quality.conflicts({ reportId: report.id }); - } - const issues = await job.issues(); const [minZ, maxZ] = computeZRange(states); const colors = [...cvat.enums.colors]; @@ -1648,3 +1652,43 @@ export function restoreFrameAsync(frame: number): ThunkAction { } }; } + +export function changeFrameFiltersAsync(filters: any[]): ThunkAction { + return async (dispatch: ActionCreator): Promise => { + const state: CombinedState = getStore().getState(); + const { + annotation: { + job: { + instance: jobInstance, + }, + player: { + frame: { + number: frame, + }, + }, + }, + settings: { + player: { showDeletedFrames }, + }, + } = state; + + try { + let newFrame = await jobInstance.frames.search( + { notDeleted: !showDeletedFrames, jsonFilters: filters }, frame, jobInstance.stopFrame, + ); + if (newFrame === null && jobInstance.startFrame !== frame) { + newFrame = await jobInstance.frames.search( + { notDeleted: !showDeletedFrames, jsonFilters: filters }, frame, jobInstance.startFrame, + ); + } + if (newFrame !== null) { + dispatch(changeFrameAsync(newFrame)); + } + } finally { + dispatch({ + type: AnnotationActionTypes.CHANGE_FRAME_FILTERS, + payload: { filters }, + }); + } + }; +} diff --git a/cvat-ui/src/components/annotation-page/styles.scss b/cvat-ui/src/components/annotation-page/styles.scss index 7b00ff9acb94..ee43ebd8a103 100644 --- a/cvat-ui/src/components/annotation-page/styles.scss +++ b/cvat-ui/src/components/annotation-page/styles.scss @@ -449,6 +449,15 @@ border: 1px solid #d3e0ec; } } + + .ant-typography { + display: block; + padding: $grid-unit-size * 2 $grid-unit-size * 3 $grid-unit-size $grid-unit-size * 2; + } + + .query-builder { + margin-top: 0; + } } } diff --git a/cvat-ui/src/components/annotation-page/top-bar/filters-modal.tsx b/cvat-ui/src/components/annotation-page/top-bar/filters-modal.tsx index 5a86c2cf8a7f..51be29ed18a5 100644 --- a/cvat-ui/src/components/annotation-page/top-bar/filters-modal.tsx +++ b/cvat-ui/src/components/annotation-page/top-bar/filters-modal.tsx @@ -1,4 +1,5 @@ // Copyright (C) 2021-2022 Intel Corporation +// Copyright (C) 2023 CVAT.ai Corporation // // SPDX-License-Identifier: MIT @@ -10,19 +11,22 @@ import { import AntdWidgets from 'react-awesome-query-builder/lib/components/widgets/antd'; import AntdConfig from 'react-awesome-query-builder/lib/config/antd'; import 'react-awesome-query-builder/lib/css/styles.css'; -import { DownOutlined } from '@ant-design/icons'; -import Dropdown from 'antd/lib/dropdown'; -import Menu from 'antd/lib/menu'; +// import { DownOutlined } from '@ant-design/icons'; +// import Dropdown from 'antd/lib/dropdown'; +// import Menu from 'antd/lib/menu'; +import Text from 'antd/lib/typography/Text'; import Button from 'antd/lib/button'; import Modal from 'antd/lib/modal'; import { omit } from 'lodash'; import { CombinedState } from 'reducers'; -import { changeAnnotationsFilters, fetchAnnotationsAsync, showFilters } from 'actions/annotation-actions'; +import { + changeAnnotationsFilters, changeFrameFiltersAsync, fetchAnnotationsAsync, showFilters, +} from 'actions/annotation-actions'; const { FieldDropdown } = AntdWidgets; -const FILTERS_HISTORY = 'annotationFiltersHistory'; +// const FILTERS_HISTORY = 'annotationFiltersHistory'; interface StoredFilter { id: string; @@ -32,6 +36,7 @@ interface StoredFilter { function FiltersModalComponent(): JSX.Element { const labels = useSelector((state: CombinedState) => state.annotation.job.labels); const activeFilters = useSelector((state: CombinedState) => state.annotation.annotations.filters); + const activePlayerFilters = useSelector((state: CombinedState) => state.annotation.player.filters); const visible = useSelector((state: CombinedState) => state.annotation.filtersPanelVisible); const getConvertedInputType = (inputType: string): string => { @@ -78,7 +83,7 @@ function FiltersModalComponent(): JSX.Element { return subfields; }; - const config: Config = { + const annotationConfig: Config = { ...AntdConfig, fields: { label: { @@ -161,64 +166,127 @@ function FiltersModalComponent(): JSX.Element { }, }; + const frameConfig: Config = { + ...AntdConfig, + fields: { + conflicted: { + label: 'Has conflicts', + type: 'boolean', + }, + }, + settings: { + ...AntdConfig.settings, + renderField: (_props: any) => ( + + ), + // using FieldDropdown because we cannot use antd because of antd-related bugs + // https://github.com/ukrbublik/react-awesome-query-builder/issues/224 + }, + }; + const initialState = { - tree: QbUtils.checkTree( - QbUtils.loadTree({ id: QbUtils.uuid(), type: 'group' }), - config as Config, - ) as ImmutableTree, - config, + trees: { + annotationTree: QbUtils.checkTree( + QbUtils.loadTree({ id: QbUtils.uuid(), type: 'group' }), + annotationConfig as Config, + ) as ImmutableTree, + frameTree: QbUtils.checkTree( + QbUtils.loadTree({ id: QbUtils.uuid(), type: 'group' }), + frameConfig as Config, + ) as ImmutableTree, + }, + configs: { + annotationConfig, + frameConfig, + }, }; const dispatch = useDispatch(); const [state, setState] = useState(initialState); - const [filters, setFilters] = useState([] as StoredFilter[]); + const [annotationFilters, setAnnotationFilters] = useState([] as StoredFilter[]); + const [frameFilters, setFrameFilters] = useState([] as StoredFilter[]); + // useEffect(() => { + // console.log(state); + // }); - useEffect(() => { - const filtersHistory = window.localStorage.getItem(FILTERS_HISTORY)?.trim() || '[]'; - try { - setFilters(JSON.parse(filtersHistory)); - } catch (_) { - setFilters([]); - } - }, []); + // useEffect(() => { + // const filtersHistory = window.localStorage.getItem(FILTERS_HISTORY)?.trim() || '[]'; + // try { + // setFilters(JSON.parse(filtersHistory)); + // } catch (_) { + // setFilters([]); + // } + // }, []); - useEffect(() => { - window.localStorage.setItem(FILTERS_HISTORY, JSON.stringify(filters)); - }, [filters]); + // useEffect(() => { + // window.localStorage.setItem(FILTERS_HISTORY, JSON.stringify(filters)); + // }, [filters]); useEffect(() => { if (visible) { - const treeFromActiveFilters = activeFilters.length ? - QbUtils.checkTree(QbUtils.loadFromJsonLogic(activeFilters[0], config), config) : + const annotationTreeFromActiveFilters = activeFilters.length ? + QbUtils.checkTree(QbUtils.loadFromJsonLogic(activeFilters[0], annotationConfig), annotationConfig) : + null; + const frameTreeFromActiveFilters = activePlayerFilters.length ? + QbUtils.checkTree(QbUtils.loadFromJsonLogic(activePlayerFilters[0], frameConfig), frameConfig) : null; setState({ - tree: treeFromActiveFilters || initialState.tree, - config, + trees: { + annotationTree: annotationTreeFromActiveFilters || initialState.trees.annotationTree, + frameTree: frameTreeFromActiveFilters || initialState.trees.frameTree, + }, + configs: { + annotationConfig, + frameConfig, + }, }); } }, [visible]); - const applyFilters = (filtersData: any[]): void => { - dispatch(changeAnnotationsFilters(filtersData)); - dispatch(fetchAnnotationsAsync()); + const applyFilters = (annotationFiltersData: any[], frameFiltersData: any[]): void => { + if (annotationFiltersData) { + dispatch(changeAnnotationsFilters(annotationFiltersData)); + dispatch(fetchAnnotationsAsync()); + } + if (frameFiltersData) { + dispatch(changeFrameFiltersAsync(frameFiltersData)); + } dispatch(showFilters(false)); }; const confirmModal = (): void => { - const currentFilter: StoredFilter = { + let currentFilter: StoredFilter = { + id: QbUtils.uuid(), + logic: QbUtils.jsonLogicFormat(state.trees.annotationTree, annotationConfig).logic || {}, + }; + let updatedFilters = annotationFilters.filter( + (filter) => JSON.stringify(filter.logic) !== JSON.stringify(currentFilter.logic), + ); + setAnnotationFilters([currentFilter, ...updatedFilters].slice(0, 10)); + let { logic } = QbUtils.jsonLogicFormat(state.trees.annotationTree, annotationConfig); + if (logic) applyFilters([logic], null); + + currentFilter = { id: QbUtils.uuid(), - logic: QbUtils.jsonLogicFormat(state.tree, config).logic || {}, + logic: QbUtils.jsonLogicFormat(state.trees.frameTree, frameConfig).logic || {}, }; - const updatedFilters = filters.filter( + updatedFilters = frameFilters.filter( (filter) => JSON.stringify(filter.logic) !== JSON.stringify(currentFilter.logic), ); - setFilters([currentFilter, ...updatedFilters].slice(0, 10)); - applyFilters([QbUtils.jsonLogicFormat(state.tree, config).logic]); + + setFrameFilters([currentFilter, ...updatedFilters].slice(0, 10)); + logic = QbUtils.jsonLogicFormat(state.trees.frameTree, frameConfig).logic; + if (logic) { + if (logic) applyFilters(null, [logic]); + } + // todo change frame async }; - const isModalConfirmable = (): boolean => ( - (QbUtils.queryString(state.tree, config) || '').trim().length > 0 && QbUtils.isValidTree(state.tree) - ); + const isModalConfirmable = (): boolean => { + const annotations = (QbUtils.queryString(state.trees.annotationTree, annotationConfig) || '').trim().length > 0 && QbUtils.isValidTree(state.trees.annotationTree); + const frames = (QbUtils.queryString(state.trees.frameTree, frameConfig) || '').trim().length > 0 && QbUtils.isValidTree(state.trees.frameTree); + return annotations || frames; + }; const renderBuilder = (builderProps: any): JSX.Element => (
@@ -228,32 +296,56 @@ function FiltersModalComponent(): JSX.Element {
); - const onChange = (tree: ImmutableTree): void => { - setState({ tree, config }); + const onChange = (type: string, tree: ImmutableTree): void => { + if (type === 'annotationTree') { + setState({ + trees: { + ...state.trees, + annotationTree: tree, + }, + configs: { + ...state.configs, + annotationConfig, + }, + }); + } else if (type === 'frameTree') { + setState({ + trees: { + ...state.trees, + frameTree: tree, + }, + configs: { + ...state.configs, + frameConfig, + }, + }); + } }; - const menu = ( - - {filters - .map((filter: StoredFilter) => { - // if a logic received from local storage does not correspond to current config - // which depends on label specification - // (it can be when history from another task with another specification or when label was removed) - // loadFromJsonLogic() prints a warning to console - // the are not ways to configure this behaviour + // TMP disabled + // const menu = ( + // + // {filters + // .map((filter: StoredFilter) => { + // // if a logic received from local storage does not correspond to current config + // // which depends on label specification + // // (it can be when history from another task with + // another specification or when label was removed) + // // loadFromJsonLogic() prints a warning to console + // // the are not ways to configure this behaviour - const tree = QbUtils.loadFromJsonLogic(filter.logic, config); - const queryString = QbUtils.queryString(tree, config); - return { tree, queryString, filter }; - }) - .filter(({ queryString }) => !!queryString) - .map(({ filter, tree, queryString }) => ( - setState({ tree, config })}> - {queryString} - - ))} - - ); + // const tree = QbUtils.loadFromJsonLogic(filter.logic, config); + // const queryString = QbUtils.queryString(tree, config); + // return { tree, queryString, filter }; + // }) + // .filter(({ queryString }) => !!queryString) + // .map(({ filter, tree, queryString }) => ( + // setState({ tree, config })}> + // {queryString} + // + // ))} + // + // ); return ( applyFilters([])} + disabled={!activeFilters.length && !activePlayerFilters.length} + onClick={() => applyFilters([], [])} className='cvat-filters-modal-clear-button' > Clear filters @@ -291,7 +383,7 @@ function FiltersModalComponent(): JSX.Element { , ]} > -
-
- + */} + Annotation Filters: + onChange('annotationTree', tree)} + renderBuilder={renderBuilder} + /> + Frame Filters: + onChange('frameTree', tree)} + renderBuilder={renderBuilder} + />
); } diff --git a/cvat-ui/src/components/annotation-page/top-bar/right-group.tsx b/cvat-ui/src/components/annotation-page/top-bar/right-group.tsx index ab826dc1e60c..5894cae9d26a 100644 --- a/cvat-ui/src/components/annotation-page/top-bar/right-group.tsx +++ b/cvat-ui/src/components/annotation-page/top-bar/right-group.tsx @@ -31,7 +31,9 @@ function RightGroup(props: Props): JSX.Element { showFilters, } = props; - const filters = useSelector((state: CombinedState) => state.annotation.annotations.filters); + const annotationFilters = useSelector((state: CombinedState) => state.annotation.annotations.filters); + const frameFilters = useSelector((state: CombinedState) => state.annotation.player.filters); + const filters = annotationFilters.length || frameFilters.length; return (
@@ -61,7 +63,7 @@ function RightGroup(props: Props): JSX.Element { - {jobs.filter((job: Job) => job.type === JobType.ANNOTATION).map((job: Job): JSX.Element => ( + {jobs.filter((job: Job) => job.type === JobType.NORMAL).map((job: Job): JSX.Element => ( ))} diff --git a/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx b/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx index 51567d9f1375..c052abd6de4c 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx @@ -33,7 +33,7 @@ function JobListComponent(props: Props): JSX.Element { const history = useHistory(); const { id: taskId } = taskInstance; const { jobs } = taskInstance; - const [renderedJobs] = useState(jobs.filter((job: Job) => job.type === JobType.ANNOTATION)); + const [renderedJobs] = useState(jobs.filter((job: Job) => job.type === JobType.NORMAL)); const [jobsReports, setJobsReports] = useState>({}); const jobReportsFromState: QualityReport[] = useSelector((state: CombinedState) => state.analytics.quality.jobsReports); diff --git a/cvat-ui/src/components/task-page/job-list.tsx b/cvat-ui/src/components/task-page/job-list.tsx index bf3f369374c7..f321373070fc 100644 --- a/cvat-ui/src/components/task-page/job-list.tsx +++ b/cvat-ui/src/components/task-page/job-list.tsx @@ -93,7 +93,8 @@ function JobListComponent(props: Props): JSX.Element { const history = useHistory(); const { id: taskId } = taskInstance; let { jobs } = taskInstance; - jobs = jobs.filter((job: Job) => job.type === JobType.ANNOTATION); + + jobs = jobs.filter((job: Job) => job.type === JobType.NORMAL); function sorter(path: string) { return (obj1: any, obj2: any): number => { From c7963f95b49dffff3cff56f9841c325b2f7c8f79 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 12 May 2023 16:19:49 +0300 Subject: [PATCH 109/257] Add annotation links in the downloaded report --- cvat/apps/engine/quality_control.py | 83 +++++++++++++++++++---------- cvat/apps/engine/utils.py | 3 ++ cvat/apps/engine/views.py | 9 ++-- 3 files changed, 64 insertions(+), 31 deletions(-) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index 86df3139b0c2..64facab335ae 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -28,25 +28,25 @@ from cvat.apps.dataset_manager.formats.registry import dm_env from cvat.apps.engine import models from cvat.apps.engine.models import (AnnotationConflictImportance, - AnnotationConflictType, AnnotationType) + AnnotationConflictType, AnnotationType, ShapeType) from cvat.apps.profiler import silk_profile from datumaro.util import dump_json, parse_json class _Serializable: - def _value_serializer(self, t, attr, v): + def _value_serializer(self, inst, attr, v): if isinstance(v, _Serializable): return v.to_dict() elif is_attrs_type(type(v)): return asdict(v, value_serializer=self._value_serializer) - elif not isinstance(self, type(t)) and isinstance(t, _Serializable): - return t._value_serializer(t, attr, v) + elif self is not inst and isinstance(inst, _Serializable): + return inst._value_serializer(inst, attr, v) else: return v - def to_dict(self) -> dict: - return asdict(self, value_serializer=self._value_serializer) + def to_dict(self, *, value_serializer = None) -> dict: + return asdict(self, value_serializer=value_serializer or self._value_serializer) @define(kw_only=True) @@ -55,11 +55,11 @@ class AnnotationId(_Serializable): job_id: int type: AnnotationType - def _value_serializer(self, t, attr, v): + def _value_serializer(self, inst, attr, v): if isinstance(v, AnnotationType): return str(v) else: - return super()._value_serializer(t, attr, v) + return super()._value_serializer(inst, attr, v) @classmethod def from_dict(cls, d): @@ -96,14 +96,14 @@ def importance(self) -> AnnotationConflictImportance: return importance - def _value_serializer(self, t, attr, v): + def _value_serializer(self, inst, attr, v): if isinstance(v, AnnotationConflictType): return str(v) else: - return super()._value_serializer(t, attr, v) + return super()._value_serializer(inst, attr, v) - def to_dict(self) -> dict: - result = super().to_dict() + def to_dict(self, *args, **kwargs) -> dict: + result = super().to_dict(*args, **kwargs) result.update(**{ k: getattr(self, k) for k in ['importance'] }) @@ -171,11 +171,11 @@ class ComparisonParameters(_Serializable): "Use only the visible part of the masks and polygons in comparisons" - def _value_serializer(self, t, attr, v): + def _value_serializer(self, inst, attr, v): if isinstance(v, dm.AnnotationType): return str(v.name) else: - return super()._value_serializer(t, attr, v) + return super()._value_serializer(inst, attr, v) @classmethod def from_dict(cls, d): @@ -195,14 +195,14 @@ class ConfusionMatrix(_Serializable): def axes(self): return dict(cols='gt', rows='ds') - def _value_serializer(self, t, attr, v): + def _value_serializer(self, inst, attr, v): if isinstance(v, np.ndarray): return v.tolist() else: - return super()._value_serializer(t, attr, v) + return super()._value_serializer(inst, attr, v) - def to_dict(self) -> dict: - result = super().to_dict() + def to_dict(self, *args, **kwargs) -> dict: + result = super().to_dict(*args, **kwargs) result.update(**{ k: getattr(self, k) for k in ['axes'] }) @@ -247,7 +247,7 @@ def accumulate(self, other: ComparisonReportAnnotationsSummary): ]: setattr(self, field, getattr(self, field) + getattr(other, field)) - def to_dict(self) -> dict: + def to_dict(self, *args, **kwargs) -> dict: result = super().to_dict() result.update(**{ k: getattr(self, k) for k in ['accuracy', 'precision', 'recall'] @@ -287,8 +287,8 @@ def accumulate(self, other: ComparisonReportAnnotationShapeSummary): ]: setattr(self, field, getattr(self, field) + getattr(other, field)) - def to_dict(self) -> dict: - result = super().to_dict() + def to_dict(self, *args, **kwargs) -> dict: + result = super().to_dict(*args, **kwargs) result.update(**{ k: getattr(self, k) for k in ['accuracy'] }) @@ -321,8 +321,8 @@ def accumulate(self, other: ComparisonReportAnnotationLabelSummary): for field in ['valid_count', 'total_count', 'invalid_count']: setattr(self, field, getattr(self, field) + getattr(other, field)) - def to_dict(self) -> dict: - result = super().to_dict() + def to_dict(self, *args, **kwargs) -> dict: + result = super().to_dict(*args, **kwargs) result.update(**{ k: getattr(self, k) for k in ['accuracy'] }) @@ -373,8 +373,8 @@ def mean_conflict_count(self) -> float: def frame_count(self) -> int: return len(self.frames) - def to_dict(self) -> dict: - result = super().to_dict() + def to_dict(self, *args, **kwargs) -> dict: + result = super().to_dict(*args, **kwargs) result.update(**{ k: getattr(self, k) for k in ['frame_count', 'mean_conflict_count'] }) @@ -480,8 +480,8 @@ def from_dict(cls, d: Dict[str, Any]) -> ComparisonReport: } ) - def to_json(self) -> str: - d = self.to_dict() + def to_json(self, *args, **kwargs) -> str: + d = self.to_dict(*args, **kwargs) d["frame_results"] = {str(k): v for k, v in d['frame_results'].items()} return dump_json(d, indent=True, append_newline=True).decode() @@ -2337,3 +2337,32 @@ def _save_reports(cls, *, task_report, job_reports) -> models.QualityReport: def _get_task_quality_params(cls, task: models.Task) -> Optional[ComparisonParameters]: quality_params, _ = models.QualitySettings.objects.get_or_create(task=task) return ComparisonParameters.from_dict(quality_params.to_dict()) + + +def prepare_report_for_downloading(db_report: models.QualityReport, *, host: str) -> str: + comparison_report = ComparisonReport.from_json(db_report.get_json_report()) + + # Decorate report with conflicting annotation links like: + # /tasks/62/jobs/82?frame=250&type=shape&serverID=33741 + serialized_data = comparison_report.to_dict() + task_id = db_report.task.id + + for frame_result in serialized_data["frame_results"].values(): + for conflict in frame_result["conflicts"]: + for ann_id in conflict['annotation_ids']: + if ann_id['type'] in ShapeType.__members__.values(): + ann_type = 'shape' + else: + ann_type = ann_id['type'] + + ann_id['url'] = ( + f"{host}tasks/{task_id}/jobs/{ann_id['job_id']}" + f"?frame={conflict['frame_id']}" + f"&type={ann_type}" + f"&serverID={ann_id['obj_id']}" + ) + + serialized_data["frame_results"] = { + str(k): v for k, v in serialized_data['frame_results'].items() + } + return dump_json(serialized_data, indent=True, append_newline=True).decode() diff --git a/cvat/apps/engine/utils.py b/cvat/apps/engine/utils.py index 4f65af6bd118..aac2db50cd95 100644 --- a/cvat/apps/engine/utils.py +++ b/cvat/apps/engine/utils.py @@ -200,6 +200,9 @@ def reverse(viewname, *, args=None, kwargs=None, return url +def get_server_url(request: HttpRequest) -> str: + return request.build_absolute_uri('/') + def build_field_filter_params(field: str, value: Any) -> Dict[str, str]: """ Builds a collection filter query params for a single field and value. diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index e90d6b656990..e72ebe53c26c 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -68,11 +68,13 @@ from utils.dataset_manifest import ImageManifestManager from cvat.apps.engine.utils import ( - av_scan_paths, process_failed_job, configure_dependent_job, parse_exception_message, get_rq_job_meta + av_scan_paths, get_server_url, process_failed_job, configure_dependent_job, + parse_exception_message, get_rq_job_meta ) from cvat.apps.engine import backup from cvat.apps.engine.mixins import PartialUpdateModelMixin, UploadMixin, AnnotationMixin, SerializeMixin from cvat.apps.engine.location import get_location_configuration, StorageType +from cvat.apps.engine import quality_control as qc from cvat.apps.profiler import silk_profile from . import models, task @@ -2359,7 +2361,7 @@ def get_queryset(self): @action(detail=True, methods=['GET'], url_path='data', serializer_class=None) def data(self, request, pk): report = self.get_object() # check permissions - json_report = report.get_json_report() + json_report = qc.prepare_report_for_downloading(report, host=get_server_url(request)) return HttpResponse(json_report.encode()) @extend_schema(parameters=[ @@ -2368,8 +2370,7 @@ def data(self, request, pk): @action(detail=False, methods=['GET'], url_path='debug', serializer_class=None) @silk_profile() def debug(self, request): - from .quality_control import QueueJobManager - QueueJobManager._update_task_quality_metrics(task_id=request.GET.get('task_id')) + qc.QueueJobManager._update_task_quality_metrics(task_id=request.GET.get('task_id')) return HttpResponse({}) From b76d93c673370465c7d563fbf33f34d536689081 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 12 May 2023 16:29:56 +0300 Subject: [PATCH 110/257] Revert "changed job type to normal" This reverts commit 3fb345eecee9f058b268008b479ccb0b24e52eb8. --- cvat-core/src/enums.ts | 2 +- cvat-core/src/session.ts | 2 +- cvat-ui/src/actions/annotation-actions.ts | 2 +- cvat-ui/src/components/jobs-page/jobs-content.tsx | 2 +- .../src/components/task-analytics-page/quality/job-list.tsx | 2 +- cvat-ui/src/components/task-page/job-list.tsx | 3 +-- 6 files changed, 6 insertions(+), 7 deletions(-) diff --git a/cvat-core/src/enums.ts b/cvat-core/src/enums.ts index fe42f6e86c92..1246d536ccbc 100644 --- a/cvat-core/src/enums.ts +++ b/cvat-core/src/enums.ts @@ -35,7 +35,7 @@ export enum JobState { } export enum JobType { - NORMAL = 'normal', + ANNOTATION = 'annotation', GROUND_TRUTH = 'ground_truth', } diff --git a/cvat-core/src/session.ts b/cvat-core/src/session.ts index c8318dcee087..9c8d09fa25f8 100644 --- a/cvat-core/src/session.ts +++ b/cvat-core/src/session.ts @@ -383,7 +383,7 @@ export class Job extends Session { assignee: null, stage: undefined, state: undefined, - type: JobType.NORMAL, + type: JobType.ANNOTATION, start_frame: undefined, stop_frame: undefined, project_id: null, diff --git a/cvat-ui/src/actions/annotation-actions.ts b/cvat-ui/src/actions/annotation-actions.ts index efd8fb86658e..b80ff92a5e20 100644 --- a/cvat-ui/src/actions/annotation-actions.ts +++ b/cvat-ui/src/actions/annotation-actions.ts @@ -913,7 +913,7 @@ export function getJobAsync( const [job] = await cvat.jobs.get({ jobID: jid }); let gtJob = null; - if (job.type === JobType.NORMAL) { + if (job.type === JobType.ANNOTATION) { try { const [task] = await cvat.tasks.get({ id: tid }); [gtJob] = task.jobs.filter((_job: Job) => _job.type === JobType.GROUND_TRUTH); diff --git a/cvat-ui/src/components/jobs-page/jobs-content.tsx b/cvat-ui/src/components/jobs-page/jobs-content.tsx index 3105d5212494..db34eece8cfd 100644 --- a/cvat-ui/src/components/jobs-page/jobs-content.tsx +++ b/cvat-ui/src/components/jobs-page/jobs-content.tsx @@ -21,7 +21,7 @@ function JobsContentComponent(): JSX.Element { return ( - {jobs.filter((job: Job) => job.type === JobType.NORMAL).map((job: Job): JSX.Element => ( + {jobs.filter((job: Job) => job.type === JobType.ANNOTATION).map((job: Job): JSX.Element => ( ))} diff --git a/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx b/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx index c052abd6de4c..51567d9f1375 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx @@ -33,7 +33,7 @@ function JobListComponent(props: Props): JSX.Element { const history = useHistory(); const { id: taskId } = taskInstance; const { jobs } = taskInstance; - const [renderedJobs] = useState(jobs.filter((job: Job) => job.type === JobType.NORMAL)); + const [renderedJobs] = useState(jobs.filter((job: Job) => job.type === JobType.ANNOTATION)); const [jobsReports, setJobsReports] = useState>({}); const jobReportsFromState: QualityReport[] = useSelector((state: CombinedState) => state.analytics.quality.jobsReports); diff --git a/cvat-ui/src/components/task-page/job-list.tsx b/cvat-ui/src/components/task-page/job-list.tsx index f321373070fc..bf3f369374c7 100644 --- a/cvat-ui/src/components/task-page/job-list.tsx +++ b/cvat-ui/src/components/task-page/job-list.tsx @@ -93,8 +93,7 @@ function JobListComponent(props: Props): JSX.Element { const history = useHistory(); const { id: taskId } = taskInstance; let { jobs } = taskInstance; - - jobs = jobs.filter((job: Job) => job.type === JobType.NORMAL); + jobs = jobs.filter((job: Job) => job.type === JobType.ANNOTATION); function sorter(path: string) { return (obj1: any, obj2: any): number => { From eca2319b6fe2d0bd53268ccb1082b8ba310eb83f Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 12 May 2023 16:44:22 +0300 Subject: [PATCH 111/257] Fix frame share values in reports --- cvat/apps/engine/quality_control.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/engine/quality_control.py index 64facab335ae..59dc924d3bc4 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/engine/quality_control.py @@ -1955,7 +1955,9 @@ def generate_report(self) -> ComparisonReport: parameters=self.settings, comparison_summary=ComparisonReportComparisonSummary( - frame_share_percent=len(intersection_frames) / (len(self._ds_dataset) or 1), + frame_share_percent=( + len(intersection_frames) / (len(self._ds_data_provider.job_data.rel_range) or 1) + ), frames=intersection_frames, conflict_count=len(conflicts), From 15bcac7ddc5499f784e7514053586ad048156cda Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 16 May 2023 18:37:42 +0300 Subject: [PATCH 112/257] Extract quality to a separate app, add migrations and settings --- cvat-core/src/server-proxy.ts | 4 +- .../migrations/0083_move_quality_models.py | 28 ++ cvat/apps/engine/models.py | 217 ---------------- cvat/apps/engine/serializers.py | 87 ------- cvat/apps/engine/signals.py | 40 +-- cvat/apps/engine/urls.py | 3 - cvat/apps/engine/views.py | 187 +------------- cvat/apps/iam/permissions.py | 3 +- cvat/apps/quality_control/__init__.py | 0 cvat/apps/quality_control/apps.py | 17 ++ cvat/apps/quality_control/default_settings.py | 2 + .../migrations/0001_initial.py | 85 +++++++ .../quality_control/migrations/__init__.py | 0 cvat/apps/quality_control/models.py | 204 +++++++++++++++ .../quality_reports.py} | 164 ++++++------ cvat/apps/quality_control/serializers.py | 94 +++++++ cvat/apps/quality_control/signals.py | 46 ++++ cvat/apps/quality_control/urls.py | 20 ++ cvat/apps/quality_control/views.py | 200 +++++++++++++++ cvat/schema.yml | 240 +++++++++--------- cvat/settings/base.py | 3 +- cvat/settings/development.py | 2 + cvat/urls.py | 3 + 23 files changed, 928 insertions(+), 721 deletions(-) create mode 100644 cvat/apps/engine/migrations/0083_move_quality_models.py create mode 100644 cvat/apps/quality_control/__init__.py create mode 100644 cvat/apps/quality_control/apps.py create mode 100644 cvat/apps/quality_control/default_settings.py create mode 100644 cvat/apps/quality_control/migrations/0001_initial.py create mode 100644 cvat/apps/quality_control/migrations/__init__.py create mode 100644 cvat/apps/quality_control/models.py rename cvat/apps/{engine/quality_control.py => quality_control/quality_reports.py} (97%) create mode 100644 cvat/apps/quality_control/serializers.py create mode 100644 cvat/apps/quality_control/signals.py create mode 100644 cvat/apps/quality_control/urls.py create mode 100644 cvat/apps/quality_control/views.py diff --git a/cvat-core/src/server-proxy.ts b/cvat-core/src/server-proxy.ts index 6fcd4021d768..cca0589f7514 100644 --- a/cvat-core/src/server-proxy.ts +++ b/cvat-core/src/server-proxy.ts @@ -2163,7 +2163,7 @@ async function getQualityReports(filter): Promise { const { backendAPI } = config; try { - const response = await Axios.get(`${backendAPI}/quality_reports`, { + const response = await Axios.get(`${backendAPI}/quality/reports`, { params: { ...params, ...filter, @@ -2181,7 +2181,7 @@ async function getQualityConflicts(filter): Promise { const { backendAPI } = config; try { - const response = await fetchAll(`${backendAPI}/conflicts`, { + const response = await fetchAll(`${backendAPI}/quality/conflicts`, { ...params, ...filter, }); diff --git a/cvat/apps/engine/migrations/0083_move_quality_models.py b/cvat/apps/engine/migrations/0083_move_quality_models.py new file mode 100644 index 000000000000..375f38ee9938 --- /dev/null +++ b/cvat/apps/engine/migrations/0083_move_quality_models.py @@ -0,0 +1,28 @@ +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('engine', '0082_alter_job_type'), + ] + + database_operations = [ + migrations.AlterModelTable('QualityReport', 'quality_control_qualityreport'), + migrations.AlterModelTable('AnnotationConflict', 'quality_control_annotationconflict'), + migrations.AlterModelTable('AnnotationId', 'quality_control_annotationid'), + migrations.AlterModelTable('QualitySettings', 'quality_control_qualitysettings'), + ] + + state_operations = [ + migrations.DeleteModel('QualityReport'), + migrations.DeleteModel('AnnotationConflict'), + migrations.DeleteModel('AnnotationId'), + migrations.DeleteModel('QualitySettings'), + ] + + operations = [ + migrations.SeparateDatabaseAndState( + database_operations=database_operations, + state_operations=state_operations) + ] diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index 926024a72262..3975af7e3b69 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -4,7 +4,6 @@ # SPDX-License-Identifier: MIT from __future__ import annotations -from copy import deepcopy import os import re @@ -1035,219 +1034,3 @@ class Storage(models.Model): class Meta: default_permissions = () - - -class AnnotationConflictType(str, Enum): - MISSING_ANNOTATION = 'missing_annotation' - EXTRA_ANNOTATION = 'extra_annotation' - MISMATCHING_LABEL = 'mismatching_label' - LOW_OVERLAP = 'low_overlap' - MISMATCHING_DIRECTION = 'mismatching_direction' - MISMATCHING_ATTRIBUTES = 'mismatching_attributes' - MISMATCHING_GROUPS = 'mismatching_groups' - COVERED_ANNOTATION = 'covered_annotation' - - def __str__(self) -> str: - return self.value - - @classmethod - def choices(cls): - return tuple((x.value, x.name) for x in cls) - -class AnnotationConflictImportance(str, Enum): - WARNING = 'warning' - ERROR = 'error' - - def __str__(self) -> str: - return self.value - - @classmethod - def choices(cls): - return tuple((x.value, x.name) for x in cls) - -class MismatchingAnnotationKind(str, Enum): - ATTRIBUTE = 'attribute' - LABEL = 'label' - - def __str__(self) -> str: - return self.value - - @classmethod - def choices(cls): - return tuple((x.value, x.name) for x in cls) - - -class QualityReportTarget(str, Enum): - JOB = 'job' - TASK = 'task' - - def __str__(self) -> str: - return self.value - - @classmethod - def choices(cls): - return tuple((x.value, x.name) for x in cls) - - -class QualityReport(models.Model): - job = models.ForeignKey(Job, on_delete=models.CASCADE, - related_name='quality_reports', null=True, blank=True) - task = models.ForeignKey(Task, on_delete=models.CASCADE, - related_name='quality_reports', null=True, blank=True) - - parent = models.ForeignKey('self', on_delete=models.CASCADE, - related_name='children', null=True, blank=True) - children: Sequence[QualityReport] - - created_date = models.DateTimeField(auto_now_add=True) - target_last_updated = models.DateTimeField() - gt_last_updated = models.DateTimeField() - - data = models.JSONField() - - conflicts: Sequence[AnnotationConflict] - - @property - def target(self) -> QualityReportTarget: - if self.job: - return QualityReportTarget.JOB - elif self.task: - return QualityReportTarget.TASK - else: - assert False - - def _parse_report(self): - from cvat.apps.engine.quality_control import ComparisonReport - return ComparisonReport.from_json(self.data) - - @property - def parameters(self): - report = self._parse_report() - return report.parameters - - @property - def summary(self): - report = self._parse_report() - return report.comparison_summary - - def get_task(self) -> Task: - if self.task is not None: - return self.task - else: - return self.job.segment.task - - def get_json_report(self) -> str: - return self.data - - def clean(self): - if not (self.job is not None) ^ (self.task is not None): - raise ValidationError("One of the 'job' and 'task' fields must be set") - -class AnnotationConflict(models.Model): - report = models.ForeignKey(QualityReport, - on_delete=models.CASCADE, related_name='conflicts') - frame = models.PositiveIntegerField() - type = models.CharField(max_length=32, choices=AnnotationConflictType.choices()) - importance = models.CharField(max_length=32, choices=AnnotationConflictImportance.choices()) - - annotation_ids: Sequence[AnnotationId] - - # def clean(self) -> None: - # def _validate_annotation_ids(annotation_ids: List[AnnotationId], *, required_count: int): - # if annotation_ids is None: - # raise ValueError("Annotation ids must be provided") - # elif not isinstance(annotation_ids, list): - # raise ValueError("Annotation ids must be a list") - # else: - # if len(annotation_ids) != required_count: - # raise ValueError(f"Expected exactly {required_count} annotation ids") - - # for ann_id in annotation_ids: - # if not isinstance(ann_id, dict): - # raise ValueError("Annotation ids must be a list of dicts") - # AnnotationId(data=ann_id).full_clean() - - # return annotation_ids - - # if self.type == AnnotationConflictType.MISMATCHING_LABEL: - # _validate_annotation_ids(list(self.annotation_ids), required_count=2) - - # elif self.type in [ - # AnnotationConflictType.EXTRA_ANNOTATION, AnnotationConflictType.MISSING_ANNOTATION - # ]: - # _validate_annotation_ids(list(self.annotation_ids), required_count=1) - - # else: - # raise ValueError(f"Unknown conflict type {self.type}") - - # return super().clean() - -class AnnotationType(str, Enum): - TAG = 'tag' - TRACK = 'track' - RECTANGLE = 'rectangle' - POLYGON = 'polygon' - POLYLINE = 'polyline' - POINTS = 'points' - ELLIPSE = 'ellipse' - CUBOID = 'cuboid' - MASK = 'mask' - SKELETON = 'skeleton' - - def __str__(self) -> str: - return self.value - - @classmethod - def choices(cls): - return tuple((x.value, x.name) for x in cls) - - -class AnnotationId(models.Model): - conflict = models.ForeignKey(AnnotationConflict, - on_delete=models.CASCADE, related_name='annotation_ids') - - obj_id = models.PositiveIntegerField() - job_id = models.PositiveIntegerField() - type = models.CharField(max_length=32, choices=AnnotationType.choices()) - - -class QualitySettings(models.Model): - task = models.OneToOneField(Task, - on_delete=models.CASCADE, related_name='quality_settings' - ) - - iou_threshold = models.FloatField() - oks_sigma = models.FloatField() - line_thickness = models.FloatField() - - low_overlap_threshold = models.FloatField() - - oriented_lines = models.BooleanField() - line_orientation_threshold = models.FloatField() - - compare_groups = models.BooleanField() - group_match_threshold = models.FloatField() - - check_covered_annotations = models.BooleanField() - object_visibility_threshold = models.FloatField() - - panoptic_comparison = models.BooleanField() - - compare_attributes = models.BooleanField() - - def __init__(self, *args: Any, **kwargs: Any) -> None: - params = deepcopy(self.get_defaults()) - params.update(kwargs) - super().__init__(*args, **params) - - @classmethod - def get_defaults(cls) -> dict: - import cvat.apps.engine.quality_control as qc - default_settings = qc.DatasetComparator.DEFAULT_SETTINGS.to_dict() - - existing_fields = {f.name for f in cls._meta.fields} - return {k: v for k, v in default_settings.items() if k in existing_fields} - - def to_dict(self): - from django.forms.models import model_to_dict - return model_to_dict(self) diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index bb96e79e8044..f82c118e54f7 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -1905,90 +1905,3 @@ def _validate_existence_of_cloud_storage(cloud_storage_id): _ = models.CloudStorage.objects.get(id=cloud_storage_id) except models.CloudStorage.DoesNotExist: raise serializers.ValidationError(f'The specified cloud storage {cloud_storage_id} does not exist.') - - -class AnnotationIdSerializer(serializers.ModelSerializer): - class Meta: - model = models.AnnotationId - fields = ('obj_id', 'job_id', 'type') - read_only_fields = fields - - -class AnnotationConflictSerializer(serializers.ModelSerializer): - annotation_ids = AnnotationIdSerializer(many=True) - - class Meta: - model = models.AnnotationConflict - fields = ('id', 'frame', 'type', 'annotation_ids', 'report_id', 'importance') - read_only_fields = fields - - -class QualityReportSummarySerializer(serializers.Serializer): - frame_count = serializers.IntegerField() - frame_share_percent = serializers.FloatField() - conflict_count = serializers.IntegerField() - warning_count = serializers.IntegerField() - error_count = serializers.IntegerField() - - # This set is enough for basic characteristics, such as - # DS_unmatched, GT_unmatched, accuracy, precision and recall - valid_count = serializers.IntegerField(source='annotations.valid_count') - ds_count = serializers.IntegerField(source='annotations.ds_count') - gt_count = serializers.IntegerField(source='annotations.gt_count') - - -class QualityReportParametersSerializer(serializers.Serializer): - iou_threshold = serializers.FloatField() - - -class QualityReportSerializer(serializers.ModelSerializer): - target = serializers.ChoiceField(models.QualityReportTarget.choices()) - summary = QualityReportSummarySerializer() - parameters = QualityReportParametersSerializer() - - class Meta: - model = models.QualityReport - fields = ('id', 'job_id', 'task_id', 'parent_id', 'target', 'summary', 'parameters', - 'created_date', 'target_last_updated', 'gt_last_updated', - ) - read_only_fields = fields - - -class QualitySettingsSerializer(serializers.ModelSerializer): - class Meta: - model = models.QualitySettings - fields = ( - 'task', - - 'iou_threshold', - 'oks_sigma', - 'line_thickness', - - 'low_overlap_threshold', - - 'oriented_lines', - 'line_orientation_threshold', - - 'compare_groups', - 'group_match_threshold', - - 'check_covered_annotations', - 'object_visibility_threshold', - - 'panoptic_comparison', - - 'compare_attributes', - ) - read_only_fields = ('task', ) - extra_kwargs = { - k: {'required': False} - for k in fields - } - - def validate(self, attrs): - for k, v in attrs.items(): - if k.endswith('_threshold') or k in ['oks_sigma', 'line_thickness']: - if not 0 <= v <= 1: - raise serializers.ValidationError(f"{k} must be in the range [0; 1]") - - return super().validate(attrs) diff --git a/cvat/apps/engine/signals.py b/cvat/apps/engine/signals.py index 3a48c2c4dfab..fc068acd1f21 100644 --- a/cvat/apps/engine/signals.py +++ b/cvat/apps/engine/signals.py @@ -8,10 +8,7 @@ from django.db.models.signals import post_delete, post_save from django.dispatch import receiver -from .models import (Annotation, CloudStorage, Data, Job, Profile, Project, - StatusChoice, Task, QualitySettings) - -from cvat.apps.engine import quality_control as qc +from .models import CloudStorage, Data, Job, Profile, Project, StatusChoice, Task # TODO: need to log any problems reported by shutil.rmtree when the new @@ -78,38 +75,3 @@ def __delete_data_handler(instance, **kwargs): dispatch_uid=__name__ + ".delete_cloudstorage_handler") def __delete_cloudstorage_handler(instance, **kwargs): shutil.rmtree(instance.get_storage_dirname(), ignore_errors=True) - - -@receiver(post_save, sender=Job, - dispatch_uid=__name__ + ".save_job-update_quality_metrics") -@receiver(post_save, sender=Task, - dispatch_uid=__name__ + ".save_task-update_quality_metrics") -@receiver(post_save, sender=Project, - dispatch_uid=__name__ + ".save_project-update_quality_metrics") -@receiver(post_save, sender=Annotation, - dispatch_uid=__name__ + ".save_annotation-update_quality_metrics") -def __save_job__update_quality_metrics(instance, created, **kwargs): - tasks = [] - - if isinstance(instance, Project): - tasks += list(instance.tasks.all()) - elif isinstance(instance, Task): - tasks.append(instance) - elif isinstance(instance, Job): - tasks.append(instance.segment.task) - elif isinstance(instance, Annotation): - tasks.append(instance.job.segment.task) - else: - assert False - - for task in tasks: - qc.QueueJobManager().schedule_quality_check_job(task) - - -@receiver(post_save, sender=Task, - dispatch_uid=__name__ + ".save_task-initialize_quality_settings") -def __save_task__initialize_quality_settings(instance, created, **kwargs): - # Initializes default quality settings for the task - # this is done here to make the components decoupled - if created: - QualitySettings.objects.get_or_create(task=instance) diff --git a/cvat/apps/engine/urls.py b/cvat/apps/engine/urls.py index bce714cd189e..abd3a1582f55 100644 --- a/cvat/apps/engine/urls.py +++ b/cvat/apps/engine/urls.py @@ -22,9 +22,6 @@ router.register('comments', views.CommentViewSet) router.register('labels', views.LabelViewSet) router.register('cloudstorages', views.CloudStorageViewSet) -router.register('quality_reports', views.QualityReportViewSet, basename='quality_reports') -router.register('conflicts', views.ConflictsViewSet, basename='annotation_conflicts') -router.register('quality_settings', views.QualitySettingsViewSet, basename='quality_settings') urlpatterns = [ # Entry point for a client diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index e72ebe53c26c..10fd37b17fbb 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -47,41 +47,38 @@ from cvat.apps.engine.frame_provider import FrameProvider from cvat.apps.engine.media_extractors import get_mime from cvat.apps.engine.models import ( - AnnotationConflict, Job, JobType, Label, QualitySettings, QualityReport, - Task, Project, Issue, Data, + Job, JobType, Label, Task, Project, Issue, Data, Comment, StorageMethodChoice, StorageChoice, CloudProviderChoice, Location ) from cvat.apps.engine.models import CloudStorage as CloudStorageModel from cvat.apps.engine.serializers import ( - AboutSerializer, AnnotationConflictSerializer, AnnotationFileSerializer, BasicUserSerializer, + AboutSerializer, AnnotationFileSerializer, BasicUserSerializer, DataMetaReadSerializer, DataMetaWriteSerializer, DataSerializer, FileInfoSerializer, JobReadSerializer, JobWriteSerializer, LabelSerializer, LabeledDataSerializer, - ProjectReadSerializer, ProjectWriteSerializer, QualitySettingsSerializer, + ProjectReadSerializer, ProjectWriteSerializer, RqStatusSerializer, TaskReadSerializer, TaskWriteSerializer, UserSerializer, PluginsSerializer, IssueReadSerializer, IssueWriteSerializer, CommentReadSerializer, CommentWriteSerializer, CloudStorageWriteSerializer, CloudStorageReadSerializer, DatasetFileSerializer, - ProjectFileSerializer, TaskFileSerializer, QualityReportSerializer) + ProjectFileSerializer, TaskFileSerializer) from cvat.apps.engine.view_utils import get_cloud_storage_for_import_or_export from utils.dataset_manifest import ImageManifestManager from cvat.apps.engine.utils import ( - av_scan_paths, get_server_url, process_failed_job, configure_dependent_job, + av_scan_paths, process_failed_job, configure_dependent_job, parse_exception_message, get_rq_job_meta ) from cvat.apps.engine import backup from cvat.apps.engine.mixins import PartialUpdateModelMixin, UploadMixin, AnnotationMixin, SerializeMixin from cvat.apps.engine.location import get_location_configuration, StorageType -from cvat.apps.engine import quality_control as qc -from cvat.apps.profiler import silk_profile from . import models, task from .log import slogger -from cvat.apps.iam.permissions import (AnnotationConflictPermission, CloudStoragePermission, +from cvat.apps.iam.permissions import (CloudStoragePermission, CommentPermission, IssuePermission, JobPermission, LabelPermission, - ProjectPermission, QualityReportPermission, TaskPermission, UserPermission) + ProjectPermission, TaskPermission, UserPermission) from cvat.apps.engine.cache import MediaCache from cvat.apps.events.handlers import handle_annotations_patch from cvat.apps.engine.view_utils import tus_chunk_action @@ -2227,176 +2224,6 @@ def actions(self, request, pk): return HttpResponseBadRequest(msg) -@extend_schema(tags=['conflicts']) -@extend_schema_view( - list=extend_schema( - summary='Method returns a paginated list of annotation conflicts', - parameters=[ - # These filters are implemented differently from others - OpenApiParameter('task_id', type=OpenApiTypes.INT, - description='A simple equality filter for task id'), - ], - responses={ - '200': AnnotationConflictSerializer(many=True), - }), -) -class ConflictsViewSet(viewsets.GenericViewSet, mixins.ListModelMixin): - queryset = AnnotationConflict.objects.prefetch_related('report', 'annotation_ids').all() - - # NOTE: This filter works incorrectly for this view - # it requires task__organization OR project__organization check. - # Thus, we rely on permission-based filtering - iam_organization_field = None - - search_fields = [] - filter_fields = list(search_fields) + ['id', 'report_id', 'frame', 'type', 'job_id'] - simple_filters = set(filter_fields) - {'id'} - lookup_fields = { - 'report_id': 'report__id', - 'job_id': 'report__job__id', - } - ordering_fields = list(filter_fields) - ordering = 'id' - serializer_class = AnnotationConflictSerializer - - def get_queryset(self): - queryset = super().get_queryset() - - if self.action == 'list': - if task_id := self.request.GET.get('task_id', None): - # NOTE: This filter is too complex to be implemented by other means - task = Task.objects.get(id=task_id) - self.check_object_permissions(self.request, task) - queryset = queryset.filter( - Q(report__job__segment__task__id=task_id) | Q(report__task__id=task_id) - ) - else: - # In other cases permissions are checked already - perm = AnnotationConflictPermission.create_scope_list(self.request) - queryset = perm.filter(queryset) - - return queryset - - -@extend_schema(tags=['quality_reports']) -@extend_schema_view( - retrieve=extend_schema( - summary='Method returns details of a quality report', - responses={ - '200': QualityReportSerializer, - }), - list=extend_schema( - summary='Method returns a paginated list of quality_reports', - parameters=[ - # These filters are implemented differently from others - OpenApiParameter('task_id', type=OpenApiTypes.INT, - description='A simple equality filter for task id'), - OpenApiParameter('target', type=OpenApiTypes.STR, - description='A simple equality filter for target'), - ], - responses={ - '200': QualityReportSerializer(many=True), - }), -) -class QualityReportViewSet(viewsets.GenericViewSet, - mixins.ListModelMixin, mixins.RetrieveModelMixin -): - queryset = QualityReport.objects.prefetch_related( - 'job', - 'job__segment', - 'job__segment__task', - 'task', - 'task__project', - ).all() - - # NOTE: This filter works incorrectly for this view - # it requires task__organization OR project__organization check. - # Thus, we rely on permission-based filtering - iam_organization_field = None - - search_fields = [] - filter_fields = list(search_fields) + [ - 'id', 'job_id', 'created_date', - 'gt_last_updated', 'target_last_updated', 'parent_id' - ] - simple_filters = list(set(filter_fields) - { - 'id', 'created_date', 'gt_last_updated', 'target_last_updated' - }) - ordering_fields = list(filter_fields) - ordering = 'id' - - def get_serializer_class(self): - # a separate method is required for drf-spectacular to work - return QualityReportSerializer - - def get_queryset(self): - queryset = super().get_queryset() - - if self.action == 'list': - if task_id := self.request.GET.get('task_id', None): - # NOTE: This filter is too complex to be implemented by other means - task = Task.objects.get(id=task_id) - self.check_object_permissions(self.request, task) - queryset = queryset.filter(Q(job__segment__task__id=task_id) | Q(task__id=task_id)) - else: - # In other cases permissions are checked already - perm = QualityReportPermission.create_scope_list(self.request) - queryset = perm.filter(queryset) - - if target := self.request.GET.get('target', None): - if target == models.QualityReportTarget.JOB: - queryset = queryset.filter(job__isnull=False) - elif target == models.QualityReportTarget.TASK: - queryset = queryset.filter(task__isnull=False) - else: - raise ValidationError( - "Unexpected 'target' filter value '{}'. Valid values are: {}".format( - target, - ', '.join(m[0] for m in models.QualityReportTarget.choices()) - ) - ) - - return queryset - - @action(detail=True, methods=['GET'], url_path='data', serializer_class=None) - def data(self, request, pk): - report = self.get_object() # check permissions - json_report = qc.prepare_report_for_downloading(report, host=get_server_url(request)) - return HttpResponse(json_report.encode()) - - @extend_schema(parameters=[ - OpenApiParameter('task_id', type=OpenApiTypes.INT) - ]) - @action(detail=False, methods=['GET'], url_path='debug', serializer_class=None) - @silk_profile() - def debug(self, request): - qc.QueueJobManager._update_task_quality_metrics(task_id=request.GET.get('task_id')) - return HttpResponse({}) - - -@extend_schema(tags=['quality_settings']) -@extend_schema_view( - retrieve=extend_schema( - summary='Method returns details of a quality settings', - responses={ - '200': QualitySettingsSerializer, - }), -) -class QualitySettingsViewSet(viewsets.GenericViewSet, - mixins.RetrieveModelMixin, PartialUpdateModelMixin -): - queryset = QualitySettings.objects.select_related('task').all() - - iam_organization_field = 'task__organization' - - search_fields = [] - filter_fields = [] - ordering_fields = ['id'] - ordering = 'id' - - serializer_class = QualitySettingsSerializer - - def rq_exception_handler(rq_job, exc_type, exc_value, tb): rq_job.exc_info = "".join( traceback.format_exception_only(exc_type, exc_value)) diff --git a/cvat/apps/iam/permissions.py b/cvat/apps/iam/permissions.py index f67a2e4f319c..af288df1d74d 100644 --- a/cvat/apps/iam/permissions.py +++ b/cvat/apps/iam/permissions.py @@ -18,7 +18,8 @@ from rest_framework.permissions import BasePermission from cvat.apps.organizations.models import Membership, Organization -from cvat.apps.engine.models import AnnotationConflict, CloudStorage, Label, Project, QualityReport, QualitySettings, Task, Job, Issue +from cvat.apps.engine.models import CloudStorage, Label, Project, Task, Job, Issue +from cvat.apps.quality_control.models import AnnotationConflict, QualityReport, QualitySettings from cvat.apps.webhooks.models import WebhookTypeChoice from cvat.utils.http import make_requests_session diff --git a/cvat/apps/quality_control/__init__.py b/cvat/apps/quality_control/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/cvat/apps/quality_control/apps.py b/cvat/apps/quality_control/apps.py new file mode 100644 index 000000000000..e558b8037255 --- /dev/null +++ b/cvat/apps/quality_control/apps.py @@ -0,0 +1,17 @@ +# Copyright (C) 2023 Intel Corporation +# +# SPDX-License-Identifier: MIT + +from django.apps import AppConfig + + +class QualityControlConfig(AppConfig): + name = 'cvat.apps.quality_control' + + def ready(self) -> None: + from . import default_settings + from django.conf import settings + + for key in dir(default_settings): + if key.isupper() and not hasattr(settings, key): + setattr(settings, key, getattr(default_settings, key)) diff --git a/cvat/apps/quality_control/default_settings.py b/cvat/apps/quality_control/default_settings.py new file mode 100644 index 000000000000..a3633ce58c0c --- /dev/null +++ b/cvat/apps/quality_control/default_settings.py @@ -0,0 +1,2 @@ +QUALITY_CHECK_JOB_DELAY = 60 * 60 +"The delay before the next quality check job is queued, in seconds" diff --git a/cvat/apps/quality_control/migrations/0001_initial.py b/cvat/apps/quality_control/migrations/0001_initial.py new file mode 100644 index 000000000000..9b3538b552d0 --- /dev/null +++ b/cvat/apps/quality_control/migrations/0001_initial.py @@ -0,0 +1,85 @@ +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('engine', '0083_move_quality_models'), + ] + + state_operations = [ + migrations.CreateModel( + name='AnnotationConflict', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('frame', models.PositiveIntegerField()), + ('type', models.CharField(choices=[('missing_annotation', 'MISSING_ANNOTATION'), ('extra_annotation', 'EXTRA_ANNOTATION'), ('mismatching_label', 'MISMATCHING_LABEL'), ('low_overlap', 'LOW_OVERLAP'), ('mismatching_direction', 'MISMATCHING_DIRECTION'), ('mismatching_attributes', 'MISMATCHING_ATTRIBUTES'), ('mismatching_groups', 'MISMATCHING_GROUPS'), ('covered_annotation', 'COVERED_ANNOTATION')], max_length=32)), + ('importance', models.CharField(choices=[('warning', 'WARNING'), ('error', 'ERROR')], max_length=32)), + ], + options={ + 'db_table': 'quality_control_annotationconflict', + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='QualitySettings', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('iou_threshold', models.FloatField()), + ('oks_sigma', models.FloatField()), + ('line_thickness', models.FloatField()), + ('low_overlap_threshold', models.FloatField()), + ('oriented_lines', models.BooleanField()), + ('line_orientation_threshold', models.FloatField()), + ('compare_groups', models.BooleanField()), + ('group_match_threshold', models.FloatField()), + ('check_covered_annotations', models.BooleanField()), + ('object_visibility_threshold', models.FloatField()), + ('panoptic_comparison', models.BooleanField()), + ('compare_attributes', models.BooleanField()), + ('task', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='quality_settings', to='engine.task')), + ], + options={ + 'db_table': 'quality_control_qualitysettings', + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='QualityReport', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('created_date', models.DateTimeField(auto_now_add=True)), + ('target_last_updated', models.DateTimeField()), + ('gt_last_updated', models.DateTimeField()), + ('data', models.JSONField()), + ('job', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='quality_reports', to='engine.job')), + ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='quality_control.qualityreport')), + ('task', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='quality_reports', to='engine.task')), + ], + options={ + 'db_table': 'quality_control_qualityreport', + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='AnnotationId', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('obj_id', models.PositiveIntegerField()), + ('job_id', models.PositiveIntegerField()), + ('type', models.CharField(choices=[('tag', 'TAG'), ('track', 'TRACK'), ('rectangle', 'RECTANGLE'), ('polygon', 'POLYGON'), ('polyline', 'POLYLINE'), ('points', 'POINTS'), ('ellipse', 'ELLIPSE'), ('cuboid', 'CUBOID'), ('mask', 'MASK'), ('skeleton', 'SKELETON')], max_length=32)), + ('conflict', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='annotation_ids', to='quality_control.annotationconflict')), + ], + options={ + 'db_table': 'quality_control_annotationid', + }, + bases=(models.Model,), + ), + ] + + operations = [ + migrations.SeparateDatabaseAndState(state_operations=state_operations) + ] diff --git a/cvat/apps/quality_control/migrations/__init__.py b/cvat/apps/quality_control/migrations/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/cvat/apps/quality_control/models.py b/cvat/apps/quality_control/models.py new file mode 100644 index 000000000000..f3f5de2ca63d --- /dev/null +++ b/cvat/apps/quality_control/models.py @@ -0,0 +1,204 @@ +# Copyright (C) 2023 CVAT.ai Corporation +# +# SPDX-License-Identifier: MIT + +from __future__ import annotations +from copy import deepcopy + +from enum import Enum +from typing import Any, Sequence + +from django.core.exceptions import ValidationError +from django.db import models +from django.forms.models import model_to_dict + +from cvat.apps.engine.models import Task, Job + + +class AnnotationConflictType(str, Enum): + MISSING_ANNOTATION = 'missing_annotation' + EXTRA_ANNOTATION = 'extra_annotation' + MISMATCHING_LABEL = 'mismatching_label' + LOW_OVERLAP = 'low_overlap' + MISMATCHING_DIRECTION = 'mismatching_direction' + MISMATCHING_ATTRIBUTES = 'mismatching_attributes' + MISMATCHING_GROUPS = 'mismatching_groups' + COVERED_ANNOTATION = 'covered_annotation' + + def __str__(self) -> str: + return self.value + + @classmethod + def choices(cls): + return tuple((x.value, x.name) for x in cls) + + +class AnnotationConflictImportance(str, Enum): + WARNING = 'warning' + ERROR = 'error' + + def __str__(self) -> str: + return self.value + + @classmethod + def choices(cls): + return tuple((x.value, x.name) for x in cls) + + +class MismatchingAnnotationKind(str, Enum): + ATTRIBUTE = 'attribute' + LABEL = 'label' + + def __str__(self) -> str: + return self.value + + @classmethod + def choices(cls): + return tuple((x.value, x.name) for x in cls) + + +class QualityReportTarget(str, Enum): + JOB = 'job' + TASK = 'task' + + def __str__(self) -> str: + return self.value + + @classmethod + def choices(cls): + return tuple((x.value, x.name) for x in cls) + + +class QualityReport(models.Model): + job = models.ForeignKey(Job, on_delete=models.CASCADE, + related_name='quality_reports', null=True, blank=True) + task = models.ForeignKey(Task, on_delete=models.CASCADE, + related_name='quality_reports', null=True, blank=True) + + parent = models.ForeignKey('self', on_delete=models.CASCADE, + related_name='children', null=True, blank=True) + children: Sequence[QualityReport] + + created_date = models.DateTimeField(auto_now_add=True) + target_last_updated = models.DateTimeField() + gt_last_updated = models.DateTimeField() + + data = models.JSONField() + + conflicts: Sequence[AnnotationConflict] + + @property + def target(self) -> QualityReportTarget: + if self.job: + return QualityReportTarget.JOB + elif self.task: + return QualityReportTarget.TASK + else: + assert False + + def _parse_report(self): + from cvat.apps.quality_control.quality_reports import ComparisonReport + return ComparisonReport.from_json(self.data) + + @property + def parameters(self): + report = self._parse_report() + return report.parameters + + @property + def summary(self): + report = self._parse_report() + return report.comparison_summary + + def get_task(self) -> Task: + if self.task is not None: + return self.task + else: + return self.job.segment.task + + def get_json_report(self) -> str: + return self.data + + def clean(self): + if not (self.job is not None) ^ (self.task is not None): + raise ValidationError("One of the 'job' and 'task' fields must be set") + + +class AnnotationConflict(models.Model): + report = models.ForeignKey(QualityReport, + on_delete=models.CASCADE, related_name='conflicts') + frame = models.PositiveIntegerField() + type = models.CharField(max_length=32, choices=AnnotationConflictType.choices()) + importance = models.CharField(max_length=32, choices=AnnotationConflictImportance.choices()) + + annotation_ids: Sequence[AnnotationId] + + +class AnnotationType(str, Enum): + TAG = 'tag' + TRACK = 'track' + RECTANGLE = 'rectangle' + POLYGON = 'polygon' + POLYLINE = 'polyline' + POINTS = 'points' + ELLIPSE = 'ellipse' + CUBOID = 'cuboid' + MASK = 'mask' + SKELETON = 'skeleton' + + def __str__(self) -> str: + return self.value + + @classmethod + def choices(cls): + return tuple((x.value, x.name) for x in cls) + + +class AnnotationId(models.Model): + conflict = models.ForeignKey(AnnotationConflict, + on_delete=models.CASCADE, related_name='annotation_ids') + + obj_id = models.PositiveIntegerField() + job_id = models.PositiveIntegerField() + type = models.CharField(max_length=32, choices=AnnotationType.choices()) + + +class QualitySettings(models.Model): + task = models.OneToOneField(Task, + on_delete=models.CASCADE, related_name='quality_settings' + ) + + iou_threshold = models.FloatField() + oks_sigma = models.FloatField() + line_thickness = models.FloatField() + + low_overlap_threshold = models.FloatField() + + oriented_lines = models.BooleanField() + line_orientation_threshold = models.FloatField() + + compare_groups = models.BooleanField() + group_match_threshold = models.FloatField() + + check_covered_annotations = models.BooleanField() + object_visibility_threshold = models.FloatField() + + panoptic_comparison = models.BooleanField() + + compare_attributes = models.BooleanField() + + def __init__(self, *args: Any, **kwargs: Any) -> None: + params = deepcopy(self.get_defaults()) + params.update(kwargs) + super().__init__(*args, **params) + + @classmethod + def get_defaults(cls) -> dict: + import cvat.apps.quality_control.quality_reports as qc + default_settings = qc.DatasetComparator.DEFAULT_SETTINGS.to_dict() + + existing_fields = {f.name for f in cls._meta.fields} + return {k: v for k, v in default_settings.items() if k in existing_fields} + + def to_dict(self): + return model_to_dict(self) diff --git a/cvat/apps/engine/quality_control.py b/cvat/apps/quality_control/quality_reports.py similarity index 97% rename from cvat/apps/engine/quality_control.py rename to cvat/apps/quality_control/quality_reports.py index 59dc924d3bc4..a2584583cd39 100644 --- a/cvat/apps/engine/quality_control.py +++ b/cvat/apps/quality_control/quality_reports.py @@ -3,6 +3,7 @@ # SPDX-License-Identifier: MIT from __future__ import annotations + from copy import deepcopy from datetime import timedelta from functools import cached_property, partial @@ -14,8 +15,8 @@ from attrs import asdict, define, fields_dict, has as is_attrs_type import datumaro as dm import datumaro.util.mask_tools -from django.conf import settings from django.db import transaction +from django.conf import settings from django.utils import timezone from scipy.optimize import linear_sum_assignment import django_rq @@ -26,9 +27,14 @@ GetCVATDataExtractor, JobData, match_dm_item) from cvat.apps.dataset_manager.util import bulk_create from cvat.apps.dataset_manager.formats.registry import dm_env -from cvat.apps.engine import models -from cvat.apps.engine.models import (AnnotationConflictImportance, - AnnotationConflictType, AnnotationType, ShapeType) + +from cvat.apps.engine.models import Job, JobType, ShapeType, Task + +from cvat.apps.quality_control.models import ( + AnnotationConflictImportance, AnnotationConflictType, AnnotationType, +) +from cvat.apps.quality_control import models + from cvat.apps.profiler import silk_profile from datumaro.util import dump_json, parse_json @@ -482,6 +488,8 @@ def from_dict(cls, d: Dict[str, Any]) -> ComparisonReport: def to_json(self, *args, **kwargs) -> str: d = self.to_dict(*args, **kwargs) + + # String keys are needed for json dumping d["frame_results"] = {str(k): v for k, v in d['frame_results'].items()} return dump_json(d, indent=True, append_newline=True).decode() @@ -2006,31 +2014,34 @@ def generate_report(self) -> ComparisonReport: ) -class QueueJobManager: - TASK_QUALITY_CHECK_JOB_DELAY = timedelta(seconds=5) # TODO: 1h +class ReportUpdateManager: _QUEUE_JOB_PREFIX = "update-quality-metrics-task-" + @classmethod + def _get_quality_check_job_delay(cls) -> timedelta: + return timedelta(seconds=settings.QUALITY_CHECK_JOB_DELAY) + def _get_scheduler(self): return django_rq.get_scheduler(settings.CVAT_QUEUES.QUALITY_REPORTS.value) - def _make_queue_job_prefix(self, task: models.Task) -> str: + def _make_queue_job_prefix(self, task: Task) -> str: return f'{self._QUEUE_JOB_PREFIX}{task.id}-' - def _make_initial_queue_job_id(self, task: models.Task) -> str: + def _make_initial_queue_job_id(self, task: Task) -> str: return f'{self._make_queue_job_prefix(task)}initial' - def _make_regular_queue_job_id(self, task: models.Task, start_time: timezone.datetime) -> str: + def _make_regular_queue_job_id(self, task: Task, start_time: timezone.datetime) -> str: return f'{self._make_queue_job_prefix(task)}{start_time.timestamp()}' @classmethod - def _get_last_report_time(cls, task: models.Task) -> Optional[timezone.datetime]: + def _get_last_report_time(cls, task: Task) -> Optional[timezone.datetime]: report = models.QualityReport.objects.filter(task=task).order_by('-created_date').first() if report: return report.created_date return None def _find_next_job_id( - self, existing_job_ids: Sequence[str], task: models.Task, *, now: timezone.datetime + self, existing_job_ids: Sequence[str], task: Task, *, now: timezone.datetime ) -> str: job_id_prefix = self._make_queue_job_prefix(task) @@ -2057,16 +2068,17 @@ def _get_timestamp(job_id: str) -> timezone.datetime: queue_job_id = max_job_id else: # Add an updating job in the queue in the next time frame + delay = self._get_quality_check_job_delay() intervals = max( 1, - 1 + (now - last_update_time) // self.TASK_QUALITY_CHECK_JOB_DELAY + 1 + (now - last_update_time) // delay ) - next_update_time = last_update_time + self.TASK_QUALITY_CHECK_JOB_DELAY * intervals + next_update_time = last_update_time + delay * intervals queue_job_id = self._make_regular_queue_job_id(task, next_update_time) return queue_job_id - def schedule_quality_check_job(self, task: models.Task): + def schedule_quality_check_job(self, task: Task): # This function schedules a report computing job in the queue # The queue work algorithm is lock-free. It should keep the following properties: # - job names are stable between potential writers @@ -2078,16 +2090,17 @@ def schedule_quality_check_job(self, task: models.Task): return now = timezone.now() + delay = self._get_quality_check_job_delay() + next_job_time = now.utcnow() + delay + scheduler = self._get_scheduler() - existing_job_ids = set(j.id for j in scheduler.get_jobs( - until=now.utcnow() + self.TASK_QUALITY_CHECK_JOB_DELAY - )) + existing_job_ids = set(j.id for j in scheduler.get_jobs(until=next_job_time)) queue_job_id = self._find_next_job_id(existing_job_ids, task, now=now) if queue_job_id not in existing_job_ids: scheduler.enqueue_at( - now.utcnow() + self.TASK_QUALITY_CHECK_JOB_DELAY, + next_job_time, self._update_task_quality_metrics, task_id=task.id, job_id=queue_job_id, @@ -2099,18 +2112,18 @@ def _update_task_quality_metrics(cls, *, task_id: int): with transaction.atomic(): # The task could have been deleted during scheduling try: - task = models.Task.objects.select_related('data').get(id=task_id) - except models.Task.DoesNotExist: + task = Task.objects.select_related('data').get(id=task_id) + except Task.DoesNotExist: return # Try to use shared queryset to minimize DB requests - job_queryset = models.Job.objects.prefetch_related('segment') + job_queryset = Job.objects.prefetch_related('segment') job_queryset = JobDataProvider.add_prefetch_info(job_queryset) job_queryset = job_queryset.filter(segment__task_id=task_id).all() # The GT job could have been removed during scheduling, so we need to check it exists - gt_job: models.Job = next( - (job for job in job_queryset if job.type == models.JobType.GROUND_TRUTH), + gt_job: Job = next( + (job for job in job_queryset if job.type == JobType.GROUND_TRUTH), None ) if gt_job is None: @@ -2128,10 +2141,10 @@ def _update_task_quality_metrics(cls, *, task_id: int): gt_job_data_provider = JobDataProvider(gt_job.id, queryset=job_queryset) gt_job_frames = gt_job_data_provider.job_data.get_included_frames() - jobs: List[models.Job] = [ + jobs: List[Job] = [ j for j in job_queryset - if j.type == models.JobType.ANNOTATION + if j.type == JobType.ANNOTATION ] job_data_providers = { job.id: JobDataProvider(job.id, queryset=job_queryset, @@ -2152,10 +2165,55 @@ def _update_task_quality_metrics(cls, *, task_id: int): # Release resources del job_data_provider.dm_dataset + task_comparison_report = cls._compute_task_report(task, job_comparison_reports) + + with transaction.atomic(): + # The task could have been deleted during processing + try: + Task.objects.get(id=task_id) + except Task.DoesNotExist: + return + + last_report_time = cls._get_last_report_time(task) + if (last_report_time + and timezone.now() < last_report_time + cls._get_quality_check_job_delay() + ): + # Discard this report as it has probably been computed in parallel + # with another one + return + + job_quality_reports = {} + for job in jobs: + job_comparison_report = job_comparison_reports[job.id] + job_report = dict( + job=job, + target_last_updated=job.updated_date, + gt_last_updated=gt_job.updated_date, + data=job_comparison_report.to_json(), + conflicts=[c.to_dict() for c in job_comparison_report.conflicts], + ) + + job_quality_reports[job.id] = job_report + + cls._save_reports( + task_report=dict( + task=task, + target_last_updated=task.updated_date, + gt_last_updated=gt_job.updated_date, + data=task_comparison_report.to_json(), + conflicts=[], # the task doesn't have own conflicts + ), + job_reports=list(job_quality_reports.values()) + ) + + @classmethod + def _compute_task_report( + cls, task: Task, job_reports: Dict[int, ComparisonReport] + ) -> ComparisonReport: # The task dataset can be different from any jobs' dataset because of frame overlaps # between jobs, from which annotations are merged to get the task annotations. # Thus, a separate report could be computed for the task. Instead, here we only - # compute combined summary for job reports. + # compute the combined summary of the job reports. task_intersection_frames = set() task_conflicts = [] task_annotations_summary = None @@ -2163,7 +2221,7 @@ def _update_task_quality_metrics(cls, *, task_id: int): task_mean_shape_ious = [] task_frame_results = {} task_frame_results_counts = {} - for r in job_comparison_reports.values(): + for r in job_reports.values(): task_intersection_frames.update(r.comparison_summary.frames) task_conflicts.extend(r.conflicts) @@ -2206,7 +2264,7 @@ def _update_task_quality_metrics(cls, *, task_id: int): task_ann_components_summary.shape.mean_iou = np.mean(task_mean_shape_ious) task_report_data = ComparisonReport( - parameters=next(iter(job_comparison_reports.values())).parameters, + parameters=next(iter(job_reports.values())).parameters, comparison_summary=ComparisonReportComparisonSummary( frame_share_percent=len(task_intersection_frames) / (task.data.size or 1), @@ -2229,48 +2287,10 @@ def _update_task_quality_metrics(cls, *, task_id: int): frame_results=task_frame_results, ) - with transaction.atomic(): - # The task could have been deleted during processing - try: - models.Task.objects.get(id=task_id) - except models.Task.DoesNotExist: - return - - last_report_time = cls._get_last_report_time(task) - if (last_report_time - and timezone.now() < last_report_time + cls.TASK_QUALITY_CHECK_JOB_DELAY - ): - # Discard this report as it has probably been computed in parallel - # with another one - return - - job_quality_reports = {} - for job in jobs: - job_comparison_report = job_comparison_reports[job.id] - job_report = dict( - job=job, - target_last_updated=job.updated_date, - gt_last_updated=gt_job.updated_date, - data=job_comparison_report.to_json(), - conflicts=[c.to_dict() for c in job_comparison_report.conflicts], - ) - - job_quality_reports[job.id] = job_report - - cls._save_reports( - task_report=dict( - task=task, - target_last_updated=task.updated_date, - gt_last_updated=gt_job.updated_date, - data=task_report_data.to_json(), - conflicts=[], # the task doesn't have own conflicts - ), - job_reports=list(job_quality_reports.values()) - ) - + return task_report_data @classmethod - def _save_reports(cls, *, task_report, job_reports) -> models.QualityReport: + def _save_reports(cls, *, task_report: Dict, job_reports: List[Dict]) -> models.QualityReport: # TODO: add validation (e.g. ann id count for different types of conflicts) db_task_report = models.QualityReport( @@ -2336,16 +2356,17 @@ def _save_reports(cls, *, task_report, job_reports) -> models.QualityReport: ) @classmethod - def _get_task_quality_params(cls, task: models.Task) -> Optional[ComparisonParameters]: + def _get_task_quality_params(cls, task: Task) -> Optional[ComparisonParameters]: quality_params, _ = models.QualitySettings.objects.get_or_create(task=task) return ComparisonParameters.from_dict(quality_params.to_dict()) def prepare_report_for_downloading(db_report: models.QualityReport, *, host: str) -> str: + # Decorate the report with conflicting annotation links like: + # /tasks/62/jobs/82?frame=250&type=shape&serverID=33741 + comparison_report = ComparisonReport.from_json(db_report.get_json_report()) - # Decorate report with conflicting annotation links like: - # /tasks/62/jobs/82?frame=250&type=shape&serverID=33741 serialized_data = comparison_report.to_dict() task_id = db_report.task.id @@ -2364,6 +2385,7 @@ def prepare_report_for_downloading(db_report: models.QualityReport, *, host: str f"&serverID={ann_id['obj_id']}" ) + # String keys are needed for json dumping serialized_data["frame_results"] = { str(k): v for k, v in serialized_data['frame_results'].items() } diff --git a/cvat/apps/quality_control/serializers.py b/cvat/apps/quality_control/serializers.py new file mode 100644 index 000000000000..4c9d4eba87bd --- /dev/null +++ b/cvat/apps/quality_control/serializers.py @@ -0,0 +1,94 @@ +# Copyright (C) 2023 CVAT.ai Corporation +# +# SPDX-License-Identifier: MIT + +from rest_framework import serializers + +from cvat.apps.quality_control import models + + +class AnnotationIdSerializer(serializers.ModelSerializer): + class Meta: + model = models.AnnotationId + fields = ('obj_id', 'job_id', 'type') + read_only_fields = fields + + +class AnnotationConflictSerializer(serializers.ModelSerializer): + annotation_ids = AnnotationIdSerializer(many=True) + + class Meta: + model = models.AnnotationConflict + fields = ('id', 'frame', 'type', 'annotation_ids', 'report_id', 'importance') + read_only_fields = fields + + +class QualityReportSummarySerializer(serializers.Serializer): + frame_count = serializers.IntegerField() + frame_share_percent = serializers.FloatField() + conflict_count = serializers.IntegerField() + warning_count = serializers.IntegerField() + error_count = serializers.IntegerField() + + # This set is enough for basic characteristics, such as + # DS_unmatched, GT_unmatched, accuracy, precision and recall + valid_count = serializers.IntegerField(source='annotations.valid_count') + ds_count = serializers.IntegerField(source='annotations.ds_count') + gt_count = serializers.IntegerField(source='annotations.gt_count') + + +class QualityReportParametersSerializer(serializers.Serializer): + iou_threshold = serializers.FloatField() + + +class QualityReportSerializer(serializers.ModelSerializer): + target = serializers.ChoiceField(models.QualityReportTarget.choices()) + summary = QualityReportSummarySerializer() + parameters = QualityReportParametersSerializer() + + class Meta: + model = models.QualityReport + fields = ('id', 'job_id', 'task_id', 'parent_id', 'target', 'summary', 'parameters', + 'created_date', 'target_last_updated', 'gt_last_updated', + ) + read_only_fields = fields + + +class QualitySettingsSerializer(serializers.ModelSerializer): + class Meta: + model = models.QualitySettings + fields = ( + 'task', + + 'iou_threshold', + 'oks_sigma', + 'line_thickness', + + 'low_overlap_threshold', + + 'oriented_lines', + 'line_orientation_threshold', + + 'compare_groups', + 'group_match_threshold', + + 'check_covered_annotations', + 'object_visibility_threshold', + + 'panoptic_comparison', + + 'compare_attributes', + ) + read_only_fields = ('task', ) + extra_kwargs = { + k: {'required': False} + for k in fields + } + + def validate(self, attrs): + for k, v in attrs.items(): + if k.endswith('_threshold') or k in ['oks_sigma', 'line_thickness']: + if not 0 <= v <= 1: + raise serializers.ValidationError(f"{k} must be in the range [0; 1]") + + return super().validate(attrs) diff --git a/cvat/apps/quality_control/signals.py b/cvat/apps/quality_control/signals.py new file mode 100644 index 000000000000..912a9fa15ddf --- /dev/null +++ b/cvat/apps/quality_control/signals.py @@ -0,0 +1,46 @@ +# Copyright (C) 2023 CVAT.ai Corporation +# +# SPDX-License-Identifier: MIT + +from django.db.models.signals import post_save +from django.dispatch import receiver + +from cvat.apps.engine.models import Annotation, Job, Project, Task + +from cvat.apps.quality_control import quality_reports as qc +from cvat.apps.quality_control.models import QualitySettings + + +@receiver(post_save, sender=Job, + dispatch_uid=__name__ + ".save_job-update_quality_metrics") +@receiver(post_save, sender=Task, + dispatch_uid=__name__ + ".save_task-update_quality_metrics") +@receiver(post_save, sender=Project, + dispatch_uid=__name__ + ".save_project-update_quality_metrics") +@receiver(post_save, sender=Annotation, + dispatch_uid=__name__ + ".save_annotation-update_quality_metrics") +def __save_job__update_quality_metrics(instance, created, **kwargs): + tasks = [] + + if isinstance(instance, Project): + tasks += list(instance.tasks.all()) + elif isinstance(instance, Task): + tasks.append(instance) + elif isinstance(instance, Job): + tasks.append(instance.segment.task) + elif isinstance(instance, Annotation): + tasks.append(instance.job.segment.task) + else: + assert False + + for task in tasks: + qc.ReportUpdateManager().schedule_quality_check_job(task) + + +@receiver(post_save, sender=Task, + dispatch_uid=__name__ + ".save_task-initialize_quality_settings") +def __save_task__initialize_quality_settings(instance, created, **kwargs): + # Initializes default quality settings for the task + # this is done here to make the components decoupled + if created: + QualitySettings.objects.get_or_create(task=instance) diff --git a/cvat/apps/quality_control/urls.py b/cvat/apps/quality_control/urls.py new file mode 100644 index 000000000000..67bc555166fc --- /dev/null +++ b/cvat/apps/quality_control/urls.py @@ -0,0 +1,20 @@ +# Copyright (C) 2023 CVAT.ai Corporation +# +# SPDX-License-Identifier: MIT + +from django.urls import path, include + +from rest_framework import routers + +from cvat.apps.quality_control import views + + +router = routers.DefaultRouter(trailing_slash=False) +router.register('reports', views.QualityReportViewSet, basename='quality_reports') +router.register('conflicts', views.ConflictsViewSet, basename='annotation_conflicts') +router.register('settings', views.QualitySettingsViewSet, basename='quality_settings') + +urlpatterns = [ + # entry point for API + path('quality/', include(router.urls)), +] diff --git a/cvat/apps/quality_control/views.py b/cvat/apps/quality_control/views.py new file mode 100644 index 000000000000..4ca05a2f9604 --- /dev/null +++ b/cvat/apps/quality_control/views.py @@ -0,0 +1,200 @@ +# Copyright (C) 2023 CVAT.ai Corporation +# +# SPDX-License-Identifier: MIT + +from django.http import HttpResponse +from django.db.models import Q + +from drf_spectacular.types import OpenApiTypes +from drf_spectacular.utils import OpenApiParameter, extend_schema_view, extend_schema + +from rest_framework import mixins, viewsets +from rest_framework.decorators import action +from rest_framework.exceptions import ValidationError + +from cvat.apps.engine.models import Task +from cvat.apps.engine.mixins import PartialUpdateModelMixin +from cvat.apps.engine.utils import get_server_url + +from cvat.apps.quality_control import quality_reports as qc +from cvat.apps.quality_control.models import ( + AnnotationConflict, QualityReportTarget, QualitySettings, QualityReport +) +from cvat.apps.quality_control.serializers import ( + AnnotationConflictSerializer, QualitySettingsSerializer, QualityReportSerializer +) + +from cvat.apps.iam.permissions import AnnotationConflictPermission, QualityReportPermission + +from cvat.apps.profiler import silk_profile + + +@extend_schema(tags=['conflicts']) +@extend_schema_view( + list=extend_schema( + summary='Method returns a paginated list of annotation conflicts', + parameters=[ + # These filters are implemented differently from others + OpenApiParameter('task_id', type=OpenApiTypes.INT, + description='A simple equality filter for task id'), + ], + responses={ + '200': AnnotationConflictSerializer(many=True), + }), +) +class ConflictsViewSet(viewsets.GenericViewSet, mixins.ListModelMixin): + queryset = AnnotationConflict.objects.prefetch_related('report', 'annotation_ids').all() + + # NOTE: This filter works incorrectly for this view + # it requires task__organization OR project__organization check. + # Thus, we rely on permission-based filtering + iam_organization_field = None + + search_fields = [] + filter_fields = list(search_fields) + ['id', 'report_id', 'frame', 'type', 'job_id'] + simple_filters = set(filter_fields) - {'id'} + lookup_fields = { + 'report_id': 'report__id', + 'job_id': 'report__job__id', + } + ordering_fields = list(filter_fields) + ordering = 'id' + serializer_class = AnnotationConflictSerializer + + def get_queryset(self): + queryset = super().get_queryset() + + if self.action == 'list': + if task_id := self.request.GET.get('task_id', None): + # NOTE: This filter is too complex to be implemented by other means + task = Task.objects.get(id=task_id) + self.check_object_permissions(self.request, task) + queryset = queryset.filter( + Q(report__job__segment__task__id=task_id) | Q(report__task__id=task_id) + ) + else: + # In other cases permissions are checked already + perm = AnnotationConflictPermission.create_scope_list(self.request) + queryset = perm.filter(queryset) + + return queryset + + +@extend_schema(tags=['reports']) +@extend_schema_view( + retrieve=extend_schema( + summary='Method returns details of a quality report', + responses={ + '200': QualityReportSerializer, + }), + list=extend_schema( + summary='Method returns a paginated list of quality reports', + parameters=[ + # These filters are implemented differently from others + OpenApiParameter('task_id', type=OpenApiTypes.INT, + description='A simple equality filter for task id'), + OpenApiParameter('target', type=OpenApiTypes.STR, + description='A simple equality filter for target'), + ], + responses={ + '200': QualityReportSerializer(many=True), + }), +) +class QualityReportViewSet(viewsets.GenericViewSet, + mixins.ListModelMixin, mixins.RetrieveModelMixin +): + queryset = QualityReport.objects.prefetch_related( + 'job', + 'job__segment', + 'job__segment__task', + 'task', + 'task__project', + ).all() + + # NOTE: This filter works incorrectly for this view + # it requires task__organization OR project__organization check. + # Thus, we rely on permission-based filtering + iam_organization_field = None + + search_fields = [] + filter_fields = list(search_fields) + [ + 'id', 'job_id', 'created_date', + 'gt_last_updated', 'target_last_updated', 'parent_id' + ] + simple_filters = list(set(filter_fields) - { + 'id', 'created_date', 'gt_last_updated', 'target_last_updated' + }) + ordering_fields = list(filter_fields) + ordering = 'id' + + def get_serializer_class(self): + # a separate method is required for drf-spectacular to work + return QualityReportSerializer + + def get_queryset(self): + queryset = super().get_queryset() + + if self.action == 'list': + if task_id := self.request.GET.get('task_id', None): + # NOTE: This filter is too complex to be implemented by other means + task = Task.objects.get(id=task_id) + self.check_object_permissions(self.request, task) + queryset = queryset.filter(Q(job__segment__task__id=task_id) | Q(task__id=task_id)) + else: + # In other cases permissions are checked already + perm = QualityReportPermission.create_scope_list(self.request) + queryset = perm.filter(queryset) + + if target := self.request.GET.get('target', None): + if target == QualityReportTarget.JOB: + queryset = queryset.filter(job__isnull=False) + elif target == QualityReportTarget.TASK: + queryset = queryset.filter(task__isnull=False) + else: + raise ValidationError( + "Unexpected 'target' filter value '{}'. Valid values are: {}".format( + target, + ', '.join(m[0] for m in QualityReportTarget.choices()) + ) + ) + + return queryset + + @action(detail=True, methods=['GET'], url_path='data', serializer_class=None) + def data(self, request, pk): + report = self.get_object() # check permissions + json_report = qc.prepare_report_for_downloading(report, host=get_server_url(request)) + return HttpResponse(json_report.encode()) + + # TODO: remove + @extend_schema(parameters=[ + OpenApiParameter('task_id', type=OpenApiTypes.INT) + ]) + @action(detail=False, methods=['GET'], url_path='debug', serializer_class=None) + @silk_profile() + def debug(self, request): + qc.ReportUpdateManager._update_task_quality_metrics(task_id=request.GET.get('task_id')) + return HttpResponse({}) + + +@extend_schema(tags=['settings']) +@extend_schema_view( + retrieve=extend_schema( + summary='Method returns details of a quality settings', + responses={ + '200': QualitySettingsSerializer, + }), +) +class QualitySettingsViewSet(viewsets.GenericViewSet, + mixins.RetrieveModelMixin, PartialUpdateModelMixin +): + queryset = QualitySettings.objects.select_related('task').all() + + iam_organization_field = 'task__organization' + + search_fields = [] + filter_fields = [] + ordering_fields = ['id'] + ordering = 'id' + + serializer_class = QualitySettingsSerializer diff --git a/cvat/schema.yml b/cvat/schema.yml index 30bb4a58fe44..f9eede1c71c5 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -1114,106 +1114,6 @@ paths: responses: '204': description: The comment has been deleted - /api/conflicts: - get: - operationId: conflicts_list - summary: Method returns a paginated list of annotation conflicts - parameters: - - in: header - name: X-Organization - schema: - type: string - - name: filter - required: false - in: query - description: 'A filter term. Available filter_fields: [''id'', ''report_id'', - ''frame'', ''type'', ''job_id'']' - schema: - type: string - - name: frame - in: query - description: A simple equality filter for the frame field - schema: - type: integer - - name: job_id - in: query - description: A simple equality filter for the job_id field - schema: - type: integer - - in: query - name: org - schema: - type: string - description: Organization unique slug - - in: query - name: org_id - schema: - type: integer - description: Organization identifier - - name: page - required: false - in: query - description: A page number within the paginated result set. - schema: - type: integer - - name: page_size - required: false - in: query - description: Number of results to return per page. - schema: - type: integer - - name: report_id - in: query - description: A simple equality filter for the report_id field - schema: - type: integer - - name: search - required: false - in: query - description: 'A search term. Available search_fields: []' - schema: - type: string - - name: sort - required: false - in: query - description: 'Which field to use when ordering the results. Available ordering_fields: - [''id'', ''report_id'', ''frame'', ''type'', ''job_id'']' - schema: - type: string - - in: query - name: task_id - schema: - type: integer - description: A simple equality filter for task id - - name: type - in: query - description: A simple equality filter for the type field - schema: - type: string - enum: - - missing_annotation - - extra_annotation - - mismatching_label - - low_overlap - - mismatching_direction - - mismatching_attributes - - mismatching_groups - - covered_annotation - tags: - - conflicts - security: - - sessionAuth: [] - csrfAuth: [] - tokenAuth: [] - - signatureAuth: [] - - basicAuth: [] - responses: - '200': - content: - application/vnd.cvat+json: - schema: - $ref: '#/components/schemas/PaginatedAnnotationConflictList' - description: '' /api/events: get: operationId: events_list @@ -1936,7 +1836,7 @@ paths: schema: type: string enum: - - normal + - annotation - ground_truth tags: - jobs @@ -4261,10 +4161,110 @@ paths: description: The project has been imported '202': description: Importing a backup file has been started - /api/quality_reports: + /api/quality/conflicts: get: - operationId: quality_reports_list - summary: Method returns a paginated list of quality_reports + operationId: quality_list_conflicts + summary: Method returns a paginated list of annotation conflicts + parameters: + - in: header + name: X-Organization + schema: + type: string + - name: filter + required: false + in: query + description: 'A filter term. Available filter_fields: [''id'', ''report_id'', + ''frame'', ''type'', ''job_id'']' + schema: + type: string + - name: frame + in: query + description: A simple equality filter for the frame field + schema: + type: integer + - name: job_id + in: query + description: A simple equality filter for the job_id field + schema: + type: integer + - in: query + name: org + schema: + type: string + description: Organization unique slug + - in: query + name: org_id + schema: + type: integer + description: Organization identifier + - name: page + required: false + in: query + description: A page number within the paginated result set. + schema: + type: integer + - name: page_size + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: report_id + in: query + description: A simple equality filter for the report_id field + schema: + type: integer + - name: search + required: false + in: query + description: 'A search term. Available search_fields: []' + schema: + type: string + - name: sort + required: false + in: query + description: 'Which field to use when ordering the results. Available ordering_fields: + [''id'', ''report_id'', ''frame'', ''type'', ''job_id'']' + schema: + type: string + - in: query + name: task_id + schema: + type: integer + description: A simple equality filter for task id + - name: type + in: query + description: A simple equality filter for the type field + schema: + type: string + enum: + - missing_annotation + - extra_annotation + - mismatching_label + - low_overlap + - mismatching_direction + - mismatching_attributes + - mismatching_groups + - covered_annotation + tags: + - conflicts + security: + - sessionAuth: [] + csrfAuth: [] + tokenAuth: [] + - signatureAuth: [] + - basicAuth: [] + responses: + '200': + content: + application/vnd.cvat+json: + schema: + $ref: '#/components/schemas/PaginatedAnnotationConflictList' + description: '' + /api/quality/reports: + get: + operationId: quality_list_reports + summary: Method returns a paginated list of quality reports parameters: - in: header name: X-Organization @@ -4334,7 +4334,7 @@ paths: type: integer description: A simple equality filter for task id tags: - - quality_reports + - reports security: - sessionAuth: [] csrfAuth: [] @@ -4348,9 +4348,9 @@ paths: schema: $ref: '#/components/schemas/PaginatedQualityReportList' description: '' - /api/quality_reports/{id}: + /api/quality/reports/{id}: get: - operationId: quality_reports_retrieve + operationId: quality_retrieve_reports summary: Method returns details of a quality report parameters: - in: header @@ -4374,7 +4374,7 @@ paths: type: integer description: Organization identifier tags: - - quality_reports + - reports security: - sessionAuth: [] csrfAuth: [] @@ -4388,9 +4388,9 @@ paths: schema: $ref: '#/components/schemas/QualityReport' description: '' - /api/quality_reports/{id}/data: + /api/quality/reports/{id}/data: get: - operationId: quality_reports_retrieve_data + operationId: quality_retrieve_reports_data parameters: - in: header name: X-Organization @@ -4413,7 +4413,7 @@ paths: type: integer description: Organization identifier tags: - - quality_reports + - reports security: - sessionAuth: [] csrfAuth: [] @@ -4427,9 +4427,9 @@ paths: schema: $ref: '#/components/schemas/QualityReport' description: '' - /api/quality_reports/debug: + /api/quality/reports/debug: get: - operationId: quality_reports_retrieve_debug + operationId: quality_retrieve_reports_debug parameters: - in: header name: X-Organization @@ -4450,7 +4450,7 @@ paths: schema: type: integer tags: - - quality_reports + - reports security: - sessionAuth: [] csrfAuth: [] @@ -4464,9 +4464,9 @@ paths: schema: $ref: '#/components/schemas/QualityReport' description: '' - /api/quality_settings/{id}: + /api/quality/settings/{id}: get: - operationId: quality_settings_retrieve + operationId: quality_retrieve_settings summary: Method returns details of a quality settings parameters: - in: header @@ -4490,7 +4490,7 @@ paths: type: integer description: Organization identifier tags: - - quality_settings + - settings security: - sessionAuth: [] csrfAuth: [] @@ -4505,7 +4505,7 @@ paths: $ref: '#/components/schemas/QualitySettings' description: '' patch: - operationId: quality_settings_partial_update + operationId: quality_partial_update_settings parameters: - in: header name: X-Organization @@ -4528,7 +4528,7 @@ paths: type: integer description: Organization identifier tags: - - quality_settings + - settings requestBody: content: application/json: @@ -7787,7 +7787,7 @@ components: type: string JobType: enum: - - normal + - annotation - ground_truth type: string JobWriteRequest: diff --git a/cvat/settings/base.py b/cvat/settings/base.py index 824cd87c47e9..0ebd0da97e00 100644 --- a/cvat/settings/base.py +++ b/cvat/settings/base.py @@ -140,6 +140,7 @@ def add_ssh_keys(): 'cvat.apps.webhooks', 'cvat.apps.health', 'cvat.apps.events', + 'cvat.apps.quality_control', ] SITE_ID = 1 @@ -622,7 +623,7 @@ class CVAT_QUEUES(Enum): 'JobStatus': 'cvat.apps.engine.models.StatusChoice', 'JobStage': 'cvat.apps.engine.models.StageChoice', 'JobType': 'cvat.apps.engine.models.JobType', - 'QualityReportTarget': 'cvat.apps.engine.models.QualityReportTarget', + 'QualityReportTarget': 'cvat.apps.quality_control.models.QualityReportTarget', 'StorageType': 'cvat.apps.engine.models.StorageChoice', 'SortingMethod': 'cvat.apps.engine.models.SortingMethod', 'WebhookType': 'cvat.apps.webhooks.models.WebhookTypeChoice', diff --git a/cvat/settings/development.py b/cvat/settings/development.py index 350c3628d33b..43e6b1a14818 100644 --- a/cvat/settings/development.py +++ b/cvat/settings/development.py @@ -61,3 +61,5 @@ # Database # https://docs.djangoproject.com/en/3.2/ref/settings/#databases DATABASES['default']['HOST'] = os.getenv('CVAT_POSTGRES_HOST', 'localhost') + +QUALITY_CHECK_JOB_DELAY = 5 diff --git a/cvat/urls.py b/cvat/urls.py index 214b14bae63a..df95a399c3f8 100644 --- a/cvat/urls.py +++ b/cvat/urls.py @@ -46,6 +46,9 @@ if apps.is_installed('cvat.apps.webhooks'): urlpatterns.append(path('api/', include('cvat.apps.webhooks.urls'))) +if apps.is_installed('cvat.apps.quality_control'): + urlpatterns.append(path('api/', include('cvat.apps.quality_control.urls'))) + if apps.is_installed('silk'): urlpatterns.append(path('profiler/', include('silk.urls'))) From 6f932001c9f8480d358020d0c623a2d7843369f8 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 16 May 2023 18:54:21 +0300 Subject: [PATCH 113/257] Add an option to set quality check delay via env vars --- cvat/apps/quality_control/apps.py | 3 +++ cvat/apps/quality_control/default_settings.py | 8 +++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/cvat/apps/quality_control/apps.py b/cvat/apps/quality_control/apps.py index e558b8037255..e348d15a1572 100644 --- a/cvat/apps/quality_control/apps.py +++ b/cvat/apps/quality_control/apps.py @@ -15,3 +15,6 @@ def ready(self) -> None: for key in dir(default_settings): if key.isupper() and not hasattr(settings, key): setattr(settings, key, getattr(default_settings, key)) + + # Required to define signals in the application + from . import signals # pylint: disable=unused-import diff --git a/cvat/apps/quality_control/default_settings.py b/cvat/apps/quality_control/default_settings.py index a3633ce58c0c..0765a24cad27 100644 --- a/cvat/apps/quality_control/default_settings.py +++ b/cvat/apps/quality_control/default_settings.py @@ -1,2 +1,8 @@ -QUALITY_CHECK_JOB_DELAY = 60 * 60 +# Copyright (C) 2023 Intel Corporation +# +# SPDX-License-Identifier: MIT + +import os + +QUALITY_CHECK_JOB_DELAY = int(os.getenv('CVAT_QUALITY_CHECK_JOB_DELAY', 15 * 60)) "The delay before the next quality check job is queued, in seconds" From 2f4a1381d25482ceaada27dbe941dc753f54c924 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 16 May 2023 19:07:54 +0300 Subject: [PATCH 114/257] Refactor rqscheduler script and fix pylint --- cvat/apps/dataset_manager/bindings.py | 8 +++- rqscheduler.py | 67 +++------------------------ 2 files changed, 13 insertions(+), 62 deletions(-) diff --git a/cvat/apps/dataset_manager/bindings.py b/cvat/apps/dataset_manager/bindings.py index 1d5f3e3ca9f3..19c35d1dc1e3 100644 --- a/cvat/apps/dataset_manager/bindings.py +++ b/cvat/apps/dataset_manager/bindings.py @@ -1354,7 +1354,9 @@ def __init__( dimension: DimensionType = DimensionType.DIM_2D, **kwargs ): - super().__init__(media_type=dm.Image if dimension == DimensionType.DIM_2D else PointCloud) + dm.SourceExtractor.__init__( + self, media_type=dm.Image if dimension == DimensionType.DIM_2D else PointCloud + ) CVATDataExtractorMixin.__init__(self, **kwargs) instance_meta = instance_data.meta[instance_data.META_FIELD] @@ -1462,7 +1464,9 @@ def __init__( dimension: DimensionType = DimensionType.DIM_2D, **kwargs ): - super().__init__(media_type=dm.Image if dimension == DimensionType.DIM_2D else PointCloud) + dm.Extractor.__init__( + self, media_type=dm.Image if dimension == DimensionType.DIM_2D else PointCloud + ) CVATDataExtractorMixin.__init__(self, **kwargs) self._categories = self._load_categories(project_data.meta[project_data.META_FIELD]['labels']) diff --git a/rqscheduler.py b/rqscheduler.py index ef0767b998c1..91cd49cc515c 100644 --- a/rqscheduler.py +++ b/rqscheduler.py @@ -1,66 +1,13 @@ #!/usr/bin/env python -import argparse -import sys -import os +# This script adds access to the Django env and settings in the default rqscheduler +# implementation. This is required for correct work with CVAT queue settings and +# their access options such as login and password. -from cvat.wsgi import application +# Required to initialize Django settings correctly +from cvat.wsgi import application # pylint: disable=unused-import -from redis import Redis -from rq_scheduler.scheduler import Scheduler - -from rq_scheduler.utils import setup_loghandlers - - -def main(): - parser = argparse.ArgumentParser(description='Runs RQ scheduler') - parser.add_argument('-b', '--burst', action='store_true', default=False, help='Run in burst mode (quit after all work is done)') - parser.add_argument('-H', '--host', default=os.environ.get('RQ_REDIS_HOST', 'localhost'), help="Redis host") - parser.add_argument('-p', '--port', default=int(os.environ.get('RQ_REDIS_PORT', 6379)), type=int, help="Redis port number") - parser.add_argument('-d', '--db', default=int(os.environ.get('RQ_REDIS_DB', 0)), type=int, help="Redis database") - parser.add_argument('-P', '--password', default=os.environ.get('RQ_REDIS_PASSWORD'), help="Redis password") - parser.add_argument('--verbose', '-v', action='store_true', default=False, help='Show more output') - parser.add_argument('--quiet', action='store_true', default=False, help='Show less output') - parser.add_argument('--url', '-u', default=os.environ.get('RQ_REDIS_URL') - , help='URL describing Redis connection details. \ - Overrides other connection arguments if supplied.') - parser.add_argument('-i', '--interval', default=60.0, type=float - , help="How often the scheduler checks for new jobs to add to the \ - queue (in seconds, can be floating-point for more precision).") - parser.add_argument('--path', default='.', help='Specify the import path.') - parser.add_argument('--pid', help='A filename to use for the PID file.', metavar='FILE') - parser.add_argument('-j', '--job-class', help='Custom RQ Job class') - parser.add_argument('-q', '--queue-class', help='Custom RQ Queue class') - - args = parser.parse_args() - - if args.path: - sys.path = args.path.split(':') + sys.path - - if args.pid: - pid = str(os.getpid()) - filename = args.pid - with open(filename, 'w') as f: - f.write(pid) - - if args.url is not None: - connection = Redis.from_url(args.url) - else: - connection = Redis(args.host, args.port, args.db, args.password) - - if args.verbose: - level = 'DEBUG' - elif args.quiet: - level = 'WARNING' - else: - level = 'INFO' - setup_loghandlers(level) - - scheduler = Scheduler(connection=connection, - interval=args.interval, - job_class=args.job_class, - queue_class=args.queue_class) - scheduler.run(burst=args.burst) +from rq_scheduler.scripts import rqscheduler if __name__ == '__main__': - main() + rqscheduler.main() From e6a4c55226720133f69a4ddf88d011f400771348 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 17 May 2023 11:39:08 +0300 Subject: [PATCH 115/257] Disable quality reports for 3d tasks --- cvat/apps/quality_control/quality_reports.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cvat/apps/quality_control/quality_reports.py b/cvat/apps/quality_control/quality_reports.py index a2584583cd39..8c52d7af78b0 100644 --- a/cvat/apps/quality_control/quality_reports.py +++ b/cvat/apps/quality_control/quality_reports.py @@ -28,7 +28,7 @@ from cvat.apps.dataset_manager.util import bulk_create from cvat.apps.dataset_manager.formats.registry import dm_env -from cvat.apps.engine.models import Job, JobType, ShapeType, Task +from cvat.apps.engine.models import DimensionType, Job, JobType, ShapeType, Task from cvat.apps.quality_control.models import ( AnnotationConflictImportance, AnnotationConflictType, AnnotationType, @@ -2085,6 +2085,10 @@ def schedule_quality_check_job(self, task: Task): # - if multiple simultaneous writes can happen, the objects written must be the same # - once a job is created, it can only be updated by the scheduler and the handling worker + if task.dimension != DimensionType.DIM_2D: + # Not supported + return + if not task.gt_job: # Nothing to compute return From 7e0dca786adc45b002d71b30083b84b0f5cf6a6b Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 17 May 2023 20:03:54 +0300 Subject: [PATCH 116/257] Add conflict distribution by type info in the report and general info --- cvat/apps/quality_control/quality_reports.py | 209 ++++++++++--------- cvat/apps/quality_control/serializers.py | 1 + cvat/schema.yml | 5 + 3 files changed, 121 insertions(+), 94 deletions(-) diff --git a/cvat/apps/quality_control/quality_reports.py b/cvat/apps/quality_control/quality_reports.py index 8c52d7af78b0..1694c41f0bda 100644 --- a/cvat/apps/quality_control/quality_reports.py +++ b/cvat/apps/quality_control/quality_reports.py @@ -4,23 +4,24 @@ from __future__ import annotations +from collections import Counter from copy import deepcopy from datetime import timedelta from functools import cached_property, partial +from typing import Any, Callable, Dict, Hashable, List, Optional, Sequence, Tuple, Union, cast import itertools import math -from typing import Any, Callable, Dict, Hashable, List, Optional, Sequence, Tuple, Union, cast -from attrs import asdict, define, fields_dict, has as is_attrs_type +from attrs import asdict, define, fields_dict import datumaro as dm import datumaro.util.mask_tools from django.db import transaction from django.conf import settings from django.utils import timezone -from scipy.optimize import linear_sum_assignment import django_rq import numpy as np +from scipy.optimize import linear_sum_assignment from cvat.apps.dataset_manager.task import JobAnnotation from cvat.apps.dataset_manager.bindings import (CommonData, CvatToDmAnnotationConverter, @@ -41,18 +42,33 @@ class _Serializable: - def _value_serializer(self, inst, attr, v): + def _value_serializer(self, v): if isinstance(v, _Serializable): return v.to_dict() - elif is_attrs_type(type(v)): - return asdict(v, value_serializer=self._value_serializer) - elif self is not inst and isinstance(inst, _Serializable): - return inst._value_serializer(inst, attr, v) + elif isinstance(v, (list, tuple, set, frozenset)): + return [ self._value_serializer(vv) for vv in v ] + elif isinstance(v, dict): + return { + self._value_serializer(vk): self._value_serializer(vv) + for vk, vv in v.items() + } else: return v - def to_dict(self, *, value_serializer = None) -> dict: - return asdict(self, value_serializer=value_serializer or self._value_serializer) + def to_dict(self) -> dict: + return self._value_serializer(self._fields_dict()) + + def _fields_dict(self, *, include_properties: Optional[List[str]] = None) -> dict: + d = asdict(self, recurse=False) + + for field_name in include_properties or []: + d[field_name] = getattr(self, field_name) + + return d + + @classmethod + def from_dict(cls, d: dict): + raise NotImplementedError("Must be implemented in the subclass") @define(kw_only=True) @@ -61,14 +77,14 @@ class AnnotationId(_Serializable): job_id: int type: AnnotationType - def _value_serializer(self, inst, attr, v): + def _value_serializer(self, v): if isinstance(v, AnnotationType): return str(v) else: - return super()._value_serializer(inst, attr, v) + return super()._value_serializer(v) @classmethod - def from_dict(cls, d): + def from_dict(cls, d: dict): return cls( obj_id=d['obj_id'], job_id=d['job_id'], @@ -102,21 +118,17 @@ def importance(self) -> AnnotationConflictImportance: return importance - def _value_serializer(self, inst, attr, v): - if isinstance(v, AnnotationConflictType): + def _value_serializer(self, v): + if isinstance(v, (AnnotationConflictType, AnnotationConflictImportance)): return str(v) else: - return super()._value_serializer(inst, attr, v) + return super()._value_serializer(v) - def to_dict(self, *args, **kwargs) -> dict: - result = super().to_dict(*args, **kwargs) - result.update(**{ - k: getattr(self, k) for k in ['importance'] - }) - return result + def _fields_dict(self, *, include_properties: Optional[List[str]] = None) -> dict: + return super()._fields_dict(include_properties=include_properties or ['importance']) @classmethod - def from_dict(cls, d): + def from_dict(cls, d: dict): return cls( frame_id=d['frame_id'], type=AnnotationConflictType(d['type']), @@ -177,14 +189,14 @@ class ComparisonParameters(_Serializable): "Use only the visible part of the masks and polygons in comparisons" - def _value_serializer(self, inst, attr, v): + def _value_serializer(self, v): if isinstance(v, dm.AnnotationType): return str(v.name) else: - return super()._value_serializer(inst, attr, v) + return super()._value_serializer(v) @classmethod - def from_dict(cls, d): + def from_dict(cls, d: dict): fields = fields_dict(cls) return cls(**{ field_name: d[field_name] for field_name in fields if field_name in d }) @@ -201,21 +213,17 @@ class ConfusionMatrix(_Serializable): def axes(self): return dict(cols='gt', rows='ds') - def _value_serializer(self, inst, attr, v): + def _value_serializer(self, v): if isinstance(v, np.ndarray): return v.tolist() else: - return super()._value_serializer(inst, attr, v) + return super()._value_serializer(v) - def to_dict(self, *args, **kwargs) -> dict: - result = super().to_dict(*args, **kwargs) - result.update(**{ - k: getattr(self, k) for k in ['axes'] - }) - return result + def _fields_dict(self, *, include_properties: Optional[List[str]] = None) -> dict: + return super()._fields_dict(include_properties=include_properties or ['axes']) @classmethod - def from_dict(cls, d): + def from_dict(cls, d: dict): return cls( labels=d['labels'], rows=np.asarray(d['rows']), @@ -253,15 +261,13 @@ def accumulate(self, other: ComparisonReportAnnotationsSummary): ]: setattr(self, field, getattr(self, field) + getattr(other, field)) - def to_dict(self, *args, **kwargs) -> dict: - result = super().to_dict() - result.update(**{ - k: getattr(self, k) for k in ['accuracy', 'precision', 'recall'] - }) - return result + def _fields_dict(self, *, include_properties: Optional[List[str]] = None) -> dict: + return super()._fields_dict( + include_properties=include_properties or ['accuracy', 'precision', 'recall'] + ) @classmethod - def from_dict(cls, d): + def from_dict(cls, d: dict): return cls( valid_count=d['valid_count'], missing_count=d['missing_count'], @@ -293,15 +299,11 @@ def accumulate(self, other: ComparisonReportAnnotationShapeSummary): ]: setattr(self, field, getattr(self, field) + getattr(other, field)) - def to_dict(self, *args, **kwargs) -> dict: - result = super().to_dict(*args, **kwargs) - result.update(**{ - k: getattr(self, k) for k in ['accuracy'] - }) - return result + def _fields_dict(self, *, include_properties: Optional[List[str]] = None) -> dict: + return super()._fields_dict(include_properties=include_properties or ['accuracy']) @classmethod - def from_dict(cls, d): + def from_dict(cls, d: dict): return cls( valid_count=d['valid_count'], missing_count=d['missing_count'], @@ -327,15 +329,11 @@ def accumulate(self, other: ComparisonReportAnnotationLabelSummary): for field in ['valid_count', 'total_count', 'invalid_count']: setattr(self, field, getattr(self, field) + getattr(other, field)) - def to_dict(self, *args, **kwargs) -> dict: - result = super().to_dict(*args, **kwargs) - result.update(**{ - k: getattr(self, k) for k in ['accuracy'] - }) - return result + def _fields_dict(self, *, include_properties: Optional[List[str]] = None) -> dict: + return super()._fields_dict(include_properties=include_properties or ['accuracy']) @classmethod - def from_dict(cls, d): + def from_dict(cls, d: dict): return cls( valid_count=d['valid_count'], invalid_count=d['invalid_count'], @@ -352,7 +350,7 @@ def accumulate(self, other: ComparisonReportAnnotationComponentsSummary): self.label.accumulate(other.label) @classmethod - def from_dict(cls, d): + def from_dict(cls, d: dict): return cls( shape=ComparisonReportAnnotationShapeSummary.from_dict(d['shape']), label=ComparisonReportAnnotationLabelSummary.from_dict(d['label']), @@ -371,6 +369,7 @@ def mean_conflict_count(self) -> float: conflict_count: int warning_count: int error_count: int + conflicts_by_type: Dict[AnnotationConflictType, int] annotations: ComparisonReportAnnotationsSummary annotation_components: ComparisonReportAnnotationComponentsSummary @@ -379,40 +378,36 @@ def mean_conflict_count(self) -> float: def frame_count(self) -> int: return len(self.frames) - def to_dict(self, *args, **kwargs) -> dict: - result = super().to_dict(*args, **kwargs) - result.update(**{ - k: getattr(self, k) for k in ['frame_count', 'mean_conflict_count'] - }) - return result + def _value_serializer(self, v): + if isinstance(v, AnnotationConflictType): + return str(v) + else: + return super()._value_serializer(v) + + def _fields_dict(self, *, include_properties: Optional[List[str]] = None) -> dict: + return super()._fields_dict(include_properties=include_properties or [ + 'frame_count', 'mean_conflict_count', + 'warning_count', 'error_count', 'conflicts_by_type' + ]) @classmethod - def from_dict(cls, d): + def from_dict(cls, d: dict): return cls( frame_share_percent=d['frame_share_percent'], frames=list(d['frames']), conflict_count=d['conflict_count'], warning_count=d.get('warning_count', 0), error_count=d.get('error_count', 0), + conflicts_by_type={ + AnnotationConflictType(k): v + for k, v in d.get('conflicts_by_type', {}).items() + }, annotations=ComparisonReportAnnotationsSummary.from_dict(d['annotations']), annotation_components=ComparisonReportAnnotationComponentsSummary.from_dict( d['annotation_components']), ) -@define(kw_only=True) -class ComparisonReportDatasetSummary(_Serializable): - frame_count: int - shape_count: int - - @classmethod - def from_dict(cls, d): - return cls( - frame_count=d['frame_count'], - shape_count=d['shape_count'], - ) - - @define(kw_only=True, init=False) class ComparisonReportFrameSummary(_Serializable): conflicts: List[AnnotationConflict] @@ -435,29 +430,45 @@ def error_count(self) -> int: if c.importance == AnnotationConflictImportance.ERROR ]) + @cached_property + def conflicts_by_type(self) -> Dict[AnnotationConflictType, int]: + return Counter(c.type for c in self.conflicts) + annotations: ComparisonReportAnnotationsSummary annotation_components: ComparisonReportAnnotationComponentsSummary + _CACHED_FIELDS = ['conflict_count', 'warning_count', 'error_count', 'conflicts_by_type'] + + def _value_serializer(self, v): + if isinstance(v , AnnotationConflictType): + return str(v) + else: + return super()._value_serializer(v) + def __init__(self, *args, **kwargs): # these fields are optional, but can be computed on access - for field_name in ['conflict_count', 'warning_count', 'error_count']: + for field_name in self._CACHED_FIELDS: if field_name in kwargs: setattr(self, field_name, kwargs.pop(field_name)) self.__attrs_init__(*args, **kwargs) + def _fields_dict(self, *, include_properties: Optional[List[str]] = None) -> dict: + return super()._fields_dict(include_properties=include_properties or self._CACHED_FIELDS) + @classmethod - def from_dict(cls, d): + def from_dict(cls, d: dict): + optional_fields = set(cls._CACHED_FIELDS) - { + 'conflicts_by_type' # requires extra conversion + } return cls( + **{ field: d[field] for field in optional_fields if field in d }, **dict( - conflict_count=d['conflict_count'], - ) if 'conflict_count' in d else {}, - **dict( - warning_count=d['warning_count'], - ) if 'warning_count' in d else {}, - **dict( - error_count=d['error_count'], - ) if 'error_count' in d else {}, + conflicts_by_type={ + AnnotationConflictType(k): v + for k, v in d['conflicts_by_type'].items() + } + ) if 'conflicts_by_type' in d else {}, conflicts=[AnnotationConflict.from_dict(v) for v in d['conflicts']], annotations=ComparisonReportAnnotationsSummary.from_dict(d['annotations']), annotation_components=ComparisonReportAnnotationComponentsSummary.from_dict( @@ -486,8 +497,8 @@ def from_dict(cls, d: Dict[str, Any]) -> ComparisonReport: } ) - def to_json(self, *args, **kwargs) -> str: - d = self.to_dict(*args, **kwargs) + def to_json(self) -> str: + d = self.to_dict() # String keys are needed for json dumping d["frame_results"] = {str(k): v for k, v in d['frame_results'].items()} @@ -1355,7 +1366,7 @@ def match_skeletons(self, item_a, item_b): return returned_values @classmethod - def _make_memoizing_distance(cls, distance_function): + def _make_memoizing_distance(cls, distance_function: Callable[[Any, Any], float]): distances = {} notfound = object() @@ -1975,6 +1986,7 @@ def generate_report(self) -> ComparisonReport: error_count=len([ c for c in conflicts if c.importance == AnnotationConflictImportance.ERROR ]), + conflicts_by_type=Counter(c.type for c in conflicts), annotations=ComparisonReportAnnotationsSummary( valid_count=valid_annotations_count, @@ -2219,7 +2231,7 @@ def _compute_task_report( # Thus, a separate report could be computed for the task. Instead, here we only # compute the combined summary of the job reports. task_intersection_frames = set() - task_conflicts = [] + task_conflicts: List[AnnotationConflict] = [] task_annotations_summary = None task_ann_components_summary = None task_mean_shape_ious = [] @@ -2283,6 +2295,7 @@ def _compute_task_report( c for c in task_conflicts if c.importance == AnnotationConflictImportance.ERROR ]), + conflicts_by_type=Counter(c.type for c in task_conflicts), annotations=task_annotations_summary, annotation_components=task_ann_components_summary, @@ -2368,11 +2381,19 @@ def _get_task_quality_params(cls, task: Task) -> Optional[ComparisonParameters]: def prepare_report_for_downloading(db_report: models.QualityReport, *, host: str) -> str: # Decorate the report with conflicting annotation links like: # /tasks/62/jobs/82?frame=250&type=shape&serverID=33741 + # And other useful information + task_id = db_report.get_task().id + serialized_data = dict( + job_id=db_report.job.id if db_report.job is not None else None, + task_id=task_id, + parent_id=db_report.parent.id if db_report.parent is not None else None, + created_date=str(db_report.created_date), + target_last_updated=str(db_report.target_last_updated), + gt_last_updated=str(db_report.gt_last_updated), + ) comparison_report = ComparisonReport.from_json(db_report.get_json_report()) - - serialized_data = comparison_report.to_dict() - task_id = db_report.task.id + serialized_data.update(comparison_report.to_dict()) for frame_result in serialized_data["frame_results"].values(): for conflict in frame_result["conflicts"]: diff --git a/cvat/apps/quality_control/serializers.py b/cvat/apps/quality_control/serializers.py index 4c9d4eba87bd..262339ce4783 100644 --- a/cvat/apps/quality_control/serializers.py +++ b/cvat/apps/quality_control/serializers.py @@ -29,6 +29,7 @@ class QualityReportSummarySerializer(serializers.Serializer): conflict_count = serializers.IntegerField() warning_count = serializers.IntegerField() error_count = serializers.IntegerField() + conflicts_by_type = serializers.DictField(child=serializers.IntegerField()) # This set is enough for basic characteristics, such as # DS_unmatched, GT_unmatched, accuracy, precision and recall diff --git a/cvat/schema.yml b/cvat/schema.yml index f9eede1c71c5..72440e86b514 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -9183,6 +9183,10 @@ components: type: integer error_count: type: integer + conflicts_by_type: + type: object + additionalProperties: + type: integer valid_count: type: integer ds_count: @@ -9191,6 +9195,7 @@ components: type: integer required: - conflict_count + - conflicts_by_type - ds_count - error_count - frame_count From 66fb920cff6af85afd2f49db5baa212d67d827e8 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 17 May 2023 20:57:29 +0300 Subject: [PATCH 117/257] Fix operation naming in schema --- cvat/apps/quality_control/views.py | 10 +++++++--- cvat/schema.yml | 17 +++++++++-------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/cvat/apps/quality_control/views.py b/cvat/apps/quality_control/views.py index 4ca05a2f9604..94a781aa62f1 100644 --- a/cvat/apps/quality_control/views.py +++ b/cvat/apps/quality_control/views.py @@ -29,7 +29,7 @@ from cvat.apps.profiler import silk_profile -@extend_schema(tags=['conflicts']) +@extend_schema(tags=["quality"]) @extend_schema_view( list=extend_schema( summary='Method returns a paginated list of annotation conflicts', @@ -80,7 +80,7 @@ def get_queryset(self): return queryset -@extend_schema(tags=['reports']) +@extend_schema(tags=["quality"]) @extend_schema_view( retrieve=extend_schema( summary='Method returns details of a quality report', @@ -160,6 +160,10 @@ def get_queryset(self): return queryset + @extend_schema( + operation_id="quality_retrieve_report_data", + summary="Retrieve full contents of the report in JSON format", + ) @action(detail=True, methods=['GET'], url_path='data', serializer_class=None) def data(self, request, pk): report = self.get_object() # check permissions @@ -177,7 +181,7 @@ def debug(self, request): return HttpResponse({}) -@extend_schema(tags=['settings']) +@extend_schema(tags=["quality"]) @extend_schema_view( retrieve=extend_schema( summary='Method returns details of a quality settings', diff --git a/cvat/schema.yml b/cvat/schema.yml index 72440e86b514..562dc76d7e9f 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -4247,7 +4247,7 @@ paths: - mismatching_groups - covered_annotation tags: - - conflicts + - quality security: - sessionAuth: [] csrfAuth: [] @@ -4334,7 +4334,7 @@ paths: type: integer description: A simple equality filter for task id tags: - - reports + - quality security: - sessionAuth: [] csrfAuth: [] @@ -4374,7 +4374,7 @@ paths: type: integer description: Organization identifier tags: - - reports + - quality security: - sessionAuth: [] csrfAuth: [] @@ -4390,7 +4390,8 @@ paths: description: '' /api/quality/reports/{id}/data: get: - operationId: quality_retrieve_reports_data + operationId: quality_retrieve_report_data + summary: Retrieve full contents of the report in JSON format parameters: - in: header name: X-Organization @@ -4413,7 +4414,7 @@ paths: type: integer description: Organization identifier tags: - - reports + - quality security: - sessionAuth: [] csrfAuth: [] @@ -4450,7 +4451,7 @@ paths: schema: type: integer tags: - - reports + - quality security: - sessionAuth: [] csrfAuth: [] @@ -4490,7 +4491,7 @@ paths: type: integer description: Organization identifier tags: - - settings + - quality security: - sessionAuth: [] csrfAuth: [] @@ -4528,7 +4529,7 @@ paths: type: integer description: Organization identifier tags: - - settings + - quality requestBody: content: application/json: From ceefdf434bc1769940f8ab4a86c68b2f6f5ada25 Mon Sep 17 00:00:00 2001 From: klakhov Date: Thu, 18 May 2023 12:13:07 +0300 Subject: [PATCH 118/257] updated create job form --- .../components/create-job-page/job-form.tsx | 44 ++++++++++++------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/cvat-ui/src/components/create-job-page/job-form.tsx b/cvat-ui/src/components/create-job-page/job-form.tsx index 9ddae94d15d7..c433bbaaf29d 100644 --- a/cvat-ui/src/components/create-job-page/job-form.tsx +++ b/cvat-ui/src/components/create-job-page/job-form.tsx @@ -11,7 +11,7 @@ import Button from 'antd/lib/button'; import Select from 'antd/lib/select'; import notification from 'antd/lib/notification'; import InputNumber from 'antd/lib/input-number'; -import Text from 'antd/lib/typography/Text'; +import CVATTooltip from 'components/common/cvat-tooltip'; import { CombinedState } from 'reducers'; import { useDispatch, useSelector } from 'react-redux'; @@ -19,6 +19,8 @@ import { JobType } from 'cvat-core/src/enums'; import { Task } from 'cvat-core-wrapper'; import { createJobAsync } from 'actions/jobs-actions'; import { useHistory } from 'react-router'; +import Space from 'antd/lib/space'; +import { QuestionCircleOutlined } from '@ant-design/icons'; export enum FrameSelectionMethod { RANDOM = 'random_uniform', @@ -108,6 +110,7 @@ function JobForm(props: Props): JSX.Element { }); } }, [taskSize]); + const frameCountDescription = 'A representative set, 5-15% of randomly chosen frames is recommended'; return ( @@ -153,11 +156,20 @@ function JobForm(props: Props): JSX.Element { - - + + + Quantity % + + + + + )} rules={[{ required: true, message: 'Please, specify quantity' }]} > - + + Frame count + + + + + )} rules={[{ required: true, message: 'Please, specify frame count' }]} > - - - {`of ${taskSize} selected`} - - - - - - - + Date: Thu, 18 May 2023 15:04:35 +0300 Subject: [PATCH 119/257] added analytics title --- .../src/components/task-analytics-page/styles.scss | 9 +++++++++ .../task-analytics-page/task-analytics-page.tsx | 14 ++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/cvat-ui/src/components/task-analytics-page/styles.scss b/cvat-ui/src/components/task-analytics-page/styles.scss index 10e2cdba066e..21ae81ea81c6 100644 --- a/cvat-ui/src/components/task-analytics-page/styles.scss +++ b/cvat-ui/src/components/task-analytics-page/styles.scss @@ -46,3 +46,12 @@ height: 90%; width: 100%; } + +.cvat-task-analytics-title { + h4 { + display: inline; + margin-right: $grid-unit-size; + } + + margin-bottom: $grid-unit-size; +} diff --git a/cvat-ui/src/components/task-analytics-page/task-analytics-page.tsx b/cvat-ui/src/components/task-analytics-page/task-analytics-page.tsx index d66e9ad9ab9c..7cf19e7e7bee 100644 --- a/cvat-ui/src/components/task-analytics-page/task-analytics-page.tsx +++ b/cvat-ui/src/components/task-analytics-page/task-analytics-page.tsx @@ -9,6 +9,7 @@ import { Row, Col } from 'antd/lib/grid'; import Tabs from 'antd/lib/tabs'; import { useHistory, useParams } from 'react-router'; import Text from 'antd/lib/typography/Text'; +import Title from 'antd/lib/typography/Title'; import Spin from 'antd/lib/spin'; import Button from 'antd/lib/button'; import { Task } from 'reducers'; @@ -94,6 +95,19 @@ function TaskAnalyticsPage(): JSX.Element { + + + {taskInstance.name} + + + {`#${taskInstance.id}`} + + Date: Thu, 18 May 2023 16:23:04 +0300 Subject: [PATCH 120/257] updated mean accuracy card --- .../quality/analytics-card.tsx | 64 ++++++++++++++++ .../quality/mean-quality.tsx | 75 +++++++++++++------ .../quality/task-quality-component.tsx | 4 +- .../task-analytics-page/styles.scss | 41 +++++++++- 4 files changed, 160 insertions(+), 24 deletions(-) create mode 100644 cvat-ui/src/components/task-analytics-page/quality/analytics-card.tsx diff --git a/cvat-ui/src/components/task-analytics-page/quality/analytics-card.tsx b/cvat-ui/src/components/task-analytics-page/quality/analytics-card.tsx new file mode 100644 index 000000000000..693bd1c93032 --- /dev/null +++ b/cvat-ui/src/components/task-analytics-page/quality/analytics-card.tsx @@ -0,0 +1,64 @@ +// Copyright (C) 2023 CVAT.ai Corporation +// +// SPDX-License-Identifier: MIT + +import '../styles.scss'; + +import React from 'react'; +import Text from 'antd/lib/typography/Text'; +import { Col, Row } from 'antd/lib/grid'; +import Card from 'antd/lib/card'; +import CVATTooltip from 'components/common/cvat-tooltip'; +import { QuestionCircleOutlined } from '@ant-design/icons'; + +interface Props { + title: string; + size?: number; + className?: string; + value: string; + tooltip?: JSX.Element; + bottomElement?: JSX.Element; + rightElement?: JSX.Element; +} + +function AnalyticsCard(props: Props): JSX.Element { + const { + title, size, className, value, tooltip, bottomElement, rightElement, + } = props; + + return ( + + + + + + + + {title} + + { + tooltip && ( + + + + ) + } + + + + {value} + + {bottomElement} + + { + rightElement && {rightElement} + } + + + + ); +} + +export default React.memo(AnalyticsCard); diff --git a/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx b/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx index 980e1d8666df..0f9d1a35e595 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx @@ -6,14 +6,13 @@ import '../styles.scss'; import React from 'react'; import Text from 'antd/lib/typography/Text'; -import { Col } from 'antd/lib/grid'; -import Statistic from 'antd/lib/statistic'; -import Card from 'antd/lib/card'; import moment from 'moment'; -import { getQualityColor } from 'utils/quality-color'; -import { QualityReport, Task } from 'cvat-core-wrapper'; +import { QualityReport, Task, getCore } from 'cvat-core-wrapper'; import { useSelector } from 'react-redux'; import { CombinedState } from 'reducers'; +import Button from 'antd/lib/button'; +import { DownloadOutlined } from '@ant-design/icons'; +import AnalyticsCard from './analytics-card'; interface Props { task: Task; @@ -21,25 +20,59 @@ interface Props { function MeanQuality(props: Props): JSX.Element { const { task } = props; - const tasksReports: QualityReport[] = useSelector((state: CombinedState) => state.analytics.quality.tasksReports); const taskReport = tasksReports.find((report: QualityReport) => report.taskId === task.id); - const meanAccuracy = taskReport?.summary.accuracy; + const reportSummary = taskReport?.summary; + const meanAccuracy = reportSummary?.accuracy; + const accuracyRepresentation = !Number.isFinite(meanAccuracy) ? 'N/A' : `${meanAccuracy?.toFixed(1)}%`; + const tooltip = ( +
+ + Mean annotation quality consists of: + + + Correct annotations:  + {reportSummary?.validCount} + + + Task annotations:  + {reportSummary?.dsCount} + + + GT annotations:  + {reportSummary?.gtCount} + + + Accuracy:  + {accuracyRepresentation} + +
+ ); + + const dowloadReportButton = ( +
+ +
+ {taskReport?.createdDate ? moment(taskReport?.createdDate).fromNow() : ''} +
+
+ + ); return ( - - - -
- {taskReport?.createdDate ? moment(taskReport?.createdDate).fromNow() : ''} -
-
- + ); } diff --git a/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx b/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx index 29c4763d5ddc..0b7e6d60c70b 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx @@ -5,7 +5,9 @@ import '../styles.scss'; import React, { useEffect } from 'react'; -import { Job, JobType, Task } from 'cvat-core-wrapper'; +import { + Job, JobType, Task, +} from 'cvat-core-wrapper'; import { Row } from 'antd/lib/grid'; import JobItem from 'components/job-item/job-item'; import { useDispatch, useSelector } from 'react-redux'; diff --git a/cvat-ui/src/components/task-analytics-page/styles.scss b/cvat-ui/src/components/task-analytics-page/styles.scss index 21ae81ea81c6..3b55aa858fd4 100644 --- a/cvat-ui/src/components/task-analytics-page/styles.scss +++ b/cvat-ui/src/components/task-analytics-page/styles.scss @@ -28,13 +28,50 @@ justify-content: center; align-items: center; } + + .ant-card-body { + padding: $grid-unit-size * 2 $grid-unit-size * 3; + } +} + +.cvat-analytics-card-title { + font-size: 16px; +} + +.cvat-analytics-card-value { + font-size: 28px; +} + +.cvat-analytics-tooltip { + margin-left: $grid-unit-size; +} + +.cvat-analytics-tooltip-inner { + span { + display: block; + color: white; + } +} + +.cvat-analytics-download-report-button { + padding-left: $grid-unit-size * 2; + padding-right: $grid-unit-size * 2; + + a { + color: white; + margin-left: $grid-unit-size; + + &:hover { + color: white; + } + } } .cvat-analytics-time-hint { font-size: 10px; position: absolute; - bottom: 0; - right: $grid-unit-size; + bottom: -$grid-unit-size * 3; + right: 0; } .cvat-task-analytics-page { From d90a1c0f1a064f6e41b128d5f0cf73ad235d89e9 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 18 May 2023 21:42:22 +0300 Subject: [PATCH 121/257] Update test assets --- cvat/apps/quality_control/quality_reports.py | 22 +- tests/python/shared/assets/annotations.json | 7506 ++++++----------- tests/python/shared/assets/cvat_db/data.json | 3277 +++---- tests/python/shared/assets/jobs.json | 40 +- .../shared/assets/quality_conflicts.json | 270 + .../python/shared/assets/quality_reports.json | 72 +- .../shared/assets/quality_settings.json | 257 + tests/python/shared/assets/tasks.json | 17 + tests/python/shared/utils/dump_objects.py | 19 +- 9 files changed, 4272 insertions(+), 7208 deletions(-) create mode 100644 tests/python/shared/assets/quality_conflicts.json create mode 100644 tests/python/shared/assets/quality_settings.json diff --git a/cvat/apps/quality_control/quality_reports.py b/cvat/apps/quality_control/quality_reports.py index 1694c41f0bda..351431e65d63 100644 --- a/cvat/apps/quality_control/quality_reports.py +++ b/cvat/apps/quality_control/quality_reports.py @@ -2090,19 +2090,25 @@ def _get_timestamp(job_id: str) -> timezone.datetime: return queue_job_id + def _should_update(self, task: Task): + if task.dimension != DimensionType.DIM_2D: + # Not supported + return False + + if not task.gt_job: + # Nothing to compute + return False + + return True + def schedule_quality_check_job(self, task: Task): # This function schedules a report computing job in the queue - # The queue work algorithm is lock-free. It should keep the following properties: + # The algorithm is lock-free. It should keep the following properties: # - job names are stable between potential writers # - if multiple simultaneous writes can happen, the objects written must be the same # - once a job is created, it can only be updated by the scheduler and the handling worker - if task.dimension != DimensionType.DIM_2D: - # Not supported - return - - if not task.gt_job: - # Nothing to compute + if not self._should_update(task): return now = timezone.now() @@ -2113,7 +2119,6 @@ def schedule_quality_check_job(self, task: Task): existing_job_ids = set(j.id for j in scheduler.get_jobs(until=next_job_time)) queue_job_id = self._find_next_job_id(existing_job_ids, task, now=now) - if queue_job_id not in existing_job_ids: scheduler.enqueue_at( next_job_time, @@ -2344,6 +2349,7 @@ def _save_reports(cls, *, task_report: Dict, job_reports: List[Dict]) -> models. report=db_report, type=conflict['type'], frame=conflict['frame_id'], + importance=conflict['importance'], ) db_conflicts.append(db_conflict) diff --git a/tests/python/shared/assets/annotations.json b/tests/python/shared/assets/annotations.json index b2177f760594..8be374d1076f 100644 --- a/tests/python/shared/assets/annotations.json +++ b/tests/python/shared/assets/annotations.json @@ -1408,78 +1408,86 @@ "attributes": [], "elements": [], "frame": 0, - "group": null, - "id": 483, + "group": 0, + "id": 601, "label_id": 64, "occluded": false, "outside": false, "points": [ - 32.62534262708583, - 20.60098154936127, - 54.70276973433946, - 42.65809723800925 + 618.23, + 215.13, + 688.33, + 284.53, + 690.25, + 278.64, + 626.1, + 206.7 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", - "z_order": 0 + "type": "polygon", + "z_order": 3 }, { "attributes": [], "elements": [], "frame": 0, - "group": null, - "id": 494, + "group": 3, + "id": 582, "label_id": 63, "occluded": false, "outside": false, "points": [ - 108.53125, - 181.1015625, - 142.66406158880454, - 222.9093914860714 + 414.14, + 256.39, + 467.14, + 255.08 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", + "type": "polyline", "z_order": 0 }, { "attributes": [], "elements": [], - "frame": 1, - "group": null, - "id": 484, - "label_id": 64, + "frame": 0, + "group": 0, + "id": 588, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 16.165617100664203, - 9.174072385736443, - 34.292834517618566, - 49.1800330458904 + 673.2, + 222.4, + 693.52, + 240.04, + 647.8, + 287.2, + 620.89, + 266.86 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", - "z_order": 0 + "type": "polygon", + "z_order": 1 }, { "attributes": [], "elements": [], - "frame": 1, - "group": null, - "id": 495, - "label_id": 66, + "frame": 0, + "group": 1, + "id": 581, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 9.683607669644278, - 35.54745578773315, - 17.07658182436379, - 70.58735623784703 + 109.62, + 93.68, + 150.75, + 154.71 ], - "rotation": 0.0, + "rotation": 118.4, "source": "manual", "type": "rectangle", "z_order": 0 @@ -1487,522 +1495,164 @@ { "attributes": [], "elements": [], - "frame": 2, + "frame": 0, "group": 0, - "id": 507, + "id": 600, "label_id": 63, "occluded": false, "outside": false, "points": [ - 401.25005136424625, - 29.26962500657828, - 401.25005136424625, - 86.07529491000787, - 468.64120980117514, - 29.176652377986102, - 468.64120980117514, - 86.13805169507759, - 474.5653626349449, - 25.052984757909144, - 474.5653626349449, - 81.74240928838844, - 407.47898345618705, - 25.156734879141368, - 407.47898345618705, - 81.69191156110719 + 502.5, + 319.9, + 635.3, + 319.9, + 651.0, + 374.7, + 499.9, + 375.5 ], "rotation": 0.0, "source": "manual", - "type": "cuboid", - "z_order": 0 + "type": "polygon", + "z_order": 3 }, { "attributes": [], "elements": [], - "frame": 2, - "group": 0, - "id": 508, + "frame": 0, + "group": 2, + "id": 585, "label_id": 63, "occluded": false, "outside": false, "points": [ - 22.0, - 5.0, - 143.0, - 8.0, - 140.0, - 10.0, - 138.0, - 12.0, - 137.0, - 13.0, - 30.0, - 5.0, - 101.0, - 13.0, - 29.0, - 7.0, - 100.0, - 14.0, - 27.0, - 9.0, - 99.0, - 15.0, - 25.0, - 11.0, - 99.0, - 14.0, + 37.0, 25.0, - 11.0, - 100.0, - 14.0, - 24.0, - 12.0, - 99.0, - 15.0, + 49.0, + 32.0, 23.0, - 12.0, - 100.0, - 15.0, - 22.0, - 13.0, - 99.0, - 16.0, - 22.0, - 12.0, - 100.0, - 16.0, - 21.0, - 13.0, - 100.0, - 15.0, - 22.0, - 12.0, - 101.0, - 15.0, - 21.0, - 13.0, - 100.0, - 16.0, - 21.0, - 13.0, - 100.0, - 16.0, - 20.0, - 13.0, - 101.0, - 15.0, - 21.0, - 12.0, - 102.0, - 15.0, - 20.0, - 13.0, - 102.0, - 15.0, - 20.0, - 12.0, - 103.0, - 14.0, - 21.0, - 11.0, - 103.0, - 15.0, - 20.0, - 11.0, - 104.0, - 15.0, + 59.0, 19.0, - 12.0, - 103.0, - 16.0, - 18.0, - 12.0, - 104.0, - 16.0, - 18.0, - 12.0, - 104.0, - 16.0, - 17.0, - 13.0, - 103.0, - 16.0, - 17.0, - 13.0, - 104.0, - 16.0, + 61.0, 17.0, - 12.0, - 105.0, - 16.0, - 16.0, - 13.0, - 78.0, - 9.0, - 17.0, - 17.0, - 15.0, - 14.0, - 75.0, + 63.0, 15.0, + 65.0, 14.0, - 17.0, - 15.0, - 13.0, - 74.0, - 18.0, - 13.0, - 16.0, - 15.0, - 13.0, - 73.0, - 23.0, - 9.0, - 17.0, - 16.0, - 11.0, - 72.0, - 26.0, - 8.0, - 17.0, - 15.0, + 66.0, + 12.0, + 68.0, 11.0, + 69.0, + 10.0, 70.0, - 29.0, + 9.0, + 70.0, + 9.0, + 70.0, + 9.0, + 70.0, + 9.0, + 71.0, 8.0, - 17.0, - 14.0, - 12.0, - 68.0, - 32.0, + 71.0, + 8.0, + 72.0, + 7.0, + 72.0, + 7.0, + 72.0, + 7.0, + 72.0, + 7.0, + 72.0, + 7.0, + 73.0, 6.0, - 18.0, - 14.0, - 11.0, - 67.0, - 35.0, + 73.0, 5.0, - 18.0, - 13.0, - 11.0, - 67.0, - 36.0, + 74.0, 5.0, - 18.0, - 12.0, - 12.0, - 66.0, - 38.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 4.0, + 75.0, + 4.0, + 75.0, + 4.0, + 75.0, 3.0, - 19.0, - 12.0, - 11.0, - 66.0, - 39.0, + 76.0, 3.0, - 19.0, - 11.0, - 11.0, - 66.0, - 12.0, - 4.0, - 25.0, + 76.0, + 3.0, + 77.0, + 2.0, + 77.0, + 2.0, + 77.0, + 2.0, + 77.0, + 2.0, + 77.0, + 2.0, + 77.0, 1.0, - 20.0, - 10.0, - 11.0, - 66.0, - 11.0, - 9.0, - 22.0, + 1184.0, 1.0, - 19.0, - 10.0, - 12.0, + 77.0, + 3.0, + 76.0, + 4.0, + 75.0, + 4.0, + 75.0, + 4.0, + 74.0, + 5.0, + 73.0, + 7.0, + 71.0, + 9.0, + 67.0, + 13.0, 65.0, - 12.0, - 11.0, - 41.0, - 8.0, - 12.0, - 65.0, - 12.0, - 13.0, - 40.0, - 8.0, - 11.0, - 65.0, - 12.0, 15.0, - 39.0, - 7.0, - 11.0, - 65.0, - 12.0, - 16.0, - 39.0, - 6.0, - 11.0, - 66.0, - 12.0, - 17.0, - 38.0, - 5.0, - 12.0, - 65.0, - 12.0, - 18.0, - 54.0, - 66.0, - 11.0, - 20.0, - 52.0, - 66.0, - 12.0, - 20.0, - 51.0, - 66.0, - 13.0, - 20.0, - 50.0, - 67.0, - 12.0, - 21.0, - 48.0, - 69.0, - 12.0, - 22.0, - 46.0, - 69.0, - 13.0, - 22.0, - 44.0, - 70.0, - 13.0, - 24.0, - 42.0, - 71.0, - 13.0, - 25.0, - 39.0, - 72.0, - 14.0, - 25.0, - 37.0, - 36.0, - 6.0, - 32.0, - 13.0, - 26.0, - 20.0, - 1.0, - 14.0, - 36.0, - 10.0, - 30.0, - 13.0, - 26.0, - 20.0, - 4.0, 9.0, - 36.0, - 13.0, - 28.0, - 14.0, - 27.0, - 18.0, - 5.0, - 7.0, - 36.0, - 15.0, - 28.0, - 14.0, - 27.0, - 17.0, - 48.0, - 20.0, - 24.0, - 15.0, - 26.0, - 16.0, - 48.0, - 22.0, - 22.0, - 16.0, - 27.0, - 14.0, - 48.0, - 25.0, - 20.0, - 16.0, - 27.0, - 13.0, - 48.0, - 26.0, - 20.0, - 16.0, - 28.0, - 10.0, - 50.0, - 27.0, - 19.0, - 16.0, - 28.0, - 8.0, - 52.0, - 27.0, - 19.0, - 24.0, - 21.0, - 5.0, - 54.0, - 27.0, - 19.0, - 25.0, - 82.0, - 24.0, - 19.0, - 25.0, - 83.0, - 23.0, - 19.0, - 25.0, - 83.0, - 23.0, - 19.0, - 25.0, - 86.0, - 19.0, - 20.0, - 24.0, - 89.0, - 17.0, - 20.0, - 24.0, - 90.0, - 16.0, - 20.0, - 23.0, - 91.0, - 15.0, - 20.0, - 23.0, - 94.0, - 12.0, - 20.0, - 23.0, - 94.0, - 12.0, - 20.0, - 23.0, - 94.0, - 12.0, - 20.0, - 23.0, - 93.0, - 13.0, - 21.0, - 22.0, - 92.0, - 13.0, - 22.0, - 21.0, - 92.0, - 14.0, - 23.0, - 19.0, - 93.0, - 13.0, - 25.0, - 19.0, - 91.0, - 14.0, - 25.0, - 21.0, - 88.0, - 15.0, - 26.0, - 23.0, - 83.0, - 16.0, - 28.0, - 24.0, - 80.0, + 1.0, + 53.0, + 29.0, 16.0, - 30.0, - 26.0, - 75.0, - 17.0, - 33.0, - 26.0, - 72.0, - 17.0, - 36.0, - 27.0, - 68.0, - 18.0, - 37.0, - 28.0, - 64.0, - 19.0, - 41.0, - 28.0, - 59.0, - 20.0, - 44.0, + 4.0, 29.0, - 54.0, - 21.0, - 47.0, - 30.0, - 47.0, - 24.0, - 50.0, 31.0, - 40.0, - 27.0, - 52.0, - 34.0, - 32.0, - 30.0, - 56.0, - 39.0, - 19.0, - 32.0, - 62.0, - 45.0, - 5.0, - 35.0, - 65.0, - 83.0, - 70.0, - 78.0, - 74.0, - 74.0, - 77.0, - 71.0, - 81.0, - 64.0, - 88.0, - 59.0, - 91.0, - 52.0, - 103.0, - 42.0, - 110.0, - 37.0, - 123.0, + 11.0, + 16.0, 20.0, - 135.0, - 5.0, - 3.0, - 5.0, - 46.0, - 634.0, - 38.0, - 782.0, - 145.0 + 12.0, + 458.0, + 87.0, + 536.0, + 158.0 ], "rotation": 0.0, "source": "manual", @@ -2012,3535 +1662,182 @@ { "attributes": [], "elements": [], - "frame": 2, + "frame": 0, "group": 0, - "id": 505, - "label_id": 63, + "id": 587, + "label_id": 64, "occluded": false, "outside": false, "points": [ - 191.880859375, - 54.677734375, - 244.87726265758647, - 74.96046080888482, - 318.8110270353427, - 38.32071917035137, - 374.4249205938322, - 107.67451584329137 - ], - "rotation": 0.0, - "source": "manual", - "type": "polyline", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 3, - "group": null, - "id": 497, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 258.3095703125, - 24.3876953125, - 295.5791015625, - 65.44992331153844 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 4, - "group": null, - "id": 487, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 2.813694128785693, - 30.20761291442227, - 18.7208158667625, - 36.10507213674266 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 5, - "group": null, - "id": 499, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 148.640625, - 86.0830078125, - 164.76866623852766, - 104.7000239921581 + 459.5, + 81.9, + 545.8, + 155.8 ], "rotation": 0.0, "source": "manual", "type": "rectangle", - "z_order": 0 + "z_order": 1 }, { "attributes": [], "elements": [], - "frame": 5, - "group": null, - "id": 488, + "frame": 0, + "group": 6, + "id": 586, "label_id": 63, "occluded": false, "outside": false, "points": [ - 3.508318958955836, - 27.7047096625407, - 26.54219559642832, - 45.905198894448475 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 6, - "group": null, - "id": 500, - "label_id": 66, - "occluded": false, - "outside": false, - "points": [ - 156.1435546875, - 55.7177734375, - 182.5197280725224, - 98.7660148448449 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 6, - "group": null, - "id": 489, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 85.333984375, - 107.0869140625, - 98.39604761713781, - 151.52096441155481 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 7, - "group": null, - "id": 490, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 128.3193359375, - 38.0576171875, - 175.73584267079605, - 81.55260474918578 + 414.49, + 261.0, + 467.48, + 259.69 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", + "type": "polyline", "z_order": 0 }, { "attributes": [], "elements": [], - "frame": 7, - "group": null, - "id": 501, + "frame": 0, + "group": 3, + "id": 580, "label_id": 63, "occluded": false, "outside": false, "points": [ - 57.3134765625, - 22.38671875, - 95.06168059694028, - 48.191588008598046 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 8, - "group": null, - "id": 491, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 76.052734375, - 22.341796875, - 106.16692849973879, - 29.755809078333186 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 8, - "group": null, - "id": 502, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 97.4140625, - 100.0615234375, - 118.3121644181665, - 118.715176683143 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 9, - "group": null, - "id": 492, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 40.67588165005975, - 44.16433216489991, - 72.56184147619327, - 85.5429197134128 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 9, - "group": null, - "id": 503, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 128.20703125, - 25.60546875, - 147.7165843730727, - 61.04310087427075 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 10, - "group": null, - "id": 504, - "label_id": 66, - "occluded": false, - "outside": false, - "points": [ - 79.2822265625, - 144.9013671875, - 103.01838856866925, - 190.00175781250073 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 10, - "group": null, - "id": 493, - "label_id": 66, - "occluded": false, - "outside": false, - "points": [ - 188.908203125, - 145.0830078125, - 231.70383704737833, - 172.4403185467836 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - } - ], - "tags": [ - { - "attributes": [], - "frame": 0, - "group": null, - "id": 217, - "label_id": 66, - "source": "manual" - }, - { - "attributes": [], - "frame": 1, - "group": null, - "id": 218, - "label_id": 63, - "source": "manual" - }, - { - "attributes": [], - "frame": 2, - "group": null, - "id": 219, - "label_id": 64, - "source": "manual" - }, - { - "attributes": [], - "frame": 3, - "group": null, - "id": 220, - "label_id": 66, - "source": "manual" - }, - { - "attributes": [], - "frame": 4, - "group": null, - "id": 221, - "label_id": 66, - "source": "manual" - }, - { - "attributes": [], - "frame": 5, - "group": null, - "id": 222, - "label_id": 66, - "source": "manual" - }, - { - "attributes": [], - "frame": 6, - "group": null, - "id": 223, - "label_id": 66, - "source": "manual" - }, - { - "attributes": [], - "frame": 7, - "group": null, - "id": 224, - "label_id": 66, - "source": "manual" - }, - { - "attributes": [], - "frame": 8, - "group": null, - "id": 225, - "label_id": 66, - "source": "manual" - }, - { - "attributes": [], - "frame": 9, - "group": null, - "id": 226, - "label_id": 64, - "source": "manual" - }, - { - "attributes": [], - "frame": 10, - "group": null, - "id": 227, - "label_id": 66, - "source": "manual" - } - ], - "tracks": [ - { - "attributes": [], - "frame": 4, - "group": null, - "id": 117, - "label_id": 64, - "shapes": [ - { - "attributes": [], - "frame": 4, - "id": 479, - "occluded": false, - "outside": false, - "points": [ - 33.598779899537504, - 47.72613723612956, - 72.98403755948176, - 46.37989500312985, - 30.124643891237035, - 37.121847333246016 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 5, - "id": 480, - "occluded": false, - "outside": false, - "points": [ - 81.20000000000073, - 43.20000000000073, - 58.70000000000073, - 40.5, - 43.567141027073376, - 49.988979448266036, - 5.709001866043764, - 94.02221983606796, - 50.46748459291666, - 3.8063308724886156 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 6, - "id": 537, - "occluded": false, - "outside": false, - "points": [ - 87.33181179665189, - 59.56175666774834, - 76.08181179665189, - 58.21175666774798, - 68.51538231018822, - 62.956246391880995, - 42.400000000001455, - 40.600000000000364, - 58.405383111883566, - 28.931516600745454 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 7, - "id": 482, - "occluded": false, - "outside": true, - "points": [ - 93.4636235933026, - 75.92351333549601, - 41.2227627513351, - 34.350331204602604, - 66.3432816308487, - 54.056702329000764 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 8, - "id": 483, - "occluded": true, - "outside": false, - "points": [ - 5.0376184452136314, - 30.9548987882599, - 43.94144681021965, - 21.128727976625083, - 48.469900205179414, - 40.057149554521985 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 9, - "id": 484, - "occluded": false, - "outside": false, - "points": [ - 20.627812291540977, - 77.7181596619339, - 32.80000000000109, - 51.0, - 44.70116884212075, - 35.549937052337555, - 21.962376189354472, - 41.332643421359535 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 1, - "group": null, - "id": 118, - "label_id": 64, - "shapes": [ - { - "attributes": [], - "frame": 1, - "id": 485, - "occluded": false, - "outside": false, - "points": [ - 14.249043106539217, - 92.98784111986599, - 75.59995790885854, - 9.882230433856531, - 74.64478290627322, - 24.288343372649436 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 2, - "id": 486, - "occluded": false, - "outside": true, - "points": [ - 20.40678024726185, - 91.07758232974447, - 91.9385543142871, - 55.6421224669939, - 50.400000000001455, - 41.600000000000364 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 3, - "id": 487, - "occluded": false, - "outside": false, - "points": [ - 64.07371618788767, - 51.165624193155125, - 16.507577217122392, - 35.26978776115228, - 3.3675085977394215, - 35.92980168264138, - 48.890071365309076, - 42.285059057475024 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 4, - "id": 488, - "occluded": false, - "outside": false, - "points": [ - 33.48515389987733, - 67.80446095923253, - 59.900000000001455, - 62.0, - 94.97786135262322, - 92.53355214232033 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 5, - "id": 538, - "occluded": false, - "outside": false, - "points": [ - 68.90000000000146, - 93.90000000000146, - 76.08227824977257, - 71.90224383464374, - 63.03334358050233, - 56.41750205211065, - 32.477766951740705, - 82.24196888442566 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 6, - "id": 490, - "occluded": true, - "outside": false, - "points": [ - 0.8530259402687079, - 44.132965962684466, - 92.26455649954369, - 81.8044876692893, - 58.600000000000364, - 91.60000000000036, - 31.47038000360226, - 96.67947680962061 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 7, - "id": 491, - "occluded": false, - "outside": false, - "points": [ - 5.076584858511457, - 53.839003005451126, - 79.49480345687792, - 80.4262644422021, - 97.57877446416717, - 73.8591873826985 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 8, - "id": 492, - "occluded": true, - "outside": false, - "points": [ - 46.487048928881734, - 74.79726052811286, - 58.89940649861379, - 63.46132083800071, - 79.97978567976963, - 37.370343440303344, - 0.9690229199726064, - 94.25236542125029 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 9, - "id": 513, - "occluded": true, - "outside": true, - "points": [ - 46.487048928881734, - 74.79726052811286, - 58.89940649861379, - 63.46132083800071, - 79.97978567976963, - 37.370343440303344, - 0.9690229199726064, - 94.25236542125029 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "elements": [ - { - "attributes": [], - "frame": 2, - "group": 0, - "id": 122, - "label_id": 67, - "shapes": [ - { - "attributes": [], - "frame": 2, - "id": 498, - "occluded": false, - "outside": true, - "points": [ - 153.27734375, - 110.2919921875 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 4, - "id": 499, - "occluded": false, - "outside": false, - "points": [ - 112.478515625, - 36.544921875 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 5, - "id": 500, - "occluded": false, - "outside": true, - "points": [ - 112.478515625, - 36.544921875 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 2, - "group": 0, - "id": 123, - "label_id": 68, - "shapes": [ - { - "attributes": [], - "frame": 2, - "id": 501, - "occluded": true, - "outside": true, - "points": [ - 229.1739514298206, - 141.25929642527626 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 4, - "id": 502, - "occluded": false, - "outside": false, - "points": [ - 147.65302061127113, - 49.58072867662486 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 5, - "id": 503, - "occluded": false, - "outside": true, - "points": [ - 147.65302061127113, - 49.58072867662486 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 2, - "group": 0, - "id": 124, - "label_id": 69, - "shapes": [ - { - "attributes": [], - "frame": 2, - "id": 504, - "occluded": false, - "outside": true, - "points": [ - 162.24694184787768, - 160.67163694048395 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 4, - "id": 505, - "occluded": false, - "outside": false, - "points": [ - 116.63550211839356, - 57.75242869223621 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 5, - "id": 506, - "occluded": false, - "outside": true, - "points": [ - 116.63550211839356, - 57.75242869223621 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - } - ], - "frame": 2, - "group": 0, - "id": 119, - "label_id": 66, - "shapes": [ - { - "attributes": [], - "frame": 2, - "id": 494, - "occluded": false, - "outside": false, - "points": [], - "rotation": 0.0, - "type": "skeleton", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 2, - "group": 0, - "id": 120, - "label_id": 63, - "shapes": [ - { - "attributes": [], - "frame": 2, - "id": 495, - "occluded": false, - "outside": false, - "points": [ - 394.7080078125, - 132.537109375, - 423.4960031454393, - 133.1914787701262, - 458.82718258259774, - 118.79729455498818, - 458.17290148191023, - 152.81991179076977 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 4, - "id": 496, - "occluded": false, - "outside": true, - "points": [ - 394.7080078125, - 132.537109375, - 423.4960031454393, - 133.1914787701262, - 458.82718258259774, - 118.79729455498818, - 458.17290148191023, - 152.81991179076977 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 1, - "group": 0, - "id": 126, - "label_id": 63, - "shapes": [ - { - "attributes": [], - "frame": 1, - "id": 518, - "occluded": false, - "outside": false, - "points": [ - 155.7216796875, - 95.029296875, - 190.3984375, - 48.248046875 - ], - "rotation": 0.0, - "type": "ellipse", - "z_order": 0 - }, - { - "attributes": [], - "frame": 2, - "id": 519, - "occluded": false, - "outside": true, - "points": [ - 155.7216796875, - 95.029296875, - 190.3984375, - 48.248046875 - ], - "rotation": 0.0, - "type": "ellipse", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "elements": [ - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 128, - "label_id": 67, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 521, - "occluded": false, - "outside": false, - "points": [ - 520.1542352225897, - 152.06408387350893 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 1, - "id": 522, - "occluded": false, - "outside": true, - "points": [ - 492.0205078125, - 63.7373046875 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 129, - "label_id": 68, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 523, - "occluded": true, - "outside": false, - "points": [ - 596.0508429024103, - 183.0313881112852 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 1, - "id": 524, - "occluded": true, - "outside": true, - "points": [ - 567.9171154923206, - 94.70460892527626 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 130, - "label_id": 69, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 525, - "occluded": false, - "outside": true, - "points": [ - 529.1238333204674, - 202.44372862649288 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 1, - "id": 526, - "occluded": false, - "outside": true, - "points": [ - 500.9901059103777, - 114.11694944048395 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - } - ], - "frame": 0, - "group": 0, - "id": 127, - "label_id": 66, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 520, - "occluded": false, - "outside": false, - "points": [], - "rotation": 0.0, - "type": "skeleton", - "z_order": 0 - } - ], - "source": "manual" - } - ], - "version": 0 - }, - "28": { - "shapes": [ - { - "attributes": [], - "elements": [], - "frame": 0, - "group": null, - "id": 384, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 21.771535357816685, - 38.10394839707063, - 46.66121542795621, - 61.395778976883435 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 0, - "group": null, - "id": 373, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 128.70000000000073, - 202.8154296875, - 174.84953117370605, - 252.62294394632772 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [ - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 510, - "label_id": 67, - "occluded": false, - "outside": false, - "points": [ - 325.81183481270637, - 169.3732236381784 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 512, - "label_id": 69, - "occluded": false, - "outside": false, - "points": [ - 335.2453776397853, - 246.57839351937508 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 511, - "label_id": 68, - "occluded": false, - "outside": false, - "points": [ - 405.6341290966555, - 216.82961195061355 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - } - ], - "frame": 0, - "group": 0, - "id": 509, - "label_id": 66, - "occluded": false, - "outside": false, - "points": [], - "rotation": 0.0, - "source": "manual", - "type": "skeleton", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 1, - "group": null, - "id": 374, - "label_id": 66, - "occluded": false, - "outside": false, - "points": [ - 86.7275390625, - 94.7099609375, - 125.33157515757557, - 125.03114821693453 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 1, - "group": null, - "id": 385, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 158.3134765625, - 35.8056640625, - 185.66288233476917, - 76.7700964209198 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 2, - "group": null, - "id": 386, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 131.6240234375, - 38.3125, - 162.9044921875011, - 69.3251953125 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 2, - "group": null, - "id": 375, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 227.0458984375, - 60.1220703125, - 244.4315935987197, - 83.61393346786463 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 3, - "group": null, - "id": 387, - "label_id": 66, - "occluded": false, - "outside": false, - "points": [ - 47.626061974587216, - 4.742902857127573, - 73.6431946747958, - 21.98893892047218 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 3, - "group": null, - "id": 376, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 28.151068739966007, - 25.472817252545543, - 69.01675105692789, - 39.17582104149861 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 4, - "group": null, - "id": 388, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 39.9552116305673, - 7.099389830892683, - 81.50568347911505, - 22.91276365749088 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 4, - "group": null, - "id": 377, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 103.267578125, - 67.3115234375, - 147.5034786745673, - 83.69540199572657 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 5, - "group": null, - "id": 378, - "label_id": 66, - "occluded": false, - "outside": false, - "points": [ - 144.3642578125, - 56.4599609375, - 177.434020713441, - 104.16475617470314 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 5, - "group": null, - "id": 389, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 8.490724513815634, - 4.967537330256527, - 33.879170648858064, - 41.48246323545371 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 6, - "group": null, - "id": 390, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 156.10546875, - 34.4326171875, - 172.06654141543186, - 56.39579921412769 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 6, - "group": null, - "id": 379, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 36.59042217067678, - 11.640939649375332, - 56.356138094129285, - 23.152580340218726 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 7, - "group": null, - "id": 391, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 61.78515625, - 90.8427734375, - 111.29664499716273, - 139.54964206284058 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 7, - "group": null, - "id": 380, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 144.2236328125, - 51.0419921875, - 189.92897609796273, - 93.98294105026616 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 8, - "group": null, - "id": 392, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 23.44786013239356, - 46.61655359142538, - 38.03525661308419, - 63.989553927693194 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 8, - "group": null, - "id": 381, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 7.3056640625, - 91.791015625, - 39.13400037215615, - 106.20052093309823 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 9, - "group": null, - "id": 382, - "label_id": 66, - "occluded": false, - "outside": false, - "points": [ - 80.0048828125, - 95.9814453125, - 107.91455440878963, - 120.22534868413277 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 9, - "group": null, - "id": 393, - "label_id": 66, - "occluded": false, - "outside": false, - "points": [ - 126.8232421875, - 45.4033203125, - 152.48674811251658, - 82.30970791624168 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 10, - "group": null, - "id": 394, - "label_id": 66, - "occluded": false, - "outside": false, - "points": [ - 49.33379108044891, - 45.87438661706784, - 97.62187411104203, - 94.75916402425524 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 10, - "group": null, - "id": 383, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 40.01964032220059, - 28.210223404990387, - 63.80243197711431, - 77.26899546998015 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - } - ], - "tags": [ - { - "attributes": [], - "frame": 0, - "group": null, - "id": 162, - "label_id": 63, - "source": "manual" - }, - { - "attributes": [], - "frame": 1, - "group": null, - "id": 163, - "label_id": 64, - "source": "manual" - }, - { - "attributes": [], - "frame": 2, - "group": null, - "id": 164, - "label_id": 66, - "source": "manual" - }, - { - "attributes": [], - "frame": 3, - "group": null, - "id": 165, - "label_id": 63, - "source": "manual" - }, - { - "attributes": [], - "frame": 4, - "group": null, - "id": 166, - "label_id": 64, - "source": "manual" - }, - { - "attributes": [], - "frame": 5, - "group": null, - "id": 167, - "label_id": 63, - "source": "manual" - }, - { - "attributes": [], - "frame": 6, - "group": null, - "id": 168, - "label_id": 66, - "source": "manual" - }, - { - "attributes": [], - "frame": 7, - "group": null, - "id": 169, - "label_id": 64, - "source": "manual" - }, - { - "attributes": [], - "frame": 8, - "group": null, - "id": 170, - "label_id": 63, - "source": "manual" - }, - { - "attributes": [], - "frame": 9, - "group": null, - "id": 171, - "label_id": 64, - "source": "manual" - }, - { - "attributes": [], - "frame": 10, - "group": null, - "id": 172, - "label_id": 64, - "source": "manual" - } - ], - "tracks": [ - { - "attributes": [], - "frame": 1, - "group": null, - "id": 107, - "label_id": 64, - "shapes": [ - { - "attributes": [], - "frame": 1, - "id": 428, - "occluded": false, - "outside": false, - "points": [ - 89.16625482373604, - 10.760448971018688, - 82.08266620234568, - 57.27050026015028, - 31.61462894960768, - 91.61837979864868, - 61.318808891867995, - 5.2591005982589145 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 2, - "id": 429, - "occluded": false, - "outside": false, - "points": [ - 86.12227563556914, - 54.78519030863848, - 5.965437872325186, - 44.415919636543535, - 21.508219614650393, - 77.71533185704882, - 56.56030517796948, - 80.49138661336151, - 92.11320758706701, - 36.23616592947234 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 3, - "id": 430, - "occluded": false, - "outside": false, - "points": [ - 43.844133439202515, - 52.766337685192056, - 36.06107102732473, - 41.86726929430576, - 10.476592440122644, - 76.08071328170251, - 20.030324015224398, - 97.33574207745058 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 4, - "id": 431, - "occluded": false, - "outside": false, - "points": [ - 46.323639273210574, - 89.27799405888254, - 11.543344424530005, - 28.859146282380607, - 53.30000000000109, - 47.30000000000109 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 5, - "id": 432, - "occluded": false, - "outside": false, - "points": [ - 63.75444524182796, - 83.38994368964245, - 89.86483302169569, - 76.72264053847121, - 65.79043486042822, - 23.786207640718814, - 77.73570584702074, - 67.1092531599958 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 6, - "id": 433, - "occluded": false, - "outside": false, - "points": [ - 42.08516199103318, - 29.942896326510805, - 40.39823943435537, - 49.37947128117274, - 98.88115268683107, - 79.11696631188182 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 7, - "id": 434, - "occluded": false, - "outside": false, - "points": [ - 81.78520462265138, - 70.56947279185766, - 73.77379910176585, - 76.65691380291577, - 78.13598264354707, - 51.951762879932886 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 8, - "id": 435, - "occluded": false, - "outside": false, - "points": [ - 51.12165640102631, - 99.11084197328293, - 63.84797882103561, - 45.89089381970446, - 33.434440460259694, - 19.765429813835755 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 9, - "id": 436, - "occluded": false, - "outside": false, - "points": [ - 60.894066827124334, - 49.40430066146291, - 10.175918797036502, - 22.693004664028194, - 20.521051761917988, - 40.90671260779527, - 57.81882237238278, - 93.4250359257494 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 5, - "group": null, - "id": 108, - "label_id": 66, - "shapes": [ - { - "attributes": [], - "frame": 5, - "id": 437, - "occluded": false, - "outside": false, - "points": [ - 56.70821030480572, - 38.20037623588232, - 63.18175989344238, - 41.73070749428784, - 2.4862395912330637, - 63.95431832704548 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 6, - "id": 438, - "occluded": false, - "outside": false, - "points": [ - 12.005563467360844, - 51.1765167339654, - 40.80000000000109, - 97.10000000000036, - 86.56240502418223, - 88.1565954117068 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 7, - "id": 439, - "occluded": false, - "outside": false, - "points": [ - 27.497534312806238, - 52.64215932836305, - 44.80000000000109, - 9.200000000000728, - 79.60000000000036, - 22.700000000000728, - 71.20000000000073, - 50.100000000000364, - 12.032866200086573, - 59.74691350332432 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 8, - "id": 440, - "occluded": false, - "outside": false, - "points": [ - 45.66798986781396, - 4.961587842361041, - 121.20000000000073, - 49.80000000000109, - 81.60000000000036, - 51.600000000000364 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 9, - "id": 441, - "occluded": false, - "outside": false, - "points": [ - 69.62777852757223, - 25.046431964099458, - 59.00496511489233, - 12.15728994349642, - 10.618682601907793, - 27.135941155386135, - 24.750684503833043, - 72.1563422338744 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - } - ], - "source": "manual" - } - ], - "version": 0 - } - }, - "task": { - "2": { - "shapes": [ - { - "attributes": [], - "elements": [], - "frame": 0, - "group": 0, - "id": 1, - "label_id": 3, - "occluded": false, - "outside": false, - "points": [ - 223.39453125, - 226.0751953125, - 513.7663269042969, - 377.9619903564453 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 1, - "group": 0, - "id": 2, - "label_id": 3, - "occluded": false, - "outside": false, - "points": [ - 63.0791015625, - 139.75390625, - 132.19337349397574, - 112.3867469879533, - 189.71144578313397, - 159.23614457831354, - 191.1030120481937, - 246.9048192771097, - 86.73554216867524, - 335.5012048192784, - 32.00060240964012, - 250.15180722891637 - ], - "rotation": 0.0, - "source": "manual", - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 1, - "group": 0, - "id": 3, - "label_id": 4, - "occluded": false, - "outside": false, - "points": [ - 83.0244140625, - 216.75390625, - 112.24759036144678, - 162.48313253012202, - 167.44638554216908, - 183.35662650602535, - 149.35602409638705, - 252.0072289156633, - 84.41626506024113, - 292.8265060240974, - 72.81987951807241, - 258.9650602409638 - ], - "rotation": 0.0, - "source": "manual", - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 2, - "group": 0, - "id": 4, - "label_id": 3, - "occluded": false, - "outside": false, - "points": [ - 24.443359375, - 107.2275390625, - 84.91109877913368, - 61.125083240844106, - 169.4316315205324, - 75.1561598224198, - 226.5581576026634, - 113.90865704772477, - 240.5892341842391, - 205.77880133185317, - 210.52264150943483, - 270.9230854605994 - ], - "rotation": 0.0, - "source": "manual", - "type": "polyline", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 22, - "group": 0, - "id": 5, - "label_id": 3, - "occluded": false, - "outside": false, - "points": [ - 148.94921875, - 285.6865234375, - 313.515094339622, - 400.32830188679145, - 217.36415094339463, - 585.2339622641503, - 64.81698113207494, - 499.25283018867776 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "5": { - "shapes": [ - { - "attributes": [], - "elements": [], - "frame": 0, - "group": 0, - "id": 29, - "label_id": 9, - "occluded": false, - "outside": false, - "points": [ - 364.0361328125, - 528.87890625, - 609.5286041189956, - 586.544622425632, - 835.2494279176244, - 360.0000000000018, - 543.6247139588122, - 175.4691075514893, - 326.9656750572103, - 192.76887871853796, - 244.58581235698148, - 319.63386727689067 - ], - "rotation": 0.0, - "source": "manual", - "type": "polygon", - "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "6": { - "shapes": [], - "tags": [], - "tracks": [], - "version": 0 - }, - "7": { - "shapes": [ - { - "attributes": [], - "elements": [], - "frame": 0, - "group": 0, - "id": 27, - "label_id": 11, - "occluded": false, - "outside": false, - "points": [ - 448.3779296875, - 356.4892578125, - 438.2558352402775, - 761.3861556064112, - 744.1780320366161, - 319.37356979405195, - 446.1288329519466, - 163.03832951945333 - ], - "rotation": 0.0, - "source": "manual", - "type": "polygon", - "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "8": { - "shapes": [ - { - "attributes": [], - "elements": [], - "frame": 0, - "group": 0, - "id": 30, - "label_id": 13, - "occluded": false, - "outside": false, - "points": [ - 440.0439453125, - 84.0791015625, - 71.83311938382576, - 249.81514762516053, - 380.4441591784325, - 526.585365853658, - 677.6251604621302, - 260.42875481386363, - 629.4557124518615, - 127.35044929396645 - ], - "rotation": 0.0, - "source": "manual", - "type": "polygon", - "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "9": { - "shapes": [ - { - "attributes": [], - "elements": [], - "frame": 0, - "group": 0, - "id": 31, - "label_id": 6, - "occluded": false, - "outside": false, - "points": [ - 65.6189987163034, - 100.96585365853753, - 142.12734274711147, - 362.6243902439037 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 15, - "group": 0, - "id": 41, - "label_id": 6, - "occluded": false, - "outside": false, - "points": [ - 53.062929061787145, - 301.6390160183091, - 197.94851258581548, - 763.3266590389048 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [ - { - "spec_id": 1, - "value": "mazda" - } - ], - "elements": [], - "frame": 16, - "group": 0, - "id": 42, - "label_id": 5, - "occluded": false, - "outside": false, - "points": [ - 172.0810546875, - 105.990234375, - 285.97262095255974, - 138.40000000000146 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "11": { - "shapes": [ - { - "attributes": [], - "elements": [], - "frame": 0, - "group": 0, - "id": 33, - "label_id": 7, - "occluded": false, - "outside": false, - "points": [ - 100.14453125, - 246.03515625, - 408.8692551505537, - 327.5483359746413, - 588.5839936608554, - 289.0380348652925, - 623.8851030110927, - 183.77654516640177, - 329.2812995245622, - 71.45483359746322 - ], - "rotation": 0.0, - "source": "manual", - "type": "polyline", - "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "13": { - "shapes": [ - { - "attributes": [], - "elements": [], - "frame": 0, - "group": 0, - "id": 34, - "label_id": 16, - "occluded": false, - "outside": false, - "points": [ - 106.361328125, - 85.150390625, - 240.083984375, - 241.263671875 - ], - "rotation": 45.9, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 1, - "group": 0, - "id": 35, - "label_id": 16, - "occluded": false, - "outside": false, - "points": [ - 414.29522752496996, - 124.8035516093205, - 522.2641509433943, - 286.75693673695605 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - } - ], - "tags": [ - { - "attributes": [], - "frame": 2, - "group": 0, - "id": 1, - "label_id": 17, - "source": "manual" - }, - { - "attributes": [], - "frame": 3, - "group": 0, - "id": 2, - "label_id": 16, - "source": "manual" - } - ], - "tracks": [], - "version": 0 - }, - "14": { - "shapes": [ - { - "attributes": [ - { - "spec_id": 2, - "value": "white" - } - ], - "elements": [ - { - "attributes": [ - { - "spec_id": 3, - "value": "val1" - } - ], - "frame": 0, - "group": 0, - "id": 39, - "label_id": 25, - "occluded": false, - "outside": false, - "points": [ - 259.91862203681984, - 67.8260869565238 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 40, - "label_id": 26, - "occluded": false, - "outside": false, - "points": [ - 283.65217391304554, - 276.52173913043686 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 37, - "label_id": 23, - "occluded": false, - "outside": false, - "points": [ - 135.8260869565238, - 118.10276296228554 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 38, - "label_id": 24, - "occluded": false, - "outside": false, - "points": [ - 172.10450871201368, - 274.6245183225243 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - } - ], - "frame": 0, - "group": 0, - "id": 36, - "label_id": 22, - "occluded": false, - "outside": false, - "points": [], - "rotation": 0.0, - "source": "manual", - "type": "skeleton", - "z_order": 0 - } - ], - "tags": [], - "tracks": [ - { - "attributes": [ - { - "spec_id": 2, - "value": "white" - } - ], - "elements": [ - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 2, - "label_id": 23, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 2, - "occluded": false, - "outside": false, - "points": [ - 381.9130434782637, - 355.0592829431864 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 3, - "id": 6, - "occluded": false, - "outside": false, - "points": [ - 137.0966796875, - 156.11214469590232 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 3, - "label_id": 24, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 3, - "occluded": false, - "outside": false, - "points": [ - 461.9389738212561, - 583.320176176868 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 3, - "id": 7, - "occluded": false, - "outside": false, - "points": [ - 217.12261003049207, - 384.3730379295848 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [ - { - "spec_id": 3, - "value": "val1" - } - ], - "frame": 0, - "group": 0, - "id": 4, - "label_id": 25, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 4, - "occluded": false, - "outside": false, - "points": [ - 655.6465767436227, - 281.7391304347839 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 3, - "id": 8, - "occluded": false, - "outside": false, - "points": [ - 410.83021295285835, - 82.7919921875 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 5, - "label_id": 26, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 5, - "occluded": false, - "outside": false, - "points": [ - 708.000000000003, - 586.0869565217404 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 3, - "id": 9, - "occluded": false, - "outside": false, - "points": [ - 463.1836362092399, - 387.13981827445605 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - } - ], - "frame": 0, - "group": 0, - "id": 1, - "label_id": 22, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 1, - "occluded": false, - "outside": false, - "points": [], - "rotation": 0.0, - "type": "skeleton", - "z_order": 0 - } - ], - "source": "manual" - } - ], - "version": 0 - }, - "15": { - "shapes": [ - { - "attributes": [], - "elements": [], - "frame": 0, - "group": 0, - "id": 44, - "label_id": 29, - "occluded": false, - "outside": false, - "points": [ - 479.97322623828586, - 408.0053547523421, - 942.6238286479238, - 513.3868808567604 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 0, - "group": 0, - "id": 43, - "label_id": 30, - "occluded": false, - "outside": false, - "points": [ - 120.81927710843593, - 213.52074966532928, - 258.7576974564945, - 643.614457831327 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "17": { - "shapes": [ - { - "attributes": [], - "elements": [], - "frame": 0, - "group": 0, - "id": 47, - "label_id": 38, - "occluded": false, - "outside": false, - "points": [ - 106.361328125, - 85.150390625, - 240.083984375, - 241.263671875 - ], - "rotation": 45.9, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 1, - "group": 0, - "id": 48, - "label_id": 38, - "occluded": false, - "outside": false, - "points": [ - 414.29522752496996, - 124.8035516093205, - 522.2641509433943, - 286.75693673695605 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - } - ], - "tags": [ - { - "attributes": [], - "frame": 2, - "group": 0, - "id": 5, - "label_id": 39, - "source": "manual" - }, - { - "attributes": [], - "frame": 3, - "group": 0, - "id": 6, - "label_id": 38, - "source": "manual" - } - ], - "tracks": [], - "version": 0 - }, - "18": { - "shapes": [ - { - "attributes": [], - "elements": [ - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 52, - "label_id": 49, - "occluded": false, - "outside": false, - "points": [ - 326.2062528608664, - 107.42983682983868 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 50, - "label_id": 47, - "occluded": false, - "outside": false, - "points": [ - 136.46993006993034, - 138.72697241590762 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 51, - "label_id": 48, - "occluded": false, - "outside": false, - "points": [ - 192.9001336620433, - 421.9659673659692 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 53, - "label_id": 50, - "occluded": false, - "outside": false, - "points": [ - 412.07832167832197, - 337.46374412038085 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - } - ], - "frame": 0, - "group": 0, - "id": 49, - "label_id": 46, - "occluded": false, - "outside": false, - "points": [], - "rotation": 0.0, - "source": "manual", - "type": "skeleton", - "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "19": { - "shapes": [ - { - "attributes": [ - { - "spec_id": 7, - "value": "non-default" - } - ], - "elements": [], - "frame": 0, - "group": 0, - "id": 54, - "label_id": 51, - "occluded": false, - "outside": false, - "points": [ - 244.32906271072352, - 57.53054619015711, - 340.34389750505943, - 191.28914362778414 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [ - { - "spec_id": 8, - "value": "black" - } - ], - "elements": [], - "frame": 0, - "group": 0, - "id": 55, - "label_id": 52, - "occluded": false, - "outside": false, - "points": [ - 424.4396493594086, - 86.6660822656795, - 664.8078219824692, - 251.54672960215976 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "20": { - "shapes": [ - { - "attributes": [ - { - "spec_id": 9, - "value": "non-default" - } - ], - "elements": [], - "frame": 0, - "group": 0, - "id": 56, - "label_id": 53, - "occluded": false, - "outside": false, - "points": [ - 35.913636363637124, - 80.58636363636288, - 94.8227272727272, - 170.58636363636288 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [ - { - "spec_id": 10, - "value": "black" - } - ], - "elements": [], - "frame": 0, - "group": 0, - "id": 57, - "label_id": 54, - "occluded": false, - "outside": false, - "points": [ - 190.95909090909117, - 100.22272727272684, - 297.7318181818191, - 209.8590909090908 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "21": { - "shapes": [ - { - "attributes": [], - "elements": [ - { - "attributes": [], - "frame": 6, - "group": 0, - "id": 62, - "label_id": 61, - "occluded": false, - "outside": false, - "points": [ - 155.7276059652392, - 30.260833689097126 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 6, - "group": 0, - "id": 60, - "label_id": 59, - "occluded": false, - "outside": false, - "points": [ - 103.73647295885894, - 51.085564225393554 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 6, - "group": 0, - "id": 61, - "label_id": 60, - "occluded": false, - "outside": false, - "points": [ - 125.86783527366472, - 101.86367376801435 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 6, - "group": 0, - "id": 63, - "label_id": 62, - "occluded": false, - "outside": false, - "points": [ - 199.28775272671066, - 114.13029555429613 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - } - ], - "frame": 6, - "group": 0, - "id": 59, - "label_id": 58, - "occluded": false, - "outside": false, - "points": [], - "rotation": 0.0, - "source": "manual", - "type": "skeleton", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 6, - "group": 0, - "id": 58, - "label_id": 57, - "occluded": false, - "outside": false, - "points": [ - 42.63157931421483, - 51.228199155397306, - 106.13274329786509, - 138.0929989443539 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - } - ], - "tags": [], - "tracks": [ - { - "attributes": [], - "elements": [ - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 7, - "label_id": 59, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 11, - "occluded": false, - "outside": true, - "points": [ - 230.39103314621025, - 149.98846070356873 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 3, - "id": 12, - "occluded": false, - "outside": false, - "points": [ - 230.39103314621025, - 149.98846070356873 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 6, - "id": 12, - "occluded": false, - "outside": true, - "points": [ - 230.39103314621025, - 149.98846070356873 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 8, - "label_id": 60, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 13, - "occluded": false, - "outside": false, - "points": [ - 292.80597636674844, - 284.1818841927473 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 6, - "id": 13, - "occluded": false, - "outside": true, - "points": [ - 292.80597636674844, - 284.1818841927473 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 9, - "label_id": 61, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 14, - "occluded": false, - "outside": false, - "points": [ - 377.016603158851, - 94.95407858346152 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 6, - "id": 14, - "occluded": false, - "outside": true, - "points": [ - 377.016603158851, - 94.95407858346152 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 10, - "label_id": 62, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 15, - "occluded": false, - "outside": false, - "points": [ - 499.86507710826913, - 316.59939612801213 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 6, - "id": 15, - "occluded": false, - "outside": true, - "points": [ - 499.86507710826913, - 316.59939612801213 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - } - ], - "frame": 0, - "group": 0, - "id": 6, - "label_id": 58, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 10, - "occluded": false, - "outside": false, - "points": [], - "rotation": 0.0, - "type": "skeleton", - "z_order": 0 - }, - { - "attributes": [], - "frame": 6, - "id": 10, - "occluded": false, - "outside": true, - "points": [], - "rotation": 0.0, - "type": "skeleton", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "elements": [ - { - "attributes": [], - "frame": 6, - "group": 0, - "id": 12, - "label_id": 59, - "shapes": [ - { - "attributes": [], - "frame": 6, - "id": 17, - "occluded": false, - "outside": false, - "points": [ - 92.95325643333308, - 129.2954675940839 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 6, - "group": 0, - "id": 13, - "label_id": 60, - "shapes": [ - { - "attributes": [], - "frame": 6, - "id": 18, - "occluded": false, - "outside": false, - "points": [ - 133.81649280769233, - 195.4883603907146 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 6, - "group": 0, - "id": 14, - "label_id": 61, - "shapes": [ - { - "attributes": [], - "frame": 6, - "id": 19, - "occluded": false, - "outside": false, - "points": [ - 188.94942364574058, - 102.14894385926891 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 6, - "group": 0, - "id": 15, - "label_id": 62, - "shapes": [ - { - "attributes": [], - "frame": 6, - "id": 20, - "occluded": false, - "outside": false, - "points": [ - 269.3786601426267, - 211.47877807640333 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - } - ], - "frame": 6, - "group": 0, - "id": 11, - "label_id": 58, - "shapes": [ - { - "attributes": [], - "frame": 6, - "id": 16, - "occluded": false, - "outside": false, - "points": [], - "rotation": 0.0, - "type": "skeleton", - "z_order": 0 - } + 439.0, + 238.07, + 442.27, + 279.29 ], - "source": "manual" - } - ], - "version": 0 - }, - "22": { - "shapes": [ + "rotation": 0.0, + "source": "manual", + "type": "polyline", + "z_order": 0 + }, { "attributes": [], "elements": [], "frame": 0, - "group": null, - "id": 483, - "label_id": 64, + "group": 4, + "id": 583, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 32.62534262708583, - 20.60098154936127, - 54.70276973433946, - 42.65809723800925 + 210.0, + 274.06, + 240.1, + 258.35, + 267.1, + 266.4, + 278.7, + 261.63, + 281.32, + 253.78 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", + "type": "polyline", "z_order": 0 }, { "attributes": [], "elements": [], "frame": 0, - "group": null, - "id": 494, + "group": 5, + "id": 584, "label_id": 63, "occluded": false, "outside": false, "points": [ - 108.53125, - 181.1015625, - 142.66406158880454, - 222.9093914860714 + 227.02, + 87.59, + 225.05, + 153.02, + 283.9, + 158.2, + 251.9, + 121.0 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", + "type": "polygon", "z_order": 0 }, { "attributes": [], "elements": [], - "frame": 1, - "group": null, - "id": 484, + "frame": 0, + "group": 0, + "id": 602, "label_id": 64, "occluded": false, "outside": false, "points": [ - 16.165617100664203, - 9.174072385736443, - 34.292834517618566, - 49.1800330458904 + 532.6, + 300.2, + 533.2, + 391.8, + 678.47, + 393.14, + 639.87, + 300.88 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", + "type": "polygon", + "z_order": 4 + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "28": { + "shapes": [ + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 548, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 284.59, + 248.54, + 264.96, + 261.63, + 242.72, + 251.16, + 219.16, + 270.79 + ], + "rotation": 0.0, + "source": "manual", + "type": "polyline", "z_order": 0 }, { "attributes": [], "elements": [], - "frame": 1, - "group": null, - "id": 495, - "label_id": 66, + "frame": 0, + "group": 0, + "id": 550, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 9.683607669644278, - 35.54745578773315, - 17.07658182436379, - 70.58735623784703 + 107.28, + 91.51, + 152.43, + 154.32 ], "rotation": 0.0, "source": "manual", @@ -5550,546 +1847,641 @@ { "attributes": [], "elements": [], - "frame": 2, + "frame": 0, "group": 0, - "id": 507, + "id": 549, "label_id": 63, "occluded": false, "outside": false, "points": [ - 401.25005136424625, - 29.26962500657828, - 401.25005136424625, - 86.07529491000787, - 468.64120980117514, - 29.176652377986102, - 468.64120980117514, - 86.13805169507759, - 474.5653626349449, - 25.052984757909144, - 474.5653626349449, - 81.74240928838844, - 407.47898345618705, - 25.156734879141368, - 407.47898345618705, - 81.69191156110719 + 419.37, + 260.32, + 436.39, + 259.01, + 448.82, + 258.36, + 463.87, + 258.36 ], "rotation": 0.0, "source": "manual", - "type": "cuboid", + "type": "polyline", "z_order": 0 }, { "attributes": [], "elements": [], - "frame": 2, + "frame": 0, "group": 0, - "id": 508, + "id": 547, "label_id": 63, "occluded": false, "outside": false, "points": [ - 22.0, + 227.02, + 88.24, + 223.74, + 155.63, + 297.02, + 156.94, + 299.64, + 84.97, + 261.04, + 128.81 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 5, + "id": 566, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 21.0, 5.0, - 143.0, - 8.0, - 140.0, + 32.0, 10.0, - 138.0, - 12.0, - 137.0, - 13.0, 30.0, - 5.0, - 101.0, - 13.0, - 29.0, - 7.0, - 100.0, - 14.0, + 12.0, 27.0, - 9.0, - 99.0, 15.0, 25.0, - 11.0, - 99.0, - 14.0, - 25.0, - 11.0, - 100.0, - 14.0, - 24.0, - 12.0, - 99.0, - 15.0, + 17.0, 23.0, - 12.0, - 100.0, - 15.0, - 22.0, - 13.0, - 99.0, - 16.0, - 22.0, - 12.0, - 100.0, - 16.0, - 21.0, - 13.0, - 100.0, - 15.0, - 22.0, - 12.0, - 101.0, - 15.0, + 19.0, 21.0, - 13.0, - 100.0, - 16.0, 21.0, + 19.0, + 23.0, + 17.0, + 25.0, + 14.0, + 28.0, + 12.0, + 30.0, + 10.0, + 31.0, + 9.0, + 33.0, + 8.0, + 34.0, + 6.0, + 36.0, + 5.0, + 36.0, + 5.0, + 36.0, + 4.0, + 38.0, + 2.0, + 39.0, + 2.0, + 326.0, + 2.0, + 38.0, + 3.0, + 38.0, + 3.0, + 37.0, + 5.0, + 35.0, + 6.0, + 34.0, + 8.0, + 31.0, + 10.0, + 29.0, 13.0, - 100.0, + 26.0, 16.0, - 20.0, - 13.0, - 101.0, - 15.0, + 23.0, + 19.0, 21.0, - 12.0, - 102.0, - 15.0, - 20.0, - 13.0, - 102.0, - 15.0, - 20.0, - 12.0, - 103.0, - 14.0, 21.0, - 11.0, - 103.0, - 15.0, - 20.0, - 11.0, - 104.0, - 15.0, - 19.0, - 12.0, - 103.0, - 16.0, - 18.0, - 12.0, - 104.0, - 16.0, 18.0, - 12.0, - 104.0, - 16.0, - 17.0, - 13.0, - 103.0, - 16.0, - 17.0, - 13.0, - 104.0, - 16.0, - 17.0, - 12.0, - 105.0, - 16.0, - 16.0, + 24.0, + 15.0, + 27.0, 13.0, - 78.0, + 29.0, 9.0, - 17.0, - 17.0, - 15.0, - 14.0, - 75.0, - 15.0, + 22.0, + 627.0, + 244.0, + 667.0, + 284.0 + ], + "rotation": 0.0, + "source": "manual", + "type": "mask", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 546, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 455.36, + 88.24, + 463.21, + 158.9, + 545.65, + 155.63, + 536.49, + 84.97 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 5, + "id": 565, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 672.58, + 219.1, + 692.21, + 239.38, + 671.27, + 257.7, + 655.57, + 239.38 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 564, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 527.0, + 319.6, + 530.3, + 372.6, + 500.83, + 375.21, + 502.79, + 319.6 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 1, + "group": 0, + "id": 576, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 45.0, + 8.0, + 64.0, + 5.0, + 7.0, + 11.0, + 61.0, + 7.0, + 5.0, 14.0, - 17.0, - 15.0, - 13.0, - 74.0, - 18.0, - 13.0, - 16.0, - 15.0, - 13.0, - 73.0, - 23.0, + 58.0, 9.0, - 17.0, + 3.0, 16.0, + 56.0, 11.0, - 72.0, - 26.0, - 8.0, - 17.0, - 15.0, - 11.0, - 70.0, - 29.0, - 8.0, - 17.0, - 14.0, - 12.0, - 68.0, - 32.0, - 6.0, + 2.0, 18.0, - 14.0, + 54.0, 11.0, - 67.0, + 2.0, + 20.0, + 52.0, 35.0, - 5.0, - 18.0, - 13.0, - 11.0, - 67.0, + 50.0, 36.0, - 5.0, - 18.0, - 12.0, - 12.0, - 66.0, + 49.0, 38.0, - 3.0, - 19.0, - 12.0, - 11.0, - 66.0, + 47.0, 39.0, - 3.0, - 19.0, - 11.0, - 11.0, - 66.0, - 12.0, - 4.0, - 25.0, - 1.0, - 20.0, - 10.0, - 11.0, - 66.0, - 11.0, - 9.0, - 22.0, - 1.0, - 19.0, - 10.0, - 12.0, - 65.0, - 12.0, - 11.0, - 41.0, - 8.0, - 12.0, - 65.0, - 12.0, - 13.0, + 45.0, + 42.0, + 43.0, + 43.0, + 42.0, + 45.0, 40.0, - 8.0, - 11.0, - 65.0, - 12.0, - 15.0, + 46.0, 39.0, - 7.0, - 11.0, - 65.0, - 12.0, + 47.0, 16.0, - 39.0, - 6.0, - 11.0, - 66.0, - 12.0, - 17.0, - 38.0, - 5.0, - 12.0, - 65.0, - 12.0, - 18.0, - 54.0, - 66.0, - 11.0, - 20.0, - 52.0, - 66.0, - 12.0, - 20.0, - 51.0, - 66.0, + 7.0, + 15.0, + 48.0, + 14.0, + 9.0, + 14.0, + 48.0, 13.0, - 20.0, - 50.0, - 67.0, 12.0, - 21.0, - 48.0, - 69.0, 12.0, - 22.0, - 46.0, - 69.0, - 13.0, - 22.0, - 44.0, - 70.0, - 13.0, - 24.0, - 42.0, - 71.0, 13.0, + 11.0, 25.0, - 39.0, - 72.0, + 11.0, 14.0, - 25.0, - 37.0, - 36.0, - 6.0, - 32.0, + 10.0, 13.0, - 26.0, - 20.0, - 1.0, 14.0, - 36.0, + 24.0, 10.0, - 30.0, - 13.0, - 26.0, - 20.0, - 4.0, + 15.0, 9.0, - 36.0, 13.0, - 28.0, + 16.0, + 23.0, + 8.0, + 17.0, + 7.0, 14.0, - 27.0, + 16.0, + 23.0, + 8.0, 18.0, 5.0, - 7.0, - 36.0, 15.0, - 28.0, - 14.0, - 27.0, 17.0, - 48.0, - 20.0, - 24.0, + 23.0, + 6.0, + 19.0, + 5.0, 15.0, - 26.0, - 16.0, - 48.0, - 22.0, - 22.0, - 16.0, - 27.0, - 14.0, - 48.0, - 25.0, - 20.0, - 16.0, - 27.0, - 13.0, - 48.0, - 26.0, - 20.0, + 18.0, + 23.0, + 4.0, + 21.0, + 3.0, 16.0, - 28.0, - 10.0, - 50.0, - 27.0, 19.0, + 23.0, + 3.0, + 22.0, + 2.0, 16.0, - 28.0, - 8.0, - 52.0, - 27.0, 19.0, - 24.0, - 21.0, - 5.0, - 54.0, - 27.0, + 23.0, + 3.0, + 40.0, 19.0, - 25.0, - 82.0, 24.0, + 2.0, + 40.0, + 20.0, + 23.0, + 2.0, + 41.0, 19.0, - 25.0, - 83.0, 23.0, + 2.0, + 41.0, 19.0, - 25.0, - 83.0, + 11.0, + 1.0, + 12.0, + 1.0, + 11.0, + 1.0, + 29.0, + 19.0, + 11.0, + 1.0, + 12.0, + 1.0, + 11.0, + 1.0, + 29.0, + 19.0, + 11.0, + 2.0, + 23.0, + 2.0, + 29.0, + 18.0, + 11.0, + 2.0, 23.0, - 19.0, - 25.0, - 86.0, - 19.0, - 20.0, + 3.0, + 28.0, + 18.0, + 11.0, + 2.0, 24.0, - 89.0, + 3.0, + 28.0, 17.0, - 20.0, + 11.0, + 3.0, 24.0, - 90.0, + 3.0, + 27.0, 16.0, - 20.0, - 23.0, - 91.0, + 12.0, + 3.0, + 25.0, + 2.0, + 28.0, 15.0, - 20.0, - 23.0, - 94.0, 12.0, - 20.0, - 23.0, - 94.0, + 2.0, 12.0, - 20.0, - 23.0, - 94.0, + 1.0, + 43.0, + 14.0, 12.0, - 20.0, - 23.0, - 93.0, + 3.0, + 12.0, + 2.0, + 43.0, 13.0, - 21.0, - 22.0, - 92.0, + 12.0, + 3.0, + 12.0, + 2.0, + 44.0, + 11.0, 13.0, - 22.0, - 21.0, - 92.0, - 14.0, - 23.0, - 19.0, - 93.0, + 3.0, + 12.0, + 3.0, + 43.0, + 11.0, 13.0, - 25.0, - 19.0, - 91.0, + 3.0, + 11.0, + 4.0, + 43.0, + 10.0, + 13.0, + 4.0, + 11.0, + 5.0, + 44.0, + 8.0, + 12.0, + 5.0, + 11.0, + 6.0, + 44.0, + 7.0, + 12.0, + 5.0, + 11.0, + 7.0, + 45.0, + 4.0, + 12.0, + 5.0, + 12.0, + 9.0, 14.0, - 25.0, - 21.0, - 88.0, - 15.0, - 26.0, - 23.0, - 83.0, - 16.0, - 28.0, - 24.0, - 80.0, - 16.0, - 30.0, - 26.0, - 75.0, - 17.0, - 33.0, - 26.0, - 72.0, - 17.0, - 36.0, + 3.0, 27.0, - 68.0, - 18.0, - 37.0, - 28.0, - 64.0, - 19.0, + 3.0, + 12.0, + 5.0, + 12.0, + 11.0, + 9.0, + 7.0, 41.0, - 28.0, - 59.0, - 20.0, - 44.0, - 29.0, - 54.0, - 21.0, - 47.0, - 30.0, - 47.0, - 24.0, - 50.0, - 31.0, + 5.0, + 12.0, + 12.0, + 7.0, + 9.0, 40.0, - 27.0, - 52.0, - 34.0, - 32.0, - 30.0, - 56.0, + 5.0, + 12.0, + 28.0, 39.0, - 19.0, + 5.0, + 12.0, + 30.0, + 38.0, + 5.0, + 11.0, 32.0, - 62.0, - 45.0, + 37.0, 5.0, + 11.0, + 33.0, 35.0, - 65.0, - 83.0, - 70.0, - 78.0, - 74.0, - 74.0, - 77.0, - 71.0, - 81.0, - 64.0, - 88.0, - 59.0, - 91.0, - 52.0, - 103.0, - 42.0, - 110.0, + 5.0, + 12.0, + 34.0, + 33.0, + 6.0, + 12.0, + 35.0, + 32.0, + 6.0, + 11.0, 37.0, - 123.0, - 20.0, - 135.0, + 31.0, + 6.0, + 11.0, + 39.0, + 29.0, 5.0, - 3.0, + 12.0, + 40.0, + 28.0, 5.0, + 12.0, + 42.0, + 26.0, + 4.0, + 13.0, + 44.0, + 40.0, 46.0, - 634.0, + 39.0, + 47.0, 38.0, - 782.0, - 145.0 + 49.0, + 35.0, + 57.0, + 27.0, + 60.0, + 24.0, + 62.0, + 22.0, + 65.0, + 19.0, + 68.0, + 15.0, + 71.0, + 13.0, + 77.0, + 7.0, + 14.0, + 23.0, + 57.0, + 107.0, + 124.0 + ], + "rotation": 0.0, + "source": "manual", + "type": "mask", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 1, + "group": 0, + "id": 574, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 359.22, + 57.54, + 381.79, + 37.93 + ], + "rotation": 0.0, + "source": "manual", + "type": "ellipse", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 1, + "group": 0, + "id": 579, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 420.99, + 33.5, + 450.58, + 62.36 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 1, + "group": 0, + "id": 575, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 503.86, + 51.36, + 503.86, + 95.65, + 574.15, + 51.26, + 574.15, + 95.65, + 581.18, + 46.92, + 581.18, + 91.11, + 510.89, + 46.92, + 510.89, + 91.11 + ], + "rotation": 0.0, + "source": "manual", + "type": "cuboid", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 1, + "group": 0, + "id": 573, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 213.08, + 27.58, + 242.67, + 54.96, + 220.48, + 73.46, + 182.0, + 63.1, + 165.72, + 25.36 ], "rotation": 0.0, "source": "manual", - "type": "mask", + "type": "polygon", "z_order": 0 }, { "attributes": [], "elements": [], - "frame": 2, + "frame": 1, "group": 0, - "id": 505, + "id": 578, "label_id": 63, "occluded": false, "outside": false, "points": [ - 191.880859375, - 54.677734375, - 244.87726265758647, - 74.96046080888482, - 318.8110270353427, - 38.32071917035137, - 374.4249205938322, - 107.67451584329137 + 393.61, + 109.71, + 417.29, + 139.31, + 432.09, + 123.03, + 461.68, + 140.05 ], "rotation": 0.0, "source": "manual", @@ -6099,17 +2491,67 @@ { "attributes": [], "elements": [], - "frame": 3, - "group": null, - "id": 497, + "frame": 1, + "group": 0, + "id": 577, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 276.71, + 105.27, + 301.12, + 121.55, + 273.75, + 137.09, + 252.29, + 122.29 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + } + ], + "tags": [ + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 228, + "label_id": 63, + "source": "manual" + }, + { + "attributes": [], + "frame": 1, + "group": 0, + "id": 229, "label_id": 63, + "source": "manual" + } + ], + "tracks": [], + "version": 0 + } + }, + "task": { + "2": { + "shapes": [ + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 1, + "label_id": 3, "occluded": false, "outside": false, "points": [ - 258.3095703125, - 24.3876953125, - 295.5791015625, - 65.44992331153844 + 223.39453125, + 226.0751953125, + 513.7663269042969, + 377.9619903564453 ], "rotation": 0.0, "source": "manual", @@ -6119,37 +2561,237 @@ { "attributes": [], "elements": [], - "frame": 4, - "group": null, - "id": 487, - "label_id": 63, + "frame": 1, + "group": 0, + "id": 2, + "label_id": 3, + "occluded": false, + "outside": false, + "points": [ + 63.0791015625, + 139.75390625, + 132.19337349397574, + 112.3867469879533, + 189.71144578313397, + 159.23614457831354, + 191.1030120481937, + 246.9048192771097, + 86.73554216867524, + 335.5012048192784, + 32.00060240964012, + 250.15180722891637 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 1, + "group": 0, + "id": 3, + "label_id": 4, + "occluded": false, + "outside": false, + "points": [ + 83.0244140625, + 216.75390625, + 112.24759036144678, + 162.48313253012202, + 167.44638554216908, + 183.35662650602535, + 149.35602409638705, + 252.0072289156633, + 84.41626506024113, + 292.8265060240974, + 72.81987951807241, + 258.9650602409638 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 2, + "group": 0, + "id": 4, + "label_id": 3, + "occluded": false, + "outside": false, + "points": [ + 24.443359375, + 107.2275390625, + 84.91109877913368, + 61.125083240844106, + 169.4316315205324, + 75.1561598224198, + 226.5581576026634, + 113.90865704772477, + 240.5892341842391, + 205.77880133185317, + 210.52264150943483, + 270.9230854605994 + ], + "rotation": 0.0, + "source": "manual", + "type": "polyline", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 22, + "group": 0, + "id": 5, + "label_id": 3, + "occluded": false, + "outside": false, + "points": [ + 148.94921875, + 285.6865234375, + 313.515094339622, + 400.32830188679145, + 217.36415094339463, + 585.2339622641503, + 64.81698113207494, + 499.25283018867776 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "5": { + "shapes": [ + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 29, + "label_id": 9, + "occluded": false, + "outside": false, + "points": [ + 364.0361328125, + 528.87890625, + 609.5286041189956, + 586.544622425632, + 835.2494279176244, + 360.0000000000018, + 543.6247139588122, + 175.4691075514893, + 326.9656750572103, + 192.76887871853796, + 244.58581235698148, + 319.63386727689067 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 0 + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "6": { + "shapes": [], + "tags": [], + "tracks": [], + "version": 0 + }, + "7": { + "shapes": [ + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 27, + "label_id": 11, + "occluded": false, + "outside": false, + "points": [ + 448.3779296875, + 356.4892578125, + 438.2558352402775, + 761.3861556064112, + 744.1780320366161, + 319.37356979405195, + 446.1288329519466, + 163.03832951945333 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 0 + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "8": { + "shapes": [ + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 30, + "label_id": 13, "occluded": false, "outside": false, "points": [ - 2.813694128785693, - 30.20761291442227, - 18.7208158667625, - 36.10507213674266 + 440.0439453125, + 84.0791015625, + 71.83311938382576, + 249.81514762516053, + 380.4441591784325, + 526.585365853658, + 677.6251604621302, + 260.42875481386363, + 629.4557124518615, + 127.35044929396645 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", + "type": "polygon", "z_order": 0 - }, + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "9": { + "shapes": [ { "attributes": [], "elements": [], - "frame": 5, - "group": null, - "id": 499, - "label_id": 63, + "frame": 0, + "group": 0, + "id": 31, + "label_id": 6, "occluded": false, "outside": false, "points": [ - 148.640625, - 86.0830078125, - 164.76866623852766, - 104.7000239921581 + 65.6189987163034, + 100.96585365853753, + 142.12734274711147, + 362.6243902439037 ], "rotation": 0.0, "source": "manual", @@ -6159,17 +2801,17 @@ { "attributes": [], "elements": [], - "frame": 5, - "group": null, - "id": 488, - "label_id": 63, + "frame": 15, + "group": 0, + "id": 41, + "label_id": 6, "occluded": false, "outside": false, "points": [ - 3.508318958955836, - 27.7047096625407, - 26.54219559642832, - 45.905198894448475 + 53.062929061787145, + 301.6390160183091, + 197.94851258581548, + 763.3266590389048 ], "rotation": 0.0, "source": "manual", @@ -6177,61 +2819,86 @@ "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 1, + "value": "mazda" + } + ], "elements": [], - "frame": 6, - "group": null, - "id": 500, - "label_id": 66, + "frame": 16, + "group": 0, + "id": 42, + "label_id": 5, "occluded": false, "outside": false, "points": [ - 156.1435546875, - 55.7177734375, - 182.5197280725224, - 98.7660148448449 + 172.0810546875, + 105.990234375, + 285.97262095255974, + 138.40000000000146 ], "rotation": 0.0, "source": "manual", "type": "rectangle", "z_order": 0 - }, + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "11": { + "shapes": [ { "attributes": [], "elements": [], - "frame": 6, - "group": null, - "id": 489, - "label_id": 64, + "frame": 0, + "group": 0, + "id": 33, + "label_id": 7, "occluded": false, "outside": false, "points": [ - 85.333984375, - 107.0869140625, - 98.39604761713781, - 151.52096441155481 + 100.14453125, + 246.03515625, + 408.8692551505537, + 327.5483359746413, + 588.5839936608554, + 289.0380348652925, + 623.8851030110927, + 183.77654516640177, + 329.2812995245622, + 71.45483359746322 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", + "type": "polyline", "z_order": 0 - }, + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "13": { + "shapes": [ { "attributes": [], "elements": [], - "frame": 7, - "group": null, - "id": 490, - "label_id": 64, + "frame": 0, + "group": 0, + "id": 34, + "label_id": 16, "occluded": false, "outside": false, "points": [ - 128.3193359375, - 38.0576171875, - 175.73584267079605, - 81.55260474918578 + 106.361328125, + 85.150390625, + 240.083984375, + 241.263671875 ], - "rotation": 0.0, + "rotation": 45.9, "source": "manual", "type": "rectangle", "z_order": 0 @@ -6239,97 +2906,348 @@ { "attributes": [], "elements": [], - "frame": 7, - "group": null, - "id": 501, - "label_id": 63, + "frame": 1, + "group": 0, + "id": 35, + "label_id": 16, "occluded": false, "outside": false, "points": [ - 57.3134765625, - 22.38671875, - 95.06168059694028, - 48.191588008598046 + 414.29522752496996, + 124.8035516093205, + 522.2641509433943, + 286.75693673695605 ], "rotation": 0.0, "source": "manual", "type": "rectangle", "z_order": 0 + } + ], + "tags": [ + { + "attributes": [], + "frame": 2, + "group": 0, + "id": 1, + "label_id": 17, + "source": "manual" }, { "attributes": [], - "elements": [], - "frame": 8, - "group": null, - "id": 491, - "label_id": 64, + "frame": 3, + "group": 0, + "id": 2, + "label_id": 16, + "source": "manual" + } + ], + "tracks": [], + "version": 0 + }, + "14": { + "shapes": [ + { + "attributes": [ + { + "spec_id": 2, + "value": "white" + } + ], + "elements": [ + { + "attributes": [ + { + "spec_id": 3, + "value": "val1" + } + ], + "frame": 0, + "group": 0, + "id": 39, + "label_id": 25, + "occluded": false, + "outside": false, + "points": [ + 259.91862203681984, + 67.8260869565238 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 40, + "label_id": 26, + "occluded": false, + "outside": false, + "points": [ + 283.65217391304554, + 276.52173913043686 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 37, + "label_id": 23, + "occluded": false, + "outside": false, + "points": [ + 135.8260869565238, + 118.10276296228554 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 38, + "label_id": 24, + "occluded": false, + "outside": false, + "points": [ + 172.10450871201368, + 274.6245183225243 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + } + ], + "frame": 0, + "group": 0, + "id": 36, + "label_id": 22, "occluded": false, "outside": false, - "points": [ - 76.052734375, - 22.341796875, - 106.16692849973879, - 29.755809078333186 - ], + "points": [], "rotation": 0.0, "source": "manual", - "type": "rectangle", + "type": "skeleton", "z_order": 0 - }, + } + ], + "tags": [], + "tracks": [ { - "attributes": [], - "elements": [], - "frame": 8, - "group": null, - "id": 502, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 97.4140625, - 100.0615234375, - 118.3121644181665, - 118.715176683143 + "attributes": [ + { + "spec_id": 2, + "value": "white" + } + ], + "elements": [ + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 2, + "label_id": 23, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 2, + "occluded": false, + "outside": false, + "points": [ + 381.9130434782637, + 355.0592829431864 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 3, + "id": 6, + "occluded": false, + "outside": false, + "points": [ + 137.0966796875, + 156.11214469590232 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 3, + "label_id": 24, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 3, + "occluded": false, + "outside": false, + "points": [ + 461.9389738212561, + 583.320176176868 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 3, + "id": 7, + "occluded": false, + "outside": false, + "points": [ + 217.12261003049207, + 384.3730379295848 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [ + { + "spec_id": 3, + "value": "val1" + } + ], + "frame": 0, + "group": 0, + "id": 4, + "label_id": 25, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 4, + "occluded": false, + "outside": false, + "points": [ + 655.6465767436227, + 281.7391304347839 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 3, + "id": 8, + "occluded": false, + "outside": false, + "points": [ + 410.83021295285835, + 82.7919921875 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 5, + "label_id": 26, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 5, + "occluded": false, + "outside": false, + "points": [ + 708.000000000003, + 586.0869565217404 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 3, + "id": 9, + "occluded": false, + "outside": false, + "points": [ + 463.1836362092399, + 387.13981827445605 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + } ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 9, - "group": null, - "id": 492, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 40.67588165005975, - 44.16433216489991, - 72.56184147619327, - 85.5429197134128 + "frame": 0, + "group": 0, + "id": 1, + "label_id": 22, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 1, + "occluded": false, + "outside": false, + "points": [], + "rotation": 0.0, + "type": "skeleton", + "z_order": 0 + } ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, + "source": "manual" + } + ], + "version": 0 + }, + "15": { + "shapes": [ { "attributes": [], "elements": [], - "frame": 9, - "group": null, - "id": 503, - "label_id": 64, + "frame": 0, + "group": 0, + "id": 44, + "label_id": 29, "occluded": false, "outside": false, "points": [ - 128.20703125, - 25.60546875, - 147.7165843730727, - 61.04310087427075 + 479.97322623828586, + 408.0053547523421, + 942.6238286479238, + 513.3868808567604 ], "rotation": 0.0, "source": "manual", @@ -6339,464 +3257,515 @@ { "attributes": [], "elements": [], - "frame": 10, - "group": null, - "id": 504, - "label_id": 66, + "frame": 0, + "group": 0, + "id": 43, + "label_id": 30, "occluded": false, "outside": false, "points": [ - 79.2822265625, - 144.9013671875, - 103.01838856866925, - 190.00175781250073 + 120.81927710843593, + 213.52074966532928, + 258.7576974564945, + 643.614457831327 ], "rotation": 0.0, "source": "manual", "type": "rectangle", "z_order": 0 - }, + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "17": { + "shapes": [ { "attributes": [], "elements": [], - "frame": 10, - "group": null, - "id": 493, - "label_id": 66, + "frame": 0, + "group": 0, + "id": 47, + "label_id": 38, "occluded": false, "outside": false, "points": [ - 188.908203125, - 145.0830078125, - 231.70383704737833, - 172.4403185467836 + 106.361328125, + 85.150390625, + 240.083984375, + 241.263671875 ], - "rotation": 0.0, + "rotation": 45.9, "source": "manual", - "type": "rectangle", - "z_order": 0 - } - ], - "tags": [ - { - "attributes": [], - "frame": 0, - "group": null, - "id": 217, - "label_id": 66, - "source": "manual" - }, - { - "attributes": [], - "frame": 1, - "group": null, - "id": 218, - "label_id": 63, - "source": "manual" - }, - { - "attributes": [], - "frame": 2, - "group": null, - "id": 219, - "label_id": 64, - "source": "manual" - }, - { - "attributes": [], - "frame": 3, - "group": null, - "id": 220, - "label_id": 66, - "source": "manual" - }, - { - "attributes": [], - "frame": 4, - "group": null, - "id": 221, - "label_id": 66, - "source": "manual" - }, - { - "attributes": [], - "frame": 5, - "group": null, - "id": 222, - "label_id": 66, - "source": "manual" - }, - { - "attributes": [], - "frame": 6, - "group": null, - "id": 223, - "label_id": 66, - "source": "manual" - }, - { - "attributes": [], - "frame": 7, - "group": null, - "id": 224, - "label_id": 66, - "source": "manual" + "type": "rectangle", + "z_order": 0 }, { "attributes": [], - "frame": 8, - "group": null, - "id": 225, - "label_id": 66, - "source": "manual" - }, + "elements": [], + "frame": 1, + "group": 0, + "id": 48, + "label_id": 38, + "occluded": false, + "outside": false, + "points": [ + 414.29522752496996, + 124.8035516093205, + 522.2641509433943, + 286.75693673695605 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + } + ], + "tags": [ { "attributes": [], - "frame": 9, - "group": null, - "id": 226, - "label_id": 64, + "frame": 2, + "group": 0, + "id": 5, + "label_id": 39, "source": "manual" }, { "attributes": [], - "frame": 10, - "group": null, - "id": 227, - "label_id": 66, + "frame": 3, + "group": 0, + "id": 6, + "label_id": 38, "source": "manual" } ], - "tracks": [ + "tracks": [], + "version": 0 + }, + "18": { + "shapes": [ { "attributes": [], - "frame": 4, - "group": null, - "id": 117, - "label_id": 64, - "shapes": [ + "elements": [ { "attributes": [], - "frame": 4, - "id": 479, + "frame": 0, + "group": 0, + "id": 52, + "label_id": 49, "occluded": false, "outside": false, "points": [ - 33.598779899537504, - 47.72613723612956, - 72.98403755948176, - 46.37989500312985, - 30.124643891237035, - 37.121847333246016 + 326.2062528608664, + 107.42983682983868 ], "rotation": 0.0, - "type": "polygon", + "source": "manual", + "type": "points", "z_order": 0 }, { "attributes": [], - "frame": 5, - "id": 480, + "frame": 0, + "group": 0, + "id": 50, + "label_id": 47, "occluded": false, "outside": false, "points": [ - 81.20000000000073, - 43.20000000000073, - 58.70000000000073, - 40.5, - 43.567141027073376, - 49.988979448266036, - 5.709001866043764, - 94.02221983606796, - 50.46748459291666, - 3.8063308724886156 + 136.46993006993034, + 138.72697241590762 ], "rotation": 0.0, - "type": "polygon", + "source": "manual", + "type": "points", "z_order": 0 }, { "attributes": [], - "frame": 6, - "id": 537, + "frame": 0, + "group": 0, + "id": 51, + "label_id": 48, "occluded": false, "outside": false, "points": [ - 87.33181179665189, - 59.56175666774834, - 76.08181179665189, - 58.21175666774798, - 68.51538231018822, - 62.956246391880995, - 42.400000000001455, - 40.600000000000364, - 58.405383111883566, - 28.931516600745454 + 192.9001336620433, + 421.9659673659692 ], "rotation": 0.0, - "type": "polygon", + "source": "manual", + "type": "points", "z_order": 0 }, { "attributes": [], - "frame": 7, - "id": 482, + "frame": 0, + "group": 0, + "id": 53, + "label_id": 50, "occluded": false, - "outside": true, - "points": [ - 93.4636235933026, - 75.92351333549601, - 41.2227627513351, - 34.350331204602604, - 66.3432816308487, - 54.056702329000764 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 8, - "id": 483, - "occluded": true, "outside": false, "points": [ - 5.0376184452136314, - 30.9548987882599, - 43.94144681021965, - 21.128727976625083, - 48.469900205179414, - 40.057149554521985 + 412.07832167832197, + 337.46374412038085 ], "rotation": 0.0, - "type": "polygon", + "source": "manual", + "type": "points", "z_order": 0 - }, + } + ], + "frame": 0, + "group": 0, + "id": 49, + "label_id": 46, + "occluded": false, + "outside": false, + "points": [], + "rotation": 0.0, + "source": "manual", + "type": "skeleton", + "z_order": 0 + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "19": { + "shapes": [ + { + "attributes": [ { - "attributes": [], - "frame": 9, - "id": 484, - "occluded": false, - "outside": false, - "points": [ - 20.627812291540977, - 77.7181596619339, - 32.80000000000109, - 51.0, - 44.70116884212075, - 35.549937052337555, - 21.962376189354472, - 41.332643421359535 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 + "spec_id": 7, + "value": "non-default" } ], - "source": "manual" + "elements": [], + "frame": 0, + "group": 0, + "id": 54, + "label_id": 51, + "occluded": false, + "outside": false, + "points": [ + 244.32906271072352, + 57.53054619015711, + 340.34389750505943, + 191.28914362778414 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 }, { - "attributes": [], - "frame": 1, - "group": null, - "id": 118, - "label_id": 64, - "shapes": [ - { - "attributes": [], - "frame": 1, - "id": 485, - "occluded": false, - "outside": false, - "points": [ - 14.249043106539217, - 92.98784111986599, - 75.59995790885854, - 9.882230433856531, - 74.64478290627322, - 24.288343372649436 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, + "attributes": [ { - "attributes": [], - "frame": 2, - "id": 486, - "occluded": false, - "outside": true, - "points": [ - 20.40678024726185, - 91.07758232974447, - 91.9385543142871, - 55.6421224669939, - 50.400000000001455, - 41.600000000000364 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, + "spec_id": 8, + "value": "black" + } + ], + "elements": [], + "frame": 0, + "group": 0, + "id": 55, + "label_id": 52, + "occluded": false, + "outside": false, + "points": [ + 424.4396493594086, + 86.6660822656795, + 664.8078219824692, + 251.54672960215976 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "20": { + "shapes": [ + { + "attributes": [ { - "attributes": [], - "frame": 3, - "id": 487, - "occluded": false, - "outside": false, - "points": [ - 64.07371618788767, - 51.165624193155125, - 16.507577217122392, - 35.26978776115228, - 3.3675085977394215, - 35.92980168264138, - 48.890071365309076, - 42.285059057475024 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, + "spec_id": 9, + "value": "non-default" + } + ], + "elements": [], + "frame": 0, + "group": 0, + "id": 56, + "label_id": 53, + "occluded": false, + "outside": false, + "points": [ + 35.913636363637124, + 80.58636363636288, + 94.8227272727272, + 170.58636363636288 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [ { - "attributes": [], - "frame": 4, - "id": 488, - "occluded": false, - "outside": false, - "points": [ - 33.48515389987733, - 67.80446095923253, - 59.900000000001455, - 62.0, - 94.97786135262322, - 92.53355214232033 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, + "spec_id": 10, + "value": "black" + } + ], + "elements": [], + "frame": 0, + "group": 0, + "id": 57, + "label_id": 54, + "occluded": false, + "outside": false, + "points": [ + 190.95909090909117, + 100.22272727272684, + 297.7318181818191, + 209.8590909090908 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "21": { + "shapes": [ + { + "attributes": [], + "elements": [ { "attributes": [], - "frame": 5, - "id": 538, + "frame": 6, + "group": 0, + "id": 62, + "label_id": 61, "occluded": false, "outside": false, "points": [ - 68.90000000000146, - 93.90000000000146, - 76.08227824977257, - 71.90224383464374, - 63.03334358050233, - 56.41750205211065, - 32.477766951740705, - 82.24196888442566 + 155.7276059652392, + 30.260833689097126 ], "rotation": 0.0, - "type": "polygon", + "source": "manual", + "type": "points", "z_order": 0 }, { "attributes": [], "frame": 6, - "id": 490, - "occluded": true, + "group": 0, + "id": 60, + "label_id": 59, + "occluded": false, "outside": false, "points": [ - 0.8530259402687079, - 44.132965962684466, - 92.26455649954369, - 81.8044876692893, - 58.600000000000364, - 91.60000000000036, - 31.47038000360226, - 96.67947680962061 + 103.73647295885894, + 51.085564225393554 ], "rotation": 0.0, - "type": "polygon", + "source": "manual", + "type": "points", "z_order": 0 }, { "attributes": [], - "frame": 7, - "id": 491, + "frame": 6, + "group": 0, + "id": 61, + "label_id": 60, "occluded": false, "outside": false, "points": [ - 5.076584858511457, - 53.839003005451126, - 79.49480345687792, - 80.4262644422021, - 97.57877446416717, - 73.8591873826985 + 125.86783527366472, + 101.86367376801435 ], "rotation": 0.0, - "type": "polygon", + "source": "manual", + "type": "points", "z_order": 0 }, { "attributes": [], - "frame": 8, - "id": 492, - "occluded": true, + "frame": 6, + "group": 0, + "id": 63, + "label_id": 62, + "occluded": false, "outside": false, "points": [ - 46.487048928881734, - 74.79726052811286, - 58.89940649861379, - 63.46132083800071, - 79.97978567976963, - 37.370343440303344, - 0.9690229199726064, - 94.25236542125029 - ], - "rotation": 0.0, - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], - "frame": 9, - "id": 513, - "occluded": true, - "outside": true, - "points": [ - 46.487048928881734, - 74.79726052811286, - 58.89940649861379, - 63.46132083800071, - 79.97978567976963, - 37.370343440303344, - 0.9690229199726064, - 94.25236542125029 + 199.28775272671066, + 114.13029555429613 ], "rotation": 0.0, - "type": "polygon", + "source": "manual", + "type": "points", "z_order": 0 } ], - "source": "manual" + "frame": 6, + "group": 0, + "id": 59, + "label_id": 58, + "occluded": false, + "outside": false, + "points": [], + "rotation": 0.0, + "source": "manual", + "type": "skeleton", + "z_order": 0 }, + { + "attributes": [], + "elements": [], + "frame": 6, + "group": 0, + "id": 58, + "label_id": 57, + "occluded": false, + "outside": false, + "points": [ + 42.63157931421483, + 51.228199155397306, + 106.13274329786509, + 138.0929989443539 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + } + ], + "tags": [], + "tracks": [ { "attributes": [], "elements": [ { "attributes": [], - "frame": 2, + "frame": 0, + "group": 0, + "id": 7, + "label_id": 59, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 11, + "occluded": false, + "outside": true, + "points": [ + 230.39103314621025, + 149.98846070356873 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 3, + "id": 12, + "occluded": false, + "outside": false, + "points": [ + 230.39103314621025, + 149.98846070356873 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 6, + "id": 12, + "occluded": false, + "outside": true, + "points": [ + 230.39103314621025, + 149.98846070356873 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 0, "group": 0, - "id": 122, - "label_id": 67, + "id": 8, + "label_id": 60, "shapes": [ { "attributes": [], - "frame": 2, - "id": 498, + "frame": 0, + "id": 13, + "occluded": false, + "outside": false, + "points": [ + 292.80597636674844, + 284.1818841927473 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 6, + "id": 13, "occluded": false, "outside": true, "points": [ - 153.27734375, - 110.2919921875 + 292.80597636674844, + 284.1818841927473 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 9, + "label_id": 61, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 14, + "occluded": false, + "outside": false, + "points": [ + 377.016603158851, + 94.95407858346152 ], "rotation": 0.0, "type": "points", @@ -6804,13 +3773,37 @@ }, { "attributes": [], - "frame": 4, - "id": 499, + "frame": 6, + "id": 14, + "occluded": false, + "outside": true, + "points": [ + 377.016603158851, + 94.95407858346152 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 10, + "label_id": 62, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 15, "occluded": false, "outside": false, "points": [ - 112.478515625, - 36.544921875 + 499.86507710826913, + 316.59939612801213 ], "rotation": 0.0, "type": "points", @@ -6818,13 +3811,71 @@ }, { "attributes": [], - "frame": 5, - "id": 500, + "frame": 6, + "id": 15, + "occluded": false, + "outside": true, + "points": [ + 499.86507710826913, + 316.59939612801213 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + } + ], + "frame": 0, + "group": 0, + "id": 6, + "label_id": 58, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 10, + "occluded": false, + "outside": false, + "points": [], + "rotation": 0.0, + "type": "skeleton", + "z_order": 0 + }, + { + "attributes": [], + "frame": 6, + "id": 10, + "occluded": false, + "outside": true, + "points": [], + "rotation": 0.0, + "type": "skeleton", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "elements": [ + { + "attributes": [], + "frame": 6, + "group": 0, + "id": 12, + "label_id": 59, + "shapes": [ + { + "attributes": [], + "frame": 6, + "id": 17, "occluded": false, - "outside": true, + "outside": false, "points": [ - 112.478515625, - 36.544921875 + 92.95325643333308, + 129.2954675940839 ], "rotation": 0.0, "type": "points", @@ -6835,48 +3886,20 @@ }, { "attributes": [], - "frame": 2, + "frame": 6, "group": 0, - "id": 123, - "label_id": 68, + "id": 13, + "label_id": 60, "shapes": [ { "attributes": [], - "frame": 2, - "id": 501, - "occluded": true, - "outside": true, - "points": [ - 229.1739514298206, - 141.25929642527626 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 4, - "id": 502, + "frame": 6, + "id": 18, "occluded": false, "outside": false, "points": [ - 147.65302061127113, - 49.58072867662486 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 5, - "id": 503, - "occluded": false, - "outside": true, - "points": [ - 147.65302061127113, - 49.58072867662486 + 133.81649280769233, + 195.4883603907146 ], "rotation": 0.0, "type": "points", @@ -6887,48 +3910,44 @@ }, { "attributes": [], - "frame": 2, + "frame": 6, "group": 0, - "id": 124, - "label_id": 69, + "id": 14, + "label_id": 61, "shapes": [ { "attributes": [], - "frame": 2, - "id": 504, - "occluded": false, - "outside": true, - "points": [ - 162.24694184787768, - 160.67163694048395 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 4, - "id": 505, + "frame": 6, + "id": 19, "occluded": false, "outside": false, "points": [ - 116.63550211839356, - 57.75242869223621 + 188.94942364574058, + 102.14894385926891 ], "rotation": 0.0, "type": "points", "z_order": 0 - }, + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 6, + "group": 0, + "id": 15, + "label_id": 62, + "shapes": [ { "attributes": [], - "frame": 5, - "id": 506, + "frame": 6, + "id": 20, "occluded": false, - "outside": true, + "outside": false, "points": [ - 116.63550211839356, - 57.75242869223621 + 269.3786601426267, + 211.47877807640333 ], "rotation": 0.0, "type": "points", @@ -6938,255 +3957,422 @@ "source": "manual" } ], - "frame": 2, + "frame": 6, + "group": 0, + "id": 11, + "label_id": 58, + "shapes": [ + { + "attributes": [], + "frame": 6, + "id": 16, + "occluded": false, + "outside": false, + "points": [], + "rotation": 0.0, + "type": "skeleton", + "z_order": 0 + } + ], + "source": "manual" + } + ], + "version": 0 + }, + "22": { + "shapes": [ + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 601, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 618.23, + 215.13, + 688.33, + 284.53, + 690.25, + 278.64, + 626.1, + 206.7 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 3 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 3, + "id": 582, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 414.14, + 256.39, + 467.14, + 255.08 + ], + "rotation": 0.0, + "source": "manual", + "type": "polyline", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 588, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 673.2, + 222.4, + 693.52, + 240.04, + 647.8, + 287.2, + 620.89, + 266.86 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 1 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 1, + "id": 581, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 109.62, + 93.68, + 150.75, + 154.71 + ], + "rotation": 118.4, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 600, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 502.5, + 319.9, + 635.3, + 319.9, + 651.0, + 374.7, + 499.9, + 375.5 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 3 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 2, + "id": 585, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 37.0, + 25.0, + 49.0, + 32.0, + 23.0, + 59.0, + 19.0, + 61.0, + 17.0, + 63.0, + 15.0, + 65.0, + 14.0, + 66.0, + 12.0, + 68.0, + 11.0, + 69.0, + 10.0, + 70.0, + 9.0, + 70.0, + 9.0, + 70.0, + 9.0, + 70.0, + 9.0, + 71.0, + 8.0, + 71.0, + 8.0, + 72.0, + 7.0, + 72.0, + 7.0, + 72.0, + 7.0, + 72.0, + 7.0, + 72.0, + 7.0, + 73.0, + 6.0, + 73.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 4.0, + 75.0, + 4.0, + 75.0, + 4.0, + 75.0, + 3.0, + 76.0, + 3.0, + 76.0, + 3.0, + 77.0, + 2.0, + 77.0, + 2.0, + 77.0, + 2.0, + 77.0, + 2.0, + 77.0, + 2.0, + 77.0, + 1.0, + 1184.0, + 1.0, + 77.0, + 3.0, + 76.0, + 4.0, + 75.0, + 4.0, + 75.0, + 4.0, + 74.0, + 5.0, + 73.0, + 7.0, + 71.0, + 9.0, + 67.0, + 13.0, + 65.0, + 15.0, + 9.0, + 1.0, + 53.0, + 29.0, + 16.0, + 4.0, + 29.0, + 31.0, + 11.0, + 16.0, + 20.0, + 12.0, + 458.0, + 87.0, + 536.0, + 158.0 + ], + "rotation": 0.0, + "source": "manual", + "type": "mask", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, "group": 0, - "id": 119, - "label_id": 66, - "shapes": [ - { - "attributes": [], - "frame": 2, - "id": 494, - "occluded": false, - "outside": false, - "points": [], - "rotation": 0.0, - "type": "skeleton", - "z_order": 0 - } + "id": 587, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 459.5, + 81.9, + 545.8, + 155.8 ], - "source": "manual" + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 1 }, { "attributes": [], - "frame": 2, - "group": 0, - "id": 120, + "elements": [], + "frame": 0, + "group": 6, + "id": 586, "label_id": 63, - "shapes": [ - { - "attributes": [], - "frame": 2, - "id": 495, - "occluded": false, - "outside": false, - "points": [ - 394.7080078125, - 132.537109375, - 423.4960031454393, - 133.1914787701262, - 458.82718258259774, - 118.79729455498818, - 458.17290148191023, - 152.81991179076977 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 4, - "id": 496, - "occluded": false, - "outside": true, - "points": [ - 394.7080078125, - 132.537109375, - 423.4960031454393, - 133.1914787701262, - 458.82718258259774, - 118.79729455498818, - 458.17290148191023, - 152.81991179076977 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } + "occluded": false, + "outside": false, + "points": [ + 414.49, + 261.0, + 467.48, + 259.69 ], - "source": "manual" + "rotation": 0.0, + "source": "manual", + "type": "polyline", + "z_order": 0 }, { "attributes": [], - "frame": 1, - "group": 0, - "id": 126, + "elements": [], + "frame": 0, + "group": 3, + "id": 580, "label_id": 63, - "shapes": [ - { - "attributes": [], - "frame": 1, - "id": 518, - "occluded": false, - "outside": false, - "points": [ - 155.7216796875, - 95.029296875, - 190.3984375, - 48.248046875 - ], - "rotation": 0.0, - "type": "ellipse", - "z_order": 0 - }, - { - "attributes": [], - "frame": 2, - "id": 519, - "occluded": false, - "outside": true, - "points": [ - 155.7216796875, - 95.029296875, - 190.3984375, - 48.248046875 - ], - "rotation": 0.0, - "type": "ellipse", - "z_order": 0 - } + "occluded": false, + "outside": false, + "points": [ + 439.0, + 238.07, + 442.27, + 279.29 ], - "source": "manual" + "rotation": 0.0, + "source": "manual", + "type": "polyline", + "z_order": 0 }, { "attributes": [], - "elements": [ - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 128, - "label_id": 67, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 521, - "occluded": false, - "outside": false, - "points": [ - 520.1542352225897, - 152.06408387350893 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 1, - "id": 522, - "occluded": false, - "outside": true, - "points": [ - 492.0205078125, - 63.7373046875 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 129, - "label_id": 68, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 523, - "occluded": true, - "outside": false, - "points": [ - 596.0508429024103, - 183.0313881112852 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 1, - "id": 524, - "occluded": true, - "outside": true, - "points": [ - 567.9171154923206, - 94.70460892527626 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 130, - "label_id": 69, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 525, - "occluded": false, - "outside": true, - "points": [ - 529.1238333204674, - 202.44372862649288 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 1, - "id": 526, - "occluded": false, - "outside": true, - "points": [ - 500.9901059103777, - 114.11694944048395 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - } + "elements": [], + "frame": 0, + "group": 4, + "id": 583, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 210.0, + 274.06, + 240.1, + 258.35, + 267.1, + 266.4, + 278.7, + 261.63, + 281.32, + 253.78 + ], + "rotation": 0.0, + "source": "manual", + "type": "polyline", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 5, + "id": 584, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 227.02, + 87.59, + 225.05, + 153.02, + 283.9, + 158.2, + 251.9, + 121.0 ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], "frame": 0, "group": 0, - "id": 127, - "label_id": 66, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 520, - "occluded": false, - "outside": false, - "points": [], - "rotation": 0.0, - "type": "skeleton", - "z_order": 0 - } + "id": 602, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 532.6, + 300.2, + 533.2, + 391.8, + 678.47, + 393.14, + 639.87, + 300.88 ], - "source": "manual" + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 4 } ], + "tags": [], + "tracks": [], "version": 0 } } diff --git a/tests/python/shared/assets/cvat_db/data.json b/tests/python/shared/assets/cvat_db/data.json index cf9b24193469..f27e0ddf014c 100644 --- a/tests/python/shared/assets/cvat_db/data.json +++ b/tests/python/shared/assets/cvat_db/data.json @@ -4568,7 +4568,7 @@ "start_frame": 0, "stop_frame": 10, "type": "specific_frames", - "frames": "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]" + "frames": "[0, 1, 2, 5]" } }, { @@ -4584,7 +4584,7 @@ "status": "annotation", "stage": "annotation", "state": "new", - "type": "normal" + "type": "annotation" } }, { @@ -4600,7 +4600,7 @@ "status": "annotation", "stage": "annotation", "state": "in progress", - "type": "normal" + "type": "annotation" } }, { @@ -4614,7 +4614,7 @@ "status": "annotation", "stage": "annotation", "state": "new", - "type": "normal" + "type": "annotation" } }, { @@ -4628,7 +4628,7 @@ "status": "annotation", "stage": "annotation", "state": "in progress", - "type": "normal" + "type": "annotation" } }, { @@ -4644,7 +4644,7 @@ "status": "annotation", "stage": "annotation", "state": "in progress", - "type": "normal" + "type": "annotation" } }, { @@ -4660,7 +4660,7 @@ "status": "annotation", "stage": "annotation", "state": "in progress", - "type": "normal" + "type": "annotation" } }, { @@ -4674,7 +4674,7 @@ "status": "validation", "stage": "validation", "state": "new", - "type": "normal" + "type": "annotation" } }, { @@ -4688,7 +4688,7 @@ "status": "validation", "stage": "acceptance", "state": "new", - "type": "normal" + "type": "annotation" } }, { @@ -4702,7 +4702,7 @@ "status": "annotation", "stage": "annotation", "state": "in progress", - "type": "normal" + "type": "annotation" } }, { @@ -4718,7 +4718,7 @@ "status": "annotation", "stage": "annotation", "state": "in progress", - "type": "normal" + "type": "annotation" } }, { @@ -4732,7 +4732,7 @@ "status": "annotation", "stage": "annotation", "state": "in progress", - "type": "normal" + "type": "annotation" } }, { @@ -4746,7 +4746,7 @@ "status": "annotation", "stage": "annotation", "state": "in progress", - "type": "normal" + "type": "annotation" } }, { @@ -4760,7 +4760,7 @@ "status": "annotation", "stage": "annotation", "state": "in progress", - "type": "normal" + "type": "annotation" } }, { @@ -4774,7 +4774,7 @@ "status": "annotation", "stage": "annotation", "state": "new", - "type": "normal" + "type": "annotation" } }, { @@ -4788,7 +4788,7 @@ "status": "annotation", "stage": "annotation", "state": "in progress", - "type": "normal" + "type": "annotation" } }, { @@ -4802,7 +4802,7 @@ "status": "annotation", "stage": "annotation", "state": "in progress", - "type": "normal" + "type": "annotation" } }, { @@ -4816,7 +4816,7 @@ "status": "annotation", "stage": "annotation", "state": "in progress", - "type": "normal" + "type": "annotation" } }, { @@ -4830,7 +4830,7 @@ "status": "annotation", "stage": "annotation", "state": "in progress", - "type": "normal" + "type": "annotation" } }, { @@ -4844,7 +4844,7 @@ "status": "annotation", "stage": "annotation", "state": "in progress", - "type": "normal" + "type": "annotation" } }, { @@ -4858,7 +4858,7 @@ "status": "annotation", "stage": "annotation", "state": "in progress", - "type": "normal" + "type": "annotation" } }, { @@ -5833,243 +5833,23 @@ }, { "model": "engine.labeledimage", - "pk": 162, + "pk": 228, "fields": { "job": 28, "label": 63, "frame": 0, - "group": null, - "source": "manual" - } -}, -{ - "model": "engine.labeledimage", - "pk": 163, - "fields": { - "job": 28, - "label": 64, - "frame": 1, - "group": null, - "source": "manual" - } -}, -{ - "model": "engine.labeledimage", - "pk": 164, - "fields": { - "job": 28, - "label": 66, - "frame": 2, - "group": null, - "source": "manual" - } -}, -{ - "model": "engine.labeledimage", - "pk": 165, - "fields": { - "job": 28, - "label": 63, - "frame": 3, - "group": null, - "source": "manual" - } -}, -{ - "model": "engine.labeledimage", - "pk": 166, - "fields": { - "job": 28, - "label": 64, - "frame": 4, - "group": null, - "source": "manual" - } -}, -{ - "model": "engine.labeledimage", - "pk": 167, - "fields": { - "job": 28, - "label": 63, - "frame": 5, - "group": null, - "source": "manual" - } -}, -{ - "model": "engine.labeledimage", - "pk": 168, - "fields": { - "job": 28, - "label": 66, - "frame": 6, - "group": null, - "source": "manual" - } -}, -{ - "model": "engine.labeledimage", - "pk": 169, - "fields": { - "job": 28, - "label": 64, - "frame": 7, - "group": null, - "source": "manual" - } -}, -{ - "model": "engine.labeledimage", - "pk": 170, - "fields": { - "job": 28, - "label": 63, - "frame": 8, - "group": null, - "source": "manual" - } -}, -{ - "model": "engine.labeledimage", - "pk": 171, - "fields": { - "job": 28, - "label": 64, - "frame": 9, - "group": null, + "group": 0, "source": "manual" } }, { "model": "engine.labeledimage", - "pk": 172, + "pk": 229, "fields": { "job": 28, - "label": 64, - "frame": 10, - "group": null, - "source": "manual" - } -}, -{ - "model": "engine.labeledimage", - "pk": 217, - "fields": { - "job": 27, - "label": 66, - "frame": 0, - "group": null, - "source": "manual" - } -}, -{ - "model": "engine.labeledimage", - "pk": 218, - "fields": { - "job": 27, "label": 63, "frame": 1, - "group": null, - "source": "manual" - } -}, -{ - "model": "engine.labeledimage", - "pk": 219, - "fields": { - "job": 27, - "label": 64, - "frame": 2, - "group": null, - "source": "manual" - } -}, -{ - "model": "engine.labeledimage", - "pk": 220, - "fields": { - "job": 27, - "label": 66, - "frame": 3, - "group": null, - "source": "manual" - } -}, -{ - "model": "engine.labeledimage", - "pk": 221, - "fields": { - "job": 27, - "label": 66, - "frame": 4, - "group": null, - "source": "manual" - } -}, -{ - "model": "engine.labeledimage", - "pk": 222, - "fields": { - "job": 27, - "label": 66, - "frame": 5, - "group": null, - "source": "manual" - } -}, -{ - "model": "engine.labeledimage", - "pk": 223, - "fields": { - "job": 27, - "label": 66, - "frame": 6, - "group": null, - "source": "manual" - } -}, -{ - "model": "engine.labeledimage", - "pk": 224, - "fields": { - "job": 27, - "label": 66, - "frame": 7, - "group": null, - "source": "manual" - } -}, -{ - "model": "engine.labeledimage", - "pk": 225, - "fields": { - "job": 27, - "label": 66, - "frame": 8, - "group": null, - "source": "manual" - } -}, -{ - "model": "engine.labeledimage", - "pk": 226, - "fields": { - "job": 27, - "label": 64, - "frame": 9, - "group": null, - "source": "manual" - } -}, -{ - "model": "engine.labeledimage", - "pk": 227, - "fields": { - "job": 27, - "label": 66, - "frame": 10, - "group": null, + "group": 0, "source": "manual" } }, @@ -6759,952 +6539,592 @@ }, { "model": "engine.labeledshape", - "pk": 373, + "pk": 546, "fields": { "job": 28, "label": 64, "frame": 0, - "group": null, + "group": 0, "source": "manual", - "type": "rectangle", + "type": "polygon", "occluded": false, "outside": false, "z_order": 0, - "points": "[128.70000000000073, 202.8154296875, 174.84953117370605, 252.62294394632772]", + "points": "[455.36, 88.24, 463.21, 158.9, 545.65, 155.63, 536.49, 84.97]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 374, + "pk": 547, "fields": { "job": 28, - "label": 66, - "frame": 1, - "group": null, + "label": 63, + "frame": 0, + "group": 0, "source": "manual", - "type": "rectangle", + "type": "polygon", "occluded": false, "outside": false, "z_order": 0, - "points": "[86.7275390625, 94.7099609375, 125.33157515757557, 125.03114821693453]", + "points": "[227.02, 88.24, 223.74, 155.63, 297.02, 156.94, 299.64, 84.97, 261.04, 128.81]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 375, + "pk": 548, "fields": { "job": 28, "label": 63, - "frame": 2, - "group": null, + "frame": 0, + "group": 0, "source": "manual", - "type": "rectangle", + "type": "polyline", "occluded": false, "outside": false, "z_order": 0, - "points": "[227.0458984375, 60.1220703125, 244.4315935987197, 83.61393346786463]", + "points": "[284.59, 248.54, 264.96, 261.63, 242.72, 251.16, 219.16, 270.79]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 376, + "pk": 549, "fields": { "job": 28, "label": 63, - "frame": 3, - "group": null, + "frame": 0, + "group": 0, "source": "manual", - "type": "rectangle", + "type": "polyline", "occluded": false, "outside": false, "z_order": 0, - "points": "[28.151068739966007, 25.472817252545543, 69.01675105692789, 39.17582104149861]", + "points": "[419.37, 260.32, 436.39, 259.01, 448.82, 258.36, 463.87, 258.36]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 377, + "pk": 550, "fields": { "job": 28, - "label": 64, - "frame": 4, - "group": null, + "label": 63, + "frame": 0, + "group": 0, "source": "manual", "type": "rectangle", "occluded": false, "outside": false, "z_order": 0, - "points": "[103.267578125, 67.3115234375, 147.5034786745673, 83.69540199572657]", + "points": "[107.28, 91.51, 152.43, 154.32]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 378, + "pk": 564, "fields": { "job": 28, - "label": 66, - "frame": 5, - "group": null, + "label": 63, + "frame": 0, + "group": 0, "source": "manual", - "type": "rectangle", + "type": "polygon", "occluded": false, "outside": false, "z_order": 0, - "points": "[144.3642578125, 56.4599609375, 177.434020713441, 104.16475617470314]", + "points": "[527.0, 319.6, 530.3, 372.6, 500.83, 375.21, 502.79, 319.6]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 379, + "pk": 565, "fields": { "job": 28, "label": 63, - "frame": 6, - "group": null, + "frame": 0, + "group": 5, "source": "manual", - "type": "rectangle", + "type": "polygon", "occluded": false, "outside": false, "z_order": 0, - "points": "[36.59042217067678, 11.640939649375332, 56.356138094129285, 23.152580340218726]", + "points": "[672.58, 219.1, 692.21, 239.38, 671.27, 257.7, 655.57, 239.38]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 380, + "pk": 566, "fields": { "job": 28, - "label": 64, - "frame": 7, - "group": null, + "label": 63, + "frame": 0, + "group": 5, "source": "manual", - "type": "rectangle", + "type": "mask", "occluded": false, "outside": false, "z_order": 0, - "points": "[144.2236328125, 51.0419921875, 189.92897609796273, 93.98294105026616]", + "points": "[21.0, 5.0, 32.0, 10.0, 30.0, 12.0, 27.0, 15.0, 25.0, 17.0, 23.0, 19.0, 21.0, 21.0, 19.0, 23.0, 17.0, 25.0, 14.0, 28.0, 12.0, 30.0, 10.0, 31.0, 9.0, 33.0, 8.0, 34.0, 6.0, 36.0, 5.0, 36.0, 5.0, 36.0, 4.0, 38.0, 2.0, 39.0, 2.0, 326.0, 2.0, 38.0, 3.0, 38.0, 3.0, 37.0, 5.0, 35.0, 6.0, 34.0, 8.0, 31.0, 10.0, 29.0, 13.0, 26.0, 16.0, 23.0, 19.0, 21.0, 21.0, 18.0, 24.0, 15.0, 27.0, 13.0, 29.0, 9.0, 22.0, 627.0, 244.0, 667.0, 284.0]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 381, + "pk": 573, "fields": { "job": 28, "label": 63, - "frame": 8, - "group": null, + "frame": 1, + "group": 0, "source": "manual", - "type": "rectangle", + "type": "polygon", "occluded": false, "outside": false, "z_order": 0, - "points": "[7.3056640625, 91.791015625, 39.13400037215615, 106.20052093309823]", + "points": "[213.08, 27.58, 242.67, 54.96, 220.48, 73.46, 182.0, 63.1, 165.72, 25.36]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 382, + "pk": 574, "fields": { "job": 28, - "label": 66, - "frame": 9, - "group": null, + "label": 63, + "frame": 1, + "group": 0, "source": "manual", - "type": "rectangle", + "type": "ellipse", "occluded": false, "outside": false, "z_order": 0, - "points": "[80.0048828125, 95.9814453125, 107.91455440878963, 120.22534868413277]", + "points": "[359.22, 57.54, 381.79, 37.93]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 383, + "pk": 575, "fields": { "job": 28, "label": 63, - "frame": 10, - "group": null, + "frame": 1, + "group": 0, "source": "manual", - "type": "rectangle", + "type": "cuboid", "occluded": false, "outside": false, "z_order": 0, - "points": "[40.01964032220059, 28.210223404990387, 63.80243197711431, 77.26899546998015]", + "points": "[503.86, 51.36, 503.86, 95.65, 574.15, 51.26, 574.15, 95.65, 581.18, 46.92, 581.18, 91.11, 510.89, 46.92, 510.89, 91.11]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 384, + "pk": 576, "fields": { "job": 28, "label": 63, - "frame": 0, - "group": null, + "frame": 1, + "group": 0, "source": "manual", - "type": "rectangle", + "type": "mask", "occluded": false, "outside": false, "z_order": 0, - "points": "[21.771535357816685, 38.10394839707063, 46.66121542795621, 61.395778976883435]", + "points": "[45.0, 8.0, 64.0, 5.0, 7.0, 11.0, 61.0, 7.0, 5.0, 14.0, 58.0, 9.0, 3.0, 16.0, 56.0, 11.0, 2.0, 18.0, 54.0, 11.0, 2.0, 20.0, 52.0, 35.0, 50.0, 36.0, 49.0, 38.0, 47.0, 39.0, 45.0, 42.0, 43.0, 43.0, 42.0, 45.0, 40.0, 46.0, 39.0, 47.0, 16.0, 7.0, 15.0, 48.0, 14.0, 9.0, 14.0, 48.0, 13.0, 12.0, 12.0, 13.0, 11.0, 25.0, 11.0, 14.0, 10.0, 13.0, 14.0, 24.0, 10.0, 15.0, 9.0, 13.0, 16.0, 23.0, 8.0, 17.0, 7.0, 14.0, 16.0, 23.0, 8.0, 18.0, 5.0, 15.0, 17.0, 23.0, 6.0, 19.0, 5.0, 15.0, 18.0, 23.0, 4.0, 21.0, 3.0, 16.0, 19.0, 23.0, 3.0, 22.0, 2.0, 16.0, 19.0, 23.0, 3.0, 40.0, 19.0, 24.0, 2.0, 40.0, 20.0, 23.0, 2.0, 41.0, 19.0, 23.0, 2.0, 41.0, 19.0, 11.0, 1.0, 12.0, 1.0, 11.0, 1.0, 29.0, 19.0, 11.0, 1.0, 12.0, 1.0, 11.0, 1.0, 29.0, 19.0, 11.0, 2.0, 23.0, 2.0, 29.0, 18.0, 11.0, 2.0, 23.0, 3.0, 28.0, 18.0, 11.0, 2.0, 24.0, 3.0, 28.0, 17.0, 11.0, 3.0, 24.0, 3.0, 27.0, 16.0, 12.0, 3.0, 25.0, 2.0, 28.0, 15.0, 12.0, 2.0, 12.0, 1.0, 43.0, 14.0, 12.0, 3.0, 12.0, 2.0, 43.0, 13.0, 12.0, 3.0, 12.0, 2.0, 44.0, 11.0, 13.0, 3.0, 12.0, 3.0, 43.0, 11.0, 13.0, 3.0, 11.0, 4.0, 43.0, 10.0, 13.0, 4.0, 11.0, 5.0, 44.0, 8.0, 12.0, 5.0, 11.0, 6.0, 44.0, 7.0, 12.0, 5.0, 11.0, 7.0, 45.0, 4.0, 12.0, 5.0, 12.0, 9.0, 14.0, 3.0, 27.0, 3.0, 12.0, 5.0, 12.0, 11.0, 9.0, 7.0, 41.0, 5.0, 12.0, 12.0, 7.0, 9.0, 40.0, 5.0, 12.0, 28.0, 39.0, 5.0, 12.0, 30.0, 38.0, 5.0, 11.0, 32.0, 37.0, 5.0, 11.0, 33.0, 35.0, 5.0, 12.0, 34.0, 33.0, 6.0, 12.0, 35.0, 32.0, 6.0, 11.0, 37.0, 31.0, 6.0, 11.0, 39.0, 29.0, 5.0, 12.0, 40.0, 28.0, 5.0, 12.0, 42.0, 26.0, 4.0, 13.0, 44.0, 40.0, 46.0, 39.0, 47.0, 38.0, 49.0, 35.0, 57.0, 27.0, 60.0, 24.0, 62.0, 22.0, 65.0, 19.0, 68.0, 15.0, 71.0, 13.0, 77.0, 7.0, 14.0, 23.0, 57.0, 107.0, 124.0]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 385, + "pk": 577, "fields": { "job": 28, - "label": 64, + "label": 63, "frame": 1, - "group": null, + "group": 0, "source": "manual", - "type": "rectangle", + "type": "points", "occluded": false, "outside": false, "z_order": 0, - "points": "[158.3134765625, 35.8056640625, 185.66288233476917, 76.7700964209198]", + "points": "[276.71, 105.27, 301.12, 121.55, 273.75, 137.09, 252.29, 122.29]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 386, + "pk": 578, "fields": { "job": 28, "label": 63, - "frame": 2, - "group": null, + "frame": 1, + "group": 0, "source": "manual", - "type": "rectangle", + "type": "polyline", "occluded": false, "outside": false, "z_order": 0, - "points": "[131.6240234375, 38.3125, 162.9044921875011, 69.3251953125]", + "points": "[393.61, 109.71, 417.29, 139.31, 432.09, 123.03, 461.68, 140.05]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 387, + "pk": 579, "fields": { "job": 28, - "label": 66, - "frame": 3, - "group": null, + "label": 63, + "frame": 1, + "group": 0, "source": "manual", "type": "rectangle", "occluded": false, "outside": false, "z_order": 0, - "points": "[47.626061974587216, 4.742902857127573, 73.6431946747958, 21.98893892047218]", + "points": "[420.99, 33.5, 450.58, 62.36]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 388, + "pk": 580, "fields": { - "job": 28, - "label": 64, - "frame": 4, - "group": null, + "job": 27, + "label": 63, + "frame": 0, + "group": 3, "source": "manual", - "type": "rectangle", + "type": "polyline", "occluded": false, "outside": false, "z_order": 0, - "points": "[39.9552116305673, 7.099389830892683, 81.50568347911505, 22.91276365749088]", + "points": "[439.0, 238.07, 442.27, 279.29]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 389, + "pk": 581, "fields": { - "job": 28, + "job": 27, "label": 63, - "frame": 5, - "group": null, + "frame": 0, + "group": 1, "source": "manual", "type": "rectangle", "occluded": false, "outside": false, "z_order": 0, - "points": "[8.490724513815634, 4.967537330256527, 33.879170648858064, 41.48246323545371]", - "rotation": 0.0, + "points": "[109.62, 93.68, 150.75, 154.71]", + "rotation": 118.4, "parent": null } }, { "model": "engine.labeledshape", - "pk": 390, + "pk": 582, "fields": { - "job": 28, - "label": 64, - "frame": 6, - "group": null, + "job": 27, + "label": 63, + "frame": 0, + "group": 3, "source": "manual", - "type": "rectangle", + "type": "polyline", "occluded": false, "outside": false, "z_order": 0, - "points": "[156.10546875, 34.4326171875, 172.06654141543186, 56.39579921412769]", + "points": "[414.14, 256.39, 467.14, 255.08]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 391, + "pk": 583, "fields": { - "job": 28, - "label": 64, - "frame": 7, - "group": null, + "job": 27, + "label": 63, + "frame": 0, + "group": 4, "source": "manual", - "type": "rectangle", + "type": "polyline", "occluded": false, "outside": false, "z_order": 0, - "points": "[61.78515625, 90.8427734375, 111.29664499716273, 139.54964206284058]", + "points": "[210.0, 274.06, 240.1, 258.35, 267.1, 266.4, 278.7, 261.63, 281.32, 253.78]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 392, + "pk": 584, "fields": { - "job": 28, + "job": 27, "label": 63, - "frame": 8, - "group": null, + "frame": 0, + "group": 5, "source": "manual", - "type": "rectangle", + "type": "polygon", "occluded": false, "outside": false, "z_order": 0, - "points": "[23.44786013239356, 46.61655359142538, 38.03525661308419, 63.989553927693194]", + "points": "[227.02, 87.59, 225.05, 153.02, 283.9, 158.2, 251.9, 121.0]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 393, + "pk": 585, "fields": { - "job": 28, - "label": 66, - "frame": 9, - "group": null, + "job": 27, + "label": 63, + "frame": 0, + "group": 2, "source": "manual", - "type": "rectangle", + "type": "mask", "occluded": false, "outside": false, "z_order": 0, - "points": "[126.8232421875, 45.4033203125, 152.48674811251658, 82.30970791624168]", + "points": "[37.0, 25.0, 49.0, 32.0, 23.0, 59.0, 19.0, 61.0, 17.0, 63.0, 15.0, 65.0, 14.0, 66.0, 12.0, 68.0, 11.0, 69.0, 10.0, 70.0, 9.0, 70.0, 9.0, 70.0, 9.0, 70.0, 9.0, 71.0, 8.0, 71.0, 8.0, 72.0, 7.0, 72.0, 7.0, 72.0, 7.0, 72.0, 7.0, 72.0, 7.0, 73.0, 6.0, 73.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 4.0, 75.0, 4.0, 75.0, 4.0, 75.0, 3.0, 76.0, 3.0, 76.0, 3.0, 77.0, 2.0, 77.0, 2.0, 77.0, 2.0, 77.0, 2.0, 77.0, 2.0, 77.0, 1.0, 1184.0, 1.0, 77.0, 3.0, 76.0, 4.0, 75.0, 4.0, 75.0, 4.0, 74.0, 5.0, 73.0, 7.0, 71.0, 9.0, 67.0, 13.0, 65.0, 15.0, 9.0, 1.0, 53.0, 29.0, 16.0, 4.0, 29.0, 31.0, 11.0, 16.0, 20.0, 12.0, 458.0, 87.0, 536.0, 158.0]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 394, + "pk": 586, "fields": { - "job": 28, - "label": 66, - "frame": 10, - "group": null, + "job": 27, + "label": 63, + "frame": 0, + "group": 6, "source": "manual", - "type": "rectangle", + "type": "polyline", "occluded": false, "outside": false, "z_order": 0, - "points": "[49.33379108044891, 45.87438661706784, 97.62187411104203, 94.75916402425524]", + "points": "[414.49, 261.0, 467.48, 259.69]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 483, + "pk": 587, "fields": { "job": 27, "label": 64, "frame": 0, - "group": null, + "group": 0, "source": "manual", "type": "rectangle", "occluded": false, "outside": false, - "z_order": 0, - "points": "[32.62534262708583, 20.60098154936127, 54.70276973433946, 42.65809723800925]", + "z_order": 1, + "points": "[459.5, 81.9, 545.8, 155.8]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 484, + "pk": 588, "fields": { "job": 27, - "label": 64, - "frame": 1, - "group": null, + "label": 63, + "frame": 0, + "group": 0, "source": "manual", - "type": "rectangle", + "type": "polygon", "occluded": false, "outside": false, - "z_order": 0, - "points": "[16.165617100664203, 9.174072385736443, 34.292834517618566, 49.1800330458904]", + "z_order": 1, + "points": "[673.2, 222.4, 693.52, 240.04, 647.8, 287.2, 620.89, 266.86]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 487, + "pk": 600, "fields": { "job": 27, "label": 63, - "frame": 4, - "group": null, + "frame": 0, + "group": 0, "source": "manual", - "type": "rectangle", + "type": "polygon", "occluded": false, "outside": false, - "z_order": 0, - "points": "[2.813694128785693, 30.20761291442227, 18.7208158667625, 36.10507213674266]", + "z_order": 3, + "points": "[502.5, 319.9, 635.3, 319.9, 651.0, 374.7, 499.9, 375.5]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 488, + "pk": 601, "fields": { "job": 27, - "label": 63, - "frame": 5, - "group": null, + "label": 64, + "frame": 0, + "group": 0, "source": "manual", - "type": "rectangle", + "type": "polygon", "occluded": false, "outside": false, - "z_order": 0, - "points": "[3.508318958955836, 27.7047096625407, 26.54219559642832, 45.905198894448475]", + "z_order": 3, + "points": "[618.23, 215.13, 688.33, 284.53, 690.25, 278.64, 626.1, 206.7]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 489, + "pk": 602, "fields": { "job": 27, "label": 64, - "frame": 6, - "group": null, + "frame": 0, + "group": 0, "source": "manual", - "type": "rectangle", + "type": "polygon", "occluded": false, "outside": false, - "z_order": 0, - "points": "[85.333984375, 107.0869140625, 98.39604761713781, 151.52096441155481]", + "z_order": 4, + "points": "[532.6, 300.2, 533.2, 391.8, 678.47, 393.14, 639.87, 300.88]", "rotation": 0.0, "parent": null } }, { - "model": "engine.labeledshape", - "pk": 490, + "model": "engine.labeledshapeattributeval", + "pk": 1, "fields": { - "job": 27, - "label": 64, - "frame": 7, - "group": null, - "source": "manual", - "type": "rectangle", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[128.3193359375, 38.0576171875, 175.73584267079605, 81.55260474918578]", - "rotation": 0.0, - "parent": null + "spec": 2, + "value": "white", + "shape": 36 } }, { - "model": "engine.labeledshape", - "pk": 491, + "model": "engine.labeledshapeattributeval", + "pk": 2, "fields": { - "job": 27, - "label": 64, - "frame": 8, - "group": null, - "source": "manual", - "type": "rectangle", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[76.052734375, 22.341796875, 106.16692849973879, 29.755809078333186]", - "rotation": 0.0, - "parent": null + "spec": 3, + "value": "val1", + "shape": 39 } }, { - "model": "engine.labeledshape", - "pk": 492, + "model": "engine.labeledshapeattributeval", + "pk": 3, "fields": { - "job": 27, - "label": 64, - "frame": 9, - "group": null, - "source": "manual", - "type": "rectangle", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[40.67588165005975, 44.16433216489991, 72.56184147619327, 85.5429197134128]", - "rotation": 0.0, - "parent": null + "spec": 1, + "value": "mazda", + "shape": 42 } }, { - "model": "engine.labeledshape", - "pk": 493, + "model": "engine.labeledshapeattributeval", + "pk": 4, "fields": { - "job": 27, - "label": 66, - "frame": 10, - "group": null, - "source": "manual", - "type": "rectangle", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[188.908203125, 145.0830078125, 231.70383704737833, 172.4403185467836]", - "rotation": 0.0, - "parent": null + "spec": 7, + "value": "non-default", + "shape": 54 } }, { - "model": "engine.labeledshape", - "pk": 494, + "model": "engine.labeledshapeattributeval", + "pk": 5, "fields": { - "job": 27, - "label": 63, - "frame": 0, - "group": null, - "source": "manual", - "type": "rectangle", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[108.53125, 181.1015625, 142.66406158880454, 222.9093914860714]", - "rotation": 0.0, - "parent": null + "spec": 8, + "value": "black", + "shape": 55 } }, { - "model": "engine.labeledshape", - "pk": 495, + "model": "engine.labeledshapeattributeval", + "pk": 6, "fields": { - "job": 27, - "label": 66, - "frame": 1, - "group": null, - "source": "manual", - "type": "rectangle", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[9.683607669644278, 35.54745578773315, 17.07658182436379, 70.58735623784703]", - "rotation": 0.0, - "parent": null + "spec": 9, + "value": "non-default", + "shape": 56 } }, { - "model": "engine.labeledshape", - "pk": 497, + "model": "engine.labeledshapeattributeval", + "pk": 7, "fields": { - "job": 27, - "label": 63, - "frame": 3, - "group": null, - "source": "manual", - "type": "rectangle", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[258.3095703125, 24.3876953125, 295.5791015625, 65.44992331153844]", - "rotation": 0.0, - "parent": null + "spec": 10, + "value": "black", + "shape": 57 } }, { - "model": "engine.labeledshape", - "pk": 499, + "model": "engine.labeledtrack", + "pk": 1, "fields": { - "job": 27, - "label": 63, - "frame": 5, - "group": null, + "job": 18, + "label": 22, + "frame": 0, + "group": 0, "source": "manual", - "type": "rectangle", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[148.640625, 86.0830078125, 164.76866623852766, 104.7000239921581]", - "rotation": 0.0, "parent": null } }, { - "model": "engine.labeledshape", - "pk": 500, + "model": "engine.labeledtrack", + "pk": 2, "fields": { - "job": 27, - "label": 66, - "frame": 6, - "group": null, + "job": 18, + "label": 23, + "frame": 0, + "group": 0, "source": "manual", - "type": "rectangle", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[156.1435546875, 55.7177734375, 182.5197280725224, 98.7660148448449]", - "rotation": 0.0, - "parent": null + "parent": 1 } }, { - "model": "engine.labeledshape", - "pk": 501, + "model": "engine.labeledtrack", + "pk": 3, "fields": { - "job": 27, - "label": 63, - "frame": 7, - "group": null, + "job": 18, + "label": 24, + "frame": 0, + "group": 0, "source": "manual", - "type": "rectangle", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[57.3134765625, 22.38671875, 95.06168059694028, 48.191588008598046]", - "rotation": 0.0, - "parent": null + "parent": 1 } }, { - "model": "engine.labeledshape", - "pk": 502, - "fields": { - "job": 27, - "label": 64, - "frame": 8, - "group": null, - "source": "manual", - "type": "rectangle", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[97.4140625, 100.0615234375, 118.3121644181665, 118.715176683143]", - "rotation": 0.0, - "parent": null - } -}, -{ - "model": "engine.labeledshape", - "pk": 503, - "fields": { - "job": 27, - "label": 64, - "frame": 9, - "group": null, - "source": "manual", - "type": "rectangle", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[128.20703125, 25.60546875, 147.7165843730727, 61.04310087427075]", - "rotation": 0.0, - "parent": null - } -}, -{ - "model": "engine.labeledshape", - "pk": 504, - "fields": { - "job": 27, - "label": 66, - "frame": 10, - "group": null, - "source": "manual", - "type": "rectangle", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[79.2822265625, 144.9013671875, 103.01838856866925, 190.00175781250073]", - "rotation": 0.0, - "parent": null - } -}, -{ - "model": "engine.labeledshape", - "pk": 505, - "fields": { - "job": 27, - "label": 63, - "frame": 2, - "group": 0, - "source": "manual", - "type": "polyline", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[191.880859375, 54.677734375, 244.87726265758647, 74.96046080888482, 318.8110270353427, 38.32071917035137, 374.4249205938322, 107.67451584329137]", - "rotation": 0.0, - "parent": null - } -}, -{ - "model": "engine.labeledshape", - "pk": 507, - "fields": { - "job": 27, - "label": 63, - "frame": 2, - "group": 0, - "source": "manual", - "type": "cuboid", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[401.25005136424625, 29.26962500657828, 401.25005136424625, 86.07529491000787, 468.64120980117514, 29.176652377986102, 468.64120980117514, 86.13805169507759, 474.5653626349449, 25.052984757909144, 474.5653626349449, 81.74240928838844, 407.47898345618705, 25.156734879141368, 407.47898345618705, 81.69191156110719]", - "rotation": 0.0, - "parent": null - } -}, -{ - "model": "engine.labeledshape", - "pk": 508, - "fields": { - "job": 27, - "label": 63, - "frame": 2, - "group": 0, - "source": "manual", - "type": "mask", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[22.0, 5.0, 143.0, 8.0, 140.0, 10.0, 138.0, 12.0, 137.0, 13.0, 30.0, 5.0, 101.0, 13.0, 29.0, 7.0, 100.0, 14.0, 27.0, 9.0, 99.0, 15.0, 25.0, 11.0, 99.0, 14.0, 25.0, 11.0, 100.0, 14.0, 24.0, 12.0, 99.0, 15.0, 23.0, 12.0, 100.0, 15.0, 22.0, 13.0, 99.0, 16.0, 22.0, 12.0, 100.0, 16.0, 21.0, 13.0, 100.0, 15.0, 22.0, 12.0, 101.0, 15.0, 21.0, 13.0, 100.0, 16.0, 21.0, 13.0, 100.0, 16.0, 20.0, 13.0, 101.0, 15.0, 21.0, 12.0, 102.0, 15.0, 20.0, 13.0, 102.0, 15.0, 20.0, 12.0, 103.0, 14.0, 21.0, 11.0, 103.0, 15.0, 20.0, 11.0, 104.0, 15.0, 19.0, 12.0, 103.0, 16.0, 18.0, 12.0, 104.0, 16.0, 18.0, 12.0, 104.0, 16.0, 17.0, 13.0, 103.0, 16.0, 17.0, 13.0, 104.0, 16.0, 17.0, 12.0, 105.0, 16.0, 16.0, 13.0, 78.0, 9.0, 17.0, 17.0, 15.0, 14.0, 75.0, 15.0, 14.0, 17.0, 15.0, 13.0, 74.0, 18.0, 13.0, 16.0, 15.0, 13.0, 73.0, 23.0, 9.0, 17.0, 16.0, 11.0, 72.0, 26.0, 8.0, 17.0, 15.0, 11.0, 70.0, 29.0, 8.0, 17.0, 14.0, 12.0, 68.0, 32.0, 6.0, 18.0, 14.0, 11.0, 67.0, 35.0, 5.0, 18.0, 13.0, 11.0, 67.0, 36.0, 5.0, 18.0, 12.0, 12.0, 66.0, 38.0, 3.0, 19.0, 12.0, 11.0, 66.0, 39.0, 3.0, 19.0, 11.0, 11.0, 66.0, 12.0, 4.0, 25.0, 1.0, 20.0, 10.0, 11.0, 66.0, 11.0, 9.0, 22.0, 1.0, 19.0, 10.0, 12.0, 65.0, 12.0, 11.0, 41.0, 8.0, 12.0, 65.0, 12.0, 13.0, 40.0, 8.0, 11.0, 65.0, 12.0, 15.0, 39.0, 7.0, 11.0, 65.0, 12.0, 16.0, 39.0, 6.0, 11.0, 66.0, 12.0, 17.0, 38.0, 5.0, 12.0, 65.0, 12.0, 18.0, 54.0, 66.0, 11.0, 20.0, 52.0, 66.0, 12.0, 20.0, 51.0, 66.0, 13.0, 20.0, 50.0, 67.0, 12.0, 21.0, 48.0, 69.0, 12.0, 22.0, 46.0, 69.0, 13.0, 22.0, 44.0, 70.0, 13.0, 24.0, 42.0, 71.0, 13.0, 25.0, 39.0, 72.0, 14.0, 25.0, 37.0, 36.0, 6.0, 32.0, 13.0, 26.0, 20.0, 1.0, 14.0, 36.0, 10.0, 30.0, 13.0, 26.0, 20.0, 4.0, 9.0, 36.0, 13.0, 28.0, 14.0, 27.0, 18.0, 5.0, 7.0, 36.0, 15.0, 28.0, 14.0, 27.0, 17.0, 48.0, 20.0, 24.0, 15.0, 26.0, 16.0, 48.0, 22.0, 22.0, 16.0, 27.0, 14.0, 48.0, 25.0, 20.0, 16.0, 27.0, 13.0, 48.0, 26.0, 20.0, 16.0, 28.0, 10.0, 50.0, 27.0, 19.0, 16.0, 28.0, 8.0, 52.0, 27.0, 19.0, 24.0, 21.0, 5.0, 54.0, 27.0, 19.0, 25.0, 82.0, 24.0, 19.0, 25.0, 83.0, 23.0, 19.0, 25.0, 83.0, 23.0, 19.0, 25.0, 86.0, 19.0, 20.0, 24.0, 89.0, 17.0, 20.0, 24.0, 90.0, 16.0, 20.0, 23.0, 91.0, 15.0, 20.0, 23.0, 94.0, 12.0, 20.0, 23.0, 94.0, 12.0, 20.0, 23.0, 94.0, 12.0, 20.0, 23.0, 93.0, 13.0, 21.0, 22.0, 92.0, 13.0, 22.0, 21.0, 92.0, 14.0, 23.0, 19.0, 93.0, 13.0, 25.0, 19.0, 91.0, 14.0, 25.0, 21.0, 88.0, 15.0, 26.0, 23.0, 83.0, 16.0, 28.0, 24.0, 80.0, 16.0, 30.0, 26.0, 75.0, 17.0, 33.0, 26.0, 72.0, 17.0, 36.0, 27.0, 68.0, 18.0, 37.0, 28.0, 64.0, 19.0, 41.0, 28.0, 59.0, 20.0, 44.0, 29.0, 54.0, 21.0, 47.0, 30.0, 47.0, 24.0, 50.0, 31.0, 40.0, 27.0, 52.0, 34.0, 32.0, 30.0, 56.0, 39.0, 19.0, 32.0, 62.0, 45.0, 5.0, 35.0, 65.0, 83.0, 70.0, 78.0, 74.0, 74.0, 77.0, 71.0, 81.0, 64.0, 88.0, 59.0, 91.0, 52.0, 103.0, 42.0, 110.0, 37.0, 123.0, 20.0, 135.0, 5.0, 3.0, 5.0, 46.0, 634.0, 38.0, 782.0, 145.0]", - "rotation": 0.0, - "parent": null - } -}, -{ - "model": "engine.labeledshape", - "pk": 509, - "fields": { - "job": 28, - "label": 66, - "frame": 0, - "group": 0, - "source": "manual", - "type": "skeleton", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[]", - "rotation": 0.0, - "parent": null - } -}, -{ - "model": "engine.labeledshape", - "pk": 510, - "fields": { - "job": 28, - "label": 67, - "frame": 0, - "group": 0, - "source": "manual", - "type": "points", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[325.81183481270637, 169.3732236381784]", - "rotation": 0.0, - "parent": 509 - } -}, -{ - "model": "engine.labeledshape", - "pk": 511, - "fields": { - "job": 28, - "label": 68, - "frame": 0, - "group": 0, - "source": "manual", - "type": "points", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[405.6341290966555, 216.82961195061355]", - "rotation": 0.0, - "parent": 509 - } -}, -{ - "model": "engine.labeledshape", - "pk": 512, - "fields": { - "job": 28, - "label": 69, - "frame": 0, - "group": 0, - "source": "manual", - "type": "points", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[335.2453776397853, 246.57839351937508]", - "rotation": 0.0, - "parent": 509 - } -}, -{ - "model": "engine.labeledshapeattributeval", - "pk": 1, - "fields": { - "spec": 2, - "value": "white", - "shape": 36 - } -}, -{ - "model": "engine.labeledshapeattributeval", - "pk": 2, - "fields": { - "spec": 3, - "value": "val1", - "shape": 39 - } -}, -{ - "model": "engine.labeledshapeattributeval", - "pk": 3, - "fields": { - "spec": 1, - "value": "mazda", - "shape": 42 - } -}, -{ - "model": "engine.labeledshapeattributeval", - "pk": 4, - "fields": { - "spec": 7, - "value": "non-default", - "shape": 54 - } -}, -{ - "model": "engine.labeledshapeattributeval", - "pk": 5, - "fields": { - "spec": 8, - "value": "black", - "shape": 55 - } -}, -{ - "model": "engine.labeledshapeattributeval", - "pk": 6, - "fields": { - "spec": 9, - "value": "non-default", - "shape": 56 - } -}, -{ - "model": "engine.labeledshapeattributeval", - "pk": 7, - "fields": { - "spec": 10, - "value": "black", - "shape": 57 - } -}, -{ - "model": "engine.labeledtrack", - "pk": 1, - "fields": { - "job": 18, - "label": 22, - "frame": 0, - "group": 0, - "source": "manual", - "parent": null - } -}, -{ - "model": "engine.labeledtrack", - "pk": 2, - "fields": { - "job": 18, - "label": 23, - "frame": 0, - "group": 0, - "source": "manual", - "parent": 1 - } -}, -{ - "model": "engine.labeledtrack", - "pk": 3, - "fields": { - "job": 18, - "label": 24, - "frame": 0, - "group": 0, - "source": "manual", - "parent": 1 - } -}, -{ - "model": "engine.labeledtrack", - "pk": 4, + "model": "engine.labeledtrack", + "pk": 4, "fields": { "job": 18, "label": 25, @@ -7847,176 +7267,8 @@ } }, { - "model": "engine.labeledtrack", - "pk": 107, - "fields": { - "job": 28, - "label": 64, - "frame": 1, - "group": null, - "source": "manual", - "parent": null - } -}, -{ - "model": "engine.labeledtrack", - "pk": 108, - "fields": { - "job": 28, - "label": 66, - "frame": 5, - "group": null, - "source": "manual", - "parent": null - } -}, -{ - "model": "engine.labeledtrack", - "pk": 117, - "fields": { - "job": 27, - "label": 64, - "frame": 4, - "group": null, - "source": "manual", - "parent": null - } -}, -{ - "model": "engine.labeledtrack", - "pk": 118, - "fields": { - "job": 27, - "label": 64, - "frame": 1, - "group": null, - "source": "manual", - "parent": null - } -}, -{ - "model": "engine.labeledtrack", - "pk": 119, - "fields": { - "job": 27, - "label": 66, - "frame": 2, - "group": 0, - "source": "manual", - "parent": null - } -}, -{ - "model": "engine.labeledtrack", - "pk": 120, - "fields": { - "job": 27, - "label": 63, - "frame": 2, - "group": 0, - "source": "manual", - "parent": null - } -}, -{ - "model": "engine.labeledtrack", - "pk": 122, - "fields": { - "job": 27, - "label": 67, - "frame": 2, - "group": 0, - "source": "manual", - "parent": 119 - } -}, -{ - "model": "engine.labeledtrack", - "pk": 123, - "fields": { - "job": 27, - "label": 68, - "frame": 2, - "group": 0, - "source": "manual", - "parent": 119 - } -}, -{ - "model": "engine.labeledtrack", - "pk": 124, - "fields": { - "job": 27, - "label": 69, - "frame": 2, - "group": 0, - "source": "manual", - "parent": 119 - } -}, -{ - "model": "engine.labeledtrack", - "pk": 126, - "fields": { - "job": 27, - "label": 63, - "frame": 1, - "group": 0, - "source": "manual", - "parent": null - } -}, -{ - "model": "engine.labeledtrack", - "pk": 127, - "fields": { - "job": 27, - "label": 66, - "frame": 0, - "group": 0, - "source": "manual", - "parent": null - } -}, -{ - "model": "engine.labeledtrack", - "pk": 128, - "fields": { - "job": 27, - "label": 67, - "frame": 0, - "group": 0, - "source": "manual", - "parent": 127 - } -}, -{ - "model": "engine.labeledtrack", - "pk": 129, - "fields": { - "job": 27, - "label": 68, - "frame": 0, - "group": 0, - "source": "manual", - "parent": 127 - } -}, -{ - "model": "engine.labeledtrack", - "pk": 130, - "fields": { - "job": 27, - "label": 69, - "frame": 0, - "group": 0, - "source": "manual", - "parent": 127 - } -}, -{ - "model": "engine.labeledtrackattributeval", - "pk": 3, + "model": "engine.labeledtrackattributeval", + "pk": 3, "fields": { "spec": 2, "value": "white", @@ -8313,1510 +7565,1549 @@ } }, { - "model": "engine.trackedshape", - "pk": 428, + "model": "engine.profile", + "pk": 1, "fields": { - "type": "polygon", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[89.16625482373604, 10.760448971018688, 82.08266620234568, 57.27050026015028, 31.61462894960768, 91.61837979864868, 61.318808891867995, 5.2591005982589145]", - "rotation": 0.0, - "track": 107, - "frame": 1 + "user": [ + "admin1" + ], + "rating": 0.0 } }, { - "model": "engine.trackedshape", - "pk": 429, + "model": "engine.profile", + "pk": 2, "fields": { - "type": "polygon", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[86.12227563556914, 54.78519030863848, 5.965437872325186, 44.415919636543535, 21.508219614650393, 77.71533185704882, 56.56030517796948, 80.49138661336151, 92.11320758706701, 36.23616592947234]", - "rotation": 0.0, - "track": 107, - "frame": 2 + "user": [ + "user1" + ], + "rating": 0.0 } }, { - "model": "engine.trackedshape", - "pk": 430, + "model": "engine.profile", + "pk": 3, "fields": { - "type": "polygon", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[43.844133439202515, 52.766337685192056, 36.06107102732473, 41.86726929430576, 10.476592440122644, 76.08071328170251, 20.030324015224398, 97.33574207745058]", - "rotation": 0.0, - "track": 107, - "frame": 3 + "user": [ + "user2" + ], + "rating": 0.0 } }, { - "model": "engine.trackedshape", - "pk": 431, + "model": "engine.profile", + "pk": 4, "fields": { - "type": "polygon", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[46.323639273210574, 89.27799405888254, 11.543344424530005, 28.859146282380607, 53.30000000000109, 47.30000000000109]", - "rotation": 0.0, - "track": 107, - "frame": 4 + "user": [ + "user3" + ], + "rating": 0.0 } }, { - "model": "engine.trackedshape", - "pk": 432, + "model": "engine.profile", + "pk": 5, "fields": { - "type": "polygon", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[63.75444524182796, 83.38994368964245, 89.86483302169569, 76.72264053847121, 65.79043486042822, 23.786207640718814, 77.73570584702074, 67.1092531599958]", - "rotation": 0.0, - "track": 107, - "frame": 5 + "user": [ + "user4" + ], + "rating": 0.0 } }, { - "model": "engine.trackedshape", - "pk": 433, + "model": "engine.profile", + "pk": 6, "fields": { - "type": "polygon", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[42.08516199103318, 29.942896326510805, 40.39823943435537, 49.37947128117274, 98.88115268683107, 79.11696631188182]", - "rotation": 0.0, - "track": 107, - "frame": 6 + "user": [ + "worker1" + ], + "rating": 0.0 } }, { - "model": "engine.trackedshape", - "pk": 434, + "model": "engine.profile", + "pk": 7, "fields": { - "type": "polygon", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[81.78520462265138, 70.56947279185766, 73.77379910176585, 76.65691380291577, 78.13598264354707, 51.951762879932886]", - "rotation": 0.0, - "track": 107, - "frame": 7 + "user": [ + "worker2" + ], + "rating": 0.0 } }, { - "model": "engine.trackedshape", - "pk": 435, + "model": "engine.profile", + "pk": 8, "fields": { - "type": "polygon", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[51.12165640102631, 99.11084197328293, 63.84797882103561, 45.89089381970446, 33.434440460259694, 19.765429813835755]", - "rotation": 0.0, - "track": 107, - "frame": 8 + "user": [ + "worker3" + ], + "rating": 0.0 } }, { - "model": "engine.trackedshape", - "pk": 436, + "model": "engine.profile", + "pk": 9, "fields": { - "type": "polygon", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[60.894066827124334, 49.40430066146291, 10.175918797036502, 22.693004664028194, 20.521051761917988, 40.90671260779527, 57.81882237238278, 93.4250359257494]", - "rotation": 0.0, - "track": 107, - "frame": 9 + "user": [ + "worker4" + ], + "rating": 0.0 } }, { - "model": "engine.trackedshape", - "pk": 437, + "model": "engine.profile", + "pk": 10, "fields": { - "type": "polygon", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[56.70821030480572, 38.20037623588232, 63.18175989344238, 41.73070749428784, 2.4862395912330637, 63.95431832704548]", - "rotation": 0.0, - "track": 108, - "frame": 5 + "user": [ + "business1" + ], + "rating": 0.0 } }, { - "model": "engine.trackedshape", - "pk": 438, + "model": "engine.profile", + "pk": 11, "fields": { - "type": "polygon", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[12.005563467360844, 51.1765167339654, 40.80000000000109, 97.10000000000036, 86.56240502418223, 88.1565954117068]", - "rotation": 0.0, - "track": 108, - "frame": 6 + "user": [ + "business2" + ], + "rating": 0.0 } }, { - "model": "engine.trackedshape", - "pk": 439, + "model": "engine.profile", + "pk": 12, "fields": { - "type": "polygon", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[27.497534312806238, 52.64215932836305, 44.80000000000109, 9.200000000000728, 79.60000000000036, 22.700000000000728, 71.20000000000073, 50.100000000000364, 12.032866200086573, 59.74691350332432]", - "rotation": 0.0, - "track": 108, - "frame": 7 + "user": [ + "business3" + ], + "rating": 0.0 } }, { - "model": "engine.trackedshape", - "pk": 440, + "model": "engine.profile", + "pk": 13, "fields": { - "type": "polygon", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[45.66798986781396, 4.961587842361041, 121.20000000000073, 49.80000000000109, 81.60000000000036, 51.600000000000364]", - "rotation": 0.0, - "track": 108, - "frame": 8 + "user": [ + "business4" + ], + "rating": 0.0 } }, { - "model": "engine.trackedshape", - "pk": 441, + "model": "engine.profile", + "pk": 14, "fields": { - "type": "polygon", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[69.62777852757223, 25.046431964099458, 59.00496511489233, 12.15728994349642, 10.618682601907793, 27.135941155386135, 24.750684503833043, 72.1563422338744]", - "rotation": 0.0, - "track": 108, - "frame": 9 + "user": [ + "dummy1" + ], + "rating": 0.0 } }, { - "model": "engine.trackedshape", - "pk": 479, + "model": "engine.profile", + "pk": 15, "fields": { - "type": "polygon", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[33.598779899537504, 47.72613723612956, 72.98403755948176, 46.37989500312985, 30.124643891237035, 37.121847333246016]", - "rotation": 0.0, - "track": 117, - "frame": 4 + "user": [ + "dummy2" + ], + "rating": 0.0 } }, { - "model": "engine.trackedshape", - "pk": 480, + "model": "engine.profile", + "pk": 16, "fields": { - "type": "polygon", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[81.20000000000073, 43.20000000000073, 58.70000000000073, 40.5, 43.567141027073376, 49.988979448266036, 5.709001866043764, 94.02221983606796, 50.46748459291666, 3.8063308724886156]", - "rotation": 0.0, - "track": 117, - "frame": 5 + "user": [ + "dummy3" + ], + "rating": 0.0 } }, { - "model": "engine.trackedshape", - "pk": 482, + "model": "engine.profile", + "pk": 17, "fields": { - "type": "polygon", - "occluded": false, - "outside": true, - "z_order": 0, - "points": "[93.4636235933026, 75.92351333549601, 41.2227627513351, 34.350331204602604, 66.3432816308487, 54.056702329000764]", - "rotation": 0.0, - "track": 117, - "frame": 7 + "user": [ + "dummy4" + ], + "rating": 0.0 } }, { - "model": "engine.trackedshape", - "pk": 483, + "model": "engine.profile", + "pk": 18, "fields": { - "type": "polygon", - "occluded": true, - "outside": false, - "z_order": 0, - "points": "[5.0376184452136314, 30.9548987882599, 43.94144681021965, 21.128727976625083, 48.469900205179414, 40.057149554521985]", - "rotation": 0.0, - "track": 117, - "frame": 8 + "user": [ + "admin2" + ], + "rating": 0.0 } }, { - "model": "engine.trackedshape", - "pk": 484, + "model": "engine.profile", + "pk": 19, "fields": { - "type": "polygon", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[20.627812291540977, 77.7181596619339, 32.80000000000109, 51.0, 44.70116884212075, 35.549937052337555, 21.962376189354472, 41.332643421359535]", - "rotation": 0.0, - "track": 117, - "frame": 9 + "user": [ + "user5" + ], + "rating": 0.0 } }, { - "model": "engine.trackedshape", - "pk": 485, + "model": "engine.profile", + "pk": 20, "fields": { - "type": "polygon", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[14.249043106539217, 92.98784111986599, 75.59995790885854, 9.882230433856531, 74.64478290627322, 24.288343372649436]", - "rotation": 0.0, - "track": 118, - "frame": 1 + "user": [ + "user6" + ], + "rating": 0.0 } }, { - "model": "engine.trackedshape", - "pk": 486, + "model": "engine.profile", + "pk": 21, "fields": { - "type": "polygon", - "occluded": false, - "outside": true, - "z_order": 0, - "points": "[20.40678024726185, 91.07758232974447, 91.9385543142871, 55.6421224669939, 50.400000000001455, 41.600000000000364]", - "rotation": 0.0, - "track": 118, - "frame": 2 + "user": [ + "lonely_user" + ], + "rating": 0.0 } }, { - "model": "engine.trackedshape", - "pk": 487, + "model": "engine.issue", + "pk": 1, "fields": { - "type": "polygon", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[64.07371618788767, 51.165624193155125, 16.507577217122392, 35.26978776115228, 3.3675085977394215, 35.92980168264138, 48.890071365309076, 42.285059057475024]", - "rotation": 0.0, - "track": 118, - "frame": 3 + "frame": 0, + "position": "[244.58581235698148, 319.63386727689067, 326.9656750572103, 192.76887871853796, 543.6247139588122, 175.4691075514893, 835.2494279176244, 360.0000000000018, 609.5286041189956, 586.544622425632, 364.0361328125, 528.87890625, 244.58581235698148, 319.63386727689067]", + "job": 7, + "owner": [ + "user1" + ], + "assignee": null, + "created_date": "2022-03-16T11:04:39.444Z", + "updated_date": null, + "resolved": true } }, { - "model": "engine.trackedshape", - "pk": 488, + "model": "engine.issue", + "pk": 2, "fields": { - "type": "polygon", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[33.48515389987733, 67.80446095923253, 59.900000000001455, 62.0, 94.97786135262322, 92.53355214232033]", - "rotation": 0.0, - "track": 118, - "frame": 4 + "frame": 0, + "position": "[98.48046875, 696.72265625, 326.1220703125, 841.5859375]", + "job": 9, + "owner": [ + "business2" + ], + "assignee": null, + "created_date": "2022-03-16T11:07:22.170Z", + "updated_date": null, + "resolved": false } }, { - "model": "engine.trackedshape", - "pk": 490, + "model": "engine.issue", + "pk": 3, "fields": { - "type": "polygon", - "occluded": true, - "outside": false, - "z_order": 0, - "points": "[0.8530259402687079, 44.132965962684466, 92.26455649954369, 81.8044876692893, 58.600000000000364, 91.60000000000036, 31.47038000360226, 96.67947680962061]", - "rotation": 0.0, - "track": 118, - "frame": 6 + "frame": 5, + "position": "[108.1845703125, 235.0, 720.0087890625, 703.3505859375]", + "job": 16, + "owner": [ + "business2" + ], + "assignee": null, + "created_date": "2022-03-16T11:08:18.367Z", + "updated_date": null, + "resolved": false } }, { - "model": "engine.trackedshape", - "pk": 491, + "model": "engine.issue", + "pk": 4, "fields": { - "type": "polygon", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[5.076584858511457, 53.839003005451126, 79.49480345687792, 80.4262644422021, 97.57877446416717, 73.8591873826985]", - "rotation": 0.0, - "track": 118, - "frame": 7 + "frame": 5, + "position": "[295.36328125, 243.6044921875, 932.23046875, 561.4921875]", + "job": 10, + "owner": [ + "user1" + ], + "assignee": [ + "user1" + ], + "created_date": "2022-03-16T12:40:00.764Z", + "updated_date": null, + "resolved": false } }, { - "model": "engine.trackedshape", - "pk": 492, + "model": "engine.issue", + "pk": 5, "fields": { - "type": "polygon", - "occluded": true, - "outside": false, - "z_order": 0, - "points": "[46.487048928881734, 74.79726052811286, 58.89940649861379, 63.46132083800071, 79.97978567976963, 37.370343440303344, 0.9690229199726064, 94.25236542125029]", - "rotation": 0.0, - "track": 118, - "frame": 8 + "frame": 0, + "position": "[65.6189987163034, 100.96585365853753, 142.12734274711147, 362.6243902439037]", + "job": 11, + "owner": [ + "user6" + ], + "assignee": null, + "created_date": "2022-03-16T12:49:29.369Z", + "updated_date": null, + "resolved": false } }, { - "model": "engine.trackedshape", - "pk": 494, + "model": "engine.comment", + "pk": 1, "fields": { - "type": "skeleton", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[]", - "rotation": 0.0, - "track": 119, - "frame": 2 + "issue": 1, + "owner": [ + "user1" + ], + "message": "Why are we still here?", + "created_date": "2022-03-16T11:04:39.447Z", + "updated_date": "2022-03-16T11:04:39.447Z" } }, { - "model": "engine.trackedshape", - "pk": 495, + "model": "engine.comment", + "pk": 2, "fields": { - "type": "points", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[394.7080078125, 132.537109375, 423.4960031454393, 133.1914787701262, 458.82718258259774, 118.79729455498818, 458.17290148191023, 152.81991179076977]", - "rotation": 0.0, - "track": 120, - "frame": 2 - } -}, -{ - "model": "engine.trackedshape", - "pk": 496, - "fields": { - "type": "points", - "occluded": false, - "outside": true, - "z_order": 0, - "points": "[394.7080078125, 132.537109375, 423.4960031454393, 133.1914787701262, 458.82718258259774, 118.79729455498818, 458.17290148191023, 152.81991179076977]", - "rotation": 0.0, - "track": 120, - "frame": 4 - } -}, -{ - "model": "engine.trackedshape", - "pk": 498, - "fields": { - "type": "points", - "occluded": false, - "outside": true, - "z_order": 0, - "points": "[153.27734375, 110.2919921875]", - "rotation": 0.0, - "track": 122, - "frame": 2 - } -}, -{ - "model": "engine.trackedshape", - "pk": 499, - "fields": { - "type": "points", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[112.478515625, 36.544921875]", - "rotation": 0.0, - "track": 122, - "frame": 4 - } -}, -{ - "model": "engine.trackedshape", - "pk": 500, - "fields": { - "type": "points", - "occluded": false, - "outside": true, - "z_order": 0, - "points": "[112.478515625, 36.544921875]", - "rotation": 0.0, - "track": 122, - "frame": 5 - } -}, -{ - "model": "engine.trackedshape", - "pk": 501, - "fields": { - "type": "points", - "occluded": true, - "outside": true, - "z_order": 0, - "points": "[229.1739514298206, 141.25929642527626]", - "rotation": 0.0, - "track": 123, - "frame": 2 - } -}, -{ - "model": "engine.trackedshape", - "pk": 502, - "fields": { - "type": "points", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[147.65302061127113, 49.58072867662486]", - "rotation": 0.0, - "track": 123, - "frame": 4 - } -}, -{ - "model": "engine.trackedshape", - "pk": 503, - "fields": { - "type": "points", - "occluded": false, - "outside": true, - "z_order": 0, - "points": "[147.65302061127113, 49.58072867662486]", - "rotation": 0.0, - "track": 123, - "frame": 5 - } -}, -{ - "model": "engine.trackedshape", - "pk": 504, - "fields": { - "type": "points", - "occluded": false, - "outside": true, - "z_order": 0, - "points": "[162.24694184787768, 160.67163694048395]", - "rotation": 0.0, - "track": 124, - "frame": 2 - } -}, -{ - "model": "engine.trackedshape", - "pk": 505, - "fields": { - "type": "points", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[116.63550211839356, 57.75242869223621]", - "rotation": 0.0, - "track": 124, - "frame": 4 - } -}, -{ - "model": "engine.trackedshape", - "pk": 506, - "fields": { - "type": "points", - "occluded": false, - "outside": true, - "z_order": 0, - "points": "[116.63550211839356, 57.75242869223621]", - "rotation": 0.0, - "track": 124, - "frame": 5 - } -}, -{ - "model": "engine.trackedshape", - "pk": 513, - "fields": { - "type": "polygon", - "occluded": true, - "outside": true, - "z_order": 0, - "points": "[46.487048928881734, 74.79726052811286, 58.89940649861379, 63.46132083800071, 79.97978567976963, 37.370343440303344, 0.9690229199726064, 94.25236542125029]", - "rotation": 0.0, - "track": 118, - "frame": 9 - } -}, -{ - "model": "engine.trackedshape", - "pk": 518, - "fields": { - "type": "ellipse", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[155.7216796875, 95.029296875, 190.3984375, 48.248046875]", - "rotation": 0.0, - "track": 126, - "frame": 1 + "issue": 1, + "owner": [ + "user1" + ], + "message": "Just to suffer?", + "created_date": "2022-03-16T11:04:49.821Z", + "updated_date": "2022-03-16T11:04:49.821Z" } }, { - "model": "engine.trackedshape", - "pk": 519, + "model": "engine.comment", + "pk": 3, "fields": { - "type": "ellipse", - "occluded": false, - "outside": true, - "z_order": 0, - "points": "[155.7216796875, 95.029296875, 190.3984375, 48.248046875]", - "rotation": 0.0, - "track": 126, - "frame": 2 + "issue": 2, + "owner": [ + "business2" + ], + "message": "Something should be here", + "created_date": "2022-03-16T11:07:22.173Z", + "updated_date": "2022-03-16T11:07:22.173Z" } }, { - "model": "engine.trackedshape", - "pk": 520, + "model": "engine.comment", + "pk": 4, "fields": { - "type": "skeleton", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[]", - "rotation": 0.0, - "track": 127, - "frame": 0 + "issue": 3, + "owner": [ + "business2" + ], + "message": "Another one issue", + "created_date": "2022-03-16T11:08:18.370Z", + "updated_date": "2022-03-16T11:08:18.370Z" } }, { - "model": "engine.trackedshape", - "pk": 521, + "model": "engine.comment", + "pk": 5, "fields": { - "type": "points", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[520.1542352225897, 152.06408387350893]", - "rotation": 0.0, - "track": 128, - "frame": 0 + "issue": 4, + "owner": [ + "user1" + ], + "message": "Issue with empty frame", + "created_date": "2022-03-16T12:40:00.767Z", + "updated_date": "2022-03-16T12:40:00.767Z" } }, { - "model": "engine.trackedshape", - "pk": 522, + "model": "engine.comment", + "pk": 6, "fields": { - "type": "points", - "occluded": false, - "outside": true, - "z_order": 0, - "points": "[492.0205078125, 63.7373046875]", - "rotation": 0.0, - "track": 128, - "frame": 1 + "issue": 5, + "owner": [ + "user6" + ], + "message": "Wrong position", + "created_date": "2022-03-16T12:49:29.372Z", + "updated_date": "2022-03-16T12:49:29.372Z" } }, { - "model": "engine.trackedshape", - "pk": 523, + "model": "engine.manifest", + "pk": 1, "fields": { - "type": "points", - "occluded": true, - "outside": false, - "z_order": 0, - "points": "[596.0508429024103, 183.0313881112852]", - "rotation": 0.0, - "track": 129, - "frame": 0 + "filename": "manifest.jsonl", + "cloud_storage": 1 } }, { - "model": "engine.trackedshape", - "pk": 524, + "model": "engine.manifest", + "pk": 2, "fields": { - "type": "points", - "occluded": true, - "outside": true, - "z_order": 0, - "points": "[567.9171154923206, 94.70460892527626]", - "rotation": 0.0, - "track": 129, - "frame": 1 + "filename": "sub/manifest.jsonl", + "cloud_storage": 2 } }, { - "model": "engine.trackedshape", - "pk": 525, + "model": "engine.manifest", + "pk": 3, "fields": { - "type": "points", - "occluded": false, - "outside": true, - "z_order": 0, - "points": "[529.1238333204674, 202.44372862649288]", - "rotation": 0.0, - "track": 130, - "frame": 0 + "filename": "manifest.jsonl", + "cloud_storage": 3 } }, { - "model": "engine.trackedshape", - "pk": 526, + "model": "engine.cloudstorage", + "pk": 1, "fields": { - "type": "points", - "occluded": false, - "outside": true, - "z_order": 0, - "points": "[500.9901059103777, 114.11694944048395]", - "rotation": 0.0, - "track": 130, - "frame": 1 + "provider_type": "AWS_S3_BUCKET", + "resource": "public", + "display_name": "Bucket 1", + "owner": [ + "user1" + ], + "created_date": "2022-03-17T07:22:49.519Z", + "updated_date": "2022-03-17T07:22:49.529Z", + "credentials": "", + "credentials_type": "ANONYMOUS_ACCESS", + "specific_attributes": "endpoint_url=http%3A%2F%2Fminio%3A9000", + "description": "", + "organization": null } }, { - "model": "engine.trackedshape", - "pk": 537, + "model": "engine.cloudstorage", + "pk": 2, "fields": { - "type": "polygon", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[87.33181179665189, 59.56175666774834, 76.08181179665189, 58.21175666774798, 68.51538231018822, 62.956246391880995, 42.400000000001455, 40.600000000000364, 58.405383111883566, 28.931516600745454]", - "rotation": 0.0, - "track": 117, - "frame": 6 + "provider_type": "AWS_S3_BUCKET", + "resource": "private", + "display_name": "Bucket 2", + "owner": [ + "business2" + ], + "created_date": "2022-03-17T07:23:59.305Z", + "updated_date": "2022-07-13T12:46:45.587Z", + "credentials": "minio_access_key minio_secret_key", + "credentials_type": "KEY_SECRET_KEY_PAIR", + "specific_attributes": "endpoint_url=http%3A%2F%2Fminio%3A9000", + "description": "", + "organization": 2 } }, { - "model": "engine.trackedshape", - "pk": 538, + "model": "engine.cloudstorage", + "pk": 3, "fields": { - "type": "polygon", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[68.90000000000146, 93.90000000000146, 76.08227824977257, 71.90224383464374, 63.03334358050233, 56.41750205211065, 32.477766951740705, 82.24196888442566]", - "rotation": 0.0, - "track": 118, - "frame": 5 + "provider_type": "AWS_S3_BUCKET", + "resource": "importexportbucket", + "display_name": "Import/Export bucket", + "owner": [ + "admin1" + ], + "created_date": "2022-06-29T12:56:18.257Z", + "updated_date": "2022-06-29T12:56:18.264Z", + "credentials": "minio_access_key minio_secret_key", + "credentials_type": "KEY_SECRET_KEY_PAIR", + "specific_attributes": "endpoint_url=http%3A%2F%2Fminio%3A9000", + "description": "Bucket for importing and exporting annotations and backups", + "organization": 2 } }, { - "model": "engine.profile", + "model": "engine.storage", "pk": 1, "fields": { - "user": [ - "admin1" - ], - "rating": 0.0 + "location": "cloud_storage", + "cloud_storage_id": 2 } }, { - "model": "engine.profile", + "model": "engine.storage", "pk": 2, "fields": { - "user": [ - "user1" - ], - "rating": 0.0 + "location": "cloud_storage", + "cloud_storage_id": 2 } }, { - "model": "engine.profile", + "model": "engine.storage", "pk": 3, "fields": { - "user": [ - "user2" - ], - "rating": 0.0 + "location": "cloud_storage", + "cloud_storage_id": 2 } }, { - "model": "engine.profile", + "model": "engine.storage", "pk": 4, "fields": { - "user": [ - "user3" - ], - "rating": 0.0 + "location": "cloud_storage", + "cloud_storage_id": 2 } }, { - "model": "engine.profile", + "model": "engine.storage", "pk": 5, "fields": { - "user": [ - "user4" - ], - "rating": 0.0 + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.profile", + "model": "engine.storage", "pk": 6, "fields": { - "user": [ - "worker1" - ], - "rating": 0.0 + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.profile", + "model": "engine.storage", "pk": 7, "fields": { - "user": [ - "worker2" - ], - "rating": 0.0 + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.profile", + "model": "engine.storage", "pk": 8, "fields": { - "user": [ - "worker3" - ], - "rating": 0.0 + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.profile", + "model": "engine.storage", "pk": 9, "fields": { - "user": [ - "worker4" - ], - "rating": 0.0 + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.profile", + "model": "engine.storage", "pk": 10, "fields": { - "user": [ - "business1" - ], - "rating": 0.0 + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.profile", + "model": "engine.storage", "pk": 11, "fields": { - "user": [ - "business2" - ], - "rating": 0.0 + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.profile", + "model": "engine.storage", "pk": 12, "fields": { - "user": [ - "business3" - ], - "rating": 0.0 + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.profile", + "model": "engine.storage", "pk": 13, "fields": { - "user": [ - "business4" - ], - "rating": 0.0 + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.profile", + "model": "engine.storage", "pk": 14, "fields": { - "user": [ - "dummy1" - ], - "rating": 0.0 + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.profile", + "model": "engine.storage", "pk": 15, "fields": { - "user": [ - "dummy2" - ], - "rating": 0.0 + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.profile", + "model": "engine.storage", "pk": 16, "fields": { - "user": [ - "dummy3" - ], - "rating": 0.0 + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.profile", + "model": "engine.storage", "pk": 17, "fields": { - "user": [ - "dummy4" - ], - "rating": 0.0 + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.profile", + "model": "engine.storage", "pk": 18, "fields": { - "user": [ - "admin2" - ], - "rating": 0.0 + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.profile", + "model": "engine.storage", "pk": 19, "fields": { - "user": [ - "user5" - ], - "rating": 0.0 + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.profile", + "model": "engine.storage", "pk": 20, "fields": { - "user": [ - "user6" - ], - "rating": 0.0 + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.profile", + "model": "engine.storage", "pk": 21, "fields": { - "user": [ - "lonely_user" - ], - "rating": 0.0 - } -}, -{ - "model": "engine.issue", - "pk": 1, - "fields": { - "frame": 0, - "position": "[244.58581235698148, 319.63386727689067, 326.9656750572103, 192.76887871853796, 543.6247139588122, 175.4691075514893, 835.2494279176244, 360.0000000000018, 609.5286041189956, 586.544622425632, 364.0361328125, 528.87890625, 244.58581235698148, 319.63386727689067]", - "job": 7, - "owner": [ - "user1" - ], - "assignee": null, - "created_date": "2022-03-16T11:04:39.444Z", - "updated_date": null, - "resolved": true + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.issue", - "pk": 2, + "model": "engine.storage", + "pk": 22, "fields": { - "frame": 0, - "position": "[98.48046875, 696.72265625, 326.1220703125, 841.5859375]", - "job": 9, - "owner": [ - "business2" - ], - "assignee": null, - "created_date": "2022-03-16T11:07:22.170Z", - "updated_date": null, - "resolved": false + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.issue", - "pk": 3, + "model": "engine.storage", + "pk": 23, "fields": { - "frame": 5, - "position": "[108.1845703125, 235.0, 720.0087890625, 703.3505859375]", - "job": 16, - "owner": [ - "business2" - ], - "assignee": null, - "created_date": "2022-03-16T11:08:18.367Z", - "updated_date": null, - "resolved": false + "location": "local", + "cloud_storage_id": null } }, -{ - "model": "engine.issue", - "pk": 4, - "fields": { - "frame": 5, - "position": "[295.36328125, 243.6044921875, 932.23046875, 561.4921875]", - "job": 10, - "owner": [ - "user1" - ], - "assignee": [ - "user1" - ], - "created_date": "2022-03-16T12:40:00.764Z", - "updated_date": null, - "resolved": false +{ + "model": "engine.storage", + "pk": 24, + "fields": { + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.issue", - "pk": 5, + "model": "engine.storage", + "pk": 25, "fields": { - "frame": 0, - "position": "[65.6189987163034, 100.96585365853753, 142.12734274711147, 362.6243902439037]", - "job": 11, - "owner": [ - "user6" - ], - "assignee": null, - "created_date": "2022-03-16T12:49:29.369Z", - "updated_date": null, - "resolved": false + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.comment", - "pk": 1, + "model": "engine.storage", + "pk": 26, "fields": { - "issue": 1, - "owner": [ - "user1" - ], - "message": "Why are we still here?", - "created_date": "2022-03-16T11:04:39.447Z", - "updated_date": "2022-03-16T11:04:39.447Z" + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.comment", - "pk": 2, + "model": "engine.storage", + "pk": 27, "fields": { - "issue": 1, - "owner": [ - "user1" - ], - "message": "Just to suffer?", - "created_date": "2022-03-16T11:04:49.821Z", - "updated_date": "2022-03-16T11:04:49.821Z" + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.comment", - "pk": 3, + "model": "engine.storage", + "pk": 28, "fields": { - "issue": 2, - "owner": [ - "business2" - ], - "message": "Something should be here", - "created_date": "2022-03-16T11:07:22.173Z", - "updated_date": "2022-03-16T11:07:22.173Z" + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.comment", - "pk": 4, + "model": "engine.storage", + "pk": 29, "fields": { - "issue": 3, - "owner": [ - "business2" - ], - "message": "Another one issue", - "created_date": "2022-03-16T11:08:18.370Z", - "updated_date": "2022-03-16T11:08:18.370Z" + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.comment", - "pk": 5, + "model": "engine.storage", + "pk": 30, "fields": { - "issue": 4, - "owner": [ - "user1" - ], - "message": "Issue with empty frame", - "created_date": "2022-03-16T12:40:00.767Z", - "updated_date": "2022-03-16T12:40:00.767Z" + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.comment", - "pk": 6, + "model": "engine.storage", + "pk": 31, "fields": { - "issue": 5, - "owner": [ - "user6" - ], - "message": "Wrong position", - "created_date": "2022-03-16T12:49:29.372Z", - "updated_date": "2022-03-16T12:49:29.372Z" + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.manifest", - "pk": 1, + "model": "engine.storage", + "pk": 32, "fields": { - "filename": "manifest.jsonl", - "cloud_storage": 1 + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.manifest", - "pk": 2, + "model": "engine.storage", + "pk": 33, "fields": { - "filename": "sub/manifest.jsonl", - "cloud_storage": 2 + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.manifest", - "pk": 3, + "model": "engine.storage", + "pk": 34, "fields": { - "filename": "manifest.jsonl", - "cloud_storage": 3 + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.cloudstorage", + "model": "webhooks.webhook", "pk": 1, "fields": { - "provider_type": "AWS_S3_BUCKET", - "resource": "public", - "display_name": "Bucket 1", + "target_url": "http://example.com/", + "description": "", + "events": "delete:task,update:task,create:task,update:job", + "type": "project", + "content_type": "application/json", + "secret": "", + "is_active": true, + "enable_ssl": true, + "created_date": "2022-09-28T12:16:28.311Z", + "updated_date": "2022-09-28T12:16:28.311Z", "owner": [ "user1" ], - "created_date": "2022-03-17T07:22:49.519Z", - "updated_date": "2022-03-17T07:22:49.529Z", - "credentials": "", - "credentials_type": "ANONYMOUS_ACCESS", - "specific_attributes": "endpoint_url=http%3A%2F%2Fminio%3A9000", - "description": "", + "project": 6, "organization": null } }, { - "model": "engine.cloudstorage", + "model": "webhooks.webhook", "pk": 2, "fields": { - "provider_type": "AWS_S3_BUCKET", - "resource": "private", - "display_name": "Bucket 2", + "target_url": "http://example.com/", + "description": "", + "events": "delete:comment,update:issue,update:comment,update:job,update:project,delete:task,create:comment,delete:issue,update:task,create:task,create:issue", + "type": "project", + "content_type": "application/json", + "secret": "", + "is_active": true, + "enable_ssl": true, + "created_date": "2022-09-28T12:18:12.412Z", + "updated_date": "2022-09-28T12:18:12.412Z", "owner": [ - "business2" + "business1" ], - "created_date": "2022-03-17T07:23:59.305Z", - "updated_date": "2022-07-13T12:46:45.587Z", - "credentials": "minio_access_key minio_secret_key", - "credentials_type": "KEY_SECRET_KEY_PAIR", - "specific_attributes": "endpoint_url=http%3A%2F%2Fminio%3A9000", + "project": 1, + "organization": null + } +}, +{ + "model": "webhooks.webhook", + "pk": 3, + "fields": { + "target_url": "http://example.com", "description": "", + "events": "update:issue,delete:issue,create:issue,update:project", + "type": "project", + "content_type": "application/json", + "secret": "", + "is_active": true, + "enable_ssl": true, + "created_date": "2022-09-28T12:19:49.744Z", + "updated_date": "2022-09-28T12:19:49.744Z", + "owner": [ + "user2" + ], + "project": 3, "organization": 2 } }, { - "model": "engine.cloudstorage", - "pk": 3, + "model": "webhooks.webhook", + "pk": 6, "fields": { - "provider_type": "AWS_S3_BUCKET", - "resource": "importexportbucket", - "display_name": "Import/Export bucket", + "target_url": "http://example.com/", + "description": "", + "events": "delete:task,create:task,update:issue,update:membership,create:comment,delete:comment,update:job,update:comment,create:project,delete:invitation,create:invitation,update:project,update:task,delete:membership,delete:issue,delete:project,update:organization,create:issue", + "type": "organization", + "content_type": "application/json", + "secret": "", + "is_active": true, + "enable_ssl": true, + "created_date": "2022-09-29T08:00:48.440Z", + "updated_date": "2022-09-29T08:00:48.441Z", "owner": [ "admin1" ], - "created_date": "2022-06-29T12:56:18.257Z", - "updated_date": "2022-06-29T12:56:18.264Z", - "credentials": "minio_access_key minio_secret_key", - "credentials_type": "KEY_SECRET_KEY_PAIR", - "specific_attributes": "endpoint_url=http%3A%2F%2Fminio%3A9000", - "description": "Bucket for importing and exporting annotations and backups", - "organization": 2 + "project": null, + "organization": 1 } }, { - "model": "engine.storage", + "model": "quality_control.qualityreport", "pk": 1, "fields": { - "location": "cloud_storage", - "cloud_storage_id": 2 + "job": null, + "task": 22, + "parent": null, + "created_date": "2023-05-18T18:19:52.294Z", + "target_last_updated": "2023-04-14T15:03:25.969Z", + "gt_last_updated": "2023-04-14T15:03:25.984Z", + "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"oriented_lines\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share_percent\": 0.36363636363636365,\n \"frames\": [\n 0,\n 1,\n 2,\n 5\n ],\n \"conflict_count\": 17,\n \"warning_count\": 5,\n \"error_count\": 12,\n \"conflicts_by_type\": {\n \"low_overlap\": 3,\n \"extra_annotation\": 5,\n \"mismatching_label\": 1,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"missing_annotation\": 6\n },\n \"annotations\": {\n \"valid_count\": 7,\n \"missing_count\": 6,\n \"extra_count\": 5,\n \"total_count\": 19,\n \"ds_count\": 13,\n \"gt_count\": 14,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 7,\n 1,\n 0,\n 2\n ],\n [\n 0,\n 0,\n 0,\n 3\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 6,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.7,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.5384615384615384,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.4375,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.3684210526315789,\n \"precision\": 0.5384615384615384,\n \"recall\": 0.5\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 8,\n \"missing_count\": 6,\n \"extra_count\": 5,\n \"total_count\": 19,\n \"ds_count\": 13,\n \"gt_count\": 14,\n \"mean_iou\": 0.12256680179050185,\n \"accuracy\": 0.42105263157894735\n },\n \"label\": {\n \"valid_count\": 7,\n \"invalid_count\": 1,\n \"total_count\": 8,\n \"accuracy\": 0.875\n }\n },\n \"frame_count\": 4,\n \"mean_conflict_count\": 4.25\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 581,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 550,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 584,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 547,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 583,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 548,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 587,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 601,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 602,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 582,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 580,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 585,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 546,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 583,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 548,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 585,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 7,\n \"missing_count\": 0,\n \"extra_count\": 5,\n \"total_count\": 13,\n \"ds_count\": 13,\n \"gt_count\": 8,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 7,\n 1,\n 0,\n 2\n ],\n [\n 0,\n 0,\n 0,\n 3\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.7,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 1.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.7,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5384615384615384,\n \"precision\": 0.5384615384615384,\n \"recall\": 0.875\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 8,\n \"missing_count\": 0,\n \"extra_count\": 5,\n \"total_count\": 13,\n \"ds_count\": 13,\n \"gt_count\": 8,\n \"mean_iou\": 0.4902672071620074,\n \"accuracy\": 0.6153846153846154\n },\n \"label\": {\n \"valid_count\": 7,\n \"invalid_count\": 1,\n \"total_count\": 8,\n \"accuracy\": 0.875\n }\n },\n \"conflict_count\": 11,\n \"warning_count\": 5,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"low_overlap\": 3,\n \"extra_annotation\": 5,\n \"mismatching_label\": 1,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 579,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 577,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 573,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 576,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 574,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 578,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 6,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n },\n \"5\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" } }, { - "model": "engine.storage", + "model": "quality_control.qualityreport", "pk": 2, "fields": { - "location": "cloud_storage", - "cloud_storage_id": 2 + "job": 27, + "task": null, + "parent": 1, + "created_date": "2023-05-18T18:19:52.298Z", + "target_last_updated": "2023-04-14T14:58:50.944Z", + "gt_last_updated": "2023-04-14T15:03:25.984Z", + "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"oriented_lines\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share_percent\": 0.36363636363636365,\n \"frames\": [\n 0,\n 1,\n 2,\n 5\n ],\n \"conflict_count\": 17,\n \"warning_count\": 5,\n \"error_count\": 12,\n \"conflicts_by_type\": {\n \"low_overlap\": 3,\n \"extra_annotation\": 5,\n \"mismatching_label\": 1,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"missing_annotation\": 6\n },\n \"annotations\": {\n \"valid_count\": 7,\n \"missing_count\": 6,\n \"extra_count\": 5,\n \"total_count\": 19,\n \"ds_count\": 13,\n \"gt_count\": 14,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 7,\n 1,\n 0,\n 2\n ],\n [\n 0,\n 0,\n 0,\n 3\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 6,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.7,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.5384615384615384,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.4375,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.3684210526315789,\n \"precision\": 0.5384615384615384,\n \"recall\": 0.5\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 8,\n \"missing_count\": 6,\n \"extra_count\": 5,\n \"total_count\": 19,\n \"ds_count\": 13,\n \"gt_count\": 14,\n \"mean_iou\": 0.12256680179050185,\n \"accuracy\": 0.42105263157894735\n },\n \"label\": {\n \"valid_count\": 7,\n \"invalid_count\": 1,\n \"total_count\": 8,\n \"accuracy\": 0.875\n }\n },\n \"frame_count\": 4,\n \"mean_conflict_count\": 4.25\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 581,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 550,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 584,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 547,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 583,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 548,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 587,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 601,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 602,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 582,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 580,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 585,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 546,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 583,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 548,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 585,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 7,\n \"missing_count\": 0,\n \"extra_count\": 5,\n \"total_count\": 13,\n \"ds_count\": 13,\n \"gt_count\": 8,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 7,\n 1,\n 0,\n 2\n ],\n [\n 0,\n 0,\n 0,\n 3\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.7,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 1.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.7,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5384615384615384,\n \"precision\": 0.5384615384615384,\n \"recall\": 0.875\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 8,\n \"missing_count\": 0,\n \"extra_count\": 5,\n \"total_count\": 13,\n \"ds_count\": 13,\n \"gt_count\": 8,\n \"mean_iou\": 0.4902672071620074,\n \"accuracy\": 0.6153846153846154\n },\n \"label\": {\n \"valid_count\": 7,\n \"invalid_count\": 1,\n \"total_count\": 8,\n \"accuracy\": 0.875\n }\n },\n \"conflict_count\": 11,\n \"warning_count\": 5,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"low_overlap\": 3,\n \"extra_annotation\": 5,\n \"mismatching_label\": 1,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 579,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 577,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 573,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 576,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 574,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 578,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 6,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n },\n \"5\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", + "pk": 1, + "fields": { + "report": 2, + "frame": 0, + "type": "low_overlap", + "importance": "warning" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 2, + "fields": { + "report": 2, + "frame": 0, + "type": "low_overlap", + "importance": "warning" + } +}, +{ + "model": "quality_control.annotationconflict", "pk": 3, "fields": { - "location": "cloud_storage", - "cloud_storage_id": 2 + "report": 2, + "frame": 0, + "type": "low_overlap", + "importance": "warning" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 4, "fields": { - "location": "cloud_storage", - "cloud_storage_id": 2 + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 5, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 6, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 7, - "fields": { - "location": "local", - "cloud_storage_id": null + "fields": { + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 8, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 9, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "mismatching_label", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 10, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "mismatching_direction", + "importance": "warning" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 11, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "covered_annotation", + "importance": "warning" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 12, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 1, + "type": "missing_annotation", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 13, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 1, + "type": "missing_annotation", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 14, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 1, + "type": "missing_annotation", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 15, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 1, + "type": "missing_annotation", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 16, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 1, + "type": "missing_annotation", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 17, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 1, + "type": "missing_annotation", + "importance": "error" } }, { - "model": "engine.storage", - "pk": 18, + "model": "quality_control.annotationid", + "pk": 1, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 1, + "obj_id": 581, + "job_id": 27, + "type": "rectangle" } }, { - "model": "engine.storage", - "pk": 19, + "model": "quality_control.annotationid", + "pk": 2, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 1, + "obj_id": 550, + "job_id": 28, + "type": "rectangle" } }, { - "model": "engine.storage", - "pk": 20, + "model": "quality_control.annotationid", + "pk": 3, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 2, + "obj_id": 584, + "job_id": 27, + "type": "polygon" } }, { - "model": "engine.storage", - "pk": 21, + "model": "quality_control.annotationid", + "pk": 4, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 2, + "obj_id": 547, + "job_id": 28, + "type": "polygon" } }, { - "model": "engine.storage", - "pk": 22, + "model": "quality_control.annotationid", + "pk": 5, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 3, + "obj_id": 583, + "job_id": 27, + "type": "polyline" } }, { - "model": "engine.storage", - "pk": 23, + "model": "quality_control.annotationid", + "pk": 6, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 3, + "obj_id": 548, + "job_id": 28, + "type": "polyline" } }, { - "model": "engine.storage", - "pk": 24, + "model": "quality_control.annotationid", + "pk": 7, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 4, + "obj_id": 587, + "job_id": 27, + "type": "rectangle" } }, { - "model": "engine.storage", - "pk": 25, + "model": "quality_control.annotationid", + "pk": 8, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 5, + "obj_id": 601, + "job_id": 27, + "type": "polygon" } }, { - "model": "engine.storage", - "pk": 26, + "model": "quality_control.annotationid", + "pk": 9, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 6, + "obj_id": 602, + "job_id": 27, + "type": "polygon" } }, { - "model": "engine.storage", - "pk": 27, + "model": "quality_control.annotationid", + "pk": 10, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 7, + "obj_id": 582, + "job_id": 27, + "type": "polyline" } }, { - "model": "engine.storage", - "pk": 28, + "model": "quality_control.annotationid", + "pk": 11, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 8, + "obj_id": 580, + "job_id": 27, + "type": "polyline" } }, { - "model": "engine.storage", - "pk": 29, + "model": "quality_control.annotationid", + "pk": 12, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 9, + "obj_id": 585, + "job_id": 27, + "type": "mask" } }, { - "model": "engine.storage", - "pk": 30, + "model": "quality_control.annotationid", + "pk": 13, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 9, + "obj_id": 546, + "job_id": 28, + "type": "polygon" } }, { - "model": "engine.storage", - "pk": 31, + "model": "quality_control.annotationid", + "pk": 14, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 10, + "obj_id": 583, + "job_id": 27, + "type": "polyline" } }, { - "model": "engine.storage", - "pk": 32, + "model": "quality_control.annotationid", + "pk": 15, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 10, + "obj_id": 548, + "job_id": 28, + "type": "polyline" } }, { - "model": "engine.storage", - "pk": 33, + "model": "quality_control.annotationid", + "pk": 16, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 11, + "obj_id": 585, + "job_id": 27, + "type": "mask" } }, { - "model": "engine.storage", - "pk": 34, + "model": "quality_control.annotationid", + "pk": 17, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 12, + "obj_id": 579, + "job_id": 28, + "type": "rectangle" } }, { - "model": "webhooks.webhook", - "pk": 1, + "model": "quality_control.annotationid", + "pk": 18, "fields": { - "target_url": "http://example.com/", - "description": "", - "events": "delete:task,update:task,create:task,update:job", - "type": "project", - "content_type": "application/json", - "secret": "", - "is_active": true, - "enable_ssl": true, - "created_date": "2022-09-28T12:16:28.311Z", - "updated_date": "2022-09-28T12:16:28.311Z", - "owner": [ - "user1" - ], - "project": 6, - "organization": null + "conflict": 13, + "obj_id": 577, + "job_id": 28, + "type": "points" } }, { - "model": "webhooks.webhook", - "pk": 2, + "model": "quality_control.annotationid", + "pk": 19, "fields": { - "target_url": "http://example.com/", - "description": "", - "events": "delete:comment,update:issue,update:comment,update:job,update:project,delete:task,create:comment,delete:issue,update:task,create:task,create:issue", - "type": "project", - "content_type": "application/json", - "secret": "", - "is_active": true, - "enable_ssl": true, - "created_date": "2022-09-28T12:18:12.412Z", - "updated_date": "2022-09-28T12:18:12.412Z", - "owner": [ - "business1" - ], - "project": 1, - "organization": null + "conflict": 14, + "obj_id": 573, + "job_id": 28, + "type": "polygon" } }, { - "model": "webhooks.webhook", - "pk": 3, + "model": "quality_control.annotationid", + "pk": 20, "fields": { - "target_url": "http://example.com", - "description": "", - "events": "update:issue,delete:issue,create:issue,update:project", - "type": "project", - "content_type": "application/json", - "secret": "", - "is_active": true, - "enable_ssl": true, - "created_date": "2022-09-28T12:19:49.744Z", - "updated_date": "2022-09-28T12:19:49.744Z", - "owner": [ - "user2" - ], - "project": 3, - "organization": 2 + "conflict": 15, + "obj_id": 576, + "job_id": 28, + "type": "mask" } }, { - "model": "webhooks.webhook", + "model": "quality_control.annotationid", + "pk": 21, + "fields": { + "conflict": 16, + "obj_id": 574, + "job_id": 28, + "type": "ellipse" + } +}, +{ + "model": "quality_control.annotationid", + "pk": 22, + "fields": { + "conflict": 17, + "obj_id": 578, + "job_id": 28, + "type": "polyline" + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 1, + "fields": { + "task": 2, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 2, + "fields": { + "task": 5, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 3, + "fields": { + "task": 6, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 4, + "fields": { + "task": 7, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 5, + "fields": { + "task": 8, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", "pk": 6, "fields": { - "target_url": "http://example.com/", - "description": "", - "events": "delete:task,create:task,update:issue,update:membership,create:comment,delete:comment,update:job,update:comment,create:project,delete:invitation,create:invitation,update:project,update:task,delete:membership,delete:issue,delete:project,update:organization,create:issue", - "type": "organization", - "content_type": "application/json", - "secret": "", - "is_active": true, - "enable_ssl": true, - "created_date": "2022-09-29T08:00:48.440Z", - "updated_date": "2022-09-29T08:00:48.441Z", - "owner": [ - "admin1" - ], - "project": null, - "organization": 1 + "task": 9, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 7, + "fields": { + "task": 11, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 8, + "fields": { + "task": 12, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 9, + "fields": { + "task": 13, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 10, + "fields": { + "task": 14, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 11, + "fields": { + "task": 15, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 12, + "fields": { + "task": 17, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 13, + "fields": { + "task": 18, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 14, + "fields": { + "task": 19, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 15, + "fields": { + "task": 20, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 16, + "fields": { + "task": 21, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 17, + "fields": { + "task": 22, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true } }, { diff --git a/tests/python/shared/assets/jobs.json b/tests/python/shared/assets/jobs.json index ed637b65cfb9..249aaf713290 100644 --- a/tests/python/shared/assets/jobs.json +++ b/tests/python/shared/assets/jobs.json @@ -55,7 +55,7 @@ "status": "annotation", "stop_frame": 10, "task_id": 22, - "type": "normal", + "type": "annotation", "updated_date": "2023-04-14T14:58:50.944000Z", "url": "http://localhost:8080/api/jobs/27" }, @@ -83,7 +83,7 @@ "status": "annotation", "stop_frame": 9, "task_id": 21, - "type": "normal", + "type": "annotation", "updated_date": "2023-03-27T19:08:40.166000Z", "url": "http://localhost:8080/api/jobs/26" }, @@ -111,7 +111,7 @@ "status": "annotation", "stop_frame": 5, "task_id": 21, - "type": "normal", + "type": "annotation", "updated_date": "2023-03-27T19:08:27.216000Z", "url": "http://localhost:8080/api/jobs/25" }, @@ -139,7 +139,7 @@ "status": "annotation", "stop_frame": 1, "task_id": 20, - "type": "normal", + "type": "annotation", "updated_date": "2023-03-10T11:57:49.019000Z", "url": "http://localhost:8080/api/jobs/24" }, @@ -167,7 +167,7 @@ "status": "annotation", "stop_frame": 1, "task_id": 19, - "type": "normal", + "type": "annotation", "updated_date": "2023-03-10T11:56:55.066000Z", "url": "http://localhost:8080/api/jobs/23" }, @@ -195,7 +195,7 @@ "status": "annotation", "stop_frame": 1, "task_id": 18, - "type": "normal", + "type": "annotation", "updated_date": "2023-03-01T15:36:38.114000Z", "url": "http://localhost:8080/api/jobs/22" }, @@ -223,7 +223,7 @@ "status": "annotation", "stop_frame": 4, "task_id": 17, - "type": "normal", + "type": "annotation", "updated_date": "2023-02-10T14:05:26.022000Z", "url": "http://localhost:8080/api/jobs/21" }, @@ -251,7 +251,7 @@ "status": "annotation", "stop_frame": 24, "task_id": 15, - "type": "normal", + "type": "annotation", "updated_date": "2022-12-01T12:53:35.354000Z", "url": "http://localhost:8080/api/jobs/19" }, @@ -279,7 +279,7 @@ "status": "annotation", "stop_frame": 7, "task_id": 14, - "type": "normal", + "type": "annotation", "updated_date": "2022-09-23T11:57:02.302000Z", "url": "http://localhost:8080/api/jobs/18" }, @@ -307,7 +307,7 @@ "status": "annotation", "stop_frame": 4, "task_id": 13, - "type": "normal", + "type": "annotation", "updated_date": "2022-12-05T07:47:01.633000Z", "url": "http://localhost:8080/api/jobs/17" }, @@ -341,7 +341,7 @@ "status": "annotation", "stop_frame": 10, "task_id": 11, - "type": "normal", + "type": "annotation", "updated_date": "2022-06-22T09:18:45.296000Z", "url": "http://localhost:8080/api/jobs/16" }, @@ -369,7 +369,7 @@ "status": "annotation", "stop_frame": 19, "task_id": 9, - "type": "normal", + "type": "annotation", "updated_date": "2022-11-03T13:57:26.346000Z", "url": "http://localhost:8080/api/jobs/14" }, @@ -397,7 +397,7 @@ "status": "validation", "stop_frame": 14, "task_id": 9, - "type": "normal", + "type": "annotation", "updated_date": "2022-06-22T09:18:45.296000Z", "url": "http://localhost:8080/api/jobs/13" }, @@ -425,7 +425,7 @@ "status": "validation", "stop_frame": 9, "task_id": 9, - "type": "normal", + "type": "annotation", "updated_date": "2022-06-22T09:18:45.296000Z", "url": "http://localhost:8080/api/jobs/12" }, @@ -459,7 +459,7 @@ "status": "annotation", "stop_frame": 4, "task_id": 9, - "type": "normal", + "type": "annotation", "updated_date": "2022-06-22T09:18:45.296000Z", "url": "http://localhost:8080/api/jobs/11" }, @@ -493,7 +493,7 @@ "status": "annotation", "stop_frame": 13, "task_id": 8, - "type": "normal", + "type": "annotation", "updated_date": "2022-06-22T09:18:45.296000Z", "url": "http://localhost:8080/api/jobs/10" }, @@ -521,7 +521,7 @@ "status": "annotation", "stop_frame": 10, "task_id": 7, - "type": "normal", + "type": "annotation", "updated_date": "2022-06-22T09:18:45.296000Z", "url": "http://localhost:8080/api/jobs/9" }, @@ -549,7 +549,7 @@ "status": "annotation", "stop_frame": 0, "task_id": 6, - "type": "normal", + "type": "annotation", "updated_date": "2022-06-22T09:18:45.296000Z", "url": "http://localhost:8080/api/jobs/8" }, @@ -583,7 +583,7 @@ "status": "annotation", "stop_frame": 24, "task_id": 5, - "type": "normal", + "type": "annotation", "updated_date": "2022-06-22T09:18:45.296000Z", "url": "http://localhost:8080/api/jobs/7" }, @@ -617,7 +617,7 @@ "status": "annotation", "stop_frame": 22, "task_id": 2, - "type": "normal", + "type": "annotation", "updated_date": "2022-06-22T09:18:45.296000Z", "url": "http://localhost:8080/api/jobs/2" } diff --git a/tests/python/shared/assets/quality_conflicts.json b/tests/python/shared/assets/quality_conflicts.json new file mode 100644 index 000000000000..48bc36d5a09e --- /dev/null +++ b/tests/python/shared/assets/quality_conflicts.json @@ -0,0 +1,270 @@ +{ + "count": 17, + "next": null, + "previous": null, + "results": [ + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 581, + "type": "rectangle" + }, + { + "job_id": 28, + "obj_id": 550, + "type": "rectangle" + } + ], + "frame": 0, + "id": 1, + "importance": "warning", + "report_id": 2, + "type": "low_overlap" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 584, + "type": "polygon" + }, + { + "job_id": 28, + "obj_id": 547, + "type": "polygon" + } + ], + "frame": 0, + "id": 2, + "importance": "warning", + "report_id": 2, + "type": "low_overlap" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 583, + "type": "polyline" + }, + { + "job_id": 28, + "obj_id": 548, + "type": "polyline" + } + ], + "frame": 0, + "id": 3, + "importance": "warning", + "report_id": 2, + "type": "low_overlap" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 587, + "type": "rectangle" + } + ], + "frame": 0, + "id": 4, + "importance": "error", + "report_id": 2, + "type": "extra_annotation" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 601, + "type": "polygon" + } + ], + "frame": 0, + "id": 5, + "importance": "error", + "report_id": 2, + "type": "extra_annotation" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 602, + "type": "polygon" + } + ], + "frame": 0, + "id": 6, + "importance": "error", + "report_id": 2, + "type": "extra_annotation" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 582, + "type": "polyline" + } + ], + "frame": 0, + "id": 7, + "importance": "error", + "report_id": 2, + "type": "extra_annotation" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 580, + "type": "polyline" + } + ], + "frame": 0, + "id": 8, + "importance": "error", + "report_id": 2, + "type": "extra_annotation" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 585, + "type": "mask" + }, + { + "job_id": 28, + "obj_id": 546, + "type": "polygon" + } + ], + "frame": 0, + "id": 9, + "importance": "error", + "report_id": 2, + "type": "mismatching_label" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 583, + "type": "polyline" + }, + { + "job_id": 28, + "obj_id": 548, + "type": "polyline" + } + ], + "frame": 0, + "id": 10, + "importance": "warning", + "report_id": 2, + "type": "mismatching_direction" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 585, + "type": "mask" + } + ], + "frame": 0, + "id": 11, + "importance": "warning", + "report_id": 2, + "type": "covered_annotation" + }, + { + "annotation_ids": [ + { + "job_id": 28, + "obj_id": 579, + "type": "rectangle" + } + ], + "frame": 1, + "id": 12, + "importance": "error", + "report_id": 2, + "type": "missing_annotation" + }, + { + "annotation_ids": [ + { + "job_id": 28, + "obj_id": 577, + "type": "points" + } + ], + "frame": 1, + "id": 13, + "importance": "error", + "report_id": 2, + "type": "missing_annotation" + }, + { + "annotation_ids": [ + { + "job_id": 28, + "obj_id": 573, + "type": "polygon" + } + ], + "frame": 1, + "id": 14, + "importance": "error", + "report_id": 2, + "type": "missing_annotation" + }, + { + "annotation_ids": [ + { + "job_id": 28, + "obj_id": 576, + "type": "mask" + } + ], + "frame": 1, + "id": 15, + "importance": "error", + "report_id": 2, + "type": "missing_annotation" + }, + { + "annotation_ids": [ + { + "job_id": 28, + "obj_id": 574, + "type": "ellipse" + } + ], + "frame": 1, + "id": 16, + "importance": "error", + "report_id": 2, + "type": "missing_annotation" + }, + { + "annotation_ids": [ + { + "job_id": 28, + "obj_id": 578, + "type": "polyline" + } + ], + "frame": 1, + "id": 17, + "importance": "error", + "report_id": 2, + "type": "missing_annotation" + } + ] +} \ No newline at end of file diff --git a/tests/python/shared/assets/quality_reports.json b/tests/python/shared/assets/quality_reports.json index ae13946a185c..9770027c3059 100644 --- a/tests/python/shared/assets/quality_reports.json +++ b/tests/python/shared/assets/quality_reports.json @@ -4,44 +4,66 @@ "previous": null, "results": [ { - "created_date": "2023-04-22T14:49:30.751747Z", + "created_date": "2023-05-18T18:19:52.294000Z", "gt_last_updated": "2023-04-14T15:03:25.984000Z", - "job_id": 27, + "id": 1, + "job_id": null, "parameters": { - "iou_threshold": 0.0 + "iou_threshold": 0.4 }, "parent_id": null, "summary": { - "conflicts_count": 0, - "ds_count": 0, - "frame_count": 0, - "frame_share_percent": 0.0, - "gt_count": 0, - "valid_count": 0 + "conflict_count": 17, + "conflicts_by_type": { + "covered_annotation": 1, + "extra_annotation": 5, + "low_overlap": 3, + "mismatching_direction": 1, + "mismatching_label": 1, + "missing_annotation": 6 + }, + "ds_count": 13, + "error_count": 12, + "frame_count": 4, + "frame_share_percent": 0.36363636363636365, + "gt_count": 14, + "valid_count": 7, + "warning_count": 5 }, - "target": "job", - "target_last_updated": "2023-04-14T14:58:50.944000Z", - "task_id": null + "target": "task", + "target_last_updated": "2023-04-14T15:03:25.969000Z", + "task_id": 22 }, { - "created_date": "2023-04-22T14:49:30.867049Z", + "created_date": "2023-05-18T18:19:52.298000Z", "gt_last_updated": "2023-04-14T15:03:25.984000Z", - "job_id": null, + "id": 2, + "job_id": 27, "parameters": { - "iou_threshold": 0.0 + "iou_threshold": 0.4 }, - "parent_id": null, + "parent_id": 1, "summary": { - "conflicts_count": 0, - "ds_count": 0, - "frame_count": 0, - "frame_share_percent": 0.0, - "gt_count": 0, - "valid_count": 0 + "conflict_count": 17, + "conflicts_by_type": { + "covered_annotation": 1, + "extra_annotation": 5, + "low_overlap": 3, + "mismatching_direction": 1, + "mismatching_label": 1, + "missing_annotation": 6 + }, + "ds_count": 13, + "error_count": 12, + "frame_count": 4, + "frame_share_percent": 0.36363636363636365, + "gt_count": 14, + "valid_count": 7, + "warning_count": 5 }, - "target": "task", - "target_last_updated": "2023-04-14T15:03:25.969000Z", - "task_id": 22 + "target": "job", + "target_last_updated": "2023-04-14T14:58:50.944000Z", + "task_id": null } ] } \ No newline at end of file diff --git a/tests/python/shared/assets/quality_settings.json b/tests/python/shared/assets/quality_settings.json new file mode 100644 index 000000000000..31a851cff7f6 --- /dev/null +++ b/tests/python/shared/assets/quality_settings.json @@ -0,0 +1,257 @@ +{ + "1": { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task": 2 + }, + "2": { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task": 5 + }, + "3": { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task": 6 + }, + "4": { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task": 7 + }, + "5": { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task": 8 + }, + "6": { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task": 9 + }, + "7": { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task": 11 + }, + "8": { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task": 12 + }, + "9": { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task": 13 + }, + "10": { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task": 14 + }, + "11": { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task": 15 + }, + "12": { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task": 17 + }, + "13": { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task": 18 + }, + "14": { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task": 19 + }, + "15": { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task": 20 + }, + "16": { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task": 21 + }, + "17": { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task": 22 + } +} \ No newline at end of file diff --git a/tests/python/shared/assets/tasks.json b/tests/python/shared/assets/tasks.json index 1fcd82e9ae2a..fcc9c09c7d05 100644 --- a/tests/python/shared/assets/tasks.json +++ b/tests/python/shared/assets/tasks.json @@ -35,6 +35,7 @@ "username": "user2" }, "project_id": null, + "quality_settings": 17, "segment_size": 11, "size": 11, "source_storage": null, @@ -76,6 +77,7 @@ "username": "admin1" }, "project_id": null, + "quality_settings": 16, "segment_size": 6, "size": 10, "source_storage": { @@ -125,6 +127,7 @@ "username": "admin1" }, "project_id": 12, + "quality_settings": 15, "segment_size": 2, "size": 2, "source_storage": { @@ -174,6 +177,7 @@ "username": "admin1" }, "project_id": null, + "quality_settings": 14, "segment_size": 2, "size": 2, "source_storage": { @@ -223,6 +227,7 @@ "username": "admin1" }, "project_id": 11, + "quality_settings": 13, "segment_size": 2, "size": 2, "source_storage": { @@ -278,6 +283,7 @@ "username": "admin1" }, "project_id": null, + "quality_settings": 12, "segment_size": 5, "size": 5, "source_storage": null, @@ -319,6 +325,7 @@ "username": "admin1" }, "project_id": 8, + "quality_settings": 11, "segment_size": 25, "size": 25, "source_storage": { @@ -368,6 +375,7 @@ "username": "admin1" }, "project_id": 5, + "quality_settings": 10, "segment_size": 8, "size": 8, "source_storage": { @@ -423,6 +431,7 @@ "username": "admin1" }, "project_id": 4, + "quality_settings": 9, "segment_size": 5, "size": 5, "source_storage": null, @@ -459,6 +468,7 @@ "username": "admin1" }, "project_id": null, + "quality_settings": 8, "segment_size": 0, "source_storage": null, "status": "annotation", @@ -505,6 +515,7 @@ "username": "business1" }, "project_id": 2, + "quality_settings": 7, "segment_size": 11, "size": 11, "source_storage": { @@ -560,6 +571,7 @@ "username": "business1" }, "project_id": 1, + "quality_settings": 6, "segment_size": 5, "size": 20, "source_storage": null, @@ -607,6 +619,7 @@ "username": "user1" }, "project_id": null, + "quality_settings": 5, "segment_size": 14, "size": 14, "source_storage": null, @@ -654,6 +667,7 @@ "username": "business2" }, "project_id": null, + "quality_settings": 4, "segment_size": 11, "size": 11, "source_storage": null, @@ -695,6 +709,7 @@ "username": "user1" }, "project_id": null, + "quality_settings": 3, "segment_size": 1, "size": 1, "source_storage": null, @@ -742,6 +757,7 @@ "username": "user1" }, "project_id": null, + "quality_settings": 2, "segment_size": 25, "size": 25, "source_storage": null, @@ -789,6 +805,7 @@ "username": "user1" }, "project_id": null, + "quality_settings": 1, "segment_size": 23, "size": 23, "source_storage": null, diff --git a/tests/python/shared/utils/dump_objects.py b/tests/python/shared/utils/dump_objects.py index 819090251be1..90fd827d0d22 100644 --- a/tests/python/shared/utils/dump_objects.py +++ b/tests/python/shared/utils/dump_objects.py @@ -9,6 +9,8 @@ if __name__ == "__main__": annotations = {} + quality_settings = {} + for obj in [ "user", "project", @@ -22,19 +24,32 @@ "issue", "webhook", "label", - "quality_report", + "quality/report", + "quality/conflict", ]: response = get_method("admin1", f"{obj}s", page_size="all") - with open(ASSETS_DIR / f"{obj}s.json", "w") as f: + + filename = f"{obj}s.json".replace("/", "_") + with open(ASSETS_DIR / filename, "w") as f: json.dump(response.json(), f, indent=2, sort_keys=True) if obj in ["job", "task"]: annotations[obj] = {} for _obj in response.json()["results"]: oid = _obj["id"] + response = get_method("admin1", f"{obj}s/{oid}/annotations") if response.status_code == HTTPStatus.OK: annotations[obj][oid] = response.json() + if obj == "task": + sid = _obj["quality_settings"] + response = get_method("admin1", f"quality/settings/{sid}") + if response.status_code == HTTPStatus.OK: + quality_settings[sid] = response.json() + with open(ASSETS_DIR / "annotations.json", "w") as f: json.dump(annotations, f, indent=2, sort_keys=True) + + with open(ASSETS_DIR / "quality_settings.json", "w") as f: + json.dump(quality_settings, f, indent=2, sort_keys=True) From e8b4d4f03e1d7d419008aeb8ca882ae4f6c75fe0 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 18 May 2023 21:44:33 +0300 Subject: [PATCH 122/257] Update gt job creation tests --- cvat/apps/engine/serializers.py | 11 +++-- tests/python/rest_api/test_jobs.py | 79 +++++++++++++++++++++++++----- 2 files changed, 74 insertions(+), 16 deletions(-) diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index f82c118e54f7..15fb44158176 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -635,10 +635,13 @@ def create(self, validated_data): seed = validated_data.pop("seed", None) - import random - # NOTE: the RNG backend must not change to provide reproducible results - rng = random.Random(seed) - frames = rng.sample(valid_frame_ids, k=count) + # The RNG backend must not change to yield reproducible results, + # so here we specify it explicitly + from numpy import random + rng = random.Generator(random.MT19937(seed=seed)) + frames = rng.choice( + list(valid_frame_ids), size=count, shuffle=False, replace=False + ).tolist() elif frame_selection_method == models.JobFrameSelectionMethod.MANUAL: frames = validated_data.pop("frames") diff --git a/tests/python/rest_api/test_jobs.py b/tests/python/rest_api/test_jobs.py index f5c352ce2371..03af4639a63f 100644 --- a/tests/python/rest_api/test_jobs.py +++ b/tests/python/rest_api/test_jobs.py @@ -110,15 +110,7 @@ def test_can_create_gt_job_with_manual_frames(self, admin_user, tasks, task_mode (gt_job_meta, _) = api_client.jobs_api.retrieve_data_meta(job_id) assert job_frame_count == gt_job_meta.size - - if task_mode == "annotation": - assert [f.name for f in gt_job_meta.frames] == [ - task_meta.frames[i].name for i in job_frame_ids - ] - elif task_mode == "interpolation": - assert gt_job_meta.included_frames == job_frame_ids - else: - assert False + assert job_frame_ids == gt_job_meta.included_frames @pytest.mark.parametrize("task_mode", ["annotation", "interpolation"]) def test_can_create_gt_job_with_random_frames(self, admin_user, tasks, task_mode): @@ -140,7 +132,6 @@ def test_can_create_gt_job_with_random_frames(self, admin_user, tasks, task_mode "type": "ground_truth", "frame_selection_method": "random_uniform", "count": job_frame_count, - "seed": 42, # make the test reproducible } response = self._test_create_job_ok(user, job_spec) @@ -150,11 +141,75 @@ def test_can_create_gt_job_with_random_frames(self, admin_user, tasks, task_mode (gt_job_meta, _) = api_client.jobs_api.retrieve_data_meta(job_id) assert job_frame_count == gt_job_meta.size + assert job_frame_count == len(gt_job_meta.included_frames) + + @pytest.mark.parametrize("task_id, frame_ids", [ + # The results have to be the same in different CVAT revisions, + # so the task ids are fixed + (21, [3, 5, 7]), # annotation task + (5, [11, 14, 20]), # interpolation task + ]) + def test_can_create_gt_job_with_random_frames_and_seed(self, admin_user, task_id, frame_ids): + user = admin_user + job_spec = { + "task_id": task_id, + "type": "ground_truth", + "frame_selection_method": "random_uniform", + "count": 3, + "seed": 42, + } + + response = self._test_create_job_ok(user, job_spec) + job_id = json.loads(response.data)["id"] + + with make_api_client(user) as api_client: + (gt_job_meta, _) = api_client.jobs_api.retrieve_data_meta(job_id) + + assert gt_job_meta.included_frames == frame_ids + + @pytest.mark.parametrize("task_mode", ["annotation", "interpolation"]) + def test_can_get_gt_job_meta(self, admin_user, tasks, task_mode): + user = admin_user + job_frame_count = 4 + task = next( + t + for t in tasks + if not t["project_id"] + and not t["organization"] + and t["mode"] == task_mode + and t["size"] > job_frame_count + ) + task_id = task["id"] + with make_api_client(user) as api_client: + (task_meta, _) = api_client.tasks_api.retrieve_data_meta(task_id) + frame_step = int(task_meta.frame_filter.split("=")[-1]) if task_meta.frame_filter else 1 + + job_frame_ids = list(range(task_meta.start_frame, task_meta.stop_frame, frame_step))[ + :job_frame_count + ] + job_spec = { + "task_id": task_id, + "type": "ground_truth", + "frame_selection_method": "manual", + "frames": job_frame_ids, + } + + response = self._test_create_job_ok(user, job_spec) + job_id = json.loads(response.data)["id"] + + with make_api_client(user) as api_client: + (gt_job_meta, _) = api_client.jobs_api.retrieve_data_meta(job_id) + + # The size is adjusted by the frame step and included frames + assert job_frame_count == gt_job_meta.size + assert job_frame_ids == gt_job_meta.included_frames + # The frames themselves are the same as in the whole range + # this is to allow navigation to adjacent frames if task_mode == "annotation": - assert [f.name for f in gt_job_meta.frames] == ["0.png", "1.png", "5.png"] + assert len(gt_job_meta.frames) == (gt_job_meta.stop_frame + 1 - gt_job_meta.start_frame) / frame_step elif task_mode == "interpolation": - assert gt_job_meta.included_frames == [0, 3, 20] + assert len(gt_job_meta.frames) == 1 else: assert False From 177a5809223ff9d27d3f0ce9f5b12685bd3c3584 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 18 May 2023 21:46:29 +0300 Subject: [PATCH 123/257] Make quality_settings field optional in the responses --- cvat/apps/engine/serializers.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index 15fb44158176..c5370ed2588c 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -978,6 +978,9 @@ class TaskReadSerializer(serializers.ModelSerializer): jobs = JobsSummarySerializer(url_filter_key='task_id', source='segment_set') labels = LabelsSummarySerializer(source='*') + # The field may be missing because the app can be disabled + quality_settings = serializers.ReadOnlyField(source='quality_settings.id', required=False) + class Meta: model = models.Task fields = ('url', 'id', 'name', 'project_id', 'mode', 'owner', 'assignee', From ee1bbf190455b26e9f8ffaa5e91f38a3f84fd6cd Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 18 May 2023 21:46:53 +0300 Subject: [PATCH 124/257] Fix migration --- .../migrations/0001_initial.py | 33 +++++++------------ 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/cvat/apps/quality_control/migrations/0001_initial.py b/cvat/apps/quality_control/migrations/0001_initial.py index 9b3538b552d0..4952962b7c2d 100644 --- a/cvat/apps/quality_control/migrations/0001_initial.py +++ b/cvat/apps/quality_control/migrations/0001_initial.py @@ -11,19 +11,6 @@ class Migration(migrations.Migration): ] state_operations = [ - migrations.CreateModel( - name='AnnotationConflict', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('frame', models.PositiveIntegerField()), - ('type', models.CharField(choices=[('missing_annotation', 'MISSING_ANNOTATION'), ('extra_annotation', 'EXTRA_ANNOTATION'), ('mismatching_label', 'MISMATCHING_LABEL'), ('low_overlap', 'LOW_OVERLAP'), ('mismatching_direction', 'MISMATCHING_DIRECTION'), ('mismatching_attributes', 'MISMATCHING_ATTRIBUTES'), ('mismatching_groups', 'MISMATCHING_GROUPS'), ('covered_annotation', 'COVERED_ANNOTATION')], max_length=32)), - ('importance', models.CharField(choices=[('warning', 'WARNING'), ('error', 'ERROR')], max_length=32)), - ], - options={ - 'db_table': 'quality_control_annotationconflict', - }, - bases=(models.Model,), - ), migrations.CreateModel( name='QualitySettings', fields=[ @@ -42,9 +29,6 @@ class Migration(migrations.Migration): ('compare_attributes', models.BooleanField()), ('task', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='quality_settings', to='engine.task')), ], - options={ - 'db_table': 'quality_control_qualitysettings', - }, bases=(models.Model,), ), migrations.CreateModel( @@ -59,9 +43,17 @@ class Migration(migrations.Migration): ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='quality_control.qualityreport')), ('task', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='quality_reports', to='engine.task')), ], - options={ - 'db_table': 'quality_control_qualityreport', - }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='AnnotationConflict', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('frame', models.PositiveIntegerField()), + ('type', models.CharField(choices=[('missing_annotation', 'MISSING_ANNOTATION'), ('extra_annotation', 'EXTRA_ANNOTATION'), ('mismatching_label', 'MISMATCHING_LABEL'), ('low_overlap', 'LOW_OVERLAP'), ('mismatching_direction', 'MISMATCHING_DIRECTION'), ('mismatching_attributes', 'MISMATCHING_ATTRIBUTES'), ('mismatching_groups', 'MISMATCHING_GROUPS'), ('covered_annotation', 'COVERED_ANNOTATION')], max_length=32)), + ('importance', models.CharField(choices=[('warning', 'WARNING'), ('error', 'ERROR')], max_length=32)), + ('report', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='conflicts', to='quality_control.qualityreport')), + ], bases=(models.Model,), ), migrations.CreateModel( @@ -73,9 +65,6 @@ class Migration(migrations.Migration): ('type', models.CharField(choices=[('tag', 'TAG'), ('track', 'TRACK'), ('rectangle', 'RECTANGLE'), ('polygon', 'POLYGON'), ('polyline', 'POLYLINE'), ('points', 'POINTS'), ('ellipse', 'ELLIPSE'), ('cuboid', 'CUBOID'), ('mask', 'MASK'), ('skeleton', 'SKELETON')], max_length=32)), ('conflict', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='annotation_ids', to='quality_control.annotationconflict')), ], - options={ - 'db_table': 'quality_control_annotationid', - }, bases=(models.Model,), ), ] From bd8cb30fecaec9ce63f0bf50acb1bb7658e66a04 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 18 May 2023 21:58:32 +0300 Subject: [PATCH 125/257] Fix time comparison --- cvat/apps/quality_control/quality_reports.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cvat/apps/quality_control/quality_reports.py b/cvat/apps/quality_control/quality_reports.py index 351431e65d63..f4ce781d5f3d 100644 --- a/cvat/apps/quality_control/quality_reports.py +++ b/cvat/apps/quality_control/quality_reports.py @@ -2060,7 +2060,7 @@ def _find_next_job_id( def _get_timestamp(job_id: str) -> timezone.datetime: job_timestamp = job_id.split(job_id_prefix, maxsplit=1)[-1] if job_timestamp == 'initial': - return timezone.datetime.min + return timezone.datetime.min.replace(tzinfo=timezone.utc) else: return timezone.datetime.fromtimestamp(float(job_timestamp), tz=timezone.utc) From 73d36928dbb4269e43eeb6b0b5e8a191ee436415 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 18 May 2023 22:05:32 +0300 Subject: [PATCH 126/257] Fix summary fields in create responses, avoid races --- cvat/apps/engine/views.py | 19 ++++++++++++- tests/python/rest_api/test_jobs.py | 37 ++++++++++++++++++++++---- tests/python/rest_api/test_projects.py | 23 ++++++++++++++++ tests/python/rest_api/test_tasks.py | 27 +++++++++++++++++-- 4 files changed, 98 insertions(+), 8 deletions(-) diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index 10fd37b17fbb..e1b93760ced3 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -18,7 +18,7 @@ from django.apps import apps from django.conf import settings from django.contrib.auth.models import User -from django.db import IntegrityError +from django.db import IntegrityError, transaction from django.http import HttpResponse, HttpResponseNotFound, HttpResponseBadRequest from django.utils import timezone from django.db.models import Count, Q @@ -260,12 +260,16 @@ def get_queryset(self): queryset = perm.filter(queryset) return queryset + @transaction.atomic def perform_create(self, serializer, **kwargs): serializer.save( owner=self.request.user, organization=self.request.iam_context['organization'] ) + # Required for the extra summary information added in the queryset + serializer.instance = self.get_queryset().get(pk=serializer.instance.pk) + @extend_schema(methods=['GET'], summary='Export project as a dataset in a specific format', parameters=[ OpenApiParameter('format', description='Desired output format name\n' @@ -761,6 +765,7 @@ def append_backup_chunk(self, request, file_id): def export_backup(self, request, pk=None): return self.serialize(request, backup.export) + @transaction.atomic def perform_update(self, serializer): instance = serializer.instance @@ -773,16 +778,21 @@ def perform_update(self, serializer): if updated_instance.project: updated_instance.project.save() + @transaction.atomic def perform_create(self, serializer, **kwargs): serializer.save( owner=self.request.user, organization=self.request.iam_context['organization'] ) + if serializer.instance.project: db_project = serializer.instance.project db_project.save() assert serializer.instance.organization == db_project.organization + # Required for the extra summary information added in the queryset + serializer.instance = self.get_queryset().get(pk=serializer.instance.pk) + # UploadMixin method def get_upload_dir(self): if 'annotations' in self.action: @@ -1303,6 +1313,13 @@ def get_serializer_class(self): else: return JobWriteSerializer + @transaction.atomic + def perform_create(self, serializer): + super().perform_create(serializer) + + # Required for the extra summary information added in the queryset + serializer.instance = self.get_queryset().get(pk=serializer.instance.pk) + def perform_destroy(self, instance): if instance.type != JobType.GROUND_TRUTH: raise ValidationError("Only ground truth jobs can be removed") diff --git a/tests/python/rest_api/test_jobs.py b/tests/python/rest_api/test_jobs.py index 03af4639a63f..b159cc162d94 100644 --- a/tests/python/rest_api/test_jobs.py +++ b/tests/python/rest_api/test_jobs.py @@ -298,6 +298,30 @@ def test_create_gt_job_in_org_task( user["username"], job_spec, expected_status=HTTPStatus.FORBIDDEN, **extra_kwargs ) + def test_create_response_matches_get(self, tasks, jobs, users): + task = next( + t + for t in tasks + if t["organization"] is None + and all(j["type"] != "ground_truth" for j in jobs if j["task_id"] == t["id"]) + and not users[t["owner"]["id"]]["is_superuser"] + ) + user = task["owner"]["username"] + + spec = { + "task_id": task["id"], + "type": "ground_truth", + "frame_selection_method": "random_uniform", + "count": 1, + } + + response = self._test_create_job_ok(user, spec) + job = json.loads(response.data) + + with make_api_client(user) as api_client: + (_, response) = api_client.jobs_api.retrieve(job["id"]) + assert DeepDiff(job, json.loads(response.data), ignore_order=True) == {} + @pytest.mark.usefixtures("restore_db_per_function") class TestDeleteJobs: @@ -413,7 +437,9 @@ def test_destroy_gt_job_in_org_task( @pytest.mark.usefixtures("restore_db_per_class") class TestGetJobs: - def _test_get_job_200(self, user, jid, *, expected_data: Optional[Dict[str, Any]], **kwargs): + def _test_get_job_200( + self, user, jid, *, expected_data: Optional[Dict[str, Any]] = None, **kwargs + ): with make_api_client(user) as client: (_, response) = client.jobs_api.retrieve(jid, **kwargs) assert response.status == HTTPStatus.OK @@ -475,7 +501,7 @@ def test_can_get_gt_job_in_sandbox_task(self, tasks, jobs, users, admin_user): with make_api_client(admin_user) as api_client: (job, _) = api_client.jobs_api.create(job_spec) - self._test_get_job_200(user, job.id, expected_data=None) + self._test_get_job_200(user, job.id) @pytest.mark.usefixtures("restore_db_per_function") @pytest.mark.parametrize( @@ -531,12 +557,13 @@ def test_get_gt_job_in_org_task( } with make_api_client(admin_user) as api_client: - (job, _) = api_client.jobs_api.create(job_spec, **extra_kwargs) + (_, response) = api_client.jobs_api.create(job_spec, **extra_kwargs) + job = json.loads(response.data) if allow: - self._test_get_job_200(user["username"], job.id, expected_data=None, **extra_kwargs) + self._test_get_job_200(user["username"], job["id"], expected_data=job, **extra_kwargs) else: - self._test_get_job_403(user["username"], job.id, **extra_kwargs) + self._test_get_job_403(user["username"], job["id"], **extra_kwargs) @pytest.mark.usefixtures("restore_db_per_class") diff --git a/tests/python/rest_api/test_projects.py b/tests/python/rest_api/test_projects.py index b43aa6416380..1ab599dd7a0b 100644 --- a/tests/python/rest_api/test_projects.py +++ b/tests/python/rest_api/test_projects.py @@ -315,6 +315,8 @@ def _test_create_project_201(self, user, spec, **kwargs): (_, response) = api_client.projects_api.create(spec, **kwargs) assert response.status == HTTPStatus.CREATED + return response + def _test_create_project_403(self, user, spec, **kwargs): with make_api_client(user) as api_client: (_, response) = api_client.projects_api.create( @@ -322,6 +324,8 @@ def _test_create_project_403(self, user, spec, **kwargs): ) assert response.status == HTTPStatus.FORBIDDEN + return response + def test_if_worker_cannot_create_project(self, find_users): workers = find_users(privilege="worker") assert len(workers) @@ -445,6 +449,25 @@ def test_user_cannot_create_project_with_cloud_storage_without_access( response = post_method(user, "/projects", project_spec) assert response.status_code == HTTPStatus.FORBIDDEN + def test_create_response_matches_get(self, admin_user): + username = admin_user + + spec = { + "name": "test create project", + "labels": [ + { + "name": "a" + } + ] + } + + response = self._test_create_project_201(username, spec) + project = json.loads(response.data) + + with make_api_client(username) as api_client: + (_, response) = api_client.projects_api.retrieve(project["id"]) + assert DeepDiff(project, json.loads(response.data), ignore_order=True) == {} + def _check_cvat_for_video_project_annotations_meta(content, values_to_be_checked): document = ET.fromstring(content) diff --git a/tests/python/rest_api/test_tasks.py b/tests/python/rest_api/test_tasks.py index 0b209ba5c710..21b2839a70c3 100644 --- a/tests/python/rest_api/test_tasks.py +++ b/tests/python/rest_api/test_tasks.py @@ -203,6 +203,8 @@ def _test_create_task_201(self, user, spec, **kwargs): (_, response) = api_client.tasks_api.create(spec, **kwargs) assert response.status == HTTPStatus.CREATED + return response + def _test_create_task_403(self, user, spec, **kwargs): with make_api_client(user) as api_client: (_, response) = api_client.tasks_api.create( @@ -210,6 +212,8 @@ def _test_create_task_403(self, user, spec, **kwargs): ) assert response.status == HTTPStatus.FORBIDDEN + return response + def _test_users_to_create_task_in_project( self, project_id, users, is_staff, is_allow, is_project_staff, **kwargs ): @@ -263,8 +267,27 @@ def test_worker_cannot_create_task_in_project_without_ownership( project_id, users, is_staff, is_allow, is_project_staff, org=org["slug"] ) - def test_can_create_task_with_skeleton(self): - username = "admin1" + def test_create_response_matches_get(self, admin_user): + username = admin_user + + spec = { + "name": "test create task", + "labels": [ + { + "name": "a" + } + ] + } + + response = self._test_create_task_201(username, spec) + task = json.loads(response.data) + + with make_api_client(username) as api_client: + (_, response) = api_client.tasks_api.retrieve(task["id"]) + assert DeepDiff(task, json.loads(response.data), ignore_order=True) == {} + + def test_can_create_task_with_skeleton(self, admin_user): + username = admin_user spec = { "name": f"test admin1 to create a task with skeleton", From 98f62787821eda332c515fa7c10b8d42b849f66e Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 18 May 2023 22:07:36 +0300 Subject: [PATCH 127/257] Avoid quality report updates in tests --- tests/docker-compose.quality_settings.yml | 7 +++++++ tests/python/shared/fixtures/init.py | 1 + 2 files changed, 8 insertions(+) create mode 100644 tests/docker-compose.quality_settings.yml diff --git a/tests/docker-compose.quality_settings.yml b/tests/docker-compose.quality_settings.yml new file mode 100644 index 000000000000..259bcda3ea1e --- /dev/null +++ b/tests/docker-compose.quality_settings.yml @@ -0,0 +1,7 @@ +services: + cvat_server: + environment: + # Avoid quality updates during test runs. + # Note that DB initialization triggers server signals, + # so quality report updates are scheduled for applicable jobs. + CVAT_QUALITY_CHECK_JOB_DELAY: 10000 diff --git a/tests/python/shared/fixtures/init.py b/tests/python/shared/fixtures/init.py index 769c576d8eda..93e14d54d561 100644 --- a/tests/python/shared/fixtures/init.py +++ b/tests/python/shared/fixtures/init.py @@ -29,6 +29,7 @@ "tests/docker-compose.file_share.yml", "tests/docker-compose.minio.yml", "tests/docker-compose.test_servers.yml", + "tests/docker-compose.quality_settings.yml", ] + CONTAINER_NAME_FILES From 421fcf558f113e76f6403ef1b71b20f676fcfe67 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 18 May 2023 22:57:27 +0300 Subject: [PATCH 128/257] Add tests for quality endpoints --- cvat/apps/quality_control/views.py | 4 +- cvat/schema.yml | 12 +++- .../rest_api/test_check_objects_integrity.py | 19 +++++- tests/python/rest_api/test_quality_control.py | 64 +++++++++++++++---- tests/python/shared/fixtures/data.py | 18 ++++++ 5 files changed, 100 insertions(+), 17 deletions(-) diff --git a/cvat/apps/quality_control/views.py b/cvat/apps/quality_control/views.py index 94a781aa62f1..11fd0142e177 100644 --- a/cvat/apps/quality_control/views.py +++ b/cvat/apps/quality_control/views.py @@ -51,7 +51,9 @@ class ConflictsViewSet(viewsets.GenericViewSet, mixins.ListModelMixin): iam_organization_field = None search_fields = [] - filter_fields = list(search_fields) + ['id', 'report_id', 'frame', 'type', 'job_id'] + filter_fields = list(search_fields) + [ + 'id', 'report_id', 'frame', 'type', 'job_id', 'importance' + ] simple_filters = set(filter_fields) - {'id'} lookup_fields = { 'report_id': 'report__id', diff --git a/cvat/schema.yml b/cvat/schema.yml index 562dc76d7e9f..8cc03f4e574f 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -4174,7 +4174,7 @@ paths: required: false in: query description: 'A filter term. Available filter_fields: [''id'', ''report_id'', - ''frame'', ''type'', ''job_id'']' + ''frame'', ''type'', ''job_id'', ''importance'']' schema: type: string - name: frame @@ -4182,6 +4182,14 @@ paths: description: A simple equality filter for the frame field schema: type: integer + - name: importance + in: query + description: A simple equality filter for the importance field + schema: + type: string + enum: + - warning + - error - name: job_id in: query description: A simple equality filter for the job_id field @@ -4224,7 +4232,7 @@ paths: required: false in: query description: 'Which field to use when ordering the results. Available ordering_fields: - [''id'', ''report_id'', ''frame'', ''type'', ''job_id'']' + [''id'', ''report_id'', ''frame'', ''type'', ''job_id'', ''importance'']' schema: type: string - in: query diff --git a/tests/python/rest_api/test_check_objects_integrity.py b/tests/python/rest_api/test_check_objects_integrity.py index a89e4c542878..ee3b5b830d6c 100644 --- a/tests/python/rest_api/test_check_objects_integrity.py +++ b/tests/python/rest_api/test_check_objects_integrity.py @@ -15,9 +15,12 @@ @pytest.mark.usefixtures("restore_db_per_class") class TestGetResources: @pytest.mark.parametrize("path", config.ASSETS_DIR.glob("*.json")) - def test_check_objects_integrity(self, path: Path): + def test_check_objects_integrity(self, path: Path, tasks): with open(path) as f: endpoint = path.stem + if endpoint in ["quality_settings", "quality_reports", "quality_conflicts"]: + endpoint = "/".join(endpoint.split("_")) + if endpoint == "annotations": objects = json.load(f) for jid, annotations in objects["job"].items(): @@ -31,6 +34,20 @@ def test_check_objects_integrity(self, path: Path): ) == {} ) + elif endpoint == "quality/settings": + # There is no list endpoint, but every task must have quality settings + objects = json.load(f) + assert len(tasks) == len(objects) + for sid, settings in objects.items(): + response = config.get_method("admin1", f"quality/settings/{sid}").json() + assert ( + DeepDiff( + settings, + response, + ignore_order=True, + ) + == {} + ) else: response = config.get_method("admin1", endpoint, page_size="all") json_objs = json.load(f) diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py index 9b1d3ec1fe5b..5109155cfc99 100644 --- a/tests/python/rest_api/test_quality_control.py +++ b/tests/python/rest_api/test_quality_control.py @@ -2,27 +2,23 @@ # # SPDX-License-Identifier: MIT -import json -from copy import deepcopy -from http import HTTPStatus -from typing import List +from typing import Any, Dict, List, Tuple import pytest -from cvat_sdk.api_client import models from cvat_sdk.api_client.api_client import ApiClient, Endpoint from cvat_sdk.core.helpers import get_paginated_collection from deepdiff import DeepDiff -from shared.utils.config import BASE_URL, USER_PASS, make_api_client +from shared.utils.config import make_api_client -from .utils import CollectionSimpleFilterTestBase, _test_create_task +from .utils import CollectionSimpleFilterTestBase class TestListQualityReports: def _test_list_200(self, user, task_id, data, **kwargs): with make_api_client(user) as api_client: results = get_paginated_collection( - api_client.quality_reports_api.list_endpoint, + api_client.quality_api.list_reports_endpoint, return_json=True, task_id=task_id, **kwargs, @@ -35,18 +31,29 @@ def test_can_list_quality_reports(self, admin_user, tasks, quality_reports): self._test_list_200(admin_user, task_id, reports) - # test the tree structure - # test filter values - class TestSimpleQualityReportsFilters(CollectionSimpleFilterTestBase): @pytest.fixture(autouse=True) - def setup(self, restore_db_per_class, admin_user, quality_reports): + def setup(self, restore_db_per_class, admin_user, quality_reports, jobs): self.user = admin_user self.samples = quality_reports + self.job_samples = jobs def _get_endpoint(self, api_client: ApiClient) -> Endpoint: - return api_client.quality_reports_api.list_endpoint + return api_client.quality_api.list_reports_endpoint + + def _get_field_samples(self, field: str) -> Tuple[Any, List[Dict[str, Any]]]: + if field == "task_id": + # This filter includes both the task and nested job reports + task_id, task_reports = super()._get_field_samples(field) + task_job_ids = set(j["id"] for j in self.job_samples if j["task_id"] == task_id) + task_reports = list(task_reports) + [ + r for r in self.samples + if self._get_field(r, self._map_field("job_id")) in task_job_ids + ] + return task_id, task_reports + else: + return super()._get_field_samples(field) @pytest.mark.parametrize( "field", @@ -54,3 +61,34 @@ def _get_endpoint(self, api_client: ApiClient) -> Endpoint: ) def test_can_use_simple_filter_for_object_list(self, field): return super().test_can_use_simple_filter_for_object_list(field) + + +class TestSimpleQualityConflictsFilters(CollectionSimpleFilterTestBase): + @pytest.fixture(autouse=True) + def setup(self, restore_db_per_class, admin_user, quality_conflicts, quality_reports): + self.user = admin_user + self.samples = quality_conflicts + self.report_samples = quality_reports + + def _get_endpoint(self, api_client: ApiClient) -> Endpoint: + return api_client.quality_api.list_conflicts_endpoint + + def _get_field_samples(self, field: str) -> Tuple[Any, List[Dict[str, Any]]]: + if field == "job_id": + # This field is not included in the response + job_id = self._find_valid_field_value(self.report_samples, field_path=["job_id"]) + job_reports = set(r["id"] for r in self.report_samples if r["job_id"] == job_id) + job_conflicts = [ + c for c in self.samples + if self._get_field(c, self._map_field("report_id")) in job_reports + ] + return job_id, job_conflicts + else: + return super()._get_field_samples(field) + + @pytest.mark.parametrize( + "field", + ("report_id", "importance", "type", "frame", "job_id"), + ) + def test_can_use_simple_filter_for_object_list(self, field): + return super().test_can_use_simple_filter_for_object_list(field) diff --git a/tests/python/shared/fixtures/data.py b/tests/python/shared/fixtures/data.py index 0f11626506e1..49a856b7716c 100644 --- a/tests/python/shared/fixtures/data.py +++ b/tests/python/shared/fixtures/data.py @@ -112,6 +112,24 @@ def labels(): return Container(json.load(f)["results"]) +@pytest.fixture(scope="session") +def quality_reports(): + with open(ASSETS_DIR / "quality_reports.json") as f: + return Container(json.load(f)["results"]) + + +@pytest.fixture(scope="session") +def quality_conflicts(): + with open(ASSETS_DIR / "quality_conflicts.json") as f: + return Container(json.load(f)["results"]) + + +@pytest.fixture(scope="session") +def quality_settings(): + with open(ASSETS_DIR / "quality_settings.json") as f: + return json.load(f)["results"] + + @pytest.fixture(scope="session") def users_by_name(users): return {user["username"]: user for user in users} From ac6aa97009d13aa4f142683b68292097c82f9562 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 18 May 2023 22:58:09 +0300 Subject: [PATCH 129/257] Format code --- tests/python/rest_api/test_jobs.py | 20 ++++++++++++------- tests/python/rest_api/test_projects.py | 9 +-------- tests/python/rest_api/test_quality_control.py | 6 ++++-- tests/python/rest_api/test_tasks.py | 9 +-------- 4 files changed, 19 insertions(+), 25 deletions(-) diff --git a/tests/python/rest_api/test_jobs.py b/tests/python/rest_api/test_jobs.py index b159cc162d94..88a22a942062 100644 --- a/tests/python/rest_api/test_jobs.py +++ b/tests/python/rest_api/test_jobs.py @@ -143,12 +143,15 @@ def test_can_create_gt_job_with_random_frames(self, admin_user, tasks, task_mode assert job_frame_count == gt_job_meta.size assert job_frame_count == len(gt_job_meta.included_frames) - @pytest.mark.parametrize("task_id, frame_ids", [ - # The results have to be the same in different CVAT revisions, - # so the task ids are fixed - (21, [3, 5, 7]), # annotation task - (5, [11, 14, 20]), # interpolation task - ]) + @pytest.mark.parametrize( + "task_id, frame_ids", + [ + # The results have to be the same in different CVAT revisions, + # so the task ids are fixed + (21, [3, 5, 7]), # annotation task + (5, [11, 14, 20]), # interpolation task + ], + ) def test_can_create_gt_job_with_random_frames_and_seed(self, admin_user, task_id, frame_ids): user = admin_user job_spec = { @@ -207,7 +210,10 @@ def test_can_get_gt_job_meta(self, admin_user, tasks, task_mode): # The frames themselves are the same as in the whole range # this is to allow navigation to adjacent frames if task_mode == "annotation": - assert len(gt_job_meta.frames) == (gt_job_meta.stop_frame + 1 - gt_job_meta.start_frame) / frame_step + assert ( + len(gt_job_meta.frames) + == (gt_job_meta.stop_frame + 1 - gt_job_meta.start_frame) / frame_step + ) elif task_mode == "interpolation": assert len(gt_job_meta.frames) == 1 else: diff --git a/tests/python/rest_api/test_projects.py b/tests/python/rest_api/test_projects.py index 1ab599dd7a0b..8dd4595a25a0 100644 --- a/tests/python/rest_api/test_projects.py +++ b/tests/python/rest_api/test_projects.py @@ -452,14 +452,7 @@ def test_user_cannot_create_project_with_cloud_storage_without_access( def test_create_response_matches_get(self, admin_user): username = admin_user - spec = { - "name": "test create project", - "labels": [ - { - "name": "a" - } - ] - } + spec = {"name": "test create project", "labels": [{"name": "a"}]} response = self._test_create_project_201(username, spec) project = json.loads(response.data) diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py index 5109155cfc99..642f6504e4b0 100644 --- a/tests/python/rest_api/test_quality_control.py +++ b/tests/python/rest_api/test_quality_control.py @@ -48,7 +48,8 @@ def _get_field_samples(self, field: str) -> Tuple[Any, List[Dict[str, Any]]]: task_id, task_reports = super()._get_field_samples(field) task_job_ids = set(j["id"] for j in self.job_samples if j["task_id"] == task_id) task_reports = list(task_reports) + [ - r for r in self.samples + r + for r in self.samples if self._get_field(r, self._map_field("job_id")) in task_job_ids ] return task_id, task_reports @@ -79,7 +80,8 @@ def _get_field_samples(self, field: str) -> Tuple[Any, List[Dict[str, Any]]]: job_id = self._find_valid_field_value(self.report_samples, field_path=["job_id"]) job_reports = set(r["id"] for r in self.report_samples if r["job_id"] == job_id) job_conflicts = [ - c for c in self.samples + c + for c in self.samples if self._get_field(c, self._map_field("report_id")) in job_reports ] return job_id, job_conflicts diff --git a/tests/python/rest_api/test_tasks.py b/tests/python/rest_api/test_tasks.py index 21b2839a70c3..fef4e5aa5c24 100644 --- a/tests/python/rest_api/test_tasks.py +++ b/tests/python/rest_api/test_tasks.py @@ -270,14 +270,7 @@ def test_worker_cannot_create_task_in_project_without_ownership( def test_create_response_matches_get(self, admin_user): username = admin_user - spec = { - "name": "test create task", - "labels": [ - { - "name": "a" - } - ] - } + spec = {"name": "test create task", "labels": [{"name": "a"}]} response = self._test_create_task_201(username, spec) task = json.loads(response.data) From 7ccf16d37c1afaac88e0a54b26545e385fe0e345 Mon Sep 17 00:00:00 2001 From: klakhov Date: Fri, 19 May 2023 11:17:08 +0300 Subject: [PATCH 130/257] added gt conflicts card --- cvat-core/src/quality-report.ts | 20 ++++- .../quality/analytics-card.tsx | 2 +- .../task-analytics-page/quality/common.ts | 6 ++ .../quality/gt-conflicts.tsx | 79 +++++++++++++++++++ .../quality/task-quality-component.tsx | 4 + .../task-analytics-page/styles.scss | 2 +- 6 files changed, 110 insertions(+), 3 deletions(-) create mode 100644 cvat-ui/src/components/task-analytics-page/quality/common.ts create mode 100644 cvat-ui/src/components/task-analytics-page/quality/gt-conflicts.tsx diff --git a/cvat-core/src/quality-report.ts b/cvat-core/src/quality-report.ts index c53fdc114a46..98b7afbca21b 100644 --- a/cvat-core/src/quality-report.ts +++ b/cvat-core/src/quality-report.ts @@ -16,7 +16,13 @@ export interface RawQualityReportData { conflict_count: number, valid_count: number, ds_count: number, - gt_count: number + gt_count: number, + error_count: number, + warning_count: number, + conflicts_by_type: { + extra_annotation: number, + missing_annotation: number, + } }; parameters?: object; } @@ -29,6 +35,12 @@ export interface QualitySummary { dsCount: number; gtCount: number; accuracy: number; + errorCount: number; + warningCount: number; + conflictsByType: { + extraAnnotations: number; + missingAnnotations: number; + } } export default class QualityReport { @@ -92,6 +104,12 @@ export default class QualityReport { gtCount: data.summary.gt_count, accuracy: (data.summary.valid_count / (data.summary.ds_count + data.summary.gt_count - data.summary.valid_count)) * 100, + conflictsByType: { + extraAnnotations: data.summary.conflicts_by_type.extra_annotation, + missingAnnotations: data.summary.conflicts_by_type.missing_annotation, + }, + errorCount: data.summary.error_count, + warningCount: data.summary.warning_count, }), }, parameters: { diff --git a/cvat-ui/src/components/task-analytics-page/quality/analytics-card.tsx b/cvat-ui/src/components/task-analytics-page/quality/analytics-card.tsx index 693bd1c93032..2df0db916ff2 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/analytics-card.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/analytics-card.tsx @@ -15,7 +15,7 @@ interface Props { title: string; size?: number; className?: string; - value: string; + value?: string | number; tooltip?: JSX.Element; bottomElement?: JSX.Element; rightElement?: JSX.Element; diff --git a/cvat-ui/src/components/task-analytics-page/quality/common.ts b/cvat-ui/src/components/task-analytics-page/quality/common.ts new file mode 100644 index 000000000000..78ed21e3d6c5 --- /dev/null +++ b/cvat-ui/src/components/task-analytics-page/quality/common.ts @@ -0,0 +1,6 @@ +export function percent(a?: number, b?: number): string | number { + if (Number.isFinite(a) && typeof a !== 'undefined' && b) { + return Number((a / b) * 100).toFixed(1); + } + return 'N/A'; +} diff --git a/cvat-ui/src/components/task-analytics-page/quality/gt-conflicts.tsx b/cvat-ui/src/components/task-analytics-page/quality/gt-conflicts.tsx new file mode 100644 index 000000000000..3633ea120dee --- /dev/null +++ b/cvat-ui/src/components/task-analytics-page/quality/gt-conflicts.tsx @@ -0,0 +1,79 @@ +// Copyright (C) 2023 CVAT.ai Corporation +// +// SPDX-License-Identifier: MIT + +import '../styles.scss'; + +import React from 'react'; +import Text from 'antd/lib/typography/Text'; +import { QualityReport, Task } from 'cvat-core-wrapper'; +import { useSelector } from 'react-redux'; +import { CombinedState } from 'reducers'; +import AnalyticsCard from './analytics-card'; +import { percent } from './common'; + +interface Props { + task: Task; +} + +const THRESHOLD = 5000; + +function GTConflicts(props: Props): JSX.Element { + const { task } = props; + const tasksReports: QualityReport[] = useSelector((state: CombinedState) => state.analytics.quality.tasksReports); + const taskReport = tasksReports.find((report: QualityReport) => report.taskId === task.id); + + let conflictsRepresentation: string | number = 'N/A'; + let reportSummary; + if (taskReport) { + reportSummary = taskReport.summary; + conflictsRepresentation = reportSummary?.conflictCount > THRESHOLD ? '>5000' : reportSummary?.conflictCount; + } + + const tooltip = ( +
+ + Conflicts by type: + + + Missing annotations:  + {reportSummary?.conflictsByType.missingAnnotations} + + + Extra annotations:  + {reportSummary?.conflictsByType.extraAnnotations} + +
+ ); + + const bottomElement = ( + <> + + Errors: + {' '} + {reportSummary?.errorCount} + {` (${percent(reportSummary?.errorCount, reportSummary?.conflictCount)}%)`} + + + {', '} + Warnings: + {' '} + {reportSummary?.warningCount} + {` (${percent(reportSummary?.warningCount, reportSummary?.conflictCount)}%)`} + + + ); + + return ( + + ); +} + +export default React.memo(GTConflicts); diff --git a/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx b/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx index 0b7e6d60c70b..e090c00c391f 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx @@ -16,6 +16,7 @@ import { CombinedState } from 'reducers'; import EmptyQuality from './empty-quality'; import MeanQuality from './mean-quality'; import JobList from './job-list'; +import GtConflicts from './gt-conflicts'; interface Props { task: Task, @@ -41,6 +42,9 @@ function TaskQualityComponent(props: Props): JSX.Element { + + + diff --git a/cvat-ui/src/components/task-analytics-page/styles.scss b/cvat-ui/src/components/task-analytics-page/styles.scss index 3b55aa858fd4..ec80c11d2f99 100644 --- a/cvat-ui/src/components/task-analytics-page/styles.scss +++ b/cvat-ui/src/components/task-analytics-page/styles.scss @@ -7,7 +7,7 @@ .cvat-analytics-inner { background: $background-color-1; min-height: $grid-unit-size * 95; - padding: $grid-unit-size * 2; + padding: $grid-unit-size * 4; .ant-tabs { height: 100%; From f410a84edb4f860a87f7b7227b20a8b873321008 Mon Sep 17 00:00:00 2001 From: klakhov Date: Fri, 19 May 2023 12:16:17 +0300 Subject: [PATCH 131/257] added issues card --- cvat-core/src/server-proxy.ts | 8 +-- cvat-core/src/session-implementation.ts | 7 ++- cvat-core/src/session.ts | 5 ++ .../task-analytics-page/quality/issues.tsx | 61 +++++++++++++++++++ .../quality/task-quality-component.tsx | 4 +- .../task-analytics-page/styles.scss | 4 ++ 6 files changed, 83 insertions(+), 6 deletions(-) create mode 100644 cvat-ui/src/components/task-analytics-page/quality/issues.tsx diff --git a/cvat-core/src/server-proxy.ts b/cvat-core/src/server-proxy.ts index cca0589f7514..238e1fcaf45e 100644 --- a/cvat-core/src/server-proxy.ts +++ b/cvat-core/src/server-proxy.ts @@ -1243,19 +1243,19 @@ async function getJobs( return response.data; } -async function getJobIssues(jobID: number) { +async function getIssues(filter) { const { backendAPI } = config; let response = null; try { const organization = enableOrganization(); response = await fetchAll(`${backendAPI}/issues`, { - job_id: jobID, + ...filter, ...organization, }); const commentsResponse = await fetchAll(`${backendAPI}/comments`, { - job_id: jobID, + ...filter, ...organization, }); @@ -2298,7 +2298,7 @@ export default Object.freeze({ issues: Object.freeze({ create: createIssue, update: updateIssue, - get: getJobIssues, + get: getIssues, delete: deleteIssue, }), diff --git a/cvat-core/src/session-implementation.ts b/cvat-core/src/session-implementation.ts index a7ceba4b9f86..2630f05cdb73 100644 --- a/cvat-core/src/session-implementation.ts +++ b/cvat-core/src/session-implementation.ts @@ -85,7 +85,7 @@ export function implementJob(Job) { }; Job.prototype.issues.implementation = async function () { - const result = await serverProxy.issues.get(this.id); + const result = await serverProxy.issues.get({job_id: this.id }); return result.map((issue) => new Issue(issue)); }; @@ -513,6 +513,11 @@ export function implementTask(Task) { return result; }; + Task.prototype.issues.implementation = async function () { + const result = await serverProxy.issues.get({ task_id: this.id }); + return result.map((issue) => new Issue(issue)); + }; + Task.prototype.backup.implementation = async function ( targetStorage: Storage, useDefaultSettings: boolean, diff --git a/cvat-core/src/session.ts b/cvat-core/src/session.ts index 9c8d09fa25f8..fdc1f8498eda 100644 --- a/cvat-core/src/session.ts +++ b/cvat-core/src/session.ts @@ -1114,6 +1114,11 @@ export class Task extends Session { return result; } + async issues() { + const result = await PluginRegistry.apiWrapper.call(this, Task.prototype.issues); + return result; + } + static async restore(storage: Storage, file: File | string) { const result = await PluginRegistry.apiWrapper.call(this, Task.restore, storage, file); return result; diff --git a/cvat-ui/src/components/task-analytics-page/quality/issues.tsx b/cvat-ui/src/components/task-analytics-page/quality/issues.tsx new file mode 100644 index 000000000000..37412eb3bf5a --- /dev/null +++ b/cvat-ui/src/components/task-analytics-page/quality/issues.tsx @@ -0,0 +1,61 @@ +// Copyright (C) 2023 CVAT.ai Corporation +// +// SPDX-License-Identifier: MIT + +import '../styles.scss'; + +import React, { useEffect, useState } from 'react'; +import Text from 'antd/lib/typography/Text'; +import { Task } from 'cvat-core-wrapper'; +import notification from 'antd/lib/notification'; +import AnalyticsCard from './analytics-card'; +import { percent } from './common'; + +interface Props { + task: Task; +} + +function Issues(props: Props): JSX.Element { + const { task } = props; + + const [issuesCount, setIssuesCount] = useState(0); + const [resolvedIssues, setResolvedIssues] = useState(0); + useEffect(() => { + task + .issues() + .then((issues: any[]) => { + setIssuesCount(issues.length); + setResolvedIssues(issues.reduce((acc, issue) => (issue.resolved ? acc + 1 : acc), 0)); + }) + .catch((_error: any) => { + notification.error({ + description: _error.toString(), + message: "Couldn't fetch issues", + className: 'cvat-notification-notice-get-issues-error', + }); + }); + }, []); + + const bottomElement = ( + <> + + Resolved: + {' '} + {resolvedIssues} + {` (${percent(resolvedIssues, issuesCount)}%)`} + + + ); + + return ( + + ); +} + +export default React.memo(Issues); diff --git a/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx b/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx index e090c00c391f..e23505d38417 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx @@ -17,6 +17,7 @@ import EmptyQuality from './empty-quality'; import MeanQuality from './mean-quality'; import JobList from './job-list'; import GtConflicts from './gt-conflicts'; +import Issues from './issues'; interface Props { task: Task, @@ -42,8 +43,9 @@ function TaskQualityComponent(props: Props): JSX.Element { - + + diff --git a/cvat-ui/src/components/task-analytics-page/styles.scss b/cvat-ui/src/components/task-analytics-page/styles.scss index ec80c11d2f99..3a5f7b30ac54 100644 --- a/cvat-ui/src/components/task-analytics-page/styles.scss +++ b/cvat-ui/src/components/task-analytics-page/styles.scss @@ -53,6 +53,10 @@ } } +.cvat-task-gt-conflicts { + // margin-right: $grid-unit-size; +} + .cvat-analytics-download-report-button { padding-left: $grid-unit-size * 2; padding-right: $grid-unit-size * 2; From 1f12173ef2e7e9255b0f73c75f4475dfc9a6c0cf Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 19 May 2023 13:59:17 +0300 Subject: [PATCH 132/257] Add more quality tests --- cvat/apps/quality_control/views.py | 3 + cvat/schema.yml | 3 +- tests/python/rest_api/test_quality_control.py | 122 +++++++++++++++++- tests/python/shared/fixtures/data.py | 2 +- 4 files changed, 127 insertions(+), 3 deletions(-) diff --git a/cvat/apps/quality_control/views.py b/cvat/apps/quality_control/views.py index 11fd0142e177..94aec7ba4d32 100644 --- a/cvat/apps/quality_control/views.py +++ b/cvat/apps/quality_control/views.py @@ -165,6 +165,9 @@ def get_queryset(self): @extend_schema( operation_id="quality_retrieve_report_data", summary="Retrieve full contents of the report in JSON format", + responses={ + '200': OpenApiTypes.OBJECT + } ) @action(detail=True, methods=['GET'], url_path='data', serializer_class=None) def data(self, request, pk): diff --git a/cvat/schema.yml b/cvat/schema.yml index 8cc03f4e574f..bb9999657fde 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -4434,7 +4434,8 @@ paths: content: application/vnd.cvat+json: schema: - $ref: '#/components/schemas/QualityReport' + type: object + additionalProperties: {} description: '' /api/quality/reports/debug: get: diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py index 642f6504e4b0..56ae4fb2bee1 100644 --- a/tests/python/rest_api/test_quality_control.py +++ b/tests/python/rest_api/test_quality_control.py @@ -2,7 +2,9 @@ # # SPDX-License-Identifier: MIT -from typing import Any, Dict, List, Tuple +import json +from http import HTTPStatus +from typing import Any, Dict, List, Optional, Tuple import pytest from cvat_sdk.api_client.api_client import ApiClient, Endpoint @@ -32,6 +34,21 @@ def test_can_list_quality_reports(self, admin_user, tasks, quality_reports): self._test_list_200(admin_user, task_id, reports) +class TestGetQualityReports: + @pytest.mark.parametrize("target", ["task", "job"]) + def test_can_get_full_report_data(self, admin_user, target, quality_reports): + report = next(r for r in quality_reports if (r["job_id"] is not None) == (target == "job")) + report_id = report["id"] + + with make_api_client(admin_user) as api_client: + (report_data, response) = api_client.quality_api.retrieve_report_data(report_id) + assert response.status == HTTPStatus.OK + + # Just check several keys exist + for key in ["parameters", "comparison_summary", "frame_results"]: + assert key in report_data.keys(), key + + class TestSimpleQualityReportsFilters(CollectionSimpleFilterTestBase): @pytest.fixture(autouse=True) def setup(self, restore_db_per_class, admin_user, quality_reports, jobs): @@ -94,3 +111,106 @@ def _get_field_samples(self, field: str) -> Tuple[Any, List[Dict[str, Any]]]: ) def test_can_use_simple_filter_for_object_list(self, field): return super().test_can_use_simple_filter_for_object_list(field) + + +class TestGetSettings: + def _test_get_settings_200( + self, user: str, obj_id: int, *, expected_data: Optional[Dict[str, Any]] = None, **kwargs + ): + with make_api_client(user) as api_client: + (_, response) = api_client.quality_api.retrieve_settings(obj_id, **kwargs) + assert response.status == HTTPStatus.OK + + if expected_data is not None: + assert DeepDiff(expected_data, json.loads(response.data), ignore_order=True) == {} + + return response + + def _test_get_settings_403(self, user: str, obj_id: int, **kwargs): + with make_api_client(user) as api_client: + (_, response) = api_client.quality_api.retrieve_settings( + obj_id, **kwargs, _parse_response=False, _check_status=False + ) + assert response.status == HTTPStatus.FORBIDDEN + + return response + + def test_can_get_settings(self, admin_user, quality_settings): + settings_id, settings = next(iter(quality_settings.items())) + self._test_get_settings_200(admin_user, settings_id, expected_data=settings) + + @pytest.mark.parametrize("is_staff, allow", [(True, True), (False, False)]) + def test_user_get_settings_in_sandbox_task( + self, quality_settings, tasks, users, is_task_staff, is_staff, allow + ): + task = next( + t + for t in tasks + if t["organization"] is None and not users[t["owner"]["id"]]["is_superuser"] + ) + + if is_staff: + user = task["owner"]["username"] + else: + user = next(u for u in users if not is_task_staff(u["id"], task["id"]))["username"] + + settings_id = task["quality_settings"] + settings = quality_settings[settings_id] + + if allow: + self._test_get_settings_200(user, settings_id, expected_data=settings) + else: + self._test_get_settings_403(user, settings_id) + + @pytest.mark.parametrize( + "org_role, is_staff, allow", + [ + ("owner", True, True), + ("owner", False, True), + ("maintainer", True, True), + ("maintainer", False, True), + ("supervisor", True, True), + ("supervisor", False, False), + ("worker", True, True), + ("worker", False, False), + ], + ) + def test_user_get_settings_in_org_task( + self, + tasks, + users, + is_org_member, + is_task_staff, + org_role, + is_staff, + allow, + quality_settings, + ): + for user in users: + task = next( + ( + t + for t in tasks + if t["organization"] is not None + and is_task_staff(user["id"], t["id"]) == is_staff + and is_org_member(user["id"], t["organization"], role=org_role) + ), + None, + ) + if task is not None: + break + + assert task + + org_id = task["organization"] + extra_kwargs = {"org_id": org_id} + + settings_id = task["quality_settings"] + settings = quality_settings[settings_id] + + if allow: + self._test_get_settings_200( + user["username"], settings_id, expected_data=settings, **extra_kwargs + ) + else: + self._test_get_settings_403(user["username"], settings_id, **extra_kwargs) diff --git a/tests/python/shared/fixtures/data.py b/tests/python/shared/fixtures/data.py index 49a856b7716c..acc6f85c6f85 100644 --- a/tests/python/shared/fixtures/data.py +++ b/tests/python/shared/fixtures/data.py @@ -127,7 +127,7 @@ def quality_conflicts(): @pytest.fixture(scope="session") def quality_settings(): with open(ASSETS_DIR / "quality_settings.json") as f: - return json.load(f)["results"] + return {int(k): v for k, v in json.load(f).items()} @pytest.fixture(scope="session") From 2aa1eee8a670ee83e92e90ac97e400f2b8dfa6cc Mon Sep 17 00:00:00 2001 From: klakhov Date: Fri, 19 May 2023 14:13:58 +0300 Subject: [PATCH 133/257] updated analytics utility functions --- .../task-analytics-page/quality/common.ts | 13 +++++++++++-- .../task-analytics-page/quality/gt-conflicts.tsx | 14 ++++++-------- .../task-analytics-page/quality/issues.tsx | 6 +++--- .../src/components/task-analytics-page/styles.scss | 4 ---- 4 files changed, 20 insertions(+), 17 deletions(-) diff --git a/cvat-ui/src/components/task-analytics-page/quality/common.ts b/cvat-ui/src/components/task-analytics-page/quality/common.ts index 78ed21e3d6c5..43461abdee0d 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/common.ts +++ b/cvat-ui/src/components/task-analytics-page/quality/common.ts @@ -1,6 +1,15 @@ export function percent(a?: number, b?: number): string | number { - if (Number.isFinite(a) && typeof a !== 'undefined' && b) { - return Number((a / b) * 100).toFixed(1); + if (typeof a !== 'undefined' && Number.isFinite(a) && b) { + return `${Number((a / b) * 100).toFixed(1)}%`; + } + return 'N/A'; +} + +const THRESHOLD = 5000; +export function clampValue(a?: number): string | number { + if (typeof a !== 'undefined' && Number.isFinite(a)) { + if (a <= THRESHOLD) return a; + return `> ${THRESHOLD}`; } return 'N/A'; } diff --git a/cvat-ui/src/components/task-analytics-page/quality/gt-conflicts.tsx b/cvat-ui/src/components/task-analytics-page/quality/gt-conflicts.tsx index 3633ea120dee..b0a1ae89b706 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/gt-conflicts.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/gt-conflicts.tsx @@ -10,14 +10,12 @@ import { QualityReport, Task } from 'cvat-core-wrapper'; import { useSelector } from 'react-redux'; import { CombinedState } from 'reducers'; import AnalyticsCard from './analytics-card'; -import { percent } from './common'; +import { percent, clampValue } from './common'; interface Props { task: Task; } -const THRESHOLD = 5000; - function GTConflicts(props: Props): JSX.Element { const { task } = props; const tasksReports: QualityReport[] = useSelector((state: CombinedState) => state.analytics.quality.tasksReports); @@ -27,7 +25,7 @@ function GTConflicts(props: Props): JSX.Element { let reportSummary; if (taskReport) { reportSummary = taskReport.summary; - conflictsRepresentation = reportSummary?.conflictCount > THRESHOLD ? '>5000' : reportSummary?.conflictCount; + conflictsRepresentation = clampValue(reportSummary?.conflictCount); } const tooltip = ( @@ -51,15 +49,15 @@ function GTConflicts(props: Props): JSX.Element { Errors: {' '} - {reportSummary?.errorCount} - {` (${percent(reportSummary?.errorCount, reportSummary?.conflictCount)}%)`} + {clampValue(reportSummary?.errorCount)} + {` (${percent(reportSummary?.errorCount, reportSummary?.conflictCount)})`} {', '} Warnings: {' '} - {reportSummary?.warningCount} - {` (${percent(reportSummary?.warningCount, reportSummary?.conflictCount)}%)`} + {clampValue(reportSummary?.warningCount)} + {` (${percent(reportSummary?.warningCount, reportSummary?.conflictCount)})`} ); diff --git a/cvat-ui/src/components/task-analytics-page/quality/issues.tsx b/cvat-ui/src/components/task-analytics-page/quality/issues.tsx index 37412eb3bf5a..9763ca0f4fd9 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/issues.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/issues.tsx @@ -9,7 +9,7 @@ import Text from 'antd/lib/typography/Text'; import { Task } from 'cvat-core-wrapper'; import notification from 'antd/lib/notification'; import AnalyticsCard from './analytics-card'; -import { percent } from './common'; +import { percent, clampValue } from './common'; interface Props { task: Task; @@ -41,8 +41,8 @@ function Issues(props: Props): JSX.Element { Resolved: {' '} - {resolvedIssues} - {` (${percent(resolvedIssues, issuesCount)}%)`} + {clampValue(resolvedIssues)} + {` (${percent(resolvedIssues, issuesCount)})`} ); diff --git a/cvat-ui/src/components/task-analytics-page/styles.scss b/cvat-ui/src/components/task-analytics-page/styles.scss index 3a5f7b30ac54..ec80c11d2f99 100644 --- a/cvat-ui/src/components/task-analytics-page/styles.scss +++ b/cvat-ui/src/components/task-analytics-page/styles.scss @@ -53,10 +53,6 @@ } } -.cvat-task-gt-conflicts { - // margin-right: $grid-unit-size; -} - .cvat-analytics-download-report-button { padding-left: $grid-unit-size * 2; padding-right: $grid-unit-size * 2; From ac4e56f2bddc59a20d17689d72267a14a8e18a68 Mon Sep 17 00:00:00 2001 From: klakhov Date: Fri, 19 May 2023 14:20:17 +0300 Subject: [PATCH 134/257] added quality reports hint --- .../quality/task-quality-component.tsx | 10 ++++++++-- .../src/components/task-analytics-page/styles.scss | 12 ++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx b/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx index e23505d38417..def14201fb2f 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx @@ -9,6 +9,7 @@ import { Job, JobType, Task, } from 'cvat-core-wrapper'; import { Row } from 'antd/lib/grid'; +import Text from 'antd/lib/typography/Text'; import JobItem from 'components/job-item/job-item'; import { useDispatch, useSelector } from 'react-redux'; import { getQualityReportsAsync } from 'actions/analytics-actions'; @@ -43,11 +44,16 @@ function TaskQualityComponent(props: Props): JSX.Element { - + - + + + Quality reports are not computed unless the GT job is in the accepted state. + + + diff --git a/cvat-ui/src/components/task-analytics-page/styles.scss b/cvat-ui/src/components/task-analytics-page/styles.scss index ec80c11d2f99..c410b13628a4 100644 --- a/cvat-ui/src/components/task-analytics-page/styles.scss +++ b/cvat-ui/src/components/task-analytics-page/styles.scss @@ -14,7 +14,15 @@ } } +.cvat-task-quality-page { + >.ant-row { + margin-top: $grid-unit-size; + } +} + .cvat-task-quality-page-empty { + @extend .cvat-task-quality-page; + display: flex; justify-content: center; align-items: center; @@ -92,3 +100,7 @@ margin-bottom: $grid-unit-size; } + +.cvat-task-quality-reports-hint { + margin-bottom: $grid-unit-size * 3; +} From 8f519cb75776ef82ea8ade872045ef5ba1722a8e Mon Sep 17 00:00:00 2001 From: klakhov Date: Fri, 19 May 2023 17:01:25 +0300 Subject: [PATCH 135/257] updated job card --- cvat-ui/src/assets/duration-icon.svg | 3 + cvat-ui/src/assets/frame-count-icon.svg | 3 + cvat-ui/src/assets/frames-icon.svg | 3 + cvat-ui/src/components/job-item/job-item.tsx | 110 +++++++++++++----- cvat-ui/src/components/job-item/styles.scss | 28 ++++- .../task-analytics-page.tsx | 4 +- cvat-ui/src/icons.tsx | 6 + 7 files changed, 122 insertions(+), 35 deletions(-) create mode 100644 cvat-ui/src/assets/duration-icon.svg create mode 100644 cvat-ui/src/assets/frame-count-icon.svg create mode 100644 cvat-ui/src/assets/frames-icon.svg diff --git a/cvat-ui/src/assets/duration-icon.svg b/cvat-ui/src/assets/duration-icon.svg new file mode 100644 index 000000000000..069b5ed58a11 --- /dev/null +++ b/cvat-ui/src/assets/duration-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/cvat-ui/src/assets/frame-count-icon.svg b/cvat-ui/src/assets/frame-count-icon.svg new file mode 100644 index 000000000000..3bf83dde305e --- /dev/null +++ b/cvat-ui/src/assets/frame-count-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/cvat-ui/src/assets/frames-icon.svg b/cvat-ui/src/assets/frames-icon.svg new file mode 100644 index 000000000000..1a1aa8618bf3 --- /dev/null +++ b/cvat-ui/src/assets/frames-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/cvat-ui/src/components/job-item/job-item.tsx b/cvat-ui/src/components/job-item/job-item.tsx index 1287b1c6dc2b..73902f76bee4 100644 --- a/cvat-ui/src/components/job-item/job-item.tsx +++ b/cvat-ui/src/components/job-item/job-item.tsx @@ -9,14 +9,17 @@ import { Col, Row } from 'antd/lib/grid'; import Card from 'antd/lib/card'; import Text from 'antd/lib/typography/Text'; import Select from 'antd/lib/select'; +import Icon from '@ant-design/icons'; import { Job, JobStage, JobType, User, } from 'cvat-core-wrapper'; -import { FundProjectionScreenOutlined, MoreOutlined } from '@ant-design/icons/lib/icons'; +import { MoreOutlined, ProjectOutlined } from '@ant-design/icons/lib/icons'; import { Link } from 'react-router-dom'; import moment from 'moment'; import UserSelector from 'components/task-page/user-selector'; import Dropdown from 'antd/lib/dropdown'; +import Tag from 'antd/lib/tag'; +import { DurationIcon, FrameCountIcon, FramesIcon } from 'icons'; import JobActionsMenu from './job-actions-menu'; interface Props { @@ -28,39 +31,66 @@ function JobItem(props: Props): JSX.Element { const { job, onJobUpdate } = props; const { stage } = job; const created = moment(job.createdDate); + const updated = moment(job.createdDate); const now = moment(moment.now()); - + console.log(job); return (
- - {job.type === JobType.GROUND_TRUTH ? : null } - - + {`Job #${job.id}`} - + { + job.type === JobType.GROUND_TRUTH && ( + + Ground truth + + ) + } + {/* {job.state.charAt(0).toUpperCase() + job.state.slice(1)} + */} + + + + Created on + {` ${created.format('MMMM Do YYYY HH:MM')}`} - {`Started on ${created.format('MMMM Do YYYY HH:MM')}`} - - - {`Duration: ${moment.duration(now.diff(created)).humanize()}`} + Last updated + {` ${updated.format('MMMM Do YYYY HH:MM')}`} - + - Stage + + Assignee: + + { + if (job?.assignee?.id === user?.id) return; + if (user) { + job.assignee = user; + onJobUpdate(job); + } + }} + /> + + + + Stage: + - {/* }> - - */} diff --git a/cvat-ui/src/reducers/index.ts b/cvat-ui/src/reducers/index.ts index 9deba4b70326..3dde0dccd049 100644 --- a/cvat-ui/src/reducers/index.ts +++ b/cvat-ui/src/reducers/index.ts @@ -93,6 +93,11 @@ export interface JobsState { previews: { [index: number]: Preview; }; + activities: { + deletes: { + [tid: number]: boolean; + }; + }; } export interface TasksState { @@ -465,6 +470,7 @@ export interface NotificationsState { updating: null | ErrorState; fetching: null | ErrorState; creating: null | ErrorState; + deleting: null | ErrorState; }; formats: { fetching: null | ErrorState; diff --git a/cvat-ui/src/reducers/jobs-reducer.ts b/cvat-ui/src/reducers/jobs-reducer.ts index efea5581da65..5e567f877184 100644 --- a/cvat-ui/src/reducers/jobs-reducer.ts +++ b/cvat-ui/src/reducers/jobs-reducer.ts @@ -16,6 +16,9 @@ const defaultState: JobsState = { }, current: [], previews: {}, + activities: { + deletes: {}, + }, }; export default (state: JobsState = defaultState, action: JobsActions): JobsState => { @@ -89,6 +92,54 @@ export default (state: JobsState = defaultState, action: JobsActions): JobsState }, }; } + case JobsActionTypes.DELETE_JOB: { + const { jobID } = action.payload; + const { deletes } = state.activities; + + deletes[jobID] = false; + + return { + ...state, + activities: { + ...state.activities, + deletes: { + ...deletes, + }, + }, + }; + } + case JobsActionTypes.DELETE_JOB_SUCCESS: { + const { jobID } = action.payload; + const { deletes } = state.activities; + + deletes[jobID] = true; + + return { + ...state, + activities: { + ...state.activities, + deletes: { + ...deletes, + }, + }, + }; + } + case JobsActionTypes.DELETE_JOB_FAILED: { + const { jobID } = action.payload; + const { deletes } = state.activities; + + delete deletes[jobID]; + + return { + ...state, + activities: { + ...state.activities, + deletes: { + ...deletes, + }, + }, + }; + } default: { return state; } diff --git a/cvat-ui/src/reducers/notifications-reducer.ts b/cvat-ui/src/reducers/notifications-reducer.ts index 79c9de0391f9..c875b389c01f 100644 --- a/cvat-ui/src/reducers/notifications-reducer.ts +++ b/cvat-ui/src/reducers/notifications-reducer.ts @@ -62,6 +62,7 @@ const defaultState: NotificationsState = { updating: null, fetching: null, creating: null, + deleting: null, }, formats: { fetching: null, @@ -1575,6 +1576,23 @@ export default function (state = defaultState, action: AnyAction): Notifications }, }; } + case JobsActionTypes.DELETE_JOB_FAILED: { + const { jobID } = action.payload; + return { + ...state, + errors: { + ...state.errors, + jobs: { + ...state.errors.jobs, + deleting: { + message: `Could not delete the job #${jobID}`, + reason: action.payload.error.toString(), + className: 'cvat-notification-notice-delete-job-failed', + }, + }, + }, + }; + } case WebhooksActionsTypes.GET_WEBHOOKS_FAILED: { return { ...state, From 819d34740a117adec594e8a05e9a560ebf1fdfcb Mon Sep 17 00:00:00 2001 From: klakhov Date: Fri, 19 May 2023 18:42:51 +0300 Subject: [PATCH 137/257] improved job card on smaller screens --- cvat-ui/src/components/job-item/job-item.tsx | 4 ++-- cvat-ui/src/components/job-item/styles.scss | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/cvat-ui/src/components/job-item/job-item.tsx b/cvat-ui/src/components/job-item/job-item.tsx index 7f4fc6b674ca..df31e8958d31 100644 --- a/cvat-ui/src/components/job-item/job-item.tsx +++ b/cvat-ui/src/components/job-item/job-item.tsx @@ -73,7 +73,7 @@ function JobItem(props: Props): JSX.Element { - + @@ -119,7 +119,7 @@ function JobItem(props: Props): JSX.Element { - + diff --git a/cvat-ui/src/components/job-item/styles.scss b/cvat-ui/src/components/job-item/styles.scss index e21d3ec96a91..ec54a5a3a272 100644 --- a/cvat-ui/src/components/job-item/styles.scss +++ b/cvat-ui/src/components/job-item/styles.scss @@ -49,6 +49,10 @@ } .cvat-job-assignee-selector { - max-width: $grid-unit-size * 15; + max-width: $grid-unit-size * 16; + + @media screen and (max-width: 1300px) { + max-width: $grid-unit-size * 12; + } } } From c11d2a6c4da4fd8372d99e497710c3b1515b8ee6 Mon Sep 17 00:00:00 2001 From: klakhov Date: Fri, 19 May 2023 19:01:45 +0300 Subject: [PATCH 138/257] added empty job card --- .../task-analytics-page/quality/empty-job.tsx | 39 ++++++++++++++++ .../quality/empty-quality.tsx | 46 ------------------- .../quality/task-quality-component.tsx | 7 +-- .../task-analytics-page/styles.scss | 19 +++++++- 4 files changed, 58 insertions(+), 53 deletions(-) create mode 100644 cvat-ui/src/components/task-analytics-page/quality/empty-job.tsx delete mode 100644 cvat-ui/src/components/task-analytics-page/quality/empty-quality.tsx diff --git a/cvat-ui/src/components/task-analytics-page/quality/empty-job.tsx b/cvat-ui/src/components/task-analytics-page/quality/empty-job.tsx new file mode 100644 index 000000000000..02bea25e6877 --- /dev/null +++ b/cvat-ui/src/components/task-analytics-page/quality/empty-job.tsx @@ -0,0 +1,39 @@ +// Copyright (C) 2023 CVAT.ai Corporation +// +// SPDX-License-Identifier: MIT + +import '../styles.scss'; + +import React from 'react'; +import { Link } from 'react-router-dom'; +import { Col, Row } from 'antd/lib/grid'; +import Card from 'antd/lib/card'; +import Button from 'antd/lib/button'; +import Title from 'antd/lib/typography/Title'; + +interface Props { + taskId: number, +} + +function EmptyJobComponent(props: Props): JSX.Element { + const { taskId } = props; + + return ( + + + + + No Ground Truth job created yet... + + + + + + + + ); +} + +export default React.memo(EmptyJobComponent); diff --git a/cvat-ui/src/components/task-analytics-page/quality/empty-quality.tsx b/cvat-ui/src/components/task-analytics-page/quality/empty-quality.tsx deleted file mode 100644 index 5df1e47cc7a9..000000000000 --- a/cvat-ui/src/components/task-analytics-page/quality/empty-quality.tsx +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (C) 2023 CVAT.ai Corporation -// -// SPDX-License-Identifier: MIT - -import '../styles.scss'; - -import React from 'react'; -import { Link } from 'react-router-dom'; -import Text from 'antd/lib/typography/Text'; -import Empty from 'antd/lib/empty'; -import { Col, Row } from 'antd/lib/grid'; - -interface Props { - taskId: number, -} - -function EmptyQualityComponent(props: Props): JSX.Element { - const { taskId } = props; - - return ( -
- - -
- No Ground truth job created yet ... - - - - - To start viewing quality data - - - - - create a new one - - - - )} - /> - - ); -} - -export default React.memo(EmptyQualityComponent); diff --git a/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx b/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx index def14201fb2f..e1cc7de5c47a 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx @@ -14,11 +14,11 @@ import JobItem from 'components/job-item/job-item'; import { useDispatch, useSelector } from 'react-redux'; import { getQualityReportsAsync } from 'actions/analytics-actions'; import { CombinedState } from 'reducers'; -import EmptyQuality from './empty-quality'; import MeanQuality from './mean-quality'; import JobList from './job-list'; import GtConflicts from './gt-conflicts'; import Issues from './issues'; +import EmptyGtJob from './empty-job'; interface Props { task: Task, @@ -35,9 +35,6 @@ function TaskQualityComponent(props: Props): JSX.Element { }, []); const gtJob = task.jobs.find((job: Job) => job.type === JobType.GROUND_TRUTH); - if (!gtJob) { - return (); - } return (
@@ -54,7 +51,7 @@ function TaskQualityComponent(props: Props): JSX.Element { - + {gtJob ? : } diff --git a/cvat-ui/src/components/task-analytics-page/styles.scss b/cvat-ui/src/components/task-analytics-page/styles.scss index c410b13628a4..3ceedcccadb5 100644 --- a/cvat-ui/src/components/task-analytics-page/styles.scss +++ b/cvat-ui/src/components/task-analytics-page/styles.scss @@ -93,14 +93,29 @@ } .cvat-task-analytics-title { + margin-bottom: $grid-unit-size; + h4 { display: inline; margin-right: $grid-unit-size; } - - margin-bottom: $grid-unit-size; } .cvat-task-quality-reports-hint { margin-bottom: $grid-unit-size * 3; } + +.cvat-job-item-empty-gt { + .ant-card-body { + padding: $grid-unit-size * 3; + } + + h5 { + margin: 0; + } + + .ant-btn { + padding-left: $grid-unit-size * 3; + padding-right: $grid-unit-size * 3; + } +} From 5d536dca7e670abceae765465b5c65bcf276bfdb Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 19 May 2023 19:21:13 +0300 Subject: [PATCH 139/257] Add quality reports creation endpoint --- cvat/apps/iam/permissions.py | 19 +++ cvat/apps/iam/rules/quality_reports.rego | 2 +- cvat/apps/quality_control/quality_reports.py | 122 +++++++++++++++---- cvat/apps/quality_control/serializers.py | 4 + cvat/apps/quality_control/signals.py | 2 +- cvat/apps/quality_control/urls.py | 2 +- cvat/apps/quality_control/views.py | 95 +++++++++++++-- cvat/schema.yml | 67 ++++++++++ cvat/settings/base.py | 2 +- 9 files changed, 279 insertions(+), 36 deletions(-) diff --git a/cvat/apps/iam/permissions.py b/cvat/apps/iam/permissions.py index af288df1d74d..f8ea2a7dc74b 100644 --- a/cvat/apps/iam/permissions.py +++ b/cvat/apps/iam/permissions.py @@ -1601,10 +1601,17 @@ def get_resource(self): class QualityReportPermission(OpenPolicyAgentPermission): obj: Optional[QualityReport] + job_owner_id: Optional[int] class Scopes(StrEnum): LIST = 'list' + CREATE = 'create' VIEW = 'view' + VIEW_STATUS = 'view:status' + + @classmethod + def create_scope_check_status(cls, request, job_owner_id: int): + return cls(**cls.unpack_context(request), scope='view:status', job_owner_id=job_owner_id) @classmethod def create(cls, request, view, obj): @@ -1624,12 +1631,21 @@ def create(cls, request, view, obj): elif scope == Scopes.LIST and isinstance(obj, Task): permissions.append(TaskPermission.create_base_perm(request, view, scope=TaskPermission.Scopes.VIEW, obj=obj)) + elif scope == Scopes.CREATE: + task_id = request.data.get('task_id') + if task_id is not None: + permissions.append(TaskPermission.create_scope_view(request, task_id)) + + permissions.append(cls.create_base_perm(request, view, scope, obj)) else: permissions.append(cls.create_base_perm(request, view, scope, obj)) return permissions def __init__(self, **kwargs): + if 'job_owner_id' in kwargs: + self.job_owner_id = int(kwargs.pop('job_owner_id')) + super().__init__(**kwargs) self.url = settings.IAM_OPA_DATA_URL + '/quality_reports/allow' @@ -1638,6 +1654,7 @@ def get_scopes(request, view, obj): Scopes = __class__.Scopes return [{ 'list': Scopes.LIST, + 'create': Scopes.CREATE, 'retrieve': Scopes.VIEW, 'data': Scopes.VIEW, }.get(view.action, None)] @@ -1666,6 +1683,8 @@ def get_resource(self): "assignee": { "id": getattr(task.project.assignee, 'id', None) } } if task.project else None, } + elif self.scope == self.Scopes.VIEW_STATUS: + data = { "owner": self.job_owner_id } return data diff --git a/cvat/apps/iam/rules/quality_reports.rego b/cvat/apps/iam/rules/quality_reports.rego index e3d195d1c872..a5fcab55ff82 100644 --- a/cvat/apps/iam/rules/quality_reports.rego +++ b/cvat/apps/iam/rules/quality_reports.rego @@ -7,7 +7,7 @@ import data.utils import data.organizations # input: { -# "scope": <"view"|"list"> or null, +# "scope": <"view"|"list"|"create"|"view:status"> or null, # "auth": { # "user": { # "id": , diff --git a/cvat/apps/quality_control/quality_reports.py b/cvat/apps/quality_control/quality_reports.py index f4ce781d5f3d..7f6e5cd8f977 100644 --- a/cvat/apps/quality_control/quality_reports.py +++ b/cvat/apps/quality_control/quality_reports.py @@ -12,6 +12,7 @@ import itertools import math +from uuid import uuid4 from attrs import asdict, define, fields_dict import datumaro as dm @@ -19,9 +20,9 @@ from django.db import transaction from django.conf import settings from django.utils import timezone +from scipy.optimize import linear_sum_assignment import django_rq import numpy as np -from scipy.optimize import linear_sum_assignment from cvat.apps.dataset_manager.task import JobAnnotation from cvat.apps.dataset_manager.bindings import (CommonData, CvatToDmAnnotationConverter, @@ -29,7 +30,9 @@ from cvat.apps.dataset_manager.util import bulk_create from cvat.apps.dataset_manager.formats.registry import dm_env -from cvat.apps.engine.models import DimensionType, Job, JobType, ShapeType, Task +from cvat.apps.engine.models import ( + DimensionType, Job, JobType, ShapeType, Task, StatusChoice, StageChoice +) from cvat.apps.quality_control.models import ( AnnotationConflictImportance, AnnotationConflictType, AnnotationType, @@ -2026,8 +2029,9 @@ def generate_report(self) -> ComparisonReport: ) -class ReportUpdateManager: +class QualityReportUpdateManager: _QUEUE_JOB_PREFIX = "update-quality-metrics-task-" + _RQ_CUSTOM_QUALITY_CHECK_JOB_TYPE = 'custom_quality_check' @classmethod def _get_quality_check_job_delay(cls) -> timedelta: @@ -2036,9 +2040,15 @@ def _get_quality_check_job_delay(cls) -> timedelta: def _get_scheduler(self): return django_rq.get_scheduler(settings.CVAT_QUEUES.QUALITY_REPORTS.value) + def _get_queue(self): + return django_rq.get_queue(settings.CVAT_QUEUES.QUALITY_REPORTS.value) + def _make_queue_job_prefix(self, task: Task) -> str: return f'{self._QUEUE_JOB_PREFIX}{task.id}-' + def _make_custom_quality_check_job_id(self) -> str: + return uuid4().hex + def _make_initial_queue_job_id(self, task: Task) -> str: return f'{self._make_queue_job_prefix(task)}initial' @@ -2090,19 +2100,37 @@ def _get_timestamp(job_id: str) -> timezone.datetime: return queue_job_id - def _should_update(self, task: Task): + class QualityReportsNotAvailable(Exception): + pass + + def _check_quality_reporting_available(self, task: Task): if task.dimension != DimensionType.DIM_2D: - # Not supported - return False + raise self.QualityReportsNotAvailable( + "Quality reports are only supported in 2d tasks" + ) - if not task.gt_job: - # Nothing to compute + gt_job = task.gt_job + if gt_job is None or not ( + gt_job.stage == StageChoice.ACCEPTANCE and gt_job.status == StatusChoice.COMPLETED + ): + return self.QualityReportsNotAvailable( + "Quality reports require a Ground Truth job in the task " + f"at the {StageChoice.ACCEPTANCE} stage " + f"and in the {StatusChoice.COMPLETED} state" + ) + + def _should_update(self, task: Task) -> bool: + try: + self._check_quality_reporting_available(task) + return True + except self.QualityReportsNotAvailable: return False - return True + def schedule_quality_autoupdate_job(self, task: Task): + """ + This function schedules a quality report autoupdate job + """ - def schedule_quality_check_job(self, task: Task): - # This function schedules a report computing job in the queue # The algorithm is lock-free. It should keep the following properties: # - job names are stable between potential writers # - if multiple simultaneous writes can happen, the objects written must be the same @@ -2122,14 +2150,53 @@ def schedule_quality_check_job(self, task: Task): if queue_job_id not in existing_job_ids: scheduler.enqueue_at( next_job_time, - self._update_task_quality_metrics, + self._check_task_quality, task_id=task.id, job_id=queue_job_id, ) + def schedule_quality_check_job(self, task: Task, *, user_id: int) -> str: + """ + Schedules a quality report computation job, supposed for updates by a request. + """ + + self._check_quality_reporting_available(task) + + rq_id = self._make_custom_quality_check_job_id() + + queue = self._get_queue() + queue.enqueue( + self._check_task_quality, + task_id=task.id, + job_id=rq_id, + meta={ + 'user_id': user_id, + 'job_type': self._RQ_CUSTOM_QUALITY_CHECK_JOB_TYPE + }, + result_ttl=60, + failure_ttl=60, + ) + + return rq_id + + def get_quality_check_job(self, rq_id: str): + queue = self._get_queue() + rq_job = queue.fetch_job(rq_id) + + if rq_job and not self.is_custom_quality_check_job(rq_job): + rq_job = None + + return rq_job + + def is_custom_quality_check_job(self, rq_job) -> bool: + return rq_job.meta.get('job_type') == self._RQ_CUSTOM_QUALITY_CHECK_JOB_TYPE + @classmethod @silk_profile() - def _update_task_quality_metrics(cls, *, task_id: int): + def _check_task_quality(cls, *, task_id: int) -> int: + return cls()._compute_reports(task_id=task_id) + + def _compute_reports(self, task_id: int) -> int: with transaction.atomic(): # The task could have been deleted during scheduling try: @@ -2173,7 +2240,7 @@ def _update_task_quality_metrics(cls, *, task_id: int): for job in jobs } - quality_params = cls._get_task_quality_params(task) + quality_params = self._get_task_quality_params(task) job_comparison_reports: Dict[int, ComparisonReport] = {} for job in jobs: @@ -2186,7 +2253,7 @@ def _update_task_quality_metrics(cls, *, task_id: int): # Release resources del job_data_provider.dm_dataset - task_comparison_report = cls._compute_task_report(task, job_comparison_reports) + task_comparison_report = self._compute_task_report(task, job_comparison_reports) with transaction.atomic(): # The task could have been deleted during processing @@ -2195,9 +2262,9 @@ def _update_task_quality_metrics(cls, *, task_id: int): except Task.DoesNotExist: return - last_report_time = cls._get_last_report_time(task) - if (last_report_time - and timezone.now() < last_report_time + cls._get_quality_check_job_delay() + if not self.is_custom_quality_check_job(self._get_current_job()) and ( + last_report_time := self._get_last_report_time(task) + and timezone.now() < last_report_time + self._get_quality_check_job_delay() ): # Discard this report as it has probably been computed in parallel # with another one @@ -2216,7 +2283,7 @@ def _update_task_quality_metrics(cls, *, task_id: int): job_quality_reports[job.id] = job_report - cls._save_reports( + task_report = self._save_reports( task_report=dict( task=task, target_last_updated=task.updated_date, @@ -2227,9 +2294,14 @@ def _update_task_quality_metrics(cls, *, task_id: int): job_reports=list(job_quality_reports.values()) ) - @classmethod + return task_report.id + + def _get_current_job(self): + from rq import get_current_job + return get_current_job() + def _compute_task_report( - cls, task: Task, job_reports: Dict[int, ComparisonReport] + self, task: Task, job_reports: Dict[int, ComparisonReport] ) -> ComparisonReport: # The task dataset can be different from any jobs' dataset because of frame overlaps # between jobs, from which annotations are merged to get the task annotations. @@ -2311,8 +2383,7 @@ def _compute_task_report( return task_report_data - @classmethod - def _save_reports(cls, *, task_report: Dict, job_reports: List[Dict]) -> models.QualityReport: + def _save_reports(self, *, task_report: Dict, job_reports: List[Dict]) -> models.QualityReport: # TODO: add validation (e.g. ann id count for different types of conflicts) db_task_report = models.QualityReport( @@ -2378,8 +2449,9 @@ def _save_reports(cls, *, task_report: Dict, job_reports: List[Dict]) -> models. flt_param={} ) - @classmethod - def _get_task_quality_params(cls, task: Task) -> Optional[ComparisonParameters]: + return db_task_report + + def _get_task_quality_params(self, task: Task) -> Optional[ComparisonParameters]: quality_params, _ = models.QualitySettings.objects.get_or_create(task=task) return ComparisonParameters.from_dict(quality_params.to_dict()) diff --git a/cvat/apps/quality_control/serializers.py b/cvat/apps/quality_control/serializers.py index 262339ce4783..93dfc1b4c88e 100644 --- a/cvat/apps/quality_control/serializers.py +++ b/cvat/apps/quality_control/serializers.py @@ -55,6 +55,10 @@ class Meta: read_only_fields = fields +class QualityReportCreateSerializer(serializers.Serializer): + task_id = serializers.IntegerField(write_only=True) + + class QualitySettingsSerializer(serializers.ModelSerializer): class Meta: model = models.QualitySettings diff --git a/cvat/apps/quality_control/signals.py b/cvat/apps/quality_control/signals.py index 912a9fa15ddf..a6a163df1544 100644 --- a/cvat/apps/quality_control/signals.py +++ b/cvat/apps/quality_control/signals.py @@ -34,7 +34,7 @@ def __save_job__update_quality_metrics(instance, created, **kwargs): assert False for task in tasks: - qc.ReportUpdateManager().schedule_quality_check_job(task) + qc.QualityReportUpdateManager().schedule_quality_autoupdate_job(task) @receiver(post_save, sender=Task, diff --git a/cvat/apps/quality_control/urls.py b/cvat/apps/quality_control/urls.py index 67bc555166fc..34b9c7f417b1 100644 --- a/cvat/apps/quality_control/urls.py +++ b/cvat/apps/quality_control/urls.py @@ -11,7 +11,7 @@ router = routers.DefaultRouter(trailing_slash=False) router.register('reports', views.QualityReportViewSet, basename='quality_reports') -router.register('conflicts', views.ConflictsViewSet, basename='annotation_conflicts') +router.register('conflicts', views.QualityConflictsViewSet, basename='annotation_conflicts') router.register('settings', views.QualitySettingsViewSet, basename='quality_settings') urlpatterns = [ diff --git a/cvat/apps/quality_control/views.py b/cvat/apps/quality_control/views.py index 94aec7ba4d32..b6bec447d1c8 100644 --- a/cvat/apps/quality_control/views.py +++ b/cvat/apps/quality_control/views.py @@ -2,15 +2,19 @@ # # SPDX-License-Identifier: MIT +import textwrap from django.http import HttpResponse from django.db.models import Q from drf_spectacular.types import OpenApiTypes -from drf_spectacular.utils import OpenApiParameter, extend_schema_view, extend_schema +from drf_spectacular.utils import ( + OpenApiParameter, extend_schema_view, extend_schema, OpenApiResponse +) -from rest_framework import mixins, viewsets +from rest_framework import mixins, status, viewsets +from rest_framework.response import Response from rest_framework.decorators import action -from rest_framework.exceptions import ValidationError +from rest_framework.exceptions import ValidationError, NotFound from cvat.apps.engine.models import Task from cvat.apps.engine.mixins import PartialUpdateModelMixin @@ -21,7 +25,8 @@ AnnotationConflict, QualityReportTarget, QualitySettings, QualityReport ) from cvat.apps.quality_control.serializers import ( - AnnotationConflictSerializer, QualitySettingsSerializer, QualityReportSerializer + AnnotationConflictSerializer, QualitySettingsSerializer, + QualityReportSerializer, QualityReportCreateSerializer ) from cvat.apps.iam.permissions import AnnotationConflictPermission, QualityReportPermission @@ -42,7 +47,7 @@ '200': AnnotationConflictSerializer(many=True), }), ) -class ConflictsViewSet(viewsets.GenericViewSet, mixins.ListModelMixin): +class QualityConflictsViewSet(viewsets.GenericViewSet, mixins.ListModelMixin): queryset = AnnotationConflict.objects.prefetch_related('report', 'annotation_ids').all() # NOTE: This filter works incorrectly for this view @@ -103,7 +108,7 @@ def get_queryset(self): }), ) class QualityReportViewSet(viewsets.GenericViewSet, - mixins.ListModelMixin, mixins.RetrieveModelMixin + mixins.ListModelMixin, mixins.RetrieveModelMixin, mixins.CreateModelMixin ): queryset = QualityReport.objects.prefetch_related( 'job', @@ -162,6 +167,82 @@ def get_queryset(self): return queryset + CREATE_REPORT_RQ_ID_PARAMETER = 'rq_id' + @extend_schema( + operation_id="quality_create_report", + summary="Creates a quality report asynchronously and allows to check request status", + parameters=[ + OpenApiParameter( + CREATE_REPORT_RQ_ID_PARAMETER, + type=str, + description=textwrap.dedent("""\ + The report creation request id. Can be specified to check the report + creation status. + """), + ) + ], + request=QualityReportCreateSerializer(required=False), + responses={ + '201': QualityReportSerializer, + '202': OpenApiResponse( + OpenApiTypes.STR, + description=textwrap.dedent("""\ + A quality report request has been enqueued, the request id is returned. + The request status can be checked at this endpoint by passing the {} + as the query parameter. If the request id is specified, this response + means the quality report request is queued or is being processed. + """.format(CREATE_REPORT_RQ_ID_PARAMETER)) + ), + '400': OpenApiResponse( + description="Invalid or failed request, check the response data for details" + ) + } + ) + def create(self, request, *args, **kwargs): + self.check_permissions(request) + + rq_id = request.query_params.get(self.CREATE_REPORT_RQ_ID_PARAMETER, None) + + if rq_id is None: + input_serializer = QualityReportCreateSerializer(data=request.data) + input_serializer.is_valid(raise_exception=True) + + task_id = input_serializer.validated_data["task_id"] + task = Task.objects.get(pk=task_id) + + try: + rq_id = qc.QualityReportUpdateManager().schedule_quality_check_job( + task, user_id=request.user.id + ) + return Response(rq_id, status=status.HTTP_202_ACCEPTED) + except qc.QualityReportUpdateManager.QualityReportsNotAvailable as ex: + raise ValidationError(str(ex)) + + else: + report_manager = qc.QualityReportUpdateManager() + rq_job = report_manager.get_quality_check_job(rq_id) + if not rq_job or not QualityReportPermission.create_scope_check_status( + request, job_owner_id=rq_job.meta["user_id"] + ).check_access().allow: + # We should not provide job existence information to unauthorized users + raise NotFound("Unknown request id") + + if rq_job.is_failed: + raise ValidationError(str(rq_job.exc_info)) + elif rq_job.is_queued or rq_job.is_started: + return Response(status=status.HTTP_202_ACCEPTED) + elif rq_job.is_finished: + if not rq_job.return_value: + raise ValidationError("No report has been computed") + + report = self.get_queryset().get(pk=rq_job.return_value) + report_serializer = QualityReportSerializer(instance=report) + return Response( + data=report_serializer.data, + status=status.HTTP_201_CREATED, + headers=self.get_success_headers(report_serializer.data) + ) + @extend_schema( operation_id="quality_retrieve_report_data", summary="Retrieve full contents of the report in JSON format", @@ -182,7 +263,7 @@ def data(self, request, pk): @action(detail=False, methods=['GET'], url_path='debug', serializer_class=None) @silk_profile() def debug(self, request): - qc.ReportUpdateManager._update_task_quality_metrics(task_id=request.GET.get('task_id')) + qc.QualityReportUpdateManager._check_task_quality(task_id=request.GET.get('task_id')) return HttpResponse({}) diff --git a/cvat/schema.yml b/cvat/schema.yml index bb9999657fde..4d11359f0231 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -4356,6 +4356,65 @@ paths: schema: $ref: '#/components/schemas/PaginatedQualityReportList' description: '' + post: + operationId: quality_create_report + summary: Creates a quality report asynchronously and allows to check request + status + parameters: + - in: header + name: X-Organization + schema: + type: string + - in: query + name: org + schema: + type: string + description: Organization unique slug + - in: query + name: org_id + schema: + type: integer + description: Organization identifier + - in: query + name: rq_id + schema: + type: string + description: | + The report creation request id. Can be specified to check the report + creation status. + tags: + - quality + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/QualityReportCreateRequest' + required: false + security: + - sessionAuth: [] + csrfAuth: [] + tokenAuth: [] + - signatureAuth: [] + - basicAuth: [] + responses: + '201': + content: + application/vnd.cvat+json: + schema: + $ref: '#/components/schemas/QualityReport' + description: '' + '202': + content: + application/vnd.cvat+json: + schema: + type: string + description: | + A quality report request has been enqueued, the request id is returned. + The request status can be checked at this endpoint by passing the rq_id + as the query parameter. If the request id is specified, this response + means the quality report request is queued or is being processed. + '400': + description: Invalid or failed request, check the response data for details /api/quality/reports/{id}: get: operationId: quality_retrieve_reports @@ -9171,6 +9230,14 @@ components: - parameters - summary - target + QualityReportCreateRequest: + type: object + properties: + task_id: + type: integer + writeOnly: true + required: + - task_id QualityReportParameters: type: object properties: diff --git a/cvat/settings/base.py b/cvat/settings/base.py index 0ebd0da97e00..ea3bc0cbe712 100644 --- a/cvat/settings/base.py +++ b/cvat/settings/base.py @@ -332,7 +332,7 @@ class CVAT_QUEUES(Enum): 'HOST': 'localhost', 'PORT': 6379, 'DB': 0, - 'DEFAULT_TIMEOUT': '30m', + 'DEFAULT_TIMEOUT': '1h', }, } From 994a3de1e60ea08e10b21bca115b6b801b43d1d3 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 19 May 2023 20:05:13 +0300 Subject: [PATCH 140/257] Fix report computation --- cvat/apps/quality_control/quality_reports.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cvat/apps/quality_control/quality_reports.py b/cvat/apps/quality_control/quality_reports.py index 7f6e5cd8f977..2f6a454bfd3f 100644 --- a/cvat/apps/quality_control/quality_reports.py +++ b/cvat/apps/quality_control/quality_reports.py @@ -2262,8 +2262,9 @@ def _compute_reports(self, task_id: int) -> int: except Task.DoesNotExist: return + last_report_time = self._get_last_report_time(task) if not self.is_custom_quality_check_job(self._get_current_job()) and ( - last_report_time := self._get_last_report_time(task) + last_report_time and timezone.now() < last_report_time + self._get_quality_check_job_delay() ): # Discard this report as it has probably been computed in parallel From 54f15e25aa3032d4db2fd23ead85ec0e2c67e871 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 19 May 2023 22:29:10 +0300 Subject: [PATCH 141/257] Allow optional request body, fix some apis schema --- cvat/apps/engine/views.py | 38 ++++++++++++++-------------- cvat/apps/iam/schema.py | 24 +++++++++++++++--- cvat/schema.yml | 52 ++++++++++++++++++++++----------------- 3 files changed, 71 insertions(+), 43 deletions(-) diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index e1b93760ced3..d5a7fa7a96b9 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -310,10 +310,7 @@ def perform_create(self, serializer, **kwargs): OpenApiParameter('filename', description='Dataset file name', location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, required=False), ], - request=PolymorphicProxySerializer('DatasetWrite', - serializers=[DatasetFileSerializer, OpenApiTypes.NONE], - resource_type_field_name=None - ), + request=DatasetFileSerializer(required=False), responses={ '202': OpenApiResponse(description='Importing has been started'), '400': OpenApiResponse(description='Failed to import dataset'), @@ -494,16 +491,13 @@ def export_backup(self, request, pk=None): OpenApiParameter('filename', description='Backup file name', location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, required=False), ], - request=PolymorphicProxySerializer('BackupWrite', - serializers=[ProjectFileSerializer, OpenApiTypes.NONE], - resource_type_field_name=None - ), + request=ProjectFileSerializer(required=False), responses={ '201': OpenApiResponse(description='The project has been imported'), # or better specify {id: project_id} '202': OpenApiResponse(description='Importing a backup file has been started'), }) @action(detail=False, methods=['OPTIONS', 'POST'], url_path=r'backup/?$', - serializer_class=ProjectFileSerializer(required=False), + serializer_class=None, parser_classes=_UPLOAD_PARSER_CLASSES) def import_backup(self, request, pk=None): return self.deserialize(request, backup.import_project) @@ -731,7 +725,7 @@ def get_queryset(self): '202': OpenApiResponse(description='Importing a backup file has been started'), }) @action(detail=False, methods=['OPTIONS', 'POST'], url_path=r'backup/?$', - serializer_class=TaskFileSerializer(required=False), + serializer_class=None, parser_classes=_UPLOAD_PARSER_CLASSES) def import_backup(self, request, pk=None): return self.deserialize(request, backup.import_task) @@ -879,7 +873,7 @@ def upload_finished(self, request): @extend_schema(methods=['POST'], summary='Method permanently attaches images or video to a task. Supports tus uploads, see more https://tus.io/', - request=DataSerializer, + request=DataSerializer(required=False), parameters=[ OpenApiParameter('Upload-Start', location=OpenApiParameter.HEADER, type=OpenApiTypes.BOOL, description='Initializes data upload. No data should be sent with this header'), @@ -996,10 +990,7 @@ def append_data_chunk(self, request, pk, file_id): OpenApiParameter('filename', description='Annotation file name', location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, required=False), ], - request=PolymorphicProxySerializer('TaskAnnotationsWrite', - serializers=[AnnotationFileSerializer, OpenApiTypes.NONE], - resource_type_field_name=None - ), + request=AnnotationFileSerializer(required=False), responses={ '201': OpenApiResponse(description='Uploading has finished'), '202': OpenApiResponse(description='Uploading has been started'), @@ -1403,7 +1394,7 @@ def upload_finished(self, request): OpenApiParameter('filename', description='Annotation file name', location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, required=False), ], - request=AnnotationFileSerializer, + request=AnnotationFileSerializer(required=False), responses={ '201': OpenApiResponse(description='Uploading has finished'), '202': OpenApiResponse(description='Uploading has been started'), @@ -1413,10 +1404,20 @@ def upload_finished(self, request): parameters=[ OpenApiParameter('format', location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, required=False, description='Input format name\nYou can get the list of supported formats at:\n/server/annotation/formats'), + OpenApiParameter('location', description='where to import the annotation from', + location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, required=False, + enum=Location.list()), + OpenApiParameter('cloud_storage_id', description='Storage id', + location=OpenApiParameter.QUERY, type=OpenApiTypes.NUMBER, required=False), + OpenApiParameter('use_default_location', description='Use the location that was configured in the task to import annotation', + location=OpenApiParameter.QUERY, type=OpenApiTypes.BOOL, required=False, + default=True), + OpenApiParameter('filename', description='Annotation file name', + location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, required=False), ], request=PolymorphicProxySerializer( component_name='JobAnnotationsUpdate', - serializers=[LabeledDataSerializer, AnnotationFileSerializer], + serializers=[LabeledDataSerializer, AnnotationFileSerializer(required=False)], resource_type_field_name=None ), responses={ @@ -1564,7 +1565,8 @@ def dataset_export(self, request, pk): '200': OpenApiResponse(OpenApiTypes.BINARY, description='Data of a specific type'), }) @action(detail=True, methods=['GET'], - simple_filters=[] # type query parameter conflicts with the filter + # TODO: fix unexpected collisions with filter params + simple_filters=[] # type query parameter conflicts with the filter, ) def data(self, request, pk): db_job = self.get_object() # call check_object_permissions as well diff --git a/cvat/apps/iam/schema.py b/cvat/apps/iam/schema.py index 0fb74b63f40e..c2e1f5b0c636 100644 --- a/cvat/apps/iam/schema.py +++ b/cvat/apps/iam/schema.py @@ -1,16 +1,18 @@ # Copyright (C) 2022 Intel Corporation -# Copyright (C) 2022 CVAT.ai Corporation +# Copyright (C) 2022-2023 CVAT.ai Corporation # # SPDX-License-Identifier: MIT import re import textwrap -from drf_spectacular.openapi import AutoSchema -from drf_spectacular.extensions import OpenApiFilterExtension, OpenApiAuthenticationExtension from drf_spectacular.authentication import TokenScheme, SessionScheme +from drf_spectacular.extensions import OpenApiFilterExtension, OpenApiAuthenticationExtension +from drf_spectacular.openapi import AutoSchema from drf_spectacular.plumbing import build_parameter_type from drf_spectacular.utils import OpenApiParameter +from rest_framework import serializers + # https://drf-spectacular.readthedocs.io/en/latest/customization.html?highlight=OpenApiFilterExtension#step-5-extensions class OrganizationFilterExtension(OpenApiFilterExtension): """ @@ -137,6 +139,9 @@ def get_override_parameters(self): ] def get_operation_id(self): + # Change style of operation ids to [viewset _ action _ object] + # This form is simpler to handle during SDK generation + tokenized_path = self._tokenize_path() # replace dashes as they can be problematic later in code generation tokenized_path = [t.replace('-', '_') for t in tokenized_path] @@ -153,3 +158,16 @@ def get_operation_id(self): tokenized_path.append('formatted') return '_'.join([tokenized_path[0]] + [action] + tokenized_path[1:]) + + def _get_request_for_media_type(self, serializer): + # Enables support for required=False serializers in request body specification + # in drf-spectacular. Doesn't block other extensions on the target serializer. + # This is supported by OpenAPI and by SDK generator, but not by drf-spectacular + + schema, required = super()._get_request_for_media_type(serializer) + + if isinstance(serializer, serializers.Serializer): + if not serializer.required: + required = False + + return schema, required diff --git a/cvat/schema.yml b/cvat/schema.yml index 4d11359f0231..9211a825985d 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -2167,7 +2167,6 @@ paths: multipart/form-data: schema: $ref: '#/components/schemas/AnnotationFileRequest' - required: true security: - sessionAuth: [] csrfAuth: [] @@ -2189,6 +2188,16 @@ paths: name: X-Organization schema: type: string + - in: query + name: cloud_storage_id + schema: + type: number + description: Storage id + - in: query + name: filename + schema: + type: string + description: Annotation file name - in: query name: format schema: @@ -2203,6 +2212,14 @@ paths: type: integer description: A unique integer value identifying this job. required: true + - in: query + name: location + schema: + type: string + enum: + - cloud_storage + - local + description: where to import the annotation from - in: query name: org schema: @@ -2213,6 +2230,12 @@ paths: schema: type: integer description: Organization identifier + - in: query + name: use_default_location + schema: + type: boolean + default: true + description: Use the location that was configured in the task to import annotation tags: - jobs requestBody: @@ -4047,10 +4070,10 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DatasetWriteRequest' + $ref: '#/components/schemas/DatasetFileRequest' multipart/form-data: schema: - $ref: '#/components/schemas/DatasetWriteRequest' + $ref: '#/components/schemas/DatasetFileRequest' security: - sessionAuth: [] csrfAuth: [] @@ -4146,10 +4169,10 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/BackupWriteRequest' + $ref: '#/components/schemas/ProjectFileRequest' multipart/form-data: schema: - $ref: '#/components/schemas/BackupWriteRequest' + $ref: '#/components/schemas/ProjectFileRequest' security: - sessionAuth: [] csrfAuth: [] @@ -4389,7 +4412,6 @@ paths: application/json: schema: $ref: '#/components/schemas/QualityReportCreateRequest' - required: false security: - sessionAuth: [] csrfAuth: [] @@ -5357,10 +5379,10 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/TaskAnnotationsWriteRequest' + $ref: '#/components/schemas/AnnotationFileRequest' multipart/form-data: schema: - $ref: '#/components/schemas/TaskAnnotationsWriteRequest' + $ref: '#/components/schemas/AnnotationFileRequest' security: - sessionAuth: [] csrfAuth: [] @@ -5702,7 +5724,6 @@ paths: multipart/form-data: schema: $ref: '#/components/schemas/DataRequest' - required: true security: - sessionAuth: [] csrfAuth: [] @@ -6015,7 +6036,6 @@ paths: multipart/form-data: schema: $ref: '#/components/schemas/TaskFileRequest' - required: true security: - sessionAuth: [] csrfAuth: [] @@ -6970,10 +6990,6 @@ components: required: - spec_id - value - BackupWriteRequest: - oneOf: - - $ref: '#/components/schemas/ProjectFileRequest' - nullable: true BasicUser: type: object properties: @@ -7419,10 +7435,6 @@ components: required: - exporters - importers - DatasetWriteRequest: - oneOf: - - $ref: '#/components/schemas/DatasetFileRequest' - nullable: true Event: type: object properties: @@ -9686,10 +9698,6 @@ components: - $ref: '#/components/schemas/LabeledDataRequest' - $ref: '#/components/schemas/AnnotationFileRequest' nullable: true - TaskAnnotationsWriteRequest: - oneOf: - - $ref: '#/components/schemas/AnnotationFileRequest' - nullable: true TaskFileRequest: type: object properties: From f48873432c9f751c4b82c2c262897f7e34e55df4 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 19 May 2023 22:55:16 +0300 Subject: [PATCH 142/257] Add tests for report creation by request --- cvat/apps/quality_control/views.py | 2 +- tests/python/rest_api/test_quality_control.py | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/cvat/apps/quality_control/views.py b/cvat/apps/quality_control/views.py index b6bec447d1c8..fe1b1b35e957 100644 --- a/cvat/apps/quality_control/views.py +++ b/cvat/apps/quality_control/views.py @@ -214,7 +214,7 @@ def create(self, request, *args, **kwargs): rq_id = qc.QualityReportUpdateManager().schedule_quality_check_job( task, user_id=request.user.id ) - return Response(rq_id, status=status.HTTP_202_ACCEPTED) + return HttpResponse(rq_id, status=status.HTTP_202_ACCEPTED) except qc.QualityReportUpdateManager.QualityReportsNotAvailable as ex: raise ValidationError(str(ex)) diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py index 56ae4fb2bee1..edaac0ca23e4 100644 --- a/tests/python/rest_api/test_quality_control.py +++ b/tests/python/rest_api/test_quality_control.py @@ -7,6 +7,7 @@ from typing import Any, Dict, List, Optional, Tuple import pytest +from cvat_sdk.api_client import models from cvat_sdk.api_client.api_client import ApiClient, Endpoint from cvat_sdk.core.helpers import get_paginated_collection from deepdiff import DeepDiff @@ -16,6 +17,7 @@ from .utils import CollectionSimpleFilterTestBase +@pytest.mark.usefixtures("restore_db_per_class") class TestListQualityReports: def _test_list_200(self, user, task_id, data, **kwargs): with make_api_client(user) as api_client: @@ -34,6 +36,7 @@ def test_can_list_quality_reports(self, admin_user, tasks, quality_reports): self._test_list_200(admin_user, task_id, reports) +@pytest.mark.usefixtures("restore_db_per_class") class TestGetQualityReports: @pytest.mark.parametrize("target", ["task", "job"]) def test_can_get_full_report_data(self, admin_user, target, quality_reports): @@ -49,6 +52,32 @@ def test_can_get_full_report_data(self, admin_user, target, quality_reports): assert key in report_data.keys(), key +@pytest.mark.usefixtures("restore_db_per_function") +class TestPostQualityReports: + def test_can_create_report(self, admin_user, jobs): + gt_job = next(j for j in jobs if j["type"] == "ground_truth") + task_id = gt_job["task_id"] + + with make_api_client(admin_user) as api_client: + (_, response) = api_client.quality_api.create_report( + quality_report_create_request=models.QualityReportCreateRequest(task_id=task_id), + _parse_response=False + ) + assert response.status == HTTPStatus.ACCEPTED + rq_id = response.data.decode() + + while True: + (_, response) = api_client.quality_api.create_report( + rq_id=rq_id, _parse_response=False + ) + assert response.status in [HTTPStatus.CREATED, HTTPStatus.ACCEPTED] + + if response.status == HTTPStatus.CREATED: + break + + assert models.QualityReport._from_openapi_data(**json.loads(response.data)) + + class TestSimpleQualityReportsFilters(CollectionSimpleFilterTestBase): @pytest.fixture(autouse=True) def setup(self, restore_db_per_class, admin_user, quality_reports, jobs): @@ -113,6 +142,7 @@ def test_can_use_simple_filter_for_object_list(self, field): return super().test_can_use_simple_filter_for_object_list(field) +@pytest.mark.usefixtures("restore_db_per_class") class TestGetSettings: def _test_get_settings_200( self, user: str, obj_id: int, *, expected_data: Optional[Dict[str, Any]] = None, **kwargs From 98a2ff4b068ebb33c1741efab77601abeeeef27f Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Sat, 20 May 2023 01:06:41 +0300 Subject: [PATCH 143/257] Revert some changes in api --- cvat/apps/engine/views.py | 22 +++++++++++++++++----- cvat/schema.yml | 24 ++++++++++++++++++------ 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index d5a7fa7a96b9..8eb174f7f021 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -310,7 +310,11 @@ def perform_create(self, serializer, **kwargs): OpenApiParameter('filename', description='Dataset file name', location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, required=False), ], - request=DatasetFileSerializer(required=False), + request=PolymorphicProxySerializer('DatasetWrite', + # TODO: refactor to use required=False when possible + serializers=[DatasetFileSerializer, OpenApiTypes.NONE], + resource_type_field_name=None + ), responses={ '202': OpenApiResponse(description='Importing has been started'), '400': OpenApiResponse(description='Failed to import dataset'), @@ -491,7 +495,11 @@ def export_backup(self, request, pk=None): OpenApiParameter('filename', description='Backup file name', location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, required=False), ], - request=ProjectFileSerializer(required=False), + request=PolymorphicProxySerializer('BackupWrite', + # TODO: refactor to use required=False when possible + serializers=[ProjectFileSerializer, OpenApiTypes.NONE], + resource_type_field_name=None + ), responses={ '201': OpenApiResponse(description='The project has been imported'), # or better specify {id: project_id} '202': OpenApiResponse(description='Importing a backup file has been started'), @@ -966,6 +974,7 @@ def append_data_chunk(self, request, pk, file_id): description='Input format name\nYou can get the list of supported formats at:\n/server/annotation/formats'), ], request=PolymorphicProxySerializer('TaskAnnotationsUpdate', + # TODO: refactor to use required=False when possible serializers=[LabeledDataSerializer, AnnotationFileSerializer, OpenApiTypes.NONE], resource_type_field_name=None ), @@ -990,7 +999,11 @@ def append_data_chunk(self, request, pk, file_id): OpenApiParameter('filename', description='Annotation file name', location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, required=False), ], - request=AnnotationFileSerializer(required=False), + request=PolymorphicProxySerializer('TaskAnnotationsWrite', + # TODO: refactor to use required=False when possible + serializers=[AnnotationFileSerializer, OpenApiTypes.NONE], + resource_type_field_name=None + ), responses={ '201': OpenApiResponse(description='Uploading has finished'), '202': OpenApiResponse(description='Uploading has been started'), @@ -1565,8 +1578,7 @@ def dataset_export(self, request, pk): '200': OpenApiResponse(OpenApiTypes.BINARY, description='Data of a specific type'), }) @action(detail=True, methods=['GET'], - # TODO: fix unexpected collisions with filter params - simple_filters=[] # type query parameter conflicts with the filter, + simple_filters=[] # type query parameter conflicts with the filter ) def data(self, request, pk): db_job = self.get_object() # call check_object_permissions as well diff --git a/cvat/schema.yml b/cvat/schema.yml index 9211a825985d..e1d349d95f1f 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -4070,10 +4070,10 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DatasetFileRequest' + $ref: '#/components/schemas/DatasetWriteRequest' multipart/form-data: schema: - $ref: '#/components/schemas/DatasetFileRequest' + $ref: '#/components/schemas/DatasetWriteRequest' security: - sessionAuth: [] csrfAuth: [] @@ -4169,10 +4169,10 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ProjectFileRequest' + $ref: '#/components/schemas/BackupWriteRequest' multipart/form-data: schema: - $ref: '#/components/schemas/ProjectFileRequest' + $ref: '#/components/schemas/BackupWriteRequest' security: - sessionAuth: [] csrfAuth: [] @@ -5379,10 +5379,10 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AnnotationFileRequest' + $ref: '#/components/schemas/TaskAnnotationsWriteRequest' multipart/form-data: schema: - $ref: '#/components/schemas/AnnotationFileRequest' + $ref: '#/components/schemas/TaskAnnotationsWriteRequest' security: - sessionAuth: [] csrfAuth: [] @@ -6990,6 +6990,10 @@ components: required: - spec_id - value + BackupWriteRequest: + oneOf: + - $ref: '#/components/schemas/ProjectFileRequest' + nullable: true BasicUser: type: object properties: @@ -7435,6 +7439,10 @@ components: required: - exporters - importers + DatasetWriteRequest: + oneOf: + - $ref: '#/components/schemas/DatasetFileRequest' + nullable: true Event: type: object properties: @@ -9698,6 +9706,10 @@ components: - $ref: '#/components/schemas/LabeledDataRequest' - $ref: '#/components/schemas/AnnotationFileRequest' nullable: true + TaskAnnotationsWriteRequest: + oneOf: + - $ref: '#/components/schemas/AnnotationFileRequest' + nullable: true TaskFileRequest: type: object properties: From 57231df4af8eef9c85f29a05d3e917b33d73c0b5 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Sat, 20 May 2023 01:06:59 +0300 Subject: [PATCH 144/257] Fix list test --- tests/python/rest_api/test_quality_control.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py index edaac0ca23e4..d215cd640181 100644 --- a/tests/python/rest_api/test_quality_control.py +++ b/tests/python/rest_api/test_quality_control.py @@ -27,11 +27,14 @@ def _test_list_200(self, user, task_id, data, **kwargs): task_id=task_id, **kwargs, ) - assert DeepDiff(data, results, ignore_order=True) == {} - - def test_can_list_quality_reports(self, admin_user, tasks, quality_reports): - task_id = next(t for t in tasks if t["quality_reports"]["count"] > 0)["id"] - reports = [r for r in quality_reports if r["target"] == "task" and r["task_id"] == task_id] + assert DeepDiff(data, results) == {} + + def test_can_list_quality_reports(self, admin_user, quality_reports): + parent_report = next(r for r in quality_reports if r["task_id"]) + task_id = parent_report["task_id"] + reports = [parent_report] + [ + r for r in quality_reports if r["parent_id"] == parent_report["id"] + ] self._test_list_200(admin_user, task_id, reports) From 6f07b833a94a882919b7fa2a641da4dc7ab17473 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Sat, 20 May 2023 01:12:52 +0300 Subject: [PATCH 145/257] Fix set intersection --- cvat/apps/dataset_manager/annotation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cvat/apps/dataset_manager/annotation.py b/cvat/apps/dataset_manager/annotation.py index dd429f36fb5c..4779bf5e1949 100644 --- a/cvat/apps/dataset_manager/annotation.py +++ b/cvat/apps/dataset_manager/annotation.py @@ -456,7 +456,7 @@ def to_shapes(self, end_frame: int, *, if track.get("elements"): track_elements = TrackManager(track["elements"], self._dimension) element_shapes = track_elements.to_shapes(end_frame, - included_frames=set(track_shapes.keys()) & (included_frames or []), + included_frames=set(track_shapes.keys()).intersection(included_frames or []), include_outside=True, # elements are controlled by the parent shape use_server_track_ids=use_server_track_ids ) From 37c3dc8530cfefc6cd04b9275bc357494128b588 Mon Sep 17 00:00:00 2001 From: klakhov Date: Sat, 20 May 2023 14:39:23 +0300 Subject: [PATCH 146/257] improved tooltips --- cvat-core/src/quality-report.ts | 26 ++++++++++++-- .../quality/gt-conflicts.tsx | 34 ++++++++++++++++--- .../task-analytics-page/quality/issues.tsx | 2 +- .../quality/mean-quality.tsx | 24 ++++++++----- 4 files changed, 71 insertions(+), 15 deletions(-) diff --git a/cvat-core/src/quality-report.ts b/cvat-core/src/quality-report.ts index 98b7afbca21b..41d28eabfca5 100644 --- a/cvat-core/src/quality-report.ts +++ b/cvat-core/src/quality-report.ts @@ -22,6 +22,12 @@ export interface RawQualityReportData { conflicts_by_type: { extra_annotation: number, missing_annotation: number, + mismatching_label: number, + low_overlap: number, + mismatching_direction: number, + mismatching_attributes: number, + mismatching_groups: number, + covered_annotation: number, } }; parameters?: object; @@ -35,11 +41,19 @@ export interface QualitySummary { dsCount: number; gtCount: number; accuracy: number; + precision: number; + recall: number; errorCount: number; warningCount: number; conflictsByType: { extraAnnotations: number; missingAnnotations: number; + mismatchingLabel: number; + lowOverlap: number; + mismatchingDirection: number; + mismatchingAttributes: number; + mismatchingGroups: number; + coveredAnnotation: number; } } @@ -104,9 +118,17 @@ export default class QualityReport { gtCount: data.summary.gt_count, accuracy: (data.summary.valid_count / (data.summary.ds_count + data.summary.gt_count - data.summary.valid_count)) * 100, + precision: (data.summary.valid_count / data.summary.gt_count) * 100, + recall: (data.summary.valid_count / data.summary.ds_count) * 100, conflictsByType: { - extraAnnotations: data.summary.conflicts_by_type.extra_annotation, - missingAnnotations: data.summary.conflicts_by_type.missing_annotation, + extraAnnotations: data.summary.conflicts_by_type?.extra_annotation, + missingAnnotations: data.summary.conflicts_by_type?.missing_annotation, + mismatchingLabel: data.summary.conflicts_by_type?.mismatching_label, + lowOverlap: data.summary.conflicts_by_type?.low_overlap, + mismatchingDirection: data.summary.conflicts_by_type?.mismatching_direction, + mismatchingAttributes: data.summary.conflicts_by_type?.mismatching_attributes, + mismatchingGroups: data.summary.conflicts_by_type?.mismatching_groups, + coveredAnnotation: data.summary.conflicts_by_type?.covered_annotation, }, errorCount: data.summary.error_count, warningCount: data.summary.warning_count, diff --git a/cvat-ui/src/components/task-analytics-page/quality/gt-conflicts.tsx b/cvat-ui/src/components/task-analytics-page/quality/gt-conflicts.tsx index b0a1ae89b706..976c448c90da 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/gt-conflicts.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/gt-conflicts.tsx @@ -35,11 +35,35 @@ function GTConflicts(props: Props): JSX.Element { Missing annotations:  - {reportSummary?.conflictsByType.missingAnnotations} + {reportSummary?.conflictsByType.missingAnnotations || 0} Extra annotations:  - {reportSummary?.conflictsByType.extraAnnotations} + {reportSummary?.conflictsByType.extraAnnotations || 0} + + + Mismatching label:  + {reportSummary?.conflictsByType.mismatchingLabel || 0} + + + Low overlap:  + {reportSummary?.conflictsByType.lowOverlap || 0} + + + Mismatching direction:  + {reportSummary?.conflictsByType.mismatchingDirection || 0} + + + Mismatching attributes:  + {reportSummary?.conflictsByType.mismatchingAttributes || 0} + + + Mismatching groups:  + {reportSummary?.conflictsByType.mismatchingGroups || 0} + + + Covered annotation:  + {reportSummary?.conflictsByType.coveredAnnotation || 0}
); @@ -50,14 +74,16 @@ function GTConflicts(props: Props): JSX.Element { Errors: {' '} {clampValue(reportSummary?.errorCount)} - {` (${percent(reportSummary?.errorCount, reportSummary?.conflictCount)})`} + {reportSummary?.errorCount ? + ` (${percent(reportSummary?.errorCount, reportSummary?.conflictCount)})` : ''} {', '} Warnings: {' '} {clampValue(reportSummary?.warningCount)} - {` (${percent(reportSummary?.warningCount, reportSummary?.conflictCount)})`} + { reportSummary?.warningCount ? + ` (${percent(reportSummary?.warningCount, reportSummary?.conflictCount)})` : '' } ); diff --git a/cvat-ui/src/components/task-analytics-page/quality/issues.tsx b/cvat-ui/src/components/task-analytics-page/quality/issues.tsx index 9763ca0f4fd9..0daac497ab37 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/issues.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/issues.tsx @@ -42,7 +42,7 @@ function Issues(props: Props): JSX.Element { Resolved: {' '} {clampValue(resolvedIssues)} - {` (${percent(resolvedIssues, issuesCount)})`} + {resolvedIssues ? ` (${percent(resolvedIssues, issuesCount)})` : ''} ); diff --git a/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx b/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx index 0f9d1a35e595..6a19361c434a 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx @@ -23,8 +23,8 @@ function MeanQuality(props: Props): JSX.Element { const tasksReports: QualityReport[] = useSelector((state: CombinedState) => state.analytics.quality.tasksReports); const taskReport = tasksReports.find((report: QualityReport) => report.taskId === task.id); const reportSummary = taskReport?.summary; - const meanAccuracy = reportSummary?.accuracy; - const accuracyRepresentation = !Number.isFinite(meanAccuracy) ? 'N/A' : `${meanAccuracy?.toFixed(1)}%`; + const toRepresentation = (val?: number): string => (!Number.isFinite(val) ? 'N/A' : `${val?.toFixed(1)}%`); + const tooltip = (
@@ -32,19 +32,27 @@ function MeanQuality(props: Props): JSX.Element { Correct annotations:  - {reportSummary?.validCount} + {reportSummary?.validCount || 0} Task annotations:  - {reportSummary?.dsCount} + {reportSummary?.dsCount || 0} GT annotations:  - {reportSummary?.gtCount} + {reportSummary?.gtCount || 0} Accuracy:  - {accuracyRepresentation} + {toRepresentation(reportSummary?.accuracy)} + + + Precision:  + {toRepresentation(reportSummary?.precision)} + + + Recall:  + {toRepresentation(reportSummary?.recall)}
); @@ -56,7 +64,7 @@ function MeanQuality(props: Props): JSX.Element { href={`${getCore().config.backendAPI}/quality/reports/${taskReport?.id}/data`} download={`quality-report-${taskReport?.id}.json`} > - Qulity Report + Quality Report
@@ -69,7 +77,7 @@ function MeanQuality(props: Props): JSX.Element { From 546154a490c398a161b19e23017e3e084a215001 Mon Sep 17 00:00:00 2001 From: klakhov Date: Sat, 20 May 2023 15:35:58 +0300 Subject: [PATCH 147/257] updated table to new design, added sorting --- cvat-core/src/quality-report.ts | 2 +- .../task-analytics-page/quality/common.ts | 4 + .../task-analytics-page/quality/job-list.tsx | 94 ++++++++++++++----- .../quality/mean-quality.tsx | 2 +- 4 files changed, 77 insertions(+), 25 deletions(-) diff --git a/cvat-core/src/quality-report.ts b/cvat-core/src/quality-report.ts index 41d28eabfca5..5aeff0aa4f82 100644 --- a/cvat-core/src/quality-report.ts +++ b/cvat-core/src/quality-report.ts @@ -111,7 +111,7 @@ export default class QualityReport { summary: { get: () => ({ frameCount: data.summary.frame_count, - frameSharePercent: data.summary.frame_share_percent, + frameSharePercent: data.summary.frame_share_percent * 100, conflictCount: data.summary.conflict_count, validCount: data.summary.valid_count, dsCount: data.summary.ds_count, diff --git a/cvat-ui/src/components/task-analytics-page/quality/common.ts b/cvat-ui/src/components/task-analytics-page/quality/common.ts index 43461abdee0d..092533b39332 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/common.ts +++ b/cvat-ui/src/components/task-analytics-page/quality/common.ts @@ -13,3 +13,7 @@ export function clampValue(a?: number): string | number { } return 'N/A'; } + +export function toRepresentation(val?: number): string { + return (!Number.isFinite(val) ? 'N/A' : `${val?.toFixed(1)}%`); +} diff --git a/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx b/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx index 51567d9f1375..87b086bff58c 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx @@ -6,7 +6,7 @@ import React, { useEffect, useState } from 'react'; import { useHistory } from 'react-router'; import { Row, Col } from 'antd/lib/grid'; -import { CopyOutlined } from '@ant-design/icons'; +import { CopyOutlined, DownloadOutlined } from '@ant-design/icons'; import { ColumnFilterItem } from 'antd/lib/table/interface'; import Table from 'antd/lib/table'; import Button from 'antd/lib/button'; @@ -14,12 +14,14 @@ import Text from 'antd/lib/typography/Text'; import copy from 'copy-to-clipboard'; import { - Task, Job, JobType, QualityReport, + Task, Job, JobType, QualityReport, getCore, } from 'cvat-core-wrapper'; import CVATTooltip from 'components/common/cvat-tooltip'; import { CombinedState } from 'reducers'; import { useSelector } from 'react-redux'; import { getQualityColor } from 'utils/quality-color'; +import Tag from 'antd/lib/tag'; +import { toRepresentation } from './common'; interface Props { task: Task; @@ -51,8 +53,8 @@ function JobListComponent(props: Props): JSX.Element { return (obj1: any, obj2: any): number => { let currentObj1 = obj1; let currentObj2 = obj2; - let field1: string | null = null; - let field2: string | null = null; + let field1: string | number | null = null; + let field2: string | number | null = null; for (const pathSegment of path.split('.')) { field1 = currentObj1 && pathSegment in currentObj1 ? currentObj1[pathSegment] : null; field2 = currentObj2 && pathSegment in currentObj2 ? currentObj2[pathSegment] : null; @@ -61,7 +63,8 @@ function JobListComponent(props: Props): JSX.Element { } if (field1 && field2) { - return field1.localeCompare(field2); + if (typeof field1 === 'string' && typeof field2 === 'string') return field1.localeCompare(field2); + if (typeof field1 === 'number' && typeof field2 === 'number') return field2 - field1; } if (field1 === null) { @@ -148,11 +151,26 @@ function JobListComponent(props: Props): JSX.Element { dataIndex: 'frame_intersection', key: 'frame_intersection', className: 'cvat-job-item-frame-intersection', - render: (jobInstance: Job): JSX.Element => { - const frameSharePercent = jobsReports[jobInstance.id]?.summary?.frameSharePercent; + render: (report?: QualityReport): JSX.Element => { + const frameSharePercent = report?.summary?.frameSharePercent; return ( - {Number.isNaN(frameSharePercent) ? 'N/A' : `${Math.round(frameSharePercent * 100)}%`} + {toRepresentation(frameSharePercent)} + + ); + }, + }, + { + title: 'Errors', + dataIndex: 'errors', + key: 'errors', + className: 'cvat-job-item-errors', + sorter: sorter('errors.summary.errorCount'), + render: (report?: QualityReport): JSX.Element => { + const errorCount = report?.summary?.errorCount; + return ( + + {errorCount || 0} ); }, @@ -162,11 +180,12 @@ function JobListComponent(props: Props): JSX.Element { dataIndex: 'conflicts', key: 'conflicts', className: 'cvat-job-item-conflicts', - render: (jobInstance: Job): JSX.Element => { - const conflicts = jobsReports[jobInstance.id]?.summary?.conflictCount; + sorter: sorter('errors.summary.conflictCount'), + render: (report: QualityReport): JSX.Element => { + const conflictCount = report?.summary?.conflictCount; return ( - {Number.isNaN(conflicts) ? 'N/A' : conflicts} + {conflictCount || 0} ); }, @@ -175,30 +194,59 @@ function JobListComponent(props: Props): JSX.Element { title: 'Quality', dataIndex: 'quality', key: 'quality', + align: 'center' as const, className: 'cvat-job-item-quality', - render: (jobInstance: Job): JSX.Element => { - const meanAccuracy = jobsReports[jobInstance.id]?.summary?.accuracy; + sorter: sorter('errors.summary.accuracy'), + render: (report?: QualityReport): JSX.Element => { + const meanAccuracy = report?.summary?.accuracy; + const accuracyRepresentation = toRepresentation(meanAccuracy); return ( - - {!Number.isFinite(meanAccuracy) ? 'N/A' : `${meanAccuracy.toFixed(1)}%`} - + accuracyRepresentation.includes('N/A') ? ( + + N/A + + ) : + {accuracyRepresentation} + ); + }, + }, + { + title: 'Download', + dataIndex: 'download', + key: 'download', + className: 'cvat-job-item-quality-report-download', + align: 'center' as const, + render: (report?: QualityReport): JSX.Element => { + const reportID = report?.id; + return ( + reportID ? ( + + + + ) : ); }, }, ]; const data = renderedJobs.reduce((acc: any[], job: any) => { + const report = jobsReports[job.id]; acc.push({ key: job.id, job: job.id, stage: job, assignee: job, - quality: job, - conflicts: job, - frame_intersection: job, + errors: report, + quality: report, + conflicts: report, + download: report, + frame_intersection: report, }); return acc; diff --git a/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx b/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx index 6a19361c434a..1fc5bbea0d7c 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx @@ -13,6 +13,7 @@ import { CombinedState } from 'reducers'; import Button from 'antd/lib/button'; import { DownloadOutlined } from '@ant-design/icons'; import AnalyticsCard from './analytics-card'; +import { toRepresentation } from './common'; interface Props { task: Task; @@ -23,7 +24,6 @@ function MeanQuality(props: Props): JSX.Element { const tasksReports: QualityReport[] = useSelector((state: CombinedState) => state.analytics.quality.tasksReports); const taskReport = tasksReports.find((report: QualityReport) => report.taskId === task.id); const reportSummary = taskReport?.summary; - const toRepresentation = (val?: number): string => (!Number.isFinite(val) ? 'N/A' : `${val?.toFixed(1)}%`); const tooltip = (
From bb8c0d8b4906479674b2ee605aa98d33c5d06b7f Mon Sep 17 00:00:00 2001 From: klakhov Date: Sat, 20 May 2023 15:43:03 +0300 Subject: [PATCH 148/257] updated adaptive job card --- cvat-ui/src/components/job-item/styles.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cvat-ui/src/components/job-item/styles.scss b/cvat-ui/src/components/job-item/styles.scss index ec54a5a3a272..2d9176e86c59 100644 --- a/cvat-ui/src/components/job-item/styles.scss +++ b/cvat-ui/src/components/job-item/styles.scss @@ -51,7 +51,7 @@ .cvat-job-assignee-selector { max-width: $grid-unit-size * 16; - @media screen and (max-width: 1300px) { + @media screen and (max-width: 1620px) { max-width: $grid-unit-size * 12; } } From 63b24fc793263f7a403bde8cb40e30a7997170fd Mon Sep 17 00:00:00 2001 From: klakhov Date: Sat, 20 May 2023 19:26:17 +0300 Subject: [PATCH 149/257] added quality settings --- cvat-core/src/api-implementation.ts | 6 + cvat-core/src/api.ts | 6 + cvat-core/src/quality-settings.ts | 184 +++++++++++++ cvat-core/src/server-proxy.ts | 38 +++ cvat-core/src/session.ts | 7 + cvat-ui/src/actions/analytics-actions.ts | 61 ++++- .../quality/mean-quality.tsx | 10 +- .../quality/quality-settings-modal.tsx | 256 ++++++++++++++++++ .../quality/task-quality-component.tsx | 5 +- .../task-analytics-page/styles.scss | 22 +- cvat-ui/src/cvat-core-wrapper.ts | 2 + cvat-ui/src/reducers/analytics-reducer.ts | 54 ++++ cvat-ui/src/reducers/index.ts | 12 +- cvat-ui/src/reducers/notifications-reducer.ts | 54 ++++ cvat/apps/quality_control/serializers.py | 3 +- 15 files changed, 712 insertions(+), 8 deletions(-) create mode 100644 cvat-core/src/quality-settings.ts create mode 100644 cvat-ui/src/components/task-analytics-page/quality/quality-settings-modal.tsx diff --git a/cvat-core/src/api-implementation.ts b/cvat-core/src/api-implementation.ts index 6db215f0be29..1239f49384cb 100644 --- a/cvat-core/src/api-implementation.ts +++ b/cvat-core/src/api-implementation.ts @@ -27,6 +27,7 @@ import Organization from './organization'; import Webhook from './webhook'; import QualityReport from './quality-report'; import QualityConflict from './quality-conflict'; +import QualitySettings from './quality-settings'; export default function implementAPI(cvat) { cvat.plugins.list.implementation = PluginRegistry.list; @@ -378,5 +379,10 @@ export default function implementAPI(cvat) { return reportsData.map((conflict) => new QualityConflict({ ...conflict })); }; + cvat.analytics.quality.settings.get.implementation = async (taskID: number) => { + const settings = await serverProxy.analytics.quality.settings.get(taskID); + return new QualitySettings({ ...settings }); + }; + return cvat; } diff --git a/cvat-core/src/api.ts b/cvat-core/src/api.ts index 8e1146a1cfbb..022d996b1d8a 100644 --- a/cvat-core/src/api.ts +++ b/cvat-core/src/api.ts @@ -274,6 +274,12 @@ function build() { const result = await PluginRegistry.apiWrapper(cvat.analytics.quality.conflicts, filter); return result; }, + settings: { + async get(taskID: number) { + const result = await PluginRegistry.apiWrapper(cvat.analytics.quality.settings.get, taskID); + return result; + }, + }, }, }, classes: { diff --git a/cvat-core/src/quality-settings.ts b/cvat-core/src/quality-settings.ts new file mode 100644 index 000000000000..745b7ea958e5 --- /dev/null +++ b/cvat-core/src/quality-settings.ts @@ -0,0 +1,184 @@ +// Copyright (C) 2023 CVAT.ai Corporation +// +// SPDX-License-Identifier: MIT + +import PluginRegistry from './plugins'; +import serverProxy from './server-proxy'; + +export interface RawQualitySettingsData { + id?: number; + task?: number; + iou_threshold?: number; + oks_sigma?: number; + line_thickness?: number; + low_overlap_threshold?: number; + oriented_lines?: boolean; + line_orientation_threshold?: number; + compare_groups?: boolean; + group_match_threshold?: number; + check_covered_annotations?: boolean; + object_visibility_threshold?: number; + panoptic_comparison?: boolean; + compare_attributes?: boolean; +} + +export default class QualitySettings { + public readonly id: number; + public readonly task: number; + public iouThreshold: number; + public oksSigma: number; + public lineThickness: number; + public lowOverlapThreshold: number; + public orientedLines: boolean; + public lineOrientationThreshold: number; + public compareGroups: boolean; + public groupMatchThreshold: number; + public checkCoveredAnnotations: boolean; + public objectVisibilityThreshold: number; + public panopticComparison: boolean; + public compareAttributes: boolean; + + constructor(initialData: RawQualitySettingsData) { + const data: RawQualitySettingsData = { + id: undefined, + task: undefined, + iou_threshold: undefined, + oks_sigma: undefined, + line_thickness: undefined, + low_overlap_threshold: undefined, + oriented_lines: undefined, + line_orientation_threshold: undefined, + compare_groups: undefined, + group_match_threshold: undefined, + check_covered_annotations: undefined, + object_visibility_threshold: undefined, + panoptic_comparison: undefined, + compare_attributes: undefined, + }; + + for (const property in data) { + if (Object.prototype.hasOwnProperty.call(data, property) && property in initialData) { + data[property] = initialData[property]; + } + } + + Object.defineProperties( + this, + Object.freeze({ + id: { + get: () => data.id, + }, + task: { + get: () => data.task, + }, + iouThreshold: { + get: () => data.iou_threshold, + set: (value: number) => { + data.iou_threshold = value; + }, + }, + oksSigma: { + get: () => data.oks_sigma, + set: (value: number) => { + data.oks_sigma = value; + }, + }, + lineThickness: { + get: () => data.line_thickness, + set: (value: number) => { + data.line_thickness = value; + }, + }, + lowOverlapThreshold: { + get: () => data.low_overlap_threshold, + set: (value: number) => { + data.low_overlap_threshold = value; + }, + }, + orientedLines: { + get: () => data.oriented_lines, + set: (value: boolean) => { + data.oriented_lines = value; + }, + }, + lineOrientationThreshold: { + get: () => data.line_orientation_threshold, + set: (value: number) => { + data.line_orientation_threshold = value; + }, + }, + compareGroups: { + get: () => data.compare_groups, + set: (value: boolean) => { + data.compare_groups = value; + }, + }, + groupMatchThreshold: { + get: () => data.group_match_threshold, + set: (value: number) => { + data.group_match_threshold = value; + }, + }, + checkCoveredAnnotations: { + get: () => data.check_covered_annotations, + set: (value: boolean) => { + data.check_covered_annotations = value; + }, + }, + objectVisibilityThreshold: { + get: () => data.object_visibility_threshold, + set: (value: number) => { + data.object_visibility_threshold = value; + }, + }, + panopticComparison: { + get: () => data.panoptic_comparison, + set: (value: boolean) => { + data.panoptic_comparison = value; + }, + }, + compareAttributes: { + get: () => data.compare_attributes, + set: (value: boolean) => { + data.compare_attributes = value; + }, + }, + }), + ); + } + + public toJSON(): RawQualitySettingsData { + const result: RawQualitySettingsData = { + iou_threshold: this.iouThreshold, + oks_sigma: this.oksSigma, + line_thickness: this.lineThickness, + low_overlap_threshold: this.lowOverlapThreshold, + oriented_lines: this.orientedLines, + line_orientation_threshold: this.lineOrientationThreshold, + compare_groups: this.compareGroups, + group_match_threshold: this.groupMatchThreshold, + check_covered_annotations: this.checkCoveredAnnotations, + object_visibility_threshold: this.objectVisibilityThreshold, + panoptic_comparison: this.panopticComparison, + compare_attributes: this.compareAttributes, + }; + + return result; + } + + public async save(): Promise { + const result = await PluginRegistry.apiWrapper.call(this, QualitySettings.prototype.save); + return result; + } +} + +Object.defineProperties(QualitySettings.prototype.save, { + implementation: { + writable: false, + enumerable: false, + value: async function implementation() { + const result = await serverProxy.analytics.quality.settings.update(this.id, this.toJSON()); + return new QualitySettings(result); + }, + }, +}); diff --git a/cvat-core/src/server-proxy.ts b/cvat-core/src/server-proxy.ts index be18b52a54d5..7056ca2a8f00 100644 --- a/cvat-core/src/server-proxy.ts +++ b/cvat-core/src/server-proxy.ts @@ -14,6 +14,7 @@ import { SerializedRegister, JobsFilter, SerializedJob, } from 'server-response-types'; import { RawQualityReportData } from 'quality-report'; +import { RawQualitySettingsData } from 'quality-settings'; import { Storage } from './storage'; import { StorageLocation, WebhookSourceType } from './enums'; import { isEmail } from './common'; @@ -2208,6 +2209,39 @@ async function getQualityConflicts(filter): Promise { } } +async function getQualitySettings(settingsID: number): Promise { + const params = enableOrganization(); + const { backendAPI } = config; + + try { + const response = await Axios.get(`${backendAPI}/quality/settings/${settingsID}`, { + params: { + ...params, + }, + }); + return response.data; + } catch (errorData) { + throw generateError(errorData); + } +} + +async function updateQualitySettings( + settingsID: number, + settingsData: RawQualitySettingsData, +): Promise { + const params = enableOrganization(); + const { backendAPI } = config; + + try { + const response = await Axios.patch(`${backendAPI}/quality/settings/${settingsID}`, settingsData, { + params, + }); + return response.data; + } catch (errorData) { + throw generateError(errorData); + } +} + export default Object.freeze({ server: Object.freeze({ setAuthData, @@ -2358,6 +2392,10 @@ export default Object.freeze({ quality: Object.freeze({ reports: getQualityReports, conflicts: getQualityConflicts, + settings: Object.freeze({ + get: getQualitySettings, + update: updateQualitySettings, + }), }), }), }); diff --git a/cvat-core/src/session.ts b/cvat-core/src/session.ts index 9833a1f4ff2a..ce835ba2fa95 100644 --- a/cvat-core/src/session.ts +++ b/cvat-core/src/session.ts @@ -642,6 +642,8 @@ export class Task extends Session { public readonly cloudStorageID: number; public readonly sortingMethod: string; + public readonly qualitySettingsID: number; + public annotations: { get: CallableFunction; put: CallableFunction; @@ -723,6 +725,8 @@ export class Task extends Session { cloud_storage_id: undefined, sorting_method: undefined, files: undefined, + + quality_settings: undefined, }; const updateTrigger = new FieldUpdateTrigger(); @@ -1038,6 +1042,9 @@ export class Task extends Session { progress: { get: () => data.progress, }, + qualitySettingsID: { + get: () => data.quality_settings, + }, _internalData: { get: () => data, }, diff --git a/cvat-ui/src/actions/analytics-actions.ts b/cvat-ui/src/actions/analytics-actions.ts index 0c79420ed4a8..7121f2581303 100644 --- a/cvat-ui/src/actions/analytics-actions.ts +++ b/cvat-ui/src/actions/analytics-actions.ts @@ -2,7 +2,9 @@ // // SPDX-License-Identifier: MIT -import { getCore, QualityReport, Task } from 'cvat-core-wrapper'; +import { + getCore, QualityReport, QualitySettings, Task, +} from 'cvat-core-wrapper'; import { Dispatch, ActionCreator } from 'redux'; import { QualityQuery } from 'reducers'; import { ActionUnion, createAction, ThunkAction } from 'utils/redux'; @@ -14,9 +16,16 @@ export enum AnalyticsActionsTypes { GET_QUALITY_REPORTS = 'GET_QUALITY_REPORTS', GET_QUALITY_REPORTS_SUCCESS = 'GET_QUALITY_REPORTS_SUCCESS', GET_QUALITY_REPORTS_FAILED = 'GET_QUALITY_REPORTS_FAILED', + SWITCH_QUALITY_SETTINGS_VISIBLE = 'SWITCH_QUALITY_SETTINGS_VISIBLE', + GET_QUALITY_SETTINGS = 'GET_QUALITY_SETTINS', + GET_QUALITY_SETTINGS_SUCCESS = 'GET_QUALITY_SETTINGS_SUCCESS', + GET_QUALITY_SETTINGS_FAILED = 'GET_QUALITY_SETTINGS_FAILED', + UPDATE_QUALITY_SETTINGS = 'UPDATE_QUALITY_SETTINGS', + UPDATE_QUALITY_SETTINGS_SUCCESS = 'UPDATE_QUALITY_SETTINGS_SUCCESS', + UPDATE_QUALITY_SETTINGS_FAILED = 'UPDATE_QUALITY_SETTINGS_FAILED', } -const analyticsActions = { +export const analyticsActions = { getQualityReports: (task: Task, query: QualityQuery) => ( createAction(AnalyticsActionsTypes.GET_QUALITY_REPORTS, { query }) ), @@ -24,6 +33,27 @@ const analyticsActions = { AnalyticsActionsTypes.GET_QUALITY_REPORTS_SUCCESS, { tasksReports, jobsReports }, ), getQualityReportsFailed: (error: any) => createAction(AnalyticsActionsTypes.GET_QUALITY_REPORTS_FAILED, { error }), + switchQualitySettingsVisible: (visible: boolean) => ( + createAction(AnalyticsActionsTypes.SWITCH_QUALITY_SETTINGS_VISIBLE, { visible }) + ), + getQualitySettings: (settingsID: number) => ( + createAction(AnalyticsActionsTypes.GET_QUALITY_SETTINGS, { settingsID }) + ), + getQualitySettingsSuccess: (settings: QualitySettings) => ( + createAction(AnalyticsActionsTypes.GET_QUALITY_SETTINGS_SUCCESS, { settings }) + ), + getQualitySettingsFailed: (error: any) => ( + createAction(AnalyticsActionsTypes.GET_QUALITY_SETTINGS_FAILED, { error }) + ), + updateQualitySettings: (settings: QualitySettings) => ( + createAction(AnalyticsActionsTypes.UPDATE_QUALITY_SETTINGS, { settings }) + ), + updateQualitySettingsSuccess: (settings: QualitySettings) => ( + createAction(AnalyticsActionsTypes.UPDATE_QUALITY_SETTINGS_SUCCESS, { settings }) + ), + updateQualitySettingsFailed: (error: any) => ( + createAction(AnalyticsActionsTypes.UPDATE_QUALITY_SETTINGS_FAILED, { error }) + ), }; export const getQualityReportsAsync = (task: Task, query: QualityQuery): ThunkAction => ( @@ -50,4 +80,31 @@ export const getQualityReportsAsync = (task: Task, query: QualityQuery): ThunkAc } ); +export const getQualitySettingsAsync = (task: Task): ThunkAction => ( + async (dispatch: ActionCreator): Promise => { + dispatch(analyticsActions.getQualitySettings(task.id)); + try { + const qualitySettings = await cvat.analytics.quality.settings.get(task.qualitySettingsID); + + dispatch(analyticsActions.getQualitySettingsSuccess(qualitySettings)); + } catch (error) { + dispatch(analyticsActions.getQualityReportsFailed(error)); + } + } +); + +export const updateQualitySettingsAsync = (qualitySettings: QualitySettings): ThunkAction => ( + async (dispatch: ActionCreator): Promise => { + dispatch(analyticsActions.updateQualitySettings(qualitySettings)); + + try { + const updatedQualitySettings = await qualitySettings.save(); + dispatch(analyticsActions.updateQualitySettingsSuccess(updatedQualitySettings)); + } catch (error) { + dispatch(analyticsActions.updateQualitySettingsFailed(error)); + throw error; + } + } +); + export type AnalyticsActions = ActionUnion; diff --git a/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx b/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx index 1fc5bbea0d7c..c04c2c79837c 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx @@ -8,10 +8,11 @@ import React from 'react'; import Text from 'antd/lib/typography/Text'; import moment from 'moment'; import { QualityReport, Task, getCore } from 'cvat-core-wrapper'; -import { useSelector } from 'react-redux'; +import { useSelector, useDispatch } from 'react-redux'; import { CombinedState } from 'reducers'; import Button from 'antd/lib/button'; -import { DownloadOutlined } from '@ant-design/icons'; +import { DownloadOutlined, MoreOutlined } from '@ant-design/icons'; +import { analyticsActions } from 'actions/analytics-actions'; import AnalyticsCard from './analytics-card'; import { toRepresentation } from './common'; @@ -21,6 +22,7 @@ interface Props { function MeanQuality(props: Props): JSX.Element { const { task } = props; + const dispatch = useDispatch(); const tasksReports: QualityReport[] = useSelector((state: CombinedState) => state.analytics.quality.tasksReports); const taskReport = tasksReports.find((report: QualityReport) => report.taskId === task.id); const reportSummary = taskReport?.summary; @@ -67,6 +69,10 @@ function MeanQuality(props: Props): JSX.Element { Quality Report + dispatch(analyticsActions.switchQualitySettingsVisible(true))} + />
{taskReport?.createdDate ? moment(taskReport?.createdDate).fromNow() : ''}
diff --git a/cvat-ui/src/components/task-analytics-page/quality/quality-settings-modal.tsx b/cvat-ui/src/components/task-analytics-page/quality/quality-settings-modal.tsx new file mode 100644 index 000000000000..0399c349d9a9 --- /dev/null +++ b/cvat-ui/src/components/task-analytics-page/quality/quality-settings-modal.tsx @@ -0,0 +1,256 @@ +// Copyright (C) 2023 CVAT.ai Corporation +// +// SPDX-License-Identifier: MIT + +import React, { useCallback } from 'react'; +import { useDispatch, useSelector } from 'react-redux'; +import { CombinedState } from 'reducers'; +import Text from 'antd/lib/typography/Text'; +import Modal from 'antd/lib/modal'; +import InputNumber from 'antd/lib/input-number'; +import { analyticsActions, updateQualitySettingsAsync } from 'actions/analytics-actions'; +import { Col, Row } from 'antd/lib/grid'; +import { Divider } from 'antd'; +import Form from 'antd/lib/form'; +import Checkbox from 'antd/lib/checkbox/Checkbox'; + +export default function QualitySettingsModal(): JSX.Element | null { + const visible = useSelector((state: CombinedState) => state.analytics.quality.settings.modalVisible); + const loading = useSelector((state: CombinedState) => state.analytics.quality.settings.fetching); + const settings = useSelector((state: CombinedState) => state.analytics.quality.settings.current); + const [form] = Form.useForm(); + + console.log(settings); + const dispatch = useDispatch(); + + const onOk = useCallback(async () => { + try { + if (settings) { + const values = await form.validateFields(); + settings.lineThickness = values.lineThickness / 100; + settings.lineOrientationThreshold = values.lineOrientationThreshold / 100; + settings.orientedLines = values.orientedLines; + + settings.lowOverlapThreshold = values.lowOverlapThreshold / 100; + settings.iouThreshold = values.iouThreshold / 100; + settings.oksSigma = values.oksSigma / 100; + + settings.orientedLines = values.orientedLines; + settings.groupMatchThreshold = values.groupMatchThreshold / 100; + + settings.checkCoveredAnnotations = values.checkCoveredAnnotations; + settings.objectVisibilityThreshold = values.objectVisibilityThreshold / 100; + + settings.compareAttributes = values.compareAttributes; + settings.panopticComparison = values.panopticComparison; + + await dispatch(updateQualitySettingsAsync(settings)); + await dispatch(analyticsActions.switchQualitySettingsVisible(false)); + } + return settings; + } catch (e) { + return false; + } + }, [settings]); + + const onCancel = useCallback(() => { + dispatch(analyticsActions.switchQualitySettingsVisible(false)); + }, []); + + return ( + Annotation Settings Quality} + visible={visible} + onOk={onOk} + onCancel={onCancel} + confirmLoading={loading} + className='cvat-modal-quality-settings' + > + { settings ? ( +
+ + + Overlap Settings + + + +
+ + + + + + + + + + + + + + + + + + + + + Line Settings + + + + + + + + + + + + + + + + + + + Oriented lines + + + + + + + + Group Settings + + + + + + + + + + + + Compare groups + + + + + + + + Others + + + + + + + + + + + + Check covered annotations + + + + + + + + + Compare attributes + + + + + + + Panoptic comparison + + + + + + ) : ( + No quality settings + )} + + ); +} diff --git a/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx b/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx index e1cc7de5c47a..e1556bb16ea7 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx @@ -12,13 +12,14 @@ import { Row } from 'antd/lib/grid'; import Text from 'antd/lib/typography/Text'; import JobItem from 'components/job-item/job-item'; import { useDispatch, useSelector } from 'react-redux'; -import { getQualityReportsAsync } from 'actions/analytics-actions'; +import { getQualityReportsAsync, getQualitySettingsAsync } from 'actions/analytics-actions'; import { CombinedState } from 'reducers'; import MeanQuality from './mean-quality'; import JobList from './job-list'; import GtConflicts from './gt-conflicts'; import Issues from './issues'; import EmptyGtJob from './empty-job'; +import QualitySettingsModal from './quality-settings-modal'; interface Props { task: Task, @@ -32,6 +33,7 @@ function TaskQualityComponent(props: Props): JSX.Element { useEffect(() => { dispatch(getQualityReportsAsync(task, { ...query, taskId: task.id })); + dispatch(getQualitySettingsAsync(task)); }, []); const gtJob = task.jobs.find((job: Job) => job.type === JobType.GROUND_TRUTH); @@ -56,6 +58,7 @@ function TaskQualityComponent(props: Props): JSX.Element { + ); } diff --git a/cvat-ui/src/components/task-analytics-page/styles.scss b/cvat-ui/src/components/task-analytics-page/styles.scss index 3ceedcccadb5..80ad802e9d9a 100644 --- a/cvat-ui/src/components/task-analytics-page/styles.scss +++ b/cvat-ui/src/components/task-analytics-page/styles.scss @@ -79,7 +79,7 @@ font-size: 10px; position: absolute; bottom: -$grid-unit-size * 3; - right: 0; + right: $grid-unit-size * 4; } .cvat-task-analytics-page { @@ -119,3 +119,23 @@ padding-right: $grid-unit-size * 3; } } + +.cvat-quality-settings-switch { + padding-left: $grid-unit-size * 2; +} + +.cvat-quality-settings-title { + margin-bottom: $grid-unit-size * 2; +} + +.cvat-modal-quality-settings { + top: $grid-unit-size * 3; + + .ant-divider { + margin: $grid-unit-size 0; + } + + .ant-form-item-control-input { + min-height: 0; + } +} diff --git a/cvat-ui/src/cvat-core-wrapper.ts b/cvat-ui/src/cvat-core-wrapper.ts index 372d952d9595..94c32446ce1f 100644 --- a/cvat-ui/src/cvat-core-wrapper.ts +++ b/cvat-ui/src/cvat-core-wrapper.ts @@ -16,6 +16,7 @@ import { Job, Task } from 'cvat-core/src/session'; import Project from 'cvat-core/src/project'; import QualityReport from 'cvat-core/src/quality-report'; import QualityConflict, { AnnotationConflict } from 'cvat-core/src/quality-conflict'; +import QualitySettings from 'cvat-core/src/quality-settings'; import { ShapeType, LabelType, ModelKind, ModelProviders, ModelReturnType, DimensionType, JobType, JobStage, JobState, @@ -68,6 +69,7 @@ export { JobState, QualityReport, QualityConflict, + QualitySettings, AnnotationConflict, }; diff --git a/cvat-ui/src/reducers/analytics-reducer.ts b/cvat-ui/src/reducers/analytics-reducer.ts index 60ea1380c515..80dda841001e 100644 --- a/cvat-ui/src/reducers/analytics-reducer.ts +++ b/cvat-ui/src/reducers/analytics-reducer.ts @@ -15,6 +15,11 @@ const defaultState: AnalyticsState = { jobId: null, parentId: null, }, + settings: { + modalVisible: false, + fetching: false, + current: null, + }, }, }; @@ -50,6 +55,55 @@ export default function ( ...state, fetching: false, }; + case AnalyticsActionsTypes.SWITCH_QUALITY_SETTINGS_VISIBLE: + return { + ...state, + quality: { + ...state.quality, + settings: { + ...state.quality.settings, + modalVisible: action.payload.visible, + }, + }, + }; + case AnalyticsActionsTypes.UPDATE_QUALITY_SETTINGS: + case AnalyticsActionsTypes.GET_QUALITY_SETTINGS: { + return { + ...state, + quality: { + ...state.quality, + settings: { + ...state.quality.settings, + fetching: true, + }, + }, + }; + } + case AnalyticsActionsTypes.UPDATE_QUALITY_SETTINGS_SUCCESS: + case AnalyticsActionsTypes.GET_QUALITY_SETTINGS_SUCCESS: + return { + ...state, + quality: { + ...state.quality, + settings: { + ...state.quality.settings, + current: action.payload.settings, + fetching: false, + }, + }, + }; + case AnalyticsActionsTypes.UPDATE_QUALITY_SETTINGS_FAILED: + case AnalyticsActionsTypes.GET_QUALITY_SETTINGS_FAILED: + return { + ...state, + quality: { + ...state.quality, + settings: { + ...state.quality.settings, + fetching: false, + }, + }, + }; default: return state; } diff --git a/cvat-ui/src/reducers/index.ts b/cvat-ui/src/reducers/index.ts index 3dde0dccd049..3dea41244eb1 100644 --- a/cvat-ui/src/reducers/index.ts +++ b/cvat-ui/src/reducers/index.ts @@ -6,7 +6,7 @@ import { Canvas3d } from 'cvat-canvas3d/src/typescript/canvas3d'; import { Canvas, RectDrawingMethod, CuboidDrawingMethod } from 'cvat-canvas-wrapper'; import { - Webhook, MLModel, ModelProvider, Organization, QualityReport, QualityConflict, + Webhook, MLModel, ModelProvider, Organization, QualityReport, QualityConflict, QualitySettings, } from 'cvat-core-wrapper'; import { IntelligentScissors } from 'utils/opencv-wrapper/intelligent-scissors'; import { KeyMap } from 'utils/mousetrap-react'; @@ -565,6 +565,11 @@ export interface NotificationsState { updating: null | ErrorState; deleting: null | ErrorState; }; + analytics: { + fetching: null | ErrorState; + fetchingSettings: null | ErrorState; + updatingSettings: null | ErrorState; + } }; messages: { tasks: { @@ -913,6 +918,11 @@ export interface AnalyticsState { tasksReports: QualityReport[]; jobsReports: QualityReport[]; query: QualityQuery; + settings: { + modalVisible: boolean; + current: QualitySettings | null; + fetching: boolean; + } } } diff --git a/cvat-ui/src/reducers/notifications-reducer.ts b/cvat-ui/src/reducers/notifications-reducer.ts index c875b389c01f..6ee902f823e5 100644 --- a/cvat-ui/src/reducers/notifications-reducer.ts +++ b/cvat-ui/src/reducers/notifications-reducer.ts @@ -24,6 +24,7 @@ import { OrganizationActionsTypes } from 'actions/organization-actions'; import { JobsActionTypes } from 'actions/jobs-actions'; import { WebhooksActionsTypes } from 'actions/webhooks-actions'; +import { AnalyticsActionsTypes } from 'actions/analytics-actions'; import { NotificationsState } from '.'; const defaultState: NotificationsState = { @@ -157,6 +158,11 @@ const defaultState: NotificationsState = { updating: null, deleting: null, }, + analytics: { + fetching: null, + fetchingSettings: null, + updatingSettings: null, + }, }, messages: { tasks: { @@ -1657,6 +1663,54 @@ export default function (state = defaultState, action: AnyAction): Notifications }, }; } + case AnalyticsActionsTypes.GET_QUALITY_REPORTS_FAILED: { + return { + ...state, + errors: { + ...state.errors, + analytics: { + ...state.errors.analytics, + fetching: { + message: 'Could not fetch quality reports', + reason: action.payload.error.toString(), + className: 'cvat-notification-notice-get-quality-reports-failed', + }, + }, + }, + }; + } + case AnalyticsActionsTypes.GET_QUALITY_SETTINGS_FAILED: { + return { + ...state, + errors: { + ...state.errors, + analytics: { + ...state.errors.analytics, + fetchingSettings: { + message: 'Could not fetch quality settings', + reason: action.payload.error.toString(), + className: 'cvat-notification-notice-get-quality-settings-failed', + }, + }, + }, + }; + } + case AnalyticsActionsTypes.UPDATE_QUALITY_SETTINGS_FAILED: { + return { + ...state, + errors: { + ...state.errors, + analytics: { + ...state.errors.analytics, + updatingSettings: { + message: 'Could not update quality settings', + reason: action.payload.error.toString(), + className: 'cvat-notification-notice-update-quality-settings-failed', + }, + }, + }, + }; + } case BoundariesActionTypes.RESET_AFTER_ERROR: case AuthActionTypes.LOGOUT_SUCCESS: { return { ...defaultState }; diff --git a/cvat/apps/quality_control/serializers.py b/cvat/apps/quality_control/serializers.py index 93dfc1b4c88e..53fcdbf5cbd8 100644 --- a/cvat/apps/quality_control/serializers.py +++ b/cvat/apps/quality_control/serializers.py @@ -63,6 +63,7 @@ class QualitySettingsSerializer(serializers.ModelSerializer): class Meta: model = models.QualitySettings fields = ( + 'id', 'task', 'iou_threshold', @@ -84,7 +85,7 @@ class Meta: 'compare_attributes', ) - read_only_fields = ('task', ) + read_only_fields = ('id', 'task', ) extra_kwargs = { k: {'required': False} for k in fields From 6d750fe37db4ccc2b9d076246825c2afbd9ec96e Mon Sep 17 00:00:00 2001 From: klakhov Date: Sun, 21 May 2023 09:03:03 +0300 Subject: [PATCH 150/257] updated job item --- cvat-ui/src/components/job-item/job-item.tsx | 92 +++++++++++++++++--- cvat-ui/src/components/job-item/styles.scss | 2 +- 2 files changed, 81 insertions(+), 13 deletions(-) diff --git a/cvat-ui/src/components/job-item/job-item.tsx b/cvat-ui/src/components/job-item/job-item.tsx index df31e8958d31..fbb95b678097 100644 --- a/cvat-ui/src/components/job-item/job-item.tsx +++ b/cvat-ui/src/components/job-item/job-item.tsx @@ -4,7 +4,7 @@ import './styles.scss'; -import React from 'react'; +import React, { useEffect, useState } from 'react'; import { Col, Row } from 'antd/lib/grid'; import Card from 'antd/lib/card'; import Text from 'antd/lib/typography/Text'; @@ -13,15 +13,19 @@ import Icon from '@ant-design/icons'; import { Job, JobStage, JobType, User, } from 'cvat-core-wrapper'; -import { MoreOutlined, ProjectOutlined } from '@ant-design/icons/lib/icons'; +import { + BorderOutlined, + LoadingOutlined, MoreOutlined, ProjectOutlined, QuestionCircleOutlined, +} from '@ant-design/icons/lib/icons'; import { Link } from 'react-router-dom'; import moment from 'moment'; import UserSelector from 'components/task-page/user-selector'; import Dropdown from 'antd/lib/dropdown'; import Tag from 'antd/lib/tag'; -import { DurationIcon, FrameCountIcon, FramesIcon } from 'icons'; +import { DurationIcon, FramesIcon } from 'icons'; import { useSelector } from 'react-redux'; import { CombinedState } from 'reducers'; +import CVATTooltip from 'components/common/cvat-tooltip'; import JobActionsMenu from './job-actions-menu'; interface Props { @@ -29,6 +33,63 @@ interface Props { onJobUpdate: (job: Job) => void; } +function ReviewSummaryComponent({ jobInstance }: { jobInstance: any }): JSX.Element { + const [summary, setSummary] = useState | null>(null); + const [error, setError] = useState(null); + useEffect(() => { + setError(null); + jobInstance + .issues(jobInstance.id) + .then((issues: any[]) => { + setSummary({ + issues_unsolved: issues.filter((issue) => !issue.resolved).length, + issues_resolved: issues.filter((issue) => issue.resolved).length, + }); + }) + .catch((_error: any) => { + // eslint-disable-next-line + console.log(_error); + setError(_error); + }); + }, []); + + if (!summary) { + if (error) { + if (error.toString().includes('403')) { + return

You do not have permissions

; + } + + return

Could not fetch, check console output

; + } + + return ( + <> +

Loading..

+ + + ); + } + + return ( +
+ + + + + + + + + + +
+ Unsolved issues + {summary.issues_unsolved}
+ Resolved issues + {summary.issues_resolved}
+ ); +} + function JobItem(props: Props): JSX.Element { const { job, onJobUpdate } = props; const { stage, id } = job; @@ -94,8 +155,15 @@ function JobItem(props: Props): JSX.Element { /> - - Stage: + + + Stage: + + + }> + + + + @@ -140,20 +209,19 @@ function JobItem(props: Props): JSX.Element { - - Frame count: - {` ${job.stopFrame - job.startFrame}`} + + Frame range: + {` ${job.startFrame}-${job.stopFrame}`} - - Frames: - {` ${job.startFrame}-${job.stopFrame}`} + + Frame count: + {` ${job.stopFrame - job.startFrame}`} - diff --git a/cvat-ui/src/components/job-item/styles.scss b/cvat-ui/src/components/job-item/styles.scss index 2d9176e86c59..82295a76c761 100644 --- a/cvat-ui/src/components/job-item/styles.scss +++ b/cvat-ui/src/components/job-item/styles.scss @@ -19,7 +19,7 @@ .cvat-job-item-selects { padding-top: $grid-unit-size; - .ant-select { + .cvat-job-assignee-selector { margin-right: $grid-unit-size; } } From 4e3f2e76a1262a3666a373a4956f6aff434cd9b8 Mon Sep 17 00:00:00 2001 From: klakhov Date: Sun, 21 May 2023 10:22:53 +0300 Subject: [PATCH 151/257] refactored job list, added filtering/sorting --- cvat-ui/package.json | 2 + cvat-ui/src/components/task-page/job-list.tsx | 431 ++++++------------ .../task-page/jobs-filter-configuration.ts | 94 ++++ cvat-ui/src/components/task-page/styles.scss | 22 +- yarn.lock | 11 +- 5 files changed, 255 insertions(+), 305 deletions(-) create mode 100644 cvat-ui/src/components/task-page/jobs-filter-configuration.ts diff --git a/cvat-ui/package.json b/cvat-ui/package.json index f470a58e6cd0..9ccd253cc192 100644 --- a/cvat-ui/package.json +++ b/cvat-ui/package.json @@ -21,6 +21,7 @@ "license": "MIT", "dependencies": { "@ant-design/icons": "^4.6.3", + "@types/json-logic-js": "^2.0.2", "@types/lodash": "^4.14.172", "@types/lru-cache": "^7.10.10", "@types/platform": "^1.3.4", @@ -41,6 +42,7 @@ "cvat-core": "link:./../cvat-core", "dotenv-webpack": "^8.0.1", "error-stack-parser": "^2.0.6", + "json-logic-js": "^2.0.2", "lodash": "^4.17.21", "lru-cache": "^9.1.1", "moment": "^2.29.2", diff --git a/cvat-ui/src/components/task-page/job-list.tsx b/cvat-ui/src/components/task-page/job-list.tsx index bf3f369374c7..4a6066b2f3b6 100644 --- a/cvat-ui/src/components/task-page/job-list.tsx +++ b/cvat-ui/src/components/task-page/job-list.tsx @@ -3,85 +3,57 @@ // // SPDX-License-Identifier: MIT -import React, { useEffect, useState } from 'react'; +import React, { useCallback, useEffect, useState } from 'react'; +import jsonLogic from 'json-logic-js'; +import _ from 'lodash'; import { useHistory } from 'react-router'; import { Row, Col } from 'antd/lib/grid'; -import { LoadingOutlined, QuestionCircleOutlined, CopyOutlined } from '@ant-design/icons'; -import { ColumnFilterItem } from 'antd/lib/table/interface'; -import Table from 'antd/lib/table'; -import Button from 'antd/lib/button'; -import Select from 'antd/lib/select'; -import Text from 'antd/lib/typography/Text'; -import moment from 'moment'; -import copy from 'copy-to-clipboard'; import { - Task, Job, JobType, User, + Task, Job, } from 'cvat-core-wrapper'; -import { JobStage } from 'reducers'; -import CVATTooltip from 'components/common/cvat-tooltip'; -import UserSelector from './user-selector'; +import { Indexable, JobsQuery } from 'reducers'; +import JobItem from 'components/job-item/job-item'; +import Pagination from 'antd/lib/pagination'; +import { + SortingComponent, ResourceFilterHOC, defaultVisibility, updateHistoryFromQuery, +} from 'components/resource-sorting-filtering'; +import Button from 'antd/lib/button'; +import { PlusOutlined } from '@ant-design/icons'; +import Empty from 'antd/lib/empty'; +import { + localStorageRecentKeyword, localStorageRecentCapacity, predefinedFilterValues, config, +} from './jobs-filter-configuration'; + +const FilteringComponent = ResourceFilterHOC( + config, localStorageRecentKeyword, localStorageRecentCapacity, predefinedFilterValues, +); interface Props { task: Task; onUpdateJob(jobInstance: Job): void; } -function ReviewSummaryComponent({ jobInstance }: { jobInstance: any }): JSX.Element { - const [summary, setSummary] = useState | null>(null); - const [error, setError] = useState(null); - useEffect(() => { - setError(null); - jobInstance - .issues(jobInstance.id) - .then((issues: any[]) => { - setSummary({ - issues_unsolved: issues.filter((issue) => !issue.resolved).length, - issues_resolved: issues.filter((issue) => issue.resolved).length, - }); - }) - .catch((_error: any) => { - // eslint-disable-next-line - console.log(_error); - setError(_error); - }); - }, []); - - if (!summary) { - if (error) { - if (error.toString().includes('403')) { - return

You do not have permissions

; - } - - return

Could not fetch, check console output

; +const PAGE_SIZE = 10; +function setUpJobsList(jobs: Job[], query: JobsQuery): Job[] { + let result = jobs; + if (query.sort) { + let sort = query.sort.split(','); + const orders = sort.map((elem: string) => (elem.startsWith('-') ? 'desc' : 'asc')); + sort = sort.map((elem: string) => (elem.startsWith('-') ? elem.substring(1) : elem)); + const assigneeInd = sort.indexOf('assignee'); + if (assigneeInd > -1) { + sort[assigneeInd] = 'assignee.username'; } - - return ( - <> -

Loading..

- - - ); + result = _.orderBy(result, sort, orders); + } + if (query.filter) { + const converted = result.map((job) => ({ ...job, assignee: job?.assignee?.username })); + const filter = JSON.parse(query.filter); + result = result.filter((job, index) => jsonLogic.apply(filter, converted[index])); } - return ( - - - - - - - - - - - -
- Unsolved issues - {summary.issues_unsolved}
- Resolved issues - {summary.issues_resolved}
- ); + return result; } function JobListComponent(props: Props): JSX.Element { @@ -89,244 +61,115 @@ function JobListComponent(props: Props): JSX.Element { task: taskInstance, onUpdateJob, } = props; + const [visibility, setVisibility] = useState(defaultVisibility); const history = useHistory(); const { id: taskId } = taskInstance; - let { jobs } = taskInstance; - jobs = jobs.filter((job: Job) => job.type === JobType.ANNOTATION); - - function sorter(path: string) { - return (obj1: any, obj2: any): number => { - let currentObj1 = obj1; - let currentObj2 = obj2; - let field1: string | null = null; - let field2: string | null = null; - for (const pathSegment of path.split('.')) { - field1 = currentObj1 && pathSegment in currentObj1 ? currentObj1[pathSegment] : null; - field2 = currentObj2 && pathSegment in currentObj2 ? currentObj2[pathSegment] : null; - currentObj1 = currentObj1 && pathSegment in currentObj1 ? currentObj1[pathSegment] : null; - currentObj2 = currentObj2 && pathSegment in currentObj2 ? currentObj2[pathSegment] : null; - } - - if (field1 && field2) { - return field1.localeCompare(field2); - } - - if (field1 === null) { - return 1; - } - - return -1; - }; - } - - function collectUsers(path: string): ColumnFilterItem[] { - return Array.from( - new Set( - jobs.map((job: any) => { - if (job[path] === null) { - return null; - } - - return job[path].username; - }), - ), - ).map((value: string | null) => ({ text: value || 'Is Empty', value: value || false })); - } - - const columns = [ - { - title: 'Job', - dataIndex: 'job', - key: 'job', - render: (id: number): JSX.Element => ( -
- -
- ), - }, - { - title: 'Frames', - dataIndex: 'frames', - key: 'frames', - className: 'cvat-text-color cvat-job-item-frames', - }, - { - title: 'Stage', - dataIndex: 'stage', - key: 'stage', - className: 'cvat-job-item-stage', - render: (jobInstance: any): JSX.Element => { - const { stage } = jobInstance; - - return ( -
- - }> - - -
- ); - }, - sorter: sorter('stage.stage'), - filters: [ - { text: 'annotation', value: 'annotation' }, - { text: 'validation', value: 'validation' }, - { text: 'acceptance', value: 'acceptance' }, - ], - onFilter: (value: string | number | boolean, record: any) => record.stage.stage === value, - }, - { - title: 'State', - dataIndex: 'state', - key: 'state', - className: 'cvat-job-item-state', - render: (jobInstance: any): JSX.Element => { - const { state } = jobInstance; - return ( - - {state} - - ); - }, - sorter: sorter('state.state'), - filters: [ - { text: 'new', value: 'new' }, - { text: 'in progress', value: 'in progress' }, - { text: 'completed', value: 'completed' }, - { text: 'rejected', value: 'rejected' }, - ], - onFilter: (value: string | number | boolean, record: any) => record.state.state === value, - }, - { - title: 'Started on', - dataIndex: 'started', - key: 'started', - className: 'cvat-text-color', - }, - { - title: 'Duration', - dataIndex: 'duration', - key: 'duration', - className: 'cvat-text-color', - }, - { - title: 'Assignee', - dataIndex: 'assignee', - key: 'assignee', - className: 'cvat-job-item-assignee', - render: (jobInstance: any): JSX.Element => ( - { - if (jobInstance?.assignee?.id === value?.id) return; - jobInstance.assignee = value; - onUpdateJob(jobInstance); - }} - /> - ), - sorter: sorter('assignee.assignee.username'), - filters: collectUsers('assignee'), - onFilter: (value: string | number | boolean, record: any) => ( - record.assignee.assignee?.username || false - ) === value, - }, - ]; - - let completed = 0; - const data = jobs.reduce((acc: any[], job: any) => { - if (job.stage === 'acceptance') { - completed++; + const { jobs } = taskInstance; + + const queryParams = new URLSearchParams(history.location.search); + const updatedQuery: JobsQuery = { + page: 1, + sort: null, + search: null, + filter: null, + }; + for (const key of Object.keys(updatedQuery)) { + (updatedQuery as Indexable)[key] = queryParams.get(key) || null; + if (key === 'page') { + updatedQuery.page = updatedQuery.page ? +updatedQuery.page : 1; } - - const created = moment(taskInstance.createdDate); - - const now = moment(moment.now()); - acc.push({ - key: job.id, - job: job.id, - frames: `${job.startFrame}-${job.stopFrame}`, - state: job, - stage: job, - started: `${created.format('MMMM Do YYYY HH:MM')}`, - duration: `${moment.duration(now.diff(created)).humanize()}`, - assignee: job, + } + const [query, setQuery] = useState(updatedQuery); + const filteredJobs = setUpJobsList(jobs, query); + const jobViews = filteredJobs + .slice((query.page - 1) * PAGE_SIZE, query.page * PAGE_SIZE) + .map((job: Job) => ); + useEffect(() => { + history.replace({ + search: updateHistoryFromQuery(query), }); + }, [query]); - return acc; + const onCreateJob = useCallback(() => { + history.push(`/tasks/${taskId}/jobs/create`); }, []); return ( -
- - - Jobs - - - - - - {`${completed} of ${data.length} jobs`} - - - 'cvat-task-jobs-table-row'} - columns={columns} - dataSource={data} - size='small' - /> - + <> +
+ ( + setVisibility({ ...defaultVisibility, sorting: visible }) + )} + defaultFields={query.sort?.split(',') || ['-ID']} + sortingFields={['ID', 'Assignee', 'State', 'Stage']} + onApplySorting={(sort: string | null) => { + setQuery({ + ...query, + sort, + }); + }} + /> + ( + setVisibility({ ...defaultVisibility, predefined: visible }) + )} + onBuilderVisibleChange={(visible: boolean) => ( + setVisibility({ ...defaultVisibility, builder: visible }) + )} + onRecentVisibleChange={(visible: boolean) => ( + setVisibility({ ...defaultVisibility, builder: visibility.builder, recent: visible }) + )} + onApplyFilter={(filter: string | null) => { + setQuery({ + ...query, + filter, + }); + }} + /> +
+
+
+ + { + jobViews.length ? ( + <> +
+
+ {jobViews} + + + + + { + setQuery({ + ...query, + page, + }); + }} + showSizeChanger={false} + total={filteredJobs.length} + pageSize={PAGE_SIZE} + current={query.page} + showQuickJumper + /> + + + + ) : ( + + ) + } + ); } diff --git a/cvat-ui/src/components/task-page/jobs-filter-configuration.ts b/cvat-ui/src/components/task-page/jobs-filter-configuration.ts new file mode 100644 index 000000000000..d44c5e3a5aeb --- /dev/null +++ b/cvat-ui/src/components/task-page/jobs-filter-configuration.ts @@ -0,0 +1,94 @@ +// Copyright (C) 2022 Intel Corporation +// +// SPDX-License-Identifier: MIT + +import { Config } from 'react-awesome-query-builder'; + +export const config: Partial = { + fields: { + state: { + label: 'State', + type: 'select', + operators: ['select_any_in', 'select_equals'], // ['select_equals', 'select_not_equals', 'select_any_in', 'select_not_any_in'] + valueSources: ['value'], + fieldSettings: { + listValues: [ + { value: 'new', title: 'new' }, + { value: 'in progress', title: 'in progress' }, + { value: 'rejected', title: 'rejected' }, + { value: 'completed', title: 'completed' }, + ], + }, + }, + stage: { + label: 'Stage', + type: 'select', + operators: ['select_any_in', 'select_equals'], + valueSources: ['value'], + fieldSettings: { + listValues: [ + { value: 'annotation', title: 'annotation' }, + { value: 'validation', title: 'validation' }, + { value: 'acceptance', title: 'acceptance' }, + ], + }, + }, + dimension: { + label: 'Dimension', + type: 'select', + operators: ['select_equals'], + valueSources: ['value'], + fieldSettings: { + listValues: [ + { value: '2d', title: '2D' }, + { value: '3d', title: '3D' }, + ], + }, + }, + assignee: { + label: 'Assignee', + type: 'text', // todo: change to select + valueSources: ['value'], + fieldSettings: { + // useAsyncSearch: true, + // forceAsyncSearch: true, + // async fetch does not work for now in this library for AntdConfig + // but that issue was solved, see https://github.com/ukrbublik/react-awesome-query-builder/issues/616 + // waiting for a new release, alternative is to use material design, but it is not the best option too + // asyncFetch: async (search: string | null) => { + // const users = await core.users.get({ + // limit: 10, + // is_active: true, + // ...(search ? { search } : {}), + // }); + + // return { + // values: users.map((user: any) => ({ + // value: user.username, title: user.username, + // })), + // hasMore: false, + // }; + // }, + }, + }, + updated_date: { + label: 'Last updated', + type: 'datetime', + operators: ['between', 'greater', 'greater_or_equal', 'less', 'less_or_equal'], + }, + id: { + label: 'ID', + type: 'number', + operators: ['equal', 'between', 'greater', 'greater_or_equal', 'less', 'less_or_equal'], + fieldSettings: { min: 0 }, + valueSources: ['value'], + }, + }, +}; + +export const localStorageRecentCapacity = 10; +export const localStorageRecentKeyword = 'recentlyAppliedJobsFilters'; +export const predefinedFilterValues = { + 'Assigned to me': '{"and":[{"==":[{"var":"assignee"},""]}]}', + 'Not completed': '{"!":{"or":[{"==":[{"var":"state"},"completed"]},{"==":[{"var":"stage"},"acceptance"]}]}}', +}; diff --git a/cvat-ui/src/components/task-page/styles.scss b/cvat-ui/src/components/task-page/styles.scss index 487164e9e151..86b68a789076 100644 --- a/cvat-ui/src/components/task-page/styles.scss +++ b/cvat-ui/src/components/task-page/styles.scss @@ -7,7 +7,7 @@ .cvat-task-details-wrapper { overflow-y: auto; - height: 90%; + height: 100%; width: 100%; .cvat-task-details { @@ -103,14 +103,10 @@ .cvat-task-job-list { width: 100%; height: auto; - border: 1px solid $border-color-1; - border-radius: 3px; - margin-top: 20px; - padding: 20px; - background: $background-color-1; + margin-top: $grid-unit-size * 2; - > div:nth-child(1) > div:nth-child(1) { - display: flex; + .cvat-job-item { + margin-bottom: $grid-unit-size; } } @@ -169,3 +165,13 @@ } } } + +.cvat-jobs-list-filters-wrapper { + display: flex; + justify-content: end; + margin-top: $grid-unit-size * 2; + + .cvat-resource-page-filters { + margin-right: $grid-unit-size * 4; + } +} diff --git a/yarn.lock b/yarn.lock index 18636dc1c78d..64aa589afd34 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1738,6 +1738,11 @@ "@types/tough-cookie" "*" parse5 "^7.0.0" +"@types/json-logic-js@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/json-logic-js/-/json-logic-js-2.0.2.tgz#f22ae63b1ff529db77368e78dab196730a2f1527" + integrity sha512-kM5tSI/HWDqlxpYTgISwaU93OdQ+fWzYliYOAn3QaVSCT1S6l0nm8jK2RZXRlD+Sx8s6RYhovZSxookkw6Wk7w== + "@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" @@ -3904,7 +3909,7 @@ custom-error-instance@2.1.1: three "^0.126.1" "cvat-canvas@link:./cvat-canvas": - version "2.16.4" + version "2.16.6" dependencies: "@types/fabric" "^4.5.7" "@types/polylabel" "^1.0.5" @@ -3917,7 +3922,7 @@ custom-error-instance@2.1.1: svg.select.js "3.0.1" "cvat-core@link:./cvat-core": - version "9.0.1" + version "9.1.1" dependencies: "@types/lodash" "^4.14.191" axios "^0.27.2" @@ -6874,7 +6879,7 @@ json-buffer@3.0.0: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== -json-logic-js@^2.0.1: +json-logic-js@^2.0.1, json-logic-js@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/json-logic-js/-/json-logic-js-2.0.2.tgz#b613e095f5e598cb78f7b9a2bbf638e74cf98158" integrity sha512-ZBtBdMJieqQcH7IX/LaBsr5pX+Y5JIW+EhejtM3Ffg2jdN9Iwf+Ht6TbHnvAZ/YtwyuhPaCBlnvzrwVeWdvGDQ== From 3195f6d056c445eedfe2acf22df791e31c8600f1 Mon Sep 17 00:00:00 2001 From: klakhov Date: Sun, 21 May 2023 10:27:36 +0300 Subject: [PATCH 152/257] added type filter --- .../task-page/jobs-filter-configuration.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/cvat-ui/src/components/task-page/jobs-filter-configuration.ts b/cvat-ui/src/components/task-page/jobs-filter-configuration.ts index d44c5e3a5aeb..ab5569df1407 100644 --- a/cvat-ui/src/components/task-page/jobs-filter-configuration.ts +++ b/cvat-ui/src/components/task-page/jobs-filter-configuration.ts @@ -76,6 +76,18 @@ export const config: Partial = { type: 'datetime', operators: ['between', 'greater', 'greater_or_equal', 'less', 'less_or_equal'], }, + type: { + label: 'Type', + type: 'select', + operators: ['select_equals'], + valueSources: ['value'], + fieldSettings: { + listValues: [ + { value: 'annotation', title: 'Annotation' }, + { value: 'ground_truth', title: 'Ground truth' }, + ], + }, + }, id: { label: 'ID', type: 'number', From c8da689a1da89fdf001cd3ca9b0ff7c995566395 Mon Sep 17 00:00:00 2001 From: klakhov Date: Sun, 21 May 2023 15:10:38 +0300 Subject: [PATCH 153/257] added colors to conflicts, conflict position --- cvat-canvas/src/typescript/canvasView.ts | 4 ++-- cvat-core/src/quality-conflict.ts | 21 +++++++++++++---- cvat-ui/src/assets/conflict.svg | 13 +++++++++++ .../annotation-page/review/conflict-label.tsx | 23 +++++++++++-------- .../review/conflicts-aggregator.tsx | 7 ++++-- .../annotation-page/review/styles.scss | 18 ++++++++++++++- .../quality/quality-settings-modal.tsx | 1 - cvat-ui/src/cvat-core-wrapper.ts | 3 ++- cvat-ui/src/icons.tsx | 2 ++ 9 files changed, 72 insertions(+), 20 deletions(-) create mode 100644 cvat-ui/src/assets/conflict.svg diff --git a/cvat-canvas/src/typescript/canvasView.ts b/cvat-canvas/src/typescript/canvasView.ts index fc6c73356d49..19b685ada1a4 100644 --- a/cvat-canvas/src/typescript/canvasView.ts +++ b/cvat-canvas/src/typescript/canvasView.ts @@ -1722,8 +1722,8 @@ export class CanvasViewImpl implements CanvasView, Listener { const shape = this.svgShapes[SShape.clientID]; if (!shape) return []; const box = (shape.node as any).getBBox(); - cx = box.x + (box.x + box.width - box.x) / 2; - cy = box.y + (box.y + box.height - box.y) / 2; + cx = box.x + (box.width) / 2; + cy = box.y; return [cx, cy]; } diff --git a/cvat-core/src/quality-conflict.ts b/cvat-core/src/quality-conflict.ts index adea789f0d04..cf3eb0f88493 100644 --- a/cvat-core/src/quality-conflict.ts +++ b/cvat-core/src/quality-conflict.ts @@ -8,12 +8,18 @@ export enum QualityConflictType { MISSING = 'missing_annotation', } +export enum ConflictImportance { + ERROR = 'error', + WARNING = 'warning', +} + export interface RawQualityConflictData { id?: number; frame?: number; type?: string; annotation_ids?: RawAnnotationConflictData[]; data?: string; + importance?: string; } export interface RawAnnotationConflictData { @@ -21,6 +27,7 @@ export interface RawAnnotationConflictData { obj_id?: number; type?: string; conflict_type?: string; + importance?: string; } export class AnnotationConflict { @@ -28,6 +35,7 @@ export class AnnotationConflict { public readonly objId: number; public readonly type: string; public readonly conflictType: QualityConflictType; + public readonly importance: ConflictImportance; constructor(initialData: RawAnnotationConflictData) { const data: RawAnnotationConflictData = { @@ -35,6 +43,7 @@ export class AnnotationConflict { obj_id: undefined, type: undefined, conflict_type: undefined, + importance: undefined, }; for (const property in data) { @@ -58,6 +67,9 @@ export class AnnotationConflict { conflictType: { get: () => data.conflict_type, }, + importance: { + get: () => data.importance, + }, }), ); } @@ -68,7 +80,7 @@ export default class QualityConflict { public readonly frame: number; public readonly type: QualityConflictType; public readonly annotationConflicts: AnnotationConflict[]; - public readonly data: string; + public readonly importance: ConflictImportance constructor(initialData: RawQualityConflictData) { const data: RawQualityConflictData = { @@ -76,7 +88,7 @@ export default class QualityConflict { frame: undefined, type: undefined, annotation_ids: [], - data: '', + importance: undefined, }; for (const property in data) { @@ -89,6 +101,7 @@ export default class QualityConflict { .map((rawData: RawAnnotationConflictData) => new AnnotationConflict({ ...rawData, conflict_type: data.type, + importance: data.importance, })); Object.defineProperties( @@ -106,8 +119,8 @@ export default class QualityConflict { annotationConflicts: { get: () => data.annotation_ids, }, - data: { - get: () => data.data, + importance: { + get: () => data.importance, }, }), ); diff --git a/cvat-ui/src/assets/conflict.svg b/cvat-ui/src/assets/conflict.svg new file mode 100644 index 000000000000..9ba9c877ef6a --- /dev/null +++ b/cvat-ui/src/assets/conflict.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/cvat-ui/src/components/annotation-page/review/conflict-label.tsx b/cvat-ui/src/components/annotation-page/review/conflict-label.tsx index ef381d2a4e66..fa0d7d1a3244 100644 --- a/cvat-ui/src/components/annotation-page/review/conflict-label.tsx +++ b/cvat-ui/src/components/annotation-page/review/conflict-label.tsx @@ -7,27 +7,28 @@ import React, { } from 'react'; import ReactDOM from 'react-dom'; import Tag from 'antd/lib/tag'; -import { - ExclamationCircleOutlined, -} from '@ant-design/icons'; - +import Icon from '@ant-design/icons'; import CVATTooltip from 'components/common/cvat-tooltip'; +import { ConflictIcon } from 'icons'; +import { ConflictImportance } from 'cvat-core-wrapper'; interface Props { top: number; left: number; angle: number; scale: number; - text: string + text: string; + importance: ConflictImportance; onClick: () => void; } export default function ConflictLabel(props: Props): ReactPortal { const { - top, left, angle, scale, onClick, text, + top, left, angle, scale, onClick, text, importance, } = props; const ref = useRef(null); + const conflictColor = importance === ConflictImportance.ERROR ? 'cvat-conflict-error' : 'cvat-conflict-warning'; const elementID = `cvat-hidden-issue-label-${top}`; return ReactDOM.createPortal( @@ -36,10 +37,14 @@ export default function ConflictLabel(props: Props): ReactPortal { ref={ref} id={elementID} onClick={onClick} - style={{ top, left, transform: `scale(${scale}) rotate(${angle}deg)` }} - className='cvat-conflict-label' + style={{ + top, + left, + transform: `scale(${scale}) rotate(${angle}deg) translateY(-100%) translateX(-50%)`, + }} + className={`cvat-conflict-label ${conflictColor}`} > - + , window.document.getElementById('cvat_canvas_attachment_board') as HTMLElement, diff --git a/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx b/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx index 75d87106e3c3..5c61d1a5cfbc 100644 --- a/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx +++ b/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx @@ -51,14 +51,16 @@ export default function ConflictAggregatorComponent(): JSX.Element | null { const [mapping, setMapping] = useState([]); useEffect(() => { setTimeout(() => { - if (geometry && showConflicts) { + if (canvasInstance instanceof Canvas && geometry && showConflicts) { const newMapping = conflicts.map((c: AnnotationConflict) => { const state = objectStates.find((s: ObjectState) => s.jobID === c.jobId && s.serverID === c.objId); if (state && canvasInstance) { const points = canvasInstance.setupConflictsRegions(state); if (points) { + const desc = c.conflictType.split('_').join(' '); return { - description: c.conflictType, + description: desc.charAt(0).toUpperCase() + desc.slice(1), + importance: c.importance, x: points[0], y: points[1], }; @@ -87,6 +89,7 @@ export default function ConflictAggregatorComponent(): JSX.Element | null { angle={-geometry.angle} scale={1 / geometry.scale} onClick={() => {}} + importance={conflict.importance} />, ); } diff --git a/cvat-ui/src/components/annotation-page/review/styles.scss b/cvat-ui/src/components/annotation-page/review/styles.scss index bb4a9f9cc4dc..234770a0dbf7 100644 --- a/cvat-ui/src/components/annotation-page/review/styles.scss +++ b/cvat-ui/src/components/annotation-page/review/styles.scss @@ -50,13 +50,13 @@ transform-origin: top left; background: none; border: none; + margin: 0; &:hover { opacity: 1; } svg { - fill: red; width: 1.5em; height: 1.5em; } @@ -135,3 +135,19 @@ color: $danger-icon-color; } + +.cvat-conflict-error { + svg { + path:first-child { + fill: #e10602; + } + } +} + +.cvat-conflict-warning { + svg { + path:first-child { + fill: #ff7300; + } + } +} diff --git a/cvat-ui/src/components/task-analytics-page/quality/quality-settings-modal.tsx b/cvat-ui/src/components/task-analytics-page/quality/quality-settings-modal.tsx index 0399c349d9a9..2109f8bd5571 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/quality-settings-modal.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/quality-settings-modal.tsx @@ -20,7 +20,6 @@ export default function QualitySettingsModal(): JSX.Element | null { const settings = useSelector((state: CombinedState) => state.analytics.quality.settings.current); const [form] = Form.useForm(); - console.log(settings); const dispatch = useDispatch(); const onOk = useCallback(async () => { diff --git a/cvat-ui/src/cvat-core-wrapper.ts b/cvat-ui/src/cvat-core-wrapper.ts index 94c32446ce1f..1f79d6b55ad7 100644 --- a/cvat-ui/src/cvat-core-wrapper.ts +++ b/cvat-ui/src/cvat-core-wrapper.ts @@ -15,7 +15,7 @@ import { SerializedAttribute, SerializedLabel } from 'cvat-core/src/server-respo import { Job, Task } from 'cvat-core/src/session'; import Project from 'cvat-core/src/project'; import QualityReport from 'cvat-core/src/quality-report'; -import QualityConflict, { AnnotationConflict } from 'cvat-core/src/quality-conflict'; +import QualityConflict, { AnnotationConflict, ConflictImportance } from 'cvat-core/src/quality-conflict'; import QualitySettings from 'cvat-core/src/quality-settings'; import { ShapeType, LabelType, ModelKind, ModelProviders, ModelReturnType, DimensionType, JobType, @@ -71,6 +71,7 @@ export { QualityConflict, QualitySettings, AnnotationConflict, + ConflictImportance, }; export type { diff --git a/cvat-ui/src/icons.tsx b/cvat-ui/src/icons.tsx index f499b837aa5b..3aeb81f3a076 100644 --- a/cvat-ui/src/icons.tsx +++ b/cvat-ui/src/icons.tsx @@ -66,6 +66,7 @@ import SVGCheckIcon from './assets/check-icon.svg'; import SVGDurationIcon from './assets/duration-icon.svg'; import SVGFrameCountIcon from './assets/frame-count-icon.svg'; import SVGFramesIcon from './assets/frames-icon.svg'; +import SVGConflictIcon from './assets/conflict.svg'; export const CVATLogo = React.memo((): JSX.Element => ); export const CursorIcon = React.memo((): JSX.Element => ); @@ -128,3 +129,4 @@ export const CheckIcon = React.memo((): JSX.Element => ); export const DurationIcon = React.memo((): JSX.Element => ); export const FrameCountIcon = React.memo((): JSX.Element => ); export const FramesIcon = React.memo((): JSX.Element => ); +export const ConflictIcon = React.memo((): JSX.Element => ); From 1f04dd3a9bfee43128d340784abf4a795bfd2d76 Mon Sep 17 00:00:00 2001 From: klakhov Date: Sun, 21 May 2023 15:46:55 +0300 Subject: [PATCH 154/257] moved switch to objects sidebar --- cvat-ui/src/assets/show-gt-icon.svg | 4 +++ .../annotation-page/appearance-block.tsx | 20 -------------- .../objects-side-bar/objects-list-header.tsx | 27 ++++++++++++++++++- .../objects-side-bar/objects-list.tsx | 6 +++++ .../objects-side-bar/styles.scss | 6 +++++ .../objects-side-bar/objects-list.tsx | 20 +++++++++++++- cvat-ui/src/icons.tsx | 2 ++ 7 files changed, 63 insertions(+), 22 deletions(-) create mode 100644 cvat-ui/src/assets/show-gt-icon.svg diff --git a/cvat-ui/src/assets/show-gt-icon.svg b/cvat-ui/src/assets/show-gt-icon.svg new file mode 100644 index 000000000000..b306bf7fae20 --- /dev/null +++ b/cvat-ui/src/assets/show-gt-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/cvat-ui/src/components/annotation-page/appearance-block.tsx b/cvat-ui/src/components/annotation-page/appearance-block.tsx index 3e9d13e6d826..58055ace5f1a 100644 --- a/cvat-ui/src/components/annotation-page/appearance-block.tsx +++ b/cvat-ui/src/components/annotation-page/appearance-block.tsx @@ -24,7 +24,6 @@ import { changeShapesOutlinedBorders as changeShapesOutlinedBordersAction, changeShowBitmap as changeShowBitmapAction, changeShowProjections as changeShowProjectionsAction, - changeShowGroundTruth as changeShowGroundTruthAction, } from 'actions/settings-actions'; interface StateToProps { @@ -36,7 +35,6 @@ interface StateToProps { outlineColor: string; showBitmap: boolean; showProjections: boolean; - showGroundTruth: boolean; workspace: Workspace; jobInstance: any; } @@ -45,7 +43,6 @@ interface DispatchToProps { collapseAppearance(): void; changeShapesColorBy(event: RadioChangeEvent): void; changeShapesOpacity(value: number): void; - changeShowGroundTruth(event: CheckboxChangeEvent): void; changeSelectedShapesOpacity(value: number): void; changeShapesOutlinedBorders(outlined: boolean, color: string): void; changeShowBitmap(event: CheckboxChangeEvent): void; @@ -62,7 +59,6 @@ function mapStateToProps(state: CombinedState): StateToProps { settings: { shapes: { colorBy, opacity, selectedOpacity, outlined, outlineColor, showBitmap, showProjections, - showGroundTruth, }, }, } = state; @@ -76,7 +72,6 @@ function mapStateToProps(state: CombinedState): StateToProps { outlineColor, showBitmap, showProjections, - showGroundTruth, workspace, jobInstance, }; @@ -90,9 +85,6 @@ function mapDispatchToProps(dispatch: Dispatch): DispatchToProps { changeShapesColorBy(event: RadioChangeEvent): void { dispatch(changeShapesColorByAction(event.target.value)); }, - changeShowGroundTruth(event: CheckboxChangeEvent): void { - dispatch(changeShowGroundTruthAction(event.target.checked)); - }, changeShapesOpacity(value: number): void { dispatch(changeShapesOpacityAction(value)); }, @@ -123,11 +115,8 @@ function AppearanceBlock(props: Props): JSX.Element { outlineColor, showBitmap, showProjections, - showGroundTruth, - workspace, collapseAppearance, changeShapesColorBy, - changeShowGroundTruth, changeShapesOpacity, changeSelectedShapesOpacity, changeShapesOutlinedBorders, @@ -216,15 +205,6 @@ function AppearanceBlock(props: Props): JSX.Element { Show projections )} - {is2D && workspace === Workspace.REVIEW_WORKSPACE && ( - - Show ground truth annotations - - )} diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/objects-list-header.tsx b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/objects-list-header.tsx index 57ffe6c59ceb..aca78579b57c 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/objects-list-header.tsx +++ b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/objects-list-header.tsx @@ -3,7 +3,7 @@ // SPDX-License-Identifier: MIT import React from 'react'; -import { +import Icon, { CaretDownOutlined, CaretUpFilled, EyeInvisibleFilled, @@ -16,6 +16,7 @@ import { Col, Row } from 'antd/lib/grid'; import StatesOrderingSelector from 'components/annotation-page/standard-workspace/objects-side-bar/states-ordering-selector'; import CVATTooltip from 'components/common/cvat-tooltip'; import { StatesOrdering } from 'reducers'; +import { ShowGroundTruthIcon } from 'icons'; interface Props { readonly: boolean; @@ -25,6 +26,7 @@ interface Props { statesOrdering: StatesOrdering; switchLockAllShortcut: string; switchHiddenAllShortcut: string; + showGroundTruth: boolean; changeStatesOrdering(value: StatesOrdering): void; lockAllStates(): void; unlockAllStates(): void; @@ -32,6 +34,7 @@ interface Props { expandAllStates(): void; hideAllStates(): void; showAllStates(): void; + changeShowGroundTruth(): void; } function LockAllSwitcher(props: Props): JSX.Element { @@ -64,6 +67,25 @@ function HideAllSwitcher(props: Props): JSX.Element { ); } +function GTSwitcher(props: Props): JSX.Element { + const { + showGroundTruth, changeShowGroundTruth, + } = props; + return ( + + + + + + ); +} + function CollapseAllSwitcher(props: Props): JSX.Element { const { statesCollapsed, expandAllStates, collapseAllStates } = props; return ( @@ -91,6 +113,9 @@ function ObjectListHeader(props: Props): JSX.Element { )} + {readonly && ( + + )} diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/objects-list.tsx b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/objects-list.tsx index 2b27a07c0318..be0b007cdd25 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/objects-list.tsx +++ b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/objects-list.tsx @@ -22,6 +22,7 @@ interface Props { objectStates: any[]; switchLockAllShortcut: string; switchHiddenAllShortcut: string; + showGroundTruth: boolean; changeStatesOrdering(value: StatesOrdering): void; lockAllStates(): void; unlockAllStates(): void; @@ -29,6 +30,7 @@ interface Props { expandAllStates(): void; hideAllStates(): void; showAllStates(): void; + changeShowGroundTruth(): void; } function ObjectListComponent(props: Props): JSX.Element { @@ -42,6 +44,7 @@ function ObjectListComponent(props: Props): JSX.Element { objectStates, switchLockAllShortcut, switchHiddenAllShortcut, + showGroundTruth, changeStatesOrdering, lockAllStates, unlockAllStates, @@ -49,6 +52,7 @@ function ObjectListComponent(props: Props): JSX.Element { expandAllStates, hideAllStates, showAllStates, + changeShowGroundTruth, } = props; let latestZOrder: number | null = null; @@ -62,6 +66,7 @@ function ObjectListComponent(props: Props): JSX.Element { statesOrdering={statesOrdering} switchLockAllShortcut={switchLockAllShortcut} switchHiddenAllShortcut={switchHiddenAllShortcut} + showGroundTruth={showGroundTruth} changeStatesOrdering={changeStatesOrdering} lockAllStates={lockAllStates} unlockAllStates={unlockAllStates} @@ -69,6 +74,7 @@ function ObjectListComponent(props: Props): JSX.Element { expandAllStates={expandAllStates} hideAllStates={hideAllStates} showAllStates={showAllStates} + changeShowGroundTruth={changeShowGroundTruth} />
{sortedStatesID.map( diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/styles.scss b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/styles.scss index e6b1b8fff311..22ca6bfdfea8 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/styles.scss +++ b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/styles.scss @@ -449,3 +449,9 @@ border: 2px dashed $object-item-border-color; padding: 0; } + +.cvat-objects-sidebar-show-ground-truth-active { + path { + fill: #1890ff; + } +} diff --git a/cvat-ui/src/containers/annotation-page/standard-workspace/objects-side-bar/objects-list.tsx b/cvat-ui/src/containers/annotation-page/standard-workspace/objects-side-bar/objects-list.tsx index 67eef67f8473..4003ad33e7b0 100644 --- a/cvat-ui/src/containers/annotation-page/standard-workspace/objects-side-bar/objects-list.tsx +++ b/cvat-ui/src/containers/annotation-page/standard-workspace/objects-side-bar/objects-list.tsx @@ -19,6 +19,9 @@ import { switchPropagateVisibility as switchPropagateVisibilityAction, removeObject as removeObjectAction, } from 'actions/annotation-actions'; +import { + changeShowGroundTruth as changeShowGroundTruthAction, +} from 'actions/settings-actions'; import isAbleToChangeFrame from 'utils/is-able-to-change-frame'; import { CombinedState, StatesOrdering, ObjectType, ColorBy, @@ -46,6 +49,7 @@ interface StateToProps { maxZLayer: number; keyMap: KeyMap; normalizedKeyMap: Record; + showGroundTruth: boolean; } interface DispatchToProps { @@ -56,6 +60,7 @@ interface DispatchToProps { switchPropagateVisibility: (visible: boolean) => void; changeFrame(frame: number): void; changeGroupColor(group: number, color: string): void; + changeShowGroundTruth(value: boolean): void; } function mapStateToProps(state: CombinedState): StateToProps { @@ -78,7 +83,7 @@ function mapStateToProps(state: CombinedState): StateToProps { colors, }, settings: { - shapes: { colorBy }, + shapes: { colorBy, showGroundTruth }, }, shortcuts: { keyMap, normalizedKeyMap }, } = state; @@ -119,6 +124,7 @@ function mapStateToProps(state: CombinedState): StateToProps { maxZLayer, keyMap, normalizedKeyMap, + showGroundTruth, }; } @@ -145,6 +151,9 @@ function mapDispatchToProps(dispatch: any): DispatchToProps { changeGroupColor(group: number, color: string): void { dispatch(changeGroupColorAsync(group, color)); }, + changeShowGroundTruth(value: boolean): void { + dispatch(changeShowGroundTruthAction(value)); + }, }; } @@ -233,6 +242,12 @@ class ObjectsListContainer extends React.PureComponent { this.hideAllStates(false); }; + private changeShowGroundTruth = (): void => { + const { showGroundTruth, changeShowGroundTruth } = this.props; + + changeShowGroundTruth(!showGroundTruth); + }; + private lockAllStates(locked: boolean): void { const { objectStates, updateAnnotations, readonly } = this.props; @@ -277,6 +292,7 @@ class ObjectsListContainer extends React.PureComponent { colorBy, readonly, statesCollapsedAll, + showGroundTruth, updateAnnotations, changeGroupColor, removeObject, @@ -484,6 +500,7 @@ class ObjectsListContainer extends React.PureComponent { readonly={readonly || false} statesOrdering={statesOrdering} sortedStatesID={sortedStatesID} + showGroundTruth={showGroundTruth} objectStates={objectStates} switchHiddenAllShortcut={normalizedKeyMap.SWITCH_ALL_HIDDEN} switchLockAllShortcut={normalizedKeyMap.SWITCH_ALL_LOCK} @@ -494,6 +511,7 @@ class ObjectsListContainer extends React.PureComponent { expandAllStates={this.onExpandAllStates} hideAllStates={this.onHideAllStates} showAllStates={this.onShowAllStates} + changeShowGroundTruth={this.changeShowGroundTruth} /> ); diff --git a/cvat-ui/src/icons.tsx b/cvat-ui/src/icons.tsx index 3aeb81f3a076..fc515157b8f8 100644 --- a/cvat-ui/src/icons.tsx +++ b/cvat-ui/src/icons.tsx @@ -67,6 +67,7 @@ import SVGDurationIcon from './assets/duration-icon.svg'; import SVGFrameCountIcon from './assets/frame-count-icon.svg'; import SVGFramesIcon from './assets/frames-icon.svg'; import SVGConflictIcon from './assets/conflict.svg'; +import SVGShowGroundTruthIcon from './assets/show-gt-icon.svg'; export const CVATLogo = React.memo((): JSX.Element => ); export const CursorIcon = React.memo((): JSX.Element => ); @@ -130,3 +131,4 @@ export const DurationIcon = React.memo((): JSX.Element => ); export const FrameCountIcon = React.memo((): JSX.Element => ); export const FramesIcon = React.memo((): JSX.Element => ); export const ConflictIcon = React.memo((): JSX.Element => ); +export const ShowGroundTruthIcon = React.memo((): JSX.Element => ); From 20f15b1080c45a6be2f00e3cb7c626f1c9a00eee Mon Sep 17 00:00:00 2001 From: klakhov Date: Sun, 21 May 2023 16:18:31 +0300 Subject: [PATCH 155/257] refactored issues view --- cvat-core/src/quality-conflict.ts | 7 ++++++ .../views/canvas2d/canvas-context-menu.tsx | 2 +- .../canvas/views/canvas2d/canvas-wrapper.tsx | 2 +- .../review/conflicts-aggregator.tsx | 3 +-- .../objects-side-bar/issues-list.tsx | 23 ++++++++++++------- .../objects-side-bar/styles.scss | 16 +++++++++---- 6 files changed, 36 insertions(+), 17 deletions(-) diff --git a/cvat-core/src/quality-conflict.ts b/cvat-core/src/quality-conflict.ts index cf3eb0f88493..4279835ba34d 100644 --- a/cvat-core/src/quality-conflict.ts +++ b/cvat-core/src/quality-conflict.ts @@ -36,6 +36,7 @@ export class AnnotationConflict { public readonly type: string; public readonly conflictType: QualityConflictType; public readonly importance: ConflictImportance; + public readonly description: string; constructor(initialData: RawAnnotationConflictData) { const data: RawAnnotationConflictData = { @@ -70,6 +71,12 @@ export class AnnotationConflict { importance: { get: () => data.importance, }, + description: { + get: () => { + const desc = this.conflictType.split('_').join(' '); + return desc.charAt(0).toUpperCase() + desc.slice(1); + }, + }, }), ); } diff --git a/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-context-menu.tsx b/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-context-menu.tsx index 5c2cf8acf3f9..434cc8215100 100644 --- a/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-context-menu.tsx +++ b/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-context-menu.tsx @@ -58,7 +58,7 @@ function ReviewContextMenu({ className='cvat-context-menu-item cvat-quick-issue-from-conflict' key={ReviewContextMenuKeys.QUICK_ISSUE_FROM_CONFLICT} > - {`Open an issue: ${conflict.description}`} + {`Quick issue: ${conflict.description}`} ) : null} diff --git a/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx b/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx index 1146ceb27112..51ed2231fbc0 100644 --- a/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx +++ b/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx @@ -898,7 +898,7 @@ class CanvasWrapperComponent extends React.PureComponent { (c: AnnotationConflict) => c.objId === objectState.serverID && c.jobId === objectState.jobID, ); if (conflict && workspace === Workspace.REVIEW_WORKSPACE) { - objectState.conflict = { description: conflict.conflictType }; + objectState.conflict = { description: conflict.description }; } else { objectState.conflict = null; } diff --git a/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx b/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx index 5c61d1a5cfbc..a6656c97906f 100644 --- a/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx +++ b/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx @@ -57,9 +57,8 @@ export default function ConflictAggregatorComponent(): JSX.Element | null { if (state && canvasInstance) { const points = canvasInstance.setupConflictsRegions(state); if (points) { - const desc = c.conflictType.split('_').join(' '); return { - description: desc.charAt(0).toUpperCase() + desc.slice(1), + description: c.description, importance: c.importance, x: points[0], y: points[1], diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx index 295ae3c5dad0..779868ebb421 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx +++ b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx @@ -8,13 +8,14 @@ import { LeftOutlined, RightOutlined, EyeInvisibleFilled, EyeOutlined, CheckCircleFilled, CheckCircleOutlined, } from '@ant-design/icons'; -import Alert from 'antd/lib/alert'; import { Row, Col } from 'antd/lib/grid'; +import Text from 'antd/lib/typography/Text'; import { changeFrameAsync } from 'actions/annotation-actions'; import { reviewActions } from 'actions/review-actions'; import CVATTooltip from 'components/common/cvat-tooltip'; import { CombinedState } from 'reducers'; +import moment from 'moment'; export default function LabelsListComponent(): JSX.Element { const dispatch = useDispatch(); @@ -47,7 +48,7 @@ export default function LabelsListComponent(): JSX.Element { opacity: 0.5, }, }; - + console.log(frameIssues); return ( <>
@@ -101,7 +102,9 @@ export default function LabelsListComponent(): JSX.Element {
{ const element = window.document.getElementById( `cvat_canvas_issue_region_${frameIssue.id}`, @@ -119,11 +122,15 @@ export default function LabelsListComponent(): JSX.Element { } }} > - {frameIssue.resolved ? ( - - ) : ( - - )} + + {`#${frameIssue.id} • Issue`} + + + {frameIssue.comments[0]?.message ? frameIssue.comments[0]?.message : ''} + + + {moment(frameIssue.createdDate).fromNow()} +
), )} diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/styles.scss b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/styles.scss index 22ca6bfdfea8..0538a1d6f5bb 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/styles.scss +++ b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/styles.scss @@ -112,13 +112,11 @@ width: 100%; margin: 1px; padding: 2px; + border-left: 3px solid #ff7300; + border-bottom: 1px solid $border-color-1; &:hover { - padding: 0; - - > .ant-alert { - border-width: 3px; - } + border-left: 4px solid #ff7300; } > .ant-alert.ant-alert-with-description { @@ -126,6 +124,14 @@ } } +.cvat-objects-sidebar-issue-resolved { + border-left: 3px solid $border-color-1; + + &:hover { + border-left: 4px solid $border-color-1; + } +} + .cvat-objects-sidebar-states-header { background: $objects-bar-tabs-color; padding: 5px; From 3d6340a7c50300c4bafa9f47e9a99b1a27b56948 Mon Sep 17 00:00:00 2001 From: klakhov Date: Sun, 21 May 2023 16:22:07 +0300 Subject: [PATCH 156/257] changed tasks breakpoints --- cvat-ui/src/components/task-page/task-page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cvat-ui/src/components/task-page/task-page.tsx b/cvat-ui/src/components/task-page/task-page.tsx index 752029dc0ef7..5a5138b81180 100644 --- a/cvat-ui/src/components/task-page/task-page.tsx +++ b/cvat-ui/src/components/task-page/task-page.tsx @@ -140,7 +140,7 @@ function TaskPageComponent(): JSX.Element { align='top' className='cvat-task-details-wrapper' > -
+ From 31860012e87d4aaf88094828a58ea1c8ebd6408a Mon Sep 17 00:00:00 2001 From: klakhov Date: Sun, 21 May 2023 16:28:18 +0300 Subject: [PATCH 157/257] improved issue first comment --- .../standard-workspace/objects-side-bar/issues-list.tsx | 8 ++++++-- .../standard-workspace/objects-side-bar/styles.scss | 6 +++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx index 779868ebb421..16a25e9ae9cf 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx +++ b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx @@ -16,6 +16,7 @@ import { reviewActions } from 'actions/review-actions'; import CVATTooltip from 'components/common/cvat-tooltip'; import { CombinedState } from 'reducers'; import moment from 'moment'; +import Paragraph from 'antd/lib/typography/Paragraph'; export default function LabelsListComponent(): JSX.Element { const dispatch = useDispatch(); @@ -48,7 +49,7 @@ export default function LabelsListComponent(): JSX.Element { opacity: 0.5, }, }; - console.log(frameIssues); + return ( <>
@@ -126,7 +127,10 @@ export default function LabelsListComponent(): JSX.Element { {`#${frameIssue.id} • Issue`} - {frameIssue.comments[0]?.message ? frameIssue.comments[0]?.message : ''} + + {frameIssue.comments[0]?.message ? frameIssue.comments[0]?.message : ''} + + {moment(frameIssue.createdDate).fromNow()} diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/styles.scss b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/styles.scss index 0538a1d6f5bb..b4d36594c6a1 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/styles.scss +++ b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/styles.scss @@ -111,7 +111,7 @@ .cvat-objects-sidebar-issue-item { width: 100%; margin: 1px; - padding: 2px; + padding: $grid-unit-size; border-left: 3px solid #ff7300; border-bottom: 1px solid $border-color-1; @@ -122,6 +122,10 @@ > .ant-alert.ant-alert-with-description { padding: $grid-unit-size $grid-unit-size $grid-unit-size $grid-unit-size * 8; } + + p { + margin-bottom: 0; + } } .cvat-objects-sidebar-issue-resolved { From 66be4d0c9ef4ce4bc40430276f9e038d0143e904 Mon Sep 17 00:00:00 2001 From: klakhov Date: Sun, 21 May 2023 20:29:04 +0300 Subject: [PATCH 158/257] added conflicts to sidebar --- cvat-core/src/quality-conflict.ts | 9 ++++- .../objects-side-bar/issues-list.tsx | 33 ++++++++++++++++++- .../objects-side-bar/styles.scss | 20 +++++++++++ 3 files changed, 60 insertions(+), 2 deletions(-) diff --git a/cvat-core/src/quality-conflict.ts b/cvat-core/src/quality-conflict.ts index 4279835ba34d..39a5a8bb93de 100644 --- a/cvat-core/src/quality-conflict.ts +++ b/cvat-core/src/quality-conflict.ts @@ -87,7 +87,8 @@ export default class QualityConflict { public readonly frame: number; public readonly type: QualityConflictType; public readonly annotationConflicts: AnnotationConflict[]; - public readonly importance: ConflictImportance + public readonly importance: ConflictImportance; + public readonly description: string; constructor(initialData: RawQualityConflictData) { const data: RawQualityConflictData = { @@ -129,6 +130,12 @@ export default class QualityConflict { importance: { get: () => data.importance, }, + description: { + get: () => { + const desc = this.type.split('_').join(' '); + return desc.charAt(0).toUpperCase() + desc.slice(1); + }, + }, }), ); } diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx index 16a25e9ae9cf..b318aa8e474b 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx +++ b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx @@ -17,15 +17,24 @@ import CVATTooltip from 'components/common/cvat-tooltip'; import { CombinedState } from 'reducers'; import moment from 'moment'; import Paragraph from 'antd/lib/typography/Paragraph'; +import { ConflictImportance, QualityConflict } from 'cvat-core-wrapper'; export default function LabelsListComponent(): JSX.Element { const dispatch = useDispatch(); const frame = useSelector((state: CombinedState): number => state.annotation.player.frame.number); const frameIssues = useSelector((state: CombinedState): any[] => state.review.frameIssues); + const frameConflicts = useSelector((state: CombinedState) => state.review.frameConflicts); + const showGroundTruth = useSelector((state: CombinedState) => state.settings.shapes.showGroundTruth); const issues = useSelector((state: CombinedState): any[] => state.review.issues); + const conflicts = useSelector((state: CombinedState) => state.review.conflicts); const issuesHidden = useSelector((state: CombinedState): any => state.review.issuesHidden); const issuesResolvedHidden = useSelector((state: CombinedState): any => state.review.issuesResolvedHidden); - const frames = issues.map((issue: any): number => issue.frame).sort((a: number, b: number) => +a - +b); + let frames = issues.map((issue: any): number => issue.frame).sort((a: number, b: number) => +a - +b); + if (showGroundTruth) { + const conflictFrames = conflicts + .map((issue: any): number => issue.frame).sort((a: number, b: number) => +a - +b); + frames = [...new Set([...frames, ...conflictFrames])]; + } const nearestLeft = frames.filter((_frame: number): boolean => _frame < frame).reverse()[0]; const dynamicLeftProps: any = Number.isInteger(nearestLeft) ? { @@ -138,6 +147,28 @@ export default function LabelsListComponent(): JSX.Element {
), )} + {showGroundTruth && frameConflicts.map( + (frameConflict: QualityConflict): JSX.Element => ( +
+ + {`#${frameConflict.id} • Conflict`} + + + + {frameConflict.description} + + + +
+ ), + )} ); diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/styles.scss b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/styles.scss index b4d36594c6a1..f149a021e285 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/styles.scss +++ b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/styles.scss @@ -128,6 +128,26 @@ } } +.cvat-objects-sidebar-conflict-item { + width: 100%; + margin: 1px; + padding: $grid-unit-size; + border-left: 3px solid #e10602; + border-bottom: 1px solid $border-color-1; + + &:hover { + border-left: 4px solid #e10602; + } + + p { + margin-bottom: 0; + } +} + +.cvat-objects-sidebar-warning-item { + @extend .cvat-objects-sidebar-issue-item; +} + .cvat-objects-sidebar-issue-resolved { border-left: 3px solid $border-color-1; From e96889eab1193a30c78fc532a0cb5b2edd069b11 Mon Sep 17 00:00:00 2001 From: klakhov Date: Sun, 21 May 2023 21:16:15 +0300 Subject: [PATCH 159/257] added highlight feature --- cvat-canvas/src/scss/canvas.scss | 5 ++ cvat-canvas/src/typescript/canvasView.ts | 50 +++++++++---------- cvat-core/src/object-state.ts | 5 +- .../canvas/views/canvas2d/canvas-wrapper.tsx | 16 +++--- 4 files changed, 39 insertions(+), 37 deletions(-) diff --git a/cvat-canvas/src/scss/canvas.scss b/cvat-canvas/src/scss/canvas.scss index 7db7dbe4174d..034f1f14d543 100644 --- a/cvat-canvas/src/scss/canvas.scss +++ b/cvat-canvas/src/scss/canvas.scss @@ -389,3 +389,8 @@ g.cvat_canvas_shape_occluded { stroke: #09c; } } + +.cvat_canvas_shape_darken { + fill: #838383; + stroke: #838383; +} diff --git a/cvat-canvas/src/typescript/canvasView.ts b/cvat-canvas/src/typescript/canvasView.ts index 19b685ada1a4..f61514ac0a72 100644 --- a/cvat-canvas/src/typescript/canvasView.ts +++ b/cvat-canvas/src/typescript/canvasView.ts @@ -2206,6 +2206,11 @@ export class CanvasViewImpl implements CanvasView, Listener { this.deleteText(clientID); } + for (const [key, otherShape] of Object.entries(this.svgShapes)) { + otherShape.removeClass('cvat_canvas_shape_darken'); + otherShape.removeClass('cvat_canvas_conflicted'); + } + this.sortObjects(); this.activeElement = { @@ -2237,7 +2242,6 @@ export class CanvasViewImpl implements CanvasView, Listener { private activateShape(clientID: number): void { const [state] = this.controller.objects.filter((_state: any): boolean => _state.clientID === clientID); - if (state && state.shapeType === 'points') { this.svgShapes[clientID] .remember('_selectHandler') @@ -2249,6 +2253,26 @@ export class CanvasViewImpl implements CanvasView, Listener { } const shape = this.svgShapes[clientID]; + if (this.configuration.showConflicts && state.conflict) { + const conflictedStates = state.conflict.annotationConflicts.map((annotationConflict) => { + const [conflictedState] = this.controller.objects.filter( + (_state: any): boolean => _state.serverID === annotationConflict.objId, + ); + return conflictedState; + }); + + let conflictedIDs = conflictedStates.map((_state) => ( + [_state.clientID, ..._state.elements.map((element) => element.clientID)] + )); + conflictedIDs = conflictedIDs.flat(); + for (const [key, otherShape] of Object.entries(this.svgShapes)) { + if (!conflictedIDs.includes(+key)) { + otherShape.addClass('cvat_canvas_shape_darken'); + } else { + otherShape.addClass('cvat_canvas_conflicted'); + } + } + } let text = this.svgTexts[clientID]; if (!text) { text = this.addText(state); @@ -2727,10 +2751,6 @@ export class CanvasViewImpl implements CanvasView, Listener { rect.addClass('cvat_canvas_ground_truth'); } - if (state.conflict && this.configuration.showConflicts) { - rect.addClass('cvat_canvas_conflicted'); - } - return rect; } @@ -2759,10 +2779,6 @@ export class CanvasViewImpl implements CanvasView, Listener { polygon.addClass('cvat_canvas_ground_truth'); } - if (state.conflict && this.configuration.showConflicts) { - polygon.addClass('cvat_canvas_conflicted'); - } - return polygon; } @@ -2791,10 +2807,6 @@ export class CanvasViewImpl implements CanvasView, Listener { polyline.addClass('cvat_canvas_ground_truth'); } - if (state.conflict && this.configuration.showConflicts) { - polyline.addClass('cvat_canvas_conflicted'); - } - return polyline; } @@ -2824,10 +2836,6 @@ export class CanvasViewImpl implements CanvasView, Listener { cube.addClass('cvat_canvas_ground_truth'); } - if (state.conflict && this.configuration.showConflicts) { - cube.addClass('cvat_canvas_conflicted'); - } - return cube; } @@ -3406,10 +3414,6 @@ export class CanvasViewImpl implements CanvasView, Listener { rect.addClass('cvat_canvas_ground_truth'); } - if (state.conflict && this.configuration.showConflicts) { - rect.addClass('cvat_canvas_conflicted'); - } - return rect; } @@ -3440,10 +3444,6 @@ export class CanvasViewImpl implements CanvasView, Listener { group.addClass('cvat_canvas_ground_truth'); } - if (state.conflict && this.configuration.showConflicts) { - group.addClass('cvat_canvas_conflicted'); - } - shape.remove = (): SVG.PolyLine => { this.selectize(false, shape); shape.constructor.prototype.remove.call(shape); diff --git a/cvat-core/src/object-state.ts b/cvat-core/src/object-state.ts index b14876e1a0a0..420c983c2461 100644 --- a/cvat-core/src/object-state.ts +++ b/cvat-core/src/object-state.ts @@ -1,5 +1,5 @@ // Copyright (C) 2019-2022 Intel Corporation -// Copyright (C) 2022 CVAT.ai Corporation +// Copyright (C) 2022-2023 CVAT.ai Corporation // // SPDX-License-Identifier: MIT @@ -8,6 +8,7 @@ import PluginRegistry from './plugins'; import { ArgumentError } from './exceptions'; import { Label } from './labels'; import { isEnum } from './common'; +import QualityConflict from './quality-conflict'; interface UpdateFlags { label: boolean; @@ -84,7 +85,7 @@ export default class ObjectState { public readonly updated: number; public readonly group: { color: string; id: number; } | null; public readonly isGroundTruth: boolean; - public conflict: { description: string } | null; + public conflict: QualityConflict | null; public readonly keyframes: { first: number | null; prev: number | null; diff --git a/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx b/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx index 51ed2231fbc0..f12305964772 100644 --- a/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx +++ b/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx @@ -887,18 +887,14 @@ class CanvasWrapperComponent extends React.PureComponent { if (frameData !== null && canvasInstance) { const filteredAnnotations = annotations.filter((e) => e.objectType !== ObjectType.TAG); const shownAnnotations = filteredAnnotations.filter((e) => !e.jobID || statesSources.includes(e.jobID)); - const annotatationConflicts = conflicts.reduce( - (acc, qualityConflict: QualityConflict) => { - acc.push(qualityConflict.annotationConflicts[0]); - return acc; - }, [], - ); filteredAnnotations.forEach((objectState: ObjectState) => { - const conflict = annotatationConflicts.find( - (c: AnnotationConflict) => c.objId === objectState.serverID && c.jobId === objectState.jobID, - ); + const conflict = conflicts.find((qualityConflict: QualityConflict) => ( + qualityConflict.annotationConflicts.some( + (annotationConflict: AnnotationConflict) => (annotationConflict.objId === objectState.serverID), + ) + )); if (conflict && workspace === Workspace.REVIEW_WORKSPACE) { - objectState.conflict = { description: conflict.description }; + objectState.conflict = conflict; } else { objectState.conflict = null; } From 8a4a8dcef29ad82288f281eb98f87ed3ab03832c Mon Sep 17 00:00:00 2001 From: klakhov Date: Sun, 21 May 2023 21:30:50 +0300 Subject: [PATCH 160/257] activate object from conflict --- .../standard-workspace/objects-side-bar/issues-list.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx index b318aa8e474b..7176d27d3bf6 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx +++ b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx @@ -11,7 +11,7 @@ import { import { Row, Col } from 'antd/lib/grid'; import Text from 'antd/lib/typography/Text'; -import { changeFrameAsync } from 'actions/annotation-actions'; +import { activateObject, changeFrameAsync } from 'actions/annotation-actions'; import { reviewActions } from 'actions/review-actions'; import CVATTooltip from 'components/common/cvat-tooltip'; import { CombinedState } from 'reducers'; @@ -29,6 +29,7 @@ export default function LabelsListComponent(): JSX.Element { const conflicts = useSelector((state: CombinedState) => state.review.conflicts); const issuesHidden = useSelector((state: CombinedState): any => state.review.issuesHidden); const issuesResolvedHidden = useSelector((state: CombinedState): any => state.review.issuesResolvedHidden); + const objectStates = useSelector((state: CombinedState) => state.annotation.annotations.states); let frames = issues.map((issue: any): number => issue.frame).sort((a: number, b: number) => +a - +b); if (showGroundTruth) { const conflictFrames = conflicts @@ -156,6 +157,11 @@ export default function LabelsListComponent(): JSX.Element { `${frameConflict.importance === ConflictImportance.WARNING ? 'cvat-objects-sidebar-warning-item' : 'cvat-objects-sidebar-conflict-item'}` } + onMouseEnter={() => { + const serverID = frameConflict.annotationConflicts[0].objId; + const objectState = objectStates.find((state) => state.serverID === serverID); + dispatch(activateObject(objectState.clientID, null, null)); + }} > {`#${frameConflict.id} • Conflict`} From 99bb87c59d88f9d1f6f86dae472e922700d32950 Mon Sep 17 00:00:00 2001 From: klakhov Date: Sun, 21 May 2023 21:45:18 +0300 Subject: [PATCH 161/257] make inactive conflicts darker --- .../components/annotation-page/review/conflict-label.tsx | 6 ++++-- .../annotation-page/review/conflicts-aggregator.tsx | 3 +++ cvat-ui/src/components/annotation-page/review/styles.scss | 8 ++++++++ .../standard-workspace/objects-side-bar/issues-list.tsx | 1 + 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/cvat-ui/src/components/annotation-page/review/conflict-label.tsx b/cvat-ui/src/components/annotation-page/review/conflict-label.tsx index fa0d7d1a3244..3692ebf01b80 100644 --- a/cvat-ui/src/components/annotation-page/review/conflict-label.tsx +++ b/cvat-ui/src/components/annotation-page/review/conflict-label.tsx @@ -18,17 +18,19 @@ interface Props { angle: number; scale: number; text: string; + darken: boolean; importance: ConflictImportance; onClick: () => void; } export default function ConflictLabel(props: Props): ReactPortal { const { - top, left, angle, scale, onClick, text, importance, + top, left, angle, scale, onClick, text, importance, darken, } = props; const ref = useRef(null); const conflictColor = importance === ConflictImportance.ERROR ? 'cvat-conflict-error' : 'cvat-conflict-warning'; + const darkenColor = darken ? 'cvat-conflict-darken' : ''; const elementID = `cvat-hidden-issue-label-${top}`; return ReactDOM.createPortal( @@ -42,7 +44,7 @@ export default function ConflictLabel(props: Props): ReactPortal { left, transform: `scale(${scale}) rotate(${angle}deg) translateY(-100%) translateX(-50%)`, }} - className={`cvat-conflict-label ${conflictColor}`} + className={`cvat-conflict-label ${conflictColor} ${darkenColor}`} > diff --git a/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx b/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx index a6656c97906f..f21b0ec0c88d 100644 --- a/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx +++ b/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx @@ -15,6 +15,7 @@ import ConflictLabel from './conflict-label'; export default function ConflictAggregatorComponent(): JSX.Element | null { const qualityConflicts = useSelector((state: CombinedState) => state.review.conflicts); const objectStates = useSelector((state: CombinedState) => state.annotation.annotations.states); + const activatedStateID = useSelector((state: CombinedState) => state.annotation.annotations.activatedStateID); const currentFrame = useSelector((state: CombinedState) => state.annotation.player.frame.number); const showConflicts = useSelector((state: CombinedState) => state.settings.shapes.showGroundTruth); const frameQualityConflicts = qualityConflicts.filter( @@ -62,6 +63,7 @@ export default function ConflictAggregatorComponent(): JSX.Element | null { importance: c.importance, x: points[0], y: points[1], + clientID: state.clientID, }; } } @@ -89,6 +91,7 @@ export default function ConflictAggregatorComponent(): JSX.Element | null { scale={1 / geometry.scale} onClick={() => {}} importance={conflict.importance} + darken={!!activatedStateID && (conflict.clientID !== activatedStateID)} />, ); } diff --git a/cvat-ui/src/components/annotation-page/review/styles.scss b/cvat-ui/src/components/annotation-page/review/styles.scss index 234770a0dbf7..aa815af9064c 100644 --- a/cvat-ui/src/components/annotation-page/review/styles.scss +++ b/cvat-ui/src/components/annotation-page/review/styles.scss @@ -151,3 +151,11 @@ } } } + +.cvat-conflict-darken { + svg { + path:first-child { + fill: #838383; + } + } +} diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx index 7176d27d3bf6..456574ec4244 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx +++ b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx @@ -123,6 +123,7 @@ export default function LabelsListComponent(): JSX.Element { if (element) { element.setAttribute('fill', 'url(#cvat_issue_region_pattern_2)'); } + dispatch(activateObject(null, null, null)); }} onMouseLeave={() => { const element = window.document.getElementById( From 56be78f04d548989d06cf3bf121b2d157b2a0d50 Mon Sep 17 00:00:00 2001 From: klakhov Date: Sun, 21 May 2023 21:52:36 +0300 Subject: [PATCH 162/257] fixed show gt annotations position --- .../objects-side-bar/objects-list-header.tsx | 14 ++++++++------ .../objects-side-bar/styles.scss | 4 ++++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/objects-list-header.tsx b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/objects-list-header.tsx index aca78579b57c..3ab3e3529f56 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/objects-list-header.tsx +++ b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/objects-list-header.tsx @@ -72,7 +72,7 @@ function GTSwitcher(props: Props): JSX.Element { showGroundTruth, changeShowGroundTruth, } = props; return ( -
+ + {statesCollapsed ? ( @@ -113,10 +113,12 @@ function ObjectListHeader(props: Props): JSX.Element { )} - {readonly && ( - - )} - + + {readonly && ( + + )} + + diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/styles.scss b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/styles.scss index f149a021e285..8545a73d973c 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/styles.scss +++ b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/styles.scss @@ -181,6 +181,10 @@ } } } + + .cvat-objects-sidebar-show-ground-truth { + margin-right: $grid-unit-size; + } } .cvat-objects-sidebar-states-list { From 8e16eeba7962cebbdeaa3cf32ec33872c7a69a44 Mon Sep 17 00:00:00 2001 From: klakhov Date: Sun, 21 May 2023 22:33:21 +0300 Subject: [PATCH 163/257] fixed scaling problem --- .../review/conflicts-aggregator.tsx | 48 +++++++++---------- .../review/issues-aggregator.tsx | 4 +- .../quality/mean-quality.tsx | 37 ++++++++------ 3 files changed, 49 insertions(+), 40 deletions(-) diff --git a/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx b/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx index f21b0ec0c88d..612a3a1dd0a8 100644 --- a/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx +++ b/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx @@ -26,6 +26,8 @@ export default function ConflictAggregatorComponent(): JSX.Element | null { const canvasInstance = useSelector((state: CombinedState) => state.annotation.canvas.instance); const canvasIsReady = useSelector((state: CombinedState): boolean => state.annotation.canvas.ready); const [geometry, setGeometry] = useState(null); + const ready = useSelector((state: CombinedState) => state.annotation.canvas.ready); + const conflictLabels: JSX.Element[] = []; useEffect(() => { if (canvasInstance instanceof Canvas) { @@ -48,33 +50,31 @@ export default function ConflictAggregatorComponent(): JSX.Element | null { } return () => {}; - }, [canvasInstance]); + }, [canvasInstance, ready]); const [mapping, setMapping] = useState([]); useEffect(() => { - setTimeout(() => { - if (canvasInstance instanceof Canvas && geometry && showConflicts) { - const newMapping = conflicts.map((c: AnnotationConflict) => { - const state = objectStates.find((s: ObjectState) => s.jobID === c.jobId && s.serverID === c.objId); - if (state && canvasInstance) { - const points = canvasInstance.setupConflictsRegions(state); - if (points) { - return { - description: c.description, - importance: c.importance, - x: points[0], - y: points[1], - clientID: state.clientID, - }; - } + if (canvasInstance instanceof Canvas && geometry && showConflicts) { + const newMapping = conflicts.map((c: AnnotationConflict) => { + const state = objectStates.find((s: ObjectState) => s.jobID === c.jobId && s.serverID === c.objId); + if (state && canvasInstance) { + const points = canvasInstance.setupConflictsRegions(state); + if (points) { + return { + description: c.description, + importance: c.importance, + x: points[0], + y: points[1], + clientID: state.clientID, + }; } - return []; - }).filter((el) => !Array.isArray(el)); - setMapping(newMapping); - } else { - setMapping([]); - } - }); - }, [geometry, objectStates, showConflicts, currentFrame]); + } + return []; + }).filter((el) => !Array.isArray(el)); + setMapping(newMapping); + } else { + setMapping([]); + } + }, [geometry, objectStates, showConflicts, currentFrame, canvasInstance, ready]); if (!(canvasInstance instanceof Canvas) || !canvasIsReady || !geometry) { return null; diff --git a/cvat-ui/src/components/annotation-page/review/issues-aggregator.tsx b/cvat-ui/src/components/annotation-page/review/issues-aggregator.tsx index 860ae9e21b44..f48bffef29d3 100644 --- a/cvat-ui/src/components/annotation-page/review/issues-aggregator.tsx +++ b/cvat-ui/src/components/annotation-page/review/issues-aggregator.tsx @@ -25,7 +25,9 @@ export default function IssueAggregatorComponent(): JSX.Element | null { const canvasIsReady = useSelector((state: CombinedState): boolean => state.annotation.canvas.ready); const newIssuePosition = useSelector((state: CombinedState): number[] | null => state.review.newIssuePosition); const issueFetching = useSelector((state: CombinedState): number | null => state.review.fetching.issueId); + const ready = useSelector((state: CombinedState) => state.annotation.canvas.ready); const [geometry, setGeometry] = useState(null); + const issueLabels: JSX.Element[] = []; const issueDialogs: JSX.Element[] = []; @@ -50,7 +52,7 @@ export default function IssueAggregatorComponent(): JSX.Element | null { } return () => {}; - }, [canvasInstance]); + }, [canvasInstance, ready]); useEffect(() => { if (canvasInstance instanceof Canvas) { diff --git a/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx b/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx index c04c2c79837c..928b54b4a906 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx @@ -61,21 +61,28 @@ function MeanQuality(props: Props): JSX.Element { const dowloadReportButton = (
- - dispatch(analyticsActions.switchQualitySettingsVisible(true))} - /> -
- {taskReport?.createdDate ? moment(taskReport?.createdDate).fromNow() : ''} -
+ { + taskReport?.id ? ( + <> + + dispatch(analyticsActions.switchQualitySettingsVisible(true))} + /> +
+ {taskReport?.createdDate ? moment(taskReport?.createdDate).fromNow() : ''} +
+ + ) : null + } +
); From 6476cf42d8da4ed3e07ad59cdb9cc605c9725bb3 Mon Sep 17 00:00:00 2001 From: klakhov Date: Mon, 22 May 2023 10:24:27 +0300 Subject: [PATCH 164/257] added icon to issue sidebar --- .../annotation-page/review/conflict-label.tsx | 2 -- .../annotation-page/review/styles.scss | 2 +- .../objects-side-bar/issues-list.tsx | 20 +++++++++++++++++-- cvat-ui/src/components/job-item/job-item.tsx | 18 ++++++++++------- .../quality/mean-quality.tsx | 1 - 5 files changed, 30 insertions(+), 13 deletions(-) diff --git a/cvat-ui/src/components/annotation-page/review/conflict-label.tsx b/cvat-ui/src/components/annotation-page/review/conflict-label.tsx index 3692ebf01b80..059d315d2e81 100644 --- a/cvat-ui/src/components/annotation-page/review/conflict-label.tsx +++ b/cvat-ui/src/components/annotation-page/review/conflict-label.tsx @@ -32,12 +32,10 @@ export default function ConflictLabel(props: Props): ReactPortal { const conflictColor = importance === ConflictImportance.ERROR ? 'cvat-conflict-error' : 'cvat-conflict-warning'; const darkenColor = darken ? 'cvat-conflict-darken' : ''; - const elementID = `cvat-hidden-issue-label-${top}`; return ReactDOM.createPortal( +
+ + dispatch(changeShowGroundTruth(!showGroundTruth))} + /> + +
@@ -165,7 +178,10 @@ export default function LabelsListComponent(): JSX.Element { }} > - {`#${frameConflict.id} • Conflict`} + + {`#${frameConflict.id} • ${frameConflict.importance === ConflictImportance.WARNING ? + 'Warning' : 'Conflict'}`} + diff --git a/cvat-ui/src/components/job-item/job-item.tsx b/cvat-ui/src/components/job-item/job-item.tsx index fbb95b678097..cd4c8cd419c8 100644 --- a/cvat-ui/src/components/job-item/job-item.tsx +++ b/cvat-ui/src/components/job-item/job-item.tsx @@ -207,13 +207,17 @@ function JobItem(props: Props): JSX.Element {
- - - - Frame range: - {` ${job.startFrame}-${job.stopFrame}`} - - + { + job.type !== JobType.GROUND_TRUTH && ( + + + + Frame range: + {` ${job.startFrame}-${job.stopFrame}`} + + + ) + } diff --git a/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx b/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx index 928b54b4a906..726f6b35e398 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx @@ -82,7 +82,6 @@ function MeanQuality(props: Props): JSX.Element { ) : null } - ); From 291b4993d58be47eaf83c84218ed54983ef5bd85 Mon Sep 17 00:00:00 2001 From: klakhov Date: Mon, 22 May 2023 10:35:27 +0300 Subject: [PATCH 165/257] added colors to warnings --- cvat-canvas/src/scss/canvas.scss | 7 ++++++- cvat-canvas/src/typescript/canvasView.ts | 23 ++++++++++++++++------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/cvat-canvas/src/scss/canvas.scss b/cvat-canvas/src/scss/canvas.scss index 034f1f14d543..7396e8e3c5ce 100644 --- a/cvat-canvas/src/scss/canvas.scss +++ b/cvat-canvas/src/scss/canvas.scss @@ -153,7 +153,12 @@ polyline.cvat_canvas_shape_splitting { } .cvat_canvas_conflicted { - stroke: red; + stroke: #ff4800; + stroke-dasharray: 1; +} + +.cvat_canvas_warned { + stroke: #ff7301; stroke-dasharray: 1; } diff --git a/cvat-canvas/src/typescript/canvasView.ts b/cvat-canvas/src/typescript/canvasView.ts index f61514ac0a72..21966ed42686 100644 --- a/cvat-canvas/src/typescript/canvasView.ts +++ b/cvat-canvas/src/typescript/canvasView.ts @@ -2209,6 +2209,7 @@ export class CanvasViewImpl implements CanvasView, Listener { for (const [key, otherShape] of Object.entries(this.svgShapes)) { otherShape.removeClass('cvat_canvas_shape_darken'); otherShape.removeClass('cvat_canvas_conflicted'); + otherShape.removeClass('cvat_canvas_warned'); } this.sortObjects(); @@ -2260,16 +2261,24 @@ export class CanvasViewImpl implements CanvasView, Listener { ); return conflictedState; }); + const conflictedMap = {}; + conflictedStates.forEach((_state) => { + conflictedMap[_state.clientID] = _state.conflict; + if (_state.elements.length) { + _state.elements.forEach((element) => { conflictedMap[element.clientID] = _state.conflict; }); + } + }); - let conflictedIDs = conflictedStates.map((_state) => ( - [_state.clientID, ..._state.elements.map((element) => element.clientID)] - )); - conflictedIDs = conflictedIDs.flat(); for (const [key, otherShape] of Object.entries(this.svgShapes)) { - if (!conflictedIDs.includes(+key)) { - otherShape.addClass('cvat_canvas_shape_darken'); + if (conflictedMap[+key]) { + const { importance } = conflictedMap[+key]; + if (importance === 'error') { + otherShape.addClass('cvat_canvas_conflicted'); + } else if (importance === 'warning') { + otherShape.addClass('cvat_canvas_warned'); + } } else { - otherShape.addClass('cvat_canvas_conflicted'); + otherShape.addClass('cvat_canvas_shape_darken'); } } } From db8286b6eedb60a7194e9c42f537de081ac2f316 Mon Sep 17 00:00:00 2001 From: klakhov Date: Mon, 22 May 2023 10:38:37 +0300 Subject: [PATCH 166/257] show gt icon only in review workspace --- .../objects-side-bar/issues-list.tsx | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx index d1e5e36bc732..4545f417bf10 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx +++ b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx @@ -1,4 +1,5 @@ // Copyright (C) 2020-2022 Intel Corporation +// Copyright (C) 2023 CVAT.ai Corporation // // SPDX-License-Identifier: MIT @@ -14,7 +15,7 @@ import Text from 'antd/lib/typography/Text'; import { activateObject, changeFrameAsync } from 'actions/annotation-actions'; import { reviewActions } from 'actions/review-actions'; import CVATTooltip from 'components/common/cvat-tooltip'; -import { CombinedState } from 'reducers'; +import { CombinedState, Workspace } from 'reducers'; import moment from 'moment'; import Paragraph from 'antd/lib/typography/Paragraph'; import { ConflictImportance, QualityConflict } from 'cvat-core-wrapper'; @@ -32,6 +33,7 @@ export default function LabelsListComponent(): JSX.Element { const issuesHidden = useSelector((state: CombinedState): any => state.review.issuesHidden); const issuesResolvedHidden = useSelector((state: CombinedState): any => state.review.issuesResolvedHidden); const objectStates = useSelector((state: CombinedState) => state.annotation.annotations.states); + const workspace = useSelector((state: CombinedState) => state.annotation.workspace); let frames = issues.map((issue: any): number => issue.frame).sort((a: number, b: number) => +a - +b); if (showGroundTruth) { const conflictFrames = conflicts @@ -107,17 +109,21 @@ export default function LabelsListComponent(): JSX.Element { )} - - - dispatch(changeShowGroundTruth(!showGroundTruth))} - /> - - + { + workspace === Workspace.REVIEW_WORKSPACE ? ( + + + dispatch(changeShowGroundTruth(!showGroundTruth))} + /> + + + ) : null + }
From 7046c0af0008309951806cb9d1b44eab62a3ac17 Mon Sep 17 00:00:00 2001 From: klakhov Date: Mon, 22 May 2023 10:54:30 +0300 Subject: [PATCH 167/257] fixed multiple objects highlight --- .../annotation-page/review/conflicts-aggregator.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx b/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx index 612a3a1dd0a8..ad4fa2def9d0 100644 --- a/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx +++ b/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx @@ -23,6 +23,11 @@ export default function ConflictAggregatorComponent(): JSX.Element | null { ); const conflicts = frameQualityConflicts.map((f: QualityConflict) => f.annotationConflicts[0]); + const activatedObject = objectStates.find((state) => state.clientID === activatedStateID); + const conflictedIDs = activatedObject?.conflict?.annotationConflicts?.map((c: AnnotationConflict) => c.objId); + const highlightedObjectsIDs = conflictedIDs?.map((serverID: number) => ( + objectStates.find((state) => state.serverID === serverID))?.clientID); + const canvasInstance = useSelector((state: CombinedState) => state.annotation.canvas.instance); const canvasIsReady = useSelector((state: CombinedState): boolean => state.annotation.canvas.ready); const [geometry, setGeometry] = useState(null); @@ -91,7 +96,7 @@ export default function ConflictAggregatorComponent(): JSX.Element | null { scale={1 / geometry.scale} onClick={() => {}} importance={conflict.importance} - darken={!!activatedStateID && (conflict.clientID !== activatedStateID)} + darken={!!activatedStateID && (!highlightedObjectsIDs.includes(conflict.clientID))} />, ); } From efd76d99c32b6c247713547ea95e23ab64cb5a2f Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 22 May 2023 12:41:45 +0300 Subject: [PATCH 168/257] Check quality after settings updated --- cvat/apps/quality_control/signals.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cvat/apps/quality_control/signals.py b/cvat/apps/quality_control/signals.py index a6a163df1544..aaf52c72ded9 100644 --- a/cvat/apps/quality_control/signals.py +++ b/cvat/apps/quality_control/signals.py @@ -19,6 +19,8 @@ dispatch_uid=__name__ + ".save_project-update_quality_metrics") @receiver(post_save, sender=Annotation, dispatch_uid=__name__ + ".save_annotation-update_quality_metrics") +@receiver(post_save, sender=QualitySettings, + dispatch_uid=__name__ + ".save_settings-update_quality_metrics") def __save_job__update_quality_metrics(instance, created, **kwargs): tasks = [] @@ -30,6 +32,8 @@ def __save_job__update_quality_metrics(instance, created, **kwargs): tasks.append(instance.segment.task) elif isinstance(instance, Annotation): tasks.append(instance.job.segment.task) + elif isinstance(instance, QualitySettings): + tasks.append(instance.task) else: assert False From 56cfbe06131c52a87424a09c729da58b6c95f41d Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 22 May 2023 17:01:03 +0300 Subject: [PATCH 169/257] Improve settings dialog layout --- .../quality/quality-settings-modal.tsx | 96 ++++++++++--------- 1 file changed, 52 insertions(+), 44 deletions(-) diff --git a/cvat-ui/src/components/task-analytics-page/quality/quality-settings-modal.tsx b/cvat-ui/src/components/task-analytics-page/quality/quality-settings-modal.tsx index 2109f8bd5571..339acfae1979 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/quality-settings-modal.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/quality-settings-modal.tsx @@ -93,14 +93,14 @@ export default function QualitySettingsModal(): JSX.Element | null { > - Overlap Settings + General
@@ -108,8 +108,8 @@ export default function QualitySettingsModal(): JSX.Element | null { @@ -119,37 +119,47 @@ export default function QualitySettingsModal(): JSX.Element | null { - + + Compare attributes + - Line Settings + Keypoint Comparison - + + + + + + Line Comparison + + + - + @@ -161,55 +171,55 @@ export default function QualitySettingsModal(): JSX.Element | null { valuePropName='checked' > - Oriented lines + Check orientation + + + + + - Group Settings + Group Comparison - + + Compare groups + - - Compare groups - + - Others + Segmentation Comparison - - - - - - Check covered annotations + Check object visibility - - - - Compare attributes - + + + - Panoptic comparison + Match only visible parts From 54c4025763014abf824cb687a8163383d2e59046 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 22 May 2023 17:04:04 +0300 Subject: [PATCH 170/257] Fix several UI failures --- cvat-canvas/src/typescript/canvasView.ts | 10 +++++++++- .../annotation-page/review/conflicts-aggregator.tsx | 7 +++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/cvat-canvas/src/typescript/canvasView.ts b/cvat-canvas/src/typescript/canvasView.ts index 21966ed42686..332150f5df21 100644 --- a/cvat-canvas/src/typescript/canvasView.ts +++ b/cvat-canvas/src/typescript/canvasView.ts @@ -2260,7 +2260,15 @@ export class CanvasViewImpl implements CanvasView, Listener { (_state: any): boolean => _state.serverID === annotationConflict.objId, ); return conflictedState; - }); + }).filter( + // TODO: in the list, there can be null values in some cases + // (eg. from looking for an annotation from the other job), + // produced from [x] = []. + // Need to investigate, why it happens only sometimes. + // Here we just filter such values + Boolean + ); + const conflictedMap = {}; conflictedStates.forEach((_state) => { conflictedMap[_state.clientID] = _state.conflict; diff --git a/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx b/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx index ad4fa2def9d0..4a6cac421e6a 100644 --- a/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx +++ b/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx @@ -25,8 +25,11 @@ export default function ConflictAggregatorComponent(): JSX.Element | null { const activatedObject = objectStates.find((state) => state.clientID === activatedStateID); const conflictedIDs = activatedObject?.conflict?.annotationConflicts?.map((c: AnnotationConflict) => c.objId); - const highlightedObjectsIDs = conflictedIDs?.map((serverID: number) => ( - objectStates.find((state) => state.serverID === serverID))?.clientID); + const highlightedObjectsIDs = conflictedIDs + ? conflictedIDs.map((serverID: number) => ( + objectStates.find((state) => state.serverID === serverID))?.clientID + ) + : []; const canvasInstance = useSelector((state: CombinedState) => state.annotation.canvas.instance); const canvasIsReady = useSelector((state: CombinedState): boolean => state.annotation.canvas.ready); From b42a29a26628804357845b301f889ea88374ebb4 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 22 May 2023 17:05:34 +0300 Subject: [PATCH 171/257] Init quality settings on job creation --- cvat/apps/quality_control/signals.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/cvat/apps/quality_control/signals.py b/cvat/apps/quality_control/signals.py index aaf52c72ded9..7641594a2292 100644 --- a/cvat/apps/quality_control/signals.py +++ b/cvat/apps/quality_control/signals.py @@ -43,8 +43,18 @@ def __save_job__update_quality_metrics(instance, created, **kwargs): @receiver(post_save, sender=Task, dispatch_uid=__name__ + ".save_task-initialize_quality_settings") +@receiver(post_save, sender=Job, + dispatch_uid=__name__ + ".save_job-initialize_quality_settings") def __save_task__initialize_quality_settings(instance, created, **kwargs): # Initializes default quality settings for the task - # this is done here to make the components decoupled + # this is done in a signal to decouple this component from the engine app + if created: - QualitySettings.objects.get_or_create(task=instance) + if isinstance(instance, Task): + task = instance + elif isinstance(instance, Job): + task = instance.segment.task + else: + assert False + + QualitySettings.objects.get_or_create(task=task) From 2958aac767c0f187dea36fc72fb2f41cb0ccd376 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 22 May 2023 21:27:40 +0300 Subject: [PATCH 172/257] Add settings patching tests --- cvat/apps/iam/permissions.py | 21 +-- tests/python/rest_api/test_quality_control.py | 135 +++++++++++++++++- .../shared/assets/quality_settings.json | 17 +++ 3 files changed, 164 insertions(+), 9 deletions(-) diff --git a/cvat/apps/iam/permissions.py b/cvat/apps/iam/permissions.py index 33418c233a2b..6e59da033ed7 100644 --- a/cvat/apps/iam/permissions.py +++ b/cvat/apps/iam/permissions.py @@ -1730,8 +1730,8 @@ class QualitySettingPermission(OpenPolicyAgentPermission): obj: Optional[QualitySettings] class Scopes(StrEnum): - LIST = 'list' VIEW = 'view' + UPDATE = 'update' @classmethod def create(cls, request, view, obj): @@ -1740,14 +1740,20 @@ def create(cls, request, view, obj): permissions = [] if view.basename == 'quality_settings': for scope in cls.get_scopes(request, view, obj): - if scope == Scopes.VIEW: + if scope in [Scopes.VIEW, Scopes.UPDATE]: obj = cast(QualitySettings, obj) + if scope == Scopes.VIEW: + task_scope = TaskPermission.Scopes.VIEW + elif scope == Scopes.UPDATE: + task_scope = TaskPermission.Scopes.UPDATE_DESC + else: + assert False + # Access rights are the same as in the owning task # This component doesn't define its own rules in this case - owning_perm = TaskPermission.create_base_perm(request, view, - scope=TaskPermission.Scopes.VIEW, obj=obj.task) - permissions.append(owning_perm) + permissions.append(TaskPermission.create_base_perm(request, view, + scope=task_scope, obj=obj.task)) else: permissions.append(cls.create_base_perm(request, view, scope, obj)) @@ -1755,15 +1761,14 @@ def create(cls, request, view, obj): def __init__(self, **kwargs): super().__init__(**kwargs) - self.url = settings.IAM_OPA_DATA_URL + '/quality_reports/allow' + self.url = settings.IAM_OPA_DATA_URL + '/quality_settings/allow' @staticmethod def get_scopes(request, view, obj): Scopes = __class__.Scopes return [{ - 'list': Scopes.LIST, 'retrieve': Scopes.VIEW, - 'data': Scopes.VIEW, + 'partial_update': Scopes.UPDATE, }.get(view.action, None)] def get_resource(self): diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py index d215cd640181..d9c9d356c671 100644 --- a/tests/python/rest_api/test_quality_control.py +++ b/tests/python/rest_api/test_quality_control.py @@ -3,6 +3,7 @@ # SPDX-License-Identifier: MIT import json +from copy import deepcopy from http import HTTPStatus from typing import Any, Dict, List, Optional, Tuple @@ -64,7 +65,7 @@ def test_can_create_report(self, admin_user, jobs): with make_api_client(admin_user) as api_client: (_, response) = api_client.quality_api.create_report( quality_report_create_request=models.QualityReportCreateRequest(task_id=task_id), - _parse_response=False + _parse_response=False, ) assert response.status == HTTPStatus.ACCEPTED rq_id = response.data.decode() @@ -247,3 +248,135 @@ def test_user_get_settings_in_org_task( ) else: self._test_get_settings_403(user["username"], settings_id, **extra_kwargs) + + +@pytest.mark.usefixtures("restore_db_per_function") +class TestPatchSettings: + def _test_patch_settings_200( + self, + user: str, + obj_id: int, + data: dict[str, Any], + *, + expected_data: Optional[Dict[str, Any]] = None, + **kwargs, + ): + with make_api_client(user) as api_client: + (_, response) = api_client.quality_api.partial_update_settings( + obj_id, patched_quality_settings_request=data, **kwargs + ) + assert response.status == HTTPStatus.OK + + if expected_data is not None: + assert DeepDiff(expected_data, json.loads(response.data), ignore_order=True) == {} + + return response + + def _test_patch_settings_403(self, user: str, obj_id: int, data: dict[str, Any], **kwargs): + with make_api_client(user) as api_client: + (_, response) = api_client.quality_api.partial_update_settings( + obj_id, + patched_quality_settings_request=data, + **kwargs, + _parse_response=False, + _check_status=False, + ) + assert response.status == HTTPStatus.FORBIDDEN + + return response + + def _get_request_data(self, data: dict[str, Any]) -> tuple[dict[str, Any], dict[str, Any]]: + patched_data = deepcopy(data) + + for field, value in data.items(): + if isinstance(value, bool): + patched_data[field] = not value + elif isinstance(value, float): + patched_data[field] = 1 - value + + expected_data = deepcopy(patched_data) + + return patched_data, expected_data + + def test_can_patch_settings(self, admin_user, quality_settings): + settings_id, settings = next(iter(quality_settings.items())) + data, expected_data = self._get_request_data(settings) + self._test_patch_settings_200(admin_user, settings_id, data, expected_data=expected_data) + + @pytest.mark.parametrize("is_staff, allow", [(True, True), (False, False)]) + def test_user_patch_settings_in_sandbox_task( + self, quality_settings, tasks, users, is_task_staff, is_staff, allow + ): + task = next( + t + for t in tasks + if t["organization"] is None and not users[t["owner"]["id"]]["is_superuser"] + ) + + if is_staff: + user = task["owner"]["username"] + else: + user = next(u for u in users if not is_task_staff(u["id"], task["id"]))["username"] + + settings_id = task["quality_settings"] + settings = quality_settings[settings_id] + data, expected_data = self._get_request_data(settings) + + if allow: + self._test_patch_settings_200(user, settings_id, data, expected_data=expected_data) + else: + self._test_patch_settings_403(user, settings_id, data) + + @pytest.mark.parametrize( + "org_role, is_staff, allow", + [ + ("owner", True, True), + ("owner", False, True), + ("maintainer", True, True), + ("maintainer", False, True), + ("supervisor", True, True), + ("supervisor", False, False), + ("worker", True, True), + ("worker", False, False), + ], + ) + def test_user_patch_settings_in_org_task( + self, + tasks, + users, + is_org_member, + is_task_staff, + org_role, + is_staff, + allow, + quality_settings, + ): + for user in users: + task = next( + ( + t + for t in tasks + if t["organization"] is not None + and is_task_staff(user["id"], t["id"]) == is_staff + and is_org_member(user["id"], t["organization"], role=org_role) + ), + None, + ) + if task is not None: + break + + assert task + + org_id = task["organization"] + extra_kwargs = {"org_id": org_id} + + settings_id = task["quality_settings"] + settings = quality_settings[settings_id] + data, expected_data = self._get_request_data(settings) + + if allow: + self._test_patch_settings_200( + user["username"], settings_id, data, expected_data=expected_data, **extra_kwargs + ) + else: + self._test_patch_settings_403(user["username"], settings_id, data, **extra_kwargs) diff --git a/tests/python/shared/assets/quality_settings.json b/tests/python/shared/assets/quality_settings.json index 31a851cff7f6..d1579a6ae714 100644 --- a/tests/python/shared/assets/quality_settings.json +++ b/tests/python/shared/assets/quality_settings.json @@ -4,6 +4,7 @@ "compare_attributes": true, "compare_groups": true, "group_match_threshold": 0.5, + "id": 1, "iou_threshold": 0.4, "line_orientation_threshold": 0.1, "line_thickness": 0.01, @@ -19,6 +20,7 @@ "compare_attributes": true, "compare_groups": true, "group_match_threshold": 0.5, + "id": 2, "iou_threshold": 0.4, "line_orientation_threshold": 0.1, "line_thickness": 0.01, @@ -34,6 +36,7 @@ "compare_attributes": true, "compare_groups": true, "group_match_threshold": 0.5, + "id": 3, "iou_threshold": 0.4, "line_orientation_threshold": 0.1, "line_thickness": 0.01, @@ -49,6 +52,7 @@ "compare_attributes": true, "compare_groups": true, "group_match_threshold": 0.5, + "id": 4, "iou_threshold": 0.4, "line_orientation_threshold": 0.1, "line_thickness": 0.01, @@ -64,6 +68,7 @@ "compare_attributes": true, "compare_groups": true, "group_match_threshold": 0.5, + "id": 5, "iou_threshold": 0.4, "line_orientation_threshold": 0.1, "line_thickness": 0.01, @@ -79,6 +84,7 @@ "compare_attributes": true, "compare_groups": true, "group_match_threshold": 0.5, + "id": 6, "iou_threshold": 0.4, "line_orientation_threshold": 0.1, "line_thickness": 0.01, @@ -94,6 +100,7 @@ "compare_attributes": true, "compare_groups": true, "group_match_threshold": 0.5, + "id": 7, "iou_threshold": 0.4, "line_orientation_threshold": 0.1, "line_thickness": 0.01, @@ -109,6 +116,7 @@ "compare_attributes": true, "compare_groups": true, "group_match_threshold": 0.5, + "id": 8, "iou_threshold": 0.4, "line_orientation_threshold": 0.1, "line_thickness": 0.01, @@ -124,6 +132,7 @@ "compare_attributes": true, "compare_groups": true, "group_match_threshold": 0.5, + "id": 9, "iou_threshold": 0.4, "line_orientation_threshold": 0.1, "line_thickness": 0.01, @@ -139,6 +148,7 @@ "compare_attributes": true, "compare_groups": true, "group_match_threshold": 0.5, + "id": 10, "iou_threshold": 0.4, "line_orientation_threshold": 0.1, "line_thickness": 0.01, @@ -154,6 +164,7 @@ "compare_attributes": true, "compare_groups": true, "group_match_threshold": 0.5, + "id": 11, "iou_threshold": 0.4, "line_orientation_threshold": 0.1, "line_thickness": 0.01, @@ -169,6 +180,7 @@ "compare_attributes": true, "compare_groups": true, "group_match_threshold": 0.5, + "id": 12, "iou_threshold": 0.4, "line_orientation_threshold": 0.1, "line_thickness": 0.01, @@ -184,6 +196,7 @@ "compare_attributes": true, "compare_groups": true, "group_match_threshold": 0.5, + "id": 13, "iou_threshold": 0.4, "line_orientation_threshold": 0.1, "line_thickness": 0.01, @@ -199,6 +212,7 @@ "compare_attributes": true, "compare_groups": true, "group_match_threshold": 0.5, + "id": 14, "iou_threshold": 0.4, "line_orientation_threshold": 0.1, "line_thickness": 0.01, @@ -214,6 +228,7 @@ "compare_attributes": true, "compare_groups": true, "group_match_threshold": 0.5, + "id": 15, "iou_threshold": 0.4, "line_orientation_threshold": 0.1, "line_thickness": 0.01, @@ -229,6 +244,7 @@ "compare_attributes": true, "compare_groups": true, "group_match_threshold": 0.5, + "id": 16, "iou_threshold": 0.4, "line_orientation_threshold": 0.1, "line_thickness": 0.01, @@ -244,6 +260,7 @@ "compare_attributes": true, "compare_groups": true, "group_match_threshold": 0.5, + "id": 17, "iou_threshold": 0.4, "line_orientation_threshold": 0.1, "line_thickness": 0.01, From 69d064363657d0d0ecf7c544d62d77edd28ba81d Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 23 May 2023 01:10:24 +0300 Subject: [PATCH 173/257] Add more permission tests for endpoints --- cvat/apps/iam/permissions.py | 6 +- cvat/apps/iam/rules/conflicts.rego | 2 +- cvat/apps/iam/rules/quality_settings.rego | 49 -- cvat/apps/quality_control/views.py | 64 ++- cvat/schema.yml | 23 +- tests/python/rest_api/test_quality_control.py | 424 ++++++++++++++++-- 6 files changed, 455 insertions(+), 113 deletions(-) diff --git a/cvat/apps/iam/permissions.py b/cvat/apps/iam/permissions.py index 6e59da033ed7..4a4591c9f250 100644 --- a/cvat/apps/iam/permissions.py +++ b/cvat/apps/iam/permissions.py @@ -1703,11 +1703,7 @@ def create(cls, request, view, obj): permissions = [] if view.basename == 'annotation_conflicts': for scope in cls.get_scopes(request, view, obj): - if scope == Scopes.LIST and isinstance(obj, Task): - permissions.append(TaskPermission.create_base_perm(request, view, - scope=TaskPermission.Scopes.VIEW, obj=obj)) - else: - permissions.append(cls.create_base_perm(request, view, scope, obj)) + permissions.append(cls.create_base_perm(request, view, scope, obj)) return permissions diff --git a/cvat/apps/iam/rules/conflicts.rego b/cvat/apps/iam/rules/conflicts.rego index ba6a3e15f381..5aa7329c9ea1 100644 --- a/cvat/apps/iam/rules/conflicts.rego +++ b/cvat/apps/iam/rules/conflicts.rego @@ -7,7 +7,7 @@ import data.utils import data.organizations # input: { -# "scope": <"view"|"list"> or null, +# "scope": <"list"> or null, # "auth": { # "user": { # "id": , diff --git a/cvat/apps/iam/rules/quality_settings.rego b/cvat/apps/iam/rules/quality_settings.rego index 84182f36f355..ca998e224f7e 100644 --- a/cvat/apps/iam/rules/quality_settings.rego +++ b/cvat/apps/iam/rules/quality_settings.rego @@ -48,52 +48,3 @@ allow { utils.is_admin } -allow { - input.scope == utils.LIST - utils.is_sandbox -} - -allow { - input.scope == utils.LIST - organizations.is_member -} - -filter = [] { # Django Q object to filter list of entries - utils.is_admin - utils.is_sandbox -} else = qobject { - utils.is_admin - utils.is_organization - org := input.auth.organization - qobject := [ - {"task__organization": org.id}, "|", - {"task__project__organization": org.id}, "|", - ] -} else = qobject { - utils.is_sandbox - user := input.auth.user - qobject := [ - {"task__owner_id": user.id}, "|", - {"task__assignee_id": user.id}, "|", - {"task__project__owner_id": user.id}, "|", - {"task__project__assignee_id": user.id}, "|", - ] -} else = qobject { - utils.is_organization - utils.has_perm(utils.USER) - organizations.has_perm(organizations.MAINTAINER) - org := input.auth.organization - qobject := [ - {"task__organization": org.id}, "|", - {"task__project__organization": org.id}, "|", - ] -} else = qobject { - organizations.has_perm(organizations.WORKER) - user := input.auth.user - qobject := [ - {"task__owner_id": user.id}, "|", - {"task__assignee_id": user.id}, "|", - {"task__project__owner_id": user.id}, "|", - {"task__project__assignee_id": user.id}, "|", - ] -} diff --git a/cvat/apps/quality_control/views.py b/cvat/apps/quality_control/views.py index fe1b1b35e957..a2feacbf55b1 100644 --- a/cvat/apps/quality_control/views.py +++ b/cvat/apps/quality_control/views.py @@ -40,8 +40,8 @@ summary='Method returns a paginated list of annotation conflicts', parameters=[ # These filters are implemented differently from others - OpenApiParameter('task_id', type=OpenApiTypes.INT, - description='A simple equality filter for task id'), + OpenApiParameter('report_id', type=OpenApiTypes.INT, + description='A simple equality filter for report id'), ], responses={ '200': AnnotationConflictSerializer(many=True), @@ -57,12 +57,12 @@ class QualityConflictsViewSet(viewsets.GenericViewSet, mixins.ListModelMixin): search_fields = [] filter_fields = list(search_fields) + [ - 'id', 'report_id', 'frame', 'type', 'job_id', 'importance' + 'id', 'frame', 'type', 'job_id', 'task_id', 'importance' ] simple_filters = set(filter_fields) - {'id'} lookup_fields = { - 'report_id': 'report__id', 'job_id': 'report__job__id', + 'task_id': 'report__job__segment__task__id' # task reports do not contain own conflicts } ordering_fields = list(filter_fields) ordering = 'id' @@ -72,17 +72,24 @@ def get_queryset(self): queryset = super().get_queryset() if self.action == 'list': - if task_id := self.request.GET.get('task_id', None): - # NOTE: This filter is too complex to be implemented by other means - task = Task.objects.get(id=task_id) - self.check_object_permissions(self.request, task) - queryset = queryset.filter( - Q(report__job__segment__task__id=task_id) | Q(report__task__id=task_id) - ) - else: - # In other cases permissions are checked already - perm = AnnotationConflictPermission.create_scope_list(self.request) - queryset = perm.filter(queryset) + if report_id := self.request.GET.get('report_id', None): + try: + report = QualityReport.objects.prefetch_related('parent').get(id=report_id) + except QualityReport.DoesNotExist as ex: + raise NotFound(f"Report {report_id} does not exist") from ex + + if report.target == QualityReportTarget.TASK: + queryset = self.queryset.filter( + Q(report=report) | Q(report__parent=report) + ).distinct() + elif report.target == QualityReportTarget.JOB: + queryset = self.queryset.filter(report=report) + else: + assert False + + # In other cases permissions are checked already + perm = AnnotationConflictPermission.create_scope_list(self.request) + queryset = perm.filter(queryset) return queryset @@ -90,6 +97,7 @@ def get_queryset(self): @extend_schema(tags=["quality"]) @extend_schema_view( retrieve=extend_schema( + operation_id='quality_retrieve_report', # the default produces the plural summary='Method returns details of a quality report', responses={ '200': QualityReportSerializer, @@ -144,9 +152,15 @@ def get_queryset(self): if self.action == 'list': if task_id := self.request.GET.get('task_id', None): # NOTE: This filter is too complex to be implemented by other means - task = Task.objects.get(id=task_id) + try: + task = Task.objects.get(id=task_id) + except Task.DoesNotExist as ex: + raise NotFound(f"Task {task_id} does not exist") from ex + self.check_object_permissions(self.request, task) - queryset = queryset.filter(Q(job__segment__task__id=task_id) | Q(task__id=task_id)) + queryset = queryset.filter( + Q(job__segment__task__id=task_id) | Q(task__id=task_id) + ).distinct() else: # In other cases permissions are checked already perm = QualityReportPermission.create_scope_list(self.request) @@ -208,7 +222,11 @@ def create(self, request, *args, **kwargs): input_serializer.is_valid(raise_exception=True) task_id = input_serializer.validated_data["task_id"] - task = Task.objects.get(pk=task_id) + + try: + task = Task.objects.get(pk=task_id) + except Task.DoesNotExist as ex: + raise NotFound(f"Task {task_id} does not exist") from ex try: rq_id = qc.QualityReportUpdateManager().schedule_quality_check_job( @@ -228,14 +246,18 @@ def create(self, request, *args, **kwargs): raise NotFound("Unknown request id") if rq_job.is_failed: - raise ValidationError(str(rq_job.exc_info)) + message = str(rq_job.exc_info) + rq_job.delete() + raise ValidationError(message) elif rq_job.is_queued or rq_job.is_started: return Response(status=status.HTTP_202_ACCEPTED) elif rq_job.is_finished: - if not rq_job.return_value: + return_value = rq_job.return_value + rq_job.delete() + if not return_value: raise ValidationError("No report has been computed") - report = self.get_queryset().get(pk=rq_job.return_value) + report = self.get_queryset().get(pk=return_value) report_serializer = QualityReportSerializer(instance=report) return Response( data=report_serializer.data, diff --git a/cvat/schema.yml b/cvat/schema.yml index e1d349d95f1f..0e480c24ff1f 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -4196,8 +4196,8 @@ paths: - name: filter required: false in: query - description: 'A filter term. Available filter_fields: [''id'', ''report_id'', - ''frame'', ''type'', ''job_id'', ''importance'']' + description: 'A filter term. Available filter_fields: [''id'', ''frame'', + ''type'', ''job_id'', ''task_id'', ''importance'']' schema: type: string - name: frame @@ -4240,11 +4240,11 @@ paths: description: Number of results to return per page. schema: type: integer - - name: report_id - in: query - description: A simple equality filter for the report_id field + - in: query + name: report_id schema: type: integer + description: A simple equality filter for report id - name: search required: false in: query @@ -4255,14 +4255,14 @@ paths: required: false in: query description: 'Which field to use when ordering the results. Available ordering_fields: - [''id'', ''report_id'', ''frame'', ''type'', ''job_id'', ''importance'']' + [''id'', ''frame'', ''type'', ''job_id'', ''task_id'', ''importance'']' schema: type: string - - in: query - name: task_id + - name: task_id + in: query + description: A simple equality filter for the task_id field schema: type: integer - description: A simple equality filter for task id - name: type in: query description: A simple equality filter for the type field @@ -4439,7 +4439,7 @@ paths: description: Invalid or failed request, check the response data for details /api/quality/reports/{id}: get: - operationId: quality_retrieve_reports + operationId: quality_retrieve_report summary: Method returns details of a quality report parameters: - in: header @@ -9308,6 +9308,9 @@ components: QualitySettings: type: object properties: + id: + type: integer + readOnly: true task: type: integer readOnly: true diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py index d9c9d356c671..bd973b3cb316 100644 --- a/tests/python/rest_api/test_quality_control.py +++ b/tests/python/rest_api/test_quality_control.py @@ -18,9 +18,62 @@ from .utils import CollectionSimpleFilterTestBase +class _PermissionTestBase: + def create_quality_report(self, user: str, task_id: int): + with make_api_client(user) as api_client: + (_, response) = api_client.quality_api.create_report( + quality_report_create_request=models.QualityReportCreateRequest(task_id=task_id), + _parse_response=False, + ) + assert response.status == HTTPStatus.ACCEPTED + rq_id = response.data.decode() + + while True: + (_, response) = api_client.quality_api.create_report( + rq_id=rq_id, _parse_response=False + ) + assert response.status in [HTTPStatus.CREATED, HTTPStatus.ACCEPTED] + + if response.status == HTTPStatus.CREATED: + break + + return json.loads(response.data) + + def create_gt_job(self, user, task_id): + with make_api_client(user) as api_client: + (meta, _) = api_client.tasks_api.retrieve_data_meta(task_id) + start_frame = meta.start_frame + + (job, _) = api_client.jobs_api.create( + models.JobWriteRequest( + type="ground_truth", + task_id=task_id, + frame_selection_method="manual", + frames=[start_frame], + ) + ) + + (labels, _) = api_client.labels_api.list(task_id=task_id) + api_client.jobs_api.update_annotations( + job.id, + job_annotations_update_request=dict( + shapes=[ + dict( + frame=start_frame, + label_id=labels.results[0].id, + type="rectangle", + points=[1, 1, 2, 2], + ), + ], + ), + ) + + return job + + @pytest.mark.usefixtures("restore_db_per_class") -class TestListQualityReports: - def _test_list_200(self, user, task_id, data, **kwargs): +class TestListQualityReports(_PermissionTestBase): + def _test_list_reports_200(self, user, task_id, *, expected_data=None, **kwargs): with make_api_client(user) as api_client: results = get_paginated_collection( api_client.quality_api.list_reports_endpoint, @@ -28,7 +81,17 @@ def _test_list_200(self, user, task_id, data, **kwargs): task_id=task_id, **kwargs, ) - assert DeepDiff(data, results) == {} + + if expected_data is not None: + assert DeepDiff(expected_data, results) == {} + + def _test_list_reports_403(self, user, task_id, **kwargs): + with make_api_client(user) as api_client: + (_, response) = api_client.quality_api.list_reports( + task_id=task_id, **kwargs, _parse_response=False, _check_status=False + ) + + assert response.status == HTTPStatus.FORBIDDEN def test_can_list_quality_reports(self, admin_user, quality_reports): parent_report = next(r for r in quality_reports if r["task_id"]) @@ -37,11 +100,116 @@ def test_can_list_quality_reports(self, admin_user, quality_reports): r for r in quality_reports if r["parent_id"] == parent_report["id"] ] - self._test_list_200(admin_user, task_id, reports) + self._test_list_reports_200(admin_user, task_id, expected_data=reports) + + @pytest.mark.usefixtures("restore_db_per_function") + @pytest.mark.parametrize("is_staff, allow", [(True, True), (False, False)]) + def test_user_list_reports_in_sandbox_task( + self, tasks, jobs, users, is_task_staff, is_staff, allow, admin_user + ): + task = next( + t + for t in tasks + if t["organization"] is None + and not users[t["owner"]["id"]]["is_superuser"] + and not any(j for j in jobs if j["task_id"] == t["id"] and j["type"] == "ground_truth") + ) + + if is_staff: + user = task["owner"]["username"] + else: + user = next(u for u in users if not is_task_staff(u["id"], task["id"]))["username"] + + self.create_gt_job(admin_user, task["id"]) + report = self.create_quality_report(admin_user, task["id"]) + + if allow: + self._test_list_reports_200(user, task["id"], expected_data=[report], target="task") + else: + self._test_list_reports_403(user, task["id"]) + + @pytest.mark.usefixtures("restore_db_per_function") + @pytest.mark.parametrize( + "org_role, is_staff, allow", + [ + ("owner", True, True), + ("owner", False, True), + ("maintainer", True, True), + ("maintainer", False, True), + ("supervisor", True, True), + ("supervisor", False, False), + ("worker", True, True), + ("worker", False, False), + ], + ) + def test_user_list_reports_in_org_task( + self, + tasks, + jobs, + users, + is_org_member, + is_task_staff, + org_role, + is_staff, + allow, + admin_user, + ): + for user in users: + task = next( + ( + t + for t in tasks + if t["organization"] is not None + and is_task_staff(user["id"], t["id"]) == is_staff + and is_org_member(user["id"], t["organization"], role=org_role) + and not any( + j for j in jobs if j["task_id"] == t["id"] and j["type"] == "ground_truth" + ) + ), + None, + ) + if task is not None: + break + + assert task + + org_id = task["organization"] + extra_kwargs = {"org_id": org_id} + + self.create_gt_job(admin_user, task["id"]) + report = self.create_quality_report(admin_user, task["id"]) + + if allow: + self._test_list_reports_200( + user["username"], task["id"], expected_data=[report], **extra_kwargs, target="task" + ) + else: + self._test_list_reports_403(user["username"], task["id"], **extra_kwargs) @pytest.mark.usefixtures("restore_db_per_class") -class TestGetQualityReports: +class TestGetQualityReports(_PermissionTestBase): + def _test_get_report_200( + self, user: str, obj_id: int, *, expected_data: Optional[Dict[str, Any]] = None, **kwargs + ): + with make_api_client(user) as api_client: + (_, response) = api_client.quality_api.retrieve_report(obj_id, **kwargs) + assert response.status == HTTPStatus.OK + + if expected_data is not None: + assert DeepDiff(expected_data, json.loads(response.data), ignore_order=True) == {} + + return response + + def _test_get_report_403(self, user: str, obj_id: int, **kwargs): + with make_api_client(user) as api_client: + (_, response) = api_client.quality_api.retrieve_report( + obj_id, **kwargs, _parse_response=False, _check_status=False + ) + assert response.status == HTTPStatus.FORBIDDEN + + return response + @pytest.mark.parametrize("target", ["task", "job"]) def test_can_get_full_report_data(self, admin_user, target, quality_reports): report = next(r for r in quality_reports if (r["job_id"] is not None) == (target == "job")) @@ -55,31 +223,99 @@ def test_can_get_full_report_data(self, admin_user, target, quality_reports): for key in ["parameters", "comparison_summary", "frame_results"]: assert key in report_data.keys(), key + @pytest.mark.usefixtures("restore_db_per_function") + @pytest.mark.parametrize("is_staff, allow", [(True, True), (False, False)]) + def test_user_get_report_in_sandbox_task( + self, tasks, jobs, users, is_task_staff, is_staff, allow, admin_user + ): + task = next( + t + for t in tasks + if t["organization"] is None + and not users[t["owner"]["id"]]["is_superuser"] + and not any(j for j in jobs if j["task_id"] == t["id"] and j["type"] == "ground_truth") + ) -@pytest.mark.usefixtures("restore_db_per_function") -class TestPostQualityReports: - def test_can_create_report(self, admin_user, jobs): - gt_job = next(j for j in jobs if j["type"] == "ground_truth") - task_id = gt_job["task_id"] + if is_staff: + user = task["owner"]["username"] + else: + user = next(u for u in users if not is_task_staff(u["id"], task["id"]))["username"] - with make_api_client(admin_user) as api_client: - (_, response) = api_client.quality_api.create_report( - quality_report_create_request=models.QualityReportCreateRequest(task_id=task_id), - _parse_response=False, + self.create_gt_job(admin_user, task["id"]) + report = self.create_quality_report(admin_user, task["id"]) + + if allow: + self._test_get_report_200(user, report["id"], expected_data=report) + else: + self._test_get_report_403(user, report["id"]) + + @pytest.mark.usefixtures("restore_db_per_function") + @pytest.mark.parametrize( + "org_role, is_staff, allow", + [ + ("owner", True, True), + ("owner", False, True), + ("maintainer", True, True), + ("maintainer", False, True), + ("supervisor", True, True), + ("supervisor", False, False), + ("worker", True, True), + ("worker", False, False), + ], + ) + def test_user_get_report_in_org_task( + self, + tasks, + jobs, + users, + is_org_member, + is_task_staff, + org_role, + is_staff, + allow, + admin_user, + ): + for user in users: + task = next( + ( + t + for t in tasks + if t["organization"] is not None + and is_task_staff(user["id"], t["id"]) == is_staff + and is_org_member(user["id"], t["organization"], role=org_role) + and not any( + j for j in jobs if j["task_id"] == t["id"] and j["type"] == "ground_truth" + ) + ), + None, ) - assert response.status == HTTPStatus.ACCEPTED - rq_id = response.data.decode() + if task is not None: + break - while True: - (_, response) = api_client.quality_api.create_report( - rq_id=rq_id, _parse_response=False - ) - assert response.status in [HTTPStatus.CREATED, HTTPStatus.ACCEPTED] + assert task - if response.status == HTTPStatus.CREATED: - break + org_id = task["organization"] + extra_kwargs = {"org_id": org_id} + + self.create_gt_job(admin_user, task["id"]) + report = self.create_quality_report(admin_user, task["id"]) + + if allow: + self._test_get_report_200( + user["username"], report["id"], expected_data=report, **extra_kwargs + ) + else: + self._test_get_report_403(user["username"], report["id"], **extra_kwargs) + + +@pytest.mark.usefixtures("restore_db_per_function") +class TestPostQualityReports(_PermissionTestBase): + def test_can_create_report(self, admin_user, jobs): + gt_job = next(j for j in jobs if j["type"] == "ground_truth") + task_id = gt_job["task_id"] - assert models.QualityReport._from_openapi_data(**json.loads(response.data)) + report = self.create_quality_report(admin_user, task_id) + assert models.QualityReport._from_openapi_data(**report) class TestSimpleQualityReportsFilters(CollectionSimpleFilterTestBase): @@ -114,6 +350,128 @@ def test_can_use_simple_filter_for_object_list(self, field): return super().test_can_use_simple_filter_for_object_list(field) +@pytest.mark.usefixtures("restore_db_per_class") +class TestListQualityConflicts(_PermissionTestBase): + def _test_list_conflicts_200(self, user, report_id, *, expected_data=None, **kwargs): + with make_api_client(user) as api_client: + results = get_paginated_collection( + api_client.quality_api.list_conflicts_endpoint, + return_json=True, + report_id=report_id, + **kwargs, + ) + + if expected_data is not None: + assert DeepDiff(expected_data, results) == {} + + return results + + def _test_list_conflicts_403(self, user, report_id, **kwargs): + with make_api_client(user) as api_client: + (_, response) = api_client.quality_api.list_conflicts( + report_id=report_id, **kwargs, _parse_response=False, _check_status=False + ) + + assert response.status == HTTPStatus.FORBIDDEN + + def test_can_list_job_report_conflicts(self, admin_user, quality_reports, quality_conflicts): + report = next(r for r in quality_reports if r["job_id"]) + conflicts = [c for c in quality_conflicts if c["report_id"] == report["id"]] + + self._test_list_conflicts_200(admin_user, report["id"], expected_data=conflicts) + + @pytest.mark.usefixtures("restore_db_per_function") + @pytest.mark.parametrize("is_staff, allow", [(True, True), (False, False)]) + def test_user_list_conflicts_in_sandbox_task( + self, tasks, jobs, users, is_task_staff, is_staff, allow, admin_user + ): + task = next( + t + for t in tasks + if t["organization"] is None + and not users[t["owner"]["id"]]["is_superuser"] + and not any(j for j in jobs if j["task_id"] == t["id"] and j["type"] == "ground_truth") + ) + + if is_staff: + user = task["owner"]["username"] + else: + user = next(u for u in users if not is_task_staff(u["id"], task["id"]))["username"] + + self.create_gt_job(admin_user, task["id"]) + report = self.create_quality_report(admin_user, task["id"]) + conflicts = self._test_list_conflicts_200(admin_user, report_id=report["id"]) + assert conflicts + + if allow: + self._test_list_conflicts_200(user, report["id"], expected_data=conflicts) + else: + self._test_list_conflicts_200(user, report["id"], expected_data=[]) + + @pytest.mark.usefixtures("restore_db_per_function") + @pytest.mark.parametrize( + "org_role, is_staff, allow", + [ + ("owner", True, True), + ("owner", False, True), + ("maintainer", True, True), + ("maintainer", False, True), + ("supervisor", True, True), + ("supervisor", False, False), + ("worker", True, True), + ("worker", False, False), + ], + ) + def test_user_list_conflicts_in_org_task( + self, + tasks, + jobs, + users, + is_org_member, + is_task_staff, + org_role, + is_staff, + allow, + admin_user, + ): + for user in users: + task = next( + ( + t + for t in tasks + if t["organization"] is not None + and is_task_staff(user["id"], t["id"]) == is_staff + and is_org_member(user["id"], t["organization"], role=org_role) + and not any( + j for j in jobs if j["task_id"] == t["id"] and j["type"] == "ground_truth" + ) + ), + None, + ) + if task is not None: + break + + assert task + user = user["username"] + + org_id = task["organization"] + extra_kwargs = {"org_id": org_id} + + self.create_gt_job(admin_user, task["id"]) + report = self.create_quality_report(admin_user, task["id"]) + conflicts = self._test_list_conflicts_200( + admin_user, report_id=report["id"], **extra_kwargs + ) + assert conflicts + + if allow: + self._test_list_conflicts_200( + user, report["id"], expected_data=conflicts, **extra_kwargs + ) + else: + self._test_list_conflicts_200(user, report["id"], expected_data=[], **extra_kwargs) + + class TestSimpleQualityConflictsFilters(CollectionSimpleFilterTestBase): @pytest.fixture(autouse=True) def setup(self, restore_db_per_class, admin_user, quality_conflicts, quality_reports): @@ -135,19 +493,31 @@ def _get_field_samples(self, field: str) -> Tuple[Any, List[Dict[str, Any]]]: if self._get_field(c, self._map_field("report_id")) in job_reports ] return job_id, job_conflicts + elif field == "task_id": + # This field is not included in the response + task_report = next(r for r in self.report_samples if r["task_id"]) + task_reports = {task_report["id"]} | { + r["id"] for r in self.report_samples if r["parent_id"] == task_report["id"] + } + task_conflicts = [ + c + for c in self.samples + if self._get_field(c, self._map_field("report_id")) in task_reports + ] + return task_report["task_id"], task_conflicts else: return super()._get_field_samples(field) @pytest.mark.parametrize( "field", - ("report_id", "importance", "type", "frame", "job_id"), + ("report_id", "importance", "type", "frame", "job_id", "task_id"), ) def test_can_use_simple_filter_for_object_list(self, field): return super().test_can_use_simple_filter_for_object_list(field) @pytest.mark.usefixtures("restore_db_per_class") -class TestGetSettings: +class TestGetSettings(_PermissionTestBase): def _test_get_settings_200( self, user: str, obj_id: int, *, expected_data: Optional[Dict[str, Any]] = None, **kwargs ): @@ -251,7 +621,7 @@ def test_user_get_settings_in_org_task( @pytest.mark.usefixtures("restore_db_per_function") -class TestPatchSettings: +class TestPatchSettings(_PermissionTestBase): def _test_patch_settings_200( self, user: str, From 3ee41e63e173f45570b03a15cd0aaa006ee6cb78 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 23 May 2023 17:12:31 +0300 Subject: [PATCH 174/257] Fix frame count display --- cvat-core/src/server-response-types.ts | 1 + cvat-core/src/session.ts | 6 ++++++ cvat-ui/src/components/job-item/job-item.tsx | 7 ++++--- .../quality/task-quality-component.tsx | 2 +- cvat-ui/src/components/task-page/job-list.tsx | 2 +- cvat/apps/engine/serializers.py | 3 ++- cvat/schema.yml | 3 +++ tests/python/shared/assets/jobs.json | 21 +++++++++++++++++++ 8 files changed, 39 insertions(+), 6 deletions(-) diff --git a/cvat-core/src/server-response-types.ts b/cvat-core/src/server-response-types.ts index e0f3b3dced51..0c487a6c1f04 100644 --- a/cvat-core/src/server-response-types.ts +++ b/cvat-core/src/server-response-types.ts @@ -120,6 +120,7 @@ export interface SerializedJob { type: JobType; startFrame: number; stopFrame: number; + frameCount: number; task_id: number; updated_date: string; url: string; diff --git a/cvat-core/src/session.ts b/cvat-core/src/session.ts index ce835ba2fa95..9437711205e7 100644 --- a/cvat-core/src/session.ts +++ b/cvat-core/src/session.ts @@ -320,6 +320,7 @@ export class Job extends Session { public readonly id: number; public readonly startFrame: number; public readonly stopFrame: number; + public readonly frameCount: number; public readonly projectId: number | null; public readonly taskId: number; public readonly dimension: DimensionType; @@ -386,6 +387,7 @@ export class Job extends Session { type: JobType.ANNOTATION, start_frame: undefined, stop_frame: undefined, + frame_count: undefined, project_id: null, task_id: undefined, labels: [], @@ -491,6 +493,9 @@ export class Job extends Session { stopFrame: { get: () => data.stop_frame, }, + frameCount: { + get: () => data.frame_count, + }, projectId: { get: () => data.project_id, }, @@ -770,6 +775,7 @@ export class Task extends Session { type: job.type, start_frame: job.start_frame, stop_frame: job.stop_frame, + frame_count: job.frame_count, created_date: job.created_date, updated_date: job.updated_date, diff --git a/cvat-ui/src/components/job-item/job-item.tsx b/cvat-ui/src/components/job-item/job-item.tsx index cd4c8cd419c8..46977067eadd 100644 --- a/cvat-ui/src/components/job-item/job-item.tsx +++ b/cvat-ui/src/components/job-item/job-item.tsx @@ -11,7 +11,7 @@ import Text from 'antd/lib/typography/Text'; import Select from 'antd/lib/select'; import Icon from '@ant-design/icons'; import { - Job, JobStage, JobType, User, + Job, JobStage, JobType, Task, User, } from 'cvat-core-wrapper'; import { BorderOutlined, @@ -30,6 +30,7 @@ import JobActionsMenu from './job-actions-menu'; interface Props { job: Job, + task: Task, onJobUpdate: (job: Job) => void; } @@ -91,7 +92,7 @@ function ReviewSummaryComponent({ jobInstance }: { jobInstance: any }): JSX.Elem } function JobItem(props: Props): JSX.Element { - const { job, onJobUpdate } = props; + const { job, task, onJobUpdate } = props; const { stage, id } = job; const created = moment(job.createdDate); const updated = moment(job.createdDate); @@ -222,7 +223,7 @@ function JobItem(props: Props): JSX.Element { Frame count: - {` ${job.stopFrame - job.startFrame}`} + {` ${job.frameCount} (${(job.frameCount / (task.size || 1) * 100).toFixed(0)}%)`} diff --git a/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx b/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx index e1556bb16ea7..19ba30b171a1 100644 --- a/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx +++ b/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx @@ -53,7 +53,7 @@ function TaskQualityComponent(props: Props): JSX.Element { - {gtJob ? : } + {gtJob ? : } diff --git a/cvat-ui/src/components/task-page/job-list.tsx b/cvat-ui/src/components/task-page/job-list.tsx index 4a6066b2f3b6..5249449fb2c6 100644 --- a/cvat-ui/src/components/task-page/job-list.tsx +++ b/cvat-ui/src/components/task-page/job-list.tsx @@ -84,7 +84,7 @@ function JobListComponent(props: Props): JSX.Element { const filteredJobs = setUpJobsList(jobs, query); const jobViews = filteredJobs .slice((query.page - 1) * PAGE_SIZE, query.page * PAGE_SIZE) - .map((job: Job) => ); + .map((job: Job) => ); useEffect(() => { history.replace({ search: updateHistoryFromQuery(query), diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index c5370ed2588c..1a2b071c666d 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -545,6 +545,7 @@ class JobReadSerializer(serializers.ModelSerializer): project_id = serializers.ReadOnlyField(source="get_project_id", allow_null=True) start_frame = serializers.ReadOnlyField(source="segment.start_frame") stop_frame = serializers.ReadOnlyField(source="segment.stop_frame") + frame_count = serializers.ReadOnlyField(source="segment.frame_count") assignee = BasicUserSerializer(allow_null=True, read_only=True) dimension = serializers.CharField(max_length=2, source='segment.task.dimension', read_only=True) data_chunk_size = serializers.ReadOnlyField(source='segment.task.data.chunk_size') @@ -558,7 +559,7 @@ class JobReadSerializer(serializers.ModelSerializer): class Meta: model = models.Job fields = ('url', 'id', 'task_id', 'project_id', 'assignee', - 'dimension', 'bug_tracker', 'status', 'stage', 'state', 'mode', + 'dimension', 'bug_tracker', 'status', 'stage', 'state', 'mode', 'frame_count', 'start_frame', 'stop_frame', 'data_chunk_size', 'data_compressed_chunk_type', 'created_date', 'updated_date', 'issues', 'labels', 'type') read_only_fields = fields diff --git a/cvat/schema.yml b/cvat/schema.yml index 0e480c24ff1f..d538deb397de 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -7823,6 +7823,9 @@ components: mode: type: string readOnly: true + frame_count: + type: integer + readOnly: true start_frame: type: integer maximum: 2147483647 diff --git a/tests/python/shared/assets/jobs.json b/tests/python/shared/assets/jobs.json index 249aaf713290..75dac90823c9 100644 --- a/tests/python/shared/assets/jobs.json +++ b/tests/python/shared/assets/jobs.json @@ -10,6 +10,7 @@ "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", "dimension": "2d", + "frame_count": 4, "id": 28, "issues": { "count": 0, @@ -38,6 +39,7 @@ "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", "dimension": "2d", + "frame_count": 11, "id": 27, "issues": { "count": 0, @@ -66,6 +68,7 @@ "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", "dimension": "2d", + "frame_count": 4, "id": 26, "issues": { "count": 0, @@ -94,6 +97,7 @@ "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", "dimension": "2d", + "frame_count": 6, "id": 25, "issues": { "count": 0, @@ -122,6 +126,7 @@ "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", "dimension": "2d", + "frame_count": 2, "id": 24, "issues": { "count": 0, @@ -150,6 +155,7 @@ "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", "dimension": "2d", + "frame_count": 2, "id": 23, "issues": { "count": 0, @@ -178,6 +184,7 @@ "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", "dimension": "2d", + "frame_count": 2, "id": 22, "issues": { "count": 0, @@ -206,6 +213,7 @@ "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", "dimension": "2d", + "frame_count": 5, "id": 21, "issues": { "count": 0, @@ -234,6 +242,7 @@ "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", "dimension": "2d", + "frame_count": 25, "id": 19, "issues": { "count": 0, @@ -262,6 +271,7 @@ "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", "dimension": "2d", + "frame_count": 8, "id": 18, "issues": { "count": 0, @@ -290,6 +300,7 @@ "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", "dimension": "2d", + "frame_count": 5, "id": 17, "issues": { "count": 0, @@ -324,6 +335,7 @@ "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", "dimension": "2d", + "frame_count": 11, "id": 16, "issues": { "count": 1, @@ -352,6 +364,7 @@ "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", "dimension": "2d", + "frame_count": 5, "id": 14, "issues": { "count": 0, @@ -380,6 +393,7 @@ "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", "dimension": "2d", + "frame_count": 5, "id": 13, "issues": { "count": 0, @@ -408,6 +422,7 @@ "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", "dimension": "2d", + "frame_count": 5, "id": 12, "issues": { "count": 0, @@ -442,6 +457,7 @@ "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", "dimension": "2d", + "frame_count": 5, "id": 11, "issues": { "count": 1, @@ -476,6 +492,7 @@ "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", "dimension": "2d", + "frame_count": 14, "id": 10, "issues": { "count": 1, @@ -504,6 +521,7 @@ "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", "dimension": "2d", + "frame_count": 11, "id": 9, "issues": { "count": 1, @@ -532,6 +550,7 @@ "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", "dimension": "3d", + "frame_count": 1, "id": 8, "issues": { "count": 0, @@ -566,6 +585,7 @@ "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", "dimension": "2d", + "frame_count": 25, "id": 7, "issues": { "count": 1, @@ -600,6 +620,7 @@ "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", "dimension": "2d", + "frame_count": 23, "id": 2, "issues": { "count": 0, From 1b54265eb7c07736d1e0671b6835805b6a1e2703 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 23 May 2023 17:57:25 +0300 Subject: [PATCH 175/257] Add report content tests --- tests/python/rest_api/test_quality_control.py | 249 +- tests/python/shared/assets/annotations.json | 4515 +++++++++++------ tests/python/shared/assets/cvat_db/data.json | 3410 +++++++++---- tests/python/shared/assets/jobs.json | 10 +- tests/python/shared/assets/labels.json | 13 +- .../shared/assets/quality_conflicts.json | 418 +- .../python/shared/assets/quality_reports.json | 56 +- tests/python/shared/assets/tasks.json | 4 +- 8 files changed, 5965 insertions(+), 2710 deletions(-) diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py index bd973b3cb316..c9229b508ebd 100644 --- a/tests/python/rest_api/test_quality_control.py +++ b/tests/python/rest_api/test_quality_control.py @@ -210,6 +210,114 @@ def _test_get_report_403(self, user: str, obj_id: int, **kwargs): return response + @pytest.mark.usefixtures("restore_db_per_function") + @pytest.mark.parametrize("is_staff, allow", [(True, True), (False, False)]) + def test_user_get_report_in_sandbox_task( + self, tasks, jobs, users, is_task_staff, is_staff, allow, admin_user + ): + task = next( + t + for t in tasks + if t["organization"] is None + and not users[t["owner"]["id"]]["is_superuser"] + and not any(j for j in jobs if j["task_id"] == t["id"] and j["type"] == "ground_truth") + ) + + if is_staff: + user = task["owner"]["username"] + else: + user = next(u for u in users if not is_task_staff(u["id"], task["id"]))["username"] + + self.create_gt_job(admin_user, task["id"]) + report = self.create_quality_report(admin_user, task["id"]) + + if allow: + self._test_get_report_200(user, report["id"], expected_data=report) + else: + self._test_get_report_403(user, report["id"]) + + @pytest.mark.usefixtures("restore_db_per_function") + @pytest.mark.parametrize( + "org_role, is_staff, allow", + [ + ("owner", True, True), + ("owner", False, True), + ("maintainer", True, True), + ("maintainer", False, True), + ("supervisor", True, True), + ("supervisor", False, False), + ("worker", True, True), + ("worker", False, False), + ], + ) + def test_user_get_report_in_org_task( + self, + tasks, + jobs, + users, + is_org_member, + is_task_staff, + org_role, + is_staff, + allow, + admin_user, + ): + for user in users: + task = next( + ( + t + for t in tasks + if t["organization"] is not None + and is_task_staff(user["id"], t["id"]) == is_staff + and is_org_member(user["id"], t["organization"], role=org_role) + and not any( + j for j in jobs if j["task_id"] == t["id"] and j["type"] == "ground_truth" + ) + ), + None, + ) + if task is not None: + break + + assert task + + org_id = task["organization"] + extra_kwargs = {"org_id": org_id} + + self.create_gt_job(admin_user, task["id"]) + report = self.create_quality_report(admin_user, task["id"]) + + if allow: + self._test_get_report_200( + user["username"], report["id"], expected_data=report, **extra_kwargs + ) + else: + self._test_get_report_403(user["username"], report["id"], **extra_kwargs) + + +@pytest.mark.usefixtures("restore_db_per_class") +class TestGetQualityReportData(_PermissionTestBase): + def _test_get_report_data_200( + self, user: str, obj_id: int, *, expected_data: Optional[Dict[str, Any]] = None, **kwargs + ): + with make_api_client(user) as api_client: + (_, response) = api_client.quality_api.retrieve_report_data(obj_id, **kwargs) + assert response.status == HTTPStatus.OK + + if expected_data is not None: + assert DeepDiff(expected_data, json.loads(response.data), ignore_order=True) == {} + + return response + + def _test_get_report_data_403(self, user: str, obj_id: int, **kwargs): + with make_api_client(user) as api_client: + (_, response) = api_client.quality_api.retrieve_report_data( + obj_id, **kwargs, _parse_response=False, _check_status=False + ) + assert response.status == HTTPStatus.FORBIDDEN + + return response + @pytest.mark.parametrize("target", ["task", "job"]) def test_can_get_full_report_data(self, admin_user, target, quality_reports): report = next(r for r in quality_reports if (r["job_id"] is not None) == (target == "job")) @@ -225,7 +333,7 @@ def test_can_get_full_report_data(self, admin_user, target, quality_reports): @pytest.mark.usefixtures("restore_db_per_function") @pytest.mark.parametrize("is_staff, allow", [(True, True), (False, False)]) - def test_user_get_report_in_sandbox_task( + def test_user_get_report_data_in_sandbox_task( self, tasks, jobs, users, is_task_staff, is_staff, allow, admin_user ): task = next( @@ -243,11 +351,12 @@ def test_user_get_report_in_sandbox_task( self.create_gt_job(admin_user, task["id"]) report = self.create_quality_report(admin_user, task["id"]) + report_data = json.loads(self._test_get_report_data_200(admin_user, report["id"]).data) if allow: - self._test_get_report_200(user, report["id"], expected_data=report) + self._test_get_report_data_200(user, report["id"], expected_data=report_data) else: - self._test_get_report_403(user, report["id"]) + self._test_get_report_data_403(user, report["id"]) @pytest.mark.usefixtures("restore_db_per_function") @pytest.mark.parametrize( @@ -263,7 +372,7 @@ def test_user_get_report_in_sandbox_task( ("worker", False, False), ], ) - def test_user_get_report_in_org_task( + def test_user_get_report_data_in_org_task( self, tasks, jobs, @@ -299,13 +408,14 @@ def test_user_get_report_in_org_task( self.create_gt_job(admin_user, task["id"]) report = self.create_quality_report(admin_user, task["id"]) + report_data = json.loads(self._test_get_report_data_200(admin_user, report["id"]).data) if allow: - self._test_get_report_200( - user["username"], report["id"], expected_data=report, **extra_kwargs + self._test_get_report_data_200( + user["username"], report["id"], expected_data=report_data, **extra_kwargs ) else: - self._test_get_report_403(user["username"], report["id"], **extra_kwargs) + self._test_get_report_data_403(user["username"], report["id"], **extra_kwargs) @pytest.mark.usefixtures("restore_db_per_function") @@ -750,3 +860,128 @@ def test_user_patch_settings_in_org_task( ) else: self._test_patch_settings_403(user["username"], settings_id, data, **extra_kwargs) + + +@pytest.mark.usefixtures("restore_db_per_function") +class TestQualityReportMetrics(_PermissionTestBase): + @pytest.mark.parametrize("task_id", [22]) + def test_report_summary(self, task_id, tasks, jobs, quality_reports): + gt_job = next(j for j in jobs if j["task_id"] == task_id and j["type"] == "ground_truth") + task = tasks[task_id] + report = next(r for r in quality_reports if r["task_id"] == task_id) + + summary = report["summary"] + assert 0 < summary["conflict_count"] + assert summary["conflict_count"] == sum(summary["conflicts_by_type"].values()) + assert summary["conflict_count"] == summary["warning_count"] + summary["error_count"] + assert 0 < summary["valid_count"] + assert summary["valid_count"] < summary["ds_count"] + assert summary["valid_count"] < summary["gt_count"] + assert summary["frame_count"] == gt_job["frame_count"] + assert summary["frame_share_percent"] == summary["frame_count"] / task["size"] + + def test_unmodified_task_produces_the_same_metrics(self, admin_user, quality_reports): + old_report = next(r for r in quality_reports if r["task_id"]) + task_id = old_report["task_id"] + + new_report = self.create_quality_report(admin_user, task_id) + + with make_api_client(admin_user) as api_client: + (old_report_data, _) = api_client.quality_api.retrieve_report_data(old_report["id"]) + (new_report_data, _) = api_client.quality_api.retrieve_report_data(new_report["id"]) + + assert ( + DeepDiff( + new_report, + old_report, + ignore_order=True, + exclude_paths=["root['created_date']", "root['id']"], + ) + == {} + ) + assert ( + DeepDiff( + new_report_data, + old_report_data, + ignore_order=True, + exclude_paths=["root['created_date']", "root['id']"], + ) + == {} + ) + + def test_modified_task_produces_different_metrics( + self, admin_user, quality_reports, jobs, labels + ): + gt_job = next(j for j in jobs if j["type"] == "ground_truth") + task_id = gt_job["task_id"] + old_report = next(r for r in quality_reports if r["task_id"] == task_id) + job_labels = [ + l + for l in labels + if l.get("task_id") == task_id + or gt_job.get("project_id") + and l.get("project_id") == gt_job.get("project_id") + if not l["parent_id"] + ] + + with make_api_client(admin_user) as api_client: + api_client.jobs_api.partial_update_annotations( + "update", + gt_job["id"], + patched_labeled_data_request=dict( + shapes=[ + dict( + frame=gt_job["start_frame"], + label_id=job_labels[0]["id"], + type="rectangle", + points=[1, 1, 2, 2], + ), + ], + ), + ) + + new_report = self.create_quality_report(admin_user, task_id) + assert new_report["summary"]["conflict_count"] > old_report["summary"]["conflict_count"] + + @pytest.mark.parametrize("task_id", [22]) + @pytest.mark.parametrize( + "parameter", + [ + "check_covered_annotations", + "compare_attributes", + "compare_groups", + "group_match_threshold", + "iou_threshold", + "line_orientation_threshold", + "line_thickness", + "low_overlap_threshold", + "object_visibility_threshold", + "oks_sigma", + "oriented_lines", + "panoptic_comparison", + ], + ) + def test_settings_affect_metrics( + self, admin_user, quality_reports, tasks, quality_settings, task_id, parameter + ): + old_report = next(r for r in quality_reports if r["task_id"]) + task_id = old_report["task_id"] + task = tasks[task_id] + + settings = deepcopy(quality_settings[task["quality_settings"]]) + if isinstance(settings[parameter], bool): + settings[parameter] = not settings[parameter] + elif isinstance(settings[parameter], float): + settings[parameter] = 1 - settings[parameter] + if parameter == "group_match_threshold": + settings[parameter] = 0.9 + else: + assert False + + with make_api_client(admin_user) as api_client: + api_client.quality_api.partial_update_settings( + settings["id"], patched_quality_settings_request=settings + ) + + new_report = self.create_quality_report(admin_user, task_id) + assert new_report["summary"]["conflict_count"] != old_report["summary"]["conflict_count"] diff --git a/tests/python/shared/assets/annotations.json b/tests/python/shared/assets/annotations.json index 8be374d1076f..232f5df550cc 100644 --- a/tests/python/shared/assets/annotations.json +++ b/tests/python/shared/assets/annotations.json @@ -1404,44 +1404,161 @@ }, "27": { "shapes": [ + { + "attributes": [ + { + "spec_id": 13, + "value": "true" + } + ], + "elements": [], + "frame": 0, + "group": 0, + "id": 671, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 349.3662109375, + 38.5166015625, + 376.846017166401, + 64.03356448933664 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 4 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 17, + "id": 664, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 34.66, + 268.17, + 75.22, + 324.44 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 4 + }, { "attributes": [], "elements": [], "frame": 0, + "group": 16, + "id": 647, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 147.9, + 45.42, + 171.4, + 70.3 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 1 + }, + { + "attributes": [ + { + "spec_id": 13, + "value": "false" + } + ], + "elements": [], + "frame": 0, + "group": 17, + "id": 665, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 50.36, + 283.87 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 4 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 667, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 43.16, + 178.53, + 59.52, + 190.96, + 71.3, + 177.22, + 100.08, + 167.41 + ], + "rotation": 0.0, + "source": "manual", + "type": "polyline", + "z_order": 4 + }, + { + "attributes": [ + { + "spec_id": 13, + "value": "false" + } + ], + "elements": [], + "frame": 0, "group": 0, - "id": 601, + "id": 662, "label_id": 64, "occluded": false, "outside": false, "points": [ - 618.23, - 215.13, - 688.33, - 284.53, - 690.25, - 278.64, - 626.1, - 206.7 + 225.71, + 314.62 ], "rotation": 0.0, "source": "manual", - "type": "polygon", - "z_order": 3 + "type": "points", + "z_order": 4 }, { "attributes": [], "elements": [], "frame": 0, - "group": 3, - "id": 582, + "group": 4, + "id": 640, "label_id": 63, "occluded": false, "outside": false, "points": [ - 414.14, - 256.39, - 467.14, - 255.08 + 210.0, + 274.06, + 240.1, + 258.35, + 267.1, + 266.4, + 278.7, + 261.63, + 281.32, + 253.78 ], "rotation": 0.0, "source": "manual", @@ -1449,79 +1566,76 @@ "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "false" + } + ], "elements": [], "frame": 0, "group": 0, - "id": 588, - "label_id": 63, + "id": 644, + "label_id": 64, "occluded": false, "outside": false, "points": [ - 673.2, - 222.4, - 693.52, - 240.04, - 647.8, - 287.2, - 620.89, - 266.86 + 459.5, + 81.9, + 545.8, + 155.8 ], "rotation": 0.0, "source": "manual", - "type": "polygon", + "type": "rectangle", "z_order": 1 }, { "attributes": [], "elements": [], "frame": 0, - "group": 1, - "id": 581, + "group": 11, + "id": 655, "label_id": 63, "occluded": false, "outside": false, "points": [ - 109.62, - 93.68, - 150.75, - 154.71 + 681.09, + 13.0, + 711.3, + 43.2 ], - "rotation": 118.4, + "rotation": 0.0, "source": "manual", "type": "rectangle", - "z_order": 0 + "z_order": 1 }, { "attributes": [], "elements": [], "frame": 0, - "group": 0, - "id": 600, + "group": 7, + "id": 651, "label_id": 63, "occluded": false, "outside": false, "points": [ - 502.5, - 319.9, - 635.3, - 319.9, - 651.0, - 374.7, - 499.9, - 375.5 + 113.8, + 17.6, + 138.65, + 40.47 ], "rotation": 0.0, "source": "manual", - "type": "polygon", - "z_order": 3 + "type": "rectangle", + "z_order": 1 }, { "attributes": [], "elements": [], "frame": 0, "group": 2, - "id": 585, + "id": 642, "label_id": 63, "occluded": false, "outside": false, @@ -1664,15 +1778,77 @@ "elements": [], "frame": 0, "group": 0, - "id": 587, - "label_id": 64, + "id": 661, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 459.5, - 81.9, - 545.8, - 155.8 + 361.0, + 302.1, + 368.9, + 316.0, + 348.1, + 318.6 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 4 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 12, + "id": 656, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 212.62, + 18.92, + 236.8, + 42.5 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 1 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 11, + "id": 653, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 603.9, + 13.65, + 632.67, + 42.4 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 1 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 11, + "id": 654, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 641.2, + 13.0, + 670.65, + 42.5 ], "rotation": 0.0, "source": "manual", @@ -1684,7 +1860,7 @@ "elements": [], "frame": 0, "group": 6, - "id": 586, + "id": 643, "label_id": 63, "occluded": false, "outside": false, @@ -1704,7 +1880,7 @@ "elements": [], "frame": 0, "group": 3, - "id": 580, + "id": 637, "label_id": 63, "occluded": false, "outside": false, @@ -1723,145 +1899,120 @@ "attributes": [], "elements": [], "frame": 0, - "group": 4, - "id": 583, + "group": 1, + "id": 638, "label_id": 63, "occluded": false, "outside": false, "points": [ - 210.0, - 274.06, - 240.1, - 258.35, - 267.1, - 266.4, - 278.7, - 261.63, - 281.32, - 253.78 + 109.62, + 93.68, + 150.75, + 154.71 ], - "rotation": 0.0, + "rotation": 118.4, "source": "manual", - "type": "polyline", + "type": "rectangle", "z_order": 0 }, { "attributes": [], "elements": [], "frame": 0, - "group": 5, - "id": 584, + "group": 7, + "id": 652, "label_id": 63, "occluded": false, "outside": false, "points": [ - 227.02, - 87.59, - 225.05, - 153.02, - 283.9, - 158.2, - 251.9, - 121.0 + 179.91, + 18.22, + 203.4, + 41.8 ], "rotation": 0.0, "source": "manual", - "type": "polygon", - "z_order": 0 + "type": "rectangle", + "z_order": 1 }, { "attributes": [], "elements": [], "frame": 0, - "group": 0, - "id": 602, - "label_id": 64, + "group": 15, + "id": 646, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 532.6, - 300.2, - 533.2, - 391.8, - 678.47, - 393.14, - 639.87, - 300.88 + 213.97, + 46.73, + 239.5, + 72.3 ], "rotation": 0.0, "source": "manual", - "type": "polygon", - "z_order": 4 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "28": { - "shapes": [ + "type": "rectangle", + "z_order": 1 + }, { "attributes": [], "elements": [], "frame": 0, "group": 0, - "id": 548, + "id": 669, "label_id": 63, "occluded": false, "outside": false, "points": [ - 284.59, - 248.54, - 264.96, - 261.63, - 242.72, - 251.16, - 219.16, - 270.79 + 216.57, + 208.01, + 252.56, + 191.65 ], "rotation": 0.0, "source": "manual", - "type": "polyline", - "z_order": 0 + "type": "ellipse", + "z_order": 4 }, { "attributes": [], "elements": [], "frame": 0, - "group": 0, - "id": 550, + "group": 5, + "id": 641, "label_id": 63, "occluded": false, "outside": false, "points": [ - 107.28, - 91.51, - 152.43, - 154.32 + 227.02, + 87.59, + 225.05, + 153.02, + 283.9, + 158.2, + 251.9, + 121.0 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", + "type": "polygon", "z_order": 0 }, { "attributes": [], "elements": [], "frame": 0, - "group": 0, - "id": 549, + "group": 3, + "id": 639, "label_id": 63, "occluded": false, "outside": false, "points": [ - 419.37, - 260.32, - 436.39, - 259.01, - 448.82, - 258.36, - 463.87, - 258.36 + 414.14, + 256.39, + 467.14, + 255.08 ], "rotation": 0.0, "source": "manual", @@ -1873,217 +2024,1031 @@ "elements": [], "frame": 0, "group": 0, - "id": 547, + "id": 660, "label_id": 63, "occluded": false, "outside": false, "points": [ - 227.02, - 88.24, - 223.74, - 155.63, - 297.02, - 156.94, - 299.64, - 84.97, - 261.04, - 128.81 + 310.76, + 196.2, + 339.55, + 228.91 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 4 + }, + { + "attributes": [ + { + "spec_id": 13, + "value": "false" + } + ], + "elements": [], + "frame": 0, + "group": 0, + "id": 658, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 618.23, + 215.13, + 688.33, + 284.53, + 690.25, + 278.64, + 626.1, + 206.7 ], "rotation": 0.0, "source": "manual", "type": "polygon", - "z_order": 0 + "z_order": 3 }, { "attributes": [], "elements": [], "frame": 0, - "group": 5, - "id": 566, + "group": 16, + "id": 648, "label_id": 63, "occluded": false, "outside": false, "points": [ - 21.0, - 5.0, - 32.0, - 10.0, - 30.0, - 12.0, - 27.0, - 15.0, - 25.0, - 17.0, - 23.0, - 19.0, - 21.0, - 21.0, - 19.0, - 23.0, - 17.0, - 25.0, - 14.0, - 28.0, - 12.0, - 30.0, - 10.0, - 31.0, - 9.0, - 33.0, - 8.0, - 34.0, - 6.0, - 36.0, - 5.0, - 36.0, - 5.0, - 36.0, - 4.0, - 38.0, - 2.0, - 39.0, - 2.0, - 326.0, - 2.0, - 38.0, - 3.0, - 38.0, - 3.0, - 37.0, - 5.0, - 35.0, - 6.0, - 34.0, - 8.0, - 31.0, - 10.0, - 29.0, - 13.0, - 26.0, - 16.0, - 23.0, - 19.0, - 21.0, - 21.0, - 18.0, - 24.0, - 15.0, - 27.0, - 13.0, - 29.0, - 9.0, - 22.0, - 627.0, - 244.0, - 667.0, - 284.0 + 179.94, + 46.08, + 206.0, + 72.8 ], "rotation": 0.0, "source": "manual", - "type": "mask", - "z_order": 0 + "type": "rectangle", + "z_order": 1 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 17, + "id": 663, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 60.83, + 302.19 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 4 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 12, + "id": 650, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 147.85, + 17.61, + 170.15, + 39.87 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 1 }, { "attributes": [], "elements": [], "frame": 0, "group": 0, - "id": 546, - "label_id": 64, + "id": 666, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 455.36, - 88.24, - 463.21, - 158.9, - 545.65, - 155.63, - 536.49, - 84.97 + 138.0, + 339.5, + 155.0, + 338.8 ], "rotation": 0.0, "source": "manual", - "type": "polygon", - "z_order": 0 + "type": "points", + "z_order": 4 }, { "attributes": [], "elements": [], "frame": 0, - "group": 5, - "id": 565, + "group": 0, + "id": 668, "label_id": 63, "occluded": false, "outside": false, "points": [ - 672.58, - 219.1, - 692.21, - 239.38, - 671.27, - 257.7, - 655.57, - 239.38 + 101.39, + 200.78, + 135.42, + 214.52, + 117.75, + 248.54, + 85.04, + 235.46, + 73.26, + 204.05 ], "rotation": 0.0, "source": "manual", "type": "polygon", - "z_order": 0 + "z_order": 4 }, { "attributes": [], "elements": [], "frame": 0, "group": 0, - "id": 564, + "id": 645, "label_id": 63, "occluded": false, "outside": false, "points": [ - 527.0, - 319.6, - 530.3, - 372.6, - 500.83, - 375.21, - 502.79, - 319.6 + 673.2, + 222.4, + 693.52, + 240.04, + 647.8, + 287.2, + 620.89, + 266.86 ], "rotation": 0.0, "source": "manual", "type": "polygon", - "z_order": 0 + "z_order": 1 }, { "attributes": [], "elements": [], - "frame": 1, - "group": 0, - "id": 576, + "frame": 0, + "group": 16, + "id": 649, "label_id": 63, "occluded": false, "outside": false, "points": [ - 45.0, - 8.0, - 64.0, - 5.0, - 7.0, - 11.0, - 61.0, - 7.0, - 5.0, - 14.0, - 58.0, - 9.0, - 3.0, - 16.0, - 56.0, - 11.0, - 2.0, - 18.0, - 54.0, + 113.8, + 45.4, + 137.38, + 69.0 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 1 + }, + { + "attributes": [ + { + "spec_id": 13, + "value": "false" + } + ], + "elements": [], + "frame": 0, + "group": 0, + "id": 659, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 532.6, + 300.2, + 533.2, + 391.8, + 678.47, + 393.14, + 639.87, + 300.88 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 4 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 657, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 502.5, + 319.9, + 635.3, + 319.9, + 651.0, + 374.7, + 499.9, + 375.5 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 3 + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "28": { + "shapes": [ + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 3, + "id": 615, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 643.8, + 12.35, + 671.9, + 43.8 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 4, + "id": 619, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 181.22, + 47.68, + 205.42, + 73.85 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 608, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 362.45, + 298.92, + 345.44, + 317.24, + 368.99, + 315.93 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 2, + "id": 611, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 180.56, + 19.54, + 202.14, + 41.77 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 4, + "id": 618, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 147.85, + 47.02, + 172.06, + 72.54 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 2, + "id": 612, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 213.28, + 18.23, + 236.82, + 44.37 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 3, + "id": 616, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 681.09, + 14.31, + 711.8, + 43.8 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [ + { + "spec_id": 13, + "value": "false" + } + ], + "elements": [], + "frame": 0, + "group": 0, + "id": 670, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 349.36595443747683, + 35.89987909780575, + 377.50004176706534, + 64.68824752808177 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 606, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 419.37, + 260.32, + 436.39, + 259.01, + 448.82, + 258.36, + 463.87, + 258.36 + ], + "rotation": 0.0, + "source": "manual", + "type": "polyline", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 4, + "id": 620, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 213.28, + 47.68, + 238.14, + 73.85 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 3, + "id": 614, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 603.9, + 13.65, + 632.01, + 43.1 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 617, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 112.52, + 47.02, + 138.03, + 69.92 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 629, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 225.0, + 315.2 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 7, + "id": 624, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 37.27, + 267.52, + 83.07, + 328.36 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 7, + "id": 626, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 64.75, + 302.19 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 7, + "id": 627, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 47.74, + 309.39 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 1, + "id": 610, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 147.85, + 18.89, + 170.06, + 42.41 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 1, + "id": 609, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 113.83, + 18.23, + 136.07, + 40.5 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 7, + "id": 625, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 46.43, + 290.42 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [ + { + "spec_id": 13, + "value": "false" + } + ], + "elements": [], + "frame": 0, + "group": 0, + "id": 603, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 455.36, + 88.24, + 463.21, + 158.9, + 545.65, + 155.63, + 536.49, + 84.97 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 5, + "id": 622, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 672.58, + 219.1, + 692.21, + 239.38, + 671.27, + 257.7, + 655.57, + 239.38 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 5, + "id": 623, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 21.0, + 5.0, + 32.0, + 10.0, + 30.0, + 12.0, + 27.0, + 15.0, + 25.0, + 17.0, + 23.0, + 19.0, + 21.0, + 21.0, + 19.0, + 23.0, + 17.0, + 25.0, + 14.0, + 28.0, + 12.0, + 30.0, + 10.0, + 31.0, + 9.0, + 33.0, + 8.0, + 34.0, + 6.0, + 36.0, + 5.0, + 36.0, + 5.0, + 36.0, + 4.0, + 38.0, + 2.0, + 39.0, + 2.0, + 326.0, + 2.0, + 38.0, + 3.0, + 38.0, + 3.0, + 37.0, + 5.0, + 35.0, + 6.0, + 34.0, + 8.0, + 31.0, + 10.0, + 29.0, + 13.0, + 26.0, + 16.0, + 23.0, + 19.0, + 21.0, + 21.0, + 18.0, + 24.0, + 15.0, + 27.0, + 13.0, + 29.0, + 9.0, + 22.0, + 627.0, + 244.0, + 667.0, + 284.0 + ], + "rotation": 0.0, + "source": "manual", + "type": "mask", + "z_order": 0 + }, + { + "attributes": [ + { + "spec_id": 13, + "value": "false" + } + ], + "elements": [], + "frame": 0, + "group": 0, + "id": 628, + "label_id": 64, + "occluded": false, + "outside": false, + "points": [ + 140.7, + 338.8 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 605, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 284.59, + 248.54, + 264.96, + 261.63, + 242.72, + 251.16, + 219.16, + 270.79 + ], + "rotation": 0.0, + "source": "manual", + "type": "polyline", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 604, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 227.02, + 88.24, + 223.74, + 155.63, + 297.02, + 156.94, + 299.64, + 84.97, + 261.04, + 128.81 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 621, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 527.0, + 319.6, + 530.3, + 372.6, + 500.83, + 375.21, + 502.79, + 319.6 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 607, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 107.28, + 91.51, + 152.43, + 154.32 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 3, + "id": 613, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 567.9, + 14.31, + 595.37, + 43.8 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 1, + "group": 0, + "id": 630, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 213.08, + 27.58, + 242.67, + 54.96, + 220.48, + 73.46, + 182.0, + 63.1, + 165.72, + 25.36 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 1, + "group": 0, + "id": 635, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 393.61, + 109.71, + 417.29, + 139.31, + 432.09, + 123.03, + 461.68, + 140.05 + ], + "rotation": 0.0, + "source": "manual", + "type": "polyline", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 1, + "group": 0, + "id": 632, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 503.86, + 51.36, + 503.86, + 95.65, + 574.15, + 51.26, + 574.15, + 95.65, + 581.18, + 46.92, + 581.18, + 91.11, + 510.89, + 46.92, + 510.89, + 91.11 + ], + "rotation": 0.0, + "source": "manual", + "type": "cuboid", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 1, + "group": 0, + "id": 633, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 45.0, + 8.0, + 64.0, + 5.0, + 7.0, + 11.0, + 61.0, + 7.0, + 5.0, + 14.0, + 58.0, + 9.0, + 3.0, + 16.0, + 56.0, + 11.0, + 2.0, + 18.0, + 54.0, 11.0, 2.0, 20.0, @@ -2363,43 +3328,353 @@ ], "rotation": 0.0, "source": "manual", - "type": "mask", + "type": "mask", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 1, + "group": 0, + "id": 634, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 276.71, + 105.27, + 301.12, + 121.55, + 273.75, + 137.09, + 252.29, + 122.29 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 1, + "group": 0, + "id": 636, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 420.99, + 33.5, + 450.58, + 62.36 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 1, + "group": 0, + "id": 631, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 359.22, + 57.54, + 381.79, + 37.93 + ], + "rotation": 0.0, + "source": "manual", + "type": "ellipse", + "z_order": 0 + } + ], + "tags": [ + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 230, + "label_id": 63, + "source": "manual" + }, + { + "attributes": [], + "frame": 1, + "group": 0, + "id": 231, + "label_id": 63, + "source": "manual" + } + ], + "tracks": [], + "version": 0 + } + }, + "task": { + "2": { + "shapes": [ + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 1, + "label_id": 3, + "occluded": false, + "outside": false, + "points": [ + 223.39453125, + 226.0751953125, + 513.7663269042969, + 377.9619903564453 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 1, + "group": 0, + "id": 2, + "label_id": 3, + "occluded": false, + "outside": false, + "points": [ + 63.0791015625, + 139.75390625, + 132.19337349397574, + 112.3867469879533, + 189.71144578313397, + 159.23614457831354, + 191.1030120481937, + 246.9048192771097, + 86.73554216867524, + 335.5012048192784, + 32.00060240964012, + 250.15180722891637 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 1, + "group": 0, + "id": 3, + "label_id": 4, + "occluded": false, + "outside": false, + "points": [ + 83.0244140625, + 216.75390625, + 112.24759036144678, + 162.48313253012202, + 167.44638554216908, + 183.35662650602535, + 149.35602409638705, + 252.0072289156633, + 84.41626506024113, + 292.8265060240974, + 72.81987951807241, + 258.9650602409638 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 2, + "group": 0, + "id": 4, + "label_id": 3, + "occluded": false, + "outside": false, + "points": [ + 24.443359375, + 107.2275390625, + 84.91109877913368, + 61.125083240844106, + 169.4316315205324, + 75.1561598224198, + 226.5581576026634, + 113.90865704772477, + 240.5892341842391, + 205.77880133185317, + 210.52264150943483, + 270.9230854605994 + ], + "rotation": 0.0, + "source": "manual", + "type": "polyline", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 22, + "group": 0, + "id": 5, + "label_id": 3, + "occluded": false, + "outside": false, + "points": [ + 148.94921875, + 285.6865234375, + 313.515094339622, + 400.32830188679145, + 217.36415094339463, + 585.2339622641503, + 64.81698113207494, + 499.25283018867776 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "5": { + "shapes": [ + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 29, + "label_id": 9, + "occluded": false, + "outside": false, + "points": [ + 364.0361328125, + 528.87890625, + 609.5286041189956, + 586.544622425632, + 835.2494279176244, + 360.0000000000018, + 543.6247139588122, + 175.4691075514893, + 326.9656750572103, + 192.76887871853796, + 244.58581235698148, + 319.63386727689067 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 0 + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "6": { + "shapes": [], + "tags": [], + "tracks": [], + "version": 0 + }, + "7": { + "shapes": [ + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 27, + "label_id": 11, + "occluded": false, + "outside": false, + "points": [ + 448.3779296875, + 356.4892578125, + 438.2558352402775, + 761.3861556064112, + 744.1780320366161, + 319.37356979405195, + 446.1288329519466, + 163.03832951945333 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", "z_order": 0 - }, + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "8": { + "shapes": [ { "attributes": [], "elements": [], - "frame": 1, + "frame": 0, "group": 0, - "id": 574, - "label_id": 63, + "id": 30, + "label_id": 13, "occluded": false, "outside": false, "points": [ - 359.22, - 57.54, - 381.79, - 37.93 + 440.0439453125, + 84.0791015625, + 71.83311938382576, + 249.81514762516053, + 380.4441591784325, + 526.585365853658, + 677.6251604621302, + 260.42875481386363, + 629.4557124518615, + 127.35044929396645 ], "rotation": 0.0, "source": "manual", - "type": "ellipse", + "type": "polygon", "z_order": 0 - }, + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "9": { + "shapes": [ { "attributes": [], "elements": [], - "frame": 1, + "frame": 0, "group": 0, - "id": 579, - "label_id": 63, + "id": 31, + "label_id": 6, "occluded": false, "outside": false, "points": [ - 420.99, - 33.5, - 450.58, - 62.36 + 65.6189987163034, + 100.96585365853753, + 142.12734274711147, + 362.6243902439037 ], "rotation": 0.0, "source": "manual", @@ -2409,59 +3684,106 @@ { "attributes": [], "elements": [], - "frame": 1, + "frame": 15, "group": 0, - "id": 575, - "label_id": 63, + "id": 41, + "label_id": 6, "occluded": false, "outside": false, "points": [ - 503.86, - 51.36, - 503.86, - 95.65, - 574.15, - 51.26, - 574.15, - 95.65, - 581.18, - 46.92, - 581.18, - 91.11, - 510.89, - 46.92, - 510.89, - 91.11 + 53.062929061787145, + 301.6390160183091, + 197.94851258581548, + 763.3266590389048 ], "rotation": 0.0, "source": "manual", - "type": "cuboid", + "type": "rectangle", "z_order": 0 }, + { + "attributes": [ + { + "spec_id": 1, + "value": "mazda" + } + ], + "elements": [], + "frame": 16, + "group": 0, + "id": 42, + "label_id": 5, + "occluded": false, + "outside": false, + "points": [ + 172.0810546875, + 105.990234375, + 285.97262095255974, + 138.40000000000146 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "11": { + "shapes": [ { "attributes": [], "elements": [], - "frame": 1, + "frame": 0, "group": 0, - "id": 573, - "label_id": 63, + "id": 33, + "label_id": 7, "occluded": false, "outside": false, "points": [ - 213.08, - 27.58, - 242.67, - 54.96, - 220.48, - 73.46, - 182.0, - 63.1, - 165.72, - 25.36 + 100.14453125, + 246.03515625, + 408.8692551505537, + 327.5483359746413, + 588.5839936608554, + 289.0380348652925, + 623.8851030110927, + 183.77654516640177, + 329.2812995245622, + 71.45483359746322 ], "rotation": 0.0, "source": "manual", - "type": "polygon", + "type": "polyline", + "z_order": 0 + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "13": { + "shapes": [ + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 34, + "label_id": 16, + "occluded": false, + "outside": false, + "points": [ + 106.361328125, + 85.150390625, + 240.083984375, + 241.263671875 + ], + "rotation": 45.9, + "source": "manual", + "type": "rectangle", "z_order": 0 }, { @@ -2469,89 +3791,346 @@ "elements": [], "frame": 1, "group": 0, - "id": 578, - "label_id": 63, + "id": 35, + "label_id": 16, "occluded": false, "outside": false, "points": [ - 393.61, - 109.71, - 417.29, - 139.31, - 432.09, - 123.03, - 461.68, - 140.05 + 414.29522752496996, + 124.8035516093205, + 522.2641509433943, + 286.75693673695605 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + } + ], + "tags": [ + { + "attributes": [], + "frame": 2, + "group": 0, + "id": 1, + "label_id": 17, + "source": "manual" + }, + { + "attributes": [], + "frame": 3, + "group": 0, + "id": 2, + "label_id": 16, + "source": "manual" + } + ], + "tracks": [], + "version": 0 + }, + "14": { + "shapes": [ + { + "attributes": [ + { + "spec_id": 2, + "value": "white" + } + ], + "elements": [ + { + "attributes": [ + { + "spec_id": 3, + "value": "val1" + } + ], + "frame": 0, + "group": 0, + "id": 39, + "label_id": 25, + "occluded": false, + "outside": false, + "points": [ + 259.91862203681984, + 67.8260869565238 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 40, + "label_id": 26, + "occluded": false, + "outside": false, + "points": [ + 283.65217391304554, + 276.52173913043686 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 37, + "label_id": 23, + "occluded": false, + "outside": false, + "points": [ + 135.8260869565238, + 118.10276296228554 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 38, + "label_id": 24, + "occluded": false, + "outside": false, + "points": [ + 172.10450871201368, + 274.6245183225243 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + } ], - "rotation": 0.0, - "source": "manual", - "type": "polyline", - "z_order": 0 - }, - { - "attributes": [], - "elements": [], - "frame": 1, + "frame": 0, "group": 0, - "id": 577, - "label_id": 63, + "id": 36, + "label_id": 22, "occluded": false, "outside": false, - "points": [ - 276.71, - 105.27, - 301.12, - 121.55, - 273.75, - 137.09, - 252.29, - 122.29 - ], + "points": [], "rotation": 0.0, "source": "manual", - "type": "points", + "type": "skeleton", "z_order": 0 } ], - "tags": [ + "tags": [], + "tracks": [ { - "attributes": [], + "attributes": [ + { + "spec_id": 2, + "value": "white" + } + ], + "elements": [ + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 2, + "label_id": 23, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 2, + "occluded": false, + "outside": false, + "points": [ + 381.9130434782637, + 355.0592829431864 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 3, + "id": 6, + "occluded": false, + "outside": false, + "points": [ + 137.0966796875, + 156.11214469590232 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 3, + "label_id": 24, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 3, + "occluded": false, + "outside": false, + "points": [ + 461.9389738212561, + 583.320176176868 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 3, + "id": 7, + "occluded": false, + "outside": false, + "points": [ + 217.12261003049207, + 384.3730379295848 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [ + { + "spec_id": 3, + "value": "val1" + } + ], + "frame": 0, + "group": 0, + "id": 4, + "label_id": 25, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 4, + "occluded": false, + "outside": false, + "points": [ + 655.6465767436227, + 281.7391304347839 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 3, + "id": 8, + "occluded": false, + "outside": false, + "points": [ + 410.83021295285835, + 82.7919921875 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 5, + "label_id": 26, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 5, + "occluded": false, + "outside": false, + "points": [ + 708.000000000003, + 586.0869565217404 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 3, + "id": 9, + "occluded": false, + "outside": false, + "points": [ + 463.1836362092399, + 387.13981827445605 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + } + ], "frame": 0, "group": 0, - "id": 228, - "label_id": 63, - "source": "manual" - }, - { - "attributes": [], - "frame": 1, - "group": 0, - "id": 229, - "label_id": 63, + "id": 1, + "label_id": 22, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 1, + "occluded": false, + "outside": false, + "points": [], + "rotation": 0.0, + "type": "skeleton", + "z_order": 0 + } + ], "source": "manual" } ], - "tracks": [], "version": 0 - } - }, - "task": { - "2": { + }, + "15": { "shapes": [ { "attributes": [], "elements": [], "frame": 0, "group": 0, - "id": 1, - "label_id": 3, + "id": 44, + "label_id": 29, "occluded": false, "outside": false, "points": [ - 223.39453125, - 226.0751953125, - 513.7663269042969, - 377.9619903564453 + 479.97322623828586, + 408.0053547523421, + 942.6238286479238, + 513.3868808567604 ], "rotation": 0.0, "source": "manual", @@ -2561,214 +4140,176 @@ { "attributes": [], "elements": [], - "frame": 1, + "frame": 0, "group": 0, - "id": 2, - "label_id": 3, + "id": 43, + "label_id": 30, "occluded": false, "outside": false, "points": [ - 63.0791015625, - 139.75390625, - 132.19337349397574, - 112.3867469879533, - 189.71144578313397, - 159.23614457831354, - 191.1030120481937, - 246.9048192771097, - 86.73554216867524, - 335.5012048192784, - 32.00060240964012, - 250.15180722891637 + 120.81927710843593, + 213.52074966532928, + 258.7576974564945, + 643.614457831327 ], "rotation": 0.0, "source": "manual", - "type": "polygon", + "type": "rectangle", "z_order": 0 - }, + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "17": { + "shapes": [ { "attributes": [], "elements": [], - "frame": 1, + "frame": 0, "group": 0, - "id": 3, - "label_id": 4, + "id": 47, + "label_id": 38, "occluded": false, "outside": false, "points": [ - 83.0244140625, - 216.75390625, - 112.24759036144678, - 162.48313253012202, - 167.44638554216908, - 183.35662650602535, - 149.35602409638705, - 252.0072289156633, - 84.41626506024113, - 292.8265060240974, - 72.81987951807241, - 258.9650602409638 + 106.361328125, + 85.150390625, + 240.083984375, + 241.263671875 ], - "rotation": 0.0, + "rotation": 45.9, "source": "manual", - "type": "polygon", + "type": "rectangle", "z_order": 0 }, { "attributes": [], "elements": [], - "frame": 2, + "frame": 1, "group": 0, - "id": 4, - "label_id": 3, + "id": 48, + "label_id": 38, "occluded": false, "outside": false, "points": [ - 24.443359375, - 107.2275390625, - 84.91109877913368, - 61.125083240844106, - 169.4316315205324, - 75.1561598224198, - 226.5581576026634, - 113.90865704772477, - 240.5892341842391, - 205.77880133185317, - 210.52264150943483, - 270.9230854605994 + 414.29522752496996, + 124.8035516093205, + 522.2641509433943, + 286.75693673695605 ], "rotation": 0.0, "source": "manual", - "type": "polyline", + "type": "rectangle", "z_order": 0 - }, + } + ], + "tags": [ { "attributes": [], - "elements": [], - "frame": 22, + "frame": 2, "group": 0, "id": 5, - "label_id": 3, - "occluded": false, - "outside": false, - "points": [ - 148.94921875, - 285.6865234375, - 313.515094339622, - 400.32830188679145, - 217.36415094339463, - 585.2339622641503, - 64.81698113207494, - 499.25283018867776 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "5": { - "shapes": [ + "label_id": 39, + "source": "manual" + }, { "attributes": [], - "elements": [], - "frame": 0, + "frame": 3, "group": 0, - "id": 29, - "label_id": 9, - "occluded": false, - "outside": false, - "points": [ - 364.0361328125, - 528.87890625, - 609.5286041189956, - 586.544622425632, - 835.2494279176244, - 360.0000000000018, - 543.6247139588122, - 175.4691075514893, - 326.9656750572103, - 192.76887871853796, - 244.58581235698148, - 319.63386727689067 - ], - "rotation": 0.0, - "source": "manual", - "type": "polygon", - "z_order": 0 + "id": 6, + "label_id": 38, + "source": "manual" } ], - "tags": [], - "tracks": [], - "version": 0 - }, - "6": { - "shapes": [], - "tags": [], "tracks": [], "version": 0 }, - "7": { + "18": { "shapes": [ { "attributes": [], - "elements": [], - "frame": 0, - "group": 0, - "id": 27, - "label_id": 11, - "occluded": false, - "outside": false, - "points": [ - 448.3779296875, - 356.4892578125, - 438.2558352402775, - 761.3861556064112, - 744.1780320366161, - 319.37356979405195, - 446.1288329519466, - 163.03832951945333 + "elements": [ + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 52, + "label_id": 49, + "occluded": false, + "outside": false, + "points": [ + 326.2062528608664, + 107.42983682983868 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 50, + "label_id": 47, + "occluded": false, + "outside": false, + "points": [ + 136.46993006993034, + 138.72697241590762 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 51, + "label_id": 48, + "occluded": false, + "outside": false, + "points": [ + 192.9001336620433, + 421.9659673659692 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 53, + "label_id": 50, + "occluded": false, + "outside": false, + "points": [ + 412.07832167832197, + 337.46374412038085 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + } ], - "rotation": 0.0, - "source": "manual", - "type": "polygon", - "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "8": { - "shapes": [ - { - "attributes": [], - "elements": [], "frame": 0, "group": 0, - "id": 30, - "label_id": 13, + "id": 49, + "label_id": 46, "occluded": false, "outside": false, - "points": [ - 440.0439453125, - 84.0791015625, - 71.83311938382576, - 249.81514762516053, - 380.4441591784325, - 526.585365853658, - 677.6251604621302, - 260.42875481386363, - 629.4557124518615, - 127.35044929396645 - ], + "points": [], "rotation": 0.0, "source": "manual", - "type": "polygon", + "type": "skeleton", "z_order": 0 } ], @@ -2776,42 +4317,27 @@ "tracks": [], "version": 0 }, - "9": { + "19": { "shapes": [ { - "attributes": [], - "elements": [], - "frame": 0, - "group": 0, - "id": 31, - "label_id": 6, - "occluded": false, - "outside": false, - "points": [ - 65.6189987163034, - 100.96585365853753, - 142.12734274711147, - 362.6243902439037 + "attributes": [ + { + "spec_id": 7, + "value": "non-default" + } ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 0 - }, - { - "attributes": [], "elements": [], - "frame": 15, + "frame": 0, "group": 0, - "id": 41, - "label_id": 6, + "id": 54, + "label_id": 51, "occluded": false, "outside": false, "points": [ - 53.062929061787145, - 301.6390160183091, - 197.94851258581548, - 763.3266590389048 + 244.32906271072352, + 57.53054619015711, + 340.34389750505943, + 191.28914362778414 ], "rotation": 0.0, "source": "manual", @@ -2821,22 +4347,22 @@ { "attributes": [ { - "spec_id": 1, - "value": "mazda" + "spec_id": 8, + "value": "black" } ], "elements": [], - "frame": 16, + "frame": 0, "group": 0, - "id": 42, - "label_id": 5, + "id": 55, + "label_id": 52, "occluded": false, "outside": false, "points": [ - 172.0810546875, - 105.990234375, - 285.97262095255974, - 138.40000000000146 + 424.4396493594086, + 86.6660822656795, + 664.8078219824692, + 251.54672960215976 ], "rotation": 0.0, "source": "manual", @@ -2848,75 +4374,52 @@ "tracks": [], "version": 0 }, - "11": { + "20": { "shapes": [ { - "attributes": [], - "elements": [], - "frame": 0, - "group": 0, - "id": 33, - "label_id": 7, - "occluded": false, - "outside": false, - "points": [ - 100.14453125, - 246.03515625, - 408.8692551505537, - 327.5483359746413, - 588.5839936608554, - 289.0380348652925, - 623.8851030110927, - 183.77654516640177, - 329.2812995245622, - 71.45483359746322 + "attributes": [ + { + "spec_id": 9, + "value": "non-default" + } ], - "rotation": 0.0, - "source": "manual", - "type": "polyline", - "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "13": { - "shapes": [ - { - "attributes": [], "elements": [], "frame": 0, "group": 0, - "id": 34, - "label_id": 16, + "id": 56, + "label_id": 53, "occluded": false, "outside": false, "points": [ - 106.361328125, - 85.150390625, - 240.083984375, - 241.263671875 + 35.913636363637124, + 80.58636363636288, + 94.8227272727272, + 170.58636363636288 ], - "rotation": 45.9, + "rotation": 0.0, "source": "manual", "type": "rectangle", "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 10, + "value": "black" + } + ], "elements": [], - "frame": 1, + "frame": 0, "group": 0, - "id": 35, - "label_id": 16, + "id": 57, + "label_id": 54, "occluded": false, "outside": false, "points": [ - 414.29522752496996, - 124.8035516093205, - 522.2641509433943, - 286.75693673695605 + 190.95909090909117, + 100.22272727272684, + 297.7318181818191, + 209.8590909090908 ], "rotation": 0.0, "source": "manual", @@ -2924,53 +4427,26 @@ "z_order": 0 } ], - "tags": [ - { - "attributes": [], - "frame": 2, - "group": 0, - "id": 1, - "label_id": 17, - "source": "manual" - }, - { - "attributes": [], - "frame": 3, - "group": 0, - "id": 2, - "label_id": 16, - "source": "manual" - } - ], + "tags": [], "tracks": [], "version": 0 }, - "14": { + "21": { "shapes": [ { - "attributes": [ - { - "spec_id": 2, - "value": "white" - } - ], + "attributes": [], "elements": [ { - "attributes": [ - { - "spec_id": 3, - "value": "val1" - } - ], - "frame": 0, + "attributes": [], + "frame": 6, "group": 0, - "id": 39, - "label_id": 25, + "id": 62, + "label_id": 61, "occluded": false, "outside": false, "points": [ - 259.91862203681984, - 67.8260869565238 + 155.7276059652392, + 30.260833689097126 ], "rotation": 0.0, "source": "manual", @@ -2979,15 +4455,15 @@ }, { "attributes": [], - "frame": 0, + "frame": 6, "group": 0, - "id": 40, - "label_id": 26, + "id": 60, + "label_id": 59, "occluded": false, "outside": false, "points": [ - 283.65217391304554, - 276.52173913043686 + 103.73647295885894, + 51.085564225393554 ], "rotation": 0.0, "source": "manual", @@ -2996,15 +4472,15 @@ }, { "attributes": [], - "frame": 0, + "frame": 6, "group": 0, - "id": 37, - "label_id": 23, + "id": 61, + "label_id": 60, "occluded": false, "outside": false, "points": [ - 135.8260869565238, - 118.10276296228554 + 125.86783527366472, + 101.86367376801435 ], "rotation": 0.0, "source": "manual", @@ -3013,15 +4489,15 @@ }, { "attributes": [], - "frame": 0, + "frame": 6, "group": 0, - "id": 38, - "label_id": 24, + "id": 63, + "label_id": 62, "occluded": false, "outside": false, "points": [ - 172.10450871201368, - 274.6245183225243 + 199.28775272671066, + 114.13029555429613 ], "rotation": 0.0, "source": "manual", @@ -3029,10 +4505,10 @@ "z_order": 0 } ], - "frame": 0, + "frame": 6, "group": 0, - "id": 36, - "label_id": 22, + "id": 59, + "label_id": 58, "occluded": false, "outside": false, "points": [], @@ -3040,34 +4516,49 @@ "source": "manual", "type": "skeleton", "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 6, + "group": 0, + "id": 58, + "label_id": 57, + "occluded": false, + "outside": false, + "points": [ + 42.63157931421483, + 51.228199155397306, + 106.13274329786509, + 138.0929989443539 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 } ], "tags": [], "tracks": [ { - "attributes": [ - { - "spec_id": 2, - "value": "white" - } - ], + "attributes": [], "elements": [ { "attributes": [], "frame": 0, "group": 0, - "id": 2, - "label_id": 23, + "id": 7, + "label_id": 59, "shapes": [ { "attributes": [], "frame": 0, - "id": 2, + "id": 11, "occluded": false, - "outside": false, + "outside": true, "points": [ - 381.9130434782637, - 355.0592829431864 + 230.39103314621025, + 149.98846070356873 ], "rotation": 0.0, "type": "points", @@ -3076,12 +4567,26 @@ { "attributes": [], "frame": 3, - "id": 6, + "id": 12, "occluded": false, "outside": false, "points": [ - 137.0966796875, - 156.11214469590232 + 230.39103314621025, + 149.98846070356873 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 6, + "id": 12, + "occluded": false, + "outside": true, + "points": [ + 230.39103314621025, + 149.98846070356873 ], "rotation": 0.0, "type": "points", @@ -3094,18 +4599,18 @@ "attributes": [], "frame": 0, "group": 0, - "id": 3, - "label_id": 24, + "id": 8, + "label_id": 60, "shapes": [ { "attributes": [], "frame": 0, - "id": 3, + "id": 13, "occluded": false, "outside": false, "points": [ - 461.9389738212561, - 583.320176176868 + 292.80597636674844, + 284.1818841927473 ], "rotation": 0.0, "type": "points", @@ -3113,13 +4618,13 @@ }, { "attributes": [], - "frame": 3, - "id": 7, + "frame": 6, + "id": 13, "occluded": false, - "outside": false, + "outside": true, "points": [ - 217.12261003049207, - 384.3730379295848 + 292.80597636674844, + 284.1818841927473 ], "rotation": 0.0, "type": "points", @@ -3129,26 +4634,59 @@ "source": "manual" }, { - "attributes": [ + "attributes": [], + "frame": 0, + "group": 0, + "id": 9, + "label_id": 61, + "shapes": [ { - "spec_id": 3, - "value": "val1" + "attributes": [], + "frame": 0, + "id": 14, + "occluded": false, + "outside": false, + "points": [ + 377.016603158851, + 94.95407858346152 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + }, + { + "attributes": [], + "frame": 6, + "id": 14, + "occluded": false, + "outside": true, + "points": [ + 377.016603158851, + 94.95407858346152 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 } ], + "source": "manual" + }, + { + "attributes": [], "frame": 0, "group": 0, - "id": 4, - "label_id": 25, + "id": 10, + "label_id": 62, "shapes": [ { "attributes": [], "frame": 0, - "id": 4, + "id": 15, "occluded": false, "outside": false, "points": [ - 655.6465767436227, - 281.7391304347839 + 499.86507710826913, + 316.59939612801213 ], "rotation": 0.0, "type": "points", @@ -3156,13 +4694,71 @@ }, { "attributes": [], - "frame": 3, - "id": 8, + "frame": 6, + "id": 15, + "occluded": false, + "outside": true, + "points": [ + 499.86507710826913, + 316.59939612801213 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + } + ], + "frame": 0, + "group": 0, + "id": 6, + "label_id": 58, + "shapes": [ + { + "attributes": [], + "frame": 0, + "id": 10, + "occluded": false, + "outside": false, + "points": [], + "rotation": 0.0, + "type": "skeleton", + "z_order": 0 + }, + { + "attributes": [], + "frame": 6, + "id": 10, + "occluded": false, + "outside": true, + "points": [], + "rotation": 0.0, + "type": "skeleton", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "elements": [ + { + "attributes": [], + "frame": 6, + "group": 0, + "id": 12, + "label_id": 59, + "shapes": [ + { + "attributes": [], + "frame": 6, + "id": 17, "occluded": false, "outside": false, "points": [ - 410.83021295285835, - 82.7919921875 + 92.95325643333308, + 129.2954675940839 ], "rotation": 0.0, "type": "points", @@ -3173,34 +4769,68 @@ }, { "attributes": [], - "frame": 0, + "frame": 6, "group": 0, - "id": 5, - "label_id": 26, + "id": 13, + "label_id": 60, "shapes": [ { "attributes": [], - "frame": 0, - "id": 5, + "frame": 6, + "id": 18, "occluded": false, "outside": false, "points": [ - 708.000000000003, - 586.0869565217404 + 133.81649280769233, + 195.4883603907146 ], "rotation": 0.0, "type": "points", "z_order": 0 - }, + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 6, + "group": 0, + "id": 14, + "label_id": 61, + "shapes": [ + { + "attributes": [], + "frame": 6, + "id": 19, + "occluded": false, + "outside": false, + "points": [ + 188.94942364574058, + 102.14894385926891 + ], + "rotation": 0.0, + "type": "points", + "z_order": 0 + } + ], + "source": "manual" + }, + { + "attributes": [], + "frame": 6, + "group": 0, + "id": 15, + "label_id": 62, + "shapes": [ { "attributes": [], - "frame": 3, - "id": 9, + "frame": 6, + "id": 20, "occluded": false, "outside": false, "points": [ - 463.1836362092399, - 387.13981827445605 + 269.3786601426267, + 211.47877807640333 ], "rotation": 0.0, "type": "points", @@ -3210,15 +4840,15 @@ "source": "manual" } ], - "frame": 0, + "frame": 6, "group": 0, - "id": 1, - "label_id": 22, + "id": 11, + "label_id": 58, "shapes": [ { "attributes": [], - "frame": 0, - "id": 1, + "frame": 6, + "id": 16, "occluded": false, "outside": false, "points": [], @@ -3232,785 +4862,609 @@ ], "version": 0 }, - "15": { + "22": { "shapes": [ { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "true" + } + ], "elements": [], "frame": 0, "group": 0, - "id": 44, - "label_id": 29, + "id": 671, + "label_id": 64, "occluded": false, "outside": false, "points": [ - 479.97322623828586, - 408.0053547523421, - 942.6238286479238, - 513.3868808567604 + 349.3662109375, + 38.5166015625, + 376.846017166401, + 64.03356448933664 ], "rotation": 0.0, "source": "manual", "type": "rectangle", - "z_order": 0 + "z_order": 4 }, { "attributes": [], "elements": [], "frame": 0, - "group": 0, - "id": 43, - "label_id": 30, + "group": 17, + "id": 664, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 120.81927710843593, - 213.52074966532928, - 258.7576974564945, - 643.614457831327 + 34.66, + 268.17, + 75.22, + 324.44 ], "rotation": 0.0, "source": "manual", "type": "rectangle", - "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "17": { - "shapes": [ + "z_order": 4 + }, { "attributes": [], "elements": [], "frame": 0, - "group": 0, - "id": 47, - "label_id": 38, + "group": 16, + "id": 647, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 106.361328125, - 85.150390625, - 240.083984375, - 241.263671875 + 147.9, + 45.42, + 171.4, + 70.3 ], - "rotation": 45.9, + "rotation": 0.0, "source": "manual", "type": "rectangle", - "z_order": 0 + "z_order": 1 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "false" + } + ], "elements": [], - "frame": 1, - "group": 0, - "id": 48, - "label_id": 38, + "frame": 0, + "group": 17, + "id": 665, + "label_id": 64, "occluded": false, "outside": false, "points": [ - 414.29522752496996, - 124.8035516093205, - 522.2641509433943, - 286.75693673695605 + 50.36, + 283.87 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", - "z_order": 0 - } - ], - "tags": [ - { - "attributes": [], - "frame": 2, - "group": 0, - "id": 5, - "label_id": 39, - "source": "manual" + "type": "points", + "z_order": 4 }, { "attributes": [], - "frame": 3, - "group": 0, - "id": 6, - "label_id": 38, - "source": "manual" - } - ], - "tracks": [], - "version": 0 - }, - "18": { - "shapes": [ - { - "attributes": [], - "elements": [ - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 52, - "label_id": 49, - "occluded": false, - "outside": false, - "points": [ - 326.2062528608664, - 107.42983682983868 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 50, - "label_id": 47, - "occluded": false, - "outside": false, - "points": [ - 136.46993006993034, - 138.72697241590762 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 51, - "label_id": 48, - "occluded": false, - "outside": false, - "points": [ - 192.9001336620433, - 421.9659673659692 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 53, - "label_id": 50, - "occluded": false, - "outside": false, - "points": [ - 412.07832167832197, - 337.46374412038085 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - } - ], + "elements": [], "frame": 0, "group": 0, - "id": 49, - "label_id": 46, + "id": 667, + "label_id": 63, "occluded": false, "outside": false, - "points": [], + "points": [ + 43.16, + 178.53, + 59.52, + 190.96, + 71.3, + 177.22, + 100.08, + 167.41 + ], "rotation": 0.0, "source": "manual", - "type": "skeleton", - "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "19": { - "shapes": [ + "type": "polyline", + "z_order": 4 + }, { "attributes": [ { - "spec_id": 7, - "value": "non-default" + "spec_id": 13, + "value": "false" } ], "elements": [], "frame": 0, "group": 0, - "id": 54, - "label_id": 51, + "id": 662, + "label_id": 64, "occluded": false, "outside": false, "points": [ - 244.32906271072352, - 57.53054619015711, - 340.34389750505943, - 191.28914362778414 + 225.71, + 314.62 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", - "z_order": 0 + "type": "points", + "z_order": 4 }, { - "attributes": [ - { - "spec_id": 8, - "value": "black" - } - ], + "attributes": [], "elements": [], "frame": 0, - "group": 0, - "id": 55, - "label_id": 52, + "group": 4, + "id": 640, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 424.4396493594086, - 86.6660822656795, - 664.8078219824692, - 251.54672960215976 + 210.0, + 274.06, + 240.1, + 258.35, + 267.1, + 266.4, + 278.7, + 261.63, + 281.32, + 253.78 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", - "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "20": { - "shapes": [ + "type": "polyline", + "z_order": 0 + }, { "attributes": [ { - "spec_id": 9, - "value": "non-default" + "spec_id": 13, + "value": "false" } ], "elements": [], "frame": 0, "group": 0, - "id": 56, - "label_id": 53, + "id": 644, + "label_id": 64, "occluded": false, "outside": false, "points": [ - 35.913636363637124, - 80.58636363636288, - 94.8227272727272, - 170.58636363636288 + 459.5, + 81.9, + 545.8, + 155.8 ], "rotation": 0.0, "source": "manual", "type": "rectangle", - "z_order": 0 + "z_order": 1 }, { - "attributes": [ - { - "spec_id": 10, - "value": "black" - } + "attributes": [], + "elements": [], + "frame": 0, + "group": 11, + "id": 655, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 681.09, + 13.0, + 711.3, + 43.2 ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 1 + }, + { + "attributes": [], "elements": [], "frame": 0, - "group": 0, - "id": 57, - "label_id": 54, + "group": 7, + "id": 651, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 190.95909090909117, - 100.22272727272684, - 297.7318181818191, - 209.8590909090908 + 113.8, + 17.6, + 138.65, + 40.47 ], "rotation": 0.0, "source": "manual", "type": "rectangle", - "z_order": 0 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "21": { - "shapes": [ + "z_order": 1 + }, { "attributes": [], - "elements": [ - { - "attributes": [], - "frame": 6, - "group": 0, - "id": 62, - "label_id": 61, - "occluded": false, - "outside": false, - "points": [ - 155.7276059652392, - 30.260833689097126 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 6, - "group": 0, - "id": 60, - "label_id": 59, - "occluded": false, - "outside": false, - "points": [ - 103.73647295885894, - 51.085564225393554 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 6, - "group": 0, - "id": 61, - "label_id": 60, - "occluded": false, - "outside": false, - "points": [ - 125.86783527366472, - 101.86367376801435 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 6, - "group": 0, - "id": 63, - "label_id": 62, - "occluded": false, - "outside": false, - "points": [ - 199.28775272671066, - 114.13029555429613 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 0 - } + "elements": [], + "frame": 0, + "group": 2, + "id": 642, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 37.0, + 25.0, + 49.0, + 32.0, + 23.0, + 59.0, + 19.0, + 61.0, + 17.0, + 63.0, + 15.0, + 65.0, + 14.0, + 66.0, + 12.0, + 68.0, + 11.0, + 69.0, + 10.0, + 70.0, + 9.0, + 70.0, + 9.0, + 70.0, + 9.0, + 70.0, + 9.0, + 71.0, + 8.0, + 71.0, + 8.0, + 72.0, + 7.0, + 72.0, + 7.0, + 72.0, + 7.0, + 72.0, + 7.0, + 72.0, + 7.0, + 73.0, + 6.0, + 73.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 5.0, + 74.0, + 4.0, + 75.0, + 4.0, + 75.0, + 4.0, + 75.0, + 3.0, + 76.0, + 3.0, + 76.0, + 3.0, + 77.0, + 2.0, + 77.0, + 2.0, + 77.0, + 2.0, + 77.0, + 2.0, + 77.0, + 2.0, + 77.0, + 1.0, + 1184.0, + 1.0, + 77.0, + 3.0, + 76.0, + 4.0, + 75.0, + 4.0, + 75.0, + 4.0, + 74.0, + 5.0, + 73.0, + 7.0, + 71.0, + 9.0, + 67.0, + 13.0, + 65.0, + 15.0, + 9.0, + 1.0, + 53.0, + 29.0, + 16.0, + 4.0, + 29.0, + 31.0, + 11.0, + 16.0, + 20.0, + 12.0, + 458.0, + 87.0, + 536.0, + 158.0 ], - "frame": 6, + "rotation": 0.0, + "source": "manual", + "type": "mask", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], + "frame": 0, "group": 0, - "id": 59, - "label_id": 58, + "id": 661, + "label_id": 63, "occluded": false, "outside": false, - "points": [], + "points": [ + 361.0, + 302.1, + 368.9, + 316.0, + 348.1, + 318.6 + ], "rotation": 0.0, "source": "manual", - "type": "skeleton", - "z_order": 0 + "type": "points", + "z_order": 4 }, { "attributes": [], "elements": [], - "frame": 6, - "group": 0, - "id": 58, - "label_id": 57, + "frame": 0, + "group": 12, + "id": 656, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 42.63157931421483, - 51.228199155397306, - 106.13274329786509, - 138.0929989443539 + 212.62, + 18.92, + 236.8, + 42.5 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 1 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 11, + "id": 653, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 603.9, + 13.65, + 632.67, + 42.4 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 1 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 11, + "id": 654, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 641.2, + 13.0, + 670.65, + 42.5 ], "rotation": 0.0, "source": "manual", "type": "rectangle", + "z_order": 1 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 6, + "id": 643, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 414.49, + 261.0, + 467.48, + 259.69 + ], + "rotation": 0.0, + "source": "manual", + "type": "polyline", "z_order": 0 - } - ], - "tags": [], - "tracks": [ + }, { "attributes": [], - "elements": [ - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 7, - "label_id": 59, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 11, - "occluded": false, - "outside": true, - "points": [ - 230.39103314621025, - 149.98846070356873 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 3, - "id": 12, - "occluded": false, - "outside": false, - "points": [ - 230.39103314621025, - 149.98846070356873 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 6, - "id": 12, - "occluded": false, - "outside": true, - "points": [ - 230.39103314621025, - 149.98846070356873 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 8, - "label_id": 60, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 13, - "occluded": false, - "outside": false, - "points": [ - 292.80597636674844, - 284.1818841927473 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 6, - "id": 13, - "occluded": false, - "outside": true, - "points": [ - 292.80597636674844, - 284.1818841927473 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 9, - "label_id": 61, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 14, - "occluded": false, - "outside": false, - "points": [ - 377.016603158851, - 94.95407858346152 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 6, - "id": 14, - "occluded": false, - "outside": true, - "points": [ - 377.016603158851, - 94.95407858346152 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 0, - "group": 0, - "id": 10, - "label_id": 62, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 15, - "occluded": false, - "outside": false, - "points": [ - 499.86507710826913, - 316.59939612801213 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - }, - { - "attributes": [], - "frame": 6, - "id": 15, - "occluded": false, - "outside": true, - "points": [ - 499.86507710826913, - 316.59939612801213 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - } + "elements": [], + "frame": 0, + "group": 3, + "id": 637, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 439.0, + 238.07, + 442.27, + 279.29 ], + "rotation": 0.0, + "source": "manual", + "type": "polyline", + "z_order": 0 + }, + { + "attributes": [], + "elements": [], "frame": 0, - "group": 0, - "id": 6, - "label_id": 58, - "shapes": [ - { - "attributes": [], - "frame": 0, - "id": 10, - "occluded": false, - "outside": false, - "points": [], - "rotation": 0.0, - "type": "skeleton", - "z_order": 0 - }, - { - "attributes": [], - "frame": 6, - "id": 10, - "occluded": false, - "outside": true, - "points": [], - "rotation": 0.0, - "type": "skeleton", - "z_order": 0 - } + "group": 1, + "id": 638, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 109.62, + 93.68, + 150.75, + 154.71 ], - "source": "manual" + "rotation": 118.4, + "source": "manual", + "type": "rectangle", + "z_order": 0 }, { "attributes": [], - "elements": [ - { - "attributes": [], - "frame": 6, - "group": 0, - "id": 12, - "label_id": 59, - "shapes": [ - { - "attributes": [], - "frame": 6, - "id": 17, - "occluded": false, - "outside": false, - "points": [ - 92.95325643333308, - 129.2954675940839 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 6, - "group": 0, - "id": 13, - "label_id": 60, - "shapes": [ - { - "attributes": [], - "frame": 6, - "id": 18, - "occluded": false, - "outside": false, - "points": [ - 133.81649280769233, - 195.4883603907146 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 6, - "group": 0, - "id": 14, - "label_id": 61, - "shapes": [ - { - "attributes": [], - "frame": 6, - "id": 19, - "occluded": false, - "outside": false, - "points": [ - 188.94942364574058, - 102.14894385926891 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - }, - { - "attributes": [], - "frame": 6, - "group": 0, - "id": 15, - "label_id": 62, - "shapes": [ - { - "attributes": [], - "frame": 6, - "id": 20, - "occluded": false, - "outside": false, - "points": [ - 269.3786601426267, - 211.47877807640333 - ], - "rotation": 0.0, - "type": "points", - "z_order": 0 - } - ], - "source": "manual" - } + "elements": [], + "frame": 0, + "group": 7, + "id": 652, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 179.91, + 18.22, + 203.4, + 41.8 ], - "frame": 6, - "group": 0, - "id": 11, - "label_id": 58, - "shapes": [ - { - "attributes": [], - "frame": 6, - "id": 16, - "occluded": false, - "outside": false, - "points": [], - "rotation": 0.0, - "type": "skeleton", - "z_order": 0 - } + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 1 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 15, + "id": 646, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 213.97, + 46.73, + 239.5, + 72.3 ], - "source": "manual" - } - ], - "version": 0 - }, - "22": { - "shapes": [ + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 1 + }, { "attributes": [], "elements": [], "frame": 0, "group": 0, - "id": 601, - "label_id": 64, + "id": 669, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 618.23, - 215.13, - 688.33, - 284.53, - 690.25, - 278.64, - 626.1, - 206.7 + 216.57, + 208.01, + 252.56, + 191.65 + ], + "rotation": 0.0, + "source": "manual", + "type": "ellipse", + "z_order": 4 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 5, + "id": 641, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 227.02, + 87.59, + 225.05, + 153.02, + 283.9, + 158.2, + 251.9, + 121.0 ], "rotation": 0.0, "source": "manual", "type": "polygon", - "z_order": 3 + "z_order": 0 }, { "attributes": [], "elements": [], "frame": 0, "group": 3, - "id": 582, + "id": 639, "label_id": 63, "occluded": false, "outside": false, @@ -4030,226 +5484,102 @@ "elements": [], "frame": 0, "group": 0, - "id": 588, + "id": 660, "label_id": 63, "occluded": false, "outside": false, "points": [ - 673.2, - 222.4, - 693.52, - 240.04, - 647.8, - 287.2, - 620.89, - 266.86 + 310.76, + 196.2, + 339.55, + 228.91 ], "rotation": 0.0, "source": "manual", - "type": "polygon", - "z_order": 1 + "type": "rectangle", + "z_order": 4 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "false" + } + ], "elements": [], "frame": 0, - "group": 1, - "id": 581, - "label_id": 63, + "group": 0, + "id": 658, + "label_id": 64, "occluded": false, "outside": false, "points": [ - 109.62, - 93.68, - 150.75, - 154.71 + 618.23, + 215.13, + 688.33, + 284.53, + 690.25, + 278.64, + 626.1, + 206.7 ], - "rotation": 118.4, + "rotation": 0.0, "source": "manual", - "type": "rectangle", - "z_order": 0 + "type": "polygon", + "z_order": 3 }, { "attributes": [], "elements": [], "frame": 0, - "group": 0, - "id": 600, + "group": 16, + "id": 648, "label_id": 63, "occluded": false, "outside": false, "points": [ - 502.5, - 319.9, - 635.3, - 319.9, - 651.0, - 374.7, - 499.9, - 375.5 + 179.94, + 46.08, + 206.0, + 72.8 ], "rotation": 0.0, "source": "manual", - "type": "polygon", - "z_order": 3 + "type": "rectangle", + "z_order": 1 }, { "attributes": [], "elements": [], "frame": 0, - "group": 2, - "id": 585, + "group": 17, + "id": 663, "label_id": 63, "occluded": false, "outside": false, "points": [ - 37.0, - 25.0, - 49.0, - 32.0, - 23.0, - 59.0, - 19.0, - 61.0, - 17.0, - 63.0, - 15.0, - 65.0, - 14.0, - 66.0, - 12.0, - 68.0, - 11.0, - 69.0, - 10.0, - 70.0, - 9.0, - 70.0, - 9.0, - 70.0, - 9.0, - 70.0, - 9.0, - 71.0, - 8.0, - 71.0, - 8.0, - 72.0, - 7.0, - 72.0, - 7.0, - 72.0, - 7.0, - 72.0, - 7.0, - 72.0, - 7.0, - 73.0, - 6.0, - 73.0, - 5.0, - 74.0, - 5.0, - 74.0, - 5.0, - 74.0, - 5.0, - 74.0, - 5.0, - 74.0, - 5.0, - 74.0, - 5.0, - 74.0, - 5.0, - 74.0, - 5.0, - 74.0, - 5.0, - 74.0, - 5.0, - 74.0, - 5.0, - 74.0, - 4.0, - 75.0, - 4.0, - 75.0, - 4.0, - 75.0, - 3.0, - 76.0, - 3.0, - 76.0, - 3.0, - 77.0, - 2.0, - 77.0, - 2.0, - 77.0, - 2.0, - 77.0, - 2.0, - 77.0, - 2.0, - 77.0, - 1.0, - 1184.0, - 1.0, - 77.0, - 3.0, - 76.0, - 4.0, - 75.0, - 4.0, - 75.0, - 4.0, - 74.0, - 5.0, - 73.0, - 7.0, - 71.0, - 9.0, - 67.0, - 13.0, - 65.0, - 15.0, - 9.0, - 1.0, - 53.0, - 29.0, - 16.0, - 4.0, - 29.0, - 31.0, - 11.0, - 16.0, - 20.0, - 12.0, - 458.0, - 87.0, - 536.0, - 158.0 + 60.83, + 302.19 ], "rotation": 0.0, "source": "manual", - "type": "mask", - "z_order": 0 + "type": "points", + "z_order": 4 }, { "attributes": [], "elements": [], "frame": 0, - "group": 0, - "id": 587, - "label_id": 64, + "group": 12, + "id": 650, + "label_id": 63, "occluded": false, "outside": false, "points": [ - 459.5, - 81.9, - 545.8, - 155.8 + 147.85, + 17.61, + 170.15, + 39.87 ], "rotation": 0.0, "source": "manual", @@ -4260,98 +5590,103 @@ "attributes": [], "elements": [], "frame": 0, - "group": 6, - "id": 586, + "group": 0, + "id": 666, "label_id": 63, "occluded": false, "outside": false, "points": [ - 414.49, - 261.0, - 467.48, - 259.69 + 138.0, + 339.5, + 155.0, + 338.8 ], "rotation": 0.0, "source": "manual", - "type": "polyline", - "z_order": 0 + "type": "points", + "z_order": 4 }, { "attributes": [], "elements": [], "frame": 0, - "group": 3, - "id": 580, + "group": 0, + "id": 668, "label_id": 63, "occluded": false, "outside": false, "points": [ - 439.0, - 238.07, - 442.27, - 279.29 + 101.39, + 200.78, + 135.42, + 214.52, + 117.75, + 248.54, + 85.04, + 235.46, + 73.26, + 204.05 ], "rotation": 0.0, "source": "manual", - "type": "polyline", - "z_order": 0 + "type": "polygon", + "z_order": 4 }, { "attributes": [], "elements": [], "frame": 0, - "group": 4, - "id": 583, + "group": 0, + "id": 645, "label_id": 63, "occluded": false, "outside": false, "points": [ - 210.0, - 274.06, - 240.1, - 258.35, - 267.1, - 266.4, - 278.7, - 261.63, - 281.32, - 253.78 + 673.2, + 222.4, + 693.52, + 240.04, + 647.8, + 287.2, + 620.89, + 266.86 ], "rotation": 0.0, "source": "manual", - "type": "polyline", - "z_order": 0 + "type": "polygon", + "z_order": 1 }, { "attributes": [], "elements": [], "frame": 0, - "group": 5, - "id": 584, + "group": 16, + "id": 649, "label_id": 63, "occluded": false, "outside": false, "points": [ - 227.02, - 87.59, - 225.05, - 153.02, - 283.9, - 158.2, - 251.9, - 121.0 + 113.8, + 45.4, + 137.38, + 69.0 ], "rotation": 0.0, "source": "manual", - "type": "polygon", - "z_order": 0 + "type": "rectangle", + "z_order": 1 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "false" + } + ], "elements": [], "frame": 0, "group": 0, - "id": 602, + "id": 659, "label_id": 64, "occluded": false, "outside": false, @@ -4369,6 +5704,30 @@ "source": "manual", "type": "polygon", "z_order": 4 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 657, + "label_id": 63, + "occluded": false, + "outside": false, + "points": [ + 502.5, + 319.9, + 635.3, + 319.9, + 651.0, + 374.7, + 499.9, + 375.5 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 3 } ], "tags": [], diff --git a/tests/python/shared/assets/cvat_db/data.json b/tests/python/shared/assets/cvat_db/data.json index f27e0ddf014c..6df0868eb2c2 100644 --- a/tests/python/shared/assets/cvat_db/data.json +++ b/tests/python/shared/assets/cvat_db/data.json @@ -3431,7 +3431,7 @@ "assignee": null, "bug_tracker": "", "created_date": "2023-04-14T14:40:10.333Z", - "updated_date": "2023-04-14T15:03:25.969Z", + "updated_date": "2023-05-23T14:45:08.348Z", "overlap": 0, "segment_size": 11, "status": "annotation", @@ -4854,7 +4854,7 @@ "segment": 27, "assignee": null, "created_date": "2023-04-14T14:40:10.333Z", - "updated_date": "2023-04-14T14:58:50.944Z", + "updated_date": "2023-05-23T14:45:08.385Z", "status": "annotation", "stage": "annotation", "state": "in progress", @@ -4868,10 +4868,10 @@ "segment": 28, "assignee": null, "created_date": "2023-04-14T14:40:10.333Z", - "updated_date": "2023-04-14T15:03:25.984Z", - "status": "annotation", - "stage": "annotation", - "state": "in progress", + "updated_date": "2023-05-23T14:44:02.697Z", + "status": "validation", + "stage": "acceptance", + "state": "completed", "type": "ground_truth" } }, @@ -5787,6 +5787,18 @@ "values": "white\nblack\nred" } }, +{ + "model": "engine.attributespec", + "pk": 13, + "fields": { + "label": 64, + "name": "a1", + "mutable": false, + "input_type": "checkbox", + "default_value": "false", + "values": "false" + } +}, { "model": "engine.labeledimage", "pk": 1, @@ -5833,7 +5845,7 @@ }, { "model": "engine.labeledimage", - "pk": 228, + "pk": 230, "fields": { "job": 28, "label": 63, @@ -5844,7 +5856,7 @@ }, { "model": "engine.labeledimage", - "pk": 229, + "pk": 231, "fields": { "job": 28, "label": 63, @@ -6539,7 +6551,7 @@ }, { "model": "engine.labeledshape", - "pk": 546, + "pk": 603, "fields": { "job": 28, "label": 64, @@ -6557,7 +6569,7 @@ }, { "model": "engine.labeledshape", - "pk": 547, + "pk": 604, "fields": { "job": 28, "label": 63, @@ -6575,7 +6587,7 @@ }, { "model": "engine.labeledshape", - "pk": 548, + "pk": 605, "fields": { "job": 28, "label": 63, @@ -6593,7 +6605,7 @@ }, { "model": "engine.labeledshape", - "pk": 549, + "pk": 606, "fields": { "job": 28, "label": 63, @@ -6611,7 +6623,7 @@ }, { "model": "engine.labeledshape", - "pk": 550, + "pk": 607, "fields": { "job": 28, "label": 63, @@ -6629,261 +6641,261 @@ }, { "model": "engine.labeledshape", - "pk": 564, + "pk": 608, "fields": { "job": 28, "label": 63, "frame": 0, "group": 0, "source": "manual", - "type": "polygon", + "type": "points", "occluded": false, "outside": false, "z_order": 0, - "points": "[527.0, 319.6, 530.3, 372.6, 500.83, 375.21, 502.79, 319.6]", + "points": "[362.45, 298.92, 345.44, 317.24, 368.99, 315.93]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 565, + "pk": 609, "fields": { "job": 28, "label": 63, "frame": 0, - "group": 5, + "group": 1, "source": "manual", - "type": "polygon", + "type": "rectangle", "occluded": false, "outside": false, "z_order": 0, - "points": "[672.58, 219.1, 692.21, 239.38, 671.27, 257.7, 655.57, 239.38]", + "points": "[113.83, 18.23, 136.07, 40.5]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 566, + "pk": 610, "fields": { "job": 28, "label": 63, "frame": 0, - "group": 5, + "group": 1, "source": "manual", - "type": "mask", + "type": "rectangle", "occluded": false, "outside": false, "z_order": 0, - "points": "[21.0, 5.0, 32.0, 10.0, 30.0, 12.0, 27.0, 15.0, 25.0, 17.0, 23.0, 19.0, 21.0, 21.0, 19.0, 23.0, 17.0, 25.0, 14.0, 28.0, 12.0, 30.0, 10.0, 31.0, 9.0, 33.0, 8.0, 34.0, 6.0, 36.0, 5.0, 36.0, 5.0, 36.0, 4.0, 38.0, 2.0, 39.0, 2.0, 326.0, 2.0, 38.0, 3.0, 38.0, 3.0, 37.0, 5.0, 35.0, 6.0, 34.0, 8.0, 31.0, 10.0, 29.0, 13.0, 26.0, 16.0, 23.0, 19.0, 21.0, 21.0, 18.0, 24.0, 15.0, 27.0, 13.0, 29.0, 9.0, 22.0, 627.0, 244.0, 667.0, 284.0]", + "points": "[147.85, 18.89, 170.06, 42.41]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 573, + "pk": 611, "fields": { "job": 28, "label": 63, - "frame": 1, - "group": 0, + "frame": 0, + "group": 2, "source": "manual", - "type": "polygon", + "type": "rectangle", "occluded": false, "outside": false, "z_order": 0, - "points": "[213.08, 27.58, 242.67, 54.96, 220.48, 73.46, 182.0, 63.1, 165.72, 25.36]", + "points": "[180.56, 19.54, 202.14, 41.77]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 574, + "pk": 612, "fields": { "job": 28, "label": 63, - "frame": 1, - "group": 0, + "frame": 0, + "group": 2, "source": "manual", - "type": "ellipse", + "type": "rectangle", "occluded": false, "outside": false, "z_order": 0, - "points": "[359.22, 57.54, 381.79, 37.93]", + "points": "[213.28, 18.23, 236.82, 44.37]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 575, + "pk": 613, "fields": { "job": 28, "label": 63, - "frame": 1, - "group": 0, + "frame": 0, + "group": 3, "source": "manual", - "type": "cuboid", + "type": "rectangle", "occluded": false, "outside": false, "z_order": 0, - "points": "[503.86, 51.36, 503.86, 95.65, 574.15, 51.26, 574.15, 95.65, 581.18, 46.92, 581.18, 91.11, 510.89, 46.92, 510.89, 91.11]", + "points": "[567.9, 14.31, 595.37, 43.8]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 576, + "pk": 614, "fields": { "job": 28, "label": 63, - "frame": 1, - "group": 0, + "frame": 0, + "group": 3, "source": "manual", - "type": "mask", + "type": "rectangle", "occluded": false, "outside": false, "z_order": 0, - "points": "[45.0, 8.0, 64.0, 5.0, 7.0, 11.0, 61.0, 7.0, 5.0, 14.0, 58.0, 9.0, 3.0, 16.0, 56.0, 11.0, 2.0, 18.0, 54.0, 11.0, 2.0, 20.0, 52.0, 35.0, 50.0, 36.0, 49.0, 38.0, 47.0, 39.0, 45.0, 42.0, 43.0, 43.0, 42.0, 45.0, 40.0, 46.0, 39.0, 47.0, 16.0, 7.0, 15.0, 48.0, 14.0, 9.0, 14.0, 48.0, 13.0, 12.0, 12.0, 13.0, 11.0, 25.0, 11.0, 14.0, 10.0, 13.0, 14.0, 24.0, 10.0, 15.0, 9.0, 13.0, 16.0, 23.0, 8.0, 17.0, 7.0, 14.0, 16.0, 23.0, 8.0, 18.0, 5.0, 15.0, 17.0, 23.0, 6.0, 19.0, 5.0, 15.0, 18.0, 23.0, 4.0, 21.0, 3.0, 16.0, 19.0, 23.0, 3.0, 22.0, 2.0, 16.0, 19.0, 23.0, 3.0, 40.0, 19.0, 24.0, 2.0, 40.0, 20.0, 23.0, 2.0, 41.0, 19.0, 23.0, 2.0, 41.0, 19.0, 11.0, 1.0, 12.0, 1.0, 11.0, 1.0, 29.0, 19.0, 11.0, 1.0, 12.0, 1.0, 11.0, 1.0, 29.0, 19.0, 11.0, 2.0, 23.0, 2.0, 29.0, 18.0, 11.0, 2.0, 23.0, 3.0, 28.0, 18.0, 11.0, 2.0, 24.0, 3.0, 28.0, 17.0, 11.0, 3.0, 24.0, 3.0, 27.0, 16.0, 12.0, 3.0, 25.0, 2.0, 28.0, 15.0, 12.0, 2.0, 12.0, 1.0, 43.0, 14.0, 12.0, 3.0, 12.0, 2.0, 43.0, 13.0, 12.0, 3.0, 12.0, 2.0, 44.0, 11.0, 13.0, 3.0, 12.0, 3.0, 43.0, 11.0, 13.0, 3.0, 11.0, 4.0, 43.0, 10.0, 13.0, 4.0, 11.0, 5.0, 44.0, 8.0, 12.0, 5.0, 11.0, 6.0, 44.0, 7.0, 12.0, 5.0, 11.0, 7.0, 45.0, 4.0, 12.0, 5.0, 12.0, 9.0, 14.0, 3.0, 27.0, 3.0, 12.0, 5.0, 12.0, 11.0, 9.0, 7.0, 41.0, 5.0, 12.0, 12.0, 7.0, 9.0, 40.0, 5.0, 12.0, 28.0, 39.0, 5.0, 12.0, 30.0, 38.0, 5.0, 11.0, 32.0, 37.0, 5.0, 11.0, 33.0, 35.0, 5.0, 12.0, 34.0, 33.0, 6.0, 12.0, 35.0, 32.0, 6.0, 11.0, 37.0, 31.0, 6.0, 11.0, 39.0, 29.0, 5.0, 12.0, 40.0, 28.0, 5.0, 12.0, 42.0, 26.0, 4.0, 13.0, 44.0, 40.0, 46.0, 39.0, 47.0, 38.0, 49.0, 35.0, 57.0, 27.0, 60.0, 24.0, 62.0, 22.0, 65.0, 19.0, 68.0, 15.0, 71.0, 13.0, 77.0, 7.0, 14.0, 23.0, 57.0, 107.0, 124.0]", + "points": "[603.9, 13.65, 632.01, 43.1]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 577, + "pk": 615, "fields": { "job": 28, "label": 63, - "frame": 1, - "group": 0, + "frame": 0, + "group": 3, "source": "manual", - "type": "points", + "type": "rectangle", "occluded": false, "outside": false, "z_order": 0, - "points": "[276.71, 105.27, 301.12, 121.55, 273.75, 137.09, 252.29, 122.29]", + "points": "[643.8, 12.35, 671.9, 43.8]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 578, + "pk": 616, "fields": { "job": 28, "label": 63, - "frame": 1, - "group": 0, + "frame": 0, + "group": 3, "source": "manual", - "type": "polyline", + "type": "rectangle", "occluded": false, "outside": false, "z_order": 0, - "points": "[393.61, 109.71, 417.29, 139.31, 432.09, 123.03, 461.68, 140.05]", + "points": "[681.09, 14.31, 711.8, 43.8]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 579, + "pk": 617, "fields": { "job": 28, "label": 63, - "frame": 1, + "frame": 0, "group": 0, "source": "manual", "type": "rectangle", "occluded": false, "outside": false, "z_order": 0, - "points": "[420.99, 33.5, 450.58, 62.36]", + "points": "[112.52, 47.02, 138.03, 69.92]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 580, + "pk": 618, "fields": { - "job": 27, + "job": 28, "label": 63, "frame": 0, - "group": 3, + "group": 4, "source": "manual", - "type": "polyline", + "type": "rectangle", "occluded": false, "outside": false, "z_order": 0, - "points": "[439.0, 238.07, 442.27, 279.29]", + "points": "[147.85, 47.02, 172.06, 72.54]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 581, + "pk": 619, "fields": { - "job": 27, + "job": 28, "label": 63, "frame": 0, - "group": 1, + "group": 4, "source": "manual", "type": "rectangle", "occluded": false, "outside": false, "z_order": 0, - "points": "[109.62, 93.68, 150.75, 154.71]", - "rotation": 118.4, + "points": "[181.22, 47.68, 205.42, 73.85]", + "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 582, + "pk": 620, "fields": { - "job": 27, + "job": 28, "label": 63, "frame": 0, - "group": 3, + "group": 4, "source": "manual", - "type": "polyline", + "type": "rectangle", "occluded": false, "outside": false, "z_order": 0, - "points": "[414.14, 256.39, 467.14, 255.08]", + "points": "[213.28, 47.68, 238.14, 73.85]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 583, + "pk": 621, "fields": { - "job": 27, + "job": 28, "label": 63, "frame": 0, - "group": 4, + "group": 0, "source": "manual", - "type": "polyline", + "type": "polygon", "occluded": false, "outside": false, "z_order": 0, - "points": "[210.0, 274.06, 240.1, 258.35, 267.1, 266.4, 278.7, 261.63, 281.32, 253.78]", + "points": "[527.0, 319.6, 530.3, 372.6, 500.83, 375.21, 502.79, 319.6]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 584, + "pk": 622, "fields": { - "job": 27, + "job": 28, "label": 63, "frame": 0, "group": 5, @@ -6892,1897 +6904,3191 @@ "occluded": false, "outside": false, "z_order": 0, - "points": "[227.02, 87.59, 225.05, 153.02, 283.9, 158.2, 251.9, 121.0]", + "points": "[672.58, 219.1, 692.21, 239.38, 671.27, 257.7, 655.57, 239.38]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 585, + "pk": 623, "fields": { - "job": 27, + "job": 28, "label": 63, "frame": 0, - "group": 2, + "group": 5, "source": "manual", "type": "mask", "occluded": false, "outside": false, "z_order": 0, - "points": "[37.0, 25.0, 49.0, 32.0, 23.0, 59.0, 19.0, 61.0, 17.0, 63.0, 15.0, 65.0, 14.0, 66.0, 12.0, 68.0, 11.0, 69.0, 10.0, 70.0, 9.0, 70.0, 9.0, 70.0, 9.0, 70.0, 9.0, 71.0, 8.0, 71.0, 8.0, 72.0, 7.0, 72.0, 7.0, 72.0, 7.0, 72.0, 7.0, 72.0, 7.0, 73.0, 6.0, 73.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 4.0, 75.0, 4.0, 75.0, 4.0, 75.0, 3.0, 76.0, 3.0, 76.0, 3.0, 77.0, 2.0, 77.0, 2.0, 77.0, 2.0, 77.0, 2.0, 77.0, 2.0, 77.0, 1.0, 1184.0, 1.0, 77.0, 3.0, 76.0, 4.0, 75.0, 4.0, 75.0, 4.0, 74.0, 5.0, 73.0, 7.0, 71.0, 9.0, 67.0, 13.0, 65.0, 15.0, 9.0, 1.0, 53.0, 29.0, 16.0, 4.0, 29.0, 31.0, 11.0, 16.0, 20.0, 12.0, 458.0, 87.0, 536.0, 158.0]", + "points": "[21.0, 5.0, 32.0, 10.0, 30.0, 12.0, 27.0, 15.0, 25.0, 17.0, 23.0, 19.0, 21.0, 21.0, 19.0, 23.0, 17.0, 25.0, 14.0, 28.0, 12.0, 30.0, 10.0, 31.0, 9.0, 33.0, 8.0, 34.0, 6.0, 36.0, 5.0, 36.0, 5.0, 36.0, 4.0, 38.0, 2.0, 39.0, 2.0, 326.0, 2.0, 38.0, 3.0, 38.0, 3.0, 37.0, 5.0, 35.0, 6.0, 34.0, 8.0, 31.0, 10.0, 29.0, 13.0, 26.0, 16.0, 23.0, 19.0, 21.0, 21.0, 18.0, 24.0, 15.0, 27.0, 13.0, 29.0, 9.0, 22.0, 627.0, 244.0, 667.0, 284.0]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 586, + "pk": 624, "fields": { - "job": 27, + "job": 28, "label": 63, "frame": 0, - "group": 6, + "group": 7, "source": "manual", - "type": "polyline", + "type": "rectangle", "occluded": false, "outside": false, "z_order": 0, - "points": "[414.49, 261.0, 467.48, 259.69]", + "points": "[37.27, 267.52, 83.07, 328.36]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 587, + "pk": 625, "fields": { - "job": 27, - "label": 64, + "job": 28, + "label": 63, "frame": 0, - "group": 0, + "group": 7, "source": "manual", - "type": "rectangle", + "type": "points", "occluded": false, "outside": false, - "z_order": 1, - "points": "[459.5, 81.9, 545.8, 155.8]", + "z_order": 0, + "points": "[46.43, 290.42]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 588, + "pk": 626, "fields": { - "job": 27, + "job": 28, "label": 63, "frame": 0, - "group": 0, + "group": 7, "source": "manual", - "type": "polygon", + "type": "points", "occluded": false, "outside": false, - "z_order": 1, - "points": "[673.2, 222.4, 693.52, 240.04, 647.8, 287.2, 620.89, 266.86]", + "z_order": 0, + "points": "[64.75, 302.19]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 600, + "pk": 627, "fields": { - "job": 27, + "job": 28, "label": 63, "frame": 0, - "group": 0, + "group": 7, "source": "manual", - "type": "polygon", + "type": "points", "occluded": false, "outside": false, - "z_order": 3, - "points": "[502.5, 319.9, 635.3, 319.9, 651.0, 374.7, 499.9, 375.5]", + "z_order": 0, + "points": "[47.74, 309.39]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 601, + "pk": 628, "fields": { - "job": 27, + "job": 28, "label": 64, "frame": 0, "group": 0, "source": "manual", - "type": "polygon", + "type": "points", "occluded": false, "outside": false, - "z_order": 3, - "points": "[618.23, 215.13, 688.33, 284.53, 690.25, 278.64, 626.1, 206.7]", + "z_order": 0, + "points": "[140.7, 338.8]", "rotation": 0.0, "parent": null } }, { "model": "engine.labeledshape", - "pk": 602, + "pk": 629, "fields": { - "job": 27, - "label": 64, + "job": 28, + "label": 63, "frame": 0, "group": 0, "source": "manual", - "type": "polygon", + "type": "points", "occluded": false, "outside": false, - "z_order": 4, - "points": "[532.6, 300.2, 533.2, 391.8, 678.47, 393.14, 639.87, 300.88]", + "z_order": 0, + "points": "[225.0, 315.2]", "rotation": 0.0, "parent": null } }, { - "model": "engine.labeledshapeattributeval", - "pk": 1, + "model": "engine.labeledshape", + "pk": 630, "fields": { - "spec": 2, - "value": "white", - "shape": 36 + "job": 28, + "label": 63, + "frame": 1, + "group": 0, + "source": "manual", + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[213.08, 27.58, 242.67, 54.96, 220.48, 73.46, 182.0, 63.1, 165.72, 25.36]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledshapeattributeval", - "pk": 2, + "model": "engine.labeledshape", + "pk": 631, "fields": { - "spec": 3, - "value": "val1", - "shape": 39 + "job": 28, + "label": 63, + "frame": 1, + "group": 0, + "source": "manual", + "type": "ellipse", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[359.22, 57.54, 381.79, 37.93]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledshapeattributeval", - "pk": 3, + "model": "engine.labeledshape", + "pk": 632, "fields": { - "spec": 1, - "value": "mazda", - "shape": 42 + "job": 28, + "label": 63, + "frame": 1, + "group": 0, + "source": "manual", + "type": "cuboid", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[503.86, 51.36, 503.86, 95.65, 574.15, 51.26, 574.15, 95.65, 581.18, 46.92, 581.18, 91.11, 510.89, 46.92, 510.89, 91.11]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledshapeattributeval", - "pk": 4, + "model": "engine.labeledshape", + "pk": 633, "fields": { - "spec": 7, - "value": "non-default", - "shape": 54 + "job": 28, + "label": 63, + "frame": 1, + "group": 0, + "source": "manual", + "type": "mask", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[45.0, 8.0, 64.0, 5.0, 7.0, 11.0, 61.0, 7.0, 5.0, 14.0, 58.0, 9.0, 3.0, 16.0, 56.0, 11.0, 2.0, 18.0, 54.0, 11.0, 2.0, 20.0, 52.0, 35.0, 50.0, 36.0, 49.0, 38.0, 47.0, 39.0, 45.0, 42.0, 43.0, 43.0, 42.0, 45.0, 40.0, 46.0, 39.0, 47.0, 16.0, 7.0, 15.0, 48.0, 14.0, 9.0, 14.0, 48.0, 13.0, 12.0, 12.0, 13.0, 11.0, 25.0, 11.0, 14.0, 10.0, 13.0, 14.0, 24.0, 10.0, 15.0, 9.0, 13.0, 16.0, 23.0, 8.0, 17.0, 7.0, 14.0, 16.0, 23.0, 8.0, 18.0, 5.0, 15.0, 17.0, 23.0, 6.0, 19.0, 5.0, 15.0, 18.0, 23.0, 4.0, 21.0, 3.0, 16.0, 19.0, 23.0, 3.0, 22.0, 2.0, 16.0, 19.0, 23.0, 3.0, 40.0, 19.0, 24.0, 2.0, 40.0, 20.0, 23.0, 2.0, 41.0, 19.0, 23.0, 2.0, 41.0, 19.0, 11.0, 1.0, 12.0, 1.0, 11.0, 1.0, 29.0, 19.0, 11.0, 1.0, 12.0, 1.0, 11.0, 1.0, 29.0, 19.0, 11.0, 2.0, 23.0, 2.0, 29.0, 18.0, 11.0, 2.0, 23.0, 3.0, 28.0, 18.0, 11.0, 2.0, 24.0, 3.0, 28.0, 17.0, 11.0, 3.0, 24.0, 3.0, 27.0, 16.0, 12.0, 3.0, 25.0, 2.0, 28.0, 15.0, 12.0, 2.0, 12.0, 1.0, 43.0, 14.0, 12.0, 3.0, 12.0, 2.0, 43.0, 13.0, 12.0, 3.0, 12.0, 2.0, 44.0, 11.0, 13.0, 3.0, 12.0, 3.0, 43.0, 11.0, 13.0, 3.0, 11.0, 4.0, 43.0, 10.0, 13.0, 4.0, 11.0, 5.0, 44.0, 8.0, 12.0, 5.0, 11.0, 6.0, 44.0, 7.0, 12.0, 5.0, 11.0, 7.0, 45.0, 4.0, 12.0, 5.0, 12.0, 9.0, 14.0, 3.0, 27.0, 3.0, 12.0, 5.0, 12.0, 11.0, 9.0, 7.0, 41.0, 5.0, 12.0, 12.0, 7.0, 9.0, 40.0, 5.0, 12.0, 28.0, 39.0, 5.0, 12.0, 30.0, 38.0, 5.0, 11.0, 32.0, 37.0, 5.0, 11.0, 33.0, 35.0, 5.0, 12.0, 34.0, 33.0, 6.0, 12.0, 35.0, 32.0, 6.0, 11.0, 37.0, 31.0, 6.0, 11.0, 39.0, 29.0, 5.0, 12.0, 40.0, 28.0, 5.0, 12.0, 42.0, 26.0, 4.0, 13.0, 44.0, 40.0, 46.0, 39.0, 47.0, 38.0, 49.0, 35.0, 57.0, 27.0, 60.0, 24.0, 62.0, 22.0, 65.0, 19.0, 68.0, 15.0, 71.0, 13.0, 77.0, 7.0, 14.0, 23.0, 57.0, 107.0, 124.0]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledshapeattributeval", - "pk": 5, + "model": "engine.labeledshape", + "pk": 634, "fields": { - "spec": 8, - "value": "black", - "shape": 55 + "job": 28, + "label": 63, + "frame": 1, + "group": 0, + "source": "manual", + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[276.71, 105.27, 301.12, 121.55, 273.75, 137.09, 252.29, 122.29]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledshapeattributeval", - "pk": 6, + "model": "engine.labeledshape", + "pk": 635, "fields": { - "spec": 9, - "value": "non-default", - "shape": 56 - } -}, -{ - "model": "engine.labeledshapeattributeval", - "pk": 7, - "fields": { - "spec": 10, - "value": "black", - "shape": 57 + "job": 28, + "label": 63, + "frame": 1, + "group": 0, + "source": "manual", + "type": "polyline", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[393.61, 109.71, 417.29, 139.31, 432.09, 123.03, 461.68, 140.05]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 1, + "model": "engine.labeledshape", + "pk": 636, "fields": { - "job": 18, - "label": 22, - "frame": 0, + "job": 28, + "label": 63, + "frame": 1, "group": 0, "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[420.99, 33.5, 450.58, 62.36]", + "rotation": 0.0, "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 2, + "model": "engine.labeledshape", + "pk": 637, "fields": { - "job": 18, - "label": 23, + "job": 27, + "label": 63, "frame": 0, - "group": 0, + "group": 3, "source": "manual", - "parent": 1 + "type": "polyline", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[439.0, 238.07, 442.27, 279.29]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 3, + "model": "engine.labeledshape", + "pk": 638, "fields": { - "job": 18, - "label": 24, + "job": 27, + "label": 63, "frame": 0, - "group": 0, + "group": 1, "source": "manual", - "parent": 1 + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[109.62, 93.68, 150.75, 154.71]", + "rotation": 118.4, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 4, + "model": "engine.labeledshape", + "pk": 639, "fields": { - "job": 18, - "label": 25, + "job": 27, + "label": 63, "frame": 0, - "group": 0, + "group": 3, "source": "manual", - "parent": 1 + "type": "polyline", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[414.14, 256.39, 467.14, 255.08]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 5, + "model": "engine.labeledshape", + "pk": 640, "fields": { - "job": 18, - "label": 26, + "job": 27, + "label": 63, "frame": 0, - "group": 0, + "group": 4, "source": "manual", - "parent": 1 + "type": "polyline", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[210.0, 274.06, 240.1, 258.35, 267.1, 266.4, 278.7, 261.63, 281.32, 253.78]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 6, + "model": "engine.labeledshape", + "pk": 641, "fields": { - "job": 25, - "label": 58, + "job": 27, + "label": 63, "frame": 0, - "group": 0, + "group": 5, "source": "manual", + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[227.02, 87.59, 225.05, 153.02, 283.9, 158.2, 251.9, 121.0]", + "rotation": 0.0, "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 7, + "model": "engine.labeledshape", + "pk": 642, "fields": { - "job": 25, - "label": 59, + "job": 27, + "label": 63, "frame": 0, - "group": 0, + "group": 2, "source": "manual", - "parent": 6 + "type": "mask", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[37.0, 25.0, 49.0, 32.0, 23.0, 59.0, 19.0, 61.0, 17.0, 63.0, 15.0, 65.0, 14.0, 66.0, 12.0, 68.0, 11.0, 69.0, 10.0, 70.0, 9.0, 70.0, 9.0, 70.0, 9.0, 70.0, 9.0, 71.0, 8.0, 71.0, 8.0, 72.0, 7.0, 72.0, 7.0, 72.0, 7.0, 72.0, 7.0, 72.0, 7.0, 73.0, 6.0, 73.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 4.0, 75.0, 4.0, 75.0, 4.0, 75.0, 3.0, 76.0, 3.0, 76.0, 3.0, 77.0, 2.0, 77.0, 2.0, 77.0, 2.0, 77.0, 2.0, 77.0, 2.0, 77.0, 1.0, 1184.0, 1.0, 77.0, 3.0, 76.0, 4.0, 75.0, 4.0, 75.0, 4.0, 74.0, 5.0, 73.0, 7.0, 71.0, 9.0, 67.0, 13.0, 65.0, 15.0, 9.0, 1.0, 53.0, 29.0, 16.0, 4.0, 29.0, 31.0, 11.0, 16.0, 20.0, 12.0, 458.0, 87.0, 536.0, 158.0]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 8, + "model": "engine.labeledshape", + "pk": 643, "fields": { - "job": 25, - "label": 60, + "job": 27, + "label": 63, "frame": 0, - "group": 0, + "group": 6, "source": "manual", - "parent": 6 + "type": "polyline", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[414.49, 261.0, 467.48, 259.69]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 9, + "model": "engine.labeledshape", + "pk": 644, "fields": { - "job": 25, - "label": 61, + "job": 27, + "label": 64, "frame": 0, "group": 0, "source": "manual", - "parent": 6 + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 1, + "points": "[459.5, 81.9, 545.8, 155.8]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 10, + "model": "engine.labeledshape", + "pk": 645, "fields": { - "job": 25, - "label": 62, + "job": 27, + "label": 63, "frame": 0, "group": 0, "source": "manual", - "parent": 6 + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 1, + "points": "[673.2, 222.4, 693.52, 240.04, 647.8, 287.2, 620.89, 266.86]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 11, + "model": "engine.labeledshape", + "pk": 646, "fields": { - "job": 26, - "label": 58, - "frame": 6, - "group": 0, + "job": 27, + "label": 63, + "frame": 0, + "group": 15, "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 1, + "points": "[213.97, 46.73, 239.5, 72.3]", + "rotation": 0.0, "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 12, + "model": "engine.labeledshape", + "pk": 647, "fields": { - "job": 26, - "label": 59, - "frame": 6, - "group": 0, + "job": 27, + "label": 63, + "frame": 0, + "group": 16, "source": "manual", - "parent": 11 + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 1, + "points": "[147.9, 45.42, 171.4, 70.3]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 13, + "model": "engine.labeledshape", + "pk": 648, "fields": { - "job": 26, - "label": 60, - "frame": 6, - "group": 0, + "job": 27, + "label": 63, + "frame": 0, + "group": 16, "source": "manual", - "parent": 11 + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 1, + "points": "[179.94, 46.08, 206.0, 72.8]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 14, + "model": "engine.labeledshape", + "pk": 649, "fields": { - "job": 26, - "label": 61, - "frame": 6, - "group": 0, + "job": 27, + "label": 63, + "frame": 0, + "group": 16, "source": "manual", - "parent": 11 + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 1, + "points": "[113.8, 45.4, 137.38, 69.0]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 15, + "model": "engine.labeledshape", + "pk": 650, "fields": { - "job": 26, - "label": 62, - "frame": 6, - "group": 0, + "job": 27, + "label": 63, + "frame": 0, + "group": 12, "source": "manual", - "parent": 11 + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 1, + "points": "[147.85, 17.61, 170.15, 39.87]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrackattributeval", - "pk": 3, + "model": "engine.labeledshape", + "pk": 651, "fields": { - "spec": 2, - "value": "white", - "track": 1 + "job": 27, + "label": 63, + "frame": 0, + "group": 7, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 1, + "points": "[113.8, 17.6, 138.65, 40.47]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrackattributeval", - "pk": 4, + "model": "engine.labeledshape", + "pk": 652, "fields": { - "spec": 3, - "value": "val1", - "track": 4 + "job": 27, + "label": 63, + "frame": 0, + "group": 7, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 1, + "points": "[179.91, 18.22, 203.4, 41.8]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 1, + "model": "engine.labeledshape", + "pk": 653, "fields": { - "type": "skeleton", + "job": 27, + "label": 63, + "frame": 0, + "group": 11, + "source": "manual", + "type": "rectangle", "occluded": false, "outside": false, - "z_order": 0, - "points": "[]", + "z_order": 1, + "points": "[603.9, 13.65, 632.67, 42.4]", "rotation": 0.0, - "track": 1, - "frame": 0 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 2, + "model": "engine.labeledshape", + "pk": 654, "fields": { - "type": "points", + "job": 27, + "label": 63, + "frame": 0, + "group": 11, + "source": "manual", + "type": "rectangle", "occluded": false, "outside": false, - "z_order": 0, - "points": "[381.9130434782637, 355.0592829431864]", + "z_order": 1, + "points": "[641.2, 13.0, 670.65, 42.5]", "rotation": 0.0, - "track": 2, - "frame": 0 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 3, + "model": "engine.labeledshape", + "pk": 655, "fields": { - "type": "points", + "job": 27, + "label": 63, + "frame": 0, + "group": 11, + "source": "manual", + "type": "rectangle", "occluded": false, "outside": false, - "z_order": 0, - "points": "[461.9389738212561, 583.320176176868]", + "z_order": 1, + "points": "[681.09, 13.0, 711.3, 43.2]", "rotation": 0.0, - "track": 3, - "frame": 0 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 4, + "model": "engine.labeledshape", + "pk": 656, "fields": { - "type": "points", + "job": 27, + "label": 63, + "frame": 0, + "group": 12, + "source": "manual", + "type": "rectangle", "occluded": false, "outside": false, - "z_order": 0, - "points": "[655.6465767436227, 281.7391304347839]", + "z_order": 1, + "points": "[212.62, 18.92, 236.8, 42.5]", "rotation": 0.0, - "track": 4, - "frame": 0 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 5, + "model": "engine.labeledshape", + "pk": 657, "fields": { - "type": "points", + "job": 27, + "label": 63, + "frame": 0, + "group": 0, + "source": "manual", + "type": "polygon", "occluded": false, "outside": false, - "z_order": 0, - "points": "[708.000000000003, 586.0869565217404]", + "z_order": 3, + "points": "[502.5, 319.9, 635.3, 319.9, 651.0, 374.7, 499.9, 375.5]", "rotation": 0.0, - "track": 5, - "frame": 0 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 6, + "model": "engine.labeledshape", + "pk": 658, "fields": { - "type": "points", + "job": 27, + "label": 64, + "frame": 0, + "group": 0, + "source": "manual", + "type": "polygon", "occluded": false, "outside": false, - "z_order": 0, - "points": "[137.0966796875, 156.11214469590232]", + "z_order": 3, + "points": "[618.23, 215.13, 688.33, 284.53, 690.25, 278.64, 626.1, 206.7]", "rotation": 0.0, - "track": 2, - "frame": 3 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 7, + "model": "engine.labeledshape", + "pk": 659, "fields": { - "type": "points", + "job": 27, + "label": 64, + "frame": 0, + "group": 0, + "source": "manual", + "type": "polygon", "occluded": false, "outside": false, - "z_order": 0, - "points": "[217.12261003049207, 384.3730379295848]", + "z_order": 4, + "points": "[532.6, 300.2, 533.2, 391.8, 678.47, 393.14, 639.87, 300.88]", "rotation": 0.0, - "track": 3, - "frame": 3 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 8, + "model": "engine.labeledshape", + "pk": 660, "fields": { - "type": "points", + "job": 27, + "label": 63, + "frame": 0, + "group": 0, + "source": "manual", + "type": "rectangle", "occluded": false, "outside": false, - "z_order": 0, - "points": "[410.83021295285835, 82.7919921875]", + "z_order": 4, + "points": "[310.76, 196.2, 339.55, 228.91]", "rotation": 0.0, - "track": 4, - "frame": 3 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 9, + "model": "engine.labeledshape", + "pk": 661, "fields": { + "job": 27, + "label": 63, + "frame": 0, + "group": 0, + "source": "manual", "type": "points", "occluded": false, "outside": false, - "z_order": 0, - "points": "[463.1836362092399, 387.13981827445605]", + "z_order": 4, + "points": "[361.0, 302.1, 368.9, 316.0, 348.1, 318.6]", "rotation": 0.0, - "track": 5, - "frame": 3 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 10, + "model": "engine.labeledshape", + "pk": 662, "fields": { - "type": "skeleton", + "job": 27, + "label": 64, + "frame": 0, + "group": 0, + "source": "manual", + "type": "points", "occluded": false, "outside": false, - "z_order": 0, - "points": "[]", + "z_order": 4, + "points": "[225.71, 314.62]", "rotation": 0.0, - "track": 6, - "frame": 0 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 11, + "model": "engine.labeledshape", + "pk": 663, "fields": { + "job": 27, + "label": 63, + "frame": 0, + "group": 17, + "source": "manual", "type": "points", "occluded": false, - "outside": true, - "z_order": 0, - "points": "[230.39103314621025, 149.98846070356873]", + "outside": false, + "z_order": 4, + "points": "[60.83, 302.19]", "rotation": 0.0, - "track": 7, - "frame": 0 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 12, + "model": "engine.labeledshape", + "pk": 664, "fields": { - "type": "points", + "job": 27, + "label": 63, + "frame": 0, + "group": 17, + "source": "manual", + "type": "rectangle", "occluded": false, "outside": false, - "z_order": 0, - "points": "[230.39103314621025, 149.98846070356873]", + "z_order": 4, + "points": "[34.66, 268.17, 75.22, 324.44]", "rotation": 0.0, - "track": 7, - "frame": 3 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 13, + "model": "engine.labeledshape", + "pk": 665, "fields": { + "job": 27, + "label": 64, + "frame": 0, + "group": 17, + "source": "manual", "type": "points", "occluded": false, "outside": false, - "z_order": 0, - "points": "[292.80597636674844, 284.1818841927473]", + "z_order": 4, + "points": "[50.36, 283.87]", "rotation": 0.0, - "track": 8, - "frame": 0 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 14, + "model": "engine.labeledshape", + "pk": 666, "fields": { + "job": 27, + "label": 63, + "frame": 0, + "group": 0, + "source": "manual", "type": "points", "occluded": false, "outside": false, - "z_order": 0, - "points": "[377.016603158851, 94.95407858346152]", + "z_order": 4, + "points": "[138.0, 339.5, 155.0, 338.8]", "rotation": 0.0, - "track": 9, - "frame": 0 - } -}, -{ - "model": "engine.trackedshape", - "pk": 15, - "fields": { - "type": "points", - "occluded": false, - "outside": false, - "z_order": 0, - "points": "[499.86507710826913, 316.59939612801213]", - "rotation": 0.0, - "track": 10, - "frame": 0 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 16, + "model": "engine.labeledshape", + "pk": 667, "fields": { - "type": "skeleton", + "job": 27, + "label": 63, + "frame": 0, + "group": 0, + "source": "manual", + "type": "polyline", "occluded": false, "outside": false, - "z_order": 0, - "points": "[]", + "z_order": 4, + "points": "[43.16, 178.53, 59.52, 190.96, 71.3, 177.22, 100.08, 167.41]", "rotation": 0.0, - "track": 11, - "frame": 6 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 17, + "model": "engine.labeledshape", + "pk": 668, "fields": { - "type": "points", + "job": 27, + "label": 63, + "frame": 0, + "group": 0, + "source": "manual", + "type": "polygon", "occluded": false, "outside": false, - "z_order": 0, - "points": "[92.95325643333308, 129.2954675940839]", + "z_order": 4, + "points": "[101.39, 200.78, 135.42, 214.52, 117.75, 248.54, 85.04, 235.46, 73.26, 204.05]", "rotation": 0.0, - "track": 12, - "frame": 6 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 18, + "model": "engine.labeledshape", + "pk": 669, "fields": { - "type": "points", + "job": 27, + "label": 63, + "frame": 0, + "group": 0, + "source": "manual", + "type": "ellipse", "occluded": false, "outside": false, - "z_order": 0, - "points": "[133.81649280769233, 195.4883603907146]", + "z_order": 4, + "points": "[216.57, 208.01, 252.56, 191.65]", "rotation": 0.0, - "track": 13, - "frame": 6 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 19, + "model": "engine.labeledshape", + "pk": 670, "fields": { - "type": "points", + "job": 28, + "label": 64, + "frame": 0, + "group": 0, + "source": "manual", + "type": "rectangle", "occluded": false, "outside": false, "z_order": 0, - "points": "[188.94942364574058, 102.14894385926891]", + "points": "[349.36595443747683, 35.89987909780575, 377.50004176706534, 64.68824752808177]", "rotation": 0.0, - "track": 14, - "frame": 6 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 20, + "model": "engine.labeledshape", + "pk": 671, "fields": { - "type": "points", + "job": 27, + "label": 64, + "frame": 0, + "group": 0, + "source": "manual", + "type": "rectangle", "occluded": false, "outside": false, - "z_order": 0, - "points": "[269.3786601426267, 211.47877807640333]", + "z_order": 4, + "points": "[349.3662109375, 38.5166015625, 376.846017166401, 64.03356448933664]", "rotation": 0.0, - "track": 15, - "frame": 6 + "parent": null } }, { - "model": "engine.profile", + "model": "engine.labeledshapeattributeval", "pk": 1, "fields": { - "user": [ - "admin1" - ], - "rating": 0.0 + "spec": 2, + "value": "white", + "shape": 36 } }, { - "model": "engine.profile", + "model": "engine.labeledshapeattributeval", "pk": 2, "fields": { - "user": [ - "user1" - ], - "rating": 0.0 + "spec": 3, + "value": "val1", + "shape": 39 } }, { - "model": "engine.profile", + "model": "engine.labeledshapeattributeval", "pk": 3, "fields": { - "user": [ - "user2" - ], - "rating": 0.0 + "spec": 1, + "value": "mazda", + "shape": 42 } }, { - "model": "engine.profile", + "model": "engine.labeledshapeattributeval", "pk": 4, "fields": { - "user": [ - "user3" - ], - "rating": 0.0 + "spec": 7, + "value": "non-default", + "shape": 54 } }, { - "model": "engine.profile", + "model": "engine.labeledshapeattributeval", "pk": 5, "fields": { - "user": [ - "user4" - ], - "rating": 0.0 + "spec": 8, + "value": "black", + "shape": 55 } }, { - "model": "engine.profile", + "model": "engine.labeledshapeattributeval", "pk": 6, "fields": { - "user": [ - "worker1" - ], - "rating": 0.0 + "spec": 9, + "value": "non-default", + "shape": 56 } }, { - "model": "engine.profile", + "model": "engine.labeledshapeattributeval", "pk": 7, "fields": { - "user": [ - "worker2" - ], - "rating": 0.0 + "spec": 10, + "value": "black", + "shape": 57 } }, { - "model": "engine.profile", + "model": "engine.labeledshapeattributeval", "pk": 8, "fields": { - "user": [ - "worker3" - ], - "rating": 0.0 + "spec": 13, + "value": "false", + "shape": 670 } }, { - "model": "engine.profile", + "model": "engine.labeledshapeattributeval", "pk": 9, "fields": { - "user": [ - "worker4" - ], - "rating": 0.0 + "spec": 13, + "value": "true", + "shape": 671 } }, { - "model": "engine.profile", - "pk": 10, + "model": "engine.labeledtrack", + "pk": 1, "fields": { - "user": [ - "business1" - ], - "rating": 0.0 + "job": 18, + "label": 22, + "frame": 0, + "group": 0, + "source": "manual", + "parent": null } }, { - "model": "engine.profile", - "pk": 11, + "model": "engine.labeledtrack", + "pk": 2, "fields": { - "user": [ - "business2" - ], - "rating": 0.0 + "job": 18, + "label": 23, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 1 } }, { - "model": "engine.profile", - "pk": 12, + "model": "engine.labeledtrack", + "pk": 3, "fields": { - "user": [ - "business3" - ], - "rating": 0.0 + "job": 18, + "label": 24, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 1 } }, { - "model": "engine.profile", - "pk": 13, + "model": "engine.labeledtrack", + "pk": 4, "fields": { - "user": [ - "business4" - ], - "rating": 0.0 + "job": 18, + "label": 25, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 1 } }, { - "model": "engine.profile", - "pk": 14, + "model": "engine.labeledtrack", + "pk": 5, "fields": { - "user": [ - "dummy1" - ], - "rating": 0.0 + "job": 18, + "label": 26, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 1 } }, { - "model": "engine.profile", - "pk": 15, + "model": "engine.labeledtrack", + "pk": 6, "fields": { - "user": [ - "dummy2" - ], - "rating": 0.0 + "job": 25, + "label": 58, + "frame": 0, + "group": 0, + "source": "manual", + "parent": null } }, { - "model": "engine.profile", - "pk": 16, - "fields": { + "model": "engine.labeledtrack", + "pk": 7, + "fields": { + "job": 25, + "label": 59, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 6 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 8, + "fields": { + "job": 25, + "label": 60, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 6 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 9, + "fields": { + "job": 25, + "label": 61, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 6 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 10, + "fields": { + "job": 25, + "label": 62, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 6 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 11, + "fields": { + "job": 26, + "label": 58, + "frame": 6, + "group": 0, + "source": "manual", + "parent": null + } +}, +{ + "model": "engine.labeledtrack", + "pk": 12, + "fields": { + "job": 26, + "label": 59, + "frame": 6, + "group": 0, + "source": "manual", + "parent": 11 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 13, + "fields": { + "job": 26, + "label": 60, + "frame": 6, + "group": 0, + "source": "manual", + "parent": 11 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 14, + "fields": { + "job": 26, + "label": 61, + "frame": 6, + "group": 0, + "source": "manual", + "parent": 11 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 15, + "fields": { + "job": 26, + "label": 62, + "frame": 6, + "group": 0, + "source": "manual", + "parent": 11 + } +}, +{ + "model": "engine.labeledtrackattributeval", + "pk": 3, + "fields": { + "spec": 2, + "value": "white", + "track": 1 + } +}, +{ + "model": "engine.labeledtrackattributeval", + "pk": 4, + "fields": { + "spec": 3, + "value": "val1", + "track": 4 + } +}, +{ + "model": "engine.trackedshape", + "pk": 1, + "fields": { + "type": "skeleton", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[]", + "rotation": 0.0, + "track": 1, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 2, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[381.9130434782637, 355.0592829431864]", + "rotation": 0.0, + "track": 2, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 3, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[461.9389738212561, 583.320176176868]", + "rotation": 0.0, + "track": 3, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 4, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[655.6465767436227, 281.7391304347839]", + "rotation": 0.0, + "track": 4, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 5, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[708.000000000003, 586.0869565217404]", + "rotation": 0.0, + "track": 5, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 6, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[137.0966796875, 156.11214469590232]", + "rotation": 0.0, + "track": 2, + "frame": 3 + } +}, +{ + "model": "engine.trackedshape", + "pk": 7, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[217.12261003049207, 384.3730379295848]", + "rotation": 0.0, + "track": 3, + "frame": 3 + } +}, +{ + "model": "engine.trackedshape", + "pk": 8, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[410.83021295285835, 82.7919921875]", + "rotation": 0.0, + "track": 4, + "frame": 3 + } +}, +{ + "model": "engine.trackedshape", + "pk": 9, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[463.1836362092399, 387.13981827445605]", + "rotation": 0.0, + "track": 5, + "frame": 3 + } +}, +{ + "model": "engine.trackedshape", + "pk": 10, + "fields": { + "type": "skeleton", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[]", + "rotation": 0.0, + "track": 6, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 11, + "fields": { + "type": "points", + "occluded": false, + "outside": true, + "z_order": 0, + "points": "[230.39103314621025, 149.98846070356873]", + "rotation": 0.0, + "track": 7, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 12, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[230.39103314621025, 149.98846070356873]", + "rotation": 0.0, + "track": 7, + "frame": 3 + } +}, +{ + "model": "engine.trackedshape", + "pk": 13, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[292.80597636674844, 284.1818841927473]", + "rotation": 0.0, + "track": 8, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 14, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[377.016603158851, 94.95407858346152]", + "rotation": 0.0, + "track": 9, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 15, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[499.86507710826913, 316.59939612801213]", + "rotation": 0.0, + "track": 10, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 16, + "fields": { + "type": "skeleton", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[]", + "rotation": 0.0, + "track": 11, + "frame": 6 + } +}, +{ + "model": "engine.trackedshape", + "pk": 17, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[92.95325643333308, 129.2954675940839]", + "rotation": 0.0, + "track": 12, + "frame": 6 + } +}, +{ + "model": "engine.trackedshape", + "pk": 18, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[133.81649280769233, 195.4883603907146]", + "rotation": 0.0, + "track": 13, + "frame": 6 + } +}, +{ + "model": "engine.trackedshape", + "pk": 19, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[188.94942364574058, 102.14894385926891]", + "rotation": 0.0, + "track": 14, + "frame": 6 + } +}, +{ + "model": "engine.trackedshape", + "pk": 20, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[269.3786601426267, 211.47877807640333]", + "rotation": 0.0, + "track": 15, + "frame": 6 + } +}, +{ + "model": "engine.profile", + "pk": 1, + "fields": { + "user": [ + "admin1" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 2, + "fields": { + "user": [ + "user1" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 3, + "fields": { + "user": [ + "user2" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 4, + "fields": { + "user": [ + "user3" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 5, + "fields": { + "user": [ + "user4" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 6, + "fields": { + "user": [ + "worker1" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 7, + "fields": { + "user": [ + "worker2" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 8, + "fields": { + "user": [ + "worker3" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 9, + "fields": { + "user": [ + "worker4" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 10, + "fields": { + "user": [ + "business1" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 11, + "fields": { + "user": [ + "business2" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 12, + "fields": { + "user": [ + "business3" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 13, + "fields": { + "user": [ + "business4" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 14, + "fields": { + "user": [ + "dummy1" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 15, + "fields": { + "user": [ + "dummy2" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 16, + "fields": { "user": [ "dummy3" ], - "rating": 0.0 + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 17, + "fields": { + "user": [ + "dummy4" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 18, + "fields": { + "user": [ + "admin2" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 19, + "fields": { + "user": [ + "user5" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 20, + "fields": { + "user": [ + "user6" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 21, + "fields": { + "user": [ + "lonely_user" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.issue", + "pk": 1, + "fields": { + "frame": 0, + "position": "[244.58581235698148, 319.63386727689067, 326.9656750572103, 192.76887871853796, 543.6247139588122, 175.4691075514893, 835.2494279176244, 360.0000000000018, 609.5286041189956, 586.544622425632, 364.0361328125, 528.87890625, 244.58581235698148, 319.63386727689067]", + "job": 7, + "owner": [ + "user1" + ], + "assignee": null, + "created_date": "2022-03-16T11:04:39.444Z", + "updated_date": null, + "resolved": true + } +}, +{ + "model": "engine.issue", + "pk": 2, + "fields": { + "frame": 0, + "position": "[98.48046875, 696.72265625, 326.1220703125, 841.5859375]", + "job": 9, + "owner": [ + "business2" + ], + "assignee": null, + "created_date": "2022-03-16T11:07:22.170Z", + "updated_date": null, + "resolved": false + } +}, +{ + "model": "engine.issue", + "pk": 3, + "fields": { + "frame": 5, + "position": "[108.1845703125, 235.0, 720.0087890625, 703.3505859375]", + "job": 16, + "owner": [ + "business2" + ], + "assignee": null, + "created_date": "2022-03-16T11:08:18.367Z", + "updated_date": null, + "resolved": false + } +}, +{ + "model": "engine.issue", + "pk": 4, + "fields": { + "frame": 5, + "position": "[295.36328125, 243.6044921875, 932.23046875, 561.4921875]", + "job": 10, + "owner": [ + "user1" + ], + "assignee": [ + "user1" + ], + "created_date": "2022-03-16T12:40:00.764Z", + "updated_date": null, + "resolved": false + } +}, +{ + "model": "engine.issue", + "pk": 5, + "fields": { + "frame": 0, + "position": "[65.6189987163034, 100.96585365853753, 142.12734274711147, 362.6243902439037]", + "job": 11, + "owner": [ + "user6" + ], + "assignee": null, + "created_date": "2022-03-16T12:49:29.369Z", + "updated_date": null, + "resolved": false + } +}, +{ + "model": "engine.comment", + "pk": 1, + "fields": { + "issue": 1, + "owner": [ + "user1" + ], + "message": "Why are we still here?", + "created_date": "2022-03-16T11:04:39.447Z", + "updated_date": "2022-03-16T11:04:39.447Z" + } +}, +{ + "model": "engine.comment", + "pk": 2, + "fields": { + "issue": 1, + "owner": [ + "user1" + ], + "message": "Just to suffer?", + "created_date": "2022-03-16T11:04:49.821Z", + "updated_date": "2022-03-16T11:04:49.821Z" + } +}, +{ + "model": "engine.comment", + "pk": 3, + "fields": { + "issue": 2, + "owner": [ + "business2" + ], + "message": "Something should be here", + "created_date": "2022-03-16T11:07:22.173Z", + "updated_date": "2022-03-16T11:07:22.173Z" + } +}, +{ + "model": "engine.comment", + "pk": 4, + "fields": { + "issue": 3, + "owner": [ + "business2" + ], + "message": "Another one issue", + "created_date": "2022-03-16T11:08:18.370Z", + "updated_date": "2022-03-16T11:08:18.370Z" + } +}, +{ + "model": "engine.comment", + "pk": 5, + "fields": { + "issue": 4, + "owner": [ + "user1" + ], + "message": "Issue with empty frame", + "created_date": "2022-03-16T12:40:00.767Z", + "updated_date": "2022-03-16T12:40:00.767Z" + } +}, +{ + "model": "engine.comment", + "pk": 6, + "fields": { + "issue": 5, + "owner": [ + "user6" + ], + "message": "Wrong position", + "created_date": "2022-03-16T12:49:29.372Z", + "updated_date": "2022-03-16T12:49:29.372Z" + } +}, +{ + "model": "engine.manifest", + "pk": 1, + "fields": { + "filename": "manifest.jsonl", + "cloud_storage": 1 + } +}, +{ + "model": "engine.manifest", + "pk": 2, + "fields": { + "filename": "sub/manifest.jsonl", + "cloud_storage": 2 + } +}, +{ + "model": "engine.manifest", + "pk": 3, + "fields": { + "filename": "manifest.jsonl", + "cloud_storage": 3 + } +}, +{ + "model": "engine.cloudstorage", + "pk": 1, + "fields": { + "provider_type": "AWS_S3_BUCKET", + "resource": "public", + "display_name": "Bucket 1", + "owner": [ + "user1" + ], + "created_date": "2022-03-17T07:22:49.519Z", + "updated_date": "2022-03-17T07:22:49.529Z", + "credentials": "", + "credentials_type": "ANONYMOUS_ACCESS", + "specific_attributes": "endpoint_url=http%3A%2F%2Fminio%3A9000", + "description": "", + "organization": null } }, { - "model": "engine.profile", - "pk": 17, + "model": "engine.cloudstorage", + "pk": 2, "fields": { - "user": [ - "dummy4" + "provider_type": "AWS_S3_BUCKET", + "resource": "private", + "display_name": "Bucket 2", + "owner": [ + "business2" ], - "rating": 0.0 + "created_date": "2022-03-17T07:23:59.305Z", + "updated_date": "2022-07-13T12:46:45.587Z", + "credentials": "minio_access_key minio_secret_key", + "credentials_type": "KEY_SECRET_KEY_PAIR", + "specific_attributes": "endpoint_url=http%3A%2F%2Fminio%3A9000", + "description": "", + "organization": 2 } }, { - "model": "engine.profile", - "pk": 18, + "model": "engine.cloudstorage", + "pk": 3, "fields": { - "user": [ - "admin2" + "provider_type": "AWS_S3_BUCKET", + "resource": "importexportbucket", + "display_name": "Import/Export bucket", + "owner": [ + "admin1" ], - "rating": 0.0 + "created_date": "2022-06-29T12:56:18.257Z", + "updated_date": "2022-06-29T12:56:18.264Z", + "credentials": "minio_access_key minio_secret_key", + "credentials_type": "KEY_SECRET_KEY_PAIR", + "specific_attributes": "endpoint_url=http%3A%2F%2Fminio%3A9000", + "description": "Bucket for importing and exporting annotations and backups", + "organization": 2 } }, { - "model": "engine.profile", - "pk": 19, + "model": "engine.storage", + "pk": 1, "fields": { - "user": [ - "user5" - ], - "rating": 0.0 + "location": "cloud_storage", + "cloud_storage_id": 2 } }, { - "model": "engine.profile", - "pk": 20, + "model": "engine.storage", + "pk": 2, "fields": { - "user": [ - "user6" - ], - "rating": 0.0 + "location": "cloud_storage", + "cloud_storage_id": 2 } }, { - "model": "engine.profile", - "pk": 21, + "model": "engine.storage", + "pk": 3, "fields": { - "user": [ - "lonely_user" - ], - "rating": 0.0 + "location": "cloud_storage", + "cloud_storage_id": 2 } }, { - "model": "engine.issue", - "pk": 1, + "model": "engine.storage", + "pk": 4, "fields": { - "frame": 0, - "position": "[244.58581235698148, 319.63386727689067, 326.9656750572103, 192.76887871853796, 543.6247139588122, 175.4691075514893, 835.2494279176244, 360.0000000000018, 609.5286041189956, 586.544622425632, 364.0361328125, 528.87890625, 244.58581235698148, 319.63386727689067]", - "job": 7, - "owner": [ - "user1" - ], - "assignee": null, - "created_date": "2022-03-16T11:04:39.444Z", - "updated_date": null, - "resolved": true + "location": "cloud_storage", + "cloud_storage_id": 2 } }, { - "model": "engine.issue", - "pk": 2, + "model": "engine.storage", + "pk": 5, "fields": { - "frame": 0, - "position": "[98.48046875, 696.72265625, 326.1220703125, 841.5859375]", - "job": 9, - "owner": [ - "business2" - ], - "assignee": null, - "created_date": "2022-03-16T11:07:22.170Z", - "updated_date": null, - "resolved": false + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.issue", - "pk": 3, + "model": "engine.storage", + "pk": 6, "fields": { - "frame": 5, - "position": "[108.1845703125, 235.0, 720.0087890625, 703.3505859375]", - "job": 16, - "owner": [ - "business2" - ], - "assignee": null, - "created_date": "2022-03-16T11:08:18.367Z", - "updated_date": null, - "resolved": false + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 7, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 8, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 9, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 10, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 11, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 12, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 13, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 14, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 15, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 16, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 17, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 18, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 19, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 20, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 21, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 22, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 23, + "fields": { + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.issue", - "pk": 4, + "model": "engine.storage", + "pk": 24, "fields": { - "frame": 5, - "position": "[295.36328125, 243.6044921875, 932.23046875, 561.4921875]", - "job": 10, - "owner": [ - "user1" - ], - "assignee": [ - "user1" - ], - "created_date": "2022-03-16T12:40:00.764Z", - "updated_date": null, - "resolved": false + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.issue", - "pk": 5, + "model": "engine.storage", + "pk": 25, "fields": { - "frame": 0, - "position": "[65.6189987163034, 100.96585365853753, 142.12734274711147, 362.6243902439037]", - "job": 11, - "owner": [ - "user6" - ], - "assignee": null, - "created_date": "2022-03-16T12:49:29.369Z", - "updated_date": null, - "resolved": false + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.comment", - "pk": 1, + "model": "engine.storage", + "pk": 26, "fields": { - "issue": 1, - "owner": [ - "user1" - ], - "message": "Why are we still here?", - "created_date": "2022-03-16T11:04:39.447Z", - "updated_date": "2022-03-16T11:04:39.447Z" + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.comment", - "pk": 2, + "model": "engine.storage", + "pk": 27, "fields": { - "issue": 1, - "owner": [ - "user1" - ], - "message": "Just to suffer?", - "created_date": "2022-03-16T11:04:49.821Z", - "updated_date": "2022-03-16T11:04:49.821Z" + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.comment", - "pk": 3, + "model": "engine.storage", + "pk": 28, "fields": { - "issue": 2, - "owner": [ - "business2" - ], - "message": "Something should be here", - "created_date": "2022-03-16T11:07:22.173Z", - "updated_date": "2022-03-16T11:07:22.173Z" + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.comment", - "pk": 4, + "model": "engine.storage", + "pk": 29, "fields": { - "issue": 3, - "owner": [ - "business2" - ], - "message": "Another one issue", - "created_date": "2022-03-16T11:08:18.370Z", - "updated_date": "2022-03-16T11:08:18.370Z" + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.comment", - "pk": 5, + "model": "engine.storage", + "pk": 30, "fields": { - "issue": 4, - "owner": [ - "user1" - ], - "message": "Issue with empty frame", - "created_date": "2022-03-16T12:40:00.767Z", - "updated_date": "2022-03-16T12:40:00.767Z" + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.comment", - "pk": 6, + "model": "engine.storage", + "pk": 31, "fields": { - "issue": 5, - "owner": [ - "user6" - ], - "message": "Wrong position", - "created_date": "2022-03-16T12:49:29.372Z", - "updated_date": "2022-03-16T12:49:29.372Z" + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.manifest", - "pk": 1, + "model": "engine.storage", + "pk": 32, "fields": { - "filename": "manifest.jsonl", - "cloud_storage": 1 + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.manifest", - "pk": 2, + "model": "engine.storage", + "pk": 33, "fields": { - "filename": "sub/manifest.jsonl", - "cloud_storage": 2 + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.manifest", - "pk": 3, + "model": "engine.storage", + "pk": 34, "fields": { - "filename": "manifest.jsonl", - "cloud_storage": 3 + "location": "local", + "cloud_storage_id": null } }, { - "model": "engine.cloudstorage", + "model": "webhooks.webhook", "pk": 1, "fields": { - "provider_type": "AWS_S3_BUCKET", - "resource": "public", - "display_name": "Bucket 1", + "target_url": "http://example.com/", + "description": "", + "events": "delete:task,update:task,create:task,update:job", + "type": "project", + "content_type": "application/json", + "secret": "", + "is_active": true, + "enable_ssl": true, + "created_date": "2022-09-28T12:16:28.311Z", + "updated_date": "2022-09-28T12:16:28.311Z", "owner": [ "user1" ], - "created_date": "2022-03-17T07:22:49.519Z", - "updated_date": "2022-03-17T07:22:49.529Z", - "credentials": "", - "credentials_type": "ANONYMOUS_ACCESS", - "specific_attributes": "endpoint_url=http%3A%2F%2Fminio%3A9000", - "description": "", + "project": 6, "organization": null } }, { - "model": "engine.cloudstorage", + "model": "webhooks.webhook", "pk": 2, "fields": { - "provider_type": "AWS_S3_BUCKET", - "resource": "private", - "display_name": "Bucket 2", + "target_url": "http://example.com/", + "description": "", + "events": "delete:comment,update:issue,update:comment,update:job,update:project,delete:task,create:comment,delete:issue,update:task,create:task,create:issue", + "type": "project", + "content_type": "application/json", + "secret": "", + "is_active": true, + "enable_ssl": true, + "created_date": "2022-09-28T12:18:12.412Z", + "updated_date": "2022-09-28T12:18:12.412Z", "owner": [ - "business2" + "business1" ], - "created_date": "2022-03-17T07:23:59.305Z", - "updated_date": "2022-07-13T12:46:45.587Z", - "credentials": "minio_access_key minio_secret_key", - "credentials_type": "KEY_SECRET_KEY_PAIR", - "specific_attributes": "endpoint_url=http%3A%2F%2Fminio%3A9000", + "project": 1, + "organization": null + } +}, +{ + "model": "webhooks.webhook", + "pk": 3, + "fields": { + "target_url": "http://example.com", "description": "", + "events": "update:issue,delete:issue,create:issue,update:project", + "type": "project", + "content_type": "application/json", + "secret": "", + "is_active": true, + "enable_ssl": true, + "created_date": "2022-09-28T12:19:49.744Z", + "updated_date": "2022-09-28T12:19:49.744Z", + "owner": [ + "user2" + ], + "project": 3, "organization": 2 } }, { - "model": "engine.cloudstorage", - "pk": 3, + "model": "webhooks.webhook", + "pk": 6, "fields": { - "provider_type": "AWS_S3_BUCKET", - "resource": "importexportbucket", - "display_name": "Import/Export bucket", + "target_url": "http://example.com/", + "description": "", + "events": "delete:task,create:task,update:issue,update:membership,create:comment,delete:comment,update:job,update:comment,create:project,delete:invitation,create:invitation,update:project,update:task,delete:membership,delete:issue,delete:project,update:organization,create:issue", + "type": "organization", + "content_type": "application/json", + "secret": "", + "is_active": true, + "enable_ssl": true, + "created_date": "2022-09-29T08:00:48.440Z", + "updated_date": "2022-09-29T08:00:48.441Z", "owner": [ "admin1" ], - "created_date": "2022-06-29T12:56:18.257Z", - "updated_date": "2022-06-29T12:56:18.264Z", - "credentials": "minio_access_key minio_secret_key", - "credentials_type": "KEY_SECRET_KEY_PAIR", - "specific_attributes": "endpoint_url=http%3A%2F%2Fminio%3A9000", - "description": "Bucket for importing and exporting annotations and backups", - "organization": 2 + "project": null, + "organization": 1 } }, { - "model": "engine.storage", + "model": "quality_control.qualityreport", "pk": 1, "fields": { - "location": "cloud_storage", - "cloud_storage_id": 2 + "job": null, + "task": 22, + "parent": null, + "created_date": "2023-05-23T14:49:50.920Z", + "target_last_updated": "2023-05-23T14:45:08.348Z", + "gt_last_updated": "2023-05-23T14:44:02.697Z", + "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"oriented_lines\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share_percent\": 0.36363636363636365,\n \"frames\": [\n 0,\n 1,\n 2,\n 5\n ],\n \"conflict_count\": 37,\n \"warning_count\": 15,\n \"error_count\": 22,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 9,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n },\n \"annotations\": {\n \"valid_count\": 22,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 44,\n \"ds_count\": 35,\n \"gt_count\": 34,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 21,\n 1,\n 0,\n 7\n ],\n [\n 2,\n 1,\n 0,\n 3\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 8,\n 1,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.7241379310344828,\n 0.16666666666666666,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.6774193548387096,\n 0.3333333333333333,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.5384615384615384,\n 0.125,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5,\n \"precision\": 0.6285714285714286,\n \"recall\": 0.6470588235294118\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 25,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 44,\n \"ds_count\": 35,\n \"gt_count\": 34,\n \"mean_iou\": 0.13517879816680567,\n \"accuracy\": 0.5681818181818182\n },\n \"label\": {\n \"valid_count\": 22,\n \"invalid_count\": 3,\n \"total_count\": 25,\n \"accuracy\": 0.88\n }\n },\n \"frame_count\": 4,\n \"mean_conflict_count\": 9.25\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 664,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 624,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 638,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 607,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 661,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 608,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 641,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 604,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 640,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 605,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 665,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 625,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 613,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 627,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 628,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 644,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 660,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 666,\n \"job_id\": 27,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 658,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 668,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 659,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 669,\n \"job_id\": 27,\n \"type\": \"ellipse\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 637,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 639,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 667,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 662,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 629,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 665,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 625,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 642,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 603,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 640,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 605,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 642,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_attributes\",\n \"annotation_ids\": [\n {\n \"obj_id\": 671,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 670,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 652,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 611,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 656,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 612,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 646,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 620,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 649,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 617,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 650,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 610,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 651,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 609,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 22,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 38,\n \"ds_count\": 35,\n \"gt_count\": 28,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 21,\n 1,\n 0,\n 7\n ],\n [\n 2,\n 1,\n 0,\n 3\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 2,\n 1,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.7241379310344828,\n 0.16666666666666666,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.84,\n 0.3333333333333333,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.6363636363636364,\n 0.125,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5789473684210527,\n \"precision\": 0.6285714285714286,\n \"recall\": 0.7857142857142857\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 25,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 38,\n \"ds_count\": 35,\n \"gt_count\": 28,\n \"mean_iou\": 0.5407151926672227,\n \"accuracy\": 0.6578947368421053\n },\n \"label\": {\n \"valid_count\": 22,\n \"invalid_count\": 3,\n \"total_count\": 25,\n \"accuracy\": 0.88\n }\n },\n \"conflict_count\": 31,\n \"warning_count\": 15,\n \"error_count\": 16,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 3,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 636,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 634,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 630,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 633,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 631,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 635,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 6,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n },\n \"5\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" + } +}, +{ + "model": "quality_control.qualityreport", + "pk": 2, + "fields": { + "job": 27, + "task": null, + "parent": 1, + "created_date": "2023-05-23T14:49:50.924Z", + "target_last_updated": "2023-05-23T14:45:08.385Z", + "gt_last_updated": "2023-05-23T14:44:02.697Z", + "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"oriented_lines\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share_percent\": 0.36363636363636365,\n \"frames\": [\n 0,\n 1,\n 2,\n 5\n ],\n \"conflict_count\": 37,\n \"warning_count\": 15,\n \"error_count\": 22,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 9,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n },\n \"annotations\": {\n \"valid_count\": 22,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 44,\n \"ds_count\": 35,\n \"gt_count\": 34,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 21,\n 1,\n 0,\n 7\n ],\n [\n 2,\n 1,\n 0,\n 3\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 8,\n 1,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.7241379310344828,\n 0.16666666666666666,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.6774193548387096,\n 0.3333333333333333,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.5384615384615384,\n 0.125,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5,\n \"precision\": 0.6285714285714286,\n \"recall\": 0.6470588235294118\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 25,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 44,\n \"ds_count\": 35,\n \"gt_count\": 34,\n \"mean_iou\": 0.13517879816680567,\n \"accuracy\": 0.5681818181818182\n },\n \"label\": {\n \"valid_count\": 22,\n \"invalid_count\": 3,\n \"total_count\": 25,\n \"accuracy\": 0.88\n }\n },\n \"frame_count\": 4,\n \"mean_conflict_count\": 9.25\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 664,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 624,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 638,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 607,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 661,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 608,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 641,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 604,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 640,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 605,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 665,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 625,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 613,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 627,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 628,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 644,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 660,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 666,\n \"job_id\": 27,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 658,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 668,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 659,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 669,\n \"job_id\": 27,\n \"type\": \"ellipse\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 637,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 639,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 667,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 662,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 629,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 665,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 625,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 642,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 603,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 640,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 605,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 642,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_attributes\",\n \"annotation_ids\": [\n {\n \"obj_id\": 671,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 670,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 652,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 611,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 656,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 612,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 646,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 620,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 649,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 617,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 650,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 610,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 651,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 609,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 22,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 38,\n \"ds_count\": 35,\n \"gt_count\": 28,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 21,\n 1,\n 0,\n 7\n ],\n [\n 2,\n 1,\n 0,\n 3\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 2,\n 1,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.7241379310344828,\n 0.16666666666666666,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.84,\n 0.3333333333333333,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.6363636363636364,\n 0.125,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5789473684210527,\n \"precision\": 0.6285714285714286,\n \"recall\": 0.7857142857142857\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 25,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 38,\n \"ds_count\": 35,\n \"gt_count\": 28,\n \"mean_iou\": 0.5407151926672227,\n \"accuracy\": 0.6578947368421053\n },\n \"label\": {\n \"valid_count\": 22,\n \"invalid_count\": 3,\n \"total_count\": 25,\n \"accuracy\": 0.88\n }\n },\n \"conflict_count\": 31,\n \"warning_count\": 15,\n \"error_count\": 16,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 3,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 636,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 634,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 630,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 633,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 631,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 635,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 6,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n },\n \"5\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 1, + "fields": { + "report": 2, + "frame": 0, + "type": "low_overlap", + "importance": "warning" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 2, "fields": { - "location": "cloud_storage", - "cloud_storage_id": 2 + "report": 2, + "frame": 0, + "type": "low_overlap", + "importance": "warning" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 3, "fields": { - "location": "cloud_storage", - "cloud_storage_id": 2 + "report": 2, + "frame": 0, + "type": "low_overlap", + "importance": "warning" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 4, "fields": { - "location": "cloud_storage", - "cloud_storage_id": 2 + "report": 2, + "frame": 0, + "type": "low_overlap", + "importance": "warning" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 5, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "low_overlap", + "importance": "warning" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 6, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "low_overlap", + "importance": "warning" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 7, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "missing_annotation", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 8, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "missing_annotation", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 9, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "missing_annotation", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 10, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 11, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 12, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 13, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 14, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 15, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 16, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 17, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 18, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 19, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 20, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "mismatching_label", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 21, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "mismatching_label", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 22, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "mismatching_label", + "importance": "error" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 23, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "mismatching_direction", + "importance": "warning" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 24, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "covered_annotation", + "importance": "warning" } }, { - "model": "engine.storage", + "model": "quality_control.annotationconflict", "pk": 25, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 0, + "type": "mismatching_attributes", + "importance": "warning" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 26, + "fields": { + "report": 2, + "frame": 0, + "type": "mismatching_groups", + "importance": "warning" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 27, + "fields": { + "report": 2, + "frame": 0, + "type": "mismatching_groups", + "importance": "warning" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 28, + "fields": { + "report": 2, + "frame": 0, + "type": "mismatching_groups", + "importance": "warning" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 29, + "fields": { + "report": 2, + "frame": 0, + "type": "mismatching_groups", + "importance": "warning" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 30, + "fields": { + "report": 2, + "frame": 0, + "type": "mismatching_groups", + "importance": "warning" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 31, + "fields": { + "report": 2, + "frame": 0, + "type": "mismatching_groups", + "importance": "warning" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 32, + "fields": { + "report": 2, + "frame": 1, + "type": "missing_annotation", + "importance": "error" } }, { - "model": "engine.storage", - "pk": 26, + "model": "quality_control.annotationconflict", + "pk": 33, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 1, + "type": "missing_annotation", + "importance": "error" } }, { - "model": "engine.storage", - "pk": 27, + "model": "quality_control.annotationconflict", + "pk": 34, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 1, + "type": "missing_annotation", + "importance": "error" } }, { - "model": "engine.storage", - "pk": 28, + "model": "quality_control.annotationconflict", + "pk": 35, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 1, + "type": "missing_annotation", + "importance": "error" } }, { - "model": "engine.storage", - "pk": 29, + "model": "quality_control.annotationconflict", + "pk": 36, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 1, + "type": "missing_annotation", + "importance": "error" } }, { - "model": "engine.storage", - "pk": 30, + "model": "quality_control.annotationconflict", + "pk": 37, "fields": { - "location": "local", - "cloud_storage_id": null + "report": 2, + "frame": 1, + "type": "missing_annotation", + "importance": "error" } }, { - "model": "engine.storage", - "pk": 31, + "model": "quality_control.annotationid", + "pk": 1, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 1, + "obj_id": 664, + "job_id": 27, + "type": "rectangle" } }, { - "model": "engine.storage", - "pk": 32, + "model": "quality_control.annotationid", + "pk": 2, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 1, + "obj_id": 624, + "job_id": 28, + "type": "rectangle" } }, { - "model": "engine.storage", - "pk": 33, + "model": "quality_control.annotationid", + "pk": 3, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 2, + "obj_id": 638, + "job_id": 27, + "type": "rectangle" } }, { - "model": "engine.storage", - "pk": 34, + "model": "quality_control.annotationid", + "pk": 4, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 2, + "obj_id": 607, + "job_id": 28, + "type": "rectangle" } }, { - "model": "webhooks.webhook", - "pk": 1, + "model": "quality_control.annotationid", + "pk": 5, "fields": { - "target_url": "http://example.com/", - "description": "", - "events": "delete:task,update:task,create:task,update:job", - "type": "project", - "content_type": "application/json", - "secret": "", - "is_active": true, - "enable_ssl": true, - "created_date": "2022-09-28T12:16:28.311Z", - "updated_date": "2022-09-28T12:16:28.311Z", - "owner": [ - "user1" - ], - "project": 6, - "organization": null + "conflict": 3, + "obj_id": 661, + "job_id": 27, + "type": "points" } }, { - "model": "webhooks.webhook", - "pk": 2, + "model": "quality_control.annotationid", + "pk": 6, "fields": { - "target_url": "http://example.com/", - "description": "", - "events": "delete:comment,update:issue,update:comment,update:job,update:project,delete:task,create:comment,delete:issue,update:task,create:task,create:issue", - "type": "project", - "content_type": "application/json", - "secret": "", - "is_active": true, - "enable_ssl": true, - "created_date": "2022-09-28T12:18:12.412Z", - "updated_date": "2022-09-28T12:18:12.412Z", - "owner": [ - "business1" - ], - "project": 1, - "organization": null + "conflict": 3, + "obj_id": 608, + "job_id": 28, + "type": "points" } }, { - "model": "webhooks.webhook", - "pk": 3, + "model": "quality_control.annotationid", + "pk": 7, "fields": { - "target_url": "http://example.com", - "description": "", - "events": "update:issue,delete:issue,create:issue,update:project", - "type": "project", - "content_type": "application/json", - "secret": "", - "is_active": true, - "enable_ssl": true, - "created_date": "2022-09-28T12:19:49.744Z", - "updated_date": "2022-09-28T12:19:49.744Z", - "owner": [ - "user2" - ], - "project": 3, - "organization": 2 + "conflict": 4, + "obj_id": 641, + "job_id": 27, + "type": "polygon" } }, { - "model": "webhooks.webhook", - "pk": 6, + "model": "quality_control.annotationid", + "pk": 8, "fields": { - "target_url": "http://example.com/", - "description": "", - "events": "delete:task,create:task,update:issue,update:membership,create:comment,delete:comment,update:job,update:comment,create:project,delete:invitation,create:invitation,update:project,update:task,delete:membership,delete:issue,delete:project,update:organization,create:issue", - "type": "organization", - "content_type": "application/json", - "secret": "", - "is_active": true, - "enable_ssl": true, - "created_date": "2022-09-29T08:00:48.440Z", - "updated_date": "2022-09-29T08:00:48.441Z", - "owner": [ - "admin1" - ], - "project": null, - "organization": 1 + "conflict": 4, + "obj_id": 604, + "job_id": 28, + "type": "polygon" } }, { - "model": "quality_control.qualityreport", - "pk": 1, + "model": "quality_control.annotationid", + "pk": 9, "fields": { - "job": null, - "task": 22, - "parent": null, - "created_date": "2023-05-18T18:19:52.294Z", - "target_last_updated": "2023-04-14T15:03:25.969Z", - "gt_last_updated": "2023-04-14T15:03:25.984Z", - "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"oriented_lines\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share_percent\": 0.36363636363636365,\n \"frames\": [\n 0,\n 1,\n 2,\n 5\n ],\n \"conflict_count\": 17,\n \"warning_count\": 5,\n \"error_count\": 12,\n \"conflicts_by_type\": {\n \"low_overlap\": 3,\n \"extra_annotation\": 5,\n \"mismatching_label\": 1,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"missing_annotation\": 6\n },\n \"annotations\": {\n \"valid_count\": 7,\n \"missing_count\": 6,\n \"extra_count\": 5,\n \"total_count\": 19,\n \"ds_count\": 13,\n \"gt_count\": 14,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 7,\n 1,\n 0,\n 2\n ],\n [\n 0,\n 0,\n 0,\n 3\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 6,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.7,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.5384615384615384,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.4375,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.3684210526315789,\n \"precision\": 0.5384615384615384,\n \"recall\": 0.5\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 8,\n \"missing_count\": 6,\n \"extra_count\": 5,\n \"total_count\": 19,\n \"ds_count\": 13,\n \"gt_count\": 14,\n \"mean_iou\": 0.12256680179050185,\n \"accuracy\": 0.42105263157894735\n },\n \"label\": {\n \"valid_count\": 7,\n \"invalid_count\": 1,\n \"total_count\": 8,\n \"accuracy\": 0.875\n }\n },\n \"frame_count\": 4,\n \"mean_conflict_count\": 4.25\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 581,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 550,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 584,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 547,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 583,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 548,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 587,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 601,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 602,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 582,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 580,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 585,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 546,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 583,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 548,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 585,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 7,\n \"missing_count\": 0,\n \"extra_count\": 5,\n \"total_count\": 13,\n \"ds_count\": 13,\n \"gt_count\": 8,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 7,\n 1,\n 0,\n 2\n ],\n [\n 0,\n 0,\n 0,\n 3\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.7,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 1.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.7,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5384615384615384,\n \"precision\": 0.5384615384615384,\n \"recall\": 0.875\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 8,\n \"missing_count\": 0,\n \"extra_count\": 5,\n \"total_count\": 13,\n \"ds_count\": 13,\n \"gt_count\": 8,\n \"mean_iou\": 0.4902672071620074,\n \"accuracy\": 0.6153846153846154\n },\n \"label\": {\n \"valid_count\": 7,\n \"invalid_count\": 1,\n \"total_count\": 8,\n \"accuracy\": 0.875\n }\n },\n \"conflict_count\": 11,\n \"warning_count\": 5,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"low_overlap\": 3,\n \"extra_annotation\": 5,\n \"mismatching_label\": 1,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 579,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 577,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 573,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 576,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 574,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 578,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 6,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n },\n \"5\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" + "conflict": 5, + "obj_id": 640, + "job_id": 27, + "type": "polyline" } }, { - "model": "quality_control.qualityreport", - "pk": 2, + "model": "quality_control.annotationid", + "pk": 10, "fields": { - "job": 27, - "task": null, - "parent": 1, - "created_date": "2023-05-18T18:19:52.298Z", - "target_last_updated": "2023-04-14T14:58:50.944Z", - "gt_last_updated": "2023-04-14T15:03:25.984Z", - "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"oriented_lines\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share_percent\": 0.36363636363636365,\n \"frames\": [\n 0,\n 1,\n 2,\n 5\n ],\n \"conflict_count\": 17,\n \"warning_count\": 5,\n \"error_count\": 12,\n \"conflicts_by_type\": {\n \"low_overlap\": 3,\n \"extra_annotation\": 5,\n \"mismatching_label\": 1,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"missing_annotation\": 6\n },\n \"annotations\": {\n \"valid_count\": 7,\n \"missing_count\": 6,\n \"extra_count\": 5,\n \"total_count\": 19,\n \"ds_count\": 13,\n \"gt_count\": 14,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 7,\n 1,\n 0,\n 2\n ],\n [\n 0,\n 0,\n 0,\n 3\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 6,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.7,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.5384615384615384,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.4375,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.3684210526315789,\n \"precision\": 0.5384615384615384,\n \"recall\": 0.5\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 8,\n \"missing_count\": 6,\n \"extra_count\": 5,\n \"total_count\": 19,\n \"ds_count\": 13,\n \"gt_count\": 14,\n \"mean_iou\": 0.12256680179050185,\n \"accuracy\": 0.42105263157894735\n },\n \"label\": {\n \"valid_count\": 7,\n \"invalid_count\": 1,\n \"total_count\": 8,\n \"accuracy\": 0.875\n }\n },\n \"frame_count\": 4,\n \"mean_conflict_count\": 4.25\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 581,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 550,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 584,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 547,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 583,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 548,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 587,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 601,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 602,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 582,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 580,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 585,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 546,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 583,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 548,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 585,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 7,\n \"missing_count\": 0,\n \"extra_count\": 5,\n \"total_count\": 13,\n \"ds_count\": 13,\n \"gt_count\": 8,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 7,\n 1,\n 0,\n 2\n ],\n [\n 0,\n 0,\n 0,\n 3\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.7,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 1.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.7,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5384615384615384,\n \"precision\": 0.5384615384615384,\n \"recall\": 0.875\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 8,\n \"missing_count\": 0,\n \"extra_count\": 5,\n \"total_count\": 13,\n \"ds_count\": 13,\n \"gt_count\": 8,\n \"mean_iou\": 0.4902672071620074,\n \"accuracy\": 0.6153846153846154\n },\n \"label\": {\n \"valid_count\": 7,\n \"invalid_count\": 1,\n \"total_count\": 8,\n \"accuracy\": 0.875\n }\n },\n \"conflict_count\": 11,\n \"warning_count\": 5,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"low_overlap\": 3,\n \"extra_annotation\": 5,\n \"mismatching_label\": 1,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 579,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 577,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 573,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 576,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 574,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 578,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 6,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n },\n \"5\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"cat\",\n \"dog\",\n \"sk\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" + "conflict": 5, + "obj_id": 605, + "job_id": 28, + "type": "polyline" } }, { - "model": "quality_control.annotationconflict", - "pk": 1, + "model": "quality_control.annotationid", + "pk": 11, "fields": { - "report": 2, - "frame": 0, - "type": "low_overlap", - "importance": "warning" + "conflict": 6, + "obj_id": 665, + "job_id": 27, + "type": "points" } }, { - "model": "quality_control.annotationconflict", - "pk": 2, + "model": "quality_control.annotationid", + "pk": 12, "fields": { - "report": 2, - "frame": 0, - "type": "low_overlap", - "importance": "warning" + "conflict": 6, + "obj_id": 625, + "job_id": 28, + "type": "points" } }, { - "model": "quality_control.annotationconflict", - "pk": 3, + "model": "quality_control.annotationid", + "pk": 13, "fields": { - "report": 2, - "frame": 0, - "type": "low_overlap", - "importance": "warning" + "conflict": 7, + "obj_id": 613, + "job_id": 28, + "type": "rectangle" } }, { - "model": "quality_control.annotationconflict", - "pk": 4, + "model": "quality_control.annotationid", + "pk": 14, "fields": { - "report": 2, - "frame": 0, - "type": "extra_annotation", - "importance": "error" + "conflict": 8, + "obj_id": 627, + "job_id": 28, + "type": "points" } }, { - "model": "quality_control.annotationconflict", - "pk": 5, + "model": "quality_control.annotationid", + "pk": 15, "fields": { - "report": 2, - "frame": 0, - "type": "extra_annotation", - "importance": "error" + "conflict": 9, + "obj_id": 628, + "job_id": 28, + "type": "points" } }, { - "model": "quality_control.annotationconflict", - "pk": 6, + "model": "quality_control.annotationid", + "pk": 16, "fields": { - "report": 2, - "frame": 0, - "type": "extra_annotation", - "importance": "error" + "conflict": 10, + "obj_id": 644, + "job_id": 27, + "type": "rectangle" } }, { - "model": "quality_control.annotationconflict", - "pk": 7, + "model": "quality_control.annotationid", + "pk": 17, "fields": { - "report": 2, - "frame": 0, - "type": "extra_annotation", - "importance": "error" + "conflict": 11, + "obj_id": 660, + "job_id": 27, + "type": "rectangle" } }, { - "model": "quality_control.annotationconflict", - "pk": 8, + "model": "quality_control.annotationid", + "pk": 18, "fields": { - "report": 2, - "frame": 0, - "type": "extra_annotation", - "importance": "error" + "conflict": 12, + "obj_id": 666, + "job_id": 27, + "type": "points" } }, { - "model": "quality_control.annotationconflict", - "pk": 9, + "model": "quality_control.annotationid", + "pk": 19, "fields": { - "report": 2, - "frame": 0, - "type": "mismatching_label", - "importance": "error" + "conflict": 13, + "obj_id": 658, + "job_id": 27, + "type": "polygon" } }, { - "model": "quality_control.annotationconflict", - "pk": 10, + "model": "quality_control.annotationid", + "pk": 20, "fields": { - "report": 2, - "frame": 0, - "type": "mismatching_direction", - "importance": "warning" + "conflict": 14, + "obj_id": 668, + "job_id": 27, + "type": "polygon" } }, { - "model": "quality_control.annotationconflict", - "pk": 11, + "model": "quality_control.annotationid", + "pk": 21, "fields": { - "report": 2, - "frame": 0, - "type": "covered_annotation", - "importance": "warning" + "conflict": 15, + "obj_id": 659, + "job_id": 27, + "type": "polygon" } }, { - "model": "quality_control.annotationconflict", - "pk": 12, + "model": "quality_control.annotationid", + "pk": 22, "fields": { - "report": 2, - "frame": 1, - "type": "missing_annotation", - "importance": "error" + "conflict": 16, + "obj_id": 669, + "job_id": 27, + "type": "ellipse" } }, { - "model": "quality_control.annotationconflict", - "pk": 13, + "model": "quality_control.annotationid", + "pk": 23, "fields": { - "report": 2, - "frame": 1, - "type": "missing_annotation", - "importance": "error" + "conflict": 17, + "obj_id": 637, + "job_id": 27, + "type": "polyline" } }, { - "model": "quality_control.annotationconflict", - "pk": 14, + "model": "quality_control.annotationid", + "pk": 24, "fields": { - "report": 2, - "frame": 1, - "type": "missing_annotation", - "importance": "error" + "conflict": 18, + "obj_id": 639, + "job_id": 27, + "type": "polyline" } }, { - "model": "quality_control.annotationconflict", - "pk": 15, + "model": "quality_control.annotationid", + "pk": 25, "fields": { - "report": 2, - "frame": 1, - "type": "missing_annotation", - "importance": "error" + "conflict": 19, + "obj_id": 667, + "job_id": 27, + "type": "polyline" } }, { - "model": "quality_control.annotationconflict", - "pk": 16, + "model": "quality_control.annotationid", + "pk": 26, "fields": { - "report": 2, - "frame": 1, - "type": "missing_annotation", - "importance": "error" + "conflict": 20, + "obj_id": 662, + "job_id": 27, + "type": "points" } }, { - "model": "quality_control.annotationconflict", - "pk": 17, + "model": "quality_control.annotationid", + "pk": 27, "fields": { - "report": 2, - "frame": 1, - "type": "missing_annotation", - "importance": "error" + "conflict": 20, + "obj_id": 629, + "job_id": 28, + "type": "points" } }, { "model": "quality_control.annotationid", - "pk": 1, + "pk": 28, "fields": { - "conflict": 1, - "obj_id": 581, + "conflict": 21, + "obj_id": 665, "job_id": 27, - "type": "rectangle" + "type": "points" } }, { "model": "quality_control.annotationid", - "pk": 2, + "pk": 29, "fields": { - "conflict": 1, - "obj_id": 550, + "conflict": 21, + "obj_id": 625, "job_id": 28, - "type": "rectangle" + "type": "points" } }, { "model": "quality_control.annotationid", - "pk": 3, + "pk": 30, "fields": { - "conflict": 2, - "obj_id": 584, + "conflict": 22, + "obj_id": 642, "job_id": 27, - "type": "polygon" + "type": "mask" } }, { "model": "quality_control.annotationid", - "pk": 4, + "pk": 31, "fields": { - "conflict": 2, - "obj_id": 547, + "conflict": 22, + "obj_id": 603, "job_id": 28, "type": "polygon" } }, { "model": "quality_control.annotationid", - "pk": 5, + "pk": 32, "fields": { - "conflict": 3, - "obj_id": 583, + "conflict": 23, + "obj_id": 640, "job_id": 27, "type": "polyline" } }, { "model": "quality_control.annotationid", - "pk": 6, + "pk": 33, "fields": { - "conflict": 3, - "obj_id": 548, + "conflict": 23, + "obj_id": 605, "job_id": 28, "type": "polyline" } }, { "model": "quality_control.annotationid", - "pk": 7, + "pk": 34, "fields": { - "conflict": 4, - "obj_id": 587, + "conflict": 24, + "obj_id": 642, "job_id": 27, - "type": "rectangle" + "type": "mask" } }, { "model": "quality_control.annotationid", - "pk": 8, + "pk": 35, "fields": { - "conflict": 5, - "obj_id": 601, + "conflict": 25, + "obj_id": 671, "job_id": 27, - "type": "polygon" + "type": "rectangle" } }, { "model": "quality_control.annotationid", - "pk": 9, + "pk": 36, "fields": { - "conflict": 6, - "obj_id": 602, + "conflict": 25, + "obj_id": 670, + "job_id": 28, + "type": "rectangle" + } +}, +{ + "model": "quality_control.annotationid", + "pk": 37, + "fields": { + "conflict": 26, + "obj_id": 652, "job_id": 27, - "type": "polygon" + "type": "rectangle" } }, { "model": "quality_control.annotationid", - "pk": 10, + "pk": 38, "fields": { - "conflict": 7, - "obj_id": 582, + "conflict": 26, + "obj_id": 611, + "job_id": 28, + "type": "rectangle" + } +}, +{ + "model": "quality_control.annotationid", + "pk": 39, + "fields": { + "conflict": 27, + "obj_id": 656, "job_id": 27, - "type": "polyline" + "type": "rectangle" } }, { "model": "quality_control.annotationid", - "pk": 11, + "pk": 40, "fields": { - "conflict": 8, - "obj_id": 580, + "conflict": 27, + "obj_id": 612, + "job_id": 28, + "type": "rectangle" + } +}, +{ + "model": "quality_control.annotationid", + "pk": 41, + "fields": { + "conflict": 28, + "obj_id": 646, "job_id": 27, - "type": "polyline" + "type": "rectangle" } }, { "model": "quality_control.annotationid", - "pk": 12, + "pk": 42, "fields": { - "conflict": 9, - "obj_id": 585, + "conflict": 28, + "obj_id": 620, + "job_id": 28, + "type": "rectangle" + } +}, +{ + "model": "quality_control.annotationid", + "pk": 43, + "fields": { + "conflict": 29, + "obj_id": 649, "job_id": 27, - "type": "mask" + "type": "rectangle" } }, { "model": "quality_control.annotationid", - "pk": 13, + "pk": 44, "fields": { - "conflict": 9, - "obj_id": 546, + "conflict": 29, + "obj_id": 617, "job_id": 28, - "type": "polygon" + "type": "rectangle" } }, { "model": "quality_control.annotationid", - "pk": 14, + "pk": 45, "fields": { - "conflict": 10, - "obj_id": 583, + "conflict": 30, + "obj_id": 650, "job_id": 27, - "type": "polyline" + "type": "rectangle" } }, { "model": "quality_control.annotationid", - "pk": 15, + "pk": 46, "fields": { - "conflict": 10, - "obj_id": 548, + "conflict": 30, + "obj_id": 610, "job_id": 28, - "type": "polyline" + "type": "rectangle" } }, { "model": "quality_control.annotationid", - "pk": 16, + "pk": 47, "fields": { - "conflict": 11, - "obj_id": 585, + "conflict": 31, + "obj_id": 651, "job_id": 27, - "type": "mask" + "type": "rectangle" } }, { "model": "quality_control.annotationid", - "pk": 17, + "pk": 48, "fields": { - "conflict": 12, - "obj_id": 579, + "conflict": 31, + "obj_id": 609, "job_id": 28, "type": "rectangle" } }, { "model": "quality_control.annotationid", - "pk": 18, + "pk": 49, "fields": { - "conflict": 13, - "obj_id": 577, + "conflict": 32, + "obj_id": 636, + "job_id": 28, + "type": "rectangle" + } +}, +{ + "model": "quality_control.annotationid", + "pk": 50, + "fields": { + "conflict": 33, + "obj_id": 634, "job_id": 28, "type": "points" } }, { "model": "quality_control.annotationid", - "pk": 19, + "pk": 51, "fields": { - "conflict": 14, - "obj_id": 573, + "conflict": 34, + "obj_id": 630, "job_id": 28, "type": "polygon" } }, { "model": "quality_control.annotationid", - "pk": 20, + "pk": 52, "fields": { - "conflict": 15, - "obj_id": 576, + "conflict": 35, + "obj_id": 633, "job_id": 28, "type": "mask" } }, { "model": "quality_control.annotationid", - "pk": 21, + "pk": 53, "fields": { - "conflict": 16, - "obj_id": 574, + "conflict": 36, + "obj_id": 631, "job_id": 28, "type": "ellipse" } }, { "model": "quality_control.annotationid", - "pk": 22, + "pk": 54, "fields": { - "conflict": 17, - "obj_id": 578, + "conflict": 37, + "obj_id": 635, "job_id": 28, "type": "polyline" } diff --git a/tests/python/shared/assets/jobs.json b/tests/python/shared/assets/jobs.json index 75dac90823c9..504a819ac8d6 100644 --- a/tests/python/shared/assets/jobs.json +++ b/tests/python/shared/assets/jobs.json @@ -22,14 +22,14 @@ }, "mode": "annotation", "project_id": null, - "stage": "annotation", + "stage": "acceptance", "start_frame": 0, - "state": "in progress", - "status": "annotation", + "state": "completed", + "status": "validation", "stop_frame": 10, "task_id": 22, "type": "ground_truth", - "updated_date": "2023-04-14T15:03:25.984000Z", + "updated_date": "2023-05-23T14:44:02.697000Z", "url": "http://localhost:8080/api/jobs/28" }, { @@ -58,7 +58,7 @@ "stop_frame": 10, "task_id": 22, "type": "annotation", - "updated_date": "2023-04-14T14:58:50.944000Z", + "updated_date": "2023-05-23T14:45:08.385000Z", "url": "http://localhost:8080/api/jobs/27" }, { diff --git a/tests/python/shared/assets/labels.json b/tests/python/shared/assets/labels.json index 404bbc64fb31..5d7ddbbb28c0 100644 --- a/tests/python/shared/assets/labels.json +++ b/tests/python/shared/assets/labels.json @@ -701,7 +701,18 @@ "type": "any" }, { - "attributes": [], + "attributes": [ + { + "default_value": "false", + "id": 13, + "input_type": "checkbox", + "mutable": false, + "name": "a1", + "values": [ + "false" + ] + } + ], "color": "#406040", "has_parent": false, "id": 64, diff --git a/tests/python/shared/assets/quality_conflicts.json b/tests/python/shared/assets/quality_conflicts.json index 48bc36d5a09e..b683e8ba7f6e 100644 --- a/tests/python/shared/assets/quality_conflicts.json +++ b/tests/python/shared/assets/quality_conflicts.json @@ -1,5 +1,5 @@ { - "count": 17, + "count": 37, "next": null, "previous": null, "results": [ @@ -7,12 +7,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 581, + "obj_id": 664, "type": "rectangle" }, { "job_id": 28, - "obj_id": 550, + "obj_id": 624, "type": "rectangle" } ], @@ -26,17 +26,55 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 584, + "obj_id": 638, + "type": "rectangle" + }, + { + "job_id": 28, + "obj_id": 607, + "type": "rectangle" + } + ], + "frame": 0, + "id": 2, + "importance": "warning", + "report_id": 2, + "type": "low_overlap" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 661, + "type": "points" + }, + { + "job_id": 28, + "obj_id": 608, + "type": "points" + } + ], + "frame": 0, + "id": 3, + "importance": "warning", + "report_id": 2, + "type": "low_overlap" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 641, "type": "polygon" }, { "job_id": 28, - "obj_id": 547, + "obj_id": 604, "type": "polygon" } ], "frame": 0, - "id": 2, + "id": 4, "importance": "warning", "report_id": 2, "type": "low_overlap" @@ -45,17 +83,17 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 583, + "obj_id": 640, "type": "polyline" }, { "job_id": 28, - "obj_id": 548, + "obj_id": 605, "type": "polyline" } ], "frame": 0, - "id": 3, + "id": 5, "importance": "warning", "report_id": 2, "type": "low_overlap" @@ -64,12 +102,101 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 587, + "obj_id": 665, + "type": "points" + }, + { + "job_id": 28, + "obj_id": 625, + "type": "points" + } + ], + "frame": 0, + "id": 6, + "importance": "warning", + "report_id": 2, + "type": "low_overlap" + }, + { + "annotation_ids": [ + { + "job_id": 28, + "obj_id": 613, "type": "rectangle" } ], "frame": 0, - "id": 4, + "id": 7, + "importance": "error", + "report_id": 2, + "type": "missing_annotation" + }, + { + "annotation_ids": [ + { + "job_id": 28, + "obj_id": 627, + "type": "points" + } + ], + "frame": 0, + "id": 8, + "importance": "error", + "report_id": 2, + "type": "missing_annotation" + }, + { + "annotation_ids": [ + { + "job_id": 28, + "obj_id": 628, + "type": "points" + } + ], + "frame": 0, + "id": 9, + "importance": "error", + "report_id": 2, + "type": "missing_annotation" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 644, + "type": "rectangle" + } + ], + "frame": 0, + "id": 10, + "importance": "error", + "report_id": 2, + "type": "extra_annotation" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 660, + "type": "rectangle" + } + ], + "frame": 0, + "id": 11, + "importance": "error", + "report_id": 2, + "type": "extra_annotation" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 666, + "type": "points" + } + ], + "frame": 0, + "id": 12, "importance": "error", "report_id": 2, "type": "extra_annotation" @@ -78,12 +205,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 601, + "obj_id": 658, "type": "polygon" } ], "frame": 0, - "id": 5, + "id": 13, "importance": "error", "report_id": 2, "type": "extra_annotation" @@ -92,12 +219,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 602, + "obj_id": 668, "type": "polygon" } ], "frame": 0, - "id": 6, + "id": 14, "importance": "error", "report_id": 2, "type": "extra_annotation" @@ -106,12 +233,40 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 582, + "obj_id": 659, + "type": "polygon" + } + ], + "frame": 0, + "id": 15, + "importance": "error", + "report_id": 2, + "type": "extra_annotation" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 669, + "type": "ellipse" + } + ], + "frame": 0, + "id": 16, + "importance": "error", + "report_id": 2, + "type": "extra_annotation" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 637, "type": "polyline" } ], "frame": 0, - "id": 7, + "id": 17, "importance": "error", "report_id": 2, "type": "extra_annotation" @@ -120,12 +275,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 580, + "obj_id": 639, "type": "polyline" } ], "frame": 0, - "id": 8, + "id": 18, "importance": "error", "report_id": 2, "type": "extra_annotation" @@ -134,17 +289,69 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 585, + "obj_id": 667, + "type": "polyline" + } + ], + "frame": 0, + "id": 19, + "importance": "error", + "report_id": 2, + "type": "extra_annotation" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 662, + "type": "points" + }, + { + "job_id": 28, + "obj_id": 629, + "type": "points" + } + ], + "frame": 0, + "id": 20, + "importance": "error", + "report_id": 2, + "type": "mismatching_label" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 665, + "type": "points" + }, + { + "job_id": 28, + "obj_id": 625, + "type": "points" + } + ], + "frame": 0, + "id": 21, + "importance": "error", + "report_id": 2, + "type": "mismatching_label" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 642, "type": "mask" }, { "job_id": 28, - "obj_id": 546, + "obj_id": 603, "type": "polygon" } ], "frame": 0, - "id": 9, + "id": 22, "importance": "error", "report_id": 2, "type": "mismatching_label" @@ -153,17 +360,17 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 583, + "obj_id": 640, "type": "polyline" }, { "job_id": 28, - "obj_id": 548, + "obj_id": 605, "type": "polyline" } ], "frame": 0, - "id": 10, + "id": 23, "importance": "warning", "report_id": 2, "type": "mismatching_direction" @@ -172,26 +379,159 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 585, + "obj_id": 642, "type": "mask" } ], "frame": 0, - "id": 11, + "id": 24, "importance": "warning", "report_id": 2, "type": "covered_annotation" }, { "annotation_ids": [ + { + "job_id": 27, + "obj_id": 671, + "type": "rectangle" + }, + { + "job_id": 28, + "obj_id": 670, + "type": "rectangle" + } + ], + "frame": 0, + "id": 25, + "importance": "warning", + "report_id": 2, + "type": "mismatching_attributes" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 652, + "type": "rectangle" + }, + { + "job_id": 28, + "obj_id": 611, + "type": "rectangle" + } + ], + "frame": 0, + "id": 26, + "importance": "warning", + "report_id": 2, + "type": "mismatching_groups" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 656, + "type": "rectangle" + }, + { + "job_id": 28, + "obj_id": 612, + "type": "rectangle" + } + ], + "frame": 0, + "id": 27, + "importance": "warning", + "report_id": 2, + "type": "mismatching_groups" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 646, + "type": "rectangle" + }, + { + "job_id": 28, + "obj_id": 620, + "type": "rectangle" + } + ], + "frame": 0, + "id": 28, + "importance": "warning", + "report_id": 2, + "type": "mismatching_groups" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 649, + "type": "rectangle" + }, + { + "job_id": 28, + "obj_id": 617, + "type": "rectangle" + } + ], + "frame": 0, + "id": 29, + "importance": "warning", + "report_id": 2, + "type": "mismatching_groups" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 650, + "type": "rectangle" + }, { "job_id": 28, - "obj_id": 579, + "obj_id": 610, + "type": "rectangle" + } + ], + "frame": 0, + "id": 30, + "importance": "warning", + "report_id": 2, + "type": "mismatching_groups" + }, + { + "annotation_ids": [ + { + "job_id": 27, + "obj_id": 651, + "type": "rectangle" + }, + { + "job_id": 28, + "obj_id": 609, + "type": "rectangle" + } + ], + "frame": 0, + "id": 31, + "importance": "warning", + "report_id": 2, + "type": "mismatching_groups" + }, + { + "annotation_ids": [ + { + "job_id": 28, + "obj_id": 636, "type": "rectangle" } ], "frame": 1, - "id": 12, + "id": 32, "importance": "error", "report_id": 2, "type": "missing_annotation" @@ -200,12 +540,12 @@ "annotation_ids": [ { "job_id": 28, - "obj_id": 577, + "obj_id": 634, "type": "points" } ], "frame": 1, - "id": 13, + "id": 33, "importance": "error", "report_id": 2, "type": "missing_annotation" @@ -214,12 +554,12 @@ "annotation_ids": [ { "job_id": 28, - "obj_id": 573, + "obj_id": 630, "type": "polygon" } ], "frame": 1, - "id": 14, + "id": 34, "importance": "error", "report_id": 2, "type": "missing_annotation" @@ -228,12 +568,12 @@ "annotation_ids": [ { "job_id": 28, - "obj_id": 576, + "obj_id": 633, "type": "mask" } ], "frame": 1, - "id": 15, + "id": 35, "importance": "error", "report_id": 2, "type": "missing_annotation" @@ -242,12 +582,12 @@ "annotation_ids": [ { "job_id": 28, - "obj_id": 574, + "obj_id": 631, "type": "ellipse" } ], "frame": 1, - "id": 16, + "id": 36, "importance": "error", "report_id": 2, "type": "missing_annotation" @@ -256,12 +596,12 @@ "annotation_ids": [ { "job_id": 28, - "obj_id": 578, + "obj_id": 635, "type": "polyline" } ], "frame": 1, - "id": 17, + "id": 37, "importance": "error", "report_id": 2, "type": "missing_annotation" diff --git a/tests/python/shared/assets/quality_reports.json b/tests/python/shared/assets/quality_reports.json index 9770027c3059..365f766065ba 100644 --- a/tests/python/shared/assets/quality_reports.json +++ b/tests/python/shared/assets/quality_reports.json @@ -4,8 +4,8 @@ "previous": null, "results": [ { - "created_date": "2023-05-18T18:19:52.294000Z", - "gt_last_updated": "2023-04-14T15:03:25.984000Z", + "created_date": "2023-05-23T14:49:50.920000Z", + "gt_last_updated": "2023-05-23T14:44:02.697000Z", "id": 1, "job_id": null, "parameters": { @@ -13,30 +13,32 @@ }, "parent_id": null, "summary": { - "conflict_count": 17, + "conflict_count": 37, "conflicts_by_type": { "covered_annotation": 1, - "extra_annotation": 5, - "low_overlap": 3, + "extra_annotation": 10, + "low_overlap": 6, + "mismatching_attributes": 1, "mismatching_direction": 1, - "mismatching_label": 1, - "missing_annotation": 6 + "mismatching_groups": 6, + "mismatching_label": 3, + "missing_annotation": 9 }, - "ds_count": 13, - "error_count": 12, + "ds_count": 35, + "error_count": 22, "frame_count": 4, "frame_share_percent": 0.36363636363636365, - "gt_count": 14, - "valid_count": 7, - "warning_count": 5 + "gt_count": 34, + "valid_count": 22, + "warning_count": 15 }, "target": "task", - "target_last_updated": "2023-04-14T15:03:25.969000Z", + "target_last_updated": "2023-05-23T14:45:08.348000Z", "task_id": 22 }, { - "created_date": "2023-05-18T18:19:52.298000Z", - "gt_last_updated": "2023-04-14T15:03:25.984000Z", + "created_date": "2023-05-23T14:49:50.924000Z", + "gt_last_updated": "2023-05-23T14:44:02.697000Z", "id": 2, "job_id": 27, "parameters": { @@ -44,25 +46,27 @@ }, "parent_id": 1, "summary": { - "conflict_count": 17, + "conflict_count": 37, "conflicts_by_type": { "covered_annotation": 1, - "extra_annotation": 5, - "low_overlap": 3, + "extra_annotation": 10, + "low_overlap": 6, + "mismatching_attributes": 1, "mismatching_direction": 1, - "mismatching_label": 1, - "missing_annotation": 6 + "mismatching_groups": 6, + "mismatching_label": 3, + "missing_annotation": 9 }, - "ds_count": 13, - "error_count": 12, + "ds_count": 35, + "error_count": 22, "frame_count": 4, "frame_share_percent": 0.36363636363636365, - "gt_count": 14, - "valid_count": 7, - "warning_count": 5 + "gt_count": 34, + "valid_count": 22, + "warning_count": 15 }, "target": "job", - "target_last_updated": "2023-04-14T14:58:50.944000Z", + "target_last_updated": "2023-05-23T14:45:08.385000Z", "task_id": null } ] diff --git a/tests/python/shared/assets/tasks.json b/tests/python/shared/assets/tasks.json index fcc9c09c7d05..28e64863c9af 100644 --- a/tests/python/shared/assets/tasks.json +++ b/tests/python/shared/assets/tasks.json @@ -15,7 +15,7 @@ "id": 22, "image_quality": 70, "jobs": { - "completed": 0, + "completed": 1, "count": 2, "url": "http://localhost:8080/api/jobs?task_id=22" }, @@ -42,7 +42,7 @@ "status": "annotation", "subset": "", "target_storage": null, - "updated_date": "2023-04-14T15:03:25.969000Z", + "updated_date": "2023-05-23T14:45:08.348000Z", "url": "http://localhost:8080/api/tasks/22" }, { From 6aa931f1bb411fc05a9ef7eec276ea9cd0b13203 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 24 May 2023 14:13:42 +0300 Subject: [PATCH 176/257] Extend job result ttl, remove debug endpoint --- cvat/apps/quality_control/quality_reports.py | 5 +-- cvat/apps/quality_control/views.py | 10 ------ cvat/schema.yml | 37 -------------------- 3 files changed, 3 insertions(+), 49 deletions(-) diff --git a/cvat/apps/quality_control/quality_reports.py b/cvat/apps/quality_control/quality_reports.py index 2f6a454bfd3f..fb9175ac3fd5 100644 --- a/cvat/apps/quality_control/quality_reports.py +++ b/cvat/apps/quality_control/quality_reports.py @@ -2032,6 +2032,7 @@ def generate_report(self) -> ComparisonReport: class QualityReportUpdateManager: _QUEUE_JOB_PREFIX = "update-quality-metrics-task-" _RQ_CUSTOM_QUALITY_CHECK_JOB_TYPE = 'custom_quality_check' + _JOB_RESULT_TTL = 120 @classmethod def _get_quality_check_job_delay(cls) -> timedelta: @@ -2173,8 +2174,8 @@ def schedule_quality_check_job(self, task: Task, *, user_id: int) -> str: 'user_id': user_id, 'job_type': self._RQ_CUSTOM_QUALITY_CHECK_JOB_TYPE }, - result_ttl=60, - failure_ttl=60, + result_ttl=self._JOB_RESULT_TTL, + failure_ttl=self._JOB_RESULT_TTL, ) return rq_id diff --git a/cvat/apps/quality_control/views.py b/cvat/apps/quality_control/views.py index a2feacbf55b1..9a4679927b90 100644 --- a/cvat/apps/quality_control/views.py +++ b/cvat/apps/quality_control/views.py @@ -278,16 +278,6 @@ def data(self, request, pk): json_report = qc.prepare_report_for_downloading(report, host=get_server_url(request)) return HttpResponse(json_report.encode()) - # TODO: remove - @extend_schema(parameters=[ - OpenApiParameter('task_id', type=OpenApiTypes.INT) - ]) - @action(detail=False, methods=['GET'], url_path='debug', serializer_class=None) - @silk_profile() - def debug(self, request): - qc.QualityReportUpdateManager._check_task_quality(task_id=request.GET.get('task_id')) - return HttpResponse({}) - @extend_schema(tags=["quality"]) @extend_schema_view( diff --git a/cvat/schema.yml b/cvat/schema.yml index d538deb397de..2d50b76557ce 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -4518,43 +4518,6 @@ paths: type: object additionalProperties: {} description: '' - /api/quality/reports/debug: - get: - operationId: quality_retrieve_reports_debug - parameters: - - in: header - name: X-Organization - schema: - type: string - - in: query - name: org - schema: - type: string - description: Organization unique slug - - in: query - name: org_id - schema: - type: integer - description: Organization identifier - - in: query - name: task_id - schema: - type: integer - tags: - - quality - security: - - sessionAuth: [] - csrfAuth: [] - tokenAuth: [] - - signatureAuth: [] - - basicAuth: [] - responses: - '200': - content: - application/vnd.cvat+json: - schema: - $ref: '#/components/schemas/QualityReport' - description: '' /api/quality/settings/{id}: get: operationId: quality_retrieve_settings From 9be819cad78fd479eeffa798100ad1ad0c7981c7 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 24 May 2023 14:14:22 +0300 Subject: [PATCH 177/257] Remove comparison script --- compare_datasets.py | 1744 ------------------------------------------- 1 file changed, 1744 deletions(-) delete mode 100644 compare_datasets.py diff --git a/compare_datasets.py b/compare_datasets.py deleted file mode 100644 index a41d18e0bb51..000000000000 --- a/compare_datasets.py +++ /dev/null @@ -1,1744 +0,0 @@ -# Copyright (C) 2023 CVAT.ai Corporation -# -# SPDX-License-Identifier: MIT - -import argparse -import itertools -import json -import os.path as osp -import sys -from collections import OrderedDict -from enum import Enum -from glob import glob -from typing import Any, Callable, Dict, List, Optional, Sequence, cast - -import datumaro as dm -import numpy as np -from attrs import asdict, define -from datumaro.components.extractor import DEFAULT_SUBSET_NAME -from datumaro.util.image import Image -from defusedxml import ElementTree -# from scipy.stats import gmean - - -class CvatPath: - IMAGES_DIR = "images" - - MEDIA_EXTS = (".jpg", ".jpeg", ".png") - - BUILTIN_ATTRS = {"occluded", "outside", "keyframe", "track_id"} - - -class CvatExtractor(dm.Extractor): - _SUPPORTED_SHAPES = ("box", "polygon", "polyline", "points", "skeleton") - - def __init__(self, path, subsets=None): - assert osp.isfile(path), path - rootpath = osp.dirname(path) - images_dir = "" - if osp.isdir(osp.join(rootpath, CvatPath.IMAGES_DIR)): - images_dir = osp.join(rootpath, CvatPath.IMAGES_DIR) - self._images_dir = images_dir - self._path = path - - if not subsets: - subsets = self._get_subsets_from_anno(path) - self._subsets = subsets - super().__init__(subsets=self._subsets) - - image_items = self._parse_images(images_dir, self._subsets) - items, categories = self._parse(path) - self._items = list(self._load_items(items, image_items).values()) - self._categories = categories - - def categories(self): - return self._categories - - def __iter__(self): - yield from self._items - - def __len__(self): - return len(self._items) - - def get(self, _id, subset=DEFAULT_SUBSET_NAME): - assert subset in self._subsets, "{} not in {}".format( - subset, ", ".join(self._subsets) - ) - return super().get(_id, subset) - - @staticmethod - def _get_subsets_from_anno(path): - context = ElementTree.iterparse(path, events=("start", "end")) - context = iter(context) - - for ev, el in context: - if ev == "start": - if el.tag == "subsets": - if el.text is not None: - subsets = el.text.split("\n") - return subsets - if ev == "end": - if el.tag == "meta": - return [DEFAULT_SUBSET_NAME] - el.clear() - return [DEFAULT_SUBSET_NAME] - - @staticmethod - def _parse_images(image_dir, subsets): - items = OrderedDict() - - def parse_image_dir(image_dir, subset): - for file in sorted(glob(image_dir), key=osp.basename): - name, ext = osp.splitext(osp.basename(file)) - if ext.lower() in CvatPath.MEDIA_EXTS: - items[(subset, name)] = dm.DatasetItem( - id=name, - annotations=[], - image=Image(path=file), - subset=subset or DEFAULT_SUBSET_NAME, - ) - - if subsets == [DEFAULT_SUBSET_NAME] and not osp.isdir( - osp.join(image_dir, DEFAULT_SUBSET_NAME) - ): - parse_image_dir(osp.join(image_dir, "*.*"), None) - else: - for subset in subsets: - parse_image_dir(osp.join(image_dir, subset, "*.*"), subset) - return items - - @classmethod - def _parse(cls, path): - context = ElementTree.iterparse(path, events=("start", "end")) - context = iter(context) - - categories, tasks_info, attribute_types = cls._parse_meta(context) - - items = OrderedDict() - - track = None - track_shapes = None - track_elements = None - shape = None - shape_element = None - tag = None - attributes = None - element_attributes = None - image = None - subset = None - for ev, el in context: - if ev == "start": - if el.tag == "track": - frame_size = ( - tasks_info[int(el.attrib.get("task_id"))]["frame_size"] - if el.attrib.get("task_id") - else tuple(tasks_info.values())[0]["frame_size"] - ) - track = { - "id": el.attrib["id"], - "label": el.attrib.get("label"), - "group": int(el.attrib.get("group_id", 0)), - "height": frame_size[0], - "width": frame_size[1], - } - subset = el.attrib.get("subset") - track_shapes = {} - elif el.tag == "image": - image = { - "name": el.attrib.get("name"), - "frame": el.attrib["id"], - "width": el.attrib.get("width"), - "height": el.attrib.get("height"), - } - subset = el.attrib.get("subset") - elif el.tag in cls._SUPPORTED_SHAPES and (track or image): - if shape and shape["type"] == "skeleton": - element_attributes = {} - shape_element = { - "type": "rectangle" if el.tag == "box" else el.tag, - "attributes": element_attributes, - } - if track: - shape_element.update(track) - else: - shape_element.update(image) - else: - attributes = {} - shape = { - "type": "rectangle" if el.tag == "box" else el.tag, - "attributes": attributes, - } - shape["elements"] = [] - if track: - shape.update(track) - shape["track_id"] = int(track["id"]) - shape["frame"] = el.attrib["frame"] - track_elements = [] - if image: - shape.update(image) - elif el.tag == "tag" and image: - attributes = {} - tag = { - "frame": image["frame"], - "attributes": attributes, - "group": int(el.attrib.get("group_id", 0)), - "label": el.attrib["label"], - } - subset = el.attrib.get("subset") - elif ev == "end": - if ( - el.tag == "attribute" - and element_attributes is not None - and shape_element is not None - ): - attr_value = el.text or "" - attr_type = attribute_types.get(el.attrib["name"]) - if el.text in ["true", "false"]: - attr_value = attr_value == "true" - elif attr_type is not None and attr_type != "text": - try: - attr_value = float(attr_value) - except ValueError: - pass - element_attributes[el.attrib["name"]] = attr_value - - if ( - el.tag == "attribute" - and attributes is not None - and shape_element is None - ): - attr_value = el.text or "" - attr_type = attribute_types.get(el.attrib["name"]) - if el.text in ["true", "false"]: - attr_value = attr_value == "true" - elif attr_type is not None and attr_type != "text": - try: - attr_value = float(attr_value) - except ValueError: - pass - attributes[el.attrib["name"]] = attr_value - - elif ( - el.tag in cls._SUPPORTED_SHAPES - and shape["type"] == "skeleton" - and el.tag != "skeleton" - ): - shape_element["label"] = el.attrib.get("label") - shape_element["group"] = int(el.attrib.get("group_id", 0)) - - shape_element["type"] = el.tag - shape_element["z_order"] = int(el.attrib.get("z_order", 0)) - - if el.tag == "box": - shape_element["points"] = list( - map( - float, - [ - el.attrib["xtl"], - el.attrib["ytl"], - el.attrib["xbr"], - el.attrib["ybr"], - ], - ) - ) - else: - shape_element["points"] = [] - for pair in el.attrib["points"].split(";"): - shape_element["points"].extend(map(float, pair.split(","))) - - if el.tag == "points" and el.attrib.get("occluded") == "1": - shape_element["visibility"] = [dm.Points.Visibility.hidden] * ( - len(shape_element["points"]) // 2 - ) - else: - shape_element["occluded"] = el.attrib.get("occluded") == "1" - - if el.tag == "points" and el.attrib.get("outside") == "1": - shape_element["visibility"] = [dm.Points.Visibility.absent] * ( - len(shape_element["points"]) // 2 - ) - else: - shape_element["outside"] = el.attrib.get("outside") == "1" - - if track: - shape_element["keyframe"] = el.attrib.get("keyframe") == "1" - track_elements.append(shape_element) - else: - shape["elements"].append(shape_element) - shape_element = None - - elif el.tag in cls._SUPPORTED_SHAPES: - if track is not None: - shape["frame"] = el.attrib["frame"] - shape["outside"] = el.attrib.get("outside") == "1" - shape["keyframe"] = el.attrib.get("keyframe") == "1" - if image is not None: - shape["label"] = el.attrib.get("label") - shape["group"] = int(el.attrib.get("group_id", 0)) - - shape["type"] = el.tag - shape["occluded"] = el.attrib.get("occluded") == "1" - shape["z_order"] = int(el.attrib.get("z_order", 0)) - shape["rotation"] = float(el.attrib.get("rotation", 0)) - - if el.tag == "box": - shape["points"] = list( - map( - float, - [ - el.attrib["xtl"], - el.attrib["ytl"], - el.attrib["xbr"], - el.attrib["ybr"], - ], - ) - ) - elif el.tag == "skeleton": - shape["points"] = [] - else: - shape["points"] = [] - for pair in el.attrib["points"].split(";"): - shape["points"].extend(map(float, pair.split(","))) - - if track: - if shape["type"] == "skeleton" and track_elements: - shape["keyframe"] = True - track_shapes[shape["frame"]] = shape - track_shapes[shape["frame"]]["elements"] = track_elements - track_elements = None - elif shape["type"] != "skeleton": - track_shapes[shape["frame"]] = shape - else: - frame_desc = items.get( - (subset, shape["frame"]), {"annotations": []} - ) - frame_desc["annotations"].append( - cls._parse_shape_ann(shape, categories) - ) - items[(subset, shape["frame"])] = frame_desc - - shape = None - - elif el.tag == "tag": - frame_desc = items.get((subset, tag["frame"]), {"annotations": []}) - frame_desc["annotations"].append( - cls._parse_tag_ann(tag, categories) - ) - items[(subset, tag["frame"])] = frame_desc - tag = None - elif el.tag == "track": - for track_shape in track_shapes.values(): - frame_desc = items.get( - (subset, track_shape["frame"]), {"annotations": []} - ) - frame_desc["annotations"].append( - cls._parse_shape_ann(track_shape, categories) - ) - items[(subset, track_shape["frame"])] = frame_desc - track = None - elif el.tag == "image": - frame_desc = items.get( - (subset, image["frame"]), {"annotations": []} - ) - frame_desc.update( - { - "name": image.get("name"), - "height": image.get("height"), - "width": image.get("width"), - "subset": subset, - } - ) - items[(subset, image["frame"])] = frame_desc - image = None - el.clear() - - return items, categories - - @staticmethod - def _parse_meta(context): - ev, el = next(context) - if not (ev == "start" and el.tag == "annotations"): - raise Exception("Unexpected token ") - - categories = {} - - tasks_info = {} - frame_size = [None, None] - task_id = None - mode = None - labels = OrderedDict() - label = None - - # Recursive descent parser - el = None - states = ["annotations"] - - def accepted(expected_state, tag, next_state=None): - state = states[-1] - if state == expected_state and el is not None and el.tag == tag: - if not next_state: - next_state = tag - states.append(next_state) - return True - return False - - def consumed(expected_state, tag): - state = states[-1] - if state == expected_state and el is not None and el.tag == tag: - states.pop() - return True - return False - - for ev, el in context: - if ev == "start": - if accepted("annotations", "meta"): - pass - elif accepted("meta", "task"): - pass - elif accepted("meta", "project"): - pass - elif accepted("project", "tasks"): - pass - elif accepted("tasks", "task"): - pass - elif accepted("task", "id", next_state="task_id"): - pass - elif accepted("task", "segment"): - pass - elif accepted("task", "mode"): - pass - elif accepted("task", "original_size"): - pass - elif accepted("original_size", "height", next_state="frame_height"): - pass - elif accepted("original_size", "width", next_state="frame_width"): - pass - elif accepted("task", "labels"): - pass - elif accepted("project", "labels"): - pass - elif accepted("labels", "label"): - label = {"name": None, "attributes": [], "parent": None} - elif accepted("label", "name", next_state="label_name"): - pass - elif accepted("label", "attributes"): - pass - elif accepted("label", "parent", next_state="label_parent"): - pass - elif accepted("attributes", "attribute"): - pass - elif accepted("attribute", "name", next_state="attr_name"): - pass - elif accepted("attribute", "input_type", next_state="attr_type"): - pass - elif ( - accepted("annotations", "image") - or accepted("annotations", "track") - or accepted("annotations", "tag") - ): - break - else: - pass - elif ev == "end": - if consumed("meta", "meta"): - break - elif consumed("project", "project"): - pass - elif consumed("tasks", "tasks"): - pass - elif consumed("task", "task"): - tasks_info[task_id] = { - "frame_size": frame_size, - "mode": mode, - } - frame_size = [None, None] - mode = None - elif consumed("task_id", "id"): - task_id = int(el.text) - elif consumed("segment", "segment"): - pass - elif consumed("mode", "mode"): - mode = el.text - elif consumed("original_size", "original_size"): - pass - elif consumed("frame_height", "height"): - frame_size[0] = int(el.text) - elif consumed("frame_width", "width"): - frame_size[1] = int(el.text) - elif consumed("label_name", "name"): - label["name"] = el.text - elif consumed("attr_name", "name"): - label["attributes"].append({"name": el.text}) - elif consumed("attr_type", "input_type"): - label["attributes"][-1]["input_type"] = el.text - elif consumed("attribute", "attribute"): - pass - elif consumed("attributes", "attributes"): - pass - elif consumed("label", "label"): - labels[label["name"]] = { - "attributes": label["attributes"], - "parent": label["parent"], - } - label = None - elif consumed("label_parent", "parent"): - label["parent"] = el.text - elif consumed("labels", "labels"): - pass - else: - pass - - assert len(states) == 1 and states[0] == "annotations", ( - "Expected 'meta' section in the annotation file, path: %s" % states - ) - - common_attrs = ["occluded"] - if "interpolation" in map(lambda t: t["mode"], tasks_info.values()): - common_attrs.append("keyframe") - common_attrs.append("outside") - common_attrs.append("track_id") - - label_cat = dm.LabelCategories(attributes=common_attrs) - attribute_types = {} - for label, params in labels.items(): - attrs = {v["name"]: v for v in params["attributes"]} - parent = params["parent"] - if parent and parent not in labels: - raise ValueError( - f"Label's '{label}' parent label '{parent}' is not found" - ) - - label_cat.add(label, attributes=set(attrs), parent=parent) - for attr_name, attr_params in attrs.items(): - attribute_types[attr_name] = attr_params["input_type"] - - categories[dm.AnnotationType.label] = label_cat - return categories, tasks_info, attribute_types - - @classmethod - def _parse_shape_ann(cls, ann, categories, *, parent_label: str = None): - ann_id = ann.get("id", 0) - ann_type = ann["type"] - - attributes = ann.get("attributes") or {} - if "occluded" in categories[dm.AnnotationType.label].attributes: - attributes["occluded"] = ann.get("occluded", False) - if "outside" in ann: - attributes["outside"] = ann["outside"] - if "keyframe" in ann: - attributes["keyframe"] = ann["keyframe"] - if "track_id" in ann: - attributes["track_id"] = ann["track_id"] - if "rotation" in ann: - attributes["rotation"] = ann["rotation"] - - group = ann.get("group") - - label = ann.get("label") - label_id = categories[dm.AnnotationType.label].find( - label, parent=parent_label or "" - )[0] - if label_id is None: - raise ValueError( - f"Annotation id {ann_id} ({ann_type}): " - f"unknown label {label} (parent {parent_label})" - ) - - z_order = ann.get("z_order", 0) - points = ann.get("points", []) - - if ann_type == "polyline": - return dm.PolyLine( - points, - label=label_id, - z_order=z_order, - id=ann_id, - attributes=attributes, - group=group, - ) - - elif ann_type == "polygon": - return dm.Polygon( - points, - label=label_id, - z_order=z_order, - id=ann_id, - attributes=attributes, - group=group, - ) - - elif ann_type == "points": - visibility = ann.get("visibility", None) - return dm.Points( - points, - visibility, - label=label_id, - z_order=z_order, - id=ann_id, - attributes=attributes, - group=group, - ) - - elif ann_type == "box": - x, y = points[0], points[1] - w, h = points[2] - x, points[3] - y - return dm.Bbox( - x, - y, - w, - h, - label=label_id, - z_order=z_order, - id=ann_id, - attributes=attributes, - group=group, - ) - - elif ann_type == "skeleton": - elements = [] - for element in ann.get("elements", []): - elements.append( - cls._parse_shape_ann( - element, categories, parent_label=ann.get("label") - ) - ) - - return dm.Skeleton( - elements, - label=label_id, - z_order=z_order, - id=ann_id, - attributes=attributes, - group=group, - ) - - else: - raise NotImplementedError("Unknown annotation type '%s'" % ann_type) - - @classmethod - def _parse_tag_ann(cls, ann, categories): - label = ann.get("label") - label_id = categories[dm.AnnotationType.label].find(label)[0] - group = ann.get("group") - attributes = ann.get("attributes") - return dm.Label(label_id, attributes=attributes, group=group) - - def _load_items(self, parsed, image_items): - for (subset, frame_id), item_desc in parsed.items(): - name = item_desc.get("name", "frame_%06d.PNG" % int(frame_id)) - image = ( - osp.join(self._images_dir, subset, name) - if subset - else osp.join(self._images_dir, name) - ) - image_size = (item_desc.get("height"), item_desc.get("width")) - if all(image_size): - image = Image(path=image, size=tuple(map(int, image_size))) - di = image_items.get( - (subset, osp.splitext(name)[0]), - dm.DatasetItem( - id=name, - annotations=[], - ), - ) - di.subset = subset or DEFAULT_SUBSET_NAME - di.annotations = item_desc.get("annotations") - di.attributes = {"frame": int(frame_id)} - di.media = image if isinstance(image, Image) else di.media - image_items[(subset, osp.splitext(name)[0])] = di - return image_items - - -dm_env = dm.Environment() -dm_env.extractors.register("cvat", CvatExtractor) - - -class CvatImporter(dm.Importer): - @classmethod - def find_sources(cls, path): - return cls._find_sources_recursive(path, ".xml", "cvat") - - -dm_env.importers.register("cvat", CvatImporter) - - -class AnnotationConflictType(str, Enum): - MISSING_ANNOTATION = "missing_annotation" - EXTRA_ANNOTATION = "extra_annotation" - MISMATCHING_ANNOTATION = "mismatching_annotation" - - def __str__(self) -> str: - return self.value - - -class MismatchingAnnotationKind(str, Enum): - ATTRIBUTE = "attribute" - LABEL = "label" - - def __str__(self) -> str: - return self.value - - -@define(kw_only=True) -class AnnotationId: - # TODO: think if uuids can be provided - source: str - id: int - type: str - - def to_dict(self) -> dict: - return asdict(self) - - -@define(kw_only=True) -class AnnotationConflict: - frame_id: int - type: AnnotationConflictType - data: Dict[str, Any] - - def to_dict(self) -> dict: - return asdict(self) - - -@define(kw_only=True) -class AnnotationConflictsReport: - included_annotation_types: List[str] - ignored_attributes: List[str] - mean_accuracy: float - mean_annotation_accuracy: float - mean_attribute_accuracy: float - error_count: int - annotation_errors_count: int - attribute_errors_count: int - mean_error_count: float - estimated_dataset_error_count: int - estimated_dataset_invalid_annotations_count: int - estimated_dataset_invalid_attributes_count: int - ds_comparable_annotations_count: int - ds_annotations_count: int - ds_total_annotations_count: int - ds_attributes_count: int - intersection_gt_annotations_count: int - intersection_frame_count: int - intersection_frame_share: float - intersection_frames: List[str] - frame_results: Dict[str, Any] - - def to_dict(self) -> dict: - return asdict(self) - - -def OKS(a, b, sigma=None, bbox=None, scale=None, visibility=None): - """ - Object Keypoint Similarity metric. - https://cocodataset.org/#keypoints-eval - """ - - p1 = np.array(a.points).reshape((-1, 2)) - p2 = np.array(b.points).reshape((-1, 2)) - if len(p1) != len(p2): - return 0 - - if visibility is None: - visibility = np.ones(len(p1)) - else: - visibility = np.asarray(visibility, dtype=float) - - if not sigma: - sigma = 0.1 - else: - assert len(sigma) == len(p1) - - if not scale: - if bbox is None: - bbox = dm.ops.mean_bbox([a, b]) - scale = bbox[2] * bbox[3] - - dists = np.linalg.norm(p1 - p2, axis=1) - return np.sum( - visibility * np.exp(-(dists**2) / (2 * scale * (2 * sigma) ** 2)) - ) / np.sum(visibility) - - -@define(kw_only=True) -class _PointsMatcher(dm.ops.PointsMatcher): - def distance(self, a, b): - a_bbox = self.instance_map[id(a)][1] - b_bbox = self.instance_map[id(b)][1] - if dm.ops.bbox_iou(a_bbox, b_bbox) <= 0: - return 0 - bbox = dm.ops.mean_bbox([a_bbox, b_bbox]) - return OKS( - a, - b, - sigma=self.sigma, - bbox=bbox, - visibility=[v == dm.Points.Visibility.visible for v in a.visibility], - ) - - -def _arr_div(a_arr: np.ndarray, b_arr: np.ndarray): - divisor = b_arr.copy() - divisor[b_arr == 0] = 1 - return a_arr / divisor - - -class _DistanceComparator(dm.ops.DistanceComparator): - def __init__( - self, - categories: dm.CategoriesInfo, - *, - included_ann_types: Optional[List[dm.AnnotationType]] = None, - return_distances: bool = False, - **kwargs, - ): - super().__init__(**kwargs) - self.categories = categories - self._skeleton_info = {} - self.included_ann_types = included_ann_types - self.return_distances = return_distances - - def _instance_bbox(self, instance_anns: Sequence[dm.Annotation]): - return dm.ops.max_bbox( - a.get_bbox() if isinstance(a, dm.Skeleton) else a - for a in instance_anns - if hasattr(a, 'get_bbox') - and not a.attributes.get('outside', False) - ) - - @staticmethod - def _get_ann_type(t, item): - return [ - a for a in item.annotations - if a.type == t - and not a.attributes.get('outside', False) - ] - - def _match_ann_type(self, t, *args): - if t not in self.included_ann_types: - return None - - # pylint: disable=no-value-for-parameter - if t == dm.AnnotationType.label: - return self.match_labels(*args) - elif t == dm.AnnotationType.bbox: - return self.match_boxes(*args) - elif t == dm.AnnotationType.polygon: - return self.match_polygons(*args) - elif t == dm.AnnotationType.mask: - return self.match_masks(*args) - elif t == dm.AnnotationType.points: - return self.match_points(*args) - elif t == dm.AnnotationType.skeleton: - return self.match_skeletons(*args) - elif t == dm.AnnotationType.polyline: - return self.match_lines(*args) - # pylint: enable=no-value-for-parameter - else: - return None - - def _match_segments(self, t, item_a, item_b, *, - distance: Callable = dm.ops.segment_iou - ): - a_objs = self._get_ann_type(t, item_a) - b_objs = self._get_ann_type(t, item_b) - if not a_objs and not b_objs: - return [], [], [], [] - - if self.return_distances: - distance, distances = self._make_memoizing_distance(distance) - - returned_values = dm.ops.match_segments(a_objs, b_objs, - distance=distance, dist_thresh=self.iou_threshold) - - if self.return_distances: - returned_values = returned_values + (distances, ) - - return returned_values - - def match_boxes(self, item_a, item_b): - return self._match_segments(dm.AnnotationType.bbox, item_a, item_b) - - def match_polygons(self, item_a, item_b): - return self._match_segments(dm.AnnotationType.polygon, item_a, item_b) - - def match_masks(self, item_a, item_b): - return self._match_segments(dm.AnnotationType.mask, item_a, item_b) - - def match_lines(self, item_a, item_b): - matcher = dm.ops.LineMatcher() - return self._match_segments(dm.AnnotationType.polyline, item_a, item_b, - distance=matcher.distance) - - def match_points(self, item_a, item_b): - a_points = self._get_ann_type(dm.AnnotationType.points, item_a) - b_points = self._get_ann_type(dm.AnnotationType.points, item_b) - if not a_points and not b_points: - return [], [], [], [] - - instance_map = {} - for s in [item_a.annotations, item_b.annotations]: - s_instances = dm.ops.find_instances(s) - for instance_group in s_instances: - instance_bbox = self._instance_bbox(instance_group) - - for ann in instance_group: - instance_map[id(ann)] = [instance_group, instance_bbox] - matcher = _PointsMatcher(instance_map=instance_map) - - distance = matcher.distance - - if self.return_distances: - distance, distances = self._make_memoizing_distance(distance) - - returned_values = dm.ops.match_segments( - a_points, - b_points, - dist_thresh=self.iou_threshold, - distance=distance, - ) - - if self.return_distances: - returned_values = returned_values + (distances, ) - - return returned_values - - def _get_skeleton_info(self, skeleton_label_id: int): - label_cat = cast(dm.LabelCategories, self.categories[dm.AnnotationType.label]) - skeleton_info = self._skeleton_info.get(skeleton_label_id) - - if skeleton_info is None: - skeleton_label_name = label_cat[skeleton_label_id].name - - # Build a sorted list of sublabels to arrange skeleton points during comparison - skeleton_info = sorted( - idx - for idx, label in enumerate(label_cat) - if label.parent == skeleton_label_name - ) - self._skeleton_info[skeleton_label_id] = skeleton_info - - return skeleton_info - - def match_skeletons(self, item_a, item_b): - a_skeletons = self._get_ann_type(dm.AnnotationType.skeleton, item_a) - b_skeletons = self._get_ann_type(dm.AnnotationType.skeleton, item_b) - if not a_skeletons and not b_skeletons: - return [], [], [], [] - - # Convert skeletons to point lists for comparison - # This is required to compute correct per-instance distance - # It is assumed that labels are the same in the datasets - skeleton_infos = {} - points_map = {} - skeleton_map = {} - a_points = [] - b_points = [] - for source, source_points in [(a_skeletons, a_points), (b_skeletons, b_points)]: - for skeleton in source: - skeleton_info = skeleton_infos.setdefault( - skeleton.label, self._get_skeleton_info(skeleton.label) - ) - - # Merge skeleton points into a single list - # The list is ordered by skeleton_info - skeleton_points = [ - next((p for p in skeleton.elements if p.label == sublabel), None) - for sublabel in skeleton_info - ] - - # Build a single Points object for further comparisons - merged_points = dm.Points( - points=list( - itertools.chain.from_iterable( - p.points if p else [0, 0] for p in skeleton_points - ) - ), - visibility=list( - itertools.chain.from_iterable( - p.visibility if p else [dm.Points.Visibility.absent] - for p in skeleton_points - ) - ), - label=skeleton.label - # no per-point attributes currently in CVAT - ) - - if all(v == dm.Points.Visibility.absent for v in merged_points.visibility): - # The whole skeleton is outside, exclude it - skeleton_map[id(skeleton)] = None - continue - - points_map[id(merged_points)] = skeleton - skeleton_map[id(skeleton)] = merged_points - source_points.append(merged_points) - - instance_map = {} - for source in [item_a.annotations, item_b.annotations]: - for instance_group in dm.ops.find_instances(source): - instance_bbox = self._instance_bbox(instance_group) - - instance_group = [ - skeleton_map[id(a)] if isinstance(a, dm.Skeleton) else a - for a in instance_group - if not isinstance(a, dm.Skeleton) or skeleton_map[id(a)] is not None - ] - for ann in instance_group: - instance_map[id(ann)] = [instance_group, instance_bbox] - - matcher = _PointsMatcher(instance_map=instance_map) - - distance = matcher.distance - - if self.return_distances: - distance, distances = self._make_memoizing_distance(distance) - - matched, mismatched, a_extra, b_extra = dm.ops.match_segments( - a_points, - b_points, - dist_thresh=self.iou_threshold, - distance=distance, - ) - - matched = [(points_map[id(p_a)], points_map[id(p_b)]) for (p_a, p_b) in matched] - mismatched = [ - (points_map[id(p_a)], points_map[id(p_b)]) for (p_a, p_b) in mismatched - ] - a_extra = [points_map[id(p_a)] for p_a in a_extra] - b_extra = [points_map[id(p_b)] for p_b in b_extra] - - # Map points back to skeletons - if self.return_distances: - for (p_a_id, p_b_id) in list(distances.keys()): - dist = distances.pop((p_a_id, p_b_id)) - distances[( - id(points_map[p_a_id]), - id(points_map[p_b_id]) - )] = dist - - returned_values = (matched, mismatched, a_extra, b_extra) - - if self.return_distances: - returned_values = returned_values + (distances, ) - - return returned_values - - @classmethod - def _make_memoizing_distance(cls, distance_function): - distances = {} - notfound = object() - - def memoizing_distance(a, b): - key = (id(a), id(b)) - dist = distances.get(key, notfound) - - if dist is notfound: - dist = distance_function(a, b) - distances[key] = dist - - return dist - - return memoizing_distance, distances - - -class _Comparator: - def __init__(self, categories: dm.CategoriesInfo): - self.ignored_attrs = [ - "track_id", # changes from task to task, can't be defined manually with the same name - "keyframe", # indicates the way annotation obtained, meaningless to compare - "z_order", # TODO: compare relative or 'visible' z_order - "group", # TODO: changes from task to task. But must be compared for existence - "rotation", # should be handled by other means - "outside", # should be handled by other means - ] - self.included_ann_types = [ - dm.AnnotationType.bbox, - dm.AnnotationType.mask, - dm.AnnotationType.points, - dm.AnnotationType.polygon, - dm.AnnotationType.polyline, - dm.AnnotationType.skeleton, - ] - self._annotation_comparator = _DistanceComparator( - categories, included_ann_types=self.included_ann_types, return_distances=True, - ) - - def match_attrs(self, ann_a: dm.Annotation, ann_b: dm.Annotation): - a_attrs = ann_a.attributes - b_attrs = ann_b.attributes - - keys_to_match = (a_attrs.keys() | b_attrs.keys()).difference(self.ignored_attrs) - - matches = [] - mismatches = [] - a_extra = [] - b_extra = [] - - notfound = object() - - for k in keys_to_match: - a_attr = a_attrs.get(k, notfound) - b_attr = b_attrs.get(k, notfound) - - if a_attr is notfound: - b_extra.append(k) - elif b_attr is notfound: - a_extra.append(k) - elif a_attr == b_attr: - matches.append(k) - else: - mismatches.append(k) - - return matches, mismatches, a_extra, b_extra - - def match_annotations(self, item_a, item_b): - return self._annotation_comparator.match_annotations(item_a, item_b) - - -class DatasetComparator: - def __init__(self, ds_dataset: dm.Dataset, gt_dataset: dm.Dataset) -> None: - self._ds_dataset = ds_dataset - self._gt_dataset = gt_dataset - self._comparator = _Comparator(gt_dataset.categories()) - - self._frame_results = {} - self._common_results = {"ds_annotations_count": 0} - self._ignored_frames = [] - - def _dm_ann_to_ann_id( - self, ann: dm.Annotation, item: dm.DatasetItem, dataset: dm.Dataset - ): - if dataset is self._ds_dataset: - source = "ds" - else: - source = "gt" - - ann_idx = item.annotations.index(ann) - - return AnnotationId(source=source, id=ann_idx, type=ann.type.name) - - def _find_gt_conflicts(self) -> List[AnnotationConflict]: - ds_job_dataset = self._ds_dataset - gt_job_dataset = self._gt_dataset - - for gt_item in gt_job_dataset: - ds_item = ds_job_dataset.get(gt_item.id) - if not ds_item: - continue # we need to compare only intersecting frames - - if gt_item.id in self._ignored_frames: - continue - - self._process_frame(ds_item, gt_item) - - def _process_frame(self, ds_item, gt_item): - frame_id = ds_item.id - frame_results = self._comparator.match_annotations(gt_item, ds_item) - self._frame_results.setdefault(frame_id, {}) - - self._generate_frame_annotation_conflicts( - frame_id, frame_results, ds_item, gt_item - ) - - def _generate_frame_annotation_conflicts( - self, - frame_id, - frame_results, - ds_item: dm.DatasetItem, - gt_item: dm.DatasetItem, - ) -> List[AnnotationConflict]: - conflicts = [] - - # TODO: try to use PDJ for per-keypoint results - # shape_confusion_matrix_labels = { - # t: t.name for t in self._comparator.included_ann_types - # } - # shape_confusion_matrix_labels[None] = 'unmatched' - # shape_confusion_matrix_labels_rmap = { k: i for i, k in enumerate(shape_confusion_matrix_labels.keys()) } - # shape_confusion_matrix_label_count = len(shape_confusion_matrix_labels) - # shape_confusion_matrix = np.zeros( - # (shape_confusion_matrix_label_count, shape_confusion_matrix_label_count), dtype=int - # ) - - merged_results = [[], [], [], [], {}] - for shape_type in self._comparator.included_ann_types: - for merged_field, field in zip(merged_results, frame_results[shape_type][:-1]): - merged_field.extend(field) - - merged_results[-1].update(frame_results[shape_type][-1]) - - # matches, mismatches, gt_unmatched, ds_unmatched = frame_results[shape_type][:4] - # for gt_ann, ds_ann in itertools.chain( - # matches, - # mismatches, - # zip(itertools.repeat(None), ds_unmatched), - # zip(gt_unmatched, itertools.repeat(None)) - # ): - # # TODO: separate keys and displayed labels - # ds_label_idx = shape_confusion_matrix_labels_rmap[ds_ann.type if ds_ann else ds_ann] - # gt_label_idx = shape_confusion_matrix_labels_rmap[gt_ann.type if gt_ann else gt_ann] - # shape_confusion_matrix[ds_label_idx][gt_label_idx] += 1 - - matches, mismatches, gt_unmatched, ds_unmatched, pairwise_distances = merged_results - - def _distance(gt_obj, ds_obj): - return pairwise_distances.get((id(gt_obj), id(ds_obj))) - - _matched_shapes = set( - id(shape) - for shape_pair in itertools.chain(matches, mismatches) - for shape in shape_pair - ) - def _find_best_unmatched_distance(shape): - this_shape_id = id(shape) - - this_shape_distances = [] - - for (gt_shape_id, ds_shape_id), dist in pairwise_distances.items(): - if gt_shape_id == this_shape_id: - other_shape_id = ds_shape_id - elif ds_shape_id == this_shape_id: - other_shape_id = gt_shape_id - else: - continue - - this_shape_distances.append((other_shape_id, dist)) - - matched_ann, distance = max(this_shape_distances, key=lambda v: v[1], default=(None, 0)) - return matched_ann, distance - - for unmatched_ann in gt_unmatched: - conflicts.append( - AnnotationConflict( - frame_id=frame_id, - type=AnnotationConflictType.MISSING_ANNOTATION, - data={ - "annotation_ids": [ - self._dm_ann_to_ann_id( - unmatched_ann, gt_item, self._gt_dataset - ) - ] - }, - ) - ) - - for unmatched_ann in ds_unmatched: - conflicts.append( - AnnotationConflict( - frame_id=frame_id, - type=AnnotationConflictType.EXTRA_ANNOTATION, - data={ - "annotation_ids": [ - self._dm_ann_to_ann_id( - unmatched_ann, ds_item, self._ds_dataset - ) - ] - }, - ) - ) - - for gt_ann, ds_ann in mismatches: - conflicts.append( - AnnotationConflict( - frame_id=frame_id, - type=AnnotationConflictType.MISMATCHING_ANNOTATION, - data={ - "annotation_ids": [ - self._dm_ann_to_ann_id( - ds_ann, ds_item, self._ds_dataset - ), - self._dm_ann_to_ann_id(gt_ann, gt_item, self._gt_dataset), - ], - "kind": MismatchingAnnotationKind.LABEL, - "expected": gt_ann.label, - "actual": ds_ann.label, - }, - ) - ) - - resulting_distances = [ - _distance(gt_ann, ds_ann) - for gt_ann, ds_ann in itertools.chain(matches, mismatches) - ] - - for unmatched_ann in itertools.chain(gt_unmatched, ds_unmatched): - matched_ann_id, distance = _find_best_unmatched_distance(unmatched_ann) - if matched_ann_id is not None: - _matched_shapes.add(matched_ann_id) - resulting_distances.append(distance) - - mean_iou = np.mean(resulting_distances) - - valid_shapes_count = len(matches) + len(mismatches) - missing_shapes_count = len(gt_unmatched) - extra_shapes_count = len(ds_unmatched) - total_shapes_count = len(matches) + len(mismatches) + len(gt_unmatched) + len(ds_unmatched) - ds_shapes_count = len(matches) + len(mismatches) + len(ds_unmatched) - gt_shapes_count = len(matches) + len(mismatches) + len(gt_unmatched) - - valid_labels_count = len(matches) - invalid_labels_count = len(mismatches) - total_labels_count = valid_labels_count + invalid_labels_count - - # matched_anns = [] - # mismatched_anns = [] - # valid_attributes_count = 0 - # invalid_attributes_count = 0 - # missing_attributes_count = 0 - # extra_attributes_count = 0 - # total_attributes_count = 0 - # ds_attributes_count = 0 - # gt_attributes_count = 0 - # for gt_ann, ds_ann in matches: - # # Datumaro wont match attributes - # ( - # attr_matches, - # attr_mismatches, - # attr_gt_extra, - # attr_ds_extra, - # ) = self._comparator.match_attrs(gt_ann, ds_ann) - - # for mismatched_attr in attr_mismatches: - # conflicts.append( - # AnnotationConflict( - # frame_id=frame_id, - # type=AnnotationConflictType.MISMATCHING_ANNOTATION, - # data={ - # "annotation_ids": [ - # self._dm_ann_to_ann_id( - # ds_ann, ds_item, self._ds_dataset - # ), - # self._dm_ann_to_ann_id( - # gt_ann, gt_item, self._gt_dataset - # ), - # ], - # "kind": MismatchingAnnotationKind.ATTRIBUTE, - # "attribute": mismatched_attr, - # "expected": gt_ann.attributes[mismatched_attr], - # "actual": ds_ann.attributes[mismatched_attr], - # }, - # ) - # ) - - # for extra_attr in attr_gt_extra: - # conflicts.append( - # AnnotationConflict( - # frame_id=frame_id, - # type=AnnotationConflictType.MISMATCHING_ANNOTATION, - # data={ - # "annotation_ids": [ - # self._dm_ann_to_ann_id( - # ds_ann, ds_item, self._ds_dataset - # ), - # self._dm_ann_to_ann_id( - # gt_ann, gt_item, self._gt_dataset - # ), - # ], - # "kind": MismatchingAnnotationKind.ATTRIBUTE, - # "attribute": mismatched_attr, - # "expected": gt_ann.attributes[extra_attr], - # "actual": None, - # }, - # ) - # ) - - # for extra_attr in attr_ds_extra: - # conflicts.append( - # AnnotationConflict( - # frame_id=frame_id, - # type=AnnotationConflictType.MISMATCHING_ANNOTATION, - # data={ - # "annotation_ids": [ - # self._dm_ann_to_ann_id( - # ds_ann, ds_item, self._ds_dataset - # ), - # self._dm_ann_to_ann_id( - # gt_ann, gt_item, self._gt_dataset - # ), - # ], - # "kind": MismatchingAnnotationKind.ATTRIBUTE, - # "attribute": mismatched_attr, - # "expected": None, - # "actual": ds_ann.attributes[extra_attr], - # }, - # ) - # ) - - # attrs_match = (0 == (len(attr_mismatches) + len(attr_gt_extra) + len(attr_ds_extra))) - # if attrs_match: - # matched_anns.append((gt_ann, ds_ann)) - # else: - # mismatched_anns.append((gt_ann, ds_ann)) - - # valid_attributes_count += len(attr_matches) - # invalid_attributes_count += len(attr_mismatches) - # missing_attributes_count += len(attr_gt_extra) - # extra_attributes_count += len(attr_ds_extra) - # total_attributes_count += ( - # len(attr_matches) - # + len(attr_mismatches) - # + len(attr_gt_extra) - # + len(attr_ds_extra) - # ) - # ds_attributes_count += len(attr_matches) + len(attr_mismatches) + len(attr_ds_extra) - # gt_attributes_count += len(attr_matches) + len(attr_mismatches) + len(attr_gt_extra) - - - confusion_matrix_labels = { - i: label.name - for i, label in enumerate(self._gt_dataset.categories()[dm.AnnotationType.label]) - if not label.parent - } - confusion_matrix_labels[None] = 'unmatched' - confusion_matrix_labels_rmap = { - k: i for i, k in enumerate(confusion_matrix_labels.keys()) - } - confusion_matrix_label_count = len(confusion_matrix_labels) - confusion_matrix = np.zeros( - (confusion_matrix_label_count, confusion_matrix_label_count), dtype=int - ) - for gt_ann, ds_ann in itertools.chain( - # fully matched annotations - shape, label, attributes - matches, - mismatches, - zip(itertools.repeat(None), ds_unmatched), - zip(gt_unmatched, itertools.repeat(None)), - ): - # TODO: separate keys and displayed labels - ds_label_idx = confusion_matrix_labels_rmap[ds_ann.label if ds_ann else ds_ann] - gt_label_idx = confusion_matrix_labels_rmap[gt_ann.label if gt_ann else gt_ann] - confusion_matrix[ds_label_idx, gt_label_idx] += 1 - - # matched_shape_counts = np.diag(shape_confusion_matrix) - # ds_shape_counts = np.sum(shape_confusion_matrix, axis=1) - # gt_shape_counts = np.sum(shape_confusion_matrix, axis=0) - # shape_accuracies = arr_div(matched_shape_counts, ds_shape_counts + gt_shape_counts - matched_shape_counts) - # shape_precisions = arr_div(matched_shape_counts, ds_shape_counts) - # shape_recalls = arr_div(matched_shape_counts, gt_shape_counts) - - matched_ann_counts = np.diag(confusion_matrix) - ds_ann_counts = np.sum(confusion_matrix, axis=1) - gt_ann_counts = np.sum(confusion_matrix, axis=0) - label_accuracies = _arr_div(matched_ann_counts, ds_ann_counts + gt_ann_counts - matched_ann_counts) - label_precisions = _arr_div(matched_ann_counts, ds_ann_counts) - label_recalls = _arr_div(matched_ann_counts, gt_ann_counts) - - valid_annotations_count = np.sum(matched_ann_counts) - missing_annotations_count = np.sum(confusion_matrix[:, confusion_matrix_labels_rmap[None]]) - extra_annotations_count = np.sum(confusion_matrix[confusion_matrix_labels_rmap[None], :]) - total_annotations_count = np.sum(confusion_matrix) - ds_annotations_count = np.sum(ds_ann_counts) - gt_annotations_count = np.sum(gt_ann_counts) - - self._frame_results.setdefault(frame_id, {}).update( - errors_count=len(conflicts), - annotations=dict( - valid_count=valid_annotations_count, - missing_count=missing_annotations_count, - extra_count=extra_annotations_count, - total_count=total_annotations_count, - ds_count=ds_annotations_count, - gt_count=gt_annotations_count, - accuracy=valid_annotations_count / (total_annotations_count or 1), - precision=valid_annotations_count / (ds_annotations_count or 1), - recall=valid_annotations_count / (gt_annotations_count or 1), - confusion_matrix=dict( - labels=list(confusion_matrix_labels.values()), - axes=dict( - cols='gt', - rows='ds' - ), - rows=confusion_matrix, - precision=label_precisions, - recall=label_recalls, - accuracy=label_accuracies, - ) - ), - annotation_element=dict( - shape=dict( - valid_count=valid_shapes_count, - missing_count=missing_shapes_count, - extra_count=extra_shapes_count, - total_count=total_shapes_count, - ds_count=ds_shapes_count, - gt_count=gt_shapes_count, - accuracy=valid_shapes_count / (total_shapes_count or 1), - mean_iou=mean_iou, - # TODO: add per type stats (OKS, PDJ, ...) - # shape_confusion_matrix=dict( - # labels=list(shape_confusion_matrix_labels.values()), - # axes=dict( - # cols='gt', - # rows='ds' - # ), - # rows=shape_confusion_matrix, - # precision=shape_precisions, - # recall=shape_recalls, - # accuracy=shape_accuracies, - # ) - ), - label=dict( - valid_count=valid_labels_count, - invalid_count=invalid_labels_count, - total_count=total_labels_count, - accuracy=valid_labels_count / (total_labels_count or 1), - ), - # TODO: add attribute confusion matrix and decouple it - # with the label and full confusion matrices - # attribute=dict( - # valid_count=valid_attributes_count, - # invalid_count=invalid_attributes_count, - # missing_count=missing_attributes_count, - # extra_count=extra_attributes_count, - # total_count=total_attributes_count, - # ds_count=ds_attributes_count, - # gt_count=gt_attributes_count, - # accuracy=valid_attributes_count / (total_attributes_count or 1), - # # TODO: add confusion matrix / per label stats - # ), - ), - errors=conflicts.copy(), - ) - - return conflicts - - def prepare_report(self) -> AnnotationConflictsReport: - self._find_gt_conflicts() - - def _get_nested_key(d, path): - for k in path: - d = d[k] - return d - - def _set_nested_key(d, path, value): - for k in path[:-1]: - d = d.setdefault(k, {}) - d[path[-1]] = value - return d - - full_ds_comparable_shapes_count = 0 - full_ds_comparable_attributes_count = 0 - for item in self._ds_dataset: - for ann in item.annotations: - if ann.type not in self._comparator.included_ann_types: - continue - - full_ds_comparable_attributes_count += len( - set(ann.attributes).difference(self._comparator.ignored_attrs) - ) - full_ds_comparable_shapes_count += 1 - - # accumulate stats - intersection_frames = [] - summary_stats = {} - mean_ious = [] - for frame_id, frame_result in self._frame_results.items(): - intersection_frames.append(frame_id) - - for path in [ - ["annotation_element", "shape", "valid_count"], - ["annotation_element", "shape", "missing_count"], - ["annotation_element", "shape", "extra_count"], - ["annotation_element", "shape", "total_count"], - ["annotation_element", "shape", "ds_count"], - ["annotation_element", "shape", "gt_count"], - # ["annotation_element", "shape", "shape_confusion_matrix", "rows"], - - ["annotation_element", "label", "valid_count"], - ["annotation_element", "label", "invalid_count"], - ["annotation_element", "label", "total_count"], - - # ["annotation_element", "attribute", "valid_count"], - # ["annotation_element", "attribute", "invalid_count"], - # ["annotation_element", "attribute", "missing_count"], - # ["annotation_element", "attribute", "extra_count"], - # ["annotation_element", "attribute", "total_count"], - # ["annotation_element", "attribute", "ds_count"], - # ["annotation_element", "attribute", "gt_count"], - - ["annotations", "confusion_matrix", "rows"], - ["errors_count"], - ]: - frame_value = _get_nested_key(frame_result, path) - try: - summary_value = _get_nested_key(summary_stats, path) - _set_nested_key(summary_stats, path, frame_value + summary_value) - except KeyError: - _set_nested_key(summary_stats, path, frame_value) - - mean_ious.append(frame_result["annotation_element"]["shape"]["mean_iou"]) - - # shape_confusion_matrix_labels = { - # t: t.name for t in self._comparator.included_ann_types - # } - # shape_confusion_matrix_labels[None] = 'unmatched' - # shape_confusion_matrix = _get_nested_key(summary_stats, ["annotation_element", "shape", "shape_confusion_matrix", "rows"]) - # matched_shape_counts = np.diag(shape_confusion_matrix) - # ds_shape_counts = np.sum(shape_confusion_matrix, axis=1) - # gt_shape_counts = np.sum(shape_confusion_matrix, axis=0) - # shape_accuracies = arr_div(matched_shape_counts, ds_shape_counts + gt_shape_counts - matched_shape_counts) - # shape_precisions = arr_div(matched_shape_counts, ds_shape_counts) - # shape_recalls = arr_div(matched_shape_counts, gt_shape_counts) - - confusion_matrix_labels = { - i: label.name - for i, label in enumerate(self._gt_dataset.categories()[dm.AnnotationType.label]) - if not label.parent - } - confusion_matrix_labels[None] = 'unmatched' - confusion_matrix_labels_rmap = { - k: i for i, k in enumerate(confusion_matrix_labels.keys()) - } - confusion_matrix = _get_nested_key(summary_stats, ["annotations", "confusion_matrix", "rows"]) - matched_ann_counts = np.diag(confusion_matrix) - ds_ann_counts = np.sum(confusion_matrix, axis=1) - gt_ann_counts = np.sum(confusion_matrix, axis=0) - label_accuracies = _arr_div(matched_ann_counts, ds_ann_counts + gt_ann_counts - matched_ann_counts) - label_precisions = _arr_div(matched_ann_counts, ds_ann_counts) - label_recalls = _arr_div(matched_ann_counts, gt_ann_counts) - - valid_annotations_count = np.sum(matched_ann_counts) - missing_annotations_count = np.sum(confusion_matrix[:, confusion_matrix_labels_rmap[None]]) - extra_annotations_count = np.sum(confusion_matrix[confusion_matrix_labels_rmap[None], :]) - total_annotations_count = np.sum(confusion_matrix) - ds_annotations_count = np.sum(ds_ann_counts) - gt_annotations_count = np.sum(gt_ann_counts) - - mean_shape_accuracy = _get_nested_key(summary_stats, ["annotation_element", "shape", "valid_count"]) / (_get_nested_key(summary_stats, ["annotation_element", "shape", "total_count"]) or 1) - mean_label_accuracy = _get_nested_key(summary_stats, ["annotation_element", "label", "valid_count"]) / (_get_nested_key(summary_stats, ["annotation_element", "label", "total_count"]) or 1) - # mean_attribute_accuracy = _get_nested_key(summary_stats, ["annotation_element", "attribute", "valid_count"]) / (_get_nested_key(summary_stats, ["annotation_element", "attribute", "total_count"]) or 1) - # TODO: this parameter is questionable and is hard to understand - # mean_accuracy = gmean([mean_shape_accuracy, mean_label_accuracy, - # mean_attribute_accuracy - # ]) - - mean_error_count = summary_stats["errors_count"] / len(intersection_frames) - - return dict( - parameters=dict( - included_annotation_types=[t.name for t in self._comparator.included_ann_types], - # ignored_attributes=self._comparator.ignored_attrs, - iou_threshold=self._comparator._annotation_comparator.iou_threshold, - ), - - intersection_results=dict( - frame_count=len(intersection_frames), - frame_share_percent=len(intersection_frames) / len(self._ds_dataset), - frames=intersection_frames, - - error_count=summary_stats["errors_count"], - mean_error_count=mean_error_count, - # mean_accuracy=mean_accuracy, - - annotations=dict( - valid_count=valid_annotations_count, - missing_count=missing_annotations_count, - extra_count=extra_annotations_count, - total_count=total_annotations_count, - ds_count=ds_annotations_count, - gt_count=gt_annotations_count, - accuracy=valid_annotations_count / (total_annotations_count or 1), - precision=valid_annotations_count / (ds_annotations_count or 1), - recall=valid_annotations_count / (gt_annotations_count or 1), - confusion_matrix=dict( - labels=list(confusion_matrix_labels.values()), - axes=dict( - cols='gt', - rows='ds' - ), - rows=confusion_matrix, - precision=label_precisions, - recall=label_recalls, - accuracy=label_accuracies, - ) - ), - - annotation_element=dict( - shape=dict( - valid_count=_get_nested_key(summary_stats, ["annotation_element", "shape", "valid_count"]), - missing_count=_get_nested_key(summary_stats, ["annotation_element", "shape", "missing_count"]), - extra_count=_get_nested_key(summary_stats, ["annotation_element", "shape", "extra_count"]), - total_count=_get_nested_key(summary_stats, ["annotation_element", "shape", "total_count"]), - ds_count=_get_nested_key(summary_stats, ["annotation_element", "shape", "ds_count"]), - gt_count=_get_nested_key(summary_stats, ["annotation_element", "shape", "gt_count"]), - mean_iou=np.mean(mean_ious), - accuracy=mean_shape_accuracy, - # shape_confusion_matrix=dict( - # labels=list(shape_confusion_matrix_labels.values()), - # axes=dict( - # cols='gt', - # rows='ds' - # ), - # # rows=shape_confusion_matrix, - # precision=shape_precisions, - # recall=shape_recalls, - # accuracy=shape_accuracies, - # ) - ), - label=dict( - valid_count=_get_nested_key(summary_stats, ["annotation_element", "label", "valid_count"]), - invalid_count=_get_nested_key(summary_stats, ["annotation_element", "label", "invalid_count"]), - total_count=_get_nested_key(summary_stats, ["annotation_element", "label", "total_count"]), - accuracy=mean_label_accuracy, - ), - # attribute=dict( - # valid_count=_get_nested_key(summary_stats, ["annotation_element", "attribute", "valid_count"]), - # invalid_count=_get_nested_key(summary_stats, ["annotation_element", "attribute", "invalid_count"]), - # missing_count=_get_nested_key(summary_stats, ["annotation_element", "attribute", "missing_count"]), - # extra_count=_get_nested_key(summary_stats, ["annotation_element", "attribute", "extra_count"]), - # total_count=_get_nested_key(summary_stats, ["annotation_element", "attribute", "total_count"]), - # ds_count=_get_nested_key(summary_stats, ["annotation_element", "attribute", "ds_count"]), - # gt_count=_get_nested_key(summary_stats, ["annotation_element", "attribute", "gt_count"]), - # accuracy=mean_attribute_accuracy, - # ), - ), - ), - - full_dataset=dict( - frame_count=len(self._ds_dataset), - shapes_count=full_ds_comparable_shapes_count, - # attributes_count=full_ds_comparable_attributes_count, - ), - - frame_results=self._frame_results, - ) - - -def main(args=None): - parser = argparse.ArgumentParser() - parser.add_argument("--gt") - parser.add_argument("--gtf", default=None) - parser.add_argument("--ds") - parser.add_argument("--dsf", default=None) - parser.add_argument("-o", default="report.json") - args = parser.parse_args(args) - - gt_dataset = dm.Dataset.import_from(args.gt, format=args.gtf, env=dm_env) - ds_dataset = dm.Dataset.import_from(args.ds, format=args.dsf, env=dm_env) - - comparator = DatasetComparator(ds_dataset, gt_dataset) - comparator._comparator._annotation_comparator.iou_threshold = 0.5 - comparator._ignored_frames = ["frame_{:06d}.PNG".format(i + 1) for i in [23, 50, 100, 104, 111, 118, 151, 165, 170, 184, 200, 222, 223, 232, 236, 237, 253, 293, 302, 314, 359, 372, 379, 409, 438, 469, 470, 500, 502, 554, 557, 615, 631, 664, 687, 729, 736, 778, 781, 797, 842, 874, 894, 895, 917, 919, 952, 1001, 1023, 1025, 1028, 1030, 1040, 1077, 1083, 1098, 1104, 1129, 1166, 1251, 1252, 1253, 1258, 1263, 1264, 1271, 1294, 1308, 1328, 1334, 1352, 1408, 1432, 1489, 1495, 1511, 1570, 1574, 1594, 1625, 1651, 1710, 1716, 1720, 1721, 1730, 1751, 1765, 1794, 1798]] - # comparator._comparator.included_ann_types = [dm.AnnotationType.bbox] - # comparator._comparator.ignored_attrs.append('object_id') - report = comparator.prepare_report() - - class JsonConverter(json.JSONEncoder): - def default(self, o: Any): - if isinstance( - o, (AnnotationConflict, AnnotationConflictsReport, AnnotationId) - ): - return o.to_dict() - elif isinstance(o, (np.ndarray, np.number)): - return o.tolist() - else: - return super().default(o) - - with open(args.o, "w") as f: - json.dump(report, f, cls=JsonConverter, indent=2) - - return 0 - - -if __name__ == "__main__": - sys.exit(main()) From 637841bc0ba95ef74e4cd038698c922644f53d5d Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 24 May 2023 14:15:17 +0300 Subject: [PATCH 178/257] Polish quality tests --- tests/python/rest_api/test_quality_control.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py index c9229b508ebd..bc805c75ebae 100644 --- a/tests/python/rest_api/test_quality_control.py +++ b/tests/python/rest_api/test_quality_control.py @@ -864,7 +864,9 @@ def test_user_patch_settings_in_org_task( @pytest.mark.usefixtures("restore_db_per_function") class TestQualityReportMetrics(_PermissionTestBase): - @pytest.mark.parametrize("task_id", [22]) + demo_task_id = 22 # this task reproduces all the checkable cases + + @pytest.mark.parametrize("task_id", [demo_task_id]) def test_report_summary(self, task_id, tasks, jobs, quality_reports): gt_job = next(j for j in jobs if j["task_id"] == task_id and j["type"] == "ground_truth") task = tasks[task_id] @@ -872,6 +874,7 @@ def test_report_summary(self, task_id, tasks, jobs, quality_reports): summary = report["summary"] assert 0 < summary["conflict_count"] + assert all(summary["conflicts_by_type"].values()) assert summary["conflict_count"] == sum(summary["conflicts_by_type"].values()) assert summary["conflict_count"] == summary["warning_count"] + summary["error_count"] assert 0 < summary["valid_count"] @@ -943,7 +946,7 @@ def test_modified_task_produces_different_metrics( new_report = self.create_quality_report(admin_user, task_id) assert new_report["summary"]["conflict_count"] > old_report["summary"]["conflict_count"] - @pytest.mark.parametrize("task_id", [22]) + @pytest.mark.parametrize("task_id", [demo_task_id]) @pytest.mark.parametrize( "parameter", [ From bb1c10766ef2cb73ec73f261d80f0a36613955d9 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 25 May 2023 17:02:49 +0300 Subject: [PATCH 179/257] Fix frame naming in interpolation tasks --- cvat-core/src/frames.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cvat-core/src/frames.ts b/cvat-core/src/frames.ts index 8f2f9055ff5e..94daecab1979 100644 --- a/cvat-core/src/frames.ts +++ b/cvat-core/src/frames.ts @@ -319,9 +319,10 @@ FrameData.prototype.data.implementation = async function (onServerRequest) { function getFrameMeta(jobID, frame): FramesMetaData['frames'][0] { const { meta, mode, startFrame } = frameDataCache[jobID]; let frame_meta = null; - if (mode === 'interpolation') { + if (mode === 'interpolation' && meta.frames.length == 1) { + // video tasks have 1 frame info, but image tasks will have many infos [frame_meta] = meta.frames; - } else if (mode === 'annotation') { + } else if (mode === 'annotation' || mode === 'interpolation' && meta.frames.length > 1) { if (frame > meta.stop_frame) { throw new ArgumentError(`Meta information about frame ${frame} can't be received from the server`); } From 674ba56f52a44017e1d6675e82fc4a55512f99ab Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 25 May 2023 17:05:06 +0300 Subject: [PATCH 180/257] Add draft solution for frame skips in chunks --- cvat-core/src/session.ts | 5 +- cvat/apps/engine/cache.py | 80 ++++++++++++++++++++++++---- cvat/apps/engine/frame_provider.py | 4 +- cvat/apps/engine/media_extractors.py | 14 +++-- cvat/apps/engine/serializers.py | 6 +++ cvat/apps/engine/views.py | 45 +++++++++++++--- 6 files changed, 131 insertions(+), 23 deletions(-) diff --git a/cvat-core/src/session.ts b/cvat-core/src/session.ts index 9437711205e7..9a6fe24d5e90 100644 --- a/cvat-core/src/session.ts +++ b/cvat-core/src/session.ts @@ -324,7 +324,7 @@ export class Job extends Session { public readonly projectId: number | null; public readonly taskId: number; public readonly dimension: DimensionType; - public readonly dataCompressedChunkType: ChunkType; + public readonly dataChunkType: ChunkType; public readonly bugTracker: string | null; public readonly mode: TaskMode; public readonly labels: Label[]; @@ -629,8 +629,7 @@ export class Task extends Session { public readonly segmentSize: number; public readonly imageQuality: number; public readonly dataChunkSize: number; - public readonly dataCompressedChunkType: ChunkType; - public readonly dataOriginalChunkType: ChunkType; + public readonly dataChunkType: ChunkType; public readonly dimension: DimensionType; public readonly sourceStorage: Storage; public readonly targetStorage: Storage; diff --git a/cvat/apps/engine/cache.py b/cvat/apps/engine/cache.py index c09ca989b5f4..cdb10a2ca382 100644 --- a/cvat/apps/engine/cache.py +++ b/cvat/apps/engine/cache.py @@ -3,11 +3,11 @@ # SPDX-License-Identifier: MIT import os -import io import zipfile from io import BytesIO from datetime import datetime from tempfile import NamedTemporaryFile +import PIL.Image import cv2 import pytz @@ -19,7 +19,7 @@ from cvat.apps.engine.media_extractors import (Mpeg4ChunkWriter, Mpeg4CompressedChunkWriter, ZipChunkWriter, ZipCompressedChunkWriter, ImageDatasetManifestReader, VideoDatasetManifestReader) -from cvat.apps.engine.models import DataChoice, StorageChoice, Image +from cvat.apps.engine.models import DataChoice, StorageChoice, Image, Job from cvat.apps.engine.models import DimensionType from cvat.apps.engine.cloud_provider import get_cloud_storage_instance, Credentials from cvat.apps.engine.utils import md5_hash @@ -42,10 +42,18 @@ def _get_or_set_cache_item(self, key, create_function): return item - def get_buf_chunk_with_mime(self, chunk_number, quality, db_data): + def get_task_chunk_data_with_mime(self, chunk_number, quality, db_data): item = self._get_or_set_cache_item( key=f'{db_data.id}_{chunk_number}_{quality}', - create_function=lambda: self._prepare_chunk_buff(db_data, quality, chunk_number), + create_function=lambda: self._prepare_task_chunk(db_data, quality, chunk_number), + ) + + return item + + def get_job_chunk_data_with_mime(self, chunk_number, quality, job): + item = self._get_or_set_cache_item( + key=f'{job.id}_{chunk_number}_{quality}', + create_function=lambda: self._prepare_job_chunk(job, quality, chunk_number), ) return item @@ -75,12 +83,12 @@ def get_frame_context_images(self, db_data, frame_number): return item @staticmethod - def _get_frame_provider(): + def _get_frame_provider_class(): from cvat.apps.engine.frame_provider import FrameProvider # TODO: remove circular dependency return FrameProvider - def _prepare_chunk_buff(self, db_data, quality, chunk_number): - FrameProvider = self._get_frame_provider() + def _prepare_task_chunk(self, db_data, quality, chunk_number): + FrameProvider = self._get_frame_provider_class() writer_classes = { FrameProvider.Quality.COMPRESSED : Mpeg4CompressedChunkWriter if db_data.compressed_chunk_type == DataChoice.VIDEO else ZipCompressedChunkWriter, @@ -155,8 +163,62 @@ def _prepare_chunk_buff(self, db_data, quality, chunk_number): os.remove(image_path) return buff, mime_type + def _prepare_job_chunk(self, db_job: Job, quality, chunk_number: int): + db_data = db_job.segment.task.data + + FrameProvider = self._get_frame_provider_class() + frame_provider = FrameProvider(db_data, self._dimension) + + frame_set = db_job.segment.frame_set + frame_step = db_data.get_frame_step() + chunk_frames = [] + + dummy_frame = BytesIO() + PIL.Image.new('RGB', (1, 1)).save(dummy_frame, 'jpeg') + + if hasattr(db_data, 'video'): + frame_size = (db_data.video.width, db_data.video.height) + else: + frame_size = None + + for frame_idx in range(db_data.chunk_size): + frame_idx = ( + db_data.start_frame + chunk_number * db_data.chunk_size + frame_idx * frame_step + ) + if db_data.stop_frame < frame_idx: + break + + frame_bytes = None + + if frame_idx in frame_set: + frame_bytes = frame_provider.get_frame(frame_idx, quality=quality)[0] + + if frame_size is not None: + frame = PIL.Image.open(frame_bytes) + if frame.size != frame_size: + frame = frame.resize(frame_size) + + frame_bytes = BytesIO() + frame.save(frame_bytes, 'jpeg') + frame_bytes.seek(0) + + else: + # Populate skipped frames with placeholder data, + # this is required for video chunk decoding implementation in UI + frame_bytes = BytesIO(dummy_frame.getvalue()) + + if frame_bytes is not None: + chunk_frames.append((frame_bytes, None, None)) + + buff = BytesIO() + writer = ZipCompressedChunkWriter(db_data.image_quality, dimension=self._dimension) + writer.save_as_chunk(chunk_frames, buff, compress_frames=False, zip_compress_level=1) + buff.seek(0) + + return buff, 'application/zip' + def _prepare_local_preview(self, frame_number, db_data): - FrameProvider = self._get_frame_provider() + FrameProvider = self._get_frame_provider_class() frame_provider = FrameProvider(db_data, self._dimension) buff, mime_type = frame_provider.get_preview(frame_number) @@ -196,7 +258,7 @@ def _prepare_cloud_preview(self, db_storage): return buff, mime_type def _prepare_context_image(self, db_data, frame_number): - zip_buffer = io.BytesIO() + zip_buffer = BytesIO() try: image = Image.objects.get(data_id=db_data.id, frame=frame_number) except Image.DoesNotExist: diff --git a/cvat/apps/engine/frame_provider.py b/cvat/apps/engine/frame_provider.py index ea7b56a57c01..d37cedd27c57 100644 --- a/cvat/apps/engine/frame_provider.py +++ b/cvat/apps/engine/frame_provider.py @@ -101,12 +101,12 @@ def __init__(self, db_data, dimension=DimensionType.DIM_2D): self._loaders[self.Quality.COMPRESSED] = self.BuffChunkLoader( reader_class[db_data.compressed_chunk_type], - cache.get_buf_chunk_with_mime, + cache.get_task_chunk_data_with_mime, self.Quality.COMPRESSED, self._db_data) self._loaders[self.Quality.ORIGINAL] = self.BuffChunkLoader( reader_class[db_data.original_chunk_type], - cache.get_buf_chunk_with_mime, + cache.get_task_chunk_data_with_mime, self.Quality.ORIGINAL, self._db_data) else: diff --git a/cvat/apps/engine/media_extractors.py b/cvat/apps/engine/media_extractors.py index bec571ad5ebb..4c97a85fa676 100644 --- a/cvat/apps/engine/media_extractors.py +++ b/cvat/apps/engine/media_extractors.py @@ -649,12 +649,20 @@ def save_as_chunk(self, images, chunk_path): return [] class ZipCompressedChunkWriter(IChunkWriter): - def save_as_chunk(self, images, chunk_path): + def save_as_chunk( + self, images, chunk_path, *, compress_frames: bool = True, zip_compress_level: int = 0 + ): image_sizes = [] - with zipfile.ZipFile(chunk_path, 'x') as zip_chunk: + with zipfile.ZipFile(chunk_path, 'x', compresslevel=zip_compress_level) as zip_chunk: for idx, (image, _, _) in enumerate(images): if self._dimension == DimensionType.DIM_2D: - w, h, image_buf = self._compress_image(image, self._image_quality) + if compress_frames: + w, h, image_buf = self._compress_image(image, self._image_quality) + else: + assert isinstance(image, io.IOBase) + image_buf = io.BytesIO(image.read()) + w, h = Image.open(image_buf).size + extension = "jpeg" else: image_buf = open(image, "rb") if isinstance(image, str) else image diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index 1a2b071c666d..6b433f21e901 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -564,6 +564,12 @@ class Meta: 'created_date', 'updated_date', 'issues', 'labels', 'type') read_only_fields = fields + def to_representation(self, instance): + data = super().to_representation(instance) + if instance.segment.type == models.SegmentType.SPECIFIC_FRAMES: + data['data_compressed_chunk_type'] = models.DataChoice.IMAGESET + return data + class JobWriteSerializer(WriteOnceMixin, serializers.ModelSerializer): assignee = serializers.IntegerField(allow_null=True, required=False) diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index 8eb174f7f021..8c21aa48928f 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -7,6 +7,7 @@ import os import os.path as osp import textwrap +from types import SimpleNamespace import pytz import traceback from datetime import datetime @@ -47,7 +48,7 @@ from cvat.apps.engine.frame_provider import FrameProvider from cvat.apps.engine.media_extractors import get_mime from cvat.apps.engine.models import ( - Job, JobType, Label, Task, Project, Issue, Data, + Job, JobType, Label, SegmentType, Task, Project, Issue, Data, Comment, StorageMethodChoice, StorageChoice, CloudProviderChoice, Location ) @@ -631,6 +632,31 @@ def __call__(self, request, start, stop, db_data): '\n'.join([str(d) for d in ex.detail]) return Response(data=msg, status=ex.status_code) + +class JobDataGetter(DataChunkGetter): + def __init__(self, job: Job, data_type, data_num, data_quality): + super().__init__(data_type, data_num, data_quality, task_dim=job.segment.task.dimension) + self.job = job + + def __call__(self, request, start, stop, db_data): + if self.type == 'chunk' and self.job.segment.type == SegmentType.SPECIFIC_FRAMES: + cache = MediaCache() + + if settings.USE_CACHE and db_data.storage_method == StorageMethodChoice.CACHE: + buf, mime = cache.get_job_chunk_data_with_mime( + chunk_number=self.number, quality=self.quality, job=self.job + ) + else: + buf, mime = cache._prepare_job_chunk( + chunk_number=self.number, quality=self.quality, db_job=self.job + ) + + return HttpResponse(buf.getvalue(), content_type=mime) + + else: + return super().__call__(request, start, stop, db_data) + + @extend_schema(tags=['tasks']) @extend_schema_view( list=extend_schema( @@ -1586,8 +1612,7 @@ def data(self, request, pk): data_num = request.query_params.get('number', None) data_quality = request.query_params.get('quality', 'compressed') - data_getter = DataChunkGetter(data_type, data_num, data_quality, - db_job.segment.task.dimension) + data_getter = JobDataGetter(db_job, data_type, data_num, data_quality) return data_getter(request, db_job.segment.start_frame, db_job.segment.stop_frame, db_job.segment.task.data) @@ -1617,8 +1642,13 @@ def metadata(self, request, pk): db_data = db_job.segment.task.data start_frame = db_job.segment.start_frame stop_frame = db_job.segment.stop_frame - data_start_frame = db_data.start_frame + start_frame * db_data.get_frame_step() - data_stop_frame = db_data.start_frame + stop_frame * db_data.get_frame_step() + frame_step = db_data.get_frame_step() + data_start_frame = db_data.start_frame + start_frame * frame_step + data_stop_frame = db_data.start_frame + stop_frame * frame_step + frame_set = set( + db_data.start_frame + rel_id * frame_step + for rel_id in db_job.segment.frame_set + ) if request.method == 'PATCH': serializer = DataMetaWriteSerializer(instance=db_data, data=request.data) @@ -1638,7 +1668,10 @@ def metadata(self, request, pk): if hasattr(db_data, 'video'): media = [db_data.video] else: - media = [f + media = [ + f if f.frame in frame_set else SimpleNamespace( + path=f'placeholder.jpg', width=f.width, height=f.height + ) for f in db_data.images.filter( frame__gte=data_start_frame, frame__lte=data_stop_frame, From 412603ce17585257391c2c07b1115c5c9c053858 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 25 May 2023 17:05:35 +0300 Subject: [PATCH 181/257] Fix job removal --- cvat/apps/engine/models.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index 3975af7e3b69..227d8a27f1a7 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -672,6 +672,13 @@ def delete(self, using=None, keep_parents=False): super().delete(using, keep_parents) + self.delete_dirs() + + def delete_dirs(self): + job_path = self.get_dirname() + if os.path.isdir(job_path): + shutil.rmtree(job_path) + def make_dirs(self): job_path = self.get_dirname() if os.path.isdir(job_path): From 8c56ceae5900c1d4ecc998dc77268d46a7bb520c Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 25 May 2023 17:15:41 +0300 Subject: [PATCH 182/257] Polish some code --- cvat/apps/engine/cache.py | 18 +++++++++++------- cvat/apps/engine/media_extractors.py | 7 +++++-- cvat/apps/engine/views.py | 6 ++++-- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/cvat/apps/engine/cache.py b/cvat/apps/engine/cache.py index cdb10a2ca382..7295a2fa1167 100644 --- a/cvat/apps/engine/cache.py +++ b/cvat/apps/engine/cache.py @@ -50,10 +50,10 @@ def get_task_chunk_data_with_mime(self, chunk_number, quality, db_data): return item - def get_job_chunk_data_with_mime(self, chunk_number, quality, job): + def get_selective_job_chunk_data_with_mime(self, chunk_number, quality, job): item = self._get_or_set_cache_item( key=f'{job.id}_{chunk_number}_{quality}', - create_function=lambda: self._prepare_job_chunk(job, quality, chunk_number), + create_function=lambda: self.prepare_selective_job_chunk(job, quality, chunk_number), ) return item @@ -163,7 +163,7 @@ def _prepare_task_chunk(self, db_data, quality, chunk_number): os.remove(image_path) return buff, mime_type - def _prepare_job_chunk(self, db_job: Job, quality, chunk_number: int): + def prepare_selective_job_chunk(self, db_job: Job, quality, chunk_number: int): db_data = db_job.segment.task.data FrameProvider = self._get_frame_provider_class() @@ -173,8 +173,9 @@ def _prepare_job_chunk(self, db_job: Job, quality, chunk_number: int): frame_step = db_data.get_frame_step() chunk_frames = [] + writer = ZipCompressedChunkWriter(db_data.image_quality, dimension=self._dimension) dummy_frame = BytesIO() - PIL.Image.new('RGB', (1, 1)).save(dummy_frame, 'jpeg') + PIL.Image.new('RGB', (1, 1)).save(dummy_frame, writer.IMAGE_EXT) if hasattr(db_data, 'video'): frame_size = (db_data.video.width, db_data.video.height) @@ -194,12 +195,14 @@ def _prepare_job_chunk(self, db_job: Job, quality, chunk_number: int): frame_bytes = frame_provider.get_frame(frame_idx, quality=quality)[0] if frame_size is not None: + # Decoded video frames can have different size, restore the original one + frame = PIL.Image.open(frame_bytes) if frame.size != frame_size: frame = frame.resize(frame_size) frame_bytes = BytesIO() - frame.save(frame_bytes, 'jpeg') + frame.save(frame_bytes, writer.IMAGE_EXT) frame_bytes.seek(0) else: @@ -211,8 +214,9 @@ def _prepare_job_chunk(self, db_job: Job, quality, chunk_number: int): chunk_frames.append((frame_bytes, None, None)) buff = BytesIO() - writer = ZipCompressedChunkWriter(db_data.image_quality, dimension=self._dimension) - writer.save_as_chunk(chunk_frames, buff, compress_frames=False, zip_compress_level=1) + writer.save_as_chunk(chunk_frames, buff, compress_frames=False, + zip_compress_level=1 # these are likely to be many skips in SPECIFIC_FRAMES segments + ) buff.seek(0) return buff, 'application/zip' diff --git a/cvat/apps/engine/media_extractors.py b/cvat/apps/engine/media_extractors.py index 4c97a85fa676..53b98f34e609 100644 --- a/cvat/apps/engine/media_extractors.py +++ b/cvat/apps/engine/media_extractors.py @@ -649,6 +649,9 @@ def save_as_chunk(self, images, chunk_path): return [] class ZipCompressedChunkWriter(IChunkWriter): + IMAGE_EXT = 'jpeg' + POINT_CLOUD_EXT = 'pcd' + def save_as_chunk( self, images, chunk_path, *, compress_frames: bool = True, zip_compress_level: int = 0 ): @@ -663,12 +666,12 @@ def save_as_chunk( image_buf = io.BytesIO(image.read()) w, h = Image.open(image_buf).size - extension = "jpeg" + extension = self.IMAGE_EXT else: image_buf = open(image, "rb") if isinstance(image, str) else image properties = ValidateDimension.get_pcd_properties(image_buf) w, h = int(properties["WIDTH"]), int(properties["HEIGHT"]) - extension = "pcd" + extension = self.POINT_CLOUD_EXT image_buf.seek(0, 0) image_buf = io.BytesIO(image_buf.read()) image_sizes.append((w, h)) diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index 8c21aa48928f..df048e5d0703 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -643,11 +643,11 @@ def __call__(self, request, start, stop, db_data): cache = MediaCache() if settings.USE_CACHE and db_data.storage_method == StorageMethodChoice.CACHE: - buf, mime = cache.get_job_chunk_data_with_mime( + buf, mime = cache.get_selective_job_chunk_data_with_mime( chunk_number=self.number, quality=self.quality, job=self.job ) else: - buf, mime = cache._prepare_job_chunk( + buf, mime = cache.prepare_selective_job_chunk( chunk_number=self.number, quality=self.quality, db_job=self.job ) @@ -1669,6 +1669,8 @@ def metadata(self, request, pk): media = [db_data.video] else: media = [ + # Insert placeholders if frames are skipped + # We could skip them here too, but UI can't decode chunks then f if f.frame in frame_set else SimpleNamespace( path=f'placeholder.jpg', width=f.width, height=f.height ) From 6ee3974f3da0af0b45c092e3e65c1df833d2abfd Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 26 May 2023 12:45:49 +0300 Subject: [PATCH 183/257] Add gt job data tests --- cvat/apps/engine/views.py | 49 +++++-- tests/python/rest_api/test_jobs.py | 213 ++++++++++++++++++++++------- 2 files changed, 200 insertions(+), 62 deletions(-) diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index df048e5d0703..fd5d28457a0d 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -8,6 +8,7 @@ import os.path as osp import textwrap from types import SimpleNamespace +from typing import Optional import pytz import traceback from datetime import datetime @@ -577,10 +578,21 @@ def __init__(self, data_type, data_num, data_quality, task_dim): self.dimension = task_dim - def __call__(self, request, start, stop, db_data): + def _check_frame_range(self, frame: int): + frame_range = range(self._start, self._stop + 1, self._db_data.get_frame_step()) + if frame not in frame_range: + raise ValidationError( + f'The frame number should be in the [{self._start}, {self._stop}] range' + ) + + def __call__(self, request, start: int, stop: int, db_data: Optional[Data]): if not db_data: raise NotFound(detail='Cannot find requested data') + self._start = start + self._stop = stop + self._db_data = db_data + frame_provider = FrameProvider(db_data, self.dimension) try: @@ -589,7 +601,7 @@ def __call__(self, request, start, stop, db_data): stop_chunk = frame_provider.get_chunk_number(stop) # pylint: disable=superfluous-parens if not (start_chunk <= self.number <= stop_chunk): - raise ValidationError('The chunk number should be in ' + + raise ValidationError('The chunk number should be in the ' + f'[{start_chunk}, {stop_chunk}] range') # TODO: av.FFmpegError processing @@ -603,9 +615,7 @@ def __call__(self, request, start, stop, db_data): return sendfile(request, path) elif self.type == 'frame' or self.type == 'preview': - if not (start <= self.number <= stop): - raise ValidationError('The frame number should be in ' + - f'[{start}, {stop}] range') + self._check_frame_range(self.number) if self.type == 'preview': cache = MediaCache(self.dimension) @@ -616,14 +626,13 @@ def __call__(self, request, start, stop, db_data): return HttpResponse(buf.getvalue(), content_type=mime) elif self.type == 'context_image': - if start <= self.number <= stop: - cache = MediaCache(self.dimension) - buff, mime = cache.get_frame_context_images(db_data, self.number) - if not buff: - return HttpResponseNotFound() - return HttpResponse(io.BytesIO(buff), content_type=mime) - raise ValidationError('The frame number should be in ' + - f'[{start}, {stop}] range') + self._check_frame_range(self.number) + + cache = MediaCache(self.dimension) + buff, mime = cache.get_frame_context_images(db_data, self.number) + if not buff: + return HttpResponseNotFound() + return HttpResponse(io.BytesIO(buff), content_type=mime) else: return Response(data='unknown data type {}.'.format(self.type), status=status.HTTP_400_BAD_REQUEST) @@ -638,8 +647,22 @@ def __init__(self, job: Job, data_type, data_num, data_quality): super().__init__(data_type, data_num, data_quality, task_dim=job.segment.task.dimension) self.job = job + def _check_frame_range(self, frame: int): + frame_range = self.job.segment.frame_set + if frame not in frame_range: + raise ValidationError("The frame number doesn't belong to the job") + def __call__(self, request, start, stop, db_data): if self.type == 'chunk' and self.job.segment.type == SegmentType.SPECIFIC_FRAMES: + frame_provider = FrameProvider(db_data, self.dimension) + + start_chunk = frame_provider.get_chunk_number(start) + stop_chunk = frame_provider.get_chunk_number(stop) + # pylint: disable=superfluous-parens + if not (start_chunk <= self.number <= stop_chunk): + raise ValidationError('The chunk number should be in the ' + + f'[{start_chunk}, {stop_chunk}] range') + cache = MediaCache() if settings.USE_CACHE and db_data.storage_method == StorageMethodChoice.CACHE: diff --git a/tests/python/rest_api/test_jobs.py b/tests/python/rest_api/test_jobs.py index 88a22a942062..0e5096fecd19 100644 --- a/tests/python/rest_api/test_jobs.py +++ b/tests/python/rest_api/test_jobs.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: MIT import json +import os import xml.etree.ElementTree as ET import zipfile from copy import deepcopy @@ -11,6 +12,7 @@ from io import BytesIO from typing import Any, Dict, List, Optional +import numpy as np import pytest from cvat_sdk import models from cvat_sdk.api_client.api_client import ApiClient, Endpoint @@ -170,55 +172,6 @@ def test_can_create_gt_job_with_random_frames_and_seed(self, admin_user, task_id assert gt_job_meta.included_frames == frame_ids - @pytest.mark.parametrize("task_mode", ["annotation", "interpolation"]) - def test_can_get_gt_job_meta(self, admin_user, tasks, task_mode): - user = admin_user - job_frame_count = 4 - task = next( - t - for t in tasks - if not t["project_id"] - and not t["organization"] - and t["mode"] == task_mode - and t["size"] > job_frame_count - ) - task_id = task["id"] - with make_api_client(user) as api_client: - (task_meta, _) = api_client.tasks_api.retrieve_data_meta(task_id) - frame_step = int(task_meta.frame_filter.split("=")[-1]) if task_meta.frame_filter else 1 - - job_frame_ids = list(range(task_meta.start_frame, task_meta.stop_frame, frame_step))[ - :job_frame_count - ] - job_spec = { - "task_id": task_id, - "type": "ground_truth", - "frame_selection_method": "manual", - "frames": job_frame_ids, - } - - response = self._test_create_job_ok(user, job_spec) - job_id = json.loads(response.data)["id"] - - with make_api_client(user) as api_client: - (gt_job_meta, _) = api_client.jobs_api.retrieve_data_meta(job_id) - - # The size is adjusted by the frame step and included frames - assert job_frame_count == gt_job_meta.size - assert job_frame_ids == gt_job_meta.included_frames - - # The frames themselves are the same as in the whole range - # this is to allow navigation to adjacent frames - if task_mode == "annotation": - assert ( - len(gt_job_meta.frames) - == (gt_job_meta.stop_frame + 1 - gt_job_meta.start_frame) / frame_step - ) - elif task_mode == "interpolation": - assert len(gt_job_meta.frames) == 1 - else: - assert False - def test_can_create_no_more_than_1_gt_job(self, admin_user, jobs): user = admin_user task_id = next(j for j in jobs if j["type"] == "ground_truth")["task_id"] @@ -572,6 +525,168 @@ def test_get_gt_job_in_org_task( self._test_get_job_403(user["username"], job["id"], **extra_kwargs) +@pytest.mark.usefixtures( + # if the db is restored per test, there are conflicts with the server data cache + # if we don't clean the db, the gt jobs created will be reused, and their + # ids won't conflict + "restore_db_per_class" +) +class TestGetGtJobData: + @pytest.mark.usefixtures("restore_db_per_function") + @pytest.mark.parametrize("task_mode", ["annotation", "interpolation"]) + def test_can_get_gt_job_meta(self, admin_user, tasks, task_mode): + user = admin_user + job_frame_count = 4 + task = next( + t + for t in tasks + if not t["project_id"] + and not t["organization"] + and t["mode"] == task_mode + and t["size"] > job_frame_count + ) + task_id = task["id"] + with make_api_client(user) as api_client: + (task_meta, _) = api_client.tasks_api.retrieve_data_meta(task_id) + frame_step = int(task_meta.frame_filter.split("=")[-1]) if task_meta.frame_filter else 1 + + job_frame_ids = list(range(task_meta.start_frame, task_meta.stop_frame, frame_step))[ + :job_frame_count + ] + gt_job = self._get_or_create_gt_job(admin_user, task_id, job_frame_ids) + + with make_api_client(user) as api_client: + (gt_job_meta, _) = api_client.jobs_api.retrieve_data_meta(gt_job.id) + + # The size is adjusted by the frame step and included frames + assert job_frame_count == gt_job_meta.size + assert job_frame_ids == gt_job_meta.included_frames + + # The frames themselves are the same as in the whole range + # this is required in UI implementation + if task_mode == "annotation": + assert ( + len(gt_job_meta.frames) + == (gt_job_meta.stop_frame + 1 - gt_job_meta.start_frame) / frame_step + ) + elif task_mode == "interpolation": + assert len(gt_job_meta.frames) == 1 + else: + assert False + + @pytest.mark.parametrize("task_mode", ["annotation", "interpolation"]) + @pytest.mark.parametrize("quality", ["compressed", "original"]) + def test_can_get_gt_job_chunk(self, admin_user, tasks, task_mode, quality): + user = admin_user + job_frame_count = 4 + task = next( + t + for t in tasks + if not t["project_id"] + and not t["organization"] + and t["mode"] == task_mode + and t["size"] > job_frame_count + ) + task_id = task["id"] + with make_api_client(user) as api_client: + (task_meta, _) = api_client.tasks_api.retrieve_data_meta(task_id) + frame_step = int(task_meta.frame_filter.split("=")[-1]) if task_meta.frame_filter else 1 + + job_frame_ids = list(range(task_meta.start_frame, task_meta.stop_frame, frame_step))[ + :job_frame_count + ] + gt_job = self._get_or_create_gt_job(admin_user, task_id, job_frame_ids) + + with make_api_client(admin_user) as api_client: + (chunk_file, response) = api_client.jobs_api.retrieve_data( + gt_job.id, number=0, quality=quality, type="chunk" + ) + assert response.status == HTTPStatus.OK + + frame_range = range( + task_meta.start_frame, min(task_meta.stop_frame + 1, task_meta.chunk_size), frame_step + ) + included_frames = job_frame_ids + + with zipfile.ZipFile(chunk_file) as chunk: + assert set(chunk.namelist()) == set("{:06d}.jpeg".format(i) for i in frame_range) + + for file_info in chunk.filelist: + with chunk.open(file_info) as image_file: + image = Image.open(image_file) + image_data = np.array(image) + + if int(os.path.splitext(file_info.filename)[0]) not in included_frames: + assert image.size == (1, 1) + assert np.all(image_data == 0), image_data + else: + assert image.size > (1, 1) + assert np.any(image_data != 0) + + def _get_or_create_gt_job(self, user, task_id, frames): + with make_api_client(user) as api_client: + (task_jobs, _) = api_client.jobs_api.list(task_id=task_id, type="ground_truth") + if task_jobs.results: + gt_job = task_jobs.results[0] + else: + job_spec = { + "task_id": task_id, + "type": "ground_truth", + "frame_selection_method": "manual", + "frames": frames, + } + + (gt_job, _) = api_client.jobs_api.create(job_spec) + + return gt_job + + @pytest.mark.parametrize("task_mode", ["annotation", "interpolation"]) + @pytest.mark.parametrize("quality", ["compressed", "original"]) + def test_can_get_gt_job_frame(self, admin_user, tasks, task_mode, quality): + user = admin_user + job_frame_count = 4 + task = next( + t + for t in tasks + if not t["project_id"] + and not t["organization"] + and t["mode"] == task_mode + and t["size"] > job_frame_count + ) + task_id = task["id"] + with make_api_client(user) as api_client: + (task_meta, _) = api_client.tasks_api.retrieve_data_meta(task_id) + frame_step = int(task_meta.frame_filter.split("=")[-1]) if task_meta.frame_filter else 1 + + job_frame_ids = list(range(task_meta.start_frame, task_meta.stop_frame, frame_step))[ + :job_frame_count + ] + gt_job = self._get_or_create_gt_job(admin_user, task_id, job_frame_ids) + + frame_range = range( + task_meta.start_frame, min(task_meta.stop_frame + 1, task_meta.chunk_size), frame_step + ) + included_frames = job_frame_ids + excluded_frames = list(set(frame_range).difference(included_frames)) + + with make_api_client(admin_user) as api_client: + (_, response) = api_client.jobs_api.retrieve_data( + gt_job.id, + number=excluded_frames[0], + quality=quality, + type="frame", + _parse_response=False, + _check_status=False, + ) + assert response.status == HTTPStatus.BAD_REQUEST + assert b"The frame number doesn't belong to the job" in response.data + + (_, response) = api_client.jobs_api.retrieve_data( + gt_job.id, number=included_frames[0], quality=quality, type="frame" + ) + assert response.status == HTTPStatus.OK + + @pytest.mark.usefixtures("restore_db_per_class") class TestListJobs: def _test_list_jobs_200(self, user, data, **kwargs): From bdfe61419ca369d2288c65e2f759e1b3a9331116 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 26 May 2023 13:04:46 +0300 Subject: [PATCH 184/257] Add squashed migration --- .../0068_add_job_type_created_date.py | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 cvat/apps/engine/migrations/0068_add_job_type_created_date.py diff --git a/cvat/apps/engine/migrations/0068_add_job_type_created_date.py b/cvat/apps/engine/migrations/0068_add_job_type_created_date.py new file mode 100644 index 000000000000..fcab8728f1cf --- /dev/null +++ b/cvat/apps/engine/migrations/0068_add_job_type_created_date.py @@ -0,0 +1,56 @@ +import cvat.apps.engine.models +from django.db import migrations, models +import django.utils.timezone + + +def add_created_date_to_existing_jobs(apps, schema_editor): + Job = apps.get_model("engine", "Job") + + jobs = Job.objects.prefetch_related('segment__task').all() + for job in jobs: + task = job.segment.task + job.created_date = task.created_date + + Job.objects.bulk_update(jobs, fields=['created_date']) + + +class Migration(migrations.Migration): + + replaces = [('engine', '0068_auto_20230406_1333'), ('engine', '0069_annotationconflict_annotationconflictsreport'), ('engine', '0070_alter_segment_frames'), ('engine', '0071_job_created_date'), ('engine', '0072_auto_20230422_1013'), ('engine', '0073_auto_20230426_1557'), ('engine', '0074_rename_frame_id_annotationconflict_frame'), ('engine', '0075_alter_annotationconflict_type'), ('engine', '0076_alter_annotationid_type'), ('engine', '0077_alter_annotationconflict_type'), ('engine', '0078_alter_annotationconflict_type'), ('engine', '0079_alter_annotationconflict_type'), ('engine', '0080_annotationconflict_importance'), ('engine', '0081_qualitysettings'), ('engine', '0082_alter_job_type'), ('engine', '0083_move_quality_models')] + + dependencies = [ + ('engine', '0067_alter_cloudstorage_credentials_type'), + ] + + operations = [ + migrations.AddField( + model_name='job', + name='type', + field=models.CharField(choices=[('annotation', 'ANNOTATION'), ('ground_truth', 'GROUND_TRUTH')], default='annotation', max_length=32), + ), + migrations.AddField( + model_name='segment', + name='frames', + field=cvat.apps.engine.models.IntArrayField(blank=True, default=''), + ), + migrations.AddField( + model_name='segment', + name='type', + field=models.CharField(choices=[('range', 'RANGE'), ('specific_frames', 'SPECIFIC_FRAMES')], default='range', max_length=32), + ), + + migrations.AddField( + model_name='job', + name='created_date', + field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now, null=True), + preserve_default=False, + ), + migrations.RunPython( + code=add_created_date_to_existing_jobs, + ), + migrations.AlterField( + model_name='job', + name='created_date', + field=models.DateTimeField(auto_now_add=True), + ), + ] From ea8331a64a1b2ea62c2cf686435714544f0b5fcf Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 26 May 2023 13:06:39 +0300 Subject: [PATCH 185/257] Replace squashed migrations --- .../0068_add_job_type_created_date.py | 2 - .../migrations/0068_auto_20230406_1333.py | 29 -------------- ...ationconflict_annotationconflictsreport.py | 34 ----------------- .../migrations/0070_alter_segment_frames.py | 19 ---------- .../migrations/0071_job_created_date.py | 37 ------------------ .../migrations/0072_auto_20230422_1013.py | 35 ----------------- .../migrations/0073_auto_20230426_1557.py | 37 ------------------ ...ename_frame_id_annotationconflict_frame.py | 18 --------- .../0075_alter_annotationconflict_type.py | 18 --------- .../0076_alter_annotationid_type.py | 18 --------- .../0077_alter_annotationconflict_type.py | 18 --------- .../0078_alter_annotationconflict_type.py | 18 --------- .../0079_alter_annotationconflict_type.py | 18 --------- .../0080_annotationconflict_importance.py | 19 ---------- .../engine/migrations/0081_qualitysettings.py | 33 ---------------- .../engine/migrations/0082_alter_job_type.py | 37 ------------------ .../migrations/0083_move_quality_models.py | 28 -------------- .../migrations/0001_initial.py | 38 +++++++++---------- 18 files changed, 18 insertions(+), 438 deletions(-) delete mode 100644 cvat/apps/engine/migrations/0068_auto_20230406_1333.py delete mode 100644 cvat/apps/engine/migrations/0069_annotationconflict_annotationconflictsreport.py delete mode 100644 cvat/apps/engine/migrations/0070_alter_segment_frames.py delete mode 100644 cvat/apps/engine/migrations/0071_job_created_date.py delete mode 100644 cvat/apps/engine/migrations/0072_auto_20230422_1013.py delete mode 100644 cvat/apps/engine/migrations/0073_auto_20230426_1557.py delete mode 100644 cvat/apps/engine/migrations/0074_rename_frame_id_annotationconflict_frame.py delete mode 100644 cvat/apps/engine/migrations/0075_alter_annotationconflict_type.py delete mode 100644 cvat/apps/engine/migrations/0076_alter_annotationid_type.py delete mode 100644 cvat/apps/engine/migrations/0077_alter_annotationconflict_type.py delete mode 100644 cvat/apps/engine/migrations/0078_alter_annotationconflict_type.py delete mode 100644 cvat/apps/engine/migrations/0079_alter_annotationconflict_type.py delete mode 100644 cvat/apps/engine/migrations/0080_annotationconflict_importance.py delete mode 100644 cvat/apps/engine/migrations/0081_qualitysettings.py delete mode 100644 cvat/apps/engine/migrations/0082_alter_job_type.py delete mode 100644 cvat/apps/engine/migrations/0083_move_quality_models.py diff --git a/cvat/apps/engine/migrations/0068_add_job_type_created_date.py b/cvat/apps/engine/migrations/0068_add_job_type_created_date.py index fcab8728f1cf..d275f92ac754 100644 --- a/cvat/apps/engine/migrations/0068_add_job_type_created_date.py +++ b/cvat/apps/engine/migrations/0068_add_job_type_created_date.py @@ -16,8 +16,6 @@ def add_created_date_to_existing_jobs(apps, schema_editor): class Migration(migrations.Migration): - replaces = [('engine', '0068_auto_20230406_1333'), ('engine', '0069_annotationconflict_annotationconflictsreport'), ('engine', '0070_alter_segment_frames'), ('engine', '0071_job_created_date'), ('engine', '0072_auto_20230422_1013'), ('engine', '0073_auto_20230426_1557'), ('engine', '0074_rename_frame_id_annotationconflict_frame'), ('engine', '0075_alter_annotationconflict_type'), ('engine', '0076_alter_annotationid_type'), ('engine', '0077_alter_annotationconflict_type'), ('engine', '0078_alter_annotationconflict_type'), ('engine', '0079_alter_annotationconflict_type'), ('engine', '0080_annotationconflict_importance'), ('engine', '0081_qualitysettings'), ('engine', '0082_alter_job_type'), ('engine', '0083_move_quality_models')] - dependencies = [ ('engine', '0067_alter_cloudstorage_credentials_type'), ] diff --git a/cvat/apps/engine/migrations/0068_auto_20230406_1333.py b/cvat/apps/engine/migrations/0068_auto_20230406_1333.py deleted file mode 100644 index d3c568f404fd..000000000000 --- a/cvat/apps/engine/migrations/0068_auto_20230406_1333.py +++ /dev/null @@ -1,29 +0,0 @@ -# Generated by Django 3.2.18 on 2023-04-06 13:33 - -import cvat.apps.engine.models -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('engine', '0067_alter_cloudstorage_credentials_type'), - ] - - operations = [ - migrations.AddField( - model_name='job', - name='type', - field=models.CharField(choices=[('normal', 'NORMAL'), ('ground_truth', 'GROUND_TRUTH')], default='normal', max_length=32), - ), - migrations.AddField( - model_name='segment', - name='frames', - field=cvat.apps.engine.models.IntArrayField(default='', null=True), - ), - migrations.AddField( - model_name='segment', - name='type', - field=models.CharField(choices=[('range', 'RANGE'), ('specific_frames', 'SPECIFIC_FRAMES')], default=cvat.apps.engine.models.SegmentType['RANGE'], max_length=32), - ), - ] diff --git a/cvat/apps/engine/migrations/0069_annotationconflict_annotationconflictsreport.py b/cvat/apps/engine/migrations/0069_annotationconflict_annotationconflictsreport.py deleted file mode 100644 index e1035bc5b5d5..000000000000 --- a/cvat/apps/engine/migrations/0069_annotationconflict_annotationconflictsreport.py +++ /dev/null @@ -1,34 +0,0 @@ -# Generated by Django 3.2.18 on 2023-04-10 17:50 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('engine', '0068_auto_20230406_1333'), - ] - - operations = [ - migrations.CreateModel( - name='AnnotationConflictsReport', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('job_last_updated', models.DateTimeField()), - ('gt_job_last_updated', models.DateTimeField()), - ('job', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='annotation_conflict_reports', to='engine.job')), - ], - ), - migrations.CreateModel( - name='AnnotationConflict', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('frame_id', models.PositiveIntegerField()), - ('type', models.CharField(choices=[('missing_annotation', 'MISSING_ANNOTATION'), ('extra_annotation', 'EXTRA_ANNOTATION'), ('mismatching_annotation', 'MISMATCHING_ANNOTATION')], max_length=32)), - ('message', models.CharField(blank=True, default='', max_length=1024)), - ('data', models.JSONField()), - ('report', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='conflicts', to='engine.annotationconflictsreport')), - ], - ), - ] diff --git a/cvat/apps/engine/migrations/0070_alter_segment_frames.py b/cvat/apps/engine/migrations/0070_alter_segment_frames.py deleted file mode 100644 index 6e0bc5e62315..000000000000 --- a/cvat/apps/engine/migrations/0070_alter_segment_frames.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 3.2.18 on 2023-04-10 19:07 - -import cvat.apps.engine.models -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('engine', '0069_annotationconflict_annotationconflictsreport'), - ] - - operations = [ - migrations.AlterField( - model_name='segment', - name='frames', - field=cvat.apps.engine.models.IntArrayField(blank=True, default=''), - ), - ] diff --git a/cvat/apps/engine/migrations/0071_job_created_date.py b/cvat/apps/engine/migrations/0071_job_created_date.py deleted file mode 100644 index 8e0742143c4d..000000000000 --- a/cvat/apps/engine/migrations/0071_job_created_date.py +++ /dev/null @@ -1,37 +0,0 @@ -# Generated by Django 3.2.18 on 2023-04-19 16:18 - -from django.utils import timezone -from django.db import migrations, models - - -def add_created_date_to_existing_jobs(apps, schema_editor): - Job = apps.get_model("engine", "Job") - - jobs = Job.objects.prefetch_related('segment__task').all() - for job in jobs: - task = job.segment.task - job.created_date = task.created_date - - Job.objects.bulk_update(jobs, fields=['created_date']) - - -class Migration(migrations.Migration): - - dependencies = [ - ('engine', '0070_alter_segment_frames'), - ] - - operations = [ - migrations.AddField( - model_name='job', - name='created_date', - field=models.DateTimeField(auto_now_add=True, default=timezone.now, null=True), - preserve_default=False, - ), - migrations.RunPython(add_created_date_to_existing_jobs), - migrations.AlterField( - model_name='job', - name='created_date', - field=models.DateTimeField(auto_now_add=True), - ), - ] diff --git a/cvat/apps/engine/migrations/0072_auto_20230422_1013.py b/cvat/apps/engine/migrations/0072_auto_20230422_1013.py deleted file mode 100644 index 988775ed609b..000000000000 --- a/cvat/apps/engine/migrations/0072_auto_20230422_1013.py +++ /dev/null @@ -1,35 +0,0 @@ -# Generated by Django 3.2.18 on 2023-04-22 10:13 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('engine', '0071_job_created_date'), - ] - - operations = [ - migrations.CreateModel( - name='QualityReport', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('created_date', models.DateTimeField(auto_now_add=True)), - ('target_last_updated', models.DateTimeField()), - ('gt_last_updated', models.DateTimeField()), - ('data', models.JSONField()), - ('job', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='quality_reports', to='engine.job')), - ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='engine.qualityreport')), - ('task', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='quality_reports', to='engine.task')), - ], - ), - migrations.AlterField( - model_name='annotationconflict', - name='report', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='conflicts', to='engine.qualityreport'), - ), - migrations.DeleteModel( - name='AnnotationConflictsReport', - ), - ] diff --git a/cvat/apps/engine/migrations/0073_auto_20230426_1557.py b/cvat/apps/engine/migrations/0073_auto_20230426_1557.py deleted file mode 100644 index 713935336370..000000000000 --- a/cvat/apps/engine/migrations/0073_auto_20230426_1557.py +++ /dev/null @@ -1,37 +0,0 @@ -# Generated by Django 3.2.18 on 2023-04-26 15:57 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('engine', '0072_auto_20230422_1013'), - ] - - operations = [ - migrations.RemoveField( - model_name='annotationconflict', - name='data', - ), - migrations.RemoveField( - model_name='annotationconflict', - name='message', - ), - migrations.AlterField( - model_name='annotationconflict', - name='type', - field=models.CharField(choices=[('missing_annotation', 'MISSING_ANNOTATION'), ('extra_annotation', 'EXTRA_ANNOTATION'), ('mismatching_label', 'MISMATCHING_LABEL')], max_length=32), - ), - migrations.CreateModel( - name='AnnotationId', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('obj_id', models.PositiveIntegerField()), - ('job_id', models.PositiveIntegerField()), - ('type', models.CharField(choices=[('rectangle', 'RECTANGLE'), ('polygon', 'POLYGON'), ('polyline', 'POLYLINE'), ('points', 'POINTS'), ('ellipse', 'ELLIPSE'), ('cuboid', 'CUBOID'), ('mask', 'MASK'), ('skeleton', 'SKELETON')], max_length=32)), - ('conflict', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='annotation_ids', to='engine.annotationconflict')), - ], - ), - ] diff --git a/cvat/apps/engine/migrations/0074_rename_frame_id_annotationconflict_frame.py b/cvat/apps/engine/migrations/0074_rename_frame_id_annotationconflict_frame.py deleted file mode 100644 index b230dcfcf0f4..000000000000 --- a/cvat/apps/engine/migrations/0074_rename_frame_id_annotationconflict_frame.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.18 on 2023-04-27 12:52 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('engine', '0073_auto_20230426_1557'), - ] - - operations = [ - migrations.RenameField( - model_name='annotationconflict', - old_name='frame_id', - new_name='frame', - ), - ] diff --git a/cvat/apps/engine/migrations/0075_alter_annotationconflict_type.py b/cvat/apps/engine/migrations/0075_alter_annotationconflict_type.py deleted file mode 100644 index e8b7597aa9d6..000000000000 --- a/cvat/apps/engine/migrations/0075_alter_annotationconflict_type.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.18 on 2023-04-28 10:55 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('engine', '0074_rename_frame_id_annotationconflict_frame'), - ] - - operations = [ - migrations.AlterField( - model_name='annotationconflict', - name='type', - field=models.CharField(choices=[('missing_annotation', 'MISSING_ANNOTATION'), ('extra_annotation', 'EXTRA_ANNOTATION'), ('mismatching_label', 'MISMATCHING_LABEL'), ('low_overlap', 'LOW_OVERLAP')], max_length=32), - ), - ] diff --git a/cvat/apps/engine/migrations/0076_alter_annotationid_type.py b/cvat/apps/engine/migrations/0076_alter_annotationid_type.py deleted file mode 100644 index 158e9bb6edd2..000000000000 --- a/cvat/apps/engine/migrations/0076_alter_annotationid_type.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.18 on 2023-04-30 23:58 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('engine', '0075_alter_annotationconflict_type'), - ] - - operations = [ - migrations.AlterField( - model_name='annotationid', - name='type', - field=models.CharField(choices=[('tag', 'TAG'), ('track', 'TRACK'), ('rectangle', 'RECTANGLE'), ('polygon', 'POLYGON'), ('polyline', 'POLYLINE'), ('points', 'POINTS'), ('ellipse', 'ELLIPSE'), ('cuboid', 'CUBOID'), ('mask', 'MASK'), ('skeleton', 'SKELETON')], max_length=32), - ), - ] diff --git a/cvat/apps/engine/migrations/0077_alter_annotationconflict_type.py b/cvat/apps/engine/migrations/0077_alter_annotationconflict_type.py deleted file mode 100644 index 7714551cf6db..000000000000 --- a/cvat/apps/engine/migrations/0077_alter_annotationconflict_type.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.18 on 2023-05-04 16:34 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('engine', '0076_alter_annotationid_type'), - ] - - operations = [ - migrations.AlterField( - model_name='annotationconflict', - name='type', - field=models.CharField(choices=[('missing_annotation', 'MISSING_ANNOTATION'), ('extra_annotation', 'EXTRA_ANNOTATION'), ('mismatching_label', 'MISMATCHING_LABEL'), ('low_overlap', 'LOW_OVERLAP'), ('mismatching_direction', 'MISMATCHING_DIRECTION')], max_length=32), - ), - ] diff --git a/cvat/apps/engine/migrations/0078_alter_annotationconflict_type.py b/cvat/apps/engine/migrations/0078_alter_annotationconflict_type.py deleted file mode 100644 index 4fbf6c91ec90..000000000000 --- a/cvat/apps/engine/migrations/0078_alter_annotationconflict_type.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.18 on 2023-05-06 13:44 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('engine', '0077_alter_annotationconflict_type'), - ] - - operations = [ - migrations.AlterField( - model_name='annotationconflict', - name='type', - field=models.CharField(choices=[('missing_annotation', 'MISSING_ANNOTATION'), ('extra_annotation', 'EXTRA_ANNOTATION'), ('mismatching_label', 'MISMATCHING_LABEL'), ('low_overlap', 'LOW_OVERLAP'), ('mismatching_direction', 'MISMATCHING_DIRECTION'), ('mismatching_attributes', 'MISMATCHING_ATTRIBUTES'), ('mismatching_groups', 'MISMATCHING_GROUPS')], max_length=32), - ), - ] diff --git a/cvat/apps/engine/migrations/0079_alter_annotationconflict_type.py b/cvat/apps/engine/migrations/0079_alter_annotationconflict_type.py deleted file mode 100644 index 2d1a137ff5db..000000000000 --- a/cvat/apps/engine/migrations/0079_alter_annotationconflict_type.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.18 on 2023-05-06 23:06 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('engine', '0078_alter_annotationconflict_type'), - ] - - operations = [ - migrations.AlterField( - model_name='annotationconflict', - name='type', - field=models.CharField(choices=[('missing_annotation', 'MISSING_ANNOTATION'), ('extra_annotation', 'EXTRA_ANNOTATION'), ('mismatching_label', 'MISMATCHING_LABEL'), ('low_overlap', 'LOW_OVERLAP'), ('mismatching_direction', 'MISMATCHING_DIRECTION'), ('mismatching_attributes', 'MISMATCHING_ATTRIBUTES'), ('mismatching_groups', 'MISMATCHING_GROUPS'), ('covered_annotation', 'COVERED_ANNOTATION')], max_length=32), - ), - ] diff --git a/cvat/apps/engine/migrations/0080_annotationconflict_importance.py b/cvat/apps/engine/migrations/0080_annotationconflict_importance.py deleted file mode 100644 index 213aeaa6c72d..000000000000 --- a/cvat/apps/engine/migrations/0080_annotationconflict_importance.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 3.2.18 on 2023-05-10 11:31 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('engine', '0079_alter_annotationconflict_type'), - ] - - operations = [ - migrations.AddField( - model_name='annotationconflict', - name='importance', - field=models.CharField(choices=[('warning', 'WARNING'), ('error', 'ERROR')], default='error', max_length=32), - preserve_default=False, - ), - ] diff --git a/cvat/apps/engine/migrations/0081_qualitysettings.py b/cvat/apps/engine/migrations/0081_qualitysettings.py deleted file mode 100644 index bd335f64f14a..000000000000 --- a/cvat/apps/engine/migrations/0081_qualitysettings.py +++ /dev/null @@ -1,33 +0,0 @@ -# Generated by Django 3.2.18 on 2023-05-10 17:20 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('engine', '0080_annotationconflict_importance'), - ] - - operations = [ - migrations.CreateModel( - name='QualitySettings', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('iou_threshold', models.FloatField()), - ('oks_sigma', models.FloatField()), - ('line_thickness', models.FloatField()), - ('low_overlap_threshold', models.FloatField()), - ('oriented_lines', models.BooleanField()), - ('line_orientation_threshold', models.FloatField()), - ('compare_groups', models.BooleanField()), - ('group_match_threshold', models.FloatField()), - ('check_covered_annotations', models.BooleanField()), - ('object_visibility_threshold', models.FloatField()), - ('panoptic_comparison', models.BooleanField()), - ('compare_attributes', models.BooleanField()), - ('task', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='quality_settings', to='engine.task')), - ], - ), - ] diff --git a/cvat/apps/engine/migrations/0082_alter_job_type.py b/cvat/apps/engine/migrations/0082_alter_job_type.py deleted file mode 100644 index f033688e2edc..000000000000 --- a/cvat/apps/engine/migrations/0082_alter_job_type.py +++ /dev/null @@ -1,37 +0,0 @@ -# Generated by Django 3.2.18 on 2023-05-12 09:19 - -import cvat.apps.engine.models -from django.db import migrations, models - - -def rename_normal_to_annotation(apps, schema_editor): - Job = apps.get_model("engine", "Job") - - jobs = Job.objects.select_related('segment').all() - for job in jobs: - if job.type == 'normal': - job.type = 'annotation' - - Job.objects.bulk_update(jobs, fields=['type']) - - -class Migration(migrations.Migration): - - dependencies = [ - ('engine', '0081_qualitysettings'), - ] - - operations = [ - migrations.AlterField( - model_name='job', - name='type', - field=models.CharField(choices=[('normal', 'NORMAL'), ('annotation', 'ANNOTATION'), ('ground_truth', 'GROUND_TRUTH')], default=cvat.apps.engine.models.JobType['ANNOTATION'], max_length=32), - ), - migrations.RunPython(rename_normal_to_annotation), - migrations.AlterField( - model_name='job', - name='type', - field=models.CharField(choices=[('annotation', 'ANNOTATION'), ('ground_truth', 'GROUND_TRUTH')], default=cvat.apps.engine.models.JobType['ANNOTATION'], max_length=32), - ), - - ] diff --git a/cvat/apps/engine/migrations/0083_move_quality_models.py b/cvat/apps/engine/migrations/0083_move_quality_models.py deleted file mode 100644 index 375f38ee9938..000000000000 --- a/cvat/apps/engine/migrations/0083_move_quality_models.py +++ /dev/null @@ -1,28 +0,0 @@ -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('engine', '0082_alter_job_type'), - ] - - database_operations = [ - migrations.AlterModelTable('QualityReport', 'quality_control_qualityreport'), - migrations.AlterModelTable('AnnotationConflict', 'quality_control_annotationconflict'), - migrations.AlterModelTable('AnnotationId', 'quality_control_annotationid'), - migrations.AlterModelTable('QualitySettings', 'quality_control_qualitysettings'), - ] - - state_operations = [ - migrations.DeleteModel('QualityReport'), - migrations.DeleteModel('AnnotationConflict'), - migrations.DeleteModel('AnnotationId'), - migrations.DeleteModel('QualitySettings'), - ] - - operations = [ - migrations.SeparateDatabaseAndState( - database_operations=database_operations, - state_operations=state_operations) - ] diff --git a/cvat/apps/quality_control/migrations/0001_initial.py b/cvat/apps/quality_control/migrations/0001_initial.py index 4952962b7c2d..e7c279b4424b 100644 --- a/cvat/apps/quality_control/migrations/0001_initial.py +++ b/cvat/apps/quality_control/migrations/0001_initial.py @@ -1,3 +1,5 @@ +# Generated by Django 3.2.18 on 2023-05-26 10:05 + from django.db import migrations, models import django.db.models.deletion @@ -7,10 +9,19 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ('engine', '0083_move_quality_models'), + ('engine', '0068_add_job_type_created_date'), ] - state_operations = [ + operations = [ + migrations.CreateModel( + name='AnnotationConflict', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('frame', models.PositiveIntegerField()), + ('type', models.CharField(choices=[('missing_annotation', 'MISSING_ANNOTATION'), ('extra_annotation', 'EXTRA_ANNOTATION'), ('mismatching_label', 'MISMATCHING_LABEL'), ('low_overlap', 'LOW_OVERLAP'), ('mismatching_direction', 'MISMATCHING_DIRECTION'), ('mismatching_attributes', 'MISMATCHING_ATTRIBUTES'), ('mismatching_groups', 'MISMATCHING_GROUPS'), ('covered_annotation', 'COVERED_ANNOTATION')], max_length=32)), + ('importance', models.CharField(choices=[('warning', 'WARNING'), ('error', 'ERROR')], max_length=32)), + ], + ), migrations.CreateModel( name='QualitySettings', fields=[ @@ -29,7 +40,6 @@ class Migration(migrations.Migration): ('compare_attributes', models.BooleanField()), ('task', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='quality_settings', to='engine.task')), ], - bases=(models.Model,), ), migrations.CreateModel( name='QualityReport', @@ -43,18 +53,6 @@ class Migration(migrations.Migration): ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='quality_control.qualityreport')), ('task', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='quality_reports', to='engine.task')), ], - bases=(models.Model,), - ), - migrations.CreateModel( - name='AnnotationConflict', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('frame', models.PositiveIntegerField()), - ('type', models.CharField(choices=[('missing_annotation', 'MISSING_ANNOTATION'), ('extra_annotation', 'EXTRA_ANNOTATION'), ('mismatching_label', 'MISMATCHING_LABEL'), ('low_overlap', 'LOW_OVERLAP'), ('mismatching_direction', 'MISMATCHING_DIRECTION'), ('mismatching_attributes', 'MISMATCHING_ATTRIBUTES'), ('mismatching_groups', 'MISMATCHING_GROUPS'), ('covered_annotation', 'COVERED_ANNOTATION')], max_length=32)), - ('importance', models.CharField(choices=[('warning', 'WARNING'), ('error', 'ERROR')], max_length=32)), - ('report', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='conflicts', to='quality_control.qualityreport')), - ], - bases=(models.Model,), ), migrations.CreateModel( name='AnnotationId', @@ -65,10 +63,10 @@ class Migration(migrations.Migration): ('type', models.CharField(choices=[('tag', 'TAG'), ('track', 'TRACK'), ('rectangle', 'RECTANGLE'), ('polygon', 'POLYGON'), ('polyline', 'POLYLINE'), ('points', 'POINTS'), ('ellipse', 'ELLIPSE'), ('cuboid', 'CUBOID'), ('mask', 'MASK'), ('skeleton', 'SKELETON')], max_length=32)), ('conflict', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='annotation_ids', to='quality_control.annotationconflict')), ], - bases=(models.Model,), ), - ] - - operations = [ - migrations.SeparateDatabaseAndState(state_operations=state_operations) + migrations.AddField( + model_name='annotationconflict', + name='report', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='conflicts', to='quality_control.qualityreport'), + ), ] From 226e8b5855157492f6b4c0f97b51a4ca323511fc Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 26 May 2023 14:00:33 +0300 Subject: [PATCH 186/257] Fix quality settings defaults installation --- cvat/apps/quality_control/models.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/cvat/apps/quality_control/models.py b/cvat/apps/quality_control/models.py index f3f5de2ca63d..5c0ce30bda9c 100644 --- a/cvat/apps/quality_control/models.py +++ b/cvat/apps/quality_control/models.py @@ -188,9 +188,12 @@ class QualitySettings(models.Model): compare_attributes = models.BooleanField() def __init__(self, *args: Any, **kwargs: Any) -> None: - params = deepcopy(self.get_defaults()) - params.update(kwargs) - super().__init__(*args, **params) + defaults = deepcopy(self.get_defaults()) + for field in self._meta.fields: + if field.name in defaults: + field.default = defaults[field.name] + + super().__init__(*args, **kwargs) @classmethod def get_defaults(cls) -> dict: From da50bf56f635d39950c493a93df70c2dcfd695ea Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 26 May 2023 14:04:44 +0300 Subject: [PATCH 187/257] Fix pylint messages --- cvat/apps/iam/permissions.py | 2 -- cvat/apps/quality_control/views.py | 2 -- 2 files changed, 4 deletions(-) diff --git a/cvat/apps/iam/permissions.py b/cvat/apps/iam/permissions.py index 1b4a627df96f..4f83949edf83 100644 --- a/cvat/apps/iam/permissions.py +++ b/cvat/apps/iam/permissions.py @@ -1699,8 +1699,6 @@ class Scopes(StrEnum): @classmethod def create(cls, request, view, obj): - Scopes = __class__.Scopes - permissions = [] if view.basename == 'annotation_conflicts': for scope in cls.get_scopes(request, view, obj): diff --git a/cvat/apps/quality_control/views.py b/cvat/apps/quality_control/views.py index 9a4679927b90..6c4ccf2e54e7 100644 --- a/cvat/apps/quality_control/views.py +++ b/cvat/apps/quality_control/views.py @@ -31,8 +31,6 @@ from cvat.apps.iam.permissions import AnnotationConflictPermission, QualityReportPermission -from cvat.apps.profiler import silk_profile - @extend_schema(tags=["quality"]) @extend_schema_view( From 8ffab841cfa107ef5266f2544bcf6c66b51e423b Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 26 May 2023 19:13:53 +0300 Subject: [PATCH 188/257] Fix task mode in tasks from backup --- cvat/apps/engine/backup.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cvat/apps/engine/backup.py b/cvat/apps/engine/backup.py index 3e6f68a49304..c0926121964a 100644 --- a/cvat/apps/engine/backup.py +++ b/cvat/apps/engine/backup.py @@ -613,6 +613,9 @@ def _write_data(zip_object): data['job_file_mapping'] = job_file_mapping _create_thread(self._db_task.pk, data.copy(), isBackupRestore=True) + self._db_task.refresh_from_db() + db_data.refresh_from_db() + db_data.start_frame = data['start_frame'] db_data.stop_frame = data['stop_frame'] db_data.frame_filter = data['frame_filter'] From 504b4c01f758a9f53da7dd85ecf8dcb79f617226 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 26 May 2023 19:27:49 +0300 Subject: [PATCH 189/257] Support drf-spectacular 0.26.2 --- cvat/apps/iam/schema.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cvat/apps/iam/schema.py b/cvat/apps/iam/schema.py index c2e1f5b0c636..0837edded302 100644 --- a/cvat/apps/iam/schema.py +++ b/cvat/apps/iam/schema.py @@ -159,12 +159,12 @@ def get_operation_id(self): return '_'.join([tokenized_path[0]] + [action] + tokenized_path[1:]) - def _get_request_for_media_type(self, serializer): + def _get_request_for_media_type(self, serializer, *args, **kwargs): # Enables support for required=False serializers in request body specification # in drf-spectacular. Doesn't block other extensions on the target serializer. # This is supported by OpenAPI and by SDK generator, but not by drf-spectacular - schema, required = super()._get_request_for_media_type(serializer) + schema, required = super()._get_request_for_media_type(serializer, *args, **kwargs) if isinstance(serializer, serializers.Serializer): if not serializer.required: From d2eee3f68a615ca5f26e683cad587fa6fbc61500 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 26 May 2023 19:46:25 +0300 Subject: [PATCH 190/257] Merge test assets --- tests/python/shared/assets/annotations.json | 2971 +++++---- tests/python/shared/assets/cvat_db/data.json | 5542 ++++++++++++++--- tests/python/shared/assets/jobs.json | 18 +- tests/python/shared/assets/labels.json | 46 +- .../shared/assets/quality_conflicts.json | 112 +- .../python/shared/assets/quality_reports.json | 32 +- tests/python/shared/assets/tasks.json | 10 +- 7 files changed, 6692 insertions(+), 2039 deletions(-) diff --git a/tests/python/shared/assets/annotations.json b/tests/python/shared/assets/annotations.json index 232f5df550cc..ab9f5b68736c 100644 --- a/tests/python/shared/assets/annotations.json +++ b/tests/python/shared/assets/annotations.json @@ -1408,157 +1408,118 @@ "attributes": [ { "spec_id": 13, - "value": "true" + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" } ], "elements": [], "frame": 0, - "group": 0, - "id": 671, - "label_id": 64, + "group": 3, + "id": 64, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 349.3662109375, - 38.5166015625, - 376.846017166401, - 64.03356448933664 + 439.001953125, + 238.072265625, + 442.27361979103625, + 279.29221193910234 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", - "z_order": 4 + "type": "polyline", + "z_order": 0 }, { - "attributes": [], - "elements": [], - "frame": 0, - "group": 17, - "id": 664, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 34.66, - 268.17, - 75.22, - 324.44 + "attributes": [ + { + "spec_id": 13, + "value": "yz" + }, + { + "spec_id": 14, + "value": "2" + } ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 4 - }, - { - "attributes": [], "elements": [], "frame": 0, - "group": 16, - "id": 647, - "label_id": 63, + "group": 1, + "id": 65, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 147.9, - 45.42, - 171.4, - 70.3 + 109.6181640625, + 93.6806640625, + 150.7451171875, + 154.708984375 ], - "rotation": 0.0, + "rotation": 118.39999999999998, "source": "manual", "type": "rectangle", - "z_order": 1 + "z_order": 0 }, { "attributes": [ { "spec_id": 13, - "value": "false" + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" } ], "elements": [], "frame": 0, - "group": 17, - "id": 665, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 50.36, - 283.87 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 4 - }, - { - "attributes": [], - "elements": [], - "frame": 0, - "group": 0, - "id": 667, - "label_id": 63, + "group": 3, + "id": 66, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 43.16, - 178.53, - 59.52, - 190.96, - 71.3, - 177.22, - 100.08, - 167.41 + 414.140625, + 256.392578125, + 467.1372624053729, + 255.08366924483562 ], "rotation": 0.0, "source": "manual", "type": "polyline", - "z_order": 4 + "z_order": 0 }, { "attributes": [ { "spec_id": 13, - "value": "false" + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" } ], "elements": [], "frame": 0, - "group": 0, - "id": 662, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 225.71, - 314.62 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 4 - }, - { - "attributes": [], - "elements": [], - "frame": 0, "group": 4, - "id": 640, - "label_id": 63, + "id": 67, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 210.0, - 274.06, - 240.1, - 258.35, - 267.1, - 266.4, - 278.7, - 261.63, - 281.32, - 253.78 + 210.00390625, + 274.0576171875, + 240.10078833736043, + 258.3547764811883, + 267.10000000000036, + 266.40000000000146, + 278.7035955631618, + 261.62685883520135, + 281.32071996591367, + 253.77548562694574 ], "rotation": 0.0, "source": "manual", @@ -1569,74 +1530,51 @@ "attributes": [ { "spec_id": 13, - "value": "false" + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" } ], "elements": [], "frame": 0, - "group": 0, - "id": 644, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 459.5, - 81.9, - 545.8, - 155.8 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 1 - }, - { - "attributes": [], - "elements": [], - "frame": 0, - "group": 11, - "id": 655, - "label_id": 63, + "group": 5, + "id": 68, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 681.09, - 13.0, - 711.3, - 43.2 + 227.015625, + 87.587890625, + 225.052845018663, + 153.01643273565423, + 283.90000000000146, + 158.20000000000073, + 251.90000000000146, + 121.0 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", - "z_order": 1 + "type": "polygon", + "z_order": 0 }, { - "attributes": [], - "elements": [], - "frame": 0, - "group": 7, - "id": 651, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 113.8, - 17.6, - 138.65, - 40.47 + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 1 - }, - { - "attributes": [], "elements": [], "frame": 0, "group": 2, - "id": 642, - "label_id": 63, + "id": 69, + "label_id": 67, "occluded": false, "outside": false, "points": [ @@ -1774,161 +1712,239 @@ "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 0, - "id": 661, - "label_id": 63, + "group": 6, + "id": 71, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 361.0, - 302.1, - 368.9, - 316.0, - 348.1, - 318.6 + 414.48681640625, + 261.001953125, + 467.4834538116229, + 259.6930442448356 ], "rotation": 0.0, "source": "manual", - "type": "points", - "z_order": 4 + "type": "polyline", + "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 12, - "id": 656, - "label_id": 63, + "group": 0, + "id": 72, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 212.62, - 18.92, - 236.8, - 42.5 + 502.5, + 319.90000000000146, + 635.3000000000011, + 319.90000000000146, + 651.0, + 374.7000000000007, + 499.90000000000146, + 375.5 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", - "z_order": 1 + "type": "polygon", + "z_order": 3 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 11, - "id": 653, - "label_id": 63, + "group": 0, + "id": 75, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 603.9, - 13.65, - 632.67, - 42.4 + 673.2000000000007, + 222.40000000000146, + 693.5177345278626, + 240.03542476937582, + 647.8000000000011, + 287.2000000000007, + 620.8925323514832, + 266.8609498975875 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", + "type": "polygon", "z_order": 1 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 11, - "id": 654, - "label_id": 63, + "group": 0, + "id": 76, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 641.2, - 13.0, - 670.65, - 42.5 + 310.763369496879, + 196.19874876639187, + 339.55173792715505, + 228.9128038007966 ], "rotation": 0.0, "source": "manual", "type": "rectangle", - "z_order": 1 + "z_order": 4 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 6, - "id": 643, - "label_id": 63, + "group": 15, + "id": 77, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 414.49, - 261.0, - 467.48, - 259.69 + 213.966796875, + 46.7294921875, + 239.5, + 72.30000000000109 ], "rotation": 0.0, "source": "manual", - "type": "polyline", - "z_order": 0 + "type": "rectangle", + "z_order": 1 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 3, - "id": 637, - "label_id": 63, + "group": 16, + "id": 78, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 439.0, - 238.07, - 442.27, - 279.29 + 147.900390625, + 45.4208984375, + 171.40000000000146, + 70.30000000000109 ], "rotation": 0.0, "source": "manual", - "type": "polyline", - "z_order": 0 + "type": "rectangle", + "z_order": 1 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 1, - "id": 638, - "label_id": 63, + "group": 16, + "id": 79, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 109.62, - 93.68, - 150.75, - 154.71 + 179.9443359375, + 46.0751953125, + 206.0, + 72.80000000000109 ], - "rotation": 118.4, + "rotation": 0.0, "source": "manual", "type": "rectangle", - "z_order": 0 + "z_order": 1 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 7, - "id": 652, - "label_id": 63, + "group": 16, + "id": 80, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 179.91, - 18.22, - 203.4, - 41.8 + 113.80000000000109, + 45.400000000001455, + 137.3818359375, + 69.0 ], "rotation": 0.0, "source": "manual", @@ -1936,19 +1952,28 @@ "z_order": 1 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 15, - "id": 646, - "label_id": 63, + "group": 12, + "id": 81, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 213.97, - 46.73, - 239.5, - 72.3 + 147.8466796875, + 17.6083984375, + 170.1457031250011, + 39.871289443968635 ], "rotation": 0.0, "source": "manual", @@ -1956,132 +1981,144 @@ "z_order": 1 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 0, - "id": 669, - "label_id": 63, + "group": 7, + "id": 82, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 216.57, - 208.01, - 252.56, - 191.65 + 113.80000000000109, + 17.600000000000364, + 138.65410232543945, + 40.47109413146973 ], "rotation": 0.0, "source": "manual", - "type": "ellipse", - "z_order": 4 + "type": "rectangle", + "z_order": 1 }, { - "attributes": [], - "elements": [], - "frame": 0, - "group": 5, - "id": 641, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 227.02, - 87.59, - 225.05, - 153.02, - 283.9, - 158.2, - 251.9, - 121.0 + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } ], - "rotation": 0.0, - "source": "manual", - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], "elements": [], "frame": 0, - "group": 3, - "id": 639, - "label_id": 63, + "group": 7, + "id": 83, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 414.14, - 256.39, - 467.14, - 255.08 + 179.908203125, + 18.216796875, + 203.40000000000146, + 41.80000000000109 ], "rotation": 0.0, "source": "manual", - "type": "polyline", - "z_order": 0 + "type": "rectangle", + "z_order": 1 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 0, - "id": 660, - "label_id": 63, + "group": 11, + "id": 84, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 310.76, - 196.2, - 339.55, - 228.91 + 603.9000000000015, + 13.654296875, + 632.6692943572998, + 42.400000000001455 ], "rotation": 0.0, "source": "manual", "type": "rectangle", - "z_order": 4 + "z_order": 1 }, { "attributes": [ { "spec_id": 13, - "value": "false" + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" } ], "elements": [], "frame": 0, - "group": 0, - "id": 658, - "label_id": 64, + "group": 11, + "id": 85, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 618.23, - 215.13, - 688.33, - 284.53, - 690.25, - 278.64, - 626.1, - 206.7 + 641.2000000000007, + 13.0, + 670.6457023620605, + 42.5 ], "rotation": 0.0, "source": "manual", - "type": "polygon", - "z_order": 3 + "type": "rectangle", + "z_order": 1 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 16, - "id": 648, - "label_id": 63, + "group": 11, + "id": 86, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 179.94, - 46.08, - 206.0, - 72.8 + 681.0859375, + 13.0, + 711.3000000000011, + 43.20000000000073 ], "rotation": 0.0, "source": "manual", @@ -2089,57 +2126,86 @@ "z_order": 1 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 17, - "id": 663, - "label_id": 63, + "group": 12, + "id": 87, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 60.83, - 302.19 + 212.6220703125, + 18.9169921875, + 236.8000000000011, + 42.5 ], "rotation": 0.0, "source": "manual", - "type": "points", - "z_order": 4 + "type": "rectangle", + "z_order": 1 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 12, - "id": 650, - "label_id": 63, + "group": 0, + "id": 88, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 147.85, - 17.61, - 170.15, - 39.87 + 361.0, + 302.10000000000036, + 368.90000000000146, + 316.0, + 348.10000000000036, + 318.60000000000036 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", - "z_order": 1 + "type": "points", + "z_order": 4 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 0, - "id": 666, - "label_id": 63, + "group": 17, + "id": 90, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 138.0, - 339.5, - 155.0, - 338.8 + 60.828125, + 302.1923828125 ], "rotation": 0.0, "source": "manual", @@ -2147,98 +2213,125 @@ "z_order": 4 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 0, - "id": 668, - "label_id": 63, + "group": 17, + "id": 91, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 101.39, - 200.78, - 135.42, - 214.52, - 117.75, - 248.54, - 85.04, - 235.46, - 73.26, - 204.05 + 34.65674500649766, + 268.16966984208375, + 75.22217324915982, + 324.43784450126077 ], "rotation": 0.0, "source": "manual", - "type": "polygon", + "type": "rectangle", "z_order": 4 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, "group": 0, - "id": 645, - "label_id": 63, + "id": 93, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 673.2, - 222.4, - 693.52, - 240.04, - 647.8, - 287.2, - 620.89, - 266.86 + 138.0, + 339.5, + 155.0, + 338.8000000000011 ], "rotation": 0.0, "source": "manual", - "type": "polygon", - "z_order": 1 + "type": "points", + "z_order": 4 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 16, - "id": 649, - "label_id": 63, + "group": 0, + "id": 94, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 113.8, - 45.4, - 137.38, - 69.0 + 43.162109375, + 178.533203125, + 59.51942683264497, + 190.96449996088631, + 71.29648664503111, + 177.22459684643582, + 100.08485507530895, + 167.41038033611403 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", - "z_order": 1 + "type": "polyline", + "z_order": 4 }, { "attributes": [ { "spec_id": 13, - "value": "false" + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" } ], "elements": [], "frame": 0, "group": 0, - "id": 659, - "label_id": 64, + "id": 95, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 532.6, - 300.2, - 533.2, - 391.8, - 678.47, - 393.14, - 639.87, - 300.88 + 101.3935546875, + 200.7783203125, + 135.41603451246556, + 214.5186195856586, + 117.75044479388816, + 248.54123682144018, + 85.03638975948161, + 235.4556148076772, + 73.25932994709547, + 204.0501219746493 ], "rotation": 0.0, "source": "manual", @@ -2246,221 +2339,267 @@ "z_order": 4 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, "group": 0, - "id": 657, - "label_id": 63, + "id": 96, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 502.5, - 319.9, - 635.3, - 319.9, - 651.0, - 374.7, - 499.9, - 375.5 + 216.5673828125, + 208.00537109375, + 252.552734375, + 191.6484375 ], "rotation": 0.0, "source": "manual", - "type": "polygon", - "z_order": 3 - } - ], - "tags": [], - "tracks": [], - "version": 0 - }, - "28": { - "shapes": [ + "type": "ellipse", + "z_order": 4 + }, { "attributes": [], "elements": [], "frame": 0, - "group": 3, - "id": 615, - "label_id": 63, + "group": 0, + "id": 89, + "label_id": 66, "occluded": false, "outside": false, "points": [ - 643.8, - 12.35, - 671.9, - 43.8 + 225.70703125, + 314.6240234375 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", - "z_order": 0 + "type": "points", + "z_order": 4 }, { "attributes": [], "elements": [], "frame": 0, - "group": 4, - "id": 619, - "label_id": 63, + "group": 0, + "id": 73, + "label_id": 66, "occluded": false, "outside": false, "points": [ - 181.22, - 47.68, - 205.42, - 73.85 + 532.6000000000004, + 300.2000000000007, + 533.2000000000007, + 391.8000000000011, + 678.4693480835958, + 393.13736007351145, + 639.866763142998, + 300.8837248764885 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", - "z_order": 0 + "type": "polygon", + "z_order": 4 }, { "attributes": [], "elements": [], "frame": 0, "group": 0, - "id": 608, - "label_id": 63, + "id": 74, + "label_id": 66, "occluded": false, "outside": false, "points": [ - 362.45, - 298.92, - 345.44, - 317.24, - 368.99, - 315.93 + 618.228515625, + 215.12753906250146, + 688.3285156250004, + 284.5275390625011, + 690.2463290244214, + 278.63711201903425, + 626.1000000000004, + 206.70000000000073 ], "rotation": 0.0, "source": "manual", - "type": "points", - "z_order": 0 + "type": "polygon", + "z_order": 3 }, { "attributes": [], "elements": [], "frame": 0, - "group": 2, - "id": 611, - "label_id": 63, + "group": 17, + "id": 92, + "label_id": 66, "occluded": false, "outside": false, "points": [ - 180.56, - 19.54, - 202.14, - 41.77 + 50.359375, + 283.8720703125 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", - "z_order": 0 + "type": "points", + "z_order": 4 }, { "attributes": [], "elements": [], "frame": 0, - "group": 4, - "id": 618, - "label_id": 63, + "group": 0, + "id": 70, + "label_id": 66, "occluded": false, "outside": false, "points": [ - 147.85, - 47.02, - 172.06, - 72.54 + 459.5, + 81.90000000000146, + 545.8000000000011, + 155.80020141601562 ], "rotation": 0.0, "source": "manual", "type": "rectangle", - "z_order": 0 - }, + "z_order": 1 + } + ], + "tags": [], + "tracks": [], + "version": 0 + }, + "28": { + "shapes": [ { - "attributes": [], + "attributes": [ + { + "spec_id": 14, + "value": "1" + }, + { + "spec_id": 13, + "value": "yy" + } + ], "elements": [], "frame": 0, - "group": 2, - "id": 612, - "label_id": 63, + "group": 0, + "id": 123, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 213.28, - 18.23, - 236.82, - 44.37 + 225.0, + 315.2000000000007 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", + "type": "points", "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 14, + "value": "1" + }, + { + "spec_id": 13, + "value": "yy" + } + ], "elements": [], "frame": 0, - "group": 3, - "id": 616, - "label_id": 63, + "group": 0, + "id": 98, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 681.09, - 14.31, - 711.8, - 43.8 + 227.015625, + 88.2421875, + 223.74398310536162, + 155.6333205237297, + 297.0234663824285, + 156.94188272510473, + 299.6405907851804, + 84.97096164941286, + 261.0380058445826, + 128.80779539551622 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", + "type": "polygon", "z_order": 0 }, { "attributes": [ { "spec_id": 13, - "value": "false" + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" } ], "elements": [], "frame": 0, "group": 0, - "id": 670, - "label_id": 64, + "id": 99, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 349.36595443747683, - 35.89987909780575, - 377.50004176706534, - 64.68824752808177 + 284.591796875, + 248.541015625, + 264.9636924487113, + 261.62685883520135, + 242.71813502531586, + 251.15836122419205, + 219.16401540054358, + 270.7867942448356 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", + "type": "polyline", "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, "group": 0, - "id": 606, - "label_id": 63, + "id": 100, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 419.37, - 260.32, - 436.39, - 259.01, - 448.82, - 258.36, - 463.87, - 258.36 + 419.3740234375, + 260.318359375, + 436.38534082899605, + 259.0097344324495, + 448.8166817420697, + 258.35545333176196, + 463.86514705789705, + 258.35545333176196 ], "rotation": 0.0, "source": "manual", @@ -2468,19 +2607,28 @@ "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 4, - "id": 620, - "label_id": 63, + "group": 0, + "id": 101, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 213.28, - 47.68, - 238.14, - 73.85 + 107.28194718287705, + 91.51377265629344, + 152.42734313035726, + 154.32475832235104 ], "rotation": 0.0, "source": "manual", @@ -2488,19 +2636,59 @@ "z_order": 0 }, { - "attributes": [], - "elements": [], - "frame": 0, - "group": 3, - "id": 614, - "label_id": 63, + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], + "elements": [], + "frame": 0, + "group": 0, + "id": 102, + "label_id": 67, + "occluded": false, + "outside": false, + "points": [ + 362.451171875, + 298.9208984375, + 345.4402678333481, + 317.24075239369085, + 368.9943874581204, + 315.93219019231583 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 0 + }, + { + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], + "elements": [], + "frame": 0, + "group": 1, + "id": 103, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 603.9, - 13.65, - 632.01, - 43.1 + 113.8251953125, + 18.234375, + 136.0714843750011, + 40.5 ], "rotation": 0.0, "source": "manual", @@ -2508,19 +2696,28 @@ "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 0, - "id": 617, - "label_id": 63, + "group": 1, + "id": 104, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 112.52, - 47.02, - 138.03, - 69.92 + 147.84765625, + 18.888671875, + 170.06289062500036, + 42.408593750000364 ], "rotation": 0.0, "source": "manual", @@ -2528,37 +2725,57 @@ "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 0, - "id": 629, - "label_id": 63, + "group": 2, + "id": 105, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 225.0, - 315.2 + 180.5615234375, + 19.54296875, + 202.1408203125011, + 41.771484375 ], "rotation": 0.0, "source": "manual", - "type": "points", + "type": "rectangle", "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 7, - "id": 624, - "label_id": 63, + "group": 2, + "id": 106, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 37.27, - 267.52, - 83.07, - 328.36 + 213.2763671875, + 18.234375, + 236.82363281250036, + 44.371484375000364 ], "rotation": 0.0, "source": "manual", @@ -2566,55 +2783,86 @@ "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 7, - "id": 626, - "label_id": 63, + "group": 3, + "id": 107, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 64.75, - 302.19 + 567.9000000000015, + 14.30859375, + 595.3747291564941, + 43.80000000000109 ], "rotation": 0.0, "source": "manual", - "type": "points", + "type": "rectangle", "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 7, - "id": 627, - "label_id": 63, + "group": 3, + "id": 108, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 47.74, - 309.39 + 603.9000000000015, + 13.654296875, + 632.0144577026367, + 43.100000000000364 ], "rotation": 0.0, "source": "manual", - "type": "points", + "type": "rectangle", "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 1, - "id": 610, - "label_id": 63, + "group": 3, + "id": 109, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 147.85, - 18.89, - 170.06, - 42.41 + 643.8000000000011, + 12.345703125, + 671.9000015258789, + 43.80000000000109 ], "rotation": 0.0, "source": "manual", @@ -2622,19 +2870,28 @@ "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 1, - "id": 609, - "label_id": 63, + "group": 3, + "id": 110, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 113.83, - 18.23, - 136.07, - 40.5 + 681.0859375, + 14.30859375, + 711.8000000000011, + 43.80000000000109 ], "rotation": 0.0, "source": "manual", @@ -2642,46 +2899,148 @@ "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 7, - "id": 625, - "label_id": 63, + "group": 0, + "id": 111, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 46.43, - 290.42 + 112.5166015625, + 47.0224609375, + 138.03356448933664, + 69.92229946158295 ], "rotation": 0.0, "source": "manual", - "type": "points", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], + "elements": [], + "frame": 0, + "group": 4, + "id": 112, + "label_id": 67, + "occluded": false, + "outside": false, + "points": [ + 147.84737542554103, + 47.02265780950256, + 172.05577615100083, + 72.5396207363392 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], + "elements": [], + "frame": 0, + "group": 4, + "id": 113, + "label_id": 67, + "occluded": false, + "outside": false, + "points": [ + 181.21571156063328, + 47.67693891019189, + 205.42411228609308, + 73.84818293771605 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 0 + }, + { + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], + "elements": [], + "frame": 0, + "group": 4, + "id": 114, + "label_id": 67, + "occluded": false, + "outside": false, + "points": [ + 213.2754854943505, + 47.67693891019189, + 238.13816732049781, + 73.84818293771605 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", "z_order": 0 }, { "attributes": [ { "spec_id": 13, - "value": "false" + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" } ], "elements": [], "frame": 0, "group": 0, - "id": 603, - "label_id": 64, + "id": 115, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 455.36, - 88.24, - 463.21, - 158.9, - 545.65, - 155.63, - 536.49, - 84.97 + 527.0, + 319.60000000000036, + 530.3000000000011, + 372.60000000000036, + 500.83202924677244, + 375.2100579146554, + 502.7948725488368, + 319.5961643561677 ], "rotation": 0.0, "source": "manual", @@ -2689,23 +3048,32 @@ "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, "group": 5, - "id": 622, - "label_id": 63, + "id": 116, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 672.58, - 219.1, - 692.21, - 239.38, - 671.27, - 257.7, - 655.57, - 239.38 + 672.5810546875, + 219.0986328125, + 692.2092511980463, + 239.3813014118059, + 671.2722559760259, + 257.70117223107445, + 655.5695095595111, + 239.3813014118059 ], "rotation": 0.0, "source": "manual", @@ -2713,12 +3081,21 @@ "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, "group": 5, - "id": 623, - "label_id": 63, + "id": 117, + "label_id": 67, "occluded": false, "outside": false, "points": [ @@ -2805,97 +3182,110 @@ "attributes": [ { "spec_id": 13, - "value": "false" + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" } ], "elements": [], "frame": 0, - "group": 0, - "id": 628, - "label_id": 64, + "group": 7, + "id": 118, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 140.7, - 338.8 + 37.2744140625, + 267.5166015625, + 83.07409111066772, + 328.36474392649325 ], "rotation": 0.0, "source": "manual", - "type": "points", + "type": "rectangle", "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 0, - "id": 605, - "label_id": 63, + "group": 7, + "id": 119, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 284.59, - 248.54, - 264.96, - 261.63, - 242.72, - 251.16, - 219.16, - 270.79 + 46.43359375, + 290.4150390625 ], "rotation": 0.0, "source": "manual", - "type": "polyline", + "type": "points", "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 0, - "id": 604, - "label_id": 63, + "group": 7, + "id": 120, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 227.02, - 88.24, - 223.74, - 155.63, - 297.02, - 156.94, - 299.64, - 84.97, - 261.04, - 128.81 + 64.75390625, + 302.1923828125 ], "rotation": 0.0, "source": "manual", - "type": "polygon", + "type": "points", "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 0, - "id": 621, - "label_id": 63, + "group": 7, + "id": 121, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 527.0, - 319.6, - 530.3, - 372.6, - 500.83, - 375.21, - 502.79, - 319.6 + 47.7421875, + 309.3896484375 ], "rotation": 0.0, "source": "manual", - "type": "polygon", + "type": "points", "z_order": 0 }, { @@ -2903,117 +3293,107 @@ "elements": [], "frame": 0, "group": 0, - "id": 607, - "label_id": 63, + "id": 122, + "label_id": 66, "occluded": false, "outside": false, "points": [ - 107.28, - 91.51, - 152.43, - 154.32 + 140.70000000000073, + 338.8000000000011 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", + "type": "points", "z_order": 0 }, { "attributes": [], "elements": [], "frame": 0, - "group": 3, - "id": 613, - "label_id": 63, + "group": 0, + "id": 97, + "label_id": 66, "occluded": false, "outside": false, "points": [ - 567.9, - 14.31, - 595.37, - 43.8 + 455.359375, + 88.2421875, + 463.2108659572077, + 158.9047260271691, + 545.6502846439089, + 155.6333205237297, + 536.4903492342764, + 84.97096164941286 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", + "type": "polygon", "z_order": 0 }, { - "attributes": [], - "elements": [], - "frame": 1, - "group": 0, - "id": 630, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 213.08, - 27.58, - 242.67, - 54.96, - 220.48, - 73.46, - 182.0, - 63.1, - 165.72, - 25.36 + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } ], - "rotation": 0.0, - "source": "manual", - "type": "polygon", - "z_order": 0 - }, - { - "attributes": [], "elements": [], "frame": 1, "group": 0, - "id": 635, - "label_id": 63, + "id": 125, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 393.61, - 109.71, - 417.29, - 139.31, - 432.09, - 123.03, - 461.68, - 140.05 + 359.22314453125, + 57.5439453125, + 381.7900390625, + 37.9365234375 ], "rotation": 0.0, "source": "manual", - "type": "polyline", + "type": "ellipse", "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 1, "group": 0, - "id": 632, - "label_id": 63, + "id": 126, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 503.86, - 51.36, - 503.86, - 95.65, - 574.15, - 51.26, - 574.15, - 95.65, - 581.18, - 46.92, - 581.18, - 91.11, - 510.89, - 46.92, - 510.89, - 91.11 + 503.8579498973395, + 51.35924962614954, + 503.8579498973395, + 95.65343307599687, + 574.1487403595966, + 51.25924962614954, + 574.1487403595966, + 95.65343307599687, + 581.1778194058222, + 46.91983128116481, + 581.1778194058222, + 91.11401473101215, + 510.88702894356516, + 46.91983128116481, + 510.88702894356516, + 91.11401473101215 ], "rotation": 0.0, "source": "manual", @@ -3021,12 +3401,21 @@ "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 1, "group": 0, - "id": 633, - "label_id": 63, + "id": 127, + "label_id": 67, "occluded": false, "outside": false, "points": [ @@ -3332,23 +3721,32 @@ "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 1, "group": 0, - "id": 634, - "label_id": 63, + "id": 128, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 276.71, - 105.27, - 301.12, - 121.55, - 273.75, - 137.09, - 252.29, - 122.29 + 276.7080078125, + 105.2724609375, + 301.1245121430384, + 121.5500400884066, + 273.74809901563276, + 137.08800429585244, + 252.29091034820522, + 122.28994314590454 ], "rotation": 0.0, "source": "manual", @@ -3356,19 +3754,61 @@ "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], + "elements": [], + "frame": 1, + "group": 0, + "id": 129, + "label_id": 67, + "occluded": false, + "outside": false, + "points": [ + 393.6123046875, + 109.7119140625, + 417.28929217013683, + 139.30771346834626, + 432.08735332008655, + 123.02984620340249, + 461.68347561998416, + 140.0476165258424 + ], + "rotation": 0.0, + "source": "manual", + "type": "polyline", + "z_order": 0 + }, + { + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 1, "group": 0, - "id": 636, - "label_id": 63, + "id": 130, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 420.99, - 33.5, - 450.58, - 62.36 + 420.9888074576247, + 33.50157624620988, + 450.58492975752233, + 62.357795488609554 ], "rotation": 0.0, "source": "manual", @@ -3376,41 +3816,74 @@ "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 1, "group": 0, - "id": 631, - "label_id": 63, + "id": 124, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 359.22, - 57.54, - 381.79, - 37.93 + 213.076171875, + 27.58203125, + 242.67217060073926, + 54.958764913635605, + 220.4750788758156, + 73.4563413510732, + 182.00011988594815, + 63.097698546107495, + 165.72225262100437, + 25.36264261373799 ], "rotation": 0.0, "source": "manual", - "type": "ellipse", + "type": "polygon", "z_order": 0 } ], "tags": [ { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "frame": 0, "group": 0, - "id": 230, - "label_id": 63, + "id": 7, + "label_id": 67, "source": "manual" }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "frame": 1, "group": 0, - "id": 231, - "label_id": 63, + "id": 8, + "label_id": 67, "source": "manual" } ], @@ -4322,22 +4795,22 @@ { "attributes": [ { - "spec_id": 7, - "value": "non-default" + "spec_id": 8, + "value": "black" } ], "elements": [], "frame": 0, "group": 0, - "id": 54, - "label_id": 51, + "id": 55, + "label_id": 52, "occluded": false, "outside": false, "points": [ - 244.32906271072352, - 57.53054619015711, - 340.34389750505943, - 191.28914362778414 + 424.4396493594086, + 86.6660822656795, + 664.8078219824692, + 251.54672960215976 ], "rotation": 0.0, "source": "manual", @@ -4347,22 +4820,22 @@ { "attributes": [ { - "spec_id": 8, - "value": "black" + "spec_id": 7, + "value": "non-default" } ], "elements": [], "frame": 0, "group": 0, - "id": 55, - "label_id": 52, + "id": 54, + "label_id": 51, "occluded": false, "outside": false, "points": [ - 424.4396493594086, - 86.6660822656795, - 664.8078219824692, - 251.54672960215976 + 244.32906271072352, + 57.53054619015711, + 340.34389750505943, + 191.28914362778414 ], "rotation": 0.0, "source": "manual", @@ -4868,157 +5341,118 @@ "attributes": [ { "spec_id": 13, - "value": "true" + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" } ], "elements": [], "frame": 0, - "group": 0, - "id": 671, - "label_id": 64, + "group": 3, + "id": 64, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 349.3662109375, - 38.5166015625, - 376.846017166401, - 64.03356448933664 + 439.001953125, + 238.072265625, + 442.27361979103625, + 279.29221193910234 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", - "z_order": 4 + "type": "polyline", + "z_order": 0 }, { - "attributes": [], - "elements": [], - "frame": 0, - "group": 17, - "id": 664, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 34.66, - 268.17, - 75.22, - 324.44 + "attributes": [ + { + "spec_id": 13, + "value": "yz" + }, + { + "spec_id": 14, + "value": "2" + } ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 4 - }, - { - "attributes": [], "elements": [], "frame": 0, - "group": 16, - "id": 647, - "label_id": 63, + "group": 1, + "id": 65, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 147.9, - 45.42, - 171.4, - 70.3 + 109.6181640625, + 93.6806640625, + 150.7451171875, + 154.708984375 ], - "rotation": 0.0, + "rotation": 118.39999999999998, "source": "manual", "type": "rectangle", - "z_order": 1 + "z_order": 0 }, { "attributes": [ { "spec_id": 13, - "value": "false" + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" } ], "elements": [], "frame": 0, - "group": 17, - "id": 665, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 50.36, - 283.87 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 4 - }, - { - "attributes": [], - "elements": [], - "frame": 0, - "group": 0, - "id": 667, - "label_id": 63, + "group": 3, + "id": 66, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 43.16, - 178.53, - 59.52, - 190.96, - 71.3, - 177.22, - 100.08, - 167.41 + 414.140625, + 256.392578125, + 467.1372624053729, + 255.08366924483562 ], "rotation": 0.0, "source": "manual", "type": "polyline", - "z_order": 4 + "z_order": 0 }, { "attributes": [ { "spec_id": 13, - "value": "false" + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" } ], "elements": [], "frame": 0, - "group": 0, - "id": 662, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 225.71, - 314.62 - ], - "rotation": 0.0, - "source": "manual", - "type": "points", - "z_order": 4 - }, - { - "attributes": [], - "elements": [], - "frame": 0, "group": 4, - "id": 640, - "label_id": 63, + "id": 67, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 210.0, - 274.06, - 240.1, - 258.35, - 267.1, - 266.4, - 278.7, - 261.63, - 281.32, - 253.78 + 210.00390625, + 274.0576171875, + 240.10078833736043, + 258.3547764811883, + 267.10000000000036, + 266.40000000000146, + 278.7035955631618, + 261.62685883520135, + 281.32071996591367, + 253.77548562694574 ], "rotation": 0.0, "source": "manual", @@ -5029,74 +5463,51 @@ "attributes": [ { "spec_id": 13, - "value": "false" + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" } ], "elements": [], "frame": 0, - "group": 0, - "id": 644, - "label_id": 64, - "occluded": false, - "outside": false, - "points": [ - 459.5, - 81.9, - 545.8, - 155.8 - ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 1 - }, - { - "attributes": [], - "elements": [], - "frame": 0, - "group": 11, - "id": 655, - "label_id": 63, + "group": 5, + "id": 68, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 681.09, - 13.0, - 711.3, - 43.2 + 227.015625, + 87.587890625, + 225.052845018663, + 153.01643273565423, + 283.90000000000146, + 158.20000000000073, + 251.90000000000146, + 121.0 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", - "z_order": 1 + "type": "polygon", + "z_order": 0 }, { - "attributes": [], - "elements": [], - "frame": 0, - "group": 7, - "id": 651, - "label_id": 63, - "occluded": false, - "outside": false, - "points": [ - 113.8, - 17.6, - 138.65, - 40.47 + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } ], - "rotation": 0.0, - "source": "manual", - "type": "rectangle", - "z_order": 1 - }, - { - "attributes": [], "elements": [], "frame": 0, "group": 2, - "id": 642, - "label_id": 63, + "id": 69, + "label_id": 67, "occluded": false, "outside": false, "points": [ @@ -5234,161 +5645,239 @@ "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 0, - "id": 661, - "label_id": 63, + "group": 6, + "id": 71, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 361.0, - 302.1, - 368.9, - 316.0, - 348.1, - 318.6 + 414.48681640625, + 261.001953125, + 467.4834538116229, + 259.6930442448356 ], "rotation": 0.0, "source": "manual", - "type": "points", - "z_order": 4 + "type": "polyline", + "z_order": 0 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 12, - "id": 656, - "label_id": 63, + "group": 0, + "id": 72, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 212.62, - 18.92, - 236.8, - 42.5 + 502.5, + 319.90000000000146, + 635.3000000000011, + 319.90000000000146, + 651.0, + 374.7000000000007, + 499.90000000000146, + 375.5 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", - "z_order": 1 + "type": "polygon", + "z_order": 3 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 11, - "id": 653, - "label_id": 63, + "group": 0, + "id": 75, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 603.9, - 13.65, - 632.67, - 42.4 + 673.2000000000007, + 222.40000000000146, + 693.5177345278626, + 240.03542476937582, + 647.8000000000011, + 287.2000000000007, + 620.8925323514832, + 266.8609498975875 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", + "type": "polygon", "z_order": 1 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 11, - "id": 654, - "label_id": 63, + "group": 0, + "id": 76, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 641.2, - 13.0, - 670.65, - 42.5 + 310.763369496879, + 196.19874876639187, + 339.55173792715505, + 228.9128038007966 ], "rotation": 0.0, "source": "manual", "type": "rectangle", - "z_order": 1 + "z_order": 4 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 6, - "id": 643, - "label_id": 63, + "group": 15, + "id": 77, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 414.49, - 261.0, - 467.48, - 259.69 + 213.966796875, + 46.7294921875, + 239.5, + 72.30000000000109 ], "rotation": 0.0, "source": "manual", - "type": "polyline", - "z_order": 0 + "type": "rectangle", + "z_order": 1 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 3, - "id": 637, - "label_id": 63, + "group": 16, + "id": 78, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 439.0, - 238.07, - 442.27, - 279.29 + 147.900390625, + 45.4208984375, + 171.40000000000146, + 70.30000000000109 ], "rotation": 0.0, "source": "manual", - "type": "polyline", - "z_order": 0 + "type": "rectangle", + "z_order": 1 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 1, - "id": 638, - "label_id": 63, + "group": 16, + "id": 79, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 109.62, - 93.68, - 150.75, - 154.71 + 179.9443359375, + 46.0751953125, + 206.0, + 72.80000000000109 ], - "rotation": 118.4, + "rotation": 0.0, "source": "manual", "type": "rectangle", - "z_order": 0 + "z_order": 1 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 7, - "id": 652, - "label_id": 63, + "group": 16, + "id": 80, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 179.91, - 18.22, - 203.4, - 41.8 + 113.80000000000109, + 45.400000000001455, + 137.3818359375, + 69.0 ], "rotation": 0.0, "source": "manual", @@ -5396,19 +5885,28 @@ "z_order": 1 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 15, - "id": 646, - "label_id": 63, + "group": 12, + "id": 81, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 213.97, - 46.73, - 239.5, - 72.3 + 147.8466796875, + 17.6083984375, + 170.1457031250011, + 39.871289443968635 ], "rotation": 0.0, "source": "manual", @@ -5416,132 +5914,173 @@ "z_order": 1 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 0, - "id": 669, - "label_id": 63, + "group": 7, + "id": 82, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 216.57, - 208.01, - 252.56, - 191.65 + 113.80000000000109, + 17.600000000000364, + 138.65410232543945, + 40.47109413146973 ], "rotation": 0.0, "source": "manual", - "type": "ellipse", - "z_order": 4 + "type": "rectangle", + "z_order": 1 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 5, - "id": 641, - "label_id": 63, + "group": 7, + "id": 83, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 227.02, - 87.59, - 225.05, - 153.02, - 283.9, - 158.2, - 251.9, - 121.0 + 179.908203125, + 18.216796875, + 203.40000000000146, + 41.80000000000109 ], "rotation": 0.0, "source": "manual", - "type": "polygon", - "z_order": 0 + "type": "rectangle", + "z_order": 1 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 3, - "id": 639, - "label_id": 63, + "group": 11, + "id": 84, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 414.14, - 256.39, - 467.14, - 255.08 + 603.9000000000015, + 13.654296875, + 632.6692943572998, + 42.400000000001455 ], "rotation": 0.0, "source": "manual", - "type": "polyline", - "z_order": 0 + "type": "rectangle", + "z_order": 1 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 0, - "id": 660, - "label_id": 63, + "group": 11, + "id": 85, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 310.76, - 196.2, - 339.55, - 228.91 + 641.2000000000007, + 13.0, + 670.6457023620605, + 42.5 ], "rotation": 0.0, "source": "manual", "type": "rectangle", - "z_order": 4 + "z_order": 1 }, { "attributes": [ { "spec_id": 13, - "value": "false" + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" } ], "elements": [], "frame": 0, - "group": 0, - "id": 658, - "label_id": 64, + "group": 11, + "id": 86, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 618.23, - 215.13, - 688.33, - 284.53, - 690.25, - 278.64, - 626.1, - 206.7 + 681.0859375, + 13.0, + 711.3000000000011, + 43.20000000000073 ], "rotation": 0.0, "source": "manual", - "type": "polygon", - "z_order": 3 + "type": "rectangle", + "z_order": 1 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 16, - "id": 648, - "label_id": 63, + "group": 12, + "id": 87, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 179.94, - 46.08, - 206.0, - 72.8 + 212.6220703125, + 18.9169921875, + 236.8000000000011, + 42.5 ], "rotation": 0.0, "source": "manual", @@ -5549,17 +6088,57 @@ "z_order": 1 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], + "elements": [], + "frame": 0, + "group": 0, + "id": 88, + "label_id": 67, + "occluded": false, + "outside": false, + "points": [ + 361.0, + 302.10000000000036, + 368.90000000000146, + 316.0, + 348.10000000000036, + 318.60000000000036 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 4 + }, + { + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, "group": 17, - "id": 663, - "label_id": 63, + "id": 90, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 60.83, - 302.19 + 60.828125, + 302.1923828125 ], "rotation": 0.0, "source": "manual", @@ -5567,39 +6146,57 @@ "z_order": 4 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 12, - "id": 650, - "label_id": 63, + "group": 17, + "id": 91, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 147.85, - 17.61, - 170.15, - 39.87 + 34.65674500649766, + 268.16966984208375, + 75.22217324915982, + 324.43784450126077 ], "rotation": 0.0, "source": "manual", "type": "rectangle", - "z_order": 1 + "z_order": 4 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, "group": 0, - "id": 666, - "label_id": 63, + "id": 93, + "label_id": 67, "occluded": false, "outside": false, "points": [ 138.0, 339.5, 155.0, - 338.8 + 338.8000000000011 ], "rotation": 0.0, "source": "manual", @@ -5607,98 +6204,138 @@ "z_order": 4 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, "group": 0, - "id": 668, - "label_id": 63, + "id": 94, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 101.39, - 200.78, - 135.42, - 214.52, - 117.75, - 248.54, - 85.04, - 235.46, - 73.26, - 204.05 + 43.162109375, + 178.533203125, + 59.51942683264497, + 190.96449996088631, + 71.29648664503111, + 177.22459684643582, + 100.08485507530895, + 167.41038033611403 ], "rotation": 0.0, "source": "manual", - "type": "polygon", + "type": "polyline", "z_order": 4 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, "group": 0, - "id": 645, - "label_id": 63, + "id": 95, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 673.2, - 222.4, - 693.52, - 240.04, - 647.8, - 287.2, - 620.89, - 266.86 + 101.3935546875, + 200.7783203125, + 135.41603451246556, + 214.5186195856586, + 117.75044479388816, + 248.54123682144018, + 85.03638975948161, + 235.4556148076772, + 73.25932994709547, + 204.0501219746493 ], "rotation": 0.0, "source": "manual", "type": "polygon", - "z_order": 1 + "z_order": 4 }, { - "attributes": [], + "attributes": [ + { + "spec_id": 13, + "value": "yy" + }, + { + "spec_id": 14, + "value": "1" + } + ], "elements": [], "frame": 0, - "group": 16, - "id": 649, - "label_id": 63, + "group": 0, + "id": 96, + "label_id": 67, "occluded": false, "outside": false, "points": [ - 113.8, - 45.4, - 137.38, - 69.0 + 216.5673828125, + 208.00537109375, + 252.552734375, + 191.6484375 ], "rotation": 0.0, "source": "manual", - "type": "rectangle", - "z_order": 1 + "type": "ellipse", + "z_order": 4 }, { - "attributes": [ - { - "spec_id": 13, - "value": "false" - } + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 89, + "label_id": 66, + "occluded": false, + "outside": false, + "points": [ + 225.70703125, + 314.6240234375 ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 4 + }, + { + "attributes": [], "elements": [], "frame": 0, "group": 0, - "id": 659, - "label_id": 64, + "id": 73, + "label_id": 66, "occluded": false, "outside": false, "points": [ - 532.6, - 300.2, - 533.2, - 391.8, - 678.47, - 393.14, - 639.87, - 300.88 + 532.6000000000004, + 300.2000000000007, + 533.2000000000007, + 391.8000000000011, + 678.4693480835958, + 393.13736007351145, + 639.866763142998, + 300.8837248764885 ], "rotation": 0.0, "source": "manual", @@ -5710,24 +6347,62 @@ "elements": [], "frame": 0, "group": 0, - "id": 657, - "label_id": 63, + "id": 74, + "label_id": 66, "occluded": false, "outside": false, "points": [ - 502.5, - 319.9, - 635.3, - 319.9, - 651.0, - 374.7, - 499.9, - 375.5 + 618.228515625, + 215.12753906250146, + 688.3285156250004, + 284.5275390625011, + 690.2463290244214, + 278.63711201903425, + 626.1000000000004, + 206.70000000000073 ], "rotation": 0.0, "source": "manual", "type": "polygon", "z_order": 3 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 17, + "id": 92, + "label_id": 66, + "occluded": false, + "outside": false, + "points": [ + 50.359375, + 283.8720703125 + ], + "rotation": 0.0, + "source": "manual", + "type": "points", + "z_order": 4 + }, + { + "attributes": [], + "elements": [], + "frame": 0, + "group": 0, + "id": 70, + "label_id": 66, + "occluded": false, + "outside": false, + "points": [ + 459.5, + 81.90000000000146, + 545.8000000000011, + 155.80020141601562 + ], + "rotation": 0.0, + "source": "manual", + "type": "rectangle", + "z_order": 1 } ], "tags": [], diff --git a/tests/python/shared/assets/cvat_db/data.json b/tests/python/shared/assets/cvat_db/data.json index 4f5566860d8e..088b50a7e7c5 100644 --- a/tests/python/shared/assets/cvat_db/data.json +++ b/tests/python/shared/assets/cvat_db/data.json @@ -653,14 +653,6 @@ "expire_date": "2023-03-24T11:54:54.631Z" } }, -{ - "model": "sessions.session", - "pk": "ttnnwlz4b1z28uiy24l4gqjgotwhpw1j", - "fields": { - "session_data": ".eJxVjEEOwiAQRe_C2hALFKYu3fcMZJhhpGpoUtqV8e7apAvd_vfef6mI21ri1vISJ1YX1anT75aQHrnugO9Yb7Omua7LlPSu6IM2Pc6cn9fD_Tso2Mq3zpzAUyay6EIHThLQQEZEAgdGkJ4hGeOCDBbOvrcYvMOQ2Fp2GYx6fwAZFjiv:1ptmJ8:Ac_26k4kTSoRBplBjwsTvpb0oukXBgpVgB230iP706c", - "expire_date": "2023-05-16T09:28:26.391Z" - } -}, { "model": "sessions.session", "pk": "v28l0efbrv9x06z97ilwcf7lwtuf4ctc", @@ -1368,6 +1360,25 @@ "deleted_frames": "[]" } }, +{ + "model": "engine.data", + "pk": 21, + "fields": { + "chunk_size": 72, + "size": 11, + "image_quality": 70, + "start_frame": 0, + "stop_frame": 10, + "frame_filter": "", + "compressed_chunk_type": "imageset", + "original_chunk_type": "imageset", + "storage_method": "cache", + "storage": "local", + "cloud_storage": null, + "sorting_method": "lexicographical", + "deleted_frames": "[]" + } +}, { "model": "engine.video", "pk": 1, @@ -2642,6 +2653,127 @@ "height": 151 } }, +{ + "model": "engine.image", + "pk": 467, + "fields": { + "data": 21, + "path": "30.png", + "frame": 0, + "width": 810, + "height": 399 + } +}, +{ + "model": "engine.image", + "pk": 468, + "fields": { + "data": 21, + "path": "31.png", + "frame": 1, + "width": 916, + "height": 158 + } +}, +{ + "model": "engine.image", + "pk": 469, + "fields": { + "data": 21, + "path": "32.png", + "frame": 2, + "width": 936, + "height": 182 + } +}, +{ + "model": "engine.image", + "pk": 470, + "fields": { + "data": 21, + "path": "33.png", + "frame": 3, + "width": 783, + "height": 433 + } +}, +{ + "model": "engine.image", + "pk": 471, + "fields": { + "data": 21, + "path": "34.png", + "frame": 4, + "width": 231, + "height": 121 + } +}, +{ + "model": "engine.image", + "pk": 472, + "fields": { + "data": 21, + "path": "35.png", + "frame": 5, + "width": 721, + "height": 705 + } +}, +{ + "model": "engine.image", + "pk": 473, + "fields": { + "data": 21, + "path": "36.png", + "frame": 6, + "width": 631, + "height": 225 + } +}, +{ + "model": "engine.image", + "pk": 474, + "fields": { + "data": 21, + "path": "37.png", + "frame": 7, + "width": 540, + "height": 167 + } +}, +{ + "model": "engine.image", + "pk": 475, + "fields": { + "data": 21, + "path": "38.png", + "frame": 8, + "width": 203, + "height": 211 + } +}, +{ + "model": "engine.image", + "pk": 476, + "fields": { + "data": 21, + "path": "39.png", + "frame": 9, + "width": 677, + "height": 144 + } +}, +{ + "model": "engine.image", + "pk": 477, + "fields": { + "data": 21, + "path": "40.png", + "frame": 10, + "width": 697, + "height": 954 + } +}, { "model": "engine.project", "pk": 1, @@ -3286,6 +3418,31 @@ "target_storage": 34 } }, +{ + "model": "engine.task", + "pk": 22, + "fields": { + "project": null, + "name": "task3_with_gt_job", + "mode": "annotation", + "owner": [ + "user2" + ], + "assignee": null, + "bug_tracker": "", + "created_date": "2023-05-26T16:11:23.540Z", + "updated_date": "2023-05-26T16:17:02.635Z", + "overlap": 0, + "segment_size": 11, + "status": "validation", + "data": 21, + "dimension": "2d", + "subset": "Train", + "organization": 2, + "source_storage": null, + "target_storage": null + } +}, { "model": "engine.clientfile", "pk": 131, @@ -4189,7 +4346,9 @@ "fields": { "task": 2, "start_frame": 0, - "stop_frame": 22 + "stop_frame": 22, + "type": "range", + "frames": "[]" } }, { @@ -4198,7 +4357,9 @@ "fields": { "task": 5, "start_frame": 0, - "stop_frame": 24 + "stop_frame": 24, + "type": "range", + "frames": "[]" } }, { @@ -4207,7 +4368,9 @@ "fields": { "task": 6, "start_frame": 0, - "stop_frame": 0 + "stop_frame": 0, + "type": "range", + "frames": "[]" } }, { @@ -4216,7 +4379,9 @@ "fields": { "task": 7, "start_frame": 0, - "stop_frame": 10 + "stop_frame": 10, + "type": "range", + "frames": "[]" } }, { @@ -4225,7 +4390,9 @@ "fields": { "task": 8, "start_frame": 0, - "stop_frame": 13 + "stop_frame": 13, + "type": "range", + "frames": "[]" } }, { @@ -4234,7 +4401,9 @@ "fields": { "task": 9, "start_frame": 0, - "stop_frame": 4 + "stop_frame": 4, + "type": "range", + "frames": "[]" } }, { @@ -4243,7 +4412,9 @@ "fields": { "task": 9, "start_frame": 5, - "stop_frame": 9 + "stop_frame": 9, + "type": "range", + "frames": "[]" } }, { @@ -4252,7 +4423,9 @@ "fields": { "task": 9, "start_frame": 10, - "stop_frame": 14 + "stop_frame": 14, + "type": "range", + "frames": "[]" } }, { @@ -4261,7 +4434,9 @@ "fields": { "task": 9, "start_frame": 15, - "stop_frame": 19 + "stop_frame": 19, + "type": "range", + "frames": "[]" } }, { @@ -4270,7 +4445,9 @@ "fields": { "task": 11, "start_frame": 0, - "stop_frame": 10 + "stop_frame": 10, + "type": "range", + "frames": "[]" } }, { @@ -4279,7 +4456,9 @@ "fields": { "task": 13, "start_frame": 0, - "stop_frame": 4 + "stop_frame": 4, + "type": "range", + "frames": "[]" } }, { @@ -4288,7 +4467,9 @@ "fields": { "task": 14, "start_frame": 0, - "stop_frame": 7 + "stop_frame": 7, + "type": "range", + "frames": "[]" } }, { @@ -4297,7 +4478,9 @@ "fields": { "task": 15, "start_frame": 0, - "stop_frame": 24 + "stop_frame": 24, + "type": "range", + "frames": "[]" } }, { @@ -4306,7 +4489,9 @@ "fields": { "task": 17, "start_frame": 0, - "stop_frame": 4 + "stop_frame": 4, + "type": "range", + "frames": "[]" } }, { @@ -4315,7 +4500,9 @@ "fields": { "task": 18, "start_frame": 0, - "stop_frame": 1 + "stop_frame": 1, + "type": "range", + "frames": "[]" } }, { @@ -4324,7 +4511,9 @@ "fields": { "task": 19, "start_frame": 0, - "stop_frame": 1 + "stop_frame": 1, + "type": "range", + "frames": "[]" } }, { @@ -4333,7 +4522,9 @@ "fields": { "task": 20, "start_frame": 0, - "stop_frame": 1 + "stop_frame": 1, + "type": "range", + "frames": "[]" } }, { @@ -4342,7 +4533,9 @@ "fields": { "task": 21, "start_frame": 0, - "stop_frame": 5 + "stop_frame": 5, + "type": "range", + "frames": "[]" } }, { @@ -4351,7 +4544,31 @@ "fields": { "task": 21, "start_frame": 6, - "stop_frame": 9 + "stop_frame": 9, + "type": "range", + "frames": "[]" + } +}, +{ + "model": "engine.segment", + "pk": 27, + "fields": { + "task": 22, + "start_frame": 0, + "stop_frame": 10, + "type": "range", + "frames": "[]" + } +}, +{ + "model": "engine.segment", + "pk": 28, + "fields": { + "task": 22, + "start_frame": 0, + "stop_frame": 10, + "type": "specific_frames", + "frames": "[0, 1, 2]" } }, { @@ -4362,10 +4579,12 @@ "assignee": [ "worker1" ], + "created_date": "2021-12-14T18:50:29.458Z", "updated_date": "2022-06-22T09:18:45.296Z", "status": "annotation", "stage": "annotation", - "state": "new" + "state": "new", + "type": "annotation" } }, { @@ -4376,10 +4595,12 @@ "assignee": [ "worker4" ], + "created_date": "2022-02-16T06:25:48.168Z", "updated_date": "2022-06-22T09:18:45.296Z", "status": "annotation", "stage": "annotation", - "state": "in progress" + "state": "in progress", + "type": "annotation" } }, { @@ -4388,10 +4609,12 @@ "fields": { "segment": 8, "assignee": null, + "created_date": "2022-02-16T06:26:54.631Z", "updated_date": "2022-06-22T09:18:45.296Z", "status": "annotation", "stage": "annotation", - "state": "new" + "state": "new", + "type": "annotation" } }, { @@ -4400,10 +4623,12 @@ "fields": { "segment": 9, "assignee": null, + "created_date": "2022-02-21T10:31:52.429Z", "updated_date": "2022-06-22T09:18:45.296Z", "status": "annotation", "stage": "annotation", - "state": "in progress" + "state": "in progress", + "type": "annotation" } }, { @@ -4414,10 +4639,12 @@ "assignee": [ "admin1" ], + "created_date": "2022-03-05T08:30:48.612Z", "updated_date": "2022-06-22T09:18:45.296Z", "status": "annotation", "stage": "annotation", - "state": "in progress" + "state": "in progress", + "type": "annotation" } }, { @@ -4428,10 +4655,12 @@ "assignee": [ "worker4" ], + "created_date": "2022-03-05T09:33:10.420Z", "updated_date": "2022-06-22T09:18:45.296Z", "status": "annotation", "stage": "annotation", - "state": "in progress" + "state": "in progress", + "type": "annotation" } }, { @@ -4440,10 +4669,12 @@ "fields": { "segment": 12, "assignee": null, + "created_date": "2022-03-05T09:33:10.420Z", "updated_date": "2022-06-22T09:18:45.296Z", "status": "validation", "stage": "validation", - "state": "new" + "state": "new", + "type": "annotation" } }, { @@ -4452,10 +4683,12 @@ "fields": { "segment": 13, "assignee": null, + "created_date": "2022-03-05T09:33:10.420Z", "updated_date": "2022-06-22T09:18:45.296Z", "status": "validation", "stage": "acceptance", - "state": "new" + "state": "new", + "type": "annotation" } }, { @@ -4464,10 +4697,12 @@ "fields": { "segment": 14, "assignee": null, + "created_date": "2022-03-05T09:33:10.420Z", "updated_date": "2022-11-03T13:57:26.346Z", "status": "annotation", "stage": "annotation", - "state": "in progress" + "state": "in progress", + "type": "annotation" } }, { @@ -4478,10 +4713,12 @@ "assignee": [ "worker2" ], + "created_date": "2022-03-05T10:32:19.149Z", "updated_date": "2022-06-22T09:18:45.296Z", "status": "annotation", "stage": "annotation", - "state": "in progress" + "state": "in progress", + "type": "annotation" } }, { @@ -4490,10 +4727,12 @@ "fields": { "segment": 17, "assignee": null, + "created_date": "2022-06-08T08:33:06.505Z", "updated_date": "2022-12-05T07:47:01.633Z", "status": "annotation", "stage": "annotation", - "state": "in progress" + "state": "in progress", + "type": "annotation" } }, { @@ -4502,10 +4741,12 @@ "fields": { "segment": 18, "assignee": null, + "created_date": "2022-09-22T14:22:25.820Z", "updated_date": "2022-09-23T11:57:02.302Z", "status": "annotation", "stage": "annotation", - "state": "in progress" + "state": "in progress", + "type": "annotation" } }, { @@ -4514,10 +4755,12 @@ "fields": { "segment": 19, "assignee": null, + "created_date": "2022-12-01T12:53:10.425Z", "updated_date": "2022-12-01T12:53:35.354Z", "status": "annotation", "stage": "annotation", - "state": "in progress" + "state": "in progress", + "type": "annotation" } }, { @@ -4526,10 +4769,12 @@ "fields": { "segment": 21, "assignee": null, + "created_date": "2023-02-10T14:05:25.947Z", "updated_date": "2023-02-10T14:05:26.022Z", "status": "annotation", "stage": "annotation", - "state": "new" + "state": "new", + "type": "annotation" } }, { @@ -4538,10 +4783,12 @@ "fields": { "segment": 22, "assignee": null, + "created_date": "2023-03-01T15:36:26.668Z", "updated_date": "2023-03-01T15:36:38.114Z", "status": "annotation", "stage": "annotation", - "state": "in progress" + "state": "in progress", + "type": "annotation" } }, { @@ -4550,10 +4797,12 @@ "fields": { "segment": 23, "assignee": null, + "created_date": "2023-03-10T11:56:33.757Z", "updated_date": "2023-03-10T11:56:55.066Z", "status": "annotation", "stage": "annotation", - "state": "in progress" + "state": "in progress", + "type": "annotation" } }, { @@ -4562,10 +4811,12 @@ "fields": { "segment": 24, "assignee": null, + "created_date": "2023-03-10T11:57:31.614Z", "updated_date": "2023-03-10T11:57:49.019Z", "status": "annotation", "stage": "annotation", - "state": "in progress" + "state": "in progress", + "type": "annotation" } }, { @@ -4574,10 +4825,12 @@ "fields": { "segment": 25, "assignee": null, + "created_date": "2023-03-27T19:08:07.649Z", "updated_date": "2023-03-27T19:08:27.216Z", "status": "annotation", "stage": "annotation", - "state": "in progress" + "state": "in progress", + "type": "annotation" } }, { @@ -4586,10 +4839,40 @@ "fields": { "segment": 26, "assignee": null, + "created_date": "2023-03-27T19:08:07.649Z", "updated_date": "2023-03-27T19:08:40.166Z", "status": "annotation", "stage": "annotation", - "state": "in progress" + "state": "in progress", + "type": "annotation" + } +}, +{ + "model": "engine.job", + "pk": 27, + "fields": { + "segment": 27, + "assignee": null, + "created_date": "2023-05-26T16:11:23.880Z", + "updated_date": "2023-05-26T16:11:24.294Z", + "status": "validation", + "stage": "annotation", + "state": "new", + "type": "annotation" + } +}, +{ + "model": "engine.job", + "pk": 28, + "fields": { + "segment": 28, + "assignee": null, + "created_date": "2023-05-26T16:11:23.946Z", + "updated_date": "2023-05-26T16:16:50.630Z", + "status": "validation", + "stage": "acceptance", + "state": "completed", + "type": "ground_truth" } }, { @@ -5288,6 +5571,30 @@ "parent": 63 } }, +{ + "model": "engine.label", + "pk": 66, + "fields": { + "task": 22, + "project": null, + "name": "dog", + "color": "#406040", + "type": "any", + "parent": null + } +}, +{ + "model": "engine.label", + "pk": 67, + "fields": { + "task": 22, + "project": null, + "name": "cat", + "color": "#6080c0", + "type": "any", + "parent": null + } +}, { "model": "engine.skeleton", "pk": 1, @@ -5468,6 +5775,30 @@ "values": "white\nblack\nred" } }, +{ + "model": "engine.attributespec", + "pk": 13, + "fields": { + "label": 67, + "name": "x", + "mutable": false, + "input_type": "text", + "default_value": "yy", + "values": "yy" + } +}, +{ + "model": "engine.attributespec", + "pk": 14, + "fields": { + "label": 67, + "name": "y", + "mutable": false, + "input_type": "radio", + "default_value": "1", + "values": "1\n2" + } +}, { "model": "engine.labeledimage", "pk": 1, @@ -5513,11 +5844,69 @@ } }, { - "model": "engine.labeledshape", - "pk": 1, + "model": "engine.labeledimage", + "pk": 7, "fields": { - "job": 2, - "label": 3, + "job": 28, + "label": 67, + "frame": 0, + "group": 0, + "source": "manual" + } +}, +{ + "model": "engine.labeledimage", + "pk": 8, + "fields": { + "job": 28, + "label": 67, + "frame": 1, + "group": 0, + "source": "manual" + } +}, +{ + "model": "engine.labeledimageattributeval", + "pk": 1, + "fields": { + "spec": 13, + "value": "yy", + "image": 7 + } +}, +{ + "model": "engine.labeledimageattributeval", + "pk": 2, + "fields": { + "spec": 14, + "value": "1", + "image": 7 + } +}, +{ + "model": "engine.labeledimageattributeval", + "pk": 3, + "fields": { + "spec": 13, + "value": "yy", + "image": 8 + } +}, +{ + "model": "engine.labeledimageattributeval", + "pk": 4, + "fields": { + "spec": 14, + "value": "1", + "image": 8 + } +}, +{ + "model": "engine.labeledshape", + "pk": 1, + "fields": { + "job": 2, + "label": 3, "frame": 0, "group": 0, "source": "manual", @@ -6197,1351 +6586,4896 @@ } }, { - "model": "engine.labeledshapeattributeval", - "pk": 1, - "fields": { - "spec": 2, - "value": "white", - "shape": 36 - } -}, -{ - "model": "engine.labeledshapeattributeval", - "pk": 2, + "model": "engine.labeledshape", + "pk": 64, "fields": { - "spec": 3, - "value": "val1", - "shape": 39 + "job": 27, + "label": 67, + "frame": 0, + "group": 3, + "source": "manual", + "type": "polyline", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[439.001953125, 238.072265625, 442.27361979103625, 279.29221193910234]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledshapeattributeval", - "pk": 3, + "model": "engine.labeledshape", + "pk": 65, "fields": { - "spec": 1, - "value": "mazda", - "shape": 42 + "job": 27, + "label": 67, + "frame": 0, + "group": 1, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[109.6181640625, 93.6806640625, 150.7451171875, 154.708984375]", + "rotation": 118.39999999999998, + "parent": null } }, { - "model": "engine.labeledshapeattributeval", - "pk": 4, + "model": "engine.labeledshape", + "pk": 66, "fields": { - "spec": 7, - "value": "non-default", - "shape": 54 + "job": 27, + "label": 67, + "frame": 0, + "group": 3, + "source": "manual", + "type": "polyline", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[414.140625, 256.392578125, 467.1372624053729, 255.08366924483562]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledshapeattributeval", - "pk": 5, + "model": "engine.labeledshape", + "pk": 67, "fields": { - "spec": 8, - "value": "black", - "shape": 55 + "job": 27, + "label": 67, + "frame": 0, + "group": 4, + "source": "manual", + "type": "polyline", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[210.00390625, 274.0576171875, 240.10078833736043, 258.3547764811883, 267.10000000000036, 266.40000000000146, 278.7035955631618, 261.62685883520135, 281.32071996591367, 253.77548562694574]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledshapeattributeval", - "pk": 6, + "model": "engine.labeledshape", + "pk": 68, "fields": { - "spec": 9, - "value": "non-default", - "shape": 56 + "job": 27, + "label": 67, + "frame": 0, + "group": 5, + "source": "manual", + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[227.015625, 87.587890625, 225.052845018663, 153.01643273565423, 283.90000000000146, 158.20000000000073, 251.90000000000146, 121.0]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledshapeattributeval", - "pk": 7, + "model": "engine.labeledshape", + "pk": 69, "fields": { - "spec": 10, - "value": "black", - "shape": 57 + "job": 27, + "label": 67, + "frame": 0, + "group": 2, + "source": "manual", + "type": "mask", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[37.0, 25.0, 49.0, 32.0, 23.0, 59.0, 19.0, 61.0, 17.0, 63.0, 15.0, 65.0, 14.0, 66.0, 12.0, 68.0, 11.0, 69.0, 10.0, 70.0, 9.0, 70.0, 9.0, 70.0, 9.0, 70.0, 9.0, 71.0, 8.0, 71.0, 8.0, 72.0, 7.0, 72.0, 7.0, 72.0, 7.0, 72.0, 7.0, 72.0, 7.0, 73.0, 6.0, 73.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 5.0, 74.0, 4.0, 75.0, 4.0, 75.0, 4.0, 75.0, 3.0, 76.0, 3.0, 76.0, 3.0, 77.0, 2.0, 77.0, 2.0, 77.0, 2.0, 77.0, 2.0, 77.0, 2.0, 77.0, 1.0, 1184.0, 1.0, 77.0, 3.0, 76.0, 4.0, 75.0, 4.0, 75.0, 4.0, 74.0, 5.0, 73.0, 7.0, 71.0, 9.0, 67.0, 13.0, 65.0, 15.0, 9.0, 1.0, 53.0, 29.0, 16.0, 4.0, 29.0, 31.0, 11.0, 16.0, 20.0, 12.0, 458.0, 87.0, 536.0, 158.0]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 1, + "model": "engine.labeledshape", + "pk": 70, "fields": { - "job": 18, - "label": 22, + "job": 27, + "label": 66, "frame": 0, "group": 0, "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 1, + "points": "[459.5, 81.90000000000146, 545.8000000000011, 155.80020141601562]", + "rotation": 0.0, "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 2, + "model": "engine.labeledshape", + "pk": 71, "fields": { - "job": 18, - "label": 23, + "job": 27, + "label": 67, "frame": 0, - "group": 0, + "group": 6, "source": "manual", - "parent": 1 + "type": "polyline", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[414.48681640625, 261.001953125, 467.4834538116229, 259.6930442448356]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 3, + "model": "engine.labeledshape", + "pk": 72, "fields": { - "job": 18, - "label": 24, + "job": 27, + "label": 67, "frame": 0, "group": 0, "source": "manual", - "parent": 1 + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 3, + "points": "[502.5, 319.90000000000146, 635.3000000000011, 319.90000000000146, 651.0, 374.7000000000007, 499.90000000000146, 375.5]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 4, + "model": "engine.labeledshape", + "pk": 73, "fields": { - "job": 18, - "label": 25, + "job": 27, + "label": 66, "frame": 0, "group": 0, "source": "manual", - "parent": 1 + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 4, + "points": "[532.6000000000004, 300.2000000000007, 533.2000000000007, 391.8000000000011, 678.4693480835958, 393.13736007351145, 639.866763142998, 300.8837248764885]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 5, + "model": "engine.labeledshape", + "pk": 74, "fields": { - "job": 18, - "label": 26, + "job": 27, + "label": 66, "frame": 0, "group": 0, "source": "manual", - "parent": 1 + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 3, + "points": "[618.228515625, 215.12753906250146, 688.3285156250004, 284.5275390625011, 690.2463290244214, 278.63711201903425, 626.1000000000004, 206.70000000000073]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 6, + "model": "engine.labeledshape", + "pk": 75, "fields": { - "job": 25, - "label": 58, + "job": 27, + "label": 67, "frame": 0, "group": 0, "source": "manual", + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 1, + "points": "[673.2000000000007, 222.40000000000146, 693.5177345278626, 240.03542476937582, 647.8000000000011, 287.2000000000007, 620.8925323514832, 266.8609498975875]", + "rotation": 0.0, "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 7, + "model": "engine.labeledshape", + "pk": 76, "fields": { - "job": 25, - "label": 59, + "job": 27, + "label": 67, "frame": 0, "group": 0, "source": "manual", - "parent": 6 + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 4, + "points": "[310.763369496879, 196.19874876639187, 339.55173792715505, 228.9128038007966]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 8, + "model": "engine.labeledshape", + "pk": 77, "fields": { - "job": 25, - "label": 60, + "job": 27, + "label": 67, "frame": 0, - "group": 0, + "group": 15, "source": "manual", - "parent": 6 + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 1, + "points": "[213.966796875, 46.7294921875, 239.5, 72.30000000000109]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 9, + "model": "engine.labeledshape", + "pk": 78, "fields": { - "job": 25, - "label": 61, + "job": 27, + "label": 67, "frame": 0, - "group": 0, + "group": 16, "source": "manual", - "parent": 6 + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 1, + "points": "[147.900390625, 45.4208984375, 171.40000000000146, 70.30000000000109]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 10, + "model": "engine.labeledshape", + "pk": 79, "fields": { - "job": 25, - "label": 62, + "job": 27, + "label": 67, "frame": 0, - "group": 0, + "group": 16, "source": "manual", - "parent": 6 + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 1, + "points": "[179.9443359375, 46.0751953125, 206.0, 72.80000000000109]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 11, + "model": "engine.labeledshape", + "pk": 80, "fields": { - "job": 26, - "label": 58, - "frame": 6, - "group": 0, + "job": 27, + "label": 67, + "frame": 0, + "group": 16, "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 1, + "points": "[113.80000000000109, 45.400000000001455, 137.3818359375, 69.0]", + "rotation": 0.0, "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 12, + "model": "engine.labeledshape", + "pk": 81, "fields": { - "job": 26, - "label": 59, - "frame": 6, - "group": 0, + "job": 27, + "label": 67, + "frame": 0, + "group": 12, "source": "manual", - "parent": 11 + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 1, + "points": "[147.8466796875, 17.6083984375, 170.1457031250011, 39.871289443968635]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 13, + "model": "engine.labeledshape", + "pk": 82, "fields": { - "job": 26, - "label": 60, - "frame": 6, - "group": 0, + "job": 27, + "label": 67, + "frame": 0, + "group": 7, "source": "manual", - "parent": 11 + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 1, + "points": "[113.80000000000109, 17.600000000000364, 138.65410232543945, 40.47109413146973]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 14, + "model": "engine.labeledshape", + "pk": 83, "fields": { - "job": 26, - "label": 61, - "frame": 6, - "group": 0, + "job": 27, + "label": 67, + "frame": 0, + "group": 7, "source": "manual", - "parent": 11 + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 1, + "points": "[179.908203125, 18.216796875, 203.40000000000146, 41.80000000000109]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrack", - "pk": 15, + "model": "engine.labeledshape", + "pk": 84, "fields": { - "job": 26, - "label": 62, - "frame": 6, - "group": 0, + "job": 27, + "label": 67, + "frame": 0, + "group": 11, "source": "manual", - "parent": 11 + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 1, + "points": "[603.9000000000015, 13.654296875, 632.6692943572998, 42.400000000001455]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrackattributeval", - "pk": 3, + "model": "engine.labeledshape", + "pk": 85, "fields": { - "spec": 2, - "value": "white", - "track": 1 + "job": 27, + "label": 67, + "frame": 0, + "group": 11, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 1, + "points": "[641.2000000000007, 13.0, 670.6457023620605, 42.5]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.labeledtrackattributeval", - "pk": 4, + "model": "engine.labeledshape", + "pk": 86, "fields": { - "spec": 3, - "value": "val1", - "track": 4 + "job": 27, + "label": 67, + "frame": 0, + "group": 11, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 1, + "points": "[681.0859375, 13.0, 711.3000000000011, 43.20000000000073]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 1, + "model": "engine.labeledshape", + "pk": 87, "fields": { - "type": "skeleton", + "job": 27, + "label": 67, + "frame": 0, + "group": 12, + "source": "manual", + "type": "rectangle", "occluded": false, "outside": false, - "z_order": 0, - "points": "[]", + "z_order": 1, + "points": "[212.6220703125, 18.9169921875, 236.8000000000011, 42.5]", "rotation": 0.0, - "track": 1, - "frame": 0 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 2, + "model": "engine.labeledshape", + "pk": 88, "fields": { + "job": 27, + "label": 67, + "frame": 0, + "group": 0, + "source": "manual", "type": "points", "occluded": false, "outside": false, - "z_order": 0, - "points": "[381.9130434782637, 355.0592829431864]", + "z_order": 4, + "points": "[361.0, 302.10000000000036, 368.90000000000146, 316.0, 348.10000000000036, 318.60000000000036]", "rotation": 0.0, - "track": 2, - "frame": 0 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 3, + "model": "engine.labeledshape", + "pk": 89, "fields": { + "job": 27, + "label": 66, + "frame": 0, + "group": 0, + "source": "manual", "type": "points", "occluded": false, "outside": false, - "z_order": 0, - "points": "[461.9389738212561, 583.320176176868]", + "z_order": 4, + "points": "[225.70703125, 314.6240234375]", "rotation": 0.0, - "track": 3, - "frame": 0 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 4, + "model": "engine.labeledshape", + "pk": 90, "fields": { + "job": 27, + "label": 67, + "frame": 0, + "group": 17, + "source": "manual", "type": "points", "occluded": false, "outside": false, - "z_order": 0, - "points": "[655.6465767436227, 281.7391304347839]", + "z_order": 4, + "points": "[60.828125, 302.1923828125]", "rotation": 0.0, - "track": 4, - "frame": 0 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 5, + "model": "engine.labeledshape", + "pk": 91, "fields": { - "type": "points", + "job": 27, + "label": 67, + "frame": 0, + "group": 17, + "source": "manual", + "type": "rectangle", "occluded": false, "outside": false, - "z_order": 0, - "points": "[708.000000000003, 586.0869565217404]", + "z_order": 4, + "points": "[34.65674500649766, 268.16966984208375, 75.22217324915982, 324.43784450126077]", "rotation": 0.0, - "track": 5, - "frame": 0 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 6, + "model": "engine.labeledshape", + "pk": 92, "fields": { + "job": 27, + "label": 66, + "frame": 0, + "group": 17, + "source": "manual", "type": "points", "occluded": false, "outside": false, - "z_order": 0, - "points": "[137.0966796875, 156.11214469590232]", + "z_order": 4, + "points": "[50.359375, 283.8720703125]", "rotation": 0.0, - "track": 2, - "frame": 3 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 7, + "model": "engine.labeledshape", + "pk": 93, "fields": { + "job": 27, + "label": 67, + "frame": 0, + "group": 0, + "source": "manual", "type": "points", "occluded": false, "outside": false, - "z_order": 0, - "points": "[217.12261003049207, 384.3730379295848]", + "z_order": 4, + "points": "[138.0, 339.5, 155.0, 338.8000000000011]", "rotation": 0.0, - "track": 3, - "frame": 3 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 8, + "model": "engine.labeledshape", + "pk": 94, "fields": { - "type": "points", + "job": 27, + "label": 67, + "frame": 0, + "group": 0, + "source": "manual", + "type": "polyline", "occluded": false, "outside": false, - "z_order": 0, - "points": "[410.83021295285835, 82.7919921875]", + "z_order": 4, + "points": "[43.162109375, 178.533203125, 59.51942683264497, 190.96449996088631, 71.29648664503111, 177.22459684643582, 100.08485507530895, 167.41038033611403]", "rotation": 0.0, - "track": 4, - "frame": 3 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 9, + "model": "engine.labeledshape", + "pk": 95, "fields": { - "type": "points", + "job": 27, + "label": 67, + "frame": 0, + "group": 0, + "source": "manual", + "type": "polygon", "occluded": false, "outside": false, - "z_order": 0, - "points": "[463.1836362092399, 387.13981827445605]", + "z_order": 4, + "points": "[101.3935546875, 200.7783203125, 135.41603451246556, 214.5186195856586, 117.75044479388816, 248.54123682144018, 85.03638975948161, 235.4556148076772, 73.25932994709547, 204.0501219746493]", "rotation": 0.0, - "track": 5, - "frame": 3 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 10, + "model": "engine.labeledshape", + "pk": 96, "fields": { - "type": "skeleton", + "job": 27, + "label": 67, + "frame": 0, + "group": 0, + "source": "manual", + "type": "ellipse", "occluded": false, "outside": false, - "z_order": 0, - "points": "[]", + "z_order": 4, + "points": "[216.5673828125, 208.00537109375, 252.552734375, 191.6484375]", "rotation": 0.0, - "track": 6, - "frame": 0 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 11, + "model": "engine.labeledshape", + "pk": 97, "fields": { - "type": "points", + "job": 28, + "label": 66, + "frame": 0, + "group": 0, + "source": "manual", + "type": "polygon", "occluded": false, - "outside": true, + "outside": false, "z_order": 0, - "points": "[230.39103314621025, 149.98846070356873]", + "points": "[455.359375, 88.2421875, 463.2108659572077, 158.9047260271691, 545.6502846439089, 155.6333205237297, 536.4903492342764, 84.97096164941286]", "rotation": 0.0, - "track": 7, - "frame": 0 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 12, + "model": "engine.labeledshape", + "pk": 98, "fields": { - "type": "points", + "job": 28, + "label": 67, + "frame": 0, + "group": 0, + "source": "manual", + "type": "polygon", "occluded": false, "outside": false, "z_order": 0, - "points": "[230.39103314621025, 149.98846070356873]", + "points": "[227.015625, 88.2421875, 223.74398310536162, 155.6333205237297, 297.0234663824285, 156.94188272510473, 299.6405907851804, 84.97096164941286, 261.0380058445826, 128.80779539551622]", "rotation": 0.0, - "track": 7, - "frame": 3 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 13, + "model": "engine.labeledshape", + "pk": 99, "fields": { - "type": "points", + "job": 28, + "label": 67, + "frame": 0, + "group": 0, + "source": "manual", + "type": "polyline", "occluded": false, "outside": false, "z_order": 0, - "points": "[292.80597636674844, 284.1818841927473]", + "points": "[284.591796875, 248.541015625, 264.9636924487113, 261.62685883520135, 242.71813502531586, 251.15836122419205, 219.16401540054358, 270.7867942448356]", "rotation": 0.0, - "track": 8, - "frame": 0 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 14, + "model": "engine.labeledshape", + "pk": 100, "fields": { - "type": "points", + "job": 28, + "label": 67, + "frame": 0, + "group": 0, + "source": "manual", + "type": "polyline", "occluded": false, "outside": false, "z_order": 0, - "points": "[377.016603158851, 94.95407858346152]", + "points": "[419.3740234375, 260.318359375, 436.38534082899605, 259.0097344324495, 448.8166817420697, 258.35545333176196, 463.86514705789705, 258.35545333176196]", "rotation": 0.0, - "track": 9, - "frame": 0 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 15, + "model": "engine.labeledshape", + "pk": 101, "fields": { - "type": "points", + "job": 28, + "label": 67, + "frame": 0, + "group": 0, + "source": "manual", + "type": "rectangle", "occluded": false, "outside": false, "z_order": 0, - "points": "[499.86507710826913, 316.59939612801213]", + "points": "[107.28194718287705, 91.51377265629344, 152.42734313035726, 154.32475832235104]", "rotation": 0.0, - "track": 10, - "frame": 0 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 16, + "model": "engine.labeledshape", + "pk": 102, "fields": { - "type": "skeleton", + "job": 28, + "label": 67, + "frame": 0, + "group": 0, + "source": "manual", + "type": "points", "occluded": false, "outside": false, "z_order": 0, - "points": "[]", + "points": "[362.451171875, 298.9208984375, 345.4402678333481, 317.24075239369085, 368.9943874581204, 315.93219019231583]", "rotation": 0.0, - "track": 11, - "frame": 6 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 17, + "model": "engine.labeledshape", + "pk": 103, "fields": { - "type": "points", + "job": 28, + "label": 67, + "frame": 0, + "group": 1, + "source": "manual", + "type": "rectangle", "occluded": false, "outside": false, "z_order": 0, - "points": "[92.95325643333308, 129.2954675940839]", + "points": "[113.8251953125, 18.234375, 136.0714843750011, 40.5]", "rotation": 0.0, - "track": 12, - "frame": 6 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 18, + "model": "engine.labeledshape", + "pk": 104, "fields": { - "type": "points", + "job": 28, + "label": 67, + "frame": 0, + "group": 1, + "source": "manual", + "type": "rectangle", "occluded": false, "outside": false, "z_order": 0, - "points": "[133.81649280769233, 195.4883603907146]", + "points": "[147.84765625, 18.888671875, 170.06289062500036, 42.408593750000364]", "rotation": 0.0, - "track": 13, - "frame": 6 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 19, + "model": "engine.labeledshape", + "pk": 105, "fields": { - "type": "points", + "job": 28, + "label": 67, + "frame": 0, + "group": 2, + "source": "manual", + "type": "rectangle", "occluded": false, "outside": false, "z_order": 0, - "points": "[188.94942364574058, 102.14894385926891]", + "points": "[180.5615234375, 19.54296875, 202.1408203125011, 41.771484375]", "rotation": 0.0, - "track": 14, - "frame": 6 + "parent": null } }, { - "model": "engine.trackedshape", - "pk": 20, + "model": "engine.labeledshape", + "pk": 106, "fields": { - "type": "points", + "job": 28, + "label": 67, + "frame": 0, + "group": 2, + "source": "manual", + "type": "rectangle", "occluded": false, "outside": false, "z_order": 0, - "points": "[269.3786601426267, 211.47877807640333]", + "points": "[213.2763671875, 18.234375, 236.82363281250036, 44.371484375000364]", "rotation": 0.0, - "track": 15, - "frame": 6 + "parent": null } }, { - "model": "engine.profile", - "pk": 1, + "model": "engine.labeledshape", + "pk": 107, "fields": { - "user": [ - "admin1" - ], - "rating": 0.0 + "job": 28, + "label": 67, + "frame": 0, + "group": 3, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[567.9000000000015, 14.30859375, 595.3747291564941, 43.80000000000109]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.profile", - "pk": 2, + "model": "engine.labeledshape", + "pk": 108, "fields": { - "user": [ - "user1" - ], - "rating": 0.0 + "job": 28, + "label": 67, + "frame": 0, + "group": 3, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[603.9000000000015, 13.654296875, 632.0144577026367, 43.100000000000364]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.profile", - "pk": 3, + "model": "engine.labeledshape", + "pk": 109, "fields": { - "user": [ - "user2" - ], - "rating": 0.0 + "job": 28, + "label": 67, + "frame": 0, + "group": 3, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[643.8000000000011, 12.345703125, 671.9000015258789, 43.80000000000109]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.profile", - "pk": 4, + "model": "engine.labeledshape", + "pk": 110, "fields": { - "user": [ - "user3" - ], - "rating": 0.0 + "job": 28, + "label": 67, + "frame": 0, + "group": 3, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[681.0859375, 14.30859375, 711.8000000000011, 43.80000000000109]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.profile", - "pk": 5, + "model": "engine.labeledshape", + "pk": 111, "fields": { - "user": [ - "user4" - ], - "rating": 0.0 + "job": 28, + "label": 67, + "frame": 0, + "group": 0, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[112.5166015625, 47.0224609375, 138.03356448933664, 69.92229946158295]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.profile", - "pk": 6, + "model": "engine.labeledshape", + "pk": 112, "fields": { - "user": [ - "worker1" - ], - "rating": 0.0 + "job": 28, + "label": 67, + "frame": 0, + "group": 4, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[147.84737542554103, 47.02265780950256, 172.05577615100083, 72.5396207363392]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.profile", - "pk": 7, + "model": "engine.labeledshape", + "pk": 113, "fields": { - "user": [ - "worker2" - ], - "rating": 0.0 + "job": 28, + "label": 67, + "frame": 0, + "group": 4, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[181.21571156063328, 47.67693891019189, 205.42411228609308, 73.84818293771605]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.profile", - "pk": 8, + "model": "engine.labeledshape", + "pk": 114, "fields": { - "user": [ - "worker3" - ], - "rating": 0.0 + "job": 28, + "label": 67, + "frame": 0, + "group": 4, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[213.2754854943505, 47.67693891019189, 238.13816732049781, 73.84818293771605]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.profile", - "pk": 9, + "model": "engine.labeledshape", + "pk": 115, "fields": { - "user": [ - "worker4" - ], - "rating": 0.0 + "job": 28, + "label": 67, + "frame": 0, + "group": 0, + "source": "manual", + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[527.0, 319.60000000000036, 530.3000000000011, 372.60000000000036, 500.83202924677244, 375.2100579146554, 502.7948725488368, 319.5961643561677]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.profile", - "pk": 10, + "model": "engine.labeledshape", + "pk": 116, "fields": { - "user": [ - "business1" - ], - "rating": 0.0 + "job": 28, + "label": 67, + "frame": 0, + "group": 5, + "source": "manual", + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[672.5810546875, 219.0986328125, 692.2092511980463, 239.3813014118059, 671.2722559760259, 257.70117223107445, 655.5695095595111, 239.3813014118059]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.profile", - "pk": 11, + "model": "engine.labeledshape", + "pk": 117, "fields": { - "user": [ - "business2" - ], - "rating": 0.0 + "job": 28, + "label": 67, + "frame": 0, + "group": 5, + "source": "manual", + "type": "mask", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[21.0, 5.0, 32.0, 10.0, 30.0, 12.0, 27.0, 15.0, 25.0, 17.0, 23.0, 19.0, 21.0, 21.0, 19.0, 23.0, 17.0, 25.0, 14.0, 28.0, 12.0, 30.0, 10.0, 31.0, 9.0, 33.0, 8.0, 34.0, 6.0, 36.0, 5.0, 36.0, 5.0, 36.0, 4.0, 38.0, 2.0, 39.0, 2.0, 326.0, 2.0, 38.0, 3.0, 38.0, 3.0, 37.0, 5.0, 35.0, 6.0, 34.0, 8.0, 31.0, 10.0, 29.0, 13.0, 26.0, 16.0, 23.0, 19.0, 21.0, 21.0, 18.0, 24.0, 15.0, 27.0, 13.0, 29.0, 9.0, 22.0, 627.0, 244.0, 667.0, 284.0]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.profile", - "pk": 12, + "model": "engine.labeledshape", + "pk": 118, "fields": { - "user": [ - "business3" - ], - "rating": 0.0 + "job": 28, + "label": 67, + "frame": 0, + "group": 7, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[37.2744140625, 267.5166015625, 83.07409111066772, 328.36474392649325]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.profile", - "pk": 13, + "model": "engine.labeledshape", + "pk": 119, "fields": { - "user": [ - "business4" - ], - "rating": 0.0 + "job": 28, + "label": 67, + "frame": 0, + "group": 7, + "source": "manual", + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[46.43359375, 290.4150390625]", + "rotation": 0.0, + "parent": null } }, { - "model": "engine.profile", + "model": "engine.labeledshape", + "pk": 120, + "fields": { + "job": 28, + "label": 67, + "frame": 0, + "group": 7, + "source": "manual", + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[64.75390625, 302.1923828125]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 121, + "fields": { + "job": 28, + "label": 67, + "frame": 0, + "group": 7, + "source": "manual", + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[47.7421875, 309.3896484375]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 122, + "fields": { + "job": 28, + "label": 66, + "frame": 0, + "group": 0, + "source": "manual", + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[140.70000000000073, 338.8000000000011]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 123, + "fields": { + "job": 28, + "label": 67, + "frame": 0, + "group": 0, + "source": "manual", + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[225.0, 315.2000000000007]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 124, + "fields": { + "job": 28, + "label": 67, + "frame": 1, + "group": 0, + "source": "manual", + "type": "polygon", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[213.076171875, 27.58203125, 242.67217060073926, 54.958764913635605, 220.4750788758156, 73.4563413510732, 182.00011988594815, 63.097698546107495, 165.72225262100437, 25.36264261373799]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 125, + "fields": { + "job": 28, + "label": 67, + "frame": 1, + "group": 0, + "source": "manual", + "type": "ellipse", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[359.22314453125, 57.5439453125, 381.7900390625, 37.9365234375]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 126, + "fields": { + "job": 28, + "label": 67, + "frame": 1, + "group": 0, + "source": "manual", + "type": "cuboid", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[503.8579498973395, 51.35924962614954, 503.8579498973395, 95.65343307599687, 574.1487403595966, 51.25924962614954, 574.1487403595966, 95.65343307599687, 581.1778194058222, 46.91983128116481, 581.1778194058222, 91.11401473101215, 510.88702894356516, 46.91983128116481, 510.88702894356516, 91.11401473101215]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 127, + "fields": { + "job": 28, + "label": 67, + "frame": 1, + "group": 0, + "source": "manual", + "type": "mask", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[45.0, 8.0, 64.0, 5.0, 7.0, 11.0, 61.0, 7.0, 5.0, 14.0, 58.0, 9.0, 3.0, 16.0, 56.0, 11.0, 2.0, 18.0, 54.0, 11.0, 2.0, 20.0, 52.0, 35.0, 50.0, 36.0, 49.0, 38.0, 47.0, 39.0, 45.0, 42.0, 43.0, 43.0, 42.0, 45.0, 40.0, 46.0, 39.0, 47.0, 16.0, 7.0, 15.0, 48.0, 14.0, 9.0, 14.0, 48.0, 13.0, 12.0, 12.0, 13.0, 11.0, 25.0, 11.0, 14.0, 10.0, 13.0, 14.0, 24.0, 10.0, 15.0, 9.0, 13.0, 16.0, 23.0, 8.0, 17.0, 7.0, 14.0, 16.0, 23.0, 8.0, 18.0, 5.0, 15.0, 17.0, 23.0, 6.0, 19.0, 5.0, 15.0, 18.0, 23.0, 4.0, 21.0, 3.0, 16.0, 19.0, 23.0, 3.0, 22.0, 2.0, 16.0, 19.0, 23.0, 3.0, 40.0, 19.0, 24.0, 2.0, 40.0, 20.0, 23.0, 2.0, 41.0, 19.0, 23.0, 2.0, 41.0, 19.0, 11.0, 1.0, 12.0, 1.0, 11.0, 1.0, 29.0, 19.0, 11.0, 1.0, 12.0, 1.0, 11.0, 1.0, 29.0, 19.0, 11.0, 2.0, 23.0, 2.0, 29.0, 18.0, 11.0, 2.0, 23.0, 3.0, 28.0, 18.0, 11.0, 2.0, 24.0, 3.0, 28.0, 17.0, 11.0, 3.0, 24.0, 3.0, 27.0, 16.0, 12.0, 3.0, 25.0, 2.0, 28.0, 15.0, 12.0, 2.0, 12.0, 1.0, 43.0, 14.0, 12.0, 3.0, 12.0, 2.0, 43.0, 13.0, 12.0, 3.0, 12.0, 2.0, 44.0, 11.0, 13.0, 3.0, 12.0, 3.0, 43.0, 11.0, 13.0, 3.0, 11.0, 4.0, 43.0, 10.0, 13.0, 4.0, 11.0, 5.0, 44.0, 8.0, 12.0, 5.0, 11.0, 6.0, 44.0, 7.0, 12.0, 5.0, 11.0, 7.0, 45.0, 4.0, 12.0, 5.0, 12.0, 9.0, 14.0, 3.0, 27.0, 3.0, 12.0, 5.0, 12.0, 11.0, 9.0, 7.0, 41.0, 5.0, 12.0, 12.0, 7.0, 9.0, 40.0, 5.0, 12.0, 28.0, 39.0, 5.0, 12.0, 30.0, 38.0, 5.0, 11.0, 32.0, 37.0, 5.0, 11.0, 33.0, 35.0, 5.0, 12.0, 34.0, 33.0, 6.0, 12.0, 35.0, 32.0, 6.0, 11.0, 37.0, 31.0, 6.0, 11.0, 39.0, 29.0, 5.0, 12.0, 40.0, 28.0, 5.0, 12.0, 42.0, 26.0, 4.0, 13.0, 44.0, 40.0, 46.0, 39.0, 47.0, 38.0, 49.0, 35.0, 57.0, 27.0, 60.0, 24.0, 62.0, 22.0, 65.0, 19.0, 68.0, 15.0, 71.0, 13.0, 77.0, 7.0, 14.0, 23.0, 57.0, 107.0, 124.0]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 128, + "fields": { + "job": 28, + "label": 67, + "frame": 1, + "group": 0, + "source": "manual", + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[276.7080078125, 105.2724609375, 301.1245121430384, 121.5500400884066, 273.74809901563276, 137.08800429585244, 252.29091034820522, 122.28994314590454]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 129, + "fields": { + "job": 28, + "label": 67, + "frame": 1, + "group": 0, + "source": "manual", + "type": "polyline", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[393.6123046875, 109.7119140625, 417.28929217013683, 139.30771346834626, 432.08735332008655, 123.02984620340249, 461.68347561998416, 140.0476165258424]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshape", + "pk": 130, + "fields": { + "job": 28, + "label": 67, + "frame": 1, + "group": 0, + "source": "manual", + "type": "rectangle", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[420.9888074576247, 33.50157624620988, 450.58492975752233, 62.357795488609554]", + "rotation": 0.0, + "parent": null + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 1, + "fields": { + "spec": 2, + "value": "white", + "shape": 36 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 2, + "fields": { + "spec": 3, + "value": "val1", + "shape": 39 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 3, + "fields": { + "spec": 1, + "value": "mazda", + "shape": 42 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 4, + "fields": { + "spec": 7, + "value": "non-default", + "shape": 54 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 5, + "fields": { + "spec": 8, + "value": "black", + "shape": 55 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 6, + "fields": { + "spec": 9, + "value": "non-default", + "shape": 56 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 7, + "fields": { + "spec": 10, + "value": "black", + "shape": 57 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 8, + "fields": { + "spec": 13, + "value": "yy", + "shape": 64 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 9, + "fields": { + "spec": 14, + "value": "1", + "shape": 64 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 10, + "fields": { + "spec": 13, + "value": "yz", + "shape": 65 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 11, + "fields": { + "spec": 14, + "value": "2", + "shape": 65 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 12, + "fields": { + "spec": 13, + "value": "yy", + "shape": 66 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 13, + "fields": { + "spec": 14, + "value": "1", + "shape": 66 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 14, + "fields": { + "spec": 13, + "value": "yy", + "shape": 67 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 15, + "fields": { + "spec": 14, + "value": "1", + "shape": 67 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 16, + "fields": { + "spec": 13, + "value": "yy", + "shape": 68 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 17, + "fields": { + "spec": 14, + "value": "1", + "shape": 68 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 18, + "fields": { + "spec": 13, + "value": "yy", + "shape": 69 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 19, + "fields": { + "spec": 14, + "value": "1", + "shape": 69 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 20, + "fields": { + "spec": 13, + "value": "yy", + "shape": 71 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 21, + "fields": { + "spec": 14, + "value": "1", + "shape": 71 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 22, + "fields": { + "spec": 13, + "value": "yy", + "shape": 72 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 23, + "fields": { + "spec": 14, + "value": "1", + "shape": 72 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 24, + "fields": { + "spec": 13, + "value": "yy", + "shape": 75 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 25, + "fields": { + "spec": 14, + "value": "1", + "shape": 75 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 26, + "fields": { + "spec": 13, + "value": "yy", + "shape": 76 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 27, + "fields": { + "spec": 14, + "value": "1", + "shape": 76 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 28, + "fields": { + "spec": 13, + "value": "yy", + "shape": 77 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 29, + "fields": { + "spec": 14, + "value": "1", + "shape": 77 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 30, + "fields": { + "spec": 13, + "value": "yy", + "shape": 78 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 31, + "fields": { + "spec": 14, + "value": "1", + "shape": 78 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 32, + "fields": { + "spec": 13, + "value": "yy", + "shape": 79 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 33, + "fields": { + "spec": 14, + "value": "1", + "shape": 79 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 34, + "fields": { + "spec": 13, + "value": "yy", + "shape": 80 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 35, + "fields": { + "spec": 14, + "value": "1", + "shape": 80 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 36, + "fields": { + "spec": 13, + "value": "yy", + "shape": 81 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 37, + "fields": { + "spec": 14, + "value": "1", + "shape": 81 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 38, + "fields": { + "spec": 13, + "value": "yy", + "shape": 82 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 39, + "fields": { + "spec": 14, + "value": "1", + "shape": 82 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 40, + "fields": { + "spec": 13, + "value": "yy", + "shape": 83 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 41, + "fields": { + "spec": 14, + "value": "1", + "shape": 83 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 42, + "fields": { + "spec": 13, + "value": "yy", + "shape": 84 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 43, + "fields": { + "spec": 14, + "value": "1", + "shape": 84 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 44, + "fields": { + "spec": 13, + "value": "yy", + "shape": 85 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 45, + "fields": { + "spec": 14, + "value": "1", + "shape": 85 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 46, + "fields": { + "spec": 13, + "value": "yy", + "shape": 86 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 47, + "fields": { + "spec": 14, + "value": "1", + "shape": 86 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 48, + "fields": { + "spec": 13, + "value": "yy", + "shape": 87 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 49, + "fields": { + "spec": 14, + "value": "1", + "shape": 87 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 50, + "fields": { + "spec": 13, + "value": "yy", + "shape": 88 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 51, + "fields": { + "spec": 14, + "value": "1", + "shape": 88 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 52, + "fields": { + "spec": 13, + "value": "yy", + "shape": 90 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 53, + "fields": { + "spec": 14, + "value": "1", + "shape": 90 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 54, + "fields": { + "spec": 13, + "value": "yy", + "shape": 91 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 55, + "fields": { + "spec": 14, + "value": "1", + "shape": 91 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 56, + "fields": { + "spec": 13, + "value": "yy", + "shape": 93 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 57, + "fields": { + "spec": 14, + "value": "1", + "shape": 93 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 58, + "fields": { + "spec": 13, + "value": "yy", + "shape": 94 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 59, + "fields": { + "spec": 14, + "value": "1", + "shape": 94 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 60, + "fields": { + "spec": 13, + "value": "yy", + "shape": 95 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 61, + "fields": { + "spec": 14, + "value": "1", + "shape": 95 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 62, + "fields": { + "spec": 13, + "value": "yy", + "shape": 96 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 63, + "fields": { + "spec": 14, + "value": "1", + "shape": 96 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 64, + "fields": { + "spec": 13, + "value": "yy", + "shape": 98 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 65, + "fields": { + "spec": 14, + "value": "1", + "shape": 98 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 66, + "fields": { + "spec": 13, + "value": "yy", + "shape": 99 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 67, + "fields": { + "spec": 14, + "value": "1", + "shape": 99 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 68, + "fields": { + "spec": 13, + "value": "yy", + "shape": 100 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 69, + "fields": { + "spec": 14, + "value": "1", + "shape": 100 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 70, + "fields": { + "spec": 13, + "value": "yy", + "shape": 101 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 71, + "fields": { + "spec": 14, + "value": "1", + "shape": 101 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 72, + "fields": { + "spec": 13, + "value": "yy", + "shape": 102 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 73, + "fields": { + "spec": 14, + "value": "1", + "shape": 102 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 74, + "fields": { + "spec": 13, + "value": "yy", + "shape": 103 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 75, + "fields": { + "spec": 14, + "value": "1", + "shape": 103 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 76, + "fields": { + "spec": 13, + "value": "yy", + "shape": 104 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 77, + "fields": { + "spec": 14, + "value": "1", + "shape": 104 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 78, + "fields": { + "spec": 13, + "value": "yy", + "shape": 105 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 79, + "fields": { + "spec": 14, + "value": "1", + "shape": 105 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 80, + "fields": { + "spec": 13, + "value": "yy", + "shape": 106 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 81, + "fields": { + "spec": 14, + "value": "1", + "shape": 106 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 82, + "fields": { + "spec": 13, + "value": "yy", + "shape": 107 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 83, + "fields": { + "spec": 14, + "value": "1", + "shape": 107 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 84, + "fields": { + "spec": 13, + "value": "yy", + "shape": 108 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 85, + "fields": { + "spec": 14, + "value": "1", + "shape": 108 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 86, + "fields": { + "spec": 13, + "value": "yy", + "shape": 109 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 87, + "fields": { + "spec": 14, + "value": "1", + "shape": 109 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 88, + "fields": { + "spec": 13, + "value": "yy", + "shape": 110 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 89, + "fields": { + "spec": 14, + "value": "1", + "shape": 110 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 90, + "fields": { + "spec": 13, + "value": "yy", + "shape": 111 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 91, + "fields": { + "spec": 14, + "value": "1", + "shape": 111 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 92, + "fields": { + "spec": 13, + "value": "yy", + "shape": 112 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 93, + "fields": { + "spec": 14, + "value": "1", + "shape": 112 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 94, + "fields": { + "spec": 13, + "value": "yy", + "shape": 113 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 95, + "fields": { + "spec": 14, + "value": "1", + "shape": 113 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 96, + "fields": { + "spec": 13, + "value": "yy", + "shape": 114 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 97, + "fields": { + "spec": 14, + "value": "1", + "shape": 114 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 98, + "fields": { + "spec": 13, + "value": "yy", + "shape": 115 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 99, + "fields": { + "spec": 14, + "value": "1", + "shape": 115 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 100, + "fields": { + "spec": 13, + "value": "yy", + "shape": 116 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 101, + "fields": { + "spec": 14, + "value": "1", + "shape": 116 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 102, + "fields": { + "spec": 13, + "value": "yy", + "shape": 117 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 103, + "fields": { + "spec": 14, + "value": "1", + "shape": 117 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 104, + "fields": { + "spec": 13, + "value": "yy", + "shape": 118 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 105, + "fields": { + "spec": 14, + "value": "1", + "shape": 118 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 106, + "fields": { + "spec": 13, + "value": "yy", + "shape": 119 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 107, + "fields": { + "spec": 14, + "value": "1", + "shape": 119 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 108, + "fields": { + "spec": 13, + "value": "yy", + "shape": 120 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 109, + "fields": { + "spec": 14, + "value": "1", + "shape": 120 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 110, + "fields": { + "spec": 13, + "value": "yy", + "shape": 121 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 111, + "fields": { + "spec": 14, + "value": "1", + "shape": 121 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 112, + "fields": { + "spec": 13, + "value": "yy", + "shape": 123 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 113, + "fields": { + "spec": 14, + "value": "1", + "shape": 123 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 114, + "fields": { + "spec": 13, + "value": "yy", + "shape": 124 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 115, + "fields": { + "spec": 14, + "value": "1", + "shape": 124 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 116, + "fields": { + "spec": 13, + "value": "yy", + "shape": 125 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 117, + "fields": { + "spec": 14, + "value": "1", + "shape": 125 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 118, + "fields": { + "spec": 13, + "value": "yy", + "shape": 126 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 119, + "fields": { + "spec": 14, + "value": "1", + "shape": 126 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 120, + "fields": { + "spec": 13, + "value": "yy", + "shape": 127 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 121, + "fields": { + "spec": 14, + "value": "1", + "shape": 127 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 122, + "fields": { + "spec": 13, + "value": "yy", + "shape": 128 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 123, + "fields": { + "spec": 14, + "value": "1", + "shape": 128 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 124, + "fields": { + "spec": 13, + "value": "yy", + "shape": 129 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 125, + "fields": { + "spec": 14, + "value": "1", + "shape": 129 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 126, + "fields": { + "spec": 13, + "value": "yy", + "shape": 130 + } +}, +{ + "model": "engine.labeledshapeattributeval", + "pk": 127, + "fields": { + "spec": 14, + "value": "1", + "shape": 130 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 1, + "fields": { + "job": 18, + "label": 22, + "frame": 0, + "group": 0, + "source": "manual", + "parent": null + } +}, +{ + "model": "engine.labeledtrack", + "pk": 2, + "fields": { + "job": 18, + "label": 23, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 1 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 3, + "fields": { + "job": 18, + "label": 24, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 1 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 4, + "fields": { + "job": 18, + "label": 25, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 1 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 5, + "fields": { + "job": 18, + "label": 26, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 1 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 6, + "fields": { + "job": 25, + "label": 58, + "frame": 0, + "group": 0, + "source": "manual", + "parent": null + } +}, +{ + "model": "engine.labeledtrack", + "pk": 7, + "fields": { + "job": 25, + "label": 59, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 6 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 8, + "fields": { + "job": 25, + "label": 60, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 6 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 9, + "fields": { + "job": 25, + "label": 61, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 6 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 10, + "fields": { + "job": 25, + "label": 62, + "frame": 0, + "group": 0, + "source": "manual", + "parent": 6 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 11, + "fields": { + "job": 26, + "label": 58, + "frame": 6, + "group": 0, + "source": "manual", + "parent": null + } +}, +{ + "model": "engine.labeledtrack", + "pk": 12, + "fields": { + "job": 26, + "label": 59, + "frame": 6, + "group": 0, + "source": "manual", + "parent": 11 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 13, + "fields": { + "job": 26, + "label": 60, + "frame": 6, + "group": 0, + "source": "manual", + "parent": 11 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 14, + "fields": { + "job": 26, + "label": 61, + "frame": 6, + "group": 0, + "source": "manual", + "parent": 11 + } +}, +{ + "model": "engine.labeledtrack", + "pk": 15, + "fields": { + "job": 26, + "label": 62, + "frame": 6, + "group": 0, + "source": "manual", + "parent": 11 + } +}, +{ + "model": "engine.labeledtrackattributeval", + "pk": 3, + "fields": { + "spec": 2, + "value": "white", + "track": 1 + } +}, +{ + "model": "engine.labeledtrackattributeval", + "pk": 4, + "fields": { + "spec": 3, + "value": "val1", + "track": 4 + } +}, +{ + "model": "engine.trackedshape", + "pk": 1, + "fields": { + "type": "skeleton", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[]", + "rotation": 0.0, + "track": 1, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 2, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[381.9130434782637, 355.0592829431864]", + "rotation": 0.0, + "track": 2, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 3, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[461.9389738212561, 583.320176176868]", + "rotation": 0.0, + "track": 3, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 4, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[655.6465767436227, 281.7391304347839]", + "rotation": 0.0, + "track": 4, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 5, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[708.000000000003, 586.0869565217404]", + "rotation": 0.0, + "track": 5, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 6, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[137.0966796875, 156.11214469590232]", + "rotation": 0.0, + "track": 2, + "frame": 3 + } +}, +{ + "model": "engine.trackedshape", + "pk": 7, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[217.12261003049207, 384.3730379295848]", + "rotation": 0.0, + "track": 3, + "frame": 3 + } +}, +{ + "model": "engine.trackedshape", + "pk": 8, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[410.83021295285835, 82.7919921875]", + "rotation": 0.0, + "track": 4, + "frame": 3 + } +}, +{ + "model": "engine.trackedshape", + "pk": 9, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[463.1836362092399, 387.13981827445605]", + "rotation": 0.0, + "track": 5, + "frame": 3 + } +}, +{ + "model": "engine.trackedshape", + "pk": 10, + "fields": { + "type": "skeleton", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[]", + "rotation": 0.0, + "track": 6, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 11, + "fields": { + "type": "points", + "occluded": false, + "outside": true, + "z_order": 0, + "points": "[230.39103314621025, 149.98846070356873]", + "rotation": 0.0, + "track": 7, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 12, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[230.39103314621025, 149.98846070356873]", + "rotation": 0.0, + "track": 7, + "frame": 3 + } +}, +{ + "model": "engine.trackedshape", + "pk": 13, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[292.80597636674844, 284.1818841927473]", + "rotation": 0.0, + "track": 8, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 14, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[377.016603158851, 94.95407858346152]", + "rotation": 0.0, + "track": 9, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 15, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[499.86507710826913, 316.59939612801213]", + "rotation": 0.0, + "track": 10, + "frame": 0 + } +}, +{ + "model": "engine.trackedshape", + "pk": 16, + "fields": { + "type": "skeleton", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[]", + "rotation": 0.0, + "track": 11, + "frame": 6 + } +}, +{ + "model": "engine.trackedshape", + "pk": 17, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[92.95325643333308, 129.2954675940839]", + "rotation": 0.0, + "track": 12, + "frame": 6 + } +}, +{ + "model": "engine.trackedshape", + "pk": 18, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[133.81649280769233, 195.4883603907146]", + "rotation": 0.0, + "track": 13, + "frame": 6 + } +}, +{ + "model": "engine.trackedshape", + "pk": 19, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[188.94942364574058, 102.14894385926891]", + "rotation": 0.0, + "track": 14, + "frame": 6 + } +}, +{ + "model": "engine.trackedshape", + "pk": 20, + "fields": { + "type": "points", + "occluded": false, + "outside": false, + "z_order": 0, + "points": "[269.3786601426267, 211.47877807640333]", + "rotation": 0.0, + "track": 15, + "frame": 6 + } +}, +{ + "model": "engine.profile", + "pk": 1, + "fields": { + "user": [ + "admin1" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 2, + "fields": { + "user": [ + "user1" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 3, + "fields": { + "user": [ + "user2" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 4, + "fields": { + "user": [ + "user3" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 5, + "fields": { + "user": [ + "user4" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 6, + "fields": { + "user": [ + "worker1" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 7, + "fields": { + "user": [ + "worker2" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 8, + "fields": { + "user": [ + "worker3" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 9, + "fields": { + "user": [ + "worker4" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 10, + "fields": { + "user": [ + "business1" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 11, + "fields": { + "user": [ + "business2" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 12, + "fields": { + "user": [ + "business3" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 13, + "fields": { + "user": [ + "business4" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 14, + "fields": { + "user": [ + "dummy1" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 15, + "fields": { + "user": [ + "dummy2" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 16, + "fields": { + "user": [ + "dummy3" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 17, + "fields": { + "user": [ + "dummy4" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 18, + "fields": { + "user": [ + "admin2" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 19, + "fields": { + "user": [ + "user5" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 20, + "fields": { + "user": [ + "user6" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.profile", + "pk": 21, + "fields": { + "user": [ + "lonely_user" + ], + "rating": 0.0 + } +}, +{ + "model": "engine.issue", + "pk": 1, + "fields": { + "frame": 0, + "position": "[244.58581235698148, 319.63386727689067, 326.9656750572103, 192.76887871853796, 543.6247139588122, 175.4691075514893, 835.2494279176244, 360.0000000000018, 609.5286041189956, 586.544622425632, 364.0361328125, 528.87890625, 244.58581235698148, 319.63386727689067]", + "job": 7, + "owner": [ + "user1" + ], + "assignee": null, + "created_date": "2022-03-16T11:04:39.444Z", + "updated_date": null, + "resolved": true + } +}, +{ + "model": "engine.issue", + "pk": 2, + "fields": { + "frame": 0, + "position": "[98.48046875, 696.72265625, 326.1220703125, 841.5859375]", + "job": 9, + "owner": [ + "business2" + ], + "assignee": null, + "created_date": "2022-03-16T11:07:22.170Z", + "updated_date": null, + "resolved": false + } +}, +{ + "model": "engine.issue", + "pk": 3, + "fields": { + "frame": 5, + "position": "[108.1845703125, 235.0, 720.0087890625, 703.3505859375]", + "job": 16, + "owner": [ + "business2" + ], + "assignee": null, + "created_date": "2022-03-16T11:08:18.367Z", + "updated_date": null, + "resolved": false + } +}, +{ + "model": "engine.issue", + "pk": 4, + "fields": { + "frame": 5, + "position": "[295.36328125, 243.6044921875, 932.23046875, 561.4921875]", + "job": 10, + "owner": [ + "user1" + ], + "assignee": [ + "user1" + ], + "created_date": "2022-03-16T12:40:00.764Z", + "updated_date": null, + "resolved": false + } +}, +{ + "model": "engine.issue", + "pk": 5, + "fields": { + "frame": 0, + "position": "[65.6189987163034, 100.96585365853753, 142.12734274711147, 362.6243902439037]", + "job": 11, + "owner": [ + "user6" + ], + "assignee": null, + "created_date": "2022-03-16T12:49:29.369Z", + "updated_date": null, + "resolved": false + } +}, +{ + "model": "engine.comment", + "pk": 1, + "fields": { + "issue": 1, + "owner": [ + "user1" + ], + "message": "Why are we still here?", + "created_date": "2022-03-16T11:04:39.447Z", + "updated_date": "2022-03-16T11:04:39.447Z" + } +}, +{ + "model": "engine.comment", + "pk": 2, + "fields": { + "issue": 1, + "owner": [ + "user1" + ], + "message": "Just to suffer?", + "created_date": "2022-03-16T11:04:49.821Z", + "updated_date": "2022-03-16T11:04:49.821Z" + } +}, +{ + "model": "engine.comment", + "pk": 3, + "fields": { + "issue": 2, + "owner": [ + "business2" + ], + "message": "Something should be here", + "created_date": "2022-03-16T11:07:22.173Z", + "updated_date": "2022-03-16T11:07:22.173Z" + } +}, +{ + "model": "engine.comment", + "pk": 4, + "fields": { + "issue": 3, + "owner": [ + "business2" + ], + "message": "Another one issue", + "created_date": "2022-03-16T11:08:18.370Z", + "updated_date": "2022-03-16T11:08:18.370Z" + } +}, +{ + "model": "engine.comment", + "pk": 5, + "fields": { + "issue": 4, + "owner": [ + "user1" + ], + "message": "Issue with empty frame", + "created_date": "2022-03-16T12:40:00.767Z", + "updated_date": "2022-03-16T12:40:00.767Z" + } +}, +{ + "model": "engine.comment", + "pk": 6, + "fields": { + "issue": 5, + "owner": [ + "user6" + ], + "message": "Wrong position", + "created_date": "2022-03-16T12:49:29.372Z", + "updated_date": "2022-03-16T12:49:29.372Z" + } +}, +{ + "model": "engine.manifest", + "pk": 1, + "fields": { + "filename": "manifest.jsonl", + "cloud_storage": 1 + } +}, +{ + "model": "engine.manifest", + "pk": 2, + "fields": { + "filename": "sub/manifest.jsonl", + "cloud_storage": 2 + } +}, +{ + "model": "engine.manifest", + "pk": 3, + "fields": { + "filename": "manifest.jsonl", + "cloud_storage": 3 + } +}, +{ + "model": "engine.cloudstorage", + "pk": 1, + "fields": { + "provider_type": "AWS_S3_BUCKET", + "resource": "public", + "display_name": "Bucket 1", + "owner": [ + "user1" + ], + "created_date": "2022-03-17T07:22:49.519Z", + "updated_date": "2022-03-17T07:22:49.529Z", + "credentials": "", + "credentials_type": "ANONYMOUS_ACCESS", + "specific_attributes": "endpoint_url=http%3A%2F%2Fminio%3A9000", + "description": "", + "organization": null + } +}, +{ + "model": "engine.cloudstorage", + "pk": 2, + "fields": { + "provider_type": "AWS_S3_BUCKET", + "resource": "private", + "display_name": "Bucket 2", + "owner": [ + "business2" + ], + "created_date": "2022-03-17T07:23:59.305Z", + "updated_date": "2022-07-13T12:46:45.587Z", + "credentials": "minio_access_key minio_secret_key", + "credentials_type": "KEY_SECRET_KEY_PAIR", + "specific_attributes": "endpoint_url=http%3A%2F%2Fminio%3A9000", + "description": "", + "organization": 2 + } +}, +{ + "model": "engine.cloudstorage", + "pk": 3, + "fields": { + "provider_type": "AWS_S3_BUCKET", + "resource": "importexportbucket", + "display_name": "Import/Export bucket", + "owner": [ + "admin1" + ], + "created_date": "2022-06-29T12:56:18.257Z", + "updated_date": "2022-06-29T12:56:18.264Z", + "credentials": "minio_access_key minio_secret_key", + "credentials_type": "KEY_SECRET_KEY_PAIR", + "specific_attributes": "endpoint_url=http%3A%2F%2Fminio%3A9000", + "description": "Bucket for importing and exporting annotations and backups", + "organization": 2 + } +}, +{ + "model": "engine.storage", + "pk": 1, + "fields": { + "location": "cloud_storage", + "cloud_storage_id": 2 + } +}, +{ + "model": "engine.storage", + "pk": 2, + "fields": { + "location": "cloud_storage", + "cloud_storage_id": 2 + } +}, +{ + "model": "engine.storage", + "pk": 3, + "fields": { + "location": "cloud_storage", + "cloud_storage_id": 2 + } +}, +{ + "model": "engine.storage", + "pk": 4, + "fields": { + "location": "cloud_storage", + "cloud_storage_id": 2 + } +}, +{ + "model": "engine.storage", + "pk": 5, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 6, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 7, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 8, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 9, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 10, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 11, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 12, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 13, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", "pk": 14, "fields": { - "user": [ - "dummy1" + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 15, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 16, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 17, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 18, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 19, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 20, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 21, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 22, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 23, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 24, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 25, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 26, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 27, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 28, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 29, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 30, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 31, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 32, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 33, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "engine.storage", + "pk": 34, + "fields": { + "location": "local", + "cloud_storage_id": null + } +}, +{ + "model": "webhooks.webhook", + "pk": 1, + "fields": { + "target_url": "http://example.com/", + "description": "", + "events": "delete:task,update:task,create:task,update:job", + "type": "project", + "content_type": "application/json", + "secret": "", + "is_active": true, + "enable_ssl": true, + "created_date": "2022-09-28T12:16:28.311Z", + "updated_date": "2022-09-28T12:16:28.311Z", + "owner": [ + "user1" + ], + "project": 6, + "organization": null + } +}, +{ + "model": "webhooks.webhook", + "pk": 2, + "fields": { + "target_url": "http://example.com/", + "description": "", + "events": "delete:comment,update:issue,update:comment,update:job,update:project,delete:task,create:comment,delete:issue,update:task,create:task,create:issue", + "type": "project", + "content_type": "application/json", + "secret": "", + "is_active": true, + "enable_ssl": true, + "created_date": "2022-09-28T12:18:12.412Z", + "updated_date": "2022-09-28T12:18:12.412Z", + "owner": [ + "business1" + ], + "project": 1, + "organization": null + } +}, +{ + "model": "webhooks.webhook", + "pk": 3, + "fields": { + "target_url": "http://example.com", + "description": "", + "events": "update:issue,delete:issue,create:issue,update:project", + "type": "project", + "content_type": "application/json", + "secret": "", + "is_active": true, + "enable_ssl": true, + "created_date": "2022-09-28T12:19:49.744Z", + "updated_date": "2022-09-28T12:19:49.744Z", + "owner": [ + "user2" ], - "rating": 0.0 + "project": 3, + "organization": 2 } }, { - "model": "engine.profile", - "pk": 15, + "model": "webhooks.webhook", + "pk": 6, "fields": { - "user": [ - "dummy2" + "target_url": "http://example.com/", + "description": "", + "events": "delete:task,create:task,update:issue,update:membership,create:comment,delete:comment,update:job,update:comment,create:project,delete:invitation,create:invitation,update:project,update:task,delete:membership,delete:issue,delete:project,update:organization,create:issue", + "type": "organization", + "content_type": "application/json", + "secret": "", + "is_active": true, + "enable_ssl": true, + "created_date": "2022-09-29T08:00:48.440Z", + "updated_date": "2022-09-29T08:00:48.441Z", + "owner": [ + "admin1" ], - "rating": 0.0 + "project": null, + "organization": 1 } }, { - "model": "engine.profile", + "model": "quality_control.qualityreport", + "pk": 1, + "fields": { + "job": null, + "task": 22, + "parent": null, + "created_date": "2023-05-26T16:25:36.613Z", + "target_last_updated": "2023-05-26T16:17:02.635Z", + "gt_last_updated": "2023-05-26T16:16:50.630Z", + "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"oriented_lines\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share_percent\": 0.2727272727272727,\n \"frames\": [\n 0,\n 1,\n 2\n ],\n \"conflict_count\": 37,\n \"warning_count\": 15,\n \"error_count\": 22,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 9,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n },\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 8,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.6774193548387096,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.5384615384615384,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.4883720930232558,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.6363636363636364\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"mean_iou\": 0.1773115335759765,\n \"accuracy\": 0.5581395348837209\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"frame_count\": 3,\n \"mean_conflict_count\": 12.333333333333334\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 91,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 118,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 88,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 102,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 68,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 98,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 107,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 121,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 122,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 70,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 76,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 93,\n \"job_id\": 27,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 74,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 95,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 73,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 96,\n \"job_id\": 27,\n \"type\": \"ellipse\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 64,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 66,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 94,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 89,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 123,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 97,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_attributes\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 82,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 103,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 81,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 104,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 83,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 105,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 87,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 106,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 80,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 111,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 77,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 114,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 2,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.84,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.6363636363636364,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5675675675675675,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.7777777777777778\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"mean_iou\": 0.5319346007279295,\n \"accuracy\": 0.6486486486486487\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"conflict_count\": 31,\n \"warning_count\": 15,\n \"error_count\": 16,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 3,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 130,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 128,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 124,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 125,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 127,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 129,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 6,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" + } +}, +{ + "model": "quality_control.qualityreport", + "pk": 2, + "fields": { + "job": 27, + "task": null, + "parent": 1, + "created_date": "2023-05-26T16:25:36.616Z", + "target_last_updated": "2023-05-26T16:11:24.294Z", + "gt_last_updated": "2023-05-26T16:16:50.630Z", + "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"oriented_lines\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share_percent\": 0.2727272727272727,\n \"frames\": [\n 0,\n 1,\n 2\n ],\n \"conflict_count\": 37,\n \"warning_count\": 15,\n \"error_count\": 22,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 9,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n },\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 8,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.6774193548387096,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.5384615384615384,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.4883720930232558,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.6363636363636364\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"mean_iou\": 0.1773115335759765,\n \"accuracy\": 0.5581395348837209\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"frame_count\": 3,\n \"mean_conflict_count\": 12.333333333333334\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 91,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 118,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 88,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 102,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 68,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 98,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 107,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 121,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 122,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 70,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 76,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 93,\n \"job_id\": 27,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 74,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 95,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 73,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 96,\n \"job_id\": 27,\n \"type\": \"ellipse\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 64,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 66,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 94,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 89,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 123,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 97,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_attributes\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 82,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 103,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 81,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 104,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 83,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 105,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 87,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 106,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 80,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 111,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 77,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 114,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 2,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.84,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.6363636363636364,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5675675675675675,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.7777777777777778\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"mean_iou\": 0.5319346007279295,\n \"accuracy\": 0.6486486486486487\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"conflict_count\": 31,\n \"warning_count\": 15,\n \"error_count\": 16,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 3,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 130,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 128,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 124,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 125,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 127,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 129,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 6,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 1, + "fields": { + "report": 2, + "frame": 0, + "type": "low_overlap", + "importance": "warning" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 2, + "fields": { + "report": 2, + "frame": 0, + "type": "low_overlap", + "importance": "warning" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 3, + "fields": { + "report": 2, + "frame": 0, + "type": "low_overlap", + "importance": "warning" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 4, + "fields": { + "report": 2, + "frame": 0, + "type": "low_overlap", + "importance": "warning" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 5, + "fields": { + "report": 2, + "frame": 0, + "type": "low_overlap", + "importance": "warning" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 6, + "fields": { + "report": 2, + "frame": 0, + "type": "low_overlap", + "importance": "warning" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 7, + "fields": { + "report": 2, + "frame": 0, + "type": "missing_annotation", + "importance": "error" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 8, + "fields": { + "report": 2, + "frame": 0, + "type": "missing_annotation", + "importance": "error" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 9, + "fields": { + "report": 2, + "frame": 0, + "type": "missing_annotation", + "importance": "error" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 10, + "fields": { + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 11, + "fields": { + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 12, + "fields": { + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 13, + "fields": { + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 14, + "fields": { + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 15, + "fields": { + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" + } +}, +{ + "model": "quality_control.annotationconflict", "pk": 16, "fields": { - "user": [ - "dummy3" - ], - "rating": 0.0 + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 17, + "fields": { + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 18, + "fields": { + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 19, + "fields": { + "report": 2, + "frame": 0, + "type": "extra_annotation", + "importance": "error" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 20, + "fields": { + "report": 2, + "frame": 0, + "type": "mismatching_label", + "importance": "error" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 21, + "fields": { + "report": 2, + "frame": 0, + "type": "mismatching_label", + "importance": "error" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 22, + "fields": { + "report": 2, + "frame": 0, + "type": "mismatching_label", + "importance": "error" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 23, + "fields": { + "report": 2, + "frame": 0, + "type": "mismatching_direction", + "importance": "warning" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 24, + "fields": { + "report": 2, + "frame": 0, + "type": "covered_annotation", + "importance": "warning" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 25, + "fields": { + "report": 2, + "frame": 0, + "type": "mismatching_attributes", + "importance": "warning" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 26, + "fields": { + "report": 2, + "frame": 0, + "type": "mismatching_groups", + "importance": "warning" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 27, + "fields": { + "report": 2, + "frame": 0, + "type": "mismatching_groups", + "importance": "warning" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 28, + "fields": { + "report": 2, + "frame": 0, + "type": "mismatching_groups", + "importance": "warning" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 29, + "fields": { + "report": 2, + "frame": 0, + "type": "mismatching_groups", + "importance": "warning" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 30, + "fields": { + "report": 2, + "frame": 0, + "type": "mismatching_groups", + "importance": "warning" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 31, + "fields": { + "report": 2, + "frame": 0, + "type": "mismatching_groups", + "importance": "warning" + } +}, +{ + "model": "quality_control.annotationconflict", + "pk": 32, + "fields": { + "report": 2, + "frame": 1, + "type": "missing_annotation", + "importance": "error" } }, { - "model": "engine.profile", - "pk": 17, + "model": "quality_control.annotationconflict", + "pk": 33, "fields": { - "user": [ - "dummy4" - ], - "rating": 0.0 + "report": 2, + "frame": 1, + "type": "missing_annotation", + "importance": "error" } }, { - "model": "engine.profile", - "pk": 18, + "model": "quality_control.annotationconflict", + "pk": 34, "fields": { - "user": [ - "admin2" - ], - "rating": 0.0 + "report": 2, + "frame": 1, + "type": "missing_annotation", + "importance": "error" } }, { - "model": "engine.profile", - "pk": 19, + "model": "quality_control.annotationconflict", + "pk": 35, "fields": { - "user": [ - "user5" - ], - "rating": 0.0 + "report": 2, + "frame": 1, + "type": "missing_annotation", + "importance": "error" } }, { - "model": "engine.profile", - "pk": 20, + "model": "quality_control.annotationconflict", + "pk": 36, "fields": { - "user": [ - "user6" - ], - "rating": 0.0 + "report": 2, + "frame": 1, + "type": "missing_annotation", + "importance": "error" } }, { - "model": "engine.profile", - "pk": 21, + "model": "quality_control.annotationconflict", + "pk": 37, "fields": { - "user": [ - "lonely_user" - ], - "rating": 0.0 + "report": 2, + "frame": 1, + "type": "missing_annotation", + "importance": "error" } }, { - "model": "engine.issue", + "model": "quality_control.annotationid", "pk": 1, "fields": { - "frame": 0, - "position": "[244.58581235698148, 319.63386727689067, 326.9656750572103, 192.76887871853796, 543.6247139588122, 175.4691075514893, 835.2494279176244, 360.0000000000018, 609.5286041189956, 586.544622425632, 364.0361328125, 528.87890625, 244.58581235698148, 319.63386727689067]", - "job": 7, - "owner": [ - "user1" - ], - "assignee": null, - "created_date": "2022-03-16T11:04:39.444Z", - "updated_date": null, - "resolved": true + "conflict": 1, + "obj_id": 65, + "job_id": 27, + "type": "rectangle" } }, { - "model": "engine.issue", + "model": "quality_control.annotationid", "pk": 2, "fields": { - "frame": 0, - "position": "[98.48046875, 696.72265625, 326.1220703125, 841.5859375]", - "job": 9, - "owner": [ - "business2" - ], - "assignee": null, - "created_date": "2022-03-16T11:07:22.170Z", - "updated_date": null, - "resolved": false + "conflict": 1, + "obj_id": 101, + "job_id": 28, + "type": "rectangle" } }, { - "model": "engine.issue", + "model": "quality_control.annotationid", "pk": 3, "fields": { - "frame": 5, - "position": "[108.1845703125, 235.0, 720.0087890625, 703.3505859375]", - "job": 16, - "owner": [ - "business2" - ], - "assignee": null, - "created_date": "2022-03-16T11:08:18.367Z", - "updated_date": null, - "resolved": false + "conflict": 2, + "obj_id": 91, + "job_id": 27, + "type": "rectangle" } }, { - "model": "engine.issue", + "model": "quality_control.annotationid", "pk": 4, "fields": { - "frame": 5, - "position": "[295.36328125, 243.6044921875, 932.23046875, 561.4921875]", - "job": 10, - "owner": [ - "user1" - ], - "assignee": [ - "user1" - ], - "created_date": "2022-03-16T12:40:00.764Z", - "updated_date": null, - "resolved": false + "conflict": 2, + "obj_id": 118, + "job_id": 28, + "type": "rectangle" } }, { - "model": "engine.issue", + "model": "quality_control.annotationid", "pk": 5, "fields": { - "frame": 0, - "position": "[65.6189987163034, 100.96585365853753, 142.12734274711147, 362.6243902439037]", - "job": 11, - "owner": [ - "user6" - ], - "assignee": null, - "created_date": "2022-03-16T12:49:29.369Z", - "updated_date": null, - "resolved": false + "conflict": 3, + "obj_id": 88, + "job_id": 27, + "type": "points" } }, { - "model": "engine.comment", - "pk": 1, + "model": "quality_control.annotationid", + "pk": 6, "fields": { - "issue": 1, - "owner": [ - "user1" - ], - "message": "Why are we still here?", - "created_date": "2022-03-16T11:04:39.447Z", - "updated_date": "2022-03-16T11:04:39.447Z" + "conflict": 3, + "obj_id": 102, + "job_id": 28, + "type": "points" } }, { - "model": "engine.comment", - "pk": 2, + "model": "quality_control.annotationid", + "pk": 7, "fields": { - "issue": 1, - "owner": [ - "user1" - ], - "message": "Just to suffer?", - "created_date": "2022-03-16T11:04:49.821Z", - "updated_date": "2022-03-16T11:04:49.821Z" + "conflict": 4, + "obj_id": 68, + "job_id": 27, + "type": "polygon" } }, { - "model": "engine.comment", - "pk": 3, + "model": "quality_control.annotationid", + "pk": 8, "fields": { - "issue": 2, - "owner": [ - "business2" - ], - "message": "Something should be here", - "created_date": "2022-03-16T11:07:22.173Z", - "updated_date": "2022-03-16T11:07:22.173Z" + "conflict": 4, + "obj_id": 98, + "job_id": 28, + "type": "polygon" } }, { - "model": "engine.comment", - "pk": 4, + "model": "quality_control.annotationid", + "pk": 9, "fields": { - "issue": 3, - "owner": [ - "business2" - ], - "message": "Another one issue", - "created_date": "2022-03-16T11:08:18.370Z", - "updated_date": "2022-03-16T11:08:18.370Z" + "conflict": 5, + "obj_id": 67, + "job_id": 27, + "type": "polyline" } }, { - "model": "engine.comment", - "pk": 5, + "model": "quality_control.annotationid", + "pk": 10, "fields": { - "issue": 4, - "owner": [ - "user1" - ], - "message": "Issue with empty frame", - "created_date": "2022-03-16T12:40:00.767Z", - "updated_date": "2022-03-16T12:40:00.767Z" + "conflict": 5, + "obj_id": 99, + "job_id": 28, + "type": "polyline" } }, { - "model": "engine.comment", - "pk": 6, + "model": "quality_control.annotationid", + "pk": 11, "fields": { - "issue": 5, - "owner": [ - "user6" - ], - "message": "Wrong position", - "created_date": "2022-03-16T12:49:29.372Z", - "updated_date": "2022-03-16T12:49:29.372Z" + "conflict": 6, + "obj_id": 92, + "job_id": 27, + "type": "points" } }, { - "model": "engine.manifest", - "pk": 1, + "model": "quality_control.annotationid", + "pk": 12, "fields": { - "filename": "manifest.jsonl", - "cloud_storage": 1 + "conflict": 6, + "obj_id": 119, + "job_id": 28, + "type": "points" } }, { - "model": "engine.manifest", - "pk": 2, + "model": "quality_control.annotationid", + "pk": 13, "fields": { - "filename": "sub/manifest.jsonl", - "cloud_storage": 2 + "conflict": 7, + "obj_id": 107, + "job_id": 28, + "type": "rectangle" } }, { - "model": "engine.manifest", - "pk": 3, + "model": "quality_control.annotationid", + "pk": 14, "fields": { - "filename": "manifest.jsonl", - "cloud_storage": 3 + "conflict": 8, + "obj_id": 121, + "job_id": 28, + "type": "points" } }, { - "model": "engine.cloudstorage", - "pk": 1, + "model": "quality_control.annotationid", + "pk": 15, "fields": { - "provider_type": "AWS_S3_BUCKET", - "resource": "public", - "display_name": "Bucket 1", - "owner": [ - "user1" - ], - "created_date": "2022-03-17T07:22:49.519Z", - "updated_date": "2022-03-17T07:22:49.529Z", - "credentials": "", - "credentials_type": "ANONYMOUS_ACCESS", - "specific_attributes": "endpoint_url=http%3A%2F%2Fminio%3A9000", - "description": "", - "organization": null + "conflict": 9, + "obj_id": 122, + "job_id": 28, + "type": "points" } }, { - "model": "engine.cloudstorage", - "pk": 2, + "model": "quality_control.annotationid", + "pk": 16, "fields": { - "provider_type": "AWS_S3_BUCKET", - "resource": "private", - "display_name": "Bucket 2", - "owner": [ - "business2" - ], - "created_date": "2022-03-17T07:23:59.305Z", - "updated_date": "2022-07-13T12:46:45.587Z", - "credentials": "minio_access_key minio_secret_key", - "credentials_type": "KEY_SECRET_KEY_PAIR", - "specific_attributes": "endpoint_url=http%3A%2F%2Fminio%3A9000", - "description": "", - "organization": 2 + "conflict": 10, + "obj_id": 70, + "job_id": 27, + "type": "rectangle" } }, { - "model": "engine.cloudstorage", - "pk": 3, + "model": "quality_control.annotationid", + "pk": 17, "fields": { - "provider_type": "AWS_S3_BUCKET", - "resource": "importexportbucket", - "display_name": "Import/Export bucket", - "owner": [ - "admin1" - ], - "created_date": "2022-06-29T12:56:18.257Z", - "updated_date": "2022-06-29T12:56:18.264Z", - "credentials": "minio_access_key minio_secret_key", - "credentials_type": "KEY_SECRET_KEY_PAIR", - "specific_attributes": "endpoint_url=http%3A%2F%2Fminio%3A9000", - "description": "Bucket for importing and exporting annotations and backups", - "organization": 2 + "conflict": 11, + "obj_id": 76, + "job_id": 27, + "type": "rectangle" } }, { - "model": "engine.storage", - "pk": 1, + "model": "quality_control.annotationid", + "pk": 18, "fields": { - "location": "cloud_storage", - "cloud_storage_id": 2 + "conflict": 12, + "obj_id": 93, + "job_id": 27, + "type": "points" } }, { - "model": "engine.storage", - "pk": 2, + "model": "quality_control.annotationid", + "pk": 19, "fields": { - "location": "cloud_storage", - "cloud_storage_id": 2 + "conflict": 13, + "obj_id": 74, + "job_id": 27, + "type": "polygon" } }, { - "model": "engine.storage", - "pk": 3, + "model": "quality_control.annotationid", + "pk": 20, "fields": { - "location": "cloud_storage", - "cloud_storage_id": 2 + "conflict": 14, + "obj_id": 95, + "job_id": 27, + "type": "polygon" } }, { - "model": "engine.storage", - "pk": 4, + "model": "quality_control.annotationid", + "pk": 21, "fields": { - "location": "cloud_storage", - "cloud_storage_id": 2 + "conflict": 15, + "obj_id": 73, + "job_id": 27, + "type": "polygon" } }, { - "model": "engine.storage", - "pk": 5, + "model": "quality_control.annotationid", + "pk": 22, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 16, + "obj_id": 96, + "job_id": 27, + "type": "ellipse" } }, { - "model": "engine.storage", - "pk": 6, + "model": "quality_control.annotationid", + "pk": 23, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 17, + "obj_id": 64, + "job_id": 27, + "type": "polyline" } }, { - "model": "engine.storage", - "pk": 7, + "model": "quality_control.annotationid", + "pk": 24, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 18, + "obj_id": 66, + "job_id": 27, + "type": "polyline" } }, { - "model": "engine.storage", - "pk": 8, + "model": "quality_control.annotationid", + "pk": 25, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 19, + "obj_id": 94, + "job_id": 27, + "type": "polyline" } }, { - "model": "engine.storage", - "pk": 9, + "model": "quality_control.annotationid", + "pk": 26, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 20, + "obj_id": 89, + "job_id": 27, + "type": "points" } }, { - "model": "engine.storage", - "pk": 10, + "model": "quality_control.annotationid", + "pk": 27, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 20, + "obj_id": 123, + "job_id": 28, + "type": "points" } }, { - "model": "engine.storage", - "pk": 11, + "model": "quality_control.annotationid", + "pk": 28, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 21, + "obj_id": 92, + "job_id": 27, + "type": "points" } }, { - "model": "engine.storage", - "pk": 12, + "model": "quality_control.annotationid", + "pk": 29, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 21, + "obj_id": 119, + "job_id": 28, + "type": "points" } }, { - "model": "engine.storage", - "pk": 13, + "model": "quality_control.annotationid", + "pk": 30, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 22, + "obj_id": 69, + "job_id": 27, + "type": "mask" } }, { - "model": "engine.storage", - "pk": 14, + "model": "quality_control.annotationid", + "pk": 31, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 22, + "obj_id": 97, + "job_id": 28, + "type": "polygon" } }, { - "model": "engine.storage", - "pk": 15, + "model": "quality_control.annotationid", + "pk": 32, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 23, + "obj_id": 67, + "job_id": 27, + "type": "polyline" } }, { - "model": "engine.storage", - "pk": 16, + "model": "quality_control.annotationid", + "pk": 33, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 23, + "obj_id": 99, + "job_id": 28, + "type": "polyline" } }, { - "model": "engine.storage", - "pk": 17, + "model": "quality_control.annotationid", + "pk": 34, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 24, + "obj_id": 69, + "job_id": 27, + "type": "mask" } }, { - "model": "engine.storage", - "pk": 18, + "model": "quality_control.annotationid", + "pk": 35, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 25, + "obj_id": 65, + "job_id": 27, + "type": "rectangle" } }, { - "model": "engine.storage", - "pk": 19, + "model": "quality_control.annotationid", + "pk": 36, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 25, + "obj_id": 101, + "job_id": 28, + "type": "rectangle" } }, { - "model": "engine.storage", - "pk": 20, + "model": "quality_control.annotationid", + "pk": 37, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 26, + "obj_id": 82, + "job_id": 27, + "type": "rectangle" } }, { - "model": "engine.storage", - "pk": 21, + "model": "quality_control.annotationid", + "pk": 38, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 26, + "obj_id": 103, + "job_id": 28, + "type": "rectangle" } }, { - "model": "engine.storage", - "pk": 22, + "model": "quality_control.annotationid", + "pk": 39, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 27, + "obj_id": 81, + "job_id": 27, + "type": "rectangle" } }, { - "model": "engine.storage", - "pk": 23, + "model": "quality_control.annotationid", + "pk": 40, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 27, + "obj_id": 104, + "job_id": 28, + "type": "rectangle" } }, { - "model": "engine.storage", - "pk": 24, + "model": "quality_control.annotationid", + "pk": 41, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 28, + "obj_id": 83, + "job_id": 27, + "type": "rectangle" } }, { - "model": "engine.storage", - "pk": 25, + "model": "quality_control.annotationid", + "pk": 42, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 28, + "obj_id": 105, + "job_id": 28, + "type": "rectangle" } }, { - "model": "engine.storage", - "pk": 26, + "model": "quality_control.annotationid", + "pk": 43, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 29, + "obj_id": 87, + "job_id": 27, + "type": "rectangle" } }, { - "model": "engine.storage", - "pk": 27, + "model": "quality_control.annotationid", + "pk": 44, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 29, + "obj_id": 106, + "job_id": 28, + "type": "rectangle" } }, { - "model": "engine.storage", - "pk": 28, + "model": "quality_control.annotationid", + "pk": 45, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 30, + "obj_id": 80, + "job_id": 27, + "type": "rectangle" } }, { - "model": "engine.storage", - "pk": 29, + "model": "quality_control.annotationid", + "pk": 46, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 30, + "obj_id": 111, + "job_id": 28, + "type": "rectangle" } }, { - "model": "engine.storage", - "pk": 30, + "model": "quality_control.annotationid", + "pk": 47, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 31, + "obj_id": 77, + "job_id": 27, + "type": "rectangle" } }, { - "model": "engine.storage", - "pk": 31, + "model": "quality_control.annotationid", + "pk": 48, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 31, + "obj_id": 114, + "job_id": 28, + "type": "rectangle" } }, { - "model": "engine.storage", - "pk": 32, + "model": "quality_control.annotationid", + "pk": 49, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 32, + "obj_id": 130, + "job_id": 28, + "type": "rectangle" } }, { - "model": "engine.storage", - "pk": 33, + "model": "quality_control.annotationid", + "pk": 50, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 33, + "obj_id": 128, + "job_id": 28, + "type": "points" } }, { - "model": "engine.storage", - "pk": 34, + "model": "quality_control.annotationid", + "pk": 51, "fields": { - "location": "local", - "cloud_storage_id": null + "conflict": 34, + "obj_id": 124, + "job_id": 28, + "type": "polygon" } }, { - "model": "webhooks.webhook", - "pk": 1, + "model": "quality_control.annotationid", + "pk": 52, "fields": { - "target_url": "http://example.com/", - "description": "", - "events": "delete:task,update:task,create:task,update:job", - "type": "project", - "content_type": "application/json", - "secret": "", - "is_active": true, - "enable_ssl": true, - "created_date": "2022-09-28T12:16:28.311Z", - "updated_date": "2022-09-28T12:16:28.311Z", - "owner": [ - "user1" - ], - "project": 6, - "organization": null + "conflict": 35, + "obj_id": 125, + "job_id": 28, + "type": "ellipse" } }, { - "model": "webhooks.webhook", - "pk": 2, + "model": "quality_control.annotationid", + "pk": 53, "fields": { - "target_url": "http://example.com/", - "description": "", - "events": "delete:comment,update:issue,update:comment,update:job,update:project,delete:task,create:comment,delete:issue,update:task,create:task,create:issue", - "type": "project", - "content_type": "application/json", - "secret": "", - "is_active": true, - "enable_ssl": true, - "created_date": "2022-09-28T12:18:12.412Z", - "updated_date": "2022-09-28T12:18:12.412Z", - "owner": [ - "business1" - ], - "project": 1, - "organization": null + "conflict": 36, + "obj_id": 127, + "job_id": 28, + "type": "mask" } }, { - "model": "webhooks.webhook", - "pk": 3, + "model": "quality_control.annotationid", + "pk": 54, "fields": { - "target_url": "http://example.com", - "description": "", - "events": "update:issue,delete:issue,create:issue,update:project", - "type": "project", - "content_type": "application/json", - "secret": "", - "is_active": true, - "enable_ssl": true, - "created_date": "2022-09-28T12:19:49.744Z", - "updated_date": "2022-09-28T12:19:49.744Z", - "owner": [ - "user2" - ], - "project": 3, - "organization": 2 + "conflict": 37, + "obj_id": 129, + "job_id": 28, + "type": "polyline" } }, { - "model": "webhooks.webhook", + "model": "quality_control.qualitysettings", + "pk": 1, + "fields": { + "task": 2, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 2, + "fields": { + "task": 5, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 3, + "fields": { + "task": 6, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 4, + "fields": { + "task": 7, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 5, + "fields": { + "task": 8, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", "pk": 6, "fields": { - "target_url": "http://example.com/", - "description": "", - "events": "delete:task,create:task,update:issue,update:membership,create:comment,delete:comment,update:job,update:comment,create:project,delete:invitation,create:invitation,update:project,update:task,delete:membership,delete:issue,delete:project,update:organization,create:issue", - "type": "organization", - "content_type": "application/json", - "secret": "", - "is_active": true, - "enable_ssl": true, - "created_date": "2022-09-29T08:00:48.440Z", - "updated_date": "2022-09-29T08:00:48.441Z", - "owner": [ - "admin1" - ], - "project": null, - "organization": 1 + "task": 9, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 7, + "fields": { + "task": 11, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 8, + "fields": { + "task": 12, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 9, + "fields": { + "task": 13, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 10, + "fields": { + "task": 14, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 11, + "fields": { + "task": 15, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 12, + "fields": { + "task": 17, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 13, + "fields": { + "task": 18, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 14, + "fields": { + "task": 19, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 15, + "fields": { + "task": 20, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 16, + "fields": { + "task": 21, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true + } +}, +{ + "model": "quality_control.qualitysettings", + "pk": 17, + "fields": { + "task": 22, + "iou_threshold": 0.4, + "oks_sigma": 0.09, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "oriented_lines": true, + "line_orientation_threshold": 0.1, + "compare_groups": true, + "group_match_threshold": 0.5, + "check_covered_annotations": true, + "object_visibility_threshold": 0.05, + "panoptic_comparison": true, + "compare_attributes": true } }, { diff --git a/tests/python/shared/assets/jobs.json b/tests/python/shared/assets/jobs.json index f05e0f8a0966..fdb0b7ca0d8a 100644 --- a/tests/python/shared/assets/jobs.json +++ b/tests/python/shared/assets/jobs.json @@ -6,18 +6,18 @@ { "assignee": null, "bug_tracker": null, - "created_date": "2023-04-14T14:40:10.333000Z", + "created_date": "2023-05-26T16:11:23.946000Z", "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", "dimension": "2d", - "frame_count": 4, + "frame_count": 3, "id": 28, "issues": { "count": 0, "url": "http://localhost:8080/api/issues?job_id=28" }, "labels": { - "count": 3, + "count": 2, "url": "http://localhost:8080/api/labels?job_id=28" }, "mode": "annotation", @@ -29,13 +29,13 @@ "stop_frame": 10, "task_id": 22, "type": "ground_truth", - "updated_date": "2023-05-23T14:44:02.697000Z", + "updated_date": "2023-05-26T16:16:50.630000Z", "url": "http://localhost:8080/api/jobs/28" }, { "assignee": null, "bug_tracker": null, - "created_date": "2023-04-14T14:40:10.333000Z", + "created_date": "2023-05-26T16:11:23.880000Z", "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", "dimension": "2d", @@ -46,19 +46,19 @@ "url": "http://localhost:8080/api/issues?job_id=27" }, "labels": { - "count": 3, + "count": 2, "url": "http://localhost:8080/api/labels?job_id=27" }, "mode": "annotation", "project_id": null, "stage": "annotation", "start_frame": 0, - "state": "in progress", - "status": "annotation", + "state": "new", + "status": "validation", "stop_frame": 10, "task_id": 22, "type": "annotation", - "updated_date": "2023-05-23T14:45:08.385000Z", + "updated_date": "2023-05-26T16:11:24.294000Z", "url": "http://localhost:8080/api/jobs/27" }, { diff --git a/tests/python/shared/assets/labels.json b/tests/python/shared/assets/labels.json index e22e8aa87e42..91fb9bd0b54a 100644 --- a/tests/python/shared/assets/labels.json +++ b/tests/python/shared/assets/labels.json @@ -1,5 +1,5 @@ { - "count": 36, + "count": 38, "next": null, "previous": null, "results": [ @@ -717,6 +717,50 @@ "svg": "", "task_id": 8, "type": "skeleton" + }, + { + "attributes": [], + "color": "#406040", + "has_parent": false, + "id": 66, + "name": "dog", + "parent_id": null, + "sublabels": [], + "task_id": 22, + "type": "any" + }, + { + "attributes": [ + { + "default_value": "yy", + "id": 13, + "input_type": "text", + "mutable": false, + "name": "x", + "values": [ + "yy" + ] + }, + { + "default_value": "1", + "id": 14, + "input_type": "radio", + "mutable": false, + "name": "y", + "values": [ + "1", + "2" + ] + } + ], + "color": "#6080c0", + "has_parent": false, + "id": 67, + "name": "cat", + "parent_id": null, + "sublabels": [], + "task_id": 22, + "type": "any" } ] } \ No newline at end of file diff --git a/tests/python/shared/assets/quality_conflicts.json b/tests/python/shared/assets/quality_conflicts.json index b683e8ba7f6e..3f4bd5fbe82d 100644 --- a/tests/python/shared/assets/quality_conflicts.json +++ b/tests/python/shared/assets/quality_conflicts.json @@ -7,12 +7,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 664, + "obj_id": 65, "type": "rectangle" }, { "job_id": 28, - "obj_id": 624, + "obj_id": 101, "type": "rectangle" } ], @@ -26,12 +26,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 638, + "obj_id": 91, "type": "rectangle" }, { "job_id": 28, - "obj_id": 607, + "obj_id": 118, "type": "rectangle" } ], @@ -45,12 +45,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 661, + "obj_id": 88, "type": "points" }, { "job_id": 28, - "obj_id": 608, + "obj_id": 102, "type": "points" } ], @@ -64,12 +64,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 641, + "obj_id": 68, "type": "polygon" }, { "job_id": 28, - "obj_id": 604, + "obj_id": 98, "type": "polygon" } ], @@ -83,12 +83,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 640, + "obj_id": 67, "type": "polyline" }, { "job_id": 28, - "obj_id": 605, + "obj_id": 99, "type": "polyline" } ], @@ -102,12 +102,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 665, + "obj_id": 92, "type": "points" }, { "job_id": 28, - "obj_id": 625, + "obj_id": 119, "type": "points" } ], @@ -121,7 +121,7 @@ "annotation_ids": [ { "job_id": 28, - "obj_id": 613, + "obj_id": 107, "type": "rectangle" } ], @@ -135,7 +135,7 @@ "annotation_ids": [ { "job_id": 28, - "obj_id": 627, + "obj_id": 121, "type": "points" } ], @@ -149,7 +149,7 @@ "annotation_ids": [ { "job_id": 28, - "obj_id": 628, + "obj_id": 122, "type": "points" } ], @@ -163,7 +163,7 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 644, + "obj_id": 70, "type": "rectangle" } ], @@ -177,7 +177,7 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 660, + "obj_id": 76, "type": "rectangle" } ], @@ -191,7 +191,7 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 666, + "obj_id": 93, "type": "points" } ], @@ -205,7 +205,7 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 658, + "obj_id": 74, "type": "polygon" } ], @@ -219,7 +219,7 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 668, + "obj_id": 95, "type": "polygon" } ], @@ -233,7 +233,7 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 659, + "obj_id": 73, "type": "polygon" } ], @@ -247,7 +247,7 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 669, + "obj_id": 96, "type": "ellipse" } ], @@ -261,7 +261,7 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 637, + "obj_id": 64, "type": "polyline" } ], @@ -275,7 +275,7 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 639, + "obj_id": 66, "type": "polyline" } ], @@ -289,7 +289,7 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 667, + "obj_id": 94, "type": "polyline" } ], @@ -303,12 +303,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 662, + "obj_id": 89, "type": "points" }, { "job_id": 28, - "obj_id": 629, + "obj_id": 123, "type": "points" } ], @@ -322,12 +322,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 665, + "obj_id": 92, "type": "points" }, { "job_id": 28, - "obj_id": 625, + "obj_id": 119, "type": "points" } ], @@ -341,12 +341,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 642, + "obj_id": 69, "type": "mask" }, { "job_id": 28, - "obj_id": 603, + "obj_id": 97, "type": "polygon" } ], @@ -360,12 +360,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 640, + "obj_id": 67, "type": "polyline" }, { "job_id": 28, - "obj_id": 605, + "obj_id": 99, "type": "polyline" } ], @@ -379,7 +379,7 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 642, + "obj_id": 69, "type": "mask" } ], @@ -393,12 +393,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 671, + "obj_id": 65, "type": "rectangle" }, { "job_id": 28, - "obj_id": 670, + "obj_id": 101, "type": "rectangle" } ], @@ -412,12 +412,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 652, + "obj_id": 82, "type": "rectangle" }, { "job_id": 28, - "obj_id": 611, + "obj_id": 103, "type": "rectangle" } ], @@ -431,12 +431,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 656, + "obj_id": 81, "type": "rectangle" }, { "job_id": 28, - "obj_id": 612, + "obj_id": 104, "type": "rectangle" } ], @@ -450,12 +450,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 646, + "obj_id": 83, "type": "rectangle" }, { "job_id": 28, - "obj_id": 620, + "obj_id": 105, "type": "rectangle" } ], @@ -469,12 +469,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 649, + "obj_id": 87, "type": "rectangle" }, { "job_id": 28, - "obj_id": 617, + "obj_id": 106, "type": "rectangle" } ], @@ -488,12 +488,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 650, + "obj_id": 80, "type": "rectangle" }, { "job_id": 28, - "obj_id": 610, + "obj_id": 111, "type": "rectangle" } ], @@ -507,12 +507,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 651, + "obj_id": 77, "type": "rectangle" }, { "job_id": 28, - "obj_id": 609, + "obj_id": 114, "type": "rectangle" } ], @@ -526,7 +526,7 @@ "annotation_ids": [ { "job_id": 28, - "obj_id": 636, + "obj_id": 130, "type": "rectangle" } ], @@ -540,7 +540,7 @@ "annotation_ids": [ { "job_id": 28, - "obj_id": 634, + "obj_id": 128, "type": "points" } ], @@ -554,7 +554,7 @@ "annotation_ids": [ { "job_id": 28, - "obj_id": 630, + "obj_id": 124, "type": "polygon" } ], @@ -568,8 +568,8 @@ "annotation_ids": [ { "job_id": 28, - "obj_id": 633, - "type": "mask" + "obj_id": 125, + "type": "ellipse" } ], "frame": 1, @@ -582,8 +582,8 @@ "annotation_ids": [ { "job_id": 28, - "obj_id": 631, - "type": "ellipse" + "obj_id": 127, + "type": "mask" } ], "frame": 1, @@ -596,7 +596,7 @@ "annotation_ids": [ { "job_id": 28, - "obj_id": 635, + "obj_id": 129, "type": "polyline" } ], diff --git a/tests/python/shared/assets/quality_reports.json b/tests/python/shared/assets/quality_reports.json index 365f766065ba..21215934bcac 100644 --- a/tests/python/shared/assets/quality_reports.json +++ b/tests/python/shared/assets/quality_reports.json @@ -4,8 +4,8 @@ "previous": null, "results": [ { - "created_date": "2023-05-23T14:49:50.920000Z", - "gt_last_updated": "2023-05-23T14:44:02.697000Z", + "created_date": "2023-05-26T16:25:36.613000Z", + "gt_last_updated": "2023-05-26T16:16:50.630000Z", "id": 1, "job_id": null, "parameters": { @@ -24,21 +24,21 @@ "mismatching_label": 3, "missing_annotation": 9 }, - "ds_count": 35, + "ds_count": 34, "error_count": 22, - "frame_count": 4, - "frame_share_percent": 0.36363636363636365, - "gt_count": 34, - "valid_count": 22, + "frame_count": 3, + "frame_share_percent": 0.2727272727272727, + "gt_count": 33, + "valid_count": 21, "warning_count": 15 }, "target": "task", - "target_last_updated": "2023-05-23T14:45:08.348000Z", + "target_last_updated": "2023-05-26T16:17:02.635000Z", "task_id": 22 }, { - "created_date": "2023-05-23T14:49:50.924000Z", - "gt_last_updated": "2023-05-23T14:44:02.697000Z", + "created_date": "2023-05-26T16:25:36.616000Z", + "gt_last_updated": "2023-05-26T16:16:50.630000Z", "id": 2, "job_id": 27, "parameters": { @@ -57,16 +57,16 @@ "mismatching_label": 3, "missing_annotation": 9 }, - "ds_count": 35, + "ds_count": 34, "error_count": 22, - "frame_count": 4, - "frame_share_percent": 0.36363636363636365, - "gt_count": 34, - "valid_count": 22, + "frame_count": 3, + "frame_share_percent": 0.2727272727272727, + "gt_count": 33, + "valid_count": 21, "warning_count": 15 }, "target": "job", - "target_last_updated": "2023-05-23T14:45:08.385000Z", + "target_last_updated": "2023-05-26T16:11:24.294000Z", "task_id": null } ] diff --git a/tests/python/shared/assets/tasks.json b/tests/python/shared/assets/tasks.json index 77b3826172d2..f9f466684fb1 100644 --- a/tests/python/shared/assets/tasks.json +++ b/tests/python/shared/assets/tasks.json @@ -6,7 +6,7 @@ { "assignee": null, "bug_tracker": "", - "created_date": "2023-04-14T14:40:10.333000Z", + "created_date": "2023-05-26T16:11:23.540000Z", "data": 21, "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", @@ -20,7 +20,7 @@ "url": "http://localhost:8080/api/jobs?task_id=22" }, "labels": { - "count": 3, + "count": 2, "url": "http://localhost:8080/api/labels?task_id=22" }, "mode": "annotation", @@ -39,10 +39,10 @@ "segment_size": 11, "size": 11, "source_storage": null, - "status": "annotation", - "subset": "", + "status": "validation", + "subset": "Train", "target_storage": null, - "updated_date": "2023-05-23T14:45:08.348000Z", + "updated_date": "2023-05-26T16:17:02.635000Z", "url": "http://localhost:8080/api/tasks/22" }, { From 25f61c40a88209bfee787a2cfc3a400b8083c74d Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 26 May 2023 19:55:36 +0300 Subject: [PATCH 191/257] Remove UI changes --- cvat-canvas/src/scss/canvas.scss | 19 - cvat-canvas/src/typescript/canvas.ts | 7 +- cvat-canvas/src/typescript/canvasModel.ts | 6 - cvat-canvas/src/typescript/canvasView.ts | 87 +--- cvat-core/src/annotations-objects.ts | 14 - cvat-core/src/annotations.ts | 40 +- cvat-core/src/api-implementation.ts | 62 +-- cvat-core/src/api.ts | 19 - cvat-core/src/common.ts | 27 -- cvat-core/src/enums.ts | 5 - cvat-core/src/frames.ts | 34 +- cvat-core/src/object-state.ts | 27 +- cvat-core/src/quality-conflict.ts | 142 ------ cvat-core/src/quality-report.ts | 146 ------ cvat-core/src/quality-settings.ts | 184 -------- cvat-core/src/server-proxy.ts | 150 +----- cvat-core/src/server-response-types.ts | 4 +- cvat-core/src/session-implementation.ts | 42 +- cvat-core/src/session.ts | 79 +--- cvat-ui/package.json | 2 - cvat-ui/src/actions/analytics-actions.ts | 110 ----- cvat-ui/src/actions/annotation-actions.ts | 76 +-- cvat-ui/src/actions/jobs-actions.ts | 44 +- cvat-ui/src/actions/settings-actions.ts | 10 - cvat-ui/src/assets/conflict.svg | 13 - cvat-ui/src/assets/duration-icon.svg | 3 - cvat-ui/src/assets/frame-count-icon.svg | 3 - cvat-ui/src/assets/frames-icon.svg | 3 - cvat-ui/src/assets/show-gt-icon.svg | 4 - .../components/actions-menu/actions-menu.tsx | 13 +- .../annotation-page/appearance-block.tsx | 5 +- .../views/canvas2d/canvas-context-menu.tsx | 17 +- .../canvas/views/canvas2d/canvas-wrapper.tsx | 44 +- .../review-workspace/review-workspace.tsx | 2 - .../annotation-page/review/conflict-label.tsx | 52 --- .../review/conflicts-aggregator.tsx | 112 ----- .../review/issues-aggregator.tsx | 4 +- .../annotation-page/review/styles.scss | 49 -- .../objects-side-bar/issues-list.tsx | 93 +--- .../objects-side-bar/object-item-basics.tsx | 3 - .../objects-side-bar/object-item.tsx | 3 - .../objects-side-bar/objects-list-header.tsx | 33 +- .../objects-side-bar/objects-list.tsx | 6 - .../objects-side-bar/styles.scss | 52 +-- .../components/annotation-page/styles.scss | 9 - .../annotation-page/top-bar/filters-modal.tsx | 237 +++------- .../annotation-page/top-bar/right-group.tsx | 6 +- .../create-job-page/create-job-page.tsx | 71 --- .../components/create-job-page/job-form.tsx | 251 ---------- .../components/create-job-page/styles.scss | 45 -- cvat-ui/src/components/cvat-app.tsx | 4 - .../components/job-item/job-actions-menu.tsx | 69 --- cvat-ui/src/components/job-item/job-item.tsx | 241 ---------- cvat-ui/src/components/job-item/styles.scss | 58 --- cvat-ui/src/components/jobs-page/job-card.tsx | 26 +- .../src/components/jobs-page/jobs-content.tsx | 6 +- .../quality/analytics-card.tsx | 64 --- .../task-analytics-page/quality/common.ts | 19 - .../task-analytics-page/quality/empty-job.tsx | 39 -- .../quality/gt-conflicts.tsx | 103 ----- .../task-analytics-page/quality/issues.tsx | 61 --- .../task-analytics-page/quality/job-list.tsx | 305 ------------- .../quality/mean-quality.tsx | 99 ---- .../quality/quality-settings-modal.tsx | 263 ----------- .../quality/task-quality-component.tsx | 66 --- .../task-analytics-page/styles.scss | 141 ------ .../task-analytics-page.tsx | 131 ------ cvat-ui/src/components/task-page/job-list.tsx | 431 ++++++++++++------ .../task-page/jobs-filter-configuration.ts | 106 ----- cvat-ui/src/components/task-page/styles.scss | 22 +- .../src/components/task-page/task-page.tsx | 2 +- cvat-ui/src/components/task-page/top-bar.tsx | 14 +- .../components/task-page/user-selector.tsx | 7 +- .../src/components/tasks-page/task-item.tsx | 12 +- .../containers/actions-menu/actions-menu.tsx | 5 +- .../objects-side-bar/object-item.tsx | 1 - .../objects-side-bar/objects-list.tsx | 27 +- .../annotation-page/top-bar/top-bar.tsx | 21 +- cvat-ui/src/cvat-core-wrapper.ts | 14 +- cvat-ui/src/icons.tsx | 10 - cvat-ui/src/reducers/analytics-reducer.ts | 110 ----- cvat-ui/src/reducers/annotation-reducer.ts | 47 +- cvat-ui/src/reducers/index.ts | 41 +- cvat-ui/src/reducers/jobs-reducer.ts | 51 --- cvat-ui/src/reducers/notifications-reducer.ts | 91 +--- cvat-ui/src/reducers/review-reducer.ts | 8 - cvat-ui/src/reducers/root-reducer.ts | 2 - cvat-ui/src/reducers/settings-reducer.ts | 19 - cvat-ui/src/utils/quality-color.ts | 34 -- yarn.lock | 11 +- 90 files changed, 534 insertions(+), 4716 deletions(-) delete mode 100644 cvat-core/src/quality-conflict.ts delete mode 100644 cvat-core/src/quality-report.ts delete mode 100644 cvat-core/src/quality-settings.ts delete mode 100644 cvat-ui/src/actions/analytics-actions.ts delete mode 100644 cvat-ui/src/assets/conflict.svg delete mode 100644 cvat-ui/src/assets/duration-icon.svg delete mode 100644 cvat-ui/src/assets/frame-count-icon.svg delete mode 100644 cvat-ui/src/assets/frames-icon.svg delete mode 100644 cvat-ui/src/assets/show-gt-icon.svg delete mode 100644 cvat-ui/src/components/annotation-page/review/conflict-label.tsx delete mode 100644 cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx delete mode 100644 cvat-ui/src/components/create-job-page/create-job-page.tsx delete mode 100644 cvat-ui/src/components/create-job-page/job-form.tsx delete mode 100644 cvat-ui/src/components/create-job-page/styles.scss delete mode 100644 cvat-ui/src/components/job-item/job-actions-menu.tsx delete mode 100644 cvat-ui/src/components/job-item/job-item.tsx delete mode 100644 cvat-ui/src/components/job-item/styles.scss delete mode 100644 cvat-ui/src/components/task-analytics-page/quality/analytics-card.tsx delete mode 100644 cvat-ui/src/components/task-analytics-page/quality/common.ts delete mode 100644 cvat-ui/src/components/task-analytics-page/quality/empty-job.tsx delete mode 100644 cvat-ui/src/components/task-analytics-page/quality/gt-conflicts.tsx delete mode 100644 cvat-ui/src/components/task-analytics-page/quality/issues.tsx delete mode 100644 cvat-ui/src/components/task-analytics-page/quality/job-list.tsx delete mode 100644 cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx delete mode 100644 cvat-ui/src/components/task-analytics-page/quality/quality-settings-modal.tsx delete mode 100644 cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx delete mode 100644 cvat-ui/src/components/task-analytics-page/styles.scss delete mode 100644 cvat-ui/src/components/task-analytics-page/task-analytics-page.tsx delete mode 100644 cvat-ui/src/components/task-page/jobs-filter-configuration.ts delete mode 100644 cvat-ui/src/reducers/analytics-reducer.ts delete mode 100644 cvat-ui/src/utils/quality-color.ts diff --git a/cvat-canvas/src/scss/canvas.scss b/cvat-canvas/src/scss/canvas.scss index 7396e8e3c5ce..954a15b931b6 100644 --- a/cvat-canvas/src/scss/canvas.scss +++ b/cvat-canvas/src/scss/canvas.scss @@ -148,20 +148,6 @@ polyline.cvat_canvas_shape_splitting { stroke-dasharray: 5; } -.cvat_canvas_ground_truth { - stroke-dasharray: 1; -} - -.cvat_canvas_conflicted { - stroke: #ff4800; - stroke-dasharray: 1; -} - -.cvat_canvas_warned { - stroke: #ff7301; - stroke-dasharray: 1; -} - .cvat_canvas_shape_occluded_point { stroke-dasharray: 1 !important; stroke: white; @@ -394,8 +380,3 @@ g.cvat_canvas_shape_occluded { stroke: #09c; } } - -.cvat_canvas_shape_darken { - fill: #838383; - stroke: #838383; -} diff --git a/cvat-canvas/src/typescript/canvas.ts b/cvat-canvas/src/typescript/canvas.ts index 5e07159826d5..9b4c6c60d11a 100644 --- a/cvat-canvas/src/typescript/canvas.ts +++ b/cvat-canvas/src/typescript/canvas.ts @@ -32,8 +32,7 @@ interface Canvas { html(): HTMLDivElement; setup(frameData: any, objectStates: any[], zLayer?: number): void; setupIssueRegions(issueRegions: Record): void; - setupConflictRegions(clientID: number): number[]; - activate(clientID: number | null, attributeID?: number): number[]; + activate(clientID: number | null, attributeID?: number): void; rotate(rotationAngle: number): void; focus(clientID: number, padding?: number): void; fit(): void; @@ -85,10 +84,6 @@ class CanvasImpl implements Canvas { this.model.setupIssueRegions(issueRegions); } - public setupConflictsRegions(clientID: number): number[] { - return this.view.setupConflictsRegions(clientID); - } - public fitCanvas(): void { this.model.fitCanvas(this.view.html().clientWidth, this.view.html().clientHeight); } diff --git a/cvat-canvas/src/typescript/canvasModel.ts b/cvat-canvas/src/typescript/canvasModel.ts index 2543154e52fc..2d5b19387bee 100644 --- a/cvat-canvas/src/typescript/canvasModel.ts +++ b/cvat-canvas/src/typescript/canvasModel.ts @@ -68,7 +68,6 @@ export interface Configuration { textContent?: string; undefinedAttrValue?: string; showProjections?: boolean; - showConflicts?: boolean; forceDisableEditing?: boolean; intelligentPolygonCrop?: boolean; forceFrameUpdate?: boolean; @@ -351,7 +350,6 @@ export class CanvasModelImpl extends MasterImpl implements CanvasModel { autoborders: false, displayAllText: false, showProjections: false, - showConflicts: false, forceDisableEditing: false, intelligentPolygonCrop: false, forceFrameUpdate: false, @@ -859,10 +857,6 @@ export class CanvasModelImpl extends MasterImpl implements CanvasModel { this.data.configuration.colorBy = configuration.colorBy; } - if (typeof configuration.showConflicts === 'boolean') { - this.data.configuration.showConflicts = configuration.showConflicts; - } - if (typeof configuration.CSSImageFilter === 'string') { this.data.configuration.CSSImageFilter = configuration.CSSImageFilter; } diff --git a/cvat-canvas/src/typescript/canvasView.ts b/cvat-canvas/src/typescript/canvasView.ts index 332150f5df21..be39a4697a28 100644 --- a/cvat-canvas/src/typescript/canvasView.ts +++ b/cvat-canvas/src/typescript/canvasView.ts @@ -63,7 +63,6 @@ import { export interface CanvasView { html(): HTMLDivElement; - setupConflictsRegions(clientID: number): number[]; } export class CanvasViewImpl implements CanvasView, Listener { @@ -1315,11 +1314,6 @@ export class CanvasViewImpl implements CanvasView, Listener { (shapeView as any).instance .fill({ color: fill, opacity: fillOpacity }) .stroke({ color: stroke }); - if (configuration.showConflicts && objectState?.conflict) { - shapeView.classList.add('cvat_canvas_conflicted'); - } else if (!configuration.showConflicts && objectState?.conflict) { - shapeView.classList.remove('cvat_canvas_conflicted'); - } } if (drawnState.elements) { @@ -1331,8 +1325,7 @@ export class CanvasViewImpl implements CanvasView, Listener { const withUpdatingShapeViews = configuration.shapeOpacity !== this.configuration.shapeOpacity || configuration.selectedShapeOpacity !== this.configuration.selectedShapeOpacity || configuration.outlinedBorders !== this.configuration.outlinedBorders || - configuration.colorBy !== this.configuration.colorBy || - configuration.showConflicts !== this.configuration.showConflicts; + configuration.colorBy !== this.configuration.colorBy; if (configuration.displayAllText && !this.configuration.displayAllText) { for (const i in this.drawnStates) { @@ -1716,17 +1709,6 @@ export class CanvasViewImpl implements CanvasView, Listener { return this.canvas; } - public setupConflictsRegions(SShape: any): number[] { - let cx = 0; - let cy = 0; - const shape = this.svgShapes[SShape.clientID]; - if (!shape) return []; - const box = (shape.node as any).getBBox(); - cx = box.x + (box.width) / 2; - cy = box.y; - return [cx, cy]; - } - private redrawBitmap(): void { const width = +this.background.style.width.slice(0, -2); const height = +this.background.style.height.slice(0, -2); @@ -2206,12 +2188,6 @@ export class CanvasViewImpl implements CanvasView, Listener { this.deleteText(clientID); } - for (const [key, otherShape] of Object.entries(this.svgShapes)) { - otherShape.removeClass('cvat_canvas_shape_darken'); - otherShape.removeClass('cvat_canvas_conflicted'); - otherShape.removeClass('cvat_canvas_warned'); - } - this.sortObjects(); this.activeElement = { @@ -2243,6 +2219,7 @@ export class CanvasViewImpl implements CanvasView, Listener { private activateShape(clientID: number): void { const [state] = this.controller.objects.filter((_state: any): boolean => _state.clientID === clientID); + if (state && state.shapeType === 'points') { this.svgShapes[clientID] .remember('_selectHandler') @@ -2254,42 +2231,6 @@ export class CanvasViewImpl implements CanvasView, Listener { } const shape = this.svgShapes[clientID]; - if (this.configuration.showConflicts && state.conflict) { - const conflictedStates = state.conflict.annotationConflicts.map((annotationConflict) => { - const [conflictedState] = this.controller.objects.filter( - (_state: any): boolean => _state.serverID === annotationConflict.objId, - ); - return conflictedState; - }).filter( - // TODO: in the list, there can be null values in some cases - // (eg. from looking for an annotation from the other job), - // produced from [x] = []. - // Need to investigate, why it happens only sometimes. - // Here we just filter such values - Boolean - ); - - const conflictedMap = {}; - conflictedStates.forEach((_state) => { - conflictedMap[_state.clientID] = _state.conflict; - if (_state.elements.length) { - _state.elements.forEach((element) => { conflictedMap[element.clientID] = _state.conflict; }); - } - }); - - for (const [key, otherShape] of Object.entries(this.svgShapes)) { - if (conflictedMap[+key]) { - const { importance } = conflictedMap[+key]; - if (importance === 'error') { - otherShape.addClass('cvat_canvas_conflicted'); - } else if (importance === 'warning') { - otherShape.addClass('cvat_canvas_warned'); - } - } else { - otherShape.addClass('cvat_canvas_shape_darken'); - } - } - } let text = this.svgTexts[clientID]; if (!text) { text = this.addText(state); @@ -2764,10 +2705,6 @@ export class CanvasViewImpl implements CanvasView, Listener { rect.addClass('cvat_canvas_hidden'); } - if (state.isGroundTruth) { - rect.addClass('cvat_canvas_ground_truth'); - } - return rect; } @@ -2792,10 +2729,6 @@ export class CanvasViewImpl implements CanvasView, Listener { polygon.addClass('cvat_canvas_hidden'); } - if (state.isGroundTruth) { - polygon.addClass('cvat_canvas_ground_truth'); - } - return polygon; } @@ -2820,10 +2753,6 @@ export class CanvasViewImpl implements CanvasView, Listener { polyline.addClass('cvat_canvas_hidden'); } - if (state.isGroundTruth) { - polyline.addClass('cvat_canvas_ground_truth'); - } - return polyline; } @@ -2849,10 +2778,6 @@ export class CanvasViewImpl implements CanvasView, Listener { cube.addClass('cvat_canvas_hidden'); } - if (state.isGroundTruth) { - cube.addClass('cvat_canvas_ground_truth'); - } - return cube; } @@ -3427,10 +3352,6 @@ export class CanvasViewImpl implements CanvasView, Listener { rect.addClass('cvat_canvas_hidden'); } - if (state.isGroundTruth) { - rect.addClass('cvat_canvas_ground_truth'); - } - return rect; } @@ -3457,10 +3378,6 @@ export class CanvasViewImpl implements CanvasView, Listener { group.addClass('cvat_canvas_shape_occluded'); } - if (state.isGroundTruth) { - group.addClass('cvat_canvas_ground_truth'); - } - shape.remove = (): SVG.PolyLine => { this.selectize(false, shape); shape.constructor.prototype.remove.call(shape); diff --git a/cvat-core/src/annotations-objects.ts b/cvat-core/src/annotations-objects.ts index 19eddc01e9ca..38df9bd9360b 100644 --- a/cvat-core/src/annotations-objects.ts +++ b/cvat-core/src/annotations-objects.ts @@ -57,14 +57,12 @@ class Annotation { protected history: any; protected groupColors: Record; public serverID: number | null; - protected jobID: number; protected parentID: number | null; protected dimension: DimensionType; public group: number; public label: Label; public frame: number; private _removed: boolean; - protected isGroundTruth: boolean; public lock: boolean; protected readOnlyFields: string[]; protected color: string; @@ -82,14 +80,12 @@ class Annotation { this.groupColors = injection.groupColors; this.clientID = clientID; this.serverID = data.id || null; - this.jobID = data.job_id; this.parentID = injection.parentID || null; this.dimension = injection.dimension; this.group = data.group; this.label = this.taskLabels[data.label_id]; this.frame = data.frame; this._removed = false; - this.isGroundTruth = data.is_gt || false; this.lock = false; this.readOnlyFields = injection.readOnlyFields || []; this.color = color; @@ -570,7 +566,6 @@ export class Shape extends Drawn { shapeType: this.shapeType, clientID: this.clientID, serverID: this.serverID, - jobID: this.jobID, parentID: this.parentID, occluded: this.occluded, lock: this.lock, @@ -585,7 +580,6 @@ export class Shape extends Drawn { hidden: this.hidden, updated: this.updated, pinned: this.pinned, - isGroundTruth: this.isGroundTruth, frame, source: this.source, ...this.withContext(frame), @@ -937,7 +931,6 @@ export class Track extends Drawn { shapeType: this.shapeType, clientID: this.clientID, serverID: this.serverID, - jobID: this.jobID, parentID: this.parentID, lock: this.lock, color: this.color, @@ -953,7 +946,6 @@ export class Track extends Drawn { }, frame, source: this.source, - isGroundTruth: this.isGroundTruth, ...this.withContext(frame), }; } @@ -1473,7 +1465,6 @@ export class Tag extends Annotation { objectType: ObjectType.TAG, clientID: this.clientID, serverID: this.serverID, - jobID: this.jobID, lock: this.lock, attributes: { ...this.attributes }, label: this.label, @@ -1482,7 +1473,6 @@ export class Tag extends Annotation { updated: this.updated, frame, source: this.source, - isGroundTruth: this.isGroundTruth, ...this.withContext(frame), }; } @@ -1998,11 +1988,9 @@ export class SkeletonShape extends Shape { shapeType: this.shapeType, clientID: this.clientID, serverID: this.serverID, - jobID: this.jobID, points: this.points, zOrder: this.zOrder, rotation: 0, - isGroundTruth: this.isGroundTruth, attributes: { ...this.attributes }, descriptions: [...this.descriptions], elements, @@ -2908,8 +2896,6 @@ export class SkeletonTrack extends Track { shapeType: this.shapeType, clientID: this.clientID, serverID: this.serverID, - jobID: this.jobID, - isGroundTruth: this.isGroundTruth, color: this.color, updated: Math.max(this.updated, ...this.elements.map((element) => element.updated)), label: this.label, diff --git a/cvat-core/src/annotations.ts b/cvat-core/src/annotations.ts index 6f2c59bff7ef..af43dbb07b4c 100644 --- a/cvat-core/src/annotations.ts +++ b/cvat-core/src/annotations.ts @@ -29,43 +29,13 @@ function getCache(sessionType) { throw new ScriptingError(`Unknown session type was received ${sessionType}`); } -function processGroundTruthAnnotations(rawAnnotations, groundTruthAnnotations) { - groundTruthAnnotations.shapes.forEach((annotation) => { annotation.is_gt = true; }); - groundTruthAnnotations.tracks.forEach((annotation) => { annotation.is_gt = true; }); - groundTruthAnnotations.tags.forEach((annotation) => { annotation.is_gt = true; }); - const result = { - shapes: [...rawAnnotations.shapes, ...groundTruthAnnotations.shapes], - tracks: [...rawAnnotations.tracks, ...groundTruthAnnotations.tracks], - tags: [...rawAnnotations.tags, ...groundTruthAnnotations.tags], - }; - return result; -} - -function addJobId(rawAnnotations, jobID) { - rawAnnotations.shapes.forEach((annotation) => { annotation.job_id = jobID; }); - rawAnnotations.tracks.forEach((annotation) => { annotation.job_id = jobID; }); - rawAnnotations.tags.forEach((annotation) => { annotation.job_id = jobID; }); - const result = { - shapes: [...rawAnnotations.shapes], - tracks: [...rawAnnotations.tracks], - tags: [...rawAnnotations.tags], - }; - return result; -} - -async function getAnnotationsFromServer(session, groundTruthJobId) { +async function getAnnotationsFromServer(session) { const sessionType = session instanceof Task ? 'task' : 'job'; const cache = getCache(sessionType); if (!cache.has(session)) { - let rawAnnotations = await serverProxy.annotations.getAnnotations(sessionType, session.id); - rawAnnotations = addJobId(rawAnnotations, session.id); - if (groundTruthJobId) { - let gtAnnotations = await serverProxy.annotations.getAnnotations(sessionType, groundTruthJobId); - gtAnnotations = addJobId(gtAnnotations, groundTruthJobId); - rawAnnotations = processGroundTruthAnnotations(rawAnnotations, gtAnnotations); - } - console.log(rawAnnotations); + const rawAnnotations = await serverProxy.annotations.getAnnotations(sessionType, session.id); + // Get meta information about frames const startFrame = sessionType === 'job' ? session.startFrame : 0; const stopFrame = sessionType === 'job' ? session.stopFrame : session.size - 1; @@ -100,7 +70,7 @@ export async function clearCache(session) { } } -export async function getAnnotations(session, frame, allTracks, filters, groundTruthJobId) { +export async function getAnnotations(session, frame, allTracks, filters) { const sessionType = session instanceof Task ? 'task' : 'job'; const cache = getCache(sessionType); @@ -108,7 +78,7 @@ export async function getAnnotations(session, frame, allTracks, filters, groundT return cache.get(session).collection.get(frame, allTracks, filters); } - await getAnnotationsFromServer(session, groundTruthJobId); + await getAnnotationsFromServer(session); return cache.get(session).collection.get(frame, allTracks, filters); } diff --git a/cvat-core/src/api-implementation.ts b/cvat-core/src/api-implementation.ts index b1905087cc96..4c9ed8437377 100644 --- a/cvat-core/src/api-implementation.ts +++ b/cvat-core/src/api-implementation.ts @@ -16,7 +16,6 @@ import { checkFilter, checkExclusiveFields, checkObjectType, - filterFieldsToSnakeCase, } from './common'; import User from './user'; @@ -26,9 +25,6 @@ import Project from './project'; import CloudStorage from './cloud-storage'; import Organization from './organization'; import Webhook from './webhook'; -import QualityReport from './quality-report'; -import QualityConflict from './quality-conflict'; -import QualitySettings from './quality-settings'; export default function implementAPI(cvat) { cvat.plugins.list.implementation = PluginRegistry.list; @@ -333,8 +329,21 @@ export default function implementAPI(cvat) { }); checkExclusiveFields(filter, ['id', 'projectId'], ['page']); + const searchParams = {}; + for (const key of Object.keys(filter)) { + if (['page', 'id', 'filter', 'search', 'sort'].includes(key)) { + searchParams[key] = filter[key]; + } + } - const searchParams = filterFieldsToSnakeCase(filter, ['projectId']); + if (filter.projectId) { + if (searchParams.filter) { + const parsed = JSON.parse(searchParams.filter); + searchParams.filter = JSON.stringify({ and: [parsed, { '==': [{ var: 'project_id' }, filter.projectId] }] }); + } else { + searchParams.filter = JSON.stringify({ and: [{ '==': [{ var: 'project_id' }, filter.projectId] }] }); + } + } const webhooksData = await serverProxy.webhooks.get(searchParams); const webhooks = webhooksData.map((webhookData) => new Webhook(webhookData)); @@ -342,48 +351,5 @@ export default function implementAPI(cvat) { return webhooks; }; - cvat.analytics.quality.reports.implementation = async (filter) => { - // checkFilter(filter, { - // taskId: isInteger, - // parentId: isInteger, - // }); - - // const searchParams = filterFieldsToSnakeCase(filter, ['taskId', 'parentId']); - // TMP solution aka filters disabled - let updatedParams: Record = {}; - if ('taskId' in filter) { - updatedParams = { - task_id: filter.taskId, - sort: '-created_date', - target: filter.target, - }; - } - if ('jobId' in filter) { - updatedParams = { - job_id: filter.jobId, - sort: '-created_date', - target: filter.target, - }; - } - const reportsData = await serverProxy.analytics.quality.reports(updatedParams); - - return reportsData.map((report) => new QualityReport({ ...report })); - }; - - cvat.analytics.quality.conflicts.implementation = async (filter) => { - let updatedParams: Record = {}; - updatedParams = { - report_id: filter.reportId, - }; - const reportsData = await serverProxy.analytics.quality.conflicts(updatedParams); - - return reportsData.map((conflict) => new QualityConflict({ ...conflict })); - }; - - cvat.analytics.quality.settings.get.implementation = async (taskID: number) => { - const settings = await serverProxy.analytics.quality.settings.get(taskID); - return new QualitySettings({ ...settings }); - }; - return cvat; } diff --git a/cvat-core/src/api.ts b/cvat-core/src/api.ts index 022d996b1d8a..b899b3c96e87 100644 --- a/cvat-core/src/api.ts +++ b/cvat-core/src/api.ts @@ -264,24 +264,6 @@ function build() { return result; }, }, - analytics: { - quality: { - async reports(filter: any) { - const result = await PluginRegistry.apiWrapper(cvat.analytics.quality.reports, filter); - return result; - }, - async conflicts(filter: any) { - const result = await PluginRegistry.apiWrapper(cvat.analytics.quality.conflicts, filter); - return result; - }, - settings: { - async get(taskID: number) { - const result = await PluginRegistry.apiWrapper(cvat.analytics.quality.settings.get, taskID); - return result; - }, - }, - }, - }, classes: { User, Project: implementProject(Project), @@ -313,7 +295,6 @@ function build() { cvat.enums = Object.freeze(cvat.enums); cvat.cloudStorages = Object.freeze(cvat.cloudStorages); cvat.organizations = Object.freeze(cvat.organizations); - cvat.analytics = Object.freeze(cvat.analytics); const implemented = Object.freeze(implementAPI(cvat)); return implemented; diff --git a/cvat-core/src/common.ts b/cvat-core/src/common.ts index 65b9907285c7..1aa67589cfdc 100644 --- a/cvat-core/src/common.ts +++ b/cvat-core/src/common.ts @@ -114,30 +114,3 @@ export class FieldUpdateTrigger { export function clamp(value: number, min: number, max: number): number { return Math.min(Math.max(value, min), max); } - -export function camelToSnakeCase(str: string): string { - return str.replace(/[A-Z]/g, (letter: string) => `_${letter.toLowerCase()}`); -} - -export function filterFieldsToSnakeCase(filter: Record, keysToSnake: string[]): Record { - const searchParams:Record = {}; - for (const key of Object.keys(filter)) { - if (!keysToSnake.includes(key)) { - searchParams[key] = filter[key]; - } - } - const filtersGroup = []; - for (const key of keysToSnake) { - if (filter[key]) { - filtersGroup.push({ '==': [{ var: camelToSnakeCase(key) }, filter[key]] }); - } - } - - if (searchParams.filter) { - const parsed = JSON.parse(searchParams.filter); - searchParams.filter = JSON.stringify({ and: [parsed, ...filtersGroup] }); - } else { - searchParams.filter = JSON.stringify({ and: [...filtersGroup] }); - } - return searchParams; -} diff --git a/cvat-core/src/enums.ts b/cvat-core/src/enums.ts index 1246d536ccbc..2ee04197cbae 100644 --- a/cvat-core/src/enums.ts +++ b/cvat-core/src/enums.ts @@ -34,11 +34,6 @@ export enum JobState { REJECTED = 'rejected', } -export enum JobType { - ANNOTATION = 'annotation', - GROUND_TRUTH = 'ground_truth', -} - export enum DimensionType { DIMENSION_2D = '2d', DIMENSION_3D = '3d', diff --git a/cvat-core/src/frames.ts b/cvat-core/src/frames.ts index 94daecab1979..cd67e55ac3c0 100644 --- a/cvat-core/src/frames.ts +++ b/cvat-core/src/frames.ts @@ -6,7 +6,6 @@ import { isBrowser, isNode } from 'browser-or-node'; import * as cvatData from 'cvat-data'; -import jsonLogic from 'json-logic-js'; import { DimensionType } from 'enums'; import PluginRegistry from './plugins'; import serverProxy, { FramesMetaData } from './server-proxy'; @@ -318,20 +317,20 @@ FrameData.prototype.data.implementation = async function (onServerRequest) { function getFrameMeta(jobID, frame): FramesMetaData['frames'][0] { const { meta, mode, startFrame } = frameDataCache[jobID]; - let frame_meta = null; - if (mode === 'interpolation' && meta.frames.length == 1) { - // video tasks have 1 frame info, but image tasks will have many infos - [frame_meta] = meta.frames; - } else if (mode === 'annotation' || mode === 'interpolation' && meta.frames.length > 1) { - if (frame > meta.stop_frame) { + let size = null; + if (mode === 'interpolation') { + [size] = meta.frames; + } else if (mode === 'annotation') { + if (frame >= meta.size) { throw new ArgumentError(`Meta information about frame ${frame} can't be received from the server`); + } else { + size = meta.frames[frame - startFrame]; } - frame_meta = meta.frames[frame - startFrame]; } else { throw new DataError(`Invalid mode is specified ${mode}`); } - return frame_meta; + return size; } class FrameBuffer { @@ -686,6 +685,7 @@ export async function getFrame( nextChunkRequest: null, }; + // relevant only for video chunks const frameMeta = getFrameMeta(jobID, frame); frameDataCache[jobID].provider.setRenderSize(frameMeta.width, frameMeta.height); } @@ -739,32 +739,20 @@ export async function patchMeta(jobID) { frameDataCache[jobID].meta.deleted_frames = prevDeletedFrames; } -export async function findFrame(jobID, frameFrom, frameTo, filters, externalMeta) { - const offset = filters.offset || 1; +export async function findNotDeletedFrame(jobID, frameFrom, frameTo, offset) { let meta; if (!frameDataCache[jobID]) { meta = await serverProxy.frames.getMeta('job', jobID); } else { meta = frameDataCache[jobID].meta; } - const sign = Math.sign(frameTo - frameFrom); const predicate = sign > 0 ? (frame) => frame <= frameTo : (frame) => frame >= frameTo; const update = sign > 0 ? (frame) => frame + 1 : (frame) => frame - 1; let framesCounter = 0; let lastUndeletedFrame = null; - const check = (frame): boolean => { - if (meta.included_frames) { - return (meta.included_frames.includes(frame)) && !(frame in meta.deleted_frames); - } - if (Array.isArray(filters.jsonFilters) && filters.jsonFilters.length) { - const frameConvert = { conflicted: externalMeta.conflictedFrames.includes(frame) }; - return jsonLogic.apply(filters.jsonFilters[0], frameConvert); - } - return !(frame in meta.deleted_frames); - }; for (let frame = frameFrom; predicate(frame); frame = update(frame)) { - if (check(frame)) { + if (!(frame in meta.deleted_frames)) { lastUndeletedFrame = frame; framesCounter++; if (framesCounter === offset) { diff --git a/cvat-core/src/object-state.ts b/cvat-core/src/object-state.ts index 420c983c2461..30646e417379 100644 --- a/cvat-core/src/object-state.ts +++ b/cvat-core/src/object-state.ts @@ -1,5 +1,5 @@ // Copyright (C) 2019-2022 Intel Corporation -// Copyright (C) 2022-2023 CVAT.ai Corporation +// Copyright (C) 2022 CVAT.ai Corporation // // SPDX-License-Identifier: MIT @@ -8,7 +8,6 @@ import PluginRegistry from './plugins'; import { ArgumentError } from './exceptions'; import { Label } from './labels'; import { isEnum } from './common'; -import QualityConflict from './quality-conflict'; interface UpdateFlags { label: boolean; @@ -36,7 +35,6 @@ export interface SerializedData { shapeType?: ShapeType; clientID?: number; serverID?: number; - jobID?: number; parentID?: number; lock?: boolean; hidden?: boolean; @@ -53,7 +51,6 @@ export interface SerializedData { keyframe?: boolean; rotation?: number; descriptions?: string[]; - isGroundTruth?: boolean; keyframes?: { prev: number | null; next: number | null; @@ -80,12 +77,9 @@ export default class ObjectState { public readonly source: Source; public readonly clientID: number | null; public readonly serverID: number | null; - public readonly jobID: number | null; public readonly parentID: number | null; public readonly updated: number; public readonly group: { color: string; id: number; } | null; - public readonly isGroundTruth: boolean; - public conflict: QualityConflict | null; public readonly keyframes: { first: number | null; prev: number | null; @@ -172,15 +166,12 @@ export default class ObjectState { hidden: false, pinned: false, source: Source.MANUAL, - isGroundTruth: serialized.isGroundTruth || false, - conflict: null, keyframes: serialized.keyframes || null, group: serialized.group || null, updated: serialized.updated || Date.now(), clientID: serialized.clientID || null, serverID: serialized.serverID || null, - jobID: serialized.jobID || null, parentID: serialized.parentID || null, frame: serialized.frame, @@ -206,10 +197,7 @@ export default class ObjectState { get: () => data.shapeType, }, source: { - get: () => (data.isGroundTruth ? 'Ground truth' : data.source), - }, - isGroundTruth: { - get: () => data.isGroundTruth, + get: () => data.source, }, clientID: { get: () => data.clientID, @@ -217,9 +205,6 @@ export default class ObjectState { serverID: { get: () => data.serverID, }, - jobID: { - get: () => data.jobID, - }, parentID: { get: () => data.parentID, }, @@ -231,7 +216,7 @@ export default class ObjectState { }, }, color: { - get: () => (this.isGroundTruth ? '#ffffff' : data.color), + get: () => data.color, set: (color) => { data.updateFlags.color = true; data.color = color; @@ -466,12 +451,6 @@ export default class ObjectState { return []; }, }, - conflict: { - get: () => data.conflict, - set: (conflict) => { - data.conflict = conflict; - }, - }, }), ); diff --git a/cvat-core/src/quality-conflict.ts b/cvat-core/src/quality-conflict.ts deleted file mode 100644 index 39a5a8bb93de..000000000000 --- a/cvat-core/src/quality-conflict.ts +++ /dev/null @@ -1,142 +0,0 @@ -// Copyright (C) 2023 CVAT.ai Corporation -// -// SPDX-License-Identifier: MIT - -export enum QualityConflictType { - EXTRA = 'extra_annotation', - MISMATCHING = 'mismatching_label', - MISSING = 'missing_annotation', -} - -export enum ConflictImportance { - ERROR = 'error', - WARNING = 'warning', -} - -export interface RawQualityConflictData { - id?: number; - frame?: number; - type?: string; - annotation_ids?: RawAnnotationConflictData[]; - data?: string; - importance?: string; -} - -export interface RawAnnotationConflictData { - job_id?: number; - obj_id?: number; - type?: string; - conflict_type?: string; - importance?: string; -} - -export class AnnotationConflict { - public readonly jobId: number; - public readonly objId: number; - public readonly type: string; - public readonly conflictType: QualityConflictType; - public readonly importance: ConflictImportance; - public readonly description: string; - - constructor(initialData: RawAnnotationConflictData) { - const data: RawAnnotationConflictData = { - job_id: undefined, - obj_id: undefined, - type: undefined, - conflict_type: undefined, - importance: undefined, - }; - - for (const property in data) { - if (Object.prototype.hasOwnProperty.call(data, property) && property in initialData) { - data[property] = initialData[property]; - } - } - - Object.defineProperties( - this, - Object.freeze({ - jobId: { - get: () => data.job_id, - }, - objId: { - get: () => data.obj_id, - }, - type: { - get: () => data.type, - }, - conflictType: { - get: () => data.conflict_type, - }, - importance: { - get: () => data.importance, - }, - description: { - get: () => { - const desc = this.conflictType.split('_').join(' '); - return desc.charAt(0).toUpperCase() + desc.slice(1); - }, - }, - }), - ); - } -} - -export default class QualityConflict { - public readonly id: number; - public readonly frame: number; - public readonly type: QualityConflictType; - public readonly annotationConflicts: AnnotationConflict[]; - public readonly importance: ConflictImportance; - public readonly description: string; - - constructor(initialData: RawQualityConflictData) { - const data: RawQualityConflictData = { - id: undefined, - frame: undefined, - type: undefined, - annotation_ids: [], - importance: undefined, - }; - - for (const property in data) { - if (Object.prototype.hasOwnProperty.call(data, property) && property in initialData) { - data[property] = initialData[property]; - } - } - - data.annotation_ids = data.annotation_ids - .map((rawData: RawAnnotationConflictData) => new AnnotationConflict({ - ...rawData, - conflict_type: data.type, - importance: data.importance, - })); - - Object.defineProperties( - this, - Object.freeze({ - id: { - get: () => data.id, - }, - frame: { - get: () => data.frame, - }, - type: { - get: () => data.type, - }, - annotationConflicts: { - get: () => data.annotation_ids, - }, - importance: { - get: () => data.importance, - }, - description: { - get: () => { - const desc = this.type.split('_').join(' '); - return desc.charAt(0).toUpperCase() + desc.slice(1); - }, - }, - }), - ); - } -} diff --git a/cvat-core/src/quality-report.ts b/cvat-core/src/quality-report.ts deleted file mode 100644 index 5aeff0aa4f82..000000000000 --- a/cvat-core/src/quality-report.ts +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright (C) 2023 CVAT.ai Corporation -// -// SPDX-License-Identifier: MIT - -export interface RawQualityReportData { - id?: number; - parent_id?: number; - task_id?: number; - job_id?: number; - target: string; - created_date?: string; - gt_last_updated?: string; - summary?: { - frame_count: number, - frame_share_percent: number, - conflict_count: number, - valid_count: number, - ds_count: number, - gt_count: number, - error_count: number, - warning_count: number, - conflicts_by_type: { - extra_annotation: number, - missing_annotation: number, - mismatching_label: number, - low_overlap: number, - mismatching_direction: number, - mismatching_attributes: number, - mismatching_groups: number, - covered_annotation: number, - } - }; - parameters?: object; -} - -export interface QualitySummary { - frameCount: number; - frameSharePercent: number; - conflictCount: number; - validCount: number; - dsCount: number; - gtCount: number; - accuracy: number; - precision: number; - recall: number; - errorCount: number; - warningCount: number; - conflictsByType: { - extraAnnotations: number; - missingAnnotations: number; - mismatchingLabel: number; - lowOverlap: number; - mismatchingDirection: number; - mismatchingAttributes: number; - mismatchingGroups: number; - coveredAnnotation: number; - } -} - -export default class QualityReport { - public readonly id: number; - public readonly parentId: number; - public readonly taskId: number; - public readonly jobId: number; - public readonly target: string; - public readonly createdDate: string; - public readonly gtLastUpdated: string; - public readonly summary: QualitySummary; - public readonly parameters: object; - - constructor(initialData: RawQualityReportData) { - const data: RawQualityReportData = { - id: undefined, - parent_id: undefined, - task_id: undefined, - job_id: undefined, - target: '', - gt_last_updated: undefined, - summary: undefined, - parameters: {}, - created_date: undefined, - }; - - for (const property in data) { - if (Object.prototype.hasOwnProperty.call(data, property) && property in initialData) { - data[property] = initialData[property]; - } - } - - Object.defineProperties( - this, - Object.freeze({ - id: { - get: () => data.id, - }, - parentId: { - get: () => data.parent_id, - }, - taskId: { - get: () => data.task_id, - }, - jobId: { - get: () => data.job_id, - }, - target: { - get: () => data.target, - }, - gtLastUpdated: { - get: () => data.gt_last_updated, - }, - summary: { - get: () => ({ - frameCount: data.summary.frame_count, - frameSharePercent: data.summary.frame_share_percent * 100, - conflictCount: data.summary.conflict_count, - validCount: data.summary.valid_count, - dsCount: data.summary.ds_count, - gtCount: data.summary.gt_count, - accuracy: (data.summary.valid_count / - (data.summary.ds_count + data.summary.gt_count - data.summary.valid_count)) * 100, - precision: (data.summary.valid_count / data.summary.gt_count) * 100, - recall: (data.summary.valid_count / data.summary.ds_count) * 100, - conflictsByType: { - extraAnnotations: data.summary.conflicts_by_type?.extra_annotation, - missingAnnotations: data.summary.conflicts_by_type?.missing_annotation, - mismatchingLabel: data.summary.conflicts_by_type?.mismatching_label, - lowOverlap: data.summary.conflicts_by_type?.low_overlap, - mismatchingDirection: data.summary.conflicts_by_type?.mismatching_direction, - mismatchingAttributes: data.summary.conflicts_by_type?.mismatching_attributes, - mismatchingGroups: data.summary.conflicts_by_type?.mismatching_groups, - coveredAnnotation: data.summary.conflicts_by_type?.covered_annotation, - }, - errorCount: data.summary.error_count, - warningCount: data.summary.warning_count, - }), - }, - parameters: { - get: () => data.parameters, - }, - createdDate: { - get: () => data.created_date, - }, - }), - ); - } -} diff --git a/cvat-core/src/quality-settings.ts b/cvat-core/src/quality-settings.ts deleted file mode 100644 index 745b7ea958e5..000000000000 --- a/cvat-core/src/quality-settings.ts +++ /dev/null @@ -1,184 +0,0 @@ -// Copyright (C) 2023 CVAT.ai Corporation -// -// SPDX-License-Identifier: MIT - -import PluginRegistry from './plugins'; -import serverProxy from './server-proxy'; - -export interface RawQualitySettingsData { - id?: number; - task?: number; - iou_threshold?: number; - oks_sigma?: number; - line_thickness?: number; - low_overlap_threshold?: number; - oriented_lines?: boolean; - line_orientation_threshold?: number; - compare_groups?: boolean; - group_match_threshold?: number; - check_covered_annotations?: boolean; - object_visibility_threshold?: number; - panoptic_comparison?: boolean; - compare_attributes?: boolean; -} - -export default class QualitySettings { - public readonly id: number; - public readonly task: number; - public iouThreshold: number; - public oksSigma: number; - public lineThickness: number; - public lowOverlapThreshold: number; - public orientedLines: boolean; - public lineOrientationThreshold: number; - public compareGroups: boolean; - public groupMatchThreshold: number; - public checkCoveredAnnotations: boolean; - public objectVisibilityThreshold: number; - public panopticComparison: boolean; - public compareAttributes: boolean; - - constructor(initialData: RawQualitySettingsData) { - const data: RawQualitySettingsData = { - id: undefined, - task: undefined, - iou_threshold: undefined, - oks_sigma: undefined, - line_thickness: undefined, - low_overlap_threshold: undefined, - oriented_lines: undefined, - line_orientation_threshold: undefined, - compare_groups: undefined, - group_match_threshold: undefined, - check_covered_annotations: undefined, - object_visibility_threshold: undefined, - panoptic_comparison: undefined, - compare_attributes: undefined, - }; - - for (const property in data) { - if (Object.prototype.hasOwnProperty.call(data, property) && property in initialData) { - data[property] = initialData[property]; - } - } - - Object.defineProperties( - this, - Object.freeze({ - id: { - get: () => data.id, - }, - task: { - get: () => data.task, - }, - iouThreshold: { - get: () => data.iou_threshold, - set: (value: number) => { - data.iou_threshold = value; - }, - }, - oksSigma: { - get: () => data.oks_sigma, - set: (value: number) => { - data.oks_sigma = value; - }, - }, - lineThickness: { - get: () => data.line_thickness, - set: (value: number) => { - data.line_thickness = value; - }, - }, - lowOverlapThreshold: { - get: () => data.low_overlap_threshold, - set: (value: number) => { - data.low_overlap_threshold = value; - }, - }, - orientedLines: { - get: () => data.oriented_lines, - set: (value: boolean) => { - data.oriented_lines = value; - }, - }, - lineOrientationThreshold: { - get: () => data.line_orientation_threshold, - set: (value: number) => { - data.line_orientation_threshold = value; - }, - }, - compareGroups: { - get: () => data.compare_groups, - set: (value: boolean) => { - data.compare_groups = value; - }, - }, - groupMatchThreshold: { - get: () => data.group_match_threshold, - set: (value: number) => { - data.group_match_threshold = value; - }, - }, - checkCoveredAnnotations: { - get: () => data.check_covered_annotations, - set: (value: boolean) => { - data.check_covered_annotations = value; - }, - }, - objectVisibilityThreshold: { - get: () => data.object_visibility_threshold, - set: (value: number) => { - data.object_visibility_threshold = value; - }, - }, - panopticComparison: { - get: () => data.panoptic_comparison, - set: (value: boolean) => { - data.panoptic_comparison = value; - }, - }, - compareAttributes: { - get: () => data.compare_attributes, - set: (value: boolean) => { - data.compare_attributes = value; - }, - }, - }), - ); - } - - public toJSON(): RawQualitySettingsData { - const result: RawQualitySettingsData = { - iou_threshold: this.iouThreshold, - oks_sigma: this.oksSigma, - line_thickness: this.lineThickness, - low_overlap_threshold: this.lowOverlapThreshold, - oriented_lines: this.orientedLines, - line_orientation_threshold: this.lineOrientationThreshold, - compare_groups: this.compareGroups, - group_match_threshold: this.groupMatchThreshold, - check_covered_annotations: this.checkCoveredAnnotations, - object_visibility_threshold: this.objectVisibilityThreshold, - panoptic_comparison: this.panopticComparison, - compare_attributes: this.compareAttributes, - }; - - return result; - } - - public async save(): Promise { - const result = await PluginRegistry.apiWrapper.call(this, QualitySettings.prototype.save); - return result; - } -} - -Object.defineProperties(QualitySettings.prototype.save, { - implementation: { - writable: false, - enumerable: false, - value: async function implementation() { - const result = await serverProxy.analytics.quality.settings.update(this.id, this.toJSON()); - return new QualitySettings(result); - }, - }, -}); diff --git a/cvat-core/src/server-proxy.ts b/cvat-core/src/server-proxy.ts index d5c542e88acb..0410f6308982 100644 --- a/cvat-core/src/server-proxy.ts +++ b/cvat-core/src/server-proxy.ts @@ -13,8 +13,6 @@ import { SerializedAbout, SerializedRemoteFile, SerializedUserAgreement, SerializedRegister, JobsFilter, SerializedJob, } from 'server-response-types'; -import { RawQualityReportData } from 'quality-report'; -import { RawQualitySettingsData } from 'quality-settings'; import { Storage } from './storage'; import { StorageLocation, WebhookSourceType } from './enums'; import { isEmail } from './common'; @@ -22,7 +20,6 @@ import config from './config'; import DownloadWorker from './download.worker'; import { ServerError } from './exceptions'; import { FunctionsResponseBody } from './server-response-types'; -import { RawQualityConflictData } from './quality-conflict'; type Params = { org: number | string, @@ -1244,38 +1241,36 @@ async function getJobs( return response.data; } -async function getIssues(filter) { +async function getJobIssues(jobID: number) { const { backendAPI } = config; let response = null; try { const organization = enableOrganization(); response = await fetchAll(`${backendAPI}/issues`, { - ...filter, + job_id: jobID, ...organization, }); - if (filter.job_id) { - const commentsResponse = await fetchAll(`${backendAPI}/comments`, { - ...filter, - ...organization, - }); + const commentsResponse = await fetchAll(`${backendAPI}/comments`, { + job_id: jobID, + ...organization, + }); - const issuesById = response.results.reduce((acc, val: { id: number }) => { - acc[val.id] = val; - return acc; - }, {}); + const issuesById = response.results.reduce((acc, val: { id: number }) => { + acc[val.id] = val; + return acc; + }, {}); - const commentsByIssue = commentsResponse.results.reduce((acc, val) => { - acc[val.issue] = acc[val.issue] || []; - acc[val.issue].push(val); - return acc; - }, {}); + const commentsByIssue = commentsResponse.results.reduce((acc, val) => { + acc[val.issue] = acc[val.issue] || []; + acc[val.issue].push(val); + return acc; + }, {}); - for (const issue of Object.keys(commentsByIssue)) { - commentsByIssue[issue].sort((a, b) => a.id - b.id); - issuesById[issue].comments = commentsByIssue[issue]; - } + for (const issue of Object.keys(commentsByIssue)) { + commentsByIssue[issue].sort((a, b) => a.id - b.id); + issuesById[issue].comments = commentsByIssue[issue]; } } catch (errorData) { throw generateError(errorData); @@ -1356,33 +1351,6 @@ async function saveJob(id: number, jobData: Partial): Promise): Promise { - const { backendAPI } = config; - - let response = null; - try { - response = await Axios.post(`${backendAPI}/jobs`, jobData); - } catch (errorData) { - throw generateError(errorData); - } - - return response.data; -} - -async function deleteJob(jobID: number): Promise { - const { backendAPI } = config; - - try { - await Axios.delete(`${backendAPI}/jobs/${jobID}`, { - params: { - ...enableOrganization(), - }, - }); - } catch (errorData) { - throw generateError(errorData); - } -} - async function getUsers(filter = { page_size: 'all' }) { const { backendAPI } = config; @@ -2178,73 +2146,6 @@ async function receiveWebhookEvents(type: WebhookSourceType): Promise } } -async function getQualityReports(filter): Promise { - const params = enableOrganization(); - const { backendAPI } = config; - - try { - const response = await Axios.get(`${backendAPI}/quality/reports`, { - params: { - ...params, - ...filter, - }, - }); - - return response.data.results; - } catch (errorData) { - throw generateError(errorData); - } -} - -async function getQualityConflicts(filter): Promise { - const params = enableOrganization(); - const { backendAPI } = config; - - try { - const response = await fetchAll(`${backendAPI}/quality/conflicts`, { - ...params, - ...filter, - }); - - return response.results; - } catch (errorData) { - throw generateError(errorData); - } -} - -async function getQualitySettings(settingsID: number): Promise { - const params = enableOrganization(); - const { backendAPI } = config; - - try { - const response = await Axios.get(`${backendAPI}/quality/settings/${settingsID}`, { - params: { - ...params, - }, - }); - return response.data; - } catch (errorData) { - throw generateError(errorData); - } -} - -async function updateQualitySettings( - settingsID: number, - settingsData: RawQualitySettingsData, -): Promise { - const params = enableOrganization(); - const { backendAPI } = config; - - try { - const response = await Axios.patch(`${backendAPI}/quality/settings/${settingsID}`, settingsData, { - params, - }); - return response.data; - } catch (errorData) { - throw generateError(errorData); - } -} - export default Object.freeze({ server: Object.freeze({ setAuthData, @@ -2299,8 +2200,6 @@ export default Object.freeze({ get: getJobs, getPreview: getPreview('jobs'), save: saveJob, - create: createJob, - delete: deleteJob, exportDataset: exportDataset('jobs'), }), @@ -2352,7 +2251,7 @@ export default Object.freeze({ issues: Object.freeze({ create: createIssue, update: updateIssue, - get: getIssues, + get: getJobIssues, delete: deleteIssue, }), @@ -2390,15 +2289,4 @@ export default Object.freeze({ ping: pingWebhook, events: receiveWebhookEvents, }), - - analytics: Object.freeze({ - quality: Object.freeze({ - reports: getQualityReports, - conflicts: getQualityConflicts, - settings: Object.freeze({ - get: getQualitySettings, - update: updateQualitySettings, - }), - }), - }), }); diff --git a/cvat-core/src/server-response-types.ts b/cvat-core/src/server-response-types.ts index 8a68128eb153..c0d80eda159d 100644 --- a/cvat-core/src/server-response-types.ts +++ b/cvat-core/src/server-response-types.ts @@ -4,7 +4,7 @@ import { ChunkType, - DimensionType, JobStage, JobState, JobType, ProjectStatus, + DimensionType, JobStage, JobState, ProjectStatus, ShareFileType, TaskMode, TaskStatus, } from 'enums'; import { SerializedModel } from 'core-types'; @@ -117,10 +117,8 @@ export interface SerializedJob { project_id: number | null; stage: JobStage; state: JobState; - type: JobType; startFrame: number; stopFrame: number; - frameCount: number; task_id: number; updated_date: string; url: string; diff --git a/cvat-core/src/session-implementation.ts b/cvat-core/src/session-implementation.ts index ac09dedc419c..bdde1c7c21de 100644 --- a/cvat-core/src/session-implementation.ts +++ b/cvat-core/src/session-implementation.ts @@ -4,7 +4,7 @@ // SPDX-License-Identifier: MIT import { ArgumentError } from './exceptions'; -import { HistoryActions, JobType } from './enums'; +import { HistoryActions } from './enums'; import { Storage } from './storage'; import loggerStorage from './logger-storage'; import serverProxy from './server-proxy'; @@ -14,7 +14,7 @@ import { restoreFrame, getRanges, clear as clearFrames, - findFrame, + findNotDeletedFrame, getContextImage, patchMeta, getDeletedFrames, @@ -61,7 +61,7 @@ async function restoreFrameWrapper(jobID, frame) { } export function implementJob(Job) { - Job.prototype.save.implementation = async function (additionalData: any) { + Job.prototype.save.implementation = async function () { if (this.id) { const jobData = this._updateTrigger.getUpdated(this); if (jobData.assignee) { @@ -73,27 +73,11 @@ export function implementJob(Job) { return new Job(data); } - const jobSpec = { - ...(this.assignee ? { assignee: this.assignee.id } : {}), - ...(this.stage ? { stage: this.stage } : {}), - ...(this.state ? { stage: this.state } : {}), - type: this.type, - task_id: this.taskId, - }; - const job = await serverProxy.jobs.create({ ...jobSpec, ...additionalData }); - return new Job(job); - }; - - Job.prototype.delete.implementation = async function () { - if (this.type !== JobType.GROUND_TRUTH) { - throw new Error('Only ground truth job can be deleted'); - } - const result = await serverProxy.jobs.delete(this.id); - return result; + throw new ArgumentError('Could not save job without id'); }; Job.prototype.issues.implementation = async function () { - const result = await serverProxy.issues.get({job_id: this.id }); + const result = await serverProxy.issues.get(this.id); return result.map((issue) => new Issue(issue)); }; @@ -197,18 +181,13 @@ export function implementJob(Job) { throw new ArgumentError('The stop frame is out of the job'); } if (filters.notDeleted) { - return findFrame(this.id, frameFrom, frameTo, filters, this.frameMeta); + return findNotDeletedFrame(this.id, frameFrom, frameTo, filters.offset || 1); } return null; }; - Job.prototype.frames.updateMeta.implementation = async function (meta) { - this.frameMeta = meta; - return null; - }; - // TODO: Check filter for annotations - Job.prototype.annotations.get.implementation = async function (frame, allTracks, filters, groundTruthJobId) { + Job.prototype.annotations.get.implementation = async function (frame, allTracks, filters) { if (!Array.isArray(filters)) { throw new ArgumentError('Filters must be an array'); } @@ -221,7 +200,7 @@ export function implementJob(Job) { throw new ArgumentError(`Frame ${frame} does not exist in the job`); } - const annotationsData = await getAnnotations(this, frame, allTracks, filters, groundTruthJobId); + const annotationsData = await getAnnotations(this, frame, allTracks, filters); const deletedFrames = await getDeletedFrames('job', this.id); if (frame in deletedFrames) { return []; @@ -521,11 +500,6 @@ export function implementTask(Task) { return result; }; - Task.prototype.issues.implementation = async function () { - const result = await serverProxy.issues.get({ task_id: this.id }); - return result.map((issue) => new Issue(issue)); - }; - Task.prototype.backup.implementation = async function ( targetStorage: Storage, useDefaultSettings: boolean, diff --git a/cvat-core/src/session.ts b/cvat-core/src/session.ts index 9a6fe24d5e90..4a01202de8ca 100644 --- a/cvat-core/src/session.ts +++ b/cvat-core/src/session.ts @@ -6,7 +6,7 @@ import _ from 'lodash'; import { ChunkType, DimensionType, JobStage, - JobState, JobType, StorageLocation, TaskMode, TaskStatus, + JobState, StorageLocation, TaskMode, TaskStatus, } from './enums'; import { Storage } from './storage'; @@ -67,14 +67,13 @@ function buildDuplicatedAPI(prototype) { return result; }, - async get(frame, allTracks = false, filters = [], groundTruthJobId = null) { + async get(frame, allTracks = false, filters = []) { const result = await PluginRegistry.apiWrapper.call( this, prototype.annotations.get, frame, allTracks, filters, - groundTruthJobId, ); return result; }, @@ -234,14 +233,6 @@ function buildDuplicatedAPI(prototype) { ); return result; }, - async updateMeta(meta) { - const result = await PluginRegistry.apiWrapper.call( - this, - prototype.frames.updateMeta, - meta, - ); - return result; - }, }, writable: true, }), @@ -320,19 +311,13 @@ export class Job extends Session { public readonly id: number; public readonly startFrame: number; public readonly stopFrame: number; - public readonly frameCount: number; public readonly projectId: number | null; public readonly taskId: number; public readonly dimension: DimensionType; - public readonly dataChunkType: ChunkType; + public readonly dataCompressedChunkType: ChunkType; public readonly bugTracker: string | null; public readonly mode: TaskMode; public readonly labels: Label[]; - public readonly type: JobType; - public readonly frameSelectionMethod: JobType; - public readonly createdDate: string; - public readonly updatedDate: string; - public frameMeta: { conflictedFrames: number[] }; public annotations: { get: CallableFunction; @@ -370,7 +355,6 @@ export class Job extends Session { preview: CallableFunction; contextImage: CallableFunction; search: CallableFunction; - updateMeta: CallableFunction; }; public logger: { @@ -384,10 +368,8 @@ export class Job extends Session { assignee: null, stage: undefined, state: undefined, - type: JobType.ANNOTATION, start_frame: undefined, stop_frame: undefined, - frame_count: undefined, project_id: null, task_id: undefined, labels: [], @@ -396,8 +378,6 @@ export class Job extends Session { data_chunk_size: undefined, bug_tracker: null, mode: undefined, - created_date: undefined, - updated_date: undefined, }; const updateTrigger = new FieldUpdateTrigger(); @@ -407,6 +387,10 @@ export class Job extends Session { if (property in initialData) { data[property] = initialData[property]; } + + if (data[property] === undefined) { + throw new ArgumentError(`Job field "${property}" was not initialized`); + } } } @@ -422,7 +406,6 @@ export class Job extends Session { return new Label(labelData); }).filter((label) => !label.hasParent); } - let frameMeta = { conflictedFrames: [] }; Object.defineProperties( this, @@ -484,18 +467,12 @@ export class Job extends Session { data.state = state; }, }, - type: { - get: () => data.type, - }, startFrame: { get: () => data.start_frame, }, stopFrame: { get: () => data.stop_frame, }, - frameCount: { - get: () => data.frame_count, - }, projectId: { get: () => data.project_id, }, @@ -520,18 +497,6 @@ export class Job extends Session { bugTracker: { get: () => data.bug_tracker, }, - createdDate: { - get: () => data.created_date, - }, - updatedDate: { - get: () => data.updated_date, - }, - frameMeta: { - get: () => frameMeta, - set: (meta) => { - frameMeta = meta; - }, - }, _updateTrigger: { get: () => updateTrigger, }, @@ -577,7 +542,6 @@ export class Job extends Session { preview: Object.getPrototypeOf(this).frames.preview.bind(this), search: Object.getPrototypeOf(this).frames.search.bind(this), contextImage: Object.getPrototypeOf(this).frames.contextImage.bind(this), - updateMeta: Object.getPrototypeOf(this).frames.updateMeta.bind(this), }; this.logger = { @@ -585,8 +549,8 @@ export class Job extends Session { }; } - async save(additionalData = {}) { - const result = await PluginRegistry.apiWrapper.call(this, Job.prototype.save, additionalData); + async save() { + const result = await PluginRegistry.apiWrapper.call(this, Job.prototype.save); return result; } @@ -604,11 +568,6 @@ export class Job extends Session { const result = await PluginRegistry.apiWrapper.call(this, Job.prototype.close); return result; } - - async delete(): Promise { - const result = await PluginRegistry.apiWrapper.call(this, Job.prototype.delete); - return result; - } } export class Task extends Session { @@ -629,7 +588,8 @@ export class Task extends Session { public readonly segmentSize: number; public readonly imageQuality: number; public readonly dataChunkSize: number; - public readonly dataChunkType: ChunkType; + public readonly dataCompressedChunkType: ChunkType; + public readonly dataOriginalChunkType: ChunkType; public readonly dimension: DimensionType; public readonly sourceStorage: Storage; public readonly targetStorage: Storage; @@ -646,8 +606,6 @@ export class Task extends Session { public readonly cloudStorageID: number; public readonly sortingMethod: string; - public readonly qualitySettingsID: number; - public annotations: { get: CallableFunction; put: CallableFunction; @@ -729,8 +687,6 @@ export class Task extends Session { cloud_storage_id: undefined, sorting_method: undefined, files: undefined, - - quality_settings: undefined, }; const updateTrigger = new FieldUpdateTrigger(); @@ -771,12 +727,8 @@ export class Task extends Session { assignee: job.assignee, state: job.state, stage: job.stage, - type: job.type, start_frame: job.start_frame, stop_frame: job.stop_frame, - frame_count: job.frame_count, - created_date: job.created_date, - updated_date: job.updated_date, // following fields also returned when doing API request /jobs/ // here we know them from task and append to constructor @@ -789,6 +741,7 @@ export class Task extends Session { data_compressed_chunk_type: data.data_compressed_chunk_type, data_chunk_size: data.data_chunk_size, }); + data.jobs.push(jobInstance); } } @@ -1047,9 +1000,6 @@ export class Task extends Session { progress: { get: () => data.progress, }, - qualitySettingsID: { - get: () => data.quality_settings, - }, _internalData: { get: () => data, }, @@ -1131,11 +1081,6 @@ export class Task extends Session { return result; } - async issues() { - const result = await PluginRegistry.apiWrapper.call(this, Task.prototype.issues); - return result; - } - static async restore(storage: Storage, file: File | string) { const result = await PluginRegistry.apiWrapper.call(this, Task.restore, storage, file); return result; diff --git a/cvat-ui/package.json b/cvat-ui/package.json index 4e1f23ed12d6..9e4994a994b7 100644 --- a/cvat-ui/package.json +++ b/cvat-ui/package.json @@ -21,7 +21,6 @@ "license": "MIT", "dependencies": { "@ant-design/icons": "^4.6.3", - "@types/json-logic-js": "^2.0.2", "@types/lodash": "^4.14.172", "@types/lru-cache": "^7.10.10", "@types/platform": "^1.3.4", @@ -42,7 +41,6 @@ "cvat-core": "link:./../cvat-core", "dotenv-webpack": "^8.0.1", "error-stack-parser": "^2.0.6", - "json-logic-js": "^2.0.2", "lodash": "^4.17.21", "lru-cache": "^9.1.1", "moment": "^2.29.2", diff --git a/cvat-ui/src/actions/analytics-actions.ts b/cvat-ui/src/actions/analytics-actions.ts deleted file mode 100644 index 7121f2581303..000000000000 --- a/cvat-ui/src/actions/analytics-actions.ts +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright (C) 2023 CVAT.ai Corporation -// -// SPDX-License-Identifier: MIT - -import { - getCore, QualityReport, QualitySettings, Task, -} from 'cvat-core-wrapper'; -import { Dispatch, ActionCreator } from 'redux'; -import { QualityQuery } from 'reducers'; -import { ActionUnion, createAction, ThunkAction } from 'utils/redux'; -// import { filterNull } from 'utils/filter-null'; - -const cvat = getCore(); - -export enum AnalyticsActionsTypes { - GET_QUALITY_REPORTS = 'GET_QUALITY_REPORTS', - GET_QUALITY_REPORTS_SUCCESS = 'GET_QUALITY_REPORTS_SUCCESS', - GET_QUALITY_REPORTS_FAILED = 'GET_QUALITY_REPORTS_FAILED', - SWITCH_QUALITY_SETTINGS_VISIBLE = 'SWITCH_QUALITY_SETTINGS_VISIBLE', - GET_QUALITY_SETTINGS = 'GET_QUALITY_SETTINS', - GET_QUALITY_SETTINGS_SUCCESS = 'GET_QUALITY_SETTINGS_SUCCESS', - GET_QUALITY_SETTINGS_FAILED = 'GET_QUALITY_SETTINGS_FAILED', - UPDATE_QUALITY_SETTINGS = 'UPDATE_QUALITY_SETTINGS', - UPDATE_QUALITY_SETTINGS_SUCCESS = 'UPDATE_QUALITY_SETTINGS_SUCCESS', - UPDATE_QUALITY_SETTINGS_FAILED = 'UPDATE_QUALITY_SETTINGS_FAILED', -} - -export const analyticsActions = { - getQualityReports: (task: Task, query: QualityQuery) => ( - createAction(AnalyticsActionsTypes.GET_QUALITY_REPORTS, { query }) - ), - getQualityReportsSuccess: (tasksReports: QualityReport[], jobsReports: QualityReport[]) => createAction( - AnalyticsActionsTypes.GET_QUALITY_REPORTS_SUCCESS, { tasksReports, jobsReports }, - ), - getQualityReportsFailed: (error: any) => createAction(AnalyticsActionsTypes.GET_QUALITY_REPORTS_FAILED, { error }), - switchQualitySettingsVisible: (visible: boolean) => ( - createAction(AnalyticsActionsTypes.SWITCH_QUALITY_SETTINGS_VISIBLE, { visible }) - ), - getQualitySettings: (settingsID: number) => ( - createAction(AnalyticsActionsTypes.GET_QUALITY_SETTINGS, { settingsID }) - ), - getQualitySettingsSuccess: (settings: QualitySettings) => ( - createAction(AnalyticsActionsTypes.GET_QUALITY_SETTINGS_SUCCESS, { settings }) - ), - getQualitySettingsFailed: (error: any) => ( - createAction(AnalyticsActionsTypes.GET_QUALITY_SETTINGS_FAILED, { error }) - ), - updateQualitySettings: (settings: QualitySettings) => ( - createAction(AnalyticsActionsTypes.UPDATE_QUALITY_SETTINGS, { settings }) - ), - updateQualitySettingsSuccess: (settings: QualitySettings) => ( - createAction(AnalyticsActionsTypes.UPDATE_QUALITY_SETTINGS_SUCCESS, { settings }) - ), - updateQualitySettingsFailed: (error: any) => ( - createAction(AnalyticsActionsTypes.UPDATE_QUALITY_SETTINGS_FAILED, { error }) - ), -}; - -export const getQualityReportsAsync = (task: Task, query: QualityQuery): ThunkAction => ( - async (dispatch: ActionCreator): Promise => { - dispatch(analyticsActions.getQualityReports(task, query)); - - // const filteredQuery = filterNull(query); - - try { - // reports are returned in order -created_date - const [taskReport] = await cvat.analytics.quality.reports({ taskId: task.id, target: 'task' }); - const jobReports = await cvat.analytics.quality.reports({ taskId: task.id, target: 'job' }); - const jobIds = task.jobs.map((job) => job.id); - const relevantReports: QualityReport[] = []; - jobIds.forEach((jobId: number) => { - const report = jobReports.find((_report: QualityReport) => _report.jobId === jobId); - if (report) relevantReports.push(report); - }); - - dispatch(analyticsActions.getQualityReportsSuccess(taskReport ? [taskReport] : [], relevantReports)); - } catch (error) { - dispatch(analyticsActions.getQualityReportsFailed(error)); - } - } -); - -export const getQualitySettingsAsync = (task: Task): ThunkAction => ( - async (dispatch: ActionCreator): Promise => { - dispatch(analyticsActions.getQualitySettings(task.id)); - try { - const qualitySettings = await cvat.analytics.quality.settings.get(task.qualitySettingsID); - - dispatch(analyticsActions.getQualitySettingsSuccess(qualitySettings)); - } catch (error) { - dispatch(analyticsActions.getQualityReportsFailed(error)); - } - } -); - -export const updateQualitySettingsAsync = (qualitySettings: QualitySettings): ThunkAction => ( - async (dispatch: ActionCreator): Promise => { - dispatch(analyticsActions.updateQualitySettings(qualitySettings)); - - try { - const updatedQualitySettings = await qualitySettings.save(); - dispatch(analyticsActions.updateQualitySettingsSuccess(updatedQualitySettings)); - } catch (error) { - dispatch(analyticsActions.updateQualitySettingsFailed(error)); - throw error; - } - } -); - -export type AnalyticsActions = ActionUnion; diff --git a/cvat-ui/src/actions/annotation-actions.ts b/cvat-ui/src/actions/annotation-actions.ts index b80ff92a5e20..eea338f50f7d 100644 --- a/cvat-ui/src/actions/annotation-actions.ts +++ b/cvat-ui/src/actions/annotation-actions.ts @@ -12,9 +12,7 @@ import { CanvasMode as Canvas3DMode } from 'cvat-canvas3d-wrapper'; import { RectDrawingMethod, CuboidDrawingMethod, Canvas, CanvasMode as Canvas2DMode, } from 'cvat-canvas-wrapper'; -import { - getCore, MLModel, DimensionType, JobType, Job, QualityConflict, -} from 'cvat-core-wrapper'; +import { getCore, MLModel, DimensionType } from 'cvat-core-wrapper'; import logger, { LogType } from 'cvat-logger'; import { getCVATStore } from 'cvat-store'; @@ -163,7 +161,6 @@ export enum AnnotationActionTypes { SWITCH_PROPAGATE_VISIBILITY = 'SWITCH_PROPAGATE_VISIBILITY', SWITCH_SHOWING_STATISTICS = 'SWITCH_SHOWING_STATISTICS', SWITCH_SHOWING_FILTERS = 'SWITCH_SHOWING_FILTERS', - CHANGE_FRAME_FILTERS = 'CHANGE_FRAME_FILTERS', COLLECT_STATISTICS = 'COLLECT_STATISTICS', COLLECT_STATISTICS_SUCCESS = 'COLLECT_STATISTICS_SUCCESS', COLLECT_STATISTICS_FAILED = 'COLLECT_STATISTICS_FAILED', @@ -596,7 +593,6 @@ export function changeFrameAsync( visible: statisticsVisible, }, } = state.annotation; - const { filters, frame, showAllInterpolationTracks } = receiveAnnotationsParameters(); try { @@ -637,8 +633,6 @@ export function changeFrameAsync( const data = await job.frames.get(toFrame, fillBuffer, frameStep); const states = await job.annotations.get(toFrame, showAllInterpolationTracks, filters); - // const groundTruthStates = states.filter((_state: any) => _state.isGroundTruth); - // if (!showGroundTruth) states = states.filter((_state: any) => !_state.isGroundTruth); if (!isAbleToChangeFrame() || statisticsVisible || propagateVisible) { // while doing async actions above, canvas can become used by a user in another way @@ -883,7 +877,6 @@ export function getJobAsync( try { const state = getState(); const filters = initialFilters; - const { settings: { workspace: { showAllInterpolationTracks }, @@ -912,25 +905,6 @@ export function getJobAsync( ); const [job] = await cvat.jobs.get({ jobID: jid }); - let gtJob = null; - if (job.type === JobType.ANNOTATION) { - try { - const [task] = await cvat.tasks.get({ id: tid }); - [gtJob] = task.jobs.filter((_job: Job) => _job.type === JobType.GROUND_TRUTH); - // eslint-disable-next-line no-empty - } catch (e) { } - } - - const groundTruthJobId = gtJob ? gtJob.id : null; - let conflicts: QualityConflict[] = []; - if (groundTruthJobId) { - const [report] = await cvat.analytics.quality.reports({ jobId: job.id, target: 'job' }); - if (report) conflicts = await cvat.analytics.quality.conflicts({ reportId: report.id }); - } - - const conflictedFrames = conflicts.map((conflict: QualityConflict) => conflict.frame); - await job.frames.updateMeta({ conflictedFrames: [...new Set(conflictedFrames)] }); - // navigate to correct first frame according to setup let frameNumber; if (initialFrame === null && !showDeletedFrames) { @@ -954,11 +928,7 @@ export function getJobAsync( }, }); } - - const states = await job.annotations.get( - frameNumber, showAllInterpolationTracks, filters, groundTruthJobId, - ); - + const states = await job.annotations.get(frameNumber, showAllInterpolationTracks, filters); const issues = await job.issues(); const [minZ, maxZ] = computeZRange(states); const colors = [...cvat.enums.colors]; @@ -971,10 +941,8 @@ export function getJobAsync( payload: { openTime, job, - groundTruthJobId, issues, states, - conflicts, frameNumber, frameFilename: frameData.filename, relatedFiles: frameData.relatedFiles, @@ -1652,43 +1620,3 @@ export function restoreFrameAsync(frame: number): ThunkAction { } }; } - -export function changeFrameFiltersAsync(filters: any[]): ThunkAction { - return async (dispatch: ActionCreator): Promise => { - const state: CombinedState = getStore().getState(); - const { - annotation: { - job: { - instance: jobInstance, - }, - player: { - frame: { - number: frame, - }, - }, - }, - settings: { - player: { showDeletedFrames }, - }, - } = state; - - try { - let newFrame = await jobInstance.frames.search( - { notDeleted: !showDeletedFrames, jsonFilters: filters }, frame, jobInstance.stopFrame, - ); - if (newFrame === null && jobInstance.startFrame !== frame) { - newFrame = await jobInstance.frames.search( - { notDeleted: !showDeletedFrames, jsonFilters: filters }, frame, jobInstance.startFrame, - ); - } - if (newFrame !== null) { - dispatch(changeFrameAsync(newFrame)); - } - } finally { - dispatch({ - type: AnnotationActionTypes.CHANGE_FRAME_FILTERS, - payload: { filters }, - }); - } - }; -} diff --git a/cvat-ui/src/actions/jobs-actions.ts b/cvat-ui/src/actions/jobs-actions.ts index 4386f3d8c0b3..70dc5a6d5424 100644 --- a/cvat-ui/src/actions/jobs-actions.ts +++ b/cvat-ui/src/actions/jobs-actions.ts @@ -4,10 +4,9 @@ // SPDX-License-Identifier: MIT import { ActionUnion, createAction, ThunkAction } from 'utils/redux'; -import { getCore, Job } from 'cvat-core-wrapper'; -import { JobsQuery } from 'reducers'; +import { getCore } from 'cvat-core-wrapper'; +import { JobsQuery, Job } from 'reducers'; import { filterNull } from 'utils/filter-null'; -import { JobData } from 'components/create-job-page/job-form'; const cvat = getCore(); @@ -18,10 +17,6 @@ export enum JobsActionTypes { GET_JOB_PREVIEW = 'GET_JOB_PREVIEW', GET_JOB_PREVIEW_SUCCESS = 'GET_JOB_PREVIEW_SUCCESS', GET_JOB_PREVIEW_FAILED = 'GET_JOB_PREVIEW_FAILED', - CREATE_JOB_FAILED = 'CREATE_JOB_FAILED', - DELETE_JOB = 'DELETE_JOB', - DELETE_JOB_SUCCESS = 'DELETE_JOB_SUCCESS', - DELETE_JOB_FAILED = 'DELETE_JOB_FAILED', } interface JobsList extends Array { @@ -43,18 +38,6 @@ const jobsActions = { getJobPreviewFailed: (jobID: number, error: any) => ( createAction(JobsActionTypes.GET_JOB_PREVIEW_FAILED, { jobID, error }) ), - createJobFailed: (error: any) => ( - createAction(JobsActionTypes.CREATE_JOB_FAILED, { error }) - ), - deleteJob: (jobID: number) => ( - createAction(JobsActionTypes.DELETE_JOB, { jobID }) - ), - deleteJobSuccess: (jobID: number) => ( - createAction(JobsActionTypes.DELETE_JOB_SUCCESS, { jobID }) - ), - deleteJobFailed: (jobID: number, error: any) => ( - createAction(JobsActionTypes.DELETE_JOB_FAILED, { jobID, error }) - ), }; export type JobsActions = ActionUnion; @@ -81,26 +64,3 @@ export const getJobPreviewAsync = (job: Job): ThunkAction => async (dispatch) => dispatch(jobsActions.getJobPreviewFailed(job.id, error)); } }; - -export const createJobAsync = (data: JobData): ThunkAction => async (dispatch) => { - const jobInstance = new cvat.classes.Job(data); - try { - const savedJob = await jobInstance.save(data); - return savedJob; - } catch (error) { - dispatch(jobsActions.createJobFailed(error)); - throw error; - } -}; - -export const deleteJobAsync = (job: Job): ThunkAction => async (dispatch) => { - dispatch(jobsActions.deleteJob(job.id)); - try { - await job.delete(); - } catch (error) { - dispatch(jobsActions.deleteJobFailed(job.id, error)); - return; - } - - dispatch(jobsActions.deleteJobSuccess(job.id)); -}; diff --git a/cvat-ui/src/actions/settings-actions.ts b/cvat-ui/src/actions/settings-actions.ts index 0e37fe7d3da5..70e980e5ce03 100644 --- a/cvat-ui/src/actions/settings-actions.ts +++ b/cvat-ui/src/actions/settings-actions.ts @@ -19,7 +19,6 @@ export enum SettingsActionTypes { CHANGE_SHAPES_OUTLINED_BORDERS = 'CHANGE_SHAPES_OUTLINED_BORDERS', CHANGE_SHAPES_SHOW_PROJECTIONS = 'CHANGE_SHAPES_SHOW_PROJECTIONS', CHANGE_SHOW_UNLABELED_REGIONS = 'CHANGE_SHOW_UNLABELED_REGIONS', - CHANGE_SHOW_GROUND_TRUTH = 'CHANGE_SHOW_GROUND_TRUTH', CHANGE_FRAME_STEP = 'CHANGE_FRAME_STEP', CHANGE_FRAME_SPEED = 'CHANGE_FRAME_SPEED', SWITCH_RESET_ZOOM = 'SWITCH_RESET_ZOOM', @@ -74,15 +73,6 @@ export function changeShapesColorBy(colorBy: ColorBy): AnyAction { }; } -export function changeShowGroundTruth(showGroundTruth: boolean): AnyAction { - return { - type: SettingsActionTypes.CHANGE_SHOW_GROUND_TRUTH, - payload: { - showGroundTruth, - }, - }; -} - export function changeShapesOutlinedBorders(outlined: boolean, color: string): AnyAction { return { type: SettingsActionTypes.CHANGE_SHAPES_OUTLINED_BORDERS, diff --git a/cvat-ui/src/assets/conflict.svg b/cvat-ui/src/assets/conflict.svg deleted file mode 100644 index 9ba9c877ef6a..000000000000 --- a/cvat-ui/src/assets/conflict.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - diff --git a/cvat-ui/src/assets/duration-icon.svg b/cvat-ui/src/assets/duration-icon.svg deleted file mode 100644 index 069b5ed58a11..000000000000 --- a/cvat-ui/src/assets/duration-icon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/cvat-ui/src/assets/frame-count-icon.svg b/cvat-ui/src/assets/frame-count-icon.svg deleted file mode 100644 index 3bf83dde305e..000000000000 --- a/cvat-ui/src/assets/frame-count-icon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/cvat-ui/src/assets/frames-icon.svg b/cvat-ui/src/assets/frames-icon.svg deleted file mode 100644 index 1a1aa8618bf3..000000000000 --- a/cvat-ui/src/assets/frames-icon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/cvat-ui/src/assets/show-gt-icon.svg b/cvat-ui/src/assets/show-gt-icon.svg deleted file mode 100644 index b306bf7fae20..000000000000 --- a/cvat-ui/src/assets/show-gt-icon.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/cvat-ui/src/components/actions-menu/actions-menu.tsx b/cvat-ui/src/components/actions-menu/actions-menu.tsx index 62426c332684..0fe59c8d370e 100644 --- a/cvat-ui/src/components/actions-menu/actions-menu.tsx +++ b/cvat-ui/src/components/actions-menu/actions-menu.tsx @@ -35,7 +35,6 @@ export enum Actions { MOVE_TASK_TO_PROJECT = 'move_task_to_project', OPEN_BUG_TRACKER = 'open_bug_tracker', BACKUP_TASK = 'backup_task', - VIEW_ANALYTICS = 'view_analytics', } function ActionsMenuComponent(props: Props): JSX.Element { @@ -108,18 +107,10 @@ function ActionsMenuComponent(props: Props): JSX.Element { ), 40]); - menuItems.push([( - - View analytics - - ), 50]); - if (projectID === null) { menuItems.push([( Move to project - ), 60]); + ), 50]); } menuItems.push([( @@ -127,7 +118,7 @@ function ActionsMenuComponent(props: Props): JSX.Element { Delete - ), 70]); + ), 60]); menuItems.push( ...plugins.map(({ component: Component, weight }, index) => { diff --git a/cvat-ui/src/components/annotation-page/appearance-block.tsx b/cvat-ui/src/components/annotation-page/appearance-block.tsx index 58055ace5f1a..5970f1442c05 100644 --- a/cvat-ui/src/components/annotation-page/appearance-block.tsx +++ b/cvat-ui/src/components/annotation-page/appearance-block.tsx @@ -14,7 +14,7 @@ import Button from 'antd/lib/button'; import ColorPicker from 'components/annotation-page/standard-workspace/objects-side-bar/color-picker'; import { ColorizeIcon } from 'icons'; -import { ColorBy, CombinedState, Workspace } from 'reducers'; +import { ColorBy, CombinedState } from 'reducers'; import { DimensionType } from 'cvat-core-wrapper'; import { collapseAppearance as collapseAppearanceAction } from 'actions/annotation-actions'; import { @@ -35,7 +35,6 @@ interface StateToProps { outlineColor: string; showBitmap: boolean; showProjections: boolean; - workspace: Workspace; jobInstance: any; } @@ -53,7 +52,6 @@ function mapStateToProps(state: CombinedState): StateToProps { const { annotation: { appearanceCollapsed, - workspace, job: { instance: jobInstance }, }, settings: { @@ -72,7 +70,6 @@ function mapStateToProps(state: CombinedState): StateToProps { outlineColor, showBitmap, showProjections, - workspace, jobInstance, }; } diff --git a/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-context-menu.tsx b/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-context-menu.tsx index 434cc8215100..9b43ee8a825f 100644 --- a/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-context-menu.tsx +++ b/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-context-menu.tsx @@ -33,7 +33,6 @@ interface ReviewContextMenuProps { top: number; left: number; latestComments: string[]; - conflict: { description: string }; onClick: (param: MenuInfo) => void; } @@ -42,25 +41,16 @@ enum ReviewContextMenuKeys { QUICK_ISSUE_POSITION = 'quick_issue_position', QUICK_ISSUE_ATTRIBUTE = 'quick_issue_attribute', QUICK_ISSUE_FROM_LATEST = 'quick_issue_from_latest', - QUICK_ISSUE_FROM_CONFLICT = 'quick_issue_from_conflict', } function ReviewContextMenu({ - top, left, latestComments, conflict, onClick, + top, left, latestComments, onClick, }: ReviewContextMenuProps): JSX.Element { return ( Open an issue ... - {conflict ? ( - - {`Quick issue: ${conflict.description}`} - - ) : null} Quick issue: incorrect position @@ -107,7 +97,6 @@ export default function CanvasContextMenu(props: Props): JSX.Element | null { if (!visible || contextMenuClientID === null) { return null; } - const state = objectStates.find((_state: any): boolean => _state.clientID === contextMenuClientID); if (workspace === Workspace.REVIEW_WORKSPACE) { return ReactDOM.createPortal( @@ -115,9 +104,9 @@ export default function CanvasContextMenu(props: Props): JSX.Element | null { key={contextMenuClientID} top={top} left={left} - conflict={state.conflict} latestComments={latestComments} onClick={(param: MenuInfo) => { + const state = objectStates.find((_state: any): boolean => _state.clientID === contextMenuClientID); if (state) { let { points } = state; if ([ShapeType.ELLIPSE, ShapeType.RECTANGLE].includes(state.shapeType)) { @@ -155,8 +144,6 @@ export default function CanvasContextMenu(props: Props): JSX.Element | null { openIssue(points, config.QUICK_ISSUE_INCORRECT_POSITION_TEXT); } else if (param.key === ReviewContextMenuKeys.QUICK_ISSUE_ATTRIBUTE) { openIssue(points, config.QUICK_ISSUE_INCORRECT_ATTRIBUTE_TEXT); - } else if (param.key === ReviewContextMenuKeys.QUICK_ISSUE_FROM_CONFLICT) { - openIssue(points, state.conflict.description); } else if ( param.keyPath.length === 2 && param.keyPath[1] === ReviewContextMenuKeys.QUICK_ISSUE_FROM_LATEST diff --git a/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx b/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx index f12305964772..480a8ab626f8 100644 --- a/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx +++ b/cvat-ui/src/components/annotation-page/canvas/views/canvas2d/canvas-wrapper.tsx @@ -17,9 +17,7 @@ import { import { LogType } from 'cvat-logger'; import { Canvas } from 'cvat-canvas-wrapper'; import { Canvas3d } from 'cvat-canvas3d-wrapper'; -import { - AnnotationConflict, ObjectState, QualityConflict, getCore, -} from 'cvat-core-wrapper'; +import { getCore } from 'cvat-core-wrapper'; import config from 'config'; import CVATTooltip from 'components/common/cvat-tooltip'; import FrameTags from 'components/annotation-page/tag-annotation-workspace/frame-tags'; @@ -68,7 +66,6 @@ interface StateToProps { activatedStateID: number | null; activatedElementID: number | null; activatedAttributeID: number | null; - statesSources: number[]; annotations: any[]; frameData: any; frameAngle: number; @@ -108,8 +105,6 @@ interface StateToProps { switchableAutomaticBordering: boolean; keyMap: KeyMap; showTagsOnFrame: boolean; - conflicts: QualityConflict[]; - showGroundTruth: boolean; } interface DispatchToProps { @@ -158,7 +153,6 @@ function mapStateToProps(state: CombinedState): StateToProps { activatedStateID, activatedElementID, activatedAttributeID, - statesSources, zLayer: { cur: curZLayer, min: minZLayer, max: maxZLayer }, }, workspace, @@ -188,11 +182,10 @@ function mapStateToProps(state: CombinedState): StateToProps { textContent, }, shapes: { - opacity, colorBy, selectedOpacity, outlined, outlineColor, showBitmap, showProjections, showGroundTruth, + opacity, colorBy, selectedOpacity, outlined, outlineColor, showBitmap, showProjections, }, }, shortcuts: { keyMap }, - review: { conflicts }, } = state; return { @@ -244,9 +237,6 @@ function mapStateToProps(state: CombinedState): StateToProps { activeControl === ActiveControl.DRAW_POLYLINE || activeControl === ActiveControl.DRAW_MASK || activeControl === ActiveControl.EDIT, - statesSources, - conflicts, - showGroundTruth, }; } @@ -369,7 +359,6 @@ class CanvasWrapperComponent extends React.PureComponent { colorBy, outlined, outlineColor, - showGroundTruth, resetZoom, } = this.props; const { canvasInstance } = this.props as { canvasInstance: Canvas }; @@ -385,7 +374,6 @@ class CanvasWrapperComponent extends React.PureComponent { displayAllText: showObjectsTextAlways, autoborders: automaticBordering, showProjections, - showConflicts: showGroundTruth, intelligentPolygonCrop, selectedShapeOpacity: selectedOpacity, controlPointsSize, @@ -436,8 +424,6 @@ class CanvasWrapperComponent extends React.PureComponent { showProjections, colorBy, onFetchAnnotation, - statesSources, - showGroundTruth, } = this.props; const { canvasInstance } = this.props as { canvasInstance: Canvas }; @@ -456,7 +442,6 @@ class CanvasWrapperComponent extends React.PureComponent { prevProps.colorBy !== colorBy || prevProps.outlineColor !== outlineColor || prevProps.outlined !== outlined || - prevProps.showGroundTruth !== showGroundTruth || prevProps.resetZoom !== resetZoom ) { canvasInstance.configure({ @@ -474,7 +459,6 @@ class CanvasWrapperComponent extends React.PureComponent { controlPointsSize, textPosition, textContent, - showConflicts: showGroundTruth, resetZoom, }); } @@ -516,7 +500,6 @@ class CanvasWrapperComponent extends React.PureComponent { if ( prevProps.annotations !== annotations || - prevProps.statesSources !== statesSources || prevProps.frameData !== frameData || prevProps.curZLayer !== curZLayer ) { @@ -881,30 +864,13 @@ class CanvasWrapperComponent extends React.PureComponent { private updateCanvas(): void { const { - curZLayer, annotations, frameData, canvasInstance, statesSources, conflicts, - workspace, + curZLayer, annotations, frameData, canvasInstance, } = this.props; + if (frameData !== null && canvasInstance) { - const filteredAnnotations = annotations.filter((e) => e.objectType !== ObjectType.TAG); - const shownAnnotations = filteredAnnotations.filter((e) => !e.jobID || statesSources.includes(e.jobID)); - filteredAnnotations.forEach((objectState: ObjectState) => { - const conflict = conflicts.find((qualityConflict: QualityConflict) => ( - qualityConflict.annotationConflicts.some( - (annotationConflict: AnnotationConflict) => (annotationConflict.objId === objectState.serverID), - ) - )); - if (conflict && workspace === Workspace.REVIEW_WORKSPACE) { - objectState.conflict = conflict; - } else { - objectState.conflict = null; - } - }); - const finalAnnotations = filteredAnnotations.filter((objectState: ObjectState) => ( - shownAnnotations.includes(objectState) - )); canvasInstance.setup( frameData, - frameData.deleted ? [] : finalAnnotations, + frameData.deleted ? [] : annotations.filter((e) => e.objectType !== ObjectType.TAG), curZLayer, ); } diff --git a/cvat-ui/src/components/annotation-page/review-workspace/review-workspace.tsx b/cvat-ui/src/components/annotation-page/review-workspace/review-workspace.tsx index ff2bb6f73b7a..bd75dd1409a2 100644 --- a/cvat-ui/src/components/annotation-page/review-workspace/review-workspace.tsx +++ b/cvat-ui/src/components/annotation-page/review-workspace/review-workspace.tsx @@ -13,7 +13,6 @@ import ObjectSideBarComponent from 'components/annotation-page/standard-workspac import ObjectsListContainer from 'containers/annotation-page/standard-workspace/objects-side-bar/objects-list'; import CanvasContextMenuContainer from 'containers/annotation-page/canvas/canvas-context-menu'; import IssueAggregatorComponent from 'components/annotation-page/review/issues-aggregator'; -import ConflictAggregatorComponent from 'components/annotation-page/review/conflicts-aggregator'; export default function ReviewWorkspaceComponent(): JSX.Element { return ( @@ -23,7 +22,6 @@ export default function ReviewWorkspaceComponent(): JSX.Element { } /> - ); } diff --git a/cvat-ui/src/components/annotation-page/review/conflict-label.tsx b/cvat-ui/src/components/annotation-page/review/conflict-label.tsx deleted file mode 100644 index 059d315d2e81..000000000000 --- a/cvat-ui/src/components/annotation-page/review/conflict-label.tsx +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (C) 2023 CVAT.ai Corporation -// -// SPDX-License-Identifier: MIT - -import React, { - ReactPortal, useRef, -} from 'react'; -import ReactDOM from 'react-dom'; -import Tag from 'antd/lib/tag'; -import Icon from '@ant-design/icons'; -import CVATTooltip from 'components/common/cvat-tooltip'; -import { ConflictIcon } from 'icons'; -import { ConflictImportance } from 'cvat-core-wrapper'; - -interface Props { - top: number; - left: number; - angle: number; - scale: number; - text: string; - darken: boolean; - importance: ConflictImportance; - onClick: () => void; -} - -export default function ConflictLabel(props: Props): ReactPortal { - const { - top, left, angle, scale, onClick, text, importance, darken, - } = props; - - const ref = useRef(null); - const conflictColor = importance === ConflictImportance.ERROR ? 'cvat-conflict-error' : 'cvat-conflict-warning'; - const darkenColor = darken ? 'cvat-conflict-darken' : ''; - - return ReactDOM.createPortal( - - - - - , - window.document.getElementById('cvat_canvas_attachment_board') as HTMLElement, - ); -} diff --git a/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx b/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx deleted file mode 100644 index 4a6cac421e6a..000000000000 --- a/cvat-ui/src/components/annotation-page/review/conflicts-aggregator.tsx +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright (C) 2023 CVAT.ai Corporation -// -// SPDX-License-Identifier: MIT - -import './styles.scss'; -import React, { useState, useEffect } from 'react'; -import { useSelector } from 'react-redux'; - -import { CombinedState } from 'reducers'; -import { Canvas } from 'cvat-canvas/src/typescript/canvas'; - -import { AnnotationConflict, ObjectState, QualityConflict } from 'cvat-core-wrapper'; -import ConflictLabel from './conflict-label'; - -export default function ConflictAggregatorComponent(): JSX.Element | null { - const qualityConflicts = useSelector((state: CombinedState) => state.review.conflicts); - const objectStates = useSelector((state: CombinedState) => state.annotation.annotations.states); - const activatedStateID = useSelector((state: CombinedState) => state.annotation.annotations.activatedStateID); - const currentFrame = useSelector((state: CombinedState) => state.annotation.player.frame.number); - const showConflicts = useSelector((state: CombinedState) => state.settings.shapes.showGroundTruth); - const frameQualityConflicts = qualityConflicts.filter( - (conflict: QualityConflict) => conflict.frame === currentFrame, - ); - const conflicts = frameQualityConflicts.map((f: QualityConflict) => f.annotationConflicts[0]); - - const activatedObject = objectStates.find((state) => state.clientID === activatedStateID); - const conflictedIDs = activatedObject?.conflict?.annotationConflicts?.map((c: AnnotationConflict) => c.objId); - const highlightedObjectsIDs = conflictedIDs - ? conflictedIDs.map((serverID: number) => ( - objectStates.find((state) => state.serverID === serverID))?.clientID - ) - : []; - - const canvasInstance = useSelector((state: CombinedState) => state.annotation.canvas.instance); - const canvasIsReady = useSelector((state: CombinedState): boolean => state.annotation.canvas.ready); - const [geometry, setGeometry] = useState(null); - const ready = useSelector((state: CombinedState) => state.annotation.canvas.ready); - - const conflictLabels: JSX.Element[] = []; - useEffect(() => { - if (canvasInstance instanceof Canvas) { - const { geometry: updatedGeometry } = canvasInstance; - setGeometry(updatedGeometry); - - const geometryListener = (): void => { - setGeometry(canvasInstance.geometry); - }; - - canvasInstance.html().addEventListener('canvas.zoom', geometryListener); - canvasInstance.html().addEventListener('canvas.fit', geometryListener); - canvasInstance.html().addEventListener('canvas.reshape', geometryListener); - - return () => { - canvasInstance.html().removeEventListener('canvas.zoom', geometryListener); - canvasInstance.html().removeEventListener('canvas.fit', geometryListener); - canvasInstance.html().addEventListener('canvas.reshape', geometryListener); - }; - } - - return () => {}; - }, [canvasInstance, ready]); - const [mapping, setMapping] = useState([]); - useEffect(() => { - if (canvasInstance instanceof Canvas && geometry && showConflicts) { - const newMapping = conflicts.map((c: AnnotationConflict) => { - const state = objectStates.find((s: ObjectState) => s.jobID === c.jobId && s.serverID === c.objId); - if (state && canvasInstance) { - const points = canvasInstance.setupConflictsRegions(state); - if (points) { - return { - description: c.description, - importance: c.importance, - x: points[0], - y: points[1], - clientID: state.clientID, - }; - } - } - return []; - }).filter((el) => !Array.isArray(el)); - setMapping(newMapping); - } else { - setMapping([]); - } - }, [geometry, objectStates, showConflicts, currentFrame, canvasInstance, ready]); - - if (!(canvasInstance instanceof Canvas) || !canvasIsReady || !geometry) { - return null; - } - - for (const conflict of mapping) { - conflictLabels.push( - {}} - importance={conflict.importance} - darken={!!activatedStateID && (!highlightedObjectsIDs.includes(conflict.clientID))} - />, - ); - } - - return ( - <> - {conflictLabels} - - ); -} diff --git a/cvat-ui/src/components/annotation-page/review/issues-aggregator.tsx b/cvat-ui/src/components/annotation-page/review/issues-aggregator.tsx index f48bffef29d3..860ae9e21b44 100644 --- a/cvat-ui/src/components/annotation-page/review/issues-aggregator.tsx +++ b/cvat-ui/src/components/annotation-page/review/issues-aggregator.tsx @@ -25,9 +25,7 @@ export default function IssueAggregatorComponent(): JSX.Element | null { const canvasIsReady = useSelector((state: CombinedState): boolean => state.annotation.canvas.ready); const newIssuePosition = useSelector((state: CombinedState): number[] | null => state.review.newIssuePosition); const issueFetching = useSelector((state: CombinedState): number | null => state.review.fetching.issueId); - const ready = useSelector((state: CombinedState) => state.annotation.canvas.ready); const [geometry, setGeometry] = useState(null); - const issueLabels: JSX.Element[] = []; const issueDialogs: JSX.Element[] = []; @@ -52,7 +50,7 @@ export default function IssueAggregatorComponent(): JSX.Element | null { } return () => {}; - }, [canvasInstance, ready]); + }, [canvasInstance]); useEffect(() => { if (canvasInstance instanceof Canvas) { diff --git a/cvat-ui/src/components/annotation-page/review/styles.scss b/cvat-ui/src/components/annotation-page/review/styles.scss index c0110177e6e4..949844d26ebc 100644 --- a/cvat-ui/src/components/annotation-page/review/styles.scss +++ b/cvat-ui/src/components/annotation-page/review/styles.scss @@ -37,31 +37,6 @@ } } -.cvat-conflict-label { - position: absolute; - min-width: 2 * $grid-unit-size; - opacity: 0.8; - z-index: 1000; - transition: none; - pointer-events: auto; - overflow: hidden; - text-overflow: ellipsis; - border-radius: 0; - transform-origin: top left; - background: none; - border: none; - margin: 0; - - &:hover { - opacity: 1; - } - - svg { - width: 1.5em; - height: 1.5em; - } -} - .cvat-issue-dialog { width: $grid-unit-size * 35; position: absolute; @@ -135,27 +110,3 @@ color: $danger-icon-color; } - -.cvat-conflict-error { - svg { - path:first-child { - fill: #e10602; - } - } -} - -.cvat-conflict-warning { - svg { - path:first-child { - fill: #ff7300; - } - } -} - -.cvat-conflict-darken { - svg { - path:first-child { - fill: #838383; - } - } -} diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx index 4545f417bf10..295ae3c5dad0 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx +++ b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/issues-list.tsx @@ -1,45 +1,29 @@ // Copyright (C) 2020-2022 Intel Corporation -// Copyright (C) 2023 CVAT.ai Corporation // // SPDX-License-Identifier: MIT import React from 'react'; import { useSelector, useDispatch } from 'react-redux'; -import Icon, { +import { LeftOutlined, RightOutlined, EyeInvisibleFilled, EyeOutlined, CheckCircleFilled, CheckCircleOutlined, } from '@ant-design/icons'; +import Alert from 'antd/lib/alert'; import { Row, Col } from 'antd/lib/grid'; -import Text from 'antd/lib/typography/Text'; -import { activateObject, changeFrameAsync } from 'actions/annotation-actions'; +import { changeFrameAsync } from 'actions/annotation-actions'; import { reviewActions } from 'actions/review-actions'; import CVATTooltip from 'components/common/cvat-tooltip'; -import { CombinedState, Workspace } from 'reducers'; -import moment from 'moment'; -import Paragraph from 'antd/lib/typography/Paragraph'; -import { ConflictImportance, QualityConflict } from 'cvat-core-wrapper'; -import { changeShowGroundTruth } from 'actions/settings-actions'; -import { ShowGroundTruthIcon } from 'icons'; +import { CombinedState } from 'reducers'; export default function LabelsListComponent(): JSX.Element { const dispatch = useDispatch(); const frame = useSelector((state: CombinedState): number => state.annotation.player.frame.number); const frameIssues = useSelector((state: CombinedState): any[] => state.review.frameIssues); - const frameConflicts = useSelector((state: CombinedState) => state.review.frameConflicts); - const showGroundTruth = useSelector((state: CombinedState) => state.settings.shapes.showGroundTruth); const issues = useSelector((state: CombinedState): any[] => state.review.issues); - const conflicts = useSelector((state: CombinedState) => state.review.conflicts); const issuesHidden = useSelector((state: CombinedState): any => state.review.issuesHidden); const issuesResolvedHidden = useSelector((state: CombinedState): any => state.review.issuesResolvedHidden); - const objectStates = useSelector((state: CombinedState) => state.annotation.annotations.states); - const workspace = useSelector((state: CombinedState) => state.annotation.workspace); - let frames = issues.map((issue: any): number => issue.frame).sort((a: number, b: number) => +a - +b); - if (showGroundTruth) { - const conflictFrames = conflicts - .map((issue: any): number => issue.frame).sort((a: number, b: number) => +a - +b); - frames = [...new Set([...frames, ...conflictFrames])]; - } + const frames = issues.map((issue: any): number => issue.frame).sort((a: number, b: number) => +a - +b); const nearestLeft = frames.filter((_frame: number): boolean => _frame < frame).reverse()[0]; const dynamicLeftProps: any = Number.isInteger(nearestLeft) ? { @@ -109,21 +93,6 @@ export default function LabelsListComponent(): JSX.Element { )} - { - workspace === Workspace.REVIEW_WORKSPACE ? ( - - - dispatch(changeShowGroundTruth(!showGroundTruth))} - /> - - - ) : null - }
@@ -132,9 +101,7 @@ export default function LabelsListComponent(): JSX.Element {
{ const element = window.document.getElementById( `cvat_canvas_issue_region_${frameIssue.id}`, @@ -142,7 +109,6 @@ export default function LabelsListComponent(): JSX.Element { if (element) { element.setAttribute('fill', 'url(#cvat_issue_region_pattern_2)'); } - dispatch(activateObject(null, null, null)); }} onMouseLeave={() => { const element = window.document.getElementById( @@ -153,48 +119,11 @@ export default function LabelsListComponent(): JSX.Element { } }} > - - {`#${frameIssue.id} • Issue`} - - - - {frameIssue.comments[0]?.message ? frameIssue.comments[0]?.message : ''} - - - - - {moment(frameIssue.createdDate).fromNow()} - -
- ), - )} - {showGroundTruth && frameConflicts.map( - (frameConflict: QualityConflict): JSX.Element => ( -
{ - const serverID = frameConflict.annotationConflicts[0].objId; - const objectState = objectStates.find((state) => state.serverID === serverID); - dispatch(activateObject(objectState.clientID, null, null)); - }} - > - - - {`#${frameConflict.id} • ${frameConflict.importance === ConflictImportance.WARNING ? - 'Warning' : 'Conflict'}`} - - - - - {frameConflict.description} - - - + {frameIssue.resolved ? ( + + ) : ( + + )}
), )} diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/object-item-basics.tsx b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/object-item-basics.tsx index d91908a9affa..12c63eadd5c4 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/object-item-basics.tsx +++ b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/object-item-basics.tsx @@ -23,7 +23,6 @@ interface Props { labels: any[]; shapeType: ShapeType; objectType: ObjectType; - isGroundTruth: boolean; color: string; colorBy: ColorBy; type: string; @@ -68,7 +67,6 @@ function ItemTopComponent(props: Props): JSX.Element { toBackgroundShortcut, toForegroundShortcut, removeShortcut, - isGroundTruth, changeColor, changeLabel, copy, @@ -102,7 +100,6 @@ function ItemTopComponent(props: Props): JSX.Element {
{clientID} - {isGroundTruth ?  GT : null}
- - - - - ); -} - function CollapseAllSwitcher(props: Props): JSX.Element { const { statesCollapsed, expandAllStates, collapseAllStates } = props; return ( - + {statesCollapsed ? ( @@ -113,12 +91,7 @@ function ObjectListHeader(props: Props): JSX.Element { )} - - {readonly && ( - - )} - - + diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/objects-list.tsx b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/objects-list.tsx index be0b007cdd25..2b27a07c0318 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/objects-list.tsx +++ b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/objects-list.tsx @@ -22,7 +22,6 @@ interface Props { objectStates: any[]; switchLockAllShortcut: string; switchHiddenAllShortcut: string; - showGroundTruth: boolean; changeStatesOrdering(value: StatesOrdering): void; lockAllStates(): void; unlockAllStates(): void; @@ -30,7 +29,6 @@ interface Props { expandAllStates(): void; hideAllStates(): void; showAllStates(): void; - changeShowGroundTruth(): void; } function ObjectListComponent(props: Props): JSX.Element { @@ -44,7 +42,6 @@ function ObjectListComponent(props: Props): JSX.Element { objectStates, switchLockAllShortcut, switchHiddenAllShortcut, - showGroundTruth, changeStatesOrdering, lockAllStates, unlockAllStates, @@ -52,7 +49,6 @@ function ObjectListComponent(props: Props): JSX.Element { expandAllStates, hideAllStates, showAllStates, - changeShowGroundTruth, } = props; let latestZOrder: number | null = null; @@ -66,7 +62,6 @@ function ObjectListComponent(props: Props): JSX.Element { statesOrdering={statesOrdering} switchLockAllShortcut={switchLockAllShortcut} switchHiddenAllShortcut={switchHiddenAllShortcut} - showGroundTruth={showGroundTruth} changeStatesOrdering={changeStatesOrdering} lockAllStates={lockAllStates} unlockAllStates={unlockAllStates} @@ -74,7 +69,6 @@ function ObjectListComponent(props: Props): JSX.Element { expandAllStates={expandAllStates} hideAllStates={hideAllStates} showAllStates={showAllStates} - changeShowGroundTruth={changeShowGroundTruth} />
{sortedStatesID.map( diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/styles.scss b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/styles.scss index 8545a73d973c..e6b1b8fff311 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/styles.scss +++ b/cvat-ui/src/components/annotation-page/standard-workspace/objects-side-bar/styles.scss @@ -111,49 +111,19 @@ .cvat-objects-sidebar-issue-item { width: 100%; margin: 1px; - padding: $grid-unit-size; - border-left: 3px solid #ff7300; - border-bottom: 1px solid $border-color-1; + padding: 2px; &:hover { - border-left: 4px solid #ff7300; + padding: 0; + + > .ant-alert { + border-width: 3px; + } } > .ant-alert.ant-alert-with-description { padding: $grid-unit-size $grid-unit-size $grid-unit-size $grid-unit-size * 8; } - - p { - margin-bottom: 0; - } -} - -.cvat-objects-sidebar-conflict-item { - width: 100%; - margin: 1px; - padding: $grid-unit-size; - border-left: 3px solid #e10602; - border-bottom: 1px solid $border-color-1; - - &:hover { - border-left: 4px solid #e10602; - } - - p { - margin-bottom: 0; - } -} - -.cvat-objects-sidebar-warning-item { - @extend .cvat-objects-sidebar-issue-item; -} - -.cvat-objects-sidebar-issue-resolved { - border-left: 3px solid $border-color-1; - - &:hover { - border-left: 4px solid $border-color-1; - } } .cvat-objects-sidebar-states-header { @@ -181,10 +151,6 @@ } } } - - .cvat-objects-sidebar-show-ground-truth { - margin-right: $grid-unit-size; - } } .cvat-objects-sidebar-states-list { @@ -483,9 +449,3 @@ border: 2px dashed $object-item-border-color; padding: 0; } - -.cvat-objects-sidebar-show-ground-truth-active { - path { - fill: #1890ff; - } -} diff --git a/cvat-ui/src/components/annotation-page/styles.scss b/cvat-ui/src/components/annotation-page/styles.scss index ee43ebd8a103..7b00ff9acb94 100644 --- a/cvat-ui/src/components/annotation-page/styles.scss +++ b/cvat-ui/src/components/annotation-page/styles.scss @@ -449,15 +449,6 @@ border: 1px solid #d3e0ec; } } - - .ant-typography { - display: block; - padding: $grid-unit-size * 2 $grid-unit-size * 3 $grid-unit-size $grid-unit-size * 2; - } - - .query-builder { - margin-top: 0; - } } } diff --git a/cvat-ui/src/components/annotation-page/top-bar/filters-modal.tsx b/cvat-ui/src/components/annotation-page/top-bar/filters-modal.tsx index 51be29ed18a5..5a86c2cf8a7f 100644 --- a/cvat-ui/src/components/annotation-page/top-bar/filters-modal.tsx +++ b/cvat-ui/src/components/annotation-page/top-bar/filters-modal.tsx @@ -1,5 +1,4 @@ // Copyright (C) 2021-2022 Intel Corporation -// Copyright (C) 2023 CVAT.ai Corporation // // SPDX-License-Identifier: MIT @@ -11,22 +10,19 @@ import { import AntdWidgets from 'react-awesome-query-builder/lib/components/widgets/antd'; import AntdConfig from 'react-awesome-query-builder/lib/config/antd'; import 'react-awesome-query-builder/lib/css/styles.css'; -// import { DownOutlined } from '@ant-design/icons'; -// import Dropdown from 'antd/lib/dropdown'; -// import Menu from 'antd/lib/menu'; -import Text from 'antd/lib/typography/Text'; +import { DownOutlined } from '@ant-design/icons'; +import Dropdown from 'antd/lib/dropdown'; +import Menu from 'antd/lib/menu'; import Button from 'antd/lib/button'; import Modal from 'antd/lib/modal'; import { omit } from 'lodash'; import { CombinedState } from 'reducers'; -import { - changeAnnotationsFilters, changeFrameFiltersAsync, fetchAnnotationsAsync, showFilters, -} from 'actions/annotation-actions'; +import { changeAnnotationsFilters, fetchAnnotationsAsync, showFilters } from 'actions/annotation-actions'; const { FieldDropdown } = AntdWidgets; -// const FILTERS_HISTORY = 'annotationFiltersHistory'; +const FILTERS_HISTORY = 'annotationFiltersHistory'; interface StoredFilter { id: string; @@ -36,7 +32,6 @@ interface StoredFilter { function FiltersModalComponent(): JSX.Element { const labels = useSelector((state: CombinedState) => state.annotation.job.labels); const activeFilters = useSelector((state: CombinedState) => state.annotation.annotations.filters); - const activePlayerFilters = useSelector((state: CombinedState) => state.annotation.player.filters); const visible = useSelector((state: CombinedState) => state.annotation.filtersPanelVisible); const getConvertedInputType = (inputType: string): string => { @@ -83,7 +78,7 @@ function FiltersModalComponent(): JSX.Element { return subfields; }; - const annotationConfig: Config = { + const config: Config = { ...AntdConfig, fields: { label: { @@ -166,127 +161,64 @@ function FiltersModalComponent(): JSX.Element { }, }; - const frameConfig: Config = { - ...AntdConfig, - fields: { - conflicted: { - label: 'Has conflicts', - type: 'boolean', - }, - }, - settings: { - ...AntdConfig.settings, - renderField: (_props: any) => ( - - ), - // using FieldDropdown because we cannot use antd because of antd-related bugs - // https://github.com/ukrbublik/react-awesome-query-builder/issues/224 - }, - }; - const initialState = { - trees: { - annotationTree: QbUtils.checkTree( - QbUtils.loadTree({ id: QbUtils.uuid(), type: 'group' }), - annotationConfig as Config, - ) as ImmutableTree, - frameTree: QbUtils.checkTree( - QbUtils.loadTree({ id: QbUtils.uuid(), type: 'group' }), - frameConfig as Config, - ) as ImmutableTree, - }, - configs: { - annotationConfig, - frameConfig, - }, + tree: QbUtils.checkTree( + QbUtils.loadTree({ id: QbUtils.uuid(), type: 'group' }), + config as Config, + ) as ImmutableTree, + config, }; const dispatch = useDispatch(); const [state, setState] = useState(initialState); - const [annotationFilters, setAnnotationFilters] = useState([] as StoredFilter[]); - const [frameFilters, setFrameFilters] = useState([] as StoredFilter[]); - // useEffect(() => { - // console.log(state); - // }); + const [filters, setFilters] = useState([] as StoredFilter[]); - // useEffect(() => { - // const filtersHistory = window.localStorage.getItem(FILTERS_HISTORY)?.trim() || '[]'; - // try { - // setFilters(JSON.parse(filtersHistory)); - // } catch (_) { - // setFilters([]); - // } - // }, []); + useEffect(() => { + const filtersHistory = window.localStorage.getItem(FILTERS_HISTORY)?.trim() || '[]'; + try { + setFilters(JSON.parse(filtersHistory)); + } catch (_) { + setFilters([]); + } + }, []); - // useEffect(() => { - // window.localStorage.setItem(FILTERS_HISTORY, JSON.stringify(filters)); - // }, [filters]); + useEffect(() => { + window.localStorage.setItem(FILTERS_HISTORY, JSON.stringify(filters)); + }, [filters]); useEffect(() => { if (visible) { - const annotationTreeFromActiveFilters = activeFilters.length ? - QbUtils.checkTree(QbUtils.loadFromJsonLogic(activeFilters[0], annotationConfig), annotationConfig) : - null; - const frameTreeFromActiveFilters = activePlayerFilters.length ? - QbUtils.checkTree(QbUtils.loadFromJsonLogic(activePlayerFilters[0], frameConfig), frameConfig) : + const treeFromActiveFilters = activeFilters.length ? + QbUtils.checkTree(QbUtils.loadFromJsonLogic(activeFilters[0], config), config) : null; setState({ - trees: { - annotationTree: annotationTreeFromActiveFilters || initialState.trees.annotationTree, - frameTree: frameTreeFromActiveFilters || initialState.trees.frameTree, - }, - configs: { - annotationConfig, - frameConfig, - }, + tree: treeFromActiveFilters || initialState.tree, + config, }); } }, [visible]); - const applyFilters = (annotationFiltersData: any[], frameFiltersData: any[]): void => { - if (annotationFiltersData) { - dispatch(changeAnnotationsFilters(annotationFiltersData)); - dispatch(fetchAnnotationsAsync()); - } - if (frameFiltersData) { - dispatch(changeFrameFiltersAsync(frameFiltersData)); - } + const applyFilters = (filtersData: any[]): void => { + dispatch(changeAnnotationsFilters(filtersData)); + dispatch(fetchAnnotationsAsync()); dispatch(showFilters(false)); }; const confirmModal = (): void => { - let currentFilter: StoredFilter = { - id: QbUtils.uuid(), - logic: QbUtils.jsonLogicFormat(state.trees.annotationTree, annotationConfig).logic || {}, - }; - let updatedFilters = annotationFilters.filter( - (filter) => JSON.stringify(filter.logic) !== JSON.stringify(currentFilter.logic), - ); - setAnnotationFilters([currentFilter, ...updatedFilters].slice(0, 10)); - let { logic } = QbUtils.jsonLogicFormat(state.trees.annotationTree, annotationConfig); - if (logic) applyFilters([logic], null); - - currentFilter = { + const currentFilter: StoredFilter = { id: QbUtils.uuid(), - logic: QbUtils.jsonLogicFormat(state.trees.frameTree, frameConfig).logic || {}, + logic: QbUtils.jsonLogicFormat(state.tree, config).logic || {}, }; - updatedFilters = frameFilters.filter( + const updatedFilters = filters.filter( (filter) => JSON.stringify(filter.logic) !== JSON.stringify(currentFilter.logic), ); - - setFrameFilters([currentFilter, ...updatedFilters].slice(0, 10)); - logic = QbUtils.jsonLogicFormat(state.trees.frameTree, frameConfig).logic; - if (logic) { - if (logic) applyFilters(null, [logic]); - } - // todo change frame async + setFilters([currentFilter, ...updatedFilters].slice(0, 10)); + applyFilters([QbUtils.jsonLogicFormat(state.tree, config).logic]); }; - const isModalConfirmable = (): boolean => { - const annotations = (QbUtils.queryString(state.trees.annotationTree, annotationConfig) || '').trim().length > 0 && QbUtils.isValidTree(state.trees.annotationTree); - const frames = (QbUtils.queryString(state.trees.frameTree, frameConfig) || '').trim().length > 0 && QbUtils.isValidTree(state.trees.frameTree); - return annotations || frames; - }; + const isModalConfirmable = (): boolean => ( + (QbUtils.queryString(state.tree, config) || '').trim().length > 0 && QbUtils.isValidTree(state.tree) + ); const renderBuilder = (builderProps: any): JSX.Element => (
@@ -296,56 +228,32 @@ function FiltersModalComponent(): JSX.Element {
); - const onChange = (type: string, tree: ImmutableTree): void => { - if (type === 'annotationTree') { - setState({ - trees: { - ...state.trees, - annotationTree: tree, - }, - configs: { - ...state.configs, - annotationConfig, - }, - }); - } else if (type === 'frameTree') { - setState({ - trees: { - ...state.trees, - frameTree: tree, - }, - configs: { - ...state.configs, - frameConfig, - }, - }); - } + const onChange = (tree: ImmutableTree): void => { + setState({ tree, config }); }; - // TMP disabled - // const menu = ( - // - // {filters - // .map((filter: StoredFilter) => { - // // if a logic received from local storage does not correspond to current config - // // which depends on label specification - // // (it can be when history from another task with - // another specification or when label was removed) - // // loadFromJsonLogic() prints a warning to console - // // the are not ways to configure this behaviour + const menu = ( + + {filters + .map((filter: StoredFilter) => { + // if a logic received from local storage does not correspond to current config + // which depends on label specification + // (it can be when history from another task with another specification or when label was removed) + // loadFromJsonLogic() prints a warning to console + // the are not ways to configure this behaviour - // const tree = QbUtils.loadFromJsonLogic(filter.logic, config); - // const queryString = QbUtils.queryString(tree, config); - // return { tree, queryString, filter }; - // }) - // .filter(({ queryString }) => !!queryString) - // .map(({ filter, tree, queryString }) => ( - // setState({ tree, config })}> - // {queryString} - // - // ))} - // - // ); + const tree = QbUtils.loadFromJsonLogic(filter.logic, config); + const queryString = QbUtils.queryString(tree, config); + return { tree, queryString, filter }; + }) + .filter(({ queryString }) => !!queryString) + .map(({ filter, tree, queryString }) => ( + setState({ tree, config })}> + {queryString} + + ))} + + ); return ( applyFilters([], [])} + disabled={!activeFilters.length} + onClick={() => applyFilters([])} className='cvat-filters-modal-clear-button' > Clear filters @@ -383,7 +291,7 @@ function FiltersModalComponent(): JSX.Element { , ]} > - {/*
-
*/} - Annotation Filters: - onChange('annotationTree', tree)} - renderBuilder={renderBuilder} - /> - Frame Filters: - onChange('frameTree', tree)} - renderBuilder={renderBuilder} - /> +
+ ); } diff --git a/cvat-ui/src/components/annotation-page/top-bar/right-group.tsx b/cvat-ui/src/components/annotation-page/top-bar/right-group.tsx index 5894cae9d26a..ab826dc1e60c 100644 --- a/cvat-ui/src/components/annotation-page/top-bar/right-group.tsx +++ b/cvat-ui/src/components/annotation-page/top-bar/right-group.tsx @@ -31,9 +31,7 @@ function RightGroup(props: Props): JSX.Element { showFilters, } = props; - const annotationFilters = useSelector((state: CombinedState) => state.annotation.annotations.filters); - const frameFilters = useSelector((state: CombinedState) => state.annotation.player.filters); - const filters = annotationFilters.length || frameFilters.length; + const filters = useSelector((state: CombinedState) => state.annotation.annotations.filters); return (
@@ -63,7 +61,7 @@ function RightGroup(props: Props): JSX.Element { - Add a new job - - - { - fetchingTask ? ( -
- -
- ) : ( - - - - - - ) - } - - ); -} - -export default React.memo(CreateJobPage); diff --git a/cvat-ui/src/components/create-job-page/job-form.tsx b/cvat-ui/src/components/create-job-page/job-form.tsx deleted file mode 100644 index c433bbaaf29d..000000000000 --- a/cvat-ui/src/components/create-job-page/job-form.tsx +++ /dev/null @@ -1,251 +0,0 @@ -// Copyright (C) 2023 CVAT.ai Corporation -// -// SPDX-License-Identifier: MIT - -import './styles.scss'; - -import React, { useCallback } from 'react'; -import { Row, Col } from 'antd/lib/grid'; -import Form from 'antd/lib/form'; -import Button from 'antd/lib/button'; -import Select from 'antd/lib/select'; -import notification from 'antd/lib/notification'; -import InputNumber from 'antd/lib/input-number'; -import CVATTooltip from 'components/common/cvat-tooltip'; - -import { CombinedState } from 'reducers'; -import { useDispatch, useSelector } from 'react-redux'; -import { JobType } from 'cvat-core/src/enums'; -import { Task } from 'cvat-core-wrapper'; -import { createJobAsync } from 'actions/jobs-actions'; -import { useHistory } from 'react-router'; -import Space from 'antd/lib/space'; -import { QuestionCircleOutlined } from '@ant-design/icons'; - -export enum FrameSelectionMethod { - RANDOM = 'random_uniform', -} - -interface JobDataMutual { - task_id: number, - frame_selection_method: FrameSelectionMethod, - type: JobType, - seed?: number, -} - -export interface JobData extends JobDataMutual { - count: number, -} - -export interface JobFormData extends JobDataMutual { - quantity: number, - frame_count: number, -} - -interface Props { - task: Task -} - -const defaultQuantity = 5; - -function JobForm(props: Props): JSX.Element { - const { task } = props; - const { size: taskSize } = task; - const [form] = Form.useForm(); - const dispatch = useDispatch(); - const history = useHistory(); - - const fetching = useSelector((state: CombinedState) => state.models.fetching); - - const submit = useCallback(async (): Promise => { - try { - const values: JobFormData = await form.validateFields(); - const data: JobData = { - frame_selection_method: values.frame_selection_method, - type: values.type, - seed: values.seed, - count: values.frame_count, - task_id: task.id, - }; - const createdJob = await dispatch(createJobAsync(data)); - - return createdJob; - } catch (e) { - return false; - } - }, [task]); - - const onSubmitAndOpen = async (): Promise => { - const createdJob = await submit(); - if (createdJob) { - history.push(`/tasks/${task.id}/jobs/${createdJob.id}`); - } - }; - - const onSubmit = async (): Promise => { - const res = await submit(); - if (res) { - form.resetFields(); - notification.info({ - message: 'Job has been successfully created', - className: 'cvat-notification-create-job-success', - }); - } - }; - - const onQuantityChange = useCallback((value: number | null) => { - if (value) { - const newFrameCount = Math.round((value * taskSize) / 100); - form.setFieldsValue({ - frame_count: newFrameCount, - }); - } - }, [taskSize]); - - const onFrameCountChange = useCallback((value: number | null) => { - if (value) { - const newQuantity = Math.floor((value / taskSize) * 100); - form.setFieldsValue({ - quantity: newQuantity, - }); - } - }, [taskSize]); - const frameCountDescription = 'A representative set, 5-15% of randomly chosen frames is recommended'; - - return ( - - - - - - - - - - - - - - - - Quantity % - - - - - )} - rules={[{ required: true, message: 'Please, specify quantity' }]} - > - - - - - - - - - Frame count - - - - - )} - rules={[{ required: true, message: 'Please, specify frame count' }]} - > - - - - - - - - - - - - - - - - - - - - - - - - - - ); -} - -export default React.memo(JobForm); diff --git a/cvat-ui/src/components/create-job-page/styles.scss b/cvat-ui/src/components/create-job-page/styles.scss deleted file mode 100644 index b1ef80a1b031..000000000000 --- a/cvat-ui/src/components/create-job-page/styles.scss +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (C) 2023 CVAT.ai Corporation -// -// SPDX-License-Identifier: MIT - -@import '../../base.scss'; - -.cvat-create-job-page { - width: 100%; - height: 100%; - padding-top: $grid-unit-size * 5; - - .cvat-title { - font-size: 36px; - } -} - -.cvat-create-job-form-wrapper { - margin-top: $grid-unit-size * 3; - height: auto; - border: 1px solid $border-color-1; - border-radius: 3px; - padding: $grid-unit-size * 3; - background: $background-color-1; - text-align: initial; - - .ant-input-number { - width: $grid-unit-size * 25; - } -} - -.cvat-create-job-frames-tip { - display: flex; - align-items: center; - margin-left: $grid-unit-size * 2; - margin-top: $grid-unit-size; -} - -.cvat-create-job-actions { - margin-top: $grid-unit-size * 10; - - button { - min-width: $grid-unit-size * 15; - margin-left: $grid-unit-size; - } -} diff --git a/cvat-ui/src/components/cvat-app.tsx b/cvat-ui/src/components/cvat-app.tsx index 09f24160085d..4ca5a6a331f3 100644 --- a/cvat-ui/src/components/cvat-app.tsx +++ b/cvat-ui/src/components/cvat-app.tsx @@ -73,8 +73,6 @@ import EmailConfirmationPage from './email-confirmation-pages/email-confirmed'; import EmailVerificationSentPage from './email-confirmation-pages/email-verification-sent'; import IncorrectEmailConfirmationPage from './email-confirmation-pages/incorrect-email-confirmation'; import CreateModelPage from './create-model-page/create-model-page'; -import CreateJobPage from './create-job-page/create-job-page'; -import TaskAnalyticsPage from './task-analytics-page/task-analytics-page'; interface CVATAppProps { loadFormats: () => void; @@ -462,8 +460,6 @@ class CVATApplication extends React.PureComponent - - diff --git a/cvat-ui/src/components/job-item/job-actions-menu.tsx b/cvat-ui/src/components/job-item/job-actions-menu.tsx deleted file mode 100644 index 3e6e8aa93a93..000000000000 --- a/cvat-ui/src/components/job-item/job-actions-menu.tsx +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright (C) 2023 CVAT.ai Corporation -// -// SPDX-License-Identifier: MIT -import React, { useCallback } from 'react'; -import { useDispatch } from 'react-redux'; -import { useHistory } from 'react-router'; -import Menu from 'antd/lib/menu'; -// eslint-disable-next-line import/no-extraneous-dependencies -import { MenuInfo } from 'rc-menu/lib/interface'; -import { exportActions } from 'actions/export-actions'; - -import { Job, JobType } from 'cvat-core-wrapper'; -import { deleteJobAsync } from 'actions/jobs-actions'; -import Modal from 'antd/lib/modal'; - -interface Props { - job: Job -} - -function JobActionsMenu(props: Props): JSX.Element { - const { job } = props; - const { id } = job; - const history = useHistory(); - const dispatch = useDispatch(); - - const onDelete = useCallback(() => { - Modal.confirm({ - title: `The job ${job.id} will be deleted`, - content: 'All related data (annotations) will be lost. Continue?', - className: 'cvat-modal-confirm-delete-job', - onOk: () => { - dispatch(deleteJobAsync(job)); - }, - okButtonProps: { - type: 'primary', - danger: true, - }, - okText: 'Delete', - }); - }, [id]); - - return ( - { - if (action.key === 'task') { - history.push(`/tasks/${job.taskId}`); - } else if (action.key === 'project') { - history.push(`/projects/${job.projectId}`); - } else if (action.key === 'bug_tracker') { - if (job.bugTracker) window.open(job.bugTracker, '_blank', 'noopener noreferrer'); - } - }} - > - Go to the task - Go to the project - Go to the bug tracker - dispatch(exportActions.openExportDatasetModal(job))}>Export job - - onDelete()} - > - Delete - - - ); -} - -export default React.memo(JobActionsMenu); diff --git a/cvat-ui/src/components/job-item/job-item.tsx b/cvat-ui/src/components/job-item/job-item.tsx deleted file mode 100644 index 46977067eadd..000000000000 --- a/cvat-ui/src/components/job-item/job-item.tsx +++ /dev/null @@ -1,241 +0,0 @@ -// Copyright (C) 2023 CVAT.ai Corporation -// -// SPDX-License-Identifier: MIT - -import './styles.scss'; - -import React, { useEffect, useState } from 'react'; -import { Col, Row } from 'antd/lib/grid'; -import Card from 'antd/lib/card'; -import Text from 'antd/lib/typography/Text'; -import Select from 'antd/lib/select'; -import Icon from '@ant-design/icons'; -import { - Job, JobStage, JobType, Task, User, -} from 'cvat-core-wrapper'; -import { - BorderOutlined, - LoadingOutlined, MoreOutlined, ProjectOutlined, QuestionCircleOutlined, -} from '@ant-design/icons/lib/icons'; -import { Link } from 'react-router-dom'; -import moment from 'moment'; -import UserSelector from 'components/task-page/user-selector'; -import Dropdown from 'antd/lib/dropdown'; -import Tag from 'antd/lib/tag'; -import { DurationIcon, FramesIcon } from 'icons'; -import { useSelector } from 'react-redux'; -import { CombinedState } from 'reducers'; -import CVATTooltip from 'components/common/cvat-tooltip'; -import JobActionsMenu from './job-actions-menu'; - -interface Props { - job: Job, - task: Task, - onJobUpdate: (job: Job) => void; -} - -function ReviewSummaryComponent({ jobInstance }: { jobInstance: any }): JSX.Element { - const [summary, setSummary] = useState | null>(null); - const [error, setError] = useState(null); - useEffect(() => { - setError(null); - jobInstance - .issues(jobInstance.id) - .then((issues: any[]) => { - setSummary({ - issues_unsolved: issues.filter((issue) => !issue.resolved).length, - issues_resolved: issues.filter((issue) => issue.resolved).length, - }); - }) - .catch((_error: any) => { - // eslint-disable-next-line - console.log(_error); - setError(_error); - }); - }, []); - - if (!summary) { - if (error) { - if (error.toString().includes('403')) { - return

You do not have permissions

; - } - - return

Could not fetch, check console output

; - } - - return ( - <> -

Loading..

- - - ); - } - - return ( -
- - - - - - - - - - -
- Unsolved issues - {summary.issues_unsolved}
- Resolved issues - {summary.issues_resolved}
- ); -} - -function JobItem(props: Props): JSX.Element { - const { job, task, onJobUpdate } = props; - const { stage, id } = job; - const created = moment(job.createdDate); - const updated = moment(job.createdDate); - const now = moment(moment.now()); - const deletes = useSelector((state: CombinedState) => state.jobs.activities.deletes); - const deleted = id in deletes ? deletes[id] === true : false; - const style = {}; - if (deleted) { - (style as any).pointerEvents = 'none'; - (style as any).opacity = 0.5; - } - - return ( - - - - - - - {`Job #${job.id}`} - - { - job.type === JobType.GROUND_TRUTH && ( - - Ground truth - - ) - } - - - - Created on - {` ${created.format('MMMM Do YYYY HH:MM')}`} - - - - - Last updated - {` ${updated.format('MMMM Do YYYY HH:MM')}`} - - - - - - - - - - Assignee: - - { - if (job?.assignee?.id === user?.id) return; - if (user) { - job.assignee = user; - onJobUpdate(job); - } - }} - /> - - - - - Stage: - - - }> - - - - - - - - - - - - - - - - - - State: - {` ${job.state.charAt(0).toUpperCase() + job.state.slice(1)}`} - - - - - - Duration: - {` ${moment.duration(now.diff(created)).humanize()}`} - - - - - { - job.type !== JobType.GROUND_TRUTH && ( - - - - Frame range: - {` ${job.startFrame}-${job.stopFrame}`} - - - ) - } - - - - Frame count: - {` ${job.frameCount} (${(job.frameCount / (task.size || 1) * 100).toFixed(0)}%)`} - - - - - - - }> - - - - - ); -} - -export default React.memo(JobItem); diff --git a/cvat-ui/src/components/job-item/styles.scss b/cvat-ui/src/components/job-item/styles.scss deleted file mode 100644 index 82295a76c761..000000000000 --- a/cvat-ui/src/components/job-item/styles.scss +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright (C) 2023 CVAT.ai Corporation -// -// SPDX-License-Identifier: MIT - -@import '../../base.scss'; - -.cvat-job-item { - .cvat-job-item-icon { - .anticon svg { - fill: #fc3; - } - } - - .ant-card-body { - padding: $grid-unit-size*2; - min-height: $grid-unit-size * 9; - } - - .cvat-job-item-selects { - padding-top: $grid-unit-size; - - .cvat-job-assignee-selector { - margin-right: $grid-unit-size; - } - } - - .cvat-job-item-details { - .ant-row { - margin-top: $grid-unit-size; - } - - .anticon { - margin-right: $grid-unit-size; - } - } - - .cvat-job-item-more-button { - position: absolute; - right: 0; - top: 50%; - transform: translateY(-100%); - font-size: 16px; - margin-top: $grid-unit-size; - padding: 0 $grid-unit-size * 2; - } - - .cvat-job-item-dates-info { - margin-top: $grid-unit-size; - } - - .cvat-job-assignee-selector { - max-width: $grid-unit-size * 16; - - @media screen and (max-width: 1620px) { - max-width: $grid-unit-size * 12; - } - } -} diff --git a/cvat-ui/src/components/jobs-page/job-card.tsx b/cvat-ui/src/components/jobs-page/job-card.tsx index 926c5322ad94..b394bd9512f2 100644 --- a/cvat-ui/src/components/jobs-page/job-card.tsx +++ b/cvat-ui/src/components/jobs-page/job-card.tsx @@ -4,14 +4,18 @@ // SPDX-License-Identifier: MIT import React, { useState } from 'react'; +import { useDispatch } from 'react-redux'; import { useHistory } from 'react-router'; import Card from 'antd/lib/card'; import Descriptions from 'antd/lib/descriptions'; import { MoreOutlined } from '@ant-design/icons'; import Dropdown from 'antd/lib/dropdown'; +import Menu from 'antd/lib/menu'; +// eslint-disable-next-line import/no-extraneous-dependencies +import { MenuInfo } from 'rc-menu/lib/interface'; import { useCardHeightHOC } from 'utils/hooks'; +import { exportActions } from 'actions/export-actions'; import Preview from 'components/common/preview'; -import JobActionsMenu from 'components/job-item/job-actions-menu'; const useCardHeight = useCardHeightHOC({ containerClassName: 'cvat-jobs-page', @@ -25,6 +29,7 @@ interface Props { } function JobCardComponent(props: Props): JSX.Element { + const dispatch = useDispatch(); const { job } = props; const [expanded, setExpanded] = useState(false); const history = useHistory(); @@ -72,7 +77,24 @@ function JobCardComponent(props: Props): JSX.Element { {job.assignee.username} ) : null} - }> + { + if (action.key === 'task') { + history.push(`/tasks/${job.taskId}`); + } else if (action.key === 'project') { + history.push(`/projects/${job.projectId}`); + } else if (action.key === 'bug_tracker') { + window.open(job.bugTracker, '_blank', 'noopener noreferrer'); + } + }} + > + Go to the task + Go to the project + Go to the bug tracker + dispatch(exportActions.openExportDatasetModal(job))}>Export job + + )} + > diff --git a/cvat-ui/src/components/jobs-page/jobs-content.tsx b/cvat-ui/src/components/jobs-page/jobs-content.tsx index db34eece8cfd..8406e9f535e8 100644 --- a/cvat-ui/src/components/jobs-page/jobs-content.tsx +++ b/cvat-ui/src/components/jobs-page/jobs-content.tsx @@ -6,11 +6,11 @@ import React from 'react'; import { useSelector } from 'react-redux'; import { Col, Row } from 'antd/lib/grid'; import { CombinedState } from 'reducers'; -import { Job, JobType } from 'cvat-core-wrapper'; import JobCard from './job-card'; function JobsContentComponent(): JSX.Element { const jobs = useSelector((state: CombinedState) => state.jobs.current); + const previews = useSelector((state: CombinedState) => state.jobs.previews); const dimensions = { md: 22, lg: 18, @@ -21,8 +21,8 @@ function JobsContentComponent(): JSX.Element { return ( - {jobs.filter((job: Job) => job.type === JobType.ANNOTATION).map((job: Job): JSX.Element => ( - + {jobs.map((job: any, idx: number): JSX.Element => ( + ))} diff --git a/cvat-ui/src/components/task-analytics-page/quality/analytics-card.tsx b/cvat-ui/src/components/task-analytics-page/quality/analytics-card.tsx deleted file mode 100644 index 2df0db916ff2..000000000000 --- a/cvat-ui/src/components/task-analytics-page/quality/analytics-card.tsx +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (C) 2023 CVAT.ai Corporation -// -// SPDX-License-Identifier: MIT - -import '../styles.scss'; - -import React from 'react'; -import Text from 'antd/lib/typography/Text'; -import { Col, Row } from 'antd/lib/grid'; -import Card from 'antd/lib/card'; -import CVATTooltip from 'components/common/cvat-tooltip'; -import { QuestionCircleOutlined } from '@ant-design/icons'; - -interface Props { - title: string; - size?: number; - className?: string; - value?: string | number; - tooltip?: JSX.Element; - bottomElement?: JSX.Element; - rightElement?: JSX.Element; -} - -function AnalyticsCard(props: Props): JSX.Element { - const { - title, size, className, value, tooltip, bottomElement, rightElement, - } = props; - - return ( - - - - - - - - {title} - - { - tooltip && ( - - - - ) - } - - - - {value} - - {bottomElement} - - { - rightElement && {rightElement} - } - - - - ); -} - -export default React.memo(AnalyticsCard); diff --git a/cvat-ui/src/components/task-analytics-page/quality/common.ts b/cvat-ui/src/components/task-analytics-page/quality/common.ts deleted file mode 100644 index 092533b39332..000000000000 --- a/cvat-ui/src/components/task-analytics-page/quality/common.ts +++ /dev/null @@ -1,19 +0,0 @@ -export function percent(a?: number, b?: number): string | number { - if (typeof a !== 'undefined' && Number.isFinite(a) && b) { - return `${Number((a / b) * 100).toFixed(1)}%`; - } - return 'N/A'; -} - -const THRESHOLD = 5000; -export function clampValue(a?: number): string | number { - if (typeof a !== 'undefined' && Number.isFinite(a)) { - if (a <= THRESHOLD) return a; - return `> ${THRESHOLD}`; - } - return 'N/A'; -} - -export function toRepresentation(val?: number): string { - return (!Number.isFinite(val) ? 'N/A' : `${val?.toFixed(1)}%`); -} diff --git a/cvat-ui/src/components/task-analytics-page/quality/empty-job.tsx b/cvat-ui/src/components/task-analytics-page/quality/empty-job.tsx deleted file mode 100644 index 02bea25e6877..000000000000 --- a/cvat-ui/src/components/task-analytics-page/quality/empty-job.tsx +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (C) 2023 CVAT.ai Corporation -// -// SPDX-License-Identifier: MIT - -import '../styles.scss'; - -import React from 'react'; -import { Link } from 'react-router-dom'; -import { Col, Row } from 'antd/lib/grid'; -import Card from 'antd/lib/card'; -import Button from 'antd/lib/button'; -import Title from 'antd/lib/typography/Title'; - -interface Props { - taskId: number, -} - -function EmptyJobComponent(props: Props): JSX.Element { - const { taskId } = props; - - return ( - - - - - No Ground Truth job created yet... - - - - - - - - ); -} - -export default React.memo(EmptyJobComponent); diff --git a/cvat-ui/src/components/task-analytics-page/quality/gt-conflicts.tsx b/cvat-ui/src/components/task-analytics-page/quality/gt-conflicts.tsx deleted file mode 100644 index 976c448c90da..000000000000 --- a/cvat-ui/src/components/task-analytics-page/quality/gt-conflicts.tsx +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright (C) 2023 CVAT.ai Corporation -// -// SPDX-License-Identifier: MIT - -import '../styles.scss'; - -import React from 'react'; -import Text from 'antd/lib/typography/Text'; -import { QualityReport, Task } from 'cvat-core-wrapper'; -import { useSelector } from 'react-redux'; -import { CombinedState } from 'reducers'; -import AnalyticsCard from './analytics-card'; -import { percent, clampValue } from './common'; - -interface Props { - task: Task; -} - -function GTConflicts(props: Props): JSX.Element { - const { task } = props; - const tasksReports: QualityReport[] = useSelector((state: CombinedState) => state.analytics.quality.tasksReports); - const taskReport = tasksReports.find((report: QualityReport) => report.taskId === task.id); - - let conflictsRepresentation: string | number = 'N/A'; - let reportSummary; - if (taskReport) { - reportSummary = taskReport.summary; - conflictsRepresentation = clampValue(reportSummary?.conflictCount); - } - - const tooltip = ( -
- - Conflicts by type: - - - Missing annotations:  - {reportSummary?.conflictsByType.missingAnnotations || 0} - - - Extra annotations:  - {reportSummary?.conflictsByType.extraAnnotations || 0} - - - Mismatching label:  - {reportSummary?.conflictsByType.mismatchingLabel || 0} - - - Low overlap:  - {reportSummary?.conflictsByType.lowOverlap || 0} - - - Mismatching direction:  - {reportSummary?.conflictsByType.mismatchingDirection || 0} - - - Mismatching attributes:  - {reportSummary?.conflictsByType.mismatchingAttributes || 0} - - - Mismatching groups:  - {reportSummary?.conflictsByType.mismatchingGroups || 0} - - - Covered annotation:  - {reportSummary?.conflictsByType.coveredAnnotation || 0} - -
- ); - - const bottomElement = ( - <> - - Errors: - {' '} - {clampValue(reportSummary?.errorCount)} - {reportSummary?.errorCount ? - ` (${percent(reportSummary?.errorCount, reportSummary?.conflictCount)})` : ''} - - - {', '} - Warnings: - {' '} - {clampValue(reportSummary?.warningCount)} - { reportSummary?.warningCount ? - ` (${percent(reportSummary?.warningCount, reportSummary?.conflictCount)})` : '' } - - - ); - - return ( - - ); -} - -export default React.memo(GTConflicts); diff --git a/cvat-ui/src/components/task-analytics-page/quality/issues.tsx b/cvat-ui/src/components/task-analytics-page/quality/issues.tsx deleted file mode 100644 index 0daac497ab37..000000000000 --- a/cvat-ui/src/components/task-analytics-page/quality/issues.tsx +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (C) 2023 CVAT.ai Corporation -// -// SPDX-License-Identifier: MIT - -import '../styles.scss'; - -import React, { useEffect, useState } from 'react'; -import Text from 'antd/lib/typography/Text'; -import { Task } from 'cvat-core-wrapper'; -import notification from 'antd/lib/notification'; -import AnalyticsCard from './analytics-card'; -import { percent, clampValue } from './common'; - -interface Props { - task: Task; -} - -function Issues(props: Props): JSX.Element { - const { task } = props; - - const [issuesCount, setIssuesCount] = useState(0); - const [resolvedIssues, setResolvedIssues] = useState(0); - useEffect(() => { - task - .issues() - .then((issues: any[]) => { - setIssuesCount(issues.length); - setResolvedIssues(issues.reduce((acc, issue) => (issue.resolved ? acc + 1 : acc), 0)); - }) - .catch((_error: any) => { - notification.error({ - description: _error.toString(), - message: "Couldn't fetch issues", - className: 'cvat-notification-notice-get-issues-error', - }); - }); - }, []); - - const bottomElement = ( - <> - - Resolved: - {' '} - {clampValue(resolvedIssues)} - {resolvedIssues ? ` (${percent(resolvedIssues, issuesCount)})` : ''} - - - ); - - return ( - - ); -} - -export default React.memo(Issues); diff --git a/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx b/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx deleted file mode 100644 index 87b086bff58c..000000000000 --- a/cvat-ui/src/components/task-analytics-page/quality/job-list.tsx +++ /dev/null @@ -1,305 +0,0 @@ -// Copyright (C) 2020-2022 Intel Corporation -// Copyright (C) 2023 CVAT.ai Corporation -// -// SPDX-License-Identifier: MIT - -import React, { useEffect, useState } from 'react'; -import { useHistory } from 'react-router'; -import { Row, Col } from 'antd/lib/grid'; -import { CopyOutlined, DownloadOutlined } from '@ant-design/icons'; -import { ColumnFilterItem } from 'antd/lib/table/interface'; -import Table from 'antd/lib/table'; -import Button from 'antd/lib/button'; -import Text from 'antd/lib/typography/Text'; -import copy from 'copy-to-clipboard'; - -import { - Task, Job, JobType, QualityReport, getCore, -} from 'cvat-core-wrapper'; -import CVATTooltip from 'components/common/cvat-tooltip'; -import { CombinedState } from 'reducers'; -import { useSelector } from 'react-redux'; -import { getQualityColor } from 'utils/quality-color'; -import Tag from 'antd/lib/tag'; -import { toRepresentation } from './common'; - -interface Props { - task: Task; -} - -function JobListComponent(props: Props): JSX.Element { - const { - task: taskInstance, - } = props; - - const history = useHistory(); - const { id: taskId } = taskInstance; - const { jobs } = taskInstance; - const [renderedJobs] = useState(jobs.filter((job: Job) => job.type === JobType.ANNOTATION)); - const [jobsReports, setJobsReports] = useState>({}); - const jobReportsFromState: QualityReport[] = - useSelector((state: CombinedState) => state.analytics.quality.jobsReports); - - useEffect(() => { - const jobsReportsMap: Record = {}; - for (const job of jobs) { - const report = jobReportsFromState.find((_report: QualityReport) => _report.jobId === job.id); - if (report) jobsReportsMap[job.id] = report; - } - setJobsReports(jobsReportsMap); - }, [renderedJobs, jobReportsFromState]); - - function sorter(path: string) { - return (obj1: any, obj2: any): number => { - let currentObj1 = obj1; - let currentObj2 = obj2; - let field1: string | number | null = null; - let field2: string | number | null = null; - for (const pathSegment of path.split('.')) { - field1 = currentObj1 && pathSegment in currentObj1 ? currentObj1[pathSegment] : null; - field2 = currentObj2 && pathSegment in currentObj2 ? currentObj2[pathSegment] : null; - currentObj1 = currentObj1 && pathSegment in currentObj1 ? currentObj1[pathSegment] : null; - currentObj2 = currentObj2 && pathSegment in currentObj2 ? currentObj2[pathSegment] : null; - } - - if (field1 && field2) { - if (typeof field1 === 'string' && typeof field2 === 'string') return field1.localeCompare(field2); - if (typeof field1 === 'number' && typeof field2 === 'number') return field2 - field1; - } - - if (field1 === null) { - return 1; - } - - return -1; - }; - } - - function collectUsers(path: string): ColumnFilterItem[] { - return Array.from( - new Set( - jobs.map((job: any) => { - if (job[path] === null) { - return null; - } - - return job[path].username; - }), - ), - ).map((value: string | null) => ({ text: value || 'Is Empty', value: value || false })); - } - - const columns = [ - { - title: 'Job', - dataIndex: 'job', - key: 'job', - render: (id: number): JSX.Element => ( -
- -
- ), - }, - { - title: 'Stage', - dataIndex: 'stage', - key: 'stage', - className: 'cvat-job-item-stage', - render: (jobInstance: any): JSX.Element => { - const { stage } = jobInstance; - - return ( -
- {stage} -
- ); - }, - sorter: sorter('stage.stage'), - filters: [ - { text: 'annotation', value: 'annotation' }, - { text: 'validation', value: 'validation' }, - { text: 'acceptance', value: 'acceptance' }, - ], - onFilter: (value: string | number | boolean, record: any) => record.stage.stage === value, - }, - { - title: 'Assignee', - dataIndex: 'assignee', - key: 'assignee', - className: 'cvat-job-item-assignee', - render: (jobInstance: any): JSX.Element => ( - {jobInstance?.assignee?.username} - ), - sorter: sorter('assignee.assignee.username'), - filters: collectUsers('assignee'), - onFilter: (value: string | number | boolean, record: any) => ( - record.assignee.assignee?.username || false - ) === value, - }, - { - title: 'Frame intersection', - dataIndex: 'frame_intersection', - key: 'frame_intersection', - className: 'cvat-job-item-frame-intersection', - render: (report?: QualityReport): JSX.Element => { - const frameSharePercent = report?.summary?.frameSharePercent; - return ( - - {toRepresentation(frameSharePercent)} - - ); - }, - }, - { - title: 'Errors', - dataIndex: 'errors', - key: 'errors', - className: 'cvat-job-item-errors', - sorter: sorter('errors.summary.errorCount'), - render: (report?: QualityReport): JSX.Element => { - const errorCount = report?.summary?.errorCount; - return ( - - {errorCount || 0} - - ); - }, - }, - { - title: 'Conflicts', - dataIndex: 'conflicts', - key: 'conflicts', - className: 'cvat-job-item-conflicts', - sorter: sorter('errors.summary.conflictCount'), - render: (report: QualityReport): JSX.Element => { - const conflictCount = report?.summary?.conflictCount; - return ( - - {conflictCount || 0} - - ); - }, - }, - { - title: 'Quality', - dataIndex: 'quality', - key: 'quality', - align: 'center' as const, - className: 'cvat-job-item-quality', - sorter: sorter('errors.summary.accuracy'), - render: (report?: QualityReport): JSX.Element => { - const meanAccuracy = report?.summary?.accuracy; - const accuracyRepresentation = toRepresentation(meanAccuracy); - return ( - accuracyRepresentation.includes('N/A') ? ( - - N/A - - ) : - {accuracyRepresentation} - ); - }, - }, - { - title: 'Download', - dataIndex: 'download', - key: 'download', - className: 'cvat-job-item-quality-report-download', - align: 'center' as const, - render: (report?: QualityReport): JSX.Element => { - const reportID = report?.id; - return ( - reportID ? ( - - - - ) : - ); - }, - }, - ]; - const data = renderedJobs.reduce((acc: any[], job: any) => { - const report = jobsReports[job.id]; - acc.push({ - key: job.id, - job: job.id, - stage: job, - assignee: job, - errors: report, - quality: report, - conflicts: report, - download: report, - frame_intersection: report, - }); - - return acc; - }, []); - - return ( -
- - - Jobs - - - - - - 'cvat-task-jobs-table-row'} - columns={columns} - dataSource={data} - size='small' - /> - - ); -} - -export default React.memo(JobListComponent); diff --git a/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx b/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx deleted file mode 100644 index 726f6b35e398..000000000000 --- a/cvat-ui/src/components/task-analytics-page/quality/mean-quality.tsx +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright (C) 2023 CVAT.ai Corporation -// -// SPDX-License-Identifier: MIT - -import '../styles.scss'; - -import React from 'react'; -import Text from 'antd/lib/typography/Text'; -import moment from 'moment'; -import { QualityReport, Task, getCore } from 'cvat-core-wrapper'; -import { useSelector, useDispatch } from 'react-redux'; -import { CombinedState } from 'reducers'; -import Button from 'antd/lib/button'; -import { DownloadOutlined, MoreOutlined } from '@ant-design/icons'; -import { analyticsActions } from 'actions/analytics-actions'; -import AnalyticsCard from './analytics-card'; -import { toRepresentation } from './common'; - -interface Props { - task: Task; -} - -function MeanQuality(props: Props): JSX.Element { - const { task } = props; - const dispatch = useDispatch(); - const tasksReports: QualityReport[] = useSelector((state: CombinedState) => state.analytics.quality.tasksReports); - const taskReport = tasksReports.find((report: QualityReport) => report.taskId === task.id); - const reportSummary = taskReport?.summary; - - const tooltip = ( -
- - Mean annotation quality consists of: - - - Correct annotations:  - {reportSummary?.validCount || 0} - - - Task annotations:  - {reportSummary?.dsCount || 0} - - - GT annotations:  - {reportSummary?.gtCount || 0} - - - Accuracy:  - {toRepresentation(reportSummary?.accuracy)} - - - Precision:  - {toRepresentation(reportSummary?.precision)} - - - Recall:  - {toRepresentation(reportSummary?.recall)} - -
- ); - - const dowloadReportButton = ( -
- { - taskReport?.id ? ( - <> - - dispatch(analyticsActions.switchQualitySettingsVisible(true))} - /> -
- {taskReport?.createdDate ? moment(taskReport?.createdDate).fromNow() : ''} -
- - ) : null - } -
- - ); - return ( - - ); -} - -export default React.memo(MeanQuality); diff --git a/cvat-ui/src/components/task-analytics-page/quality/quality-settings-modal.tsx b/cvat-ui/src/components/task-analytics-page/quality/quality-settings-modal.tsx deleted file mode 100644 index 339acfae1979..000000000000 --- a/cvat-ui/src/components/task-analytics-page/quality/quality-settings-modal.tsx +++ /dev/null @@ -1,263 +0,0 @@ -// Copyright (C) 2023 CVAT.ai Corporation -// -// SPDX-License-Identifier: MIT - -import React, { useCallback } from 'react'; -import { useDispatch, useSelector } from 'react-redux'; -import { CombinedState } from 'reducers'; -import Text from 'antd/lib/typography/Text'; -import Modal from 'antd/lib/modal'; -import InputNumber from 'antd/lib/input-number'; -import { analyticsActions, updateQualitySettingsAsync } from 'actions/analytics-actions'; -import { Col, Row } from 'antd/lib/grid'; -import { Divider } from 'antd'; -import Form from 'antd/lib/form'; -import Checkbox from 'antd/lib/checkbox/Checkbox'; - -export default function QualitySettingsModal(): JSX.Element | null { - const visible = useSelector((state: CombinedState) => state.analytics.quality.settings.modalVisible); - const loading = useSelector((state: CombinedState) => state.analytics.quality.settings.fetching); - const settings = useSelector((state: CombinedState) => state.analytics.quality.settings.current); - const [form] = Form.useForm(); - - const dispatch = useDispatch(); - - const onOk = useCallback(async () => { - try { - if (settings) { - const values = await form.validateFields(); - settings.lineThickness = values.lineThickness / 100; - settings.lineOrientationThreshold = values.lineOrientationThreshold / 100; - settings.orientedLines = values.orientedLines; - - settings.lowOverlapThreshold = values.lowOverlapThreshold / 100; - settings.iouThreshold = values.iouThreshold / 100; - settings.oksSigma = values.oksSigma / 100; - - settings.orientedLines = values.orientedLines; - settings.groupMatchThreshold = values.groupMatchThreshold / 100; - - settings.checkCoveredAnnotations = values.checkCoveredAnnotations; - settings.objectVisibilityThreshold = values.objectVisibilityThreshold / 100; - - settings.compareAttributes = values.compareAttributes; - settings.panopticComparison = values.panopticComparison; - - await dispatch(updateQualitySettingsAsync(settings)); - await dispatch(analyticsActions.switchQualitySettingsVisible(false)); - } - return settings; - } catch (e) { - return false; - } - }, [settings]); - - const onCancel = useCallback(() => { - dispatch(analyticsActions.switchQualitySettingsVisible(false)); - }, []); - - return ( - Annotation Settings Quality} - visible={visible} - onOk={onOk} - onCancel={onCancel} - confirmLoading={loading} - className='cvat-modal-quality-settings' - > - { settings ? ( -
- - - General - - - -
- - - - - - - - - - - - - - - Compare attributes - - - - - - - - Keypoint Comparison - - - - - - - - - - - - - Line Comparison - - - - - - - - - - - - - - Check orientation - - - - - - - - - - - - - Group Comparison - - - - - - - Compare groups - - - - - - - - - - - - - Segmentation Comparison - - - - - - - Check object visibility - - - - - - - - - - - - - - Match only visible parts - - - - - - ) : ( - No quality settings - )} - - ); -} diff --git a/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx b/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx deleted file mode 100644 index 19ba30b171a1..000000000000 --- a/cvat-ui/src/components/task-analytics-page/quality/task-quality-component.tsx +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (C) 2023 CVAT.ai Corporation -// -// SPDX-License-Identifier: MIT - -import '../styles.scss'; - -import React, { useEffect } from 'react'; -import { - Job, JobType, Task, -} from 'cvat-core-wrapper'; -import { Row } from 'antd/lib/grid'; -import Text from 'antd/lib/typography/Text'; -import JobItem from 'components/job-item/job-item'; -import { useDispatch, useSelector } from 'react-redux'; -import { getQualityReportsAsync, getQualitySettingsAsync } from 'actions/analytics-actions'; -import { CombinedState } from 'reducers'; -import MeanQuality from './mean-quality'; -import JobList from './job-list'; -import GtConflicts from './gt-conflicts'; -import Issues from './issues'; -import EmptyGtJob from './empty-job'; -import QualitySettingsModal from './quality-settings-modal'; - -interface Props { - task: Task, - onJobUpdate: (job: Job) => void -} - -function TaskQualityComponent(props: Props): JSX.Element { - const { task, onJobUpdate } = props; - const dispatch = useDispatch(); - const query = useSelector((state: CombinedState) => state.analytics.quality.query); - - useEffect(() => { - dispatch(getQualityReportsAsync(task, { ...query, taskId: task.id })); - dispatch(getQualitySettingsAsync(task)); - }, []); - - const gtJob = task.jobs.find((job: Job) => job.type === JobType.GROUND_TRUTH); - - return ( -
- - - - - - - - - - Quality reports are not computed unless the GT job is in the accepted state. - - - - {gtJob ? : } - - - - - -
- ); -} - -export default React.memo(TaskQualityComponent); diff --git a/cvat-ui/src/components/task-analytics-page/styles.scss b/cvat-ui/src/components/task-analytics-page/styles.scss deleted file mode 100644 index 80ad802e9d9a..000000000000 --- a/cvat-ui/src/components/task-analytics-page/styles.scss +++ /dev/null @@ -1,141 +0,0 @@ -// Copyright (C) 2023 CVAT.ai Corporation -// -// SPDX-License-Identifier: MIT - -@import '../../base.scss'; - -.cvat-analytics-inner { - background: $background-color-1; - min-height: $grid-unit-size * 95; - padding: $grid-unit-size * 4; - - .ant-tabs { - height: 100%; - } -} - -.cvat-task-quality-page { - >.ant-row { - margin-top: $grid-unit-size; - } -} - -.cvat-task-quality-page-empty { - @extend .cvat-task-quality-page; - - display: flex; - justify-content: center; - align-items: center; - height: $grid-unit-size * 68; -} - -.cvat-task-mean-annotaion-quality { - .ant-statistic { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - } - - .ant-card-body { - padding: $grid-unit-size * 2 $grid-unit-size * 3; - } -} - -.cvat-analytics-card-title { - font-size: 16px; -} - -.cvat-analytics-card-value { - font-size: 28px; -} - -.cvat-analytics-tooltip { - margin-left: $grid-unit-size; -} - -.cvat-analytics-tooltip-inner { - span { - display: block; - color: white; - } -} - -.cvat-analytics-download-report-button { - padding-left: $grid-unit-size * 2; - padding-right: $grid-unit-size * 2; - - a { - color: white; - margin-left: $grid-unit-size; - - &:hover { - color: white; - } - } -} - -.cvat-analytics-time-hint { - font-size: 10px; - position: absolute; - bottom: -$grid-unit-size * 3; - right: $grid-unit-size * 4; -} - -.cvat-task-analytics-page { - height: 100%; -} - -.cvat-analytics-wrapper { - overflow-y: auto; - height: 90%; - width: 100%; -} - -.cvat-task-analytics-title { - margin-bottom: $grid-unit-size; - - h4 { - display: inline; - margin-right: $grid-unit-size; - } -} - -.cvat-task-quality-reports-hint { - margin-bottom: $grid-unit-size * 3; -} - -.cvat-job-item-empty-gt { - .ant-card-body { - padding: $grid-unit-size * 3; - } - - h5 { - margin: 0; - } - - .ant-btn { - padding-left: $grid-unit-size * 3; - padding-right: $grid-unit-size * 3; - } -} - -.cvat-quality-settings-switch { - padding-left: $grid-unit-size * 2; -} - -.cvat-quality-settings-title { - margin-bottom: $grid-unit-size * 2; -} - -.cvat-modal-quality-settings { - top: $grid-unit-size * 3; - - .ant-divider { - margin: $grid-unit-size 0; - } - - .ant-form-item-control-input { - min-height: 0; - } -} diff --git a/cvat-ui/src/components/task-analytics-page/task-analytics-page.tsx b/cvat-ui/src/components/task-analytics-page/task-analytics-page.tsx deleted file mode 100644 index 54d7688e5997..000000000000 --- a/cvat-ui/src/components/task-analytics-page/task-analytics-page.tsx +++ /dev/null @@ -1,131 +0,0 @@ -// Copyright (C) 2023 CVAT.ai Corporation -// -// SPDX-License-Identifier: MIT - -import './styles.scss'; - -import React, { useEffect, useState } from 'react'; -import { Row, Col } from 'antd/lib/grid'; -import Tabs from 'antd/lib/tabs'; -import { useHistory, useParams } from 'react-router'; -import Text from 'antd/lib/typography/Text'; -import Title from 'antd/lib/typography/Title'; -import Spin from 'antd/lib/spin'; -import Button from 'antd/lib/button'; -import { Task } from 'reducers'; -import { notification } from 'antd'; -import { Job, getCore } from 'cvat-core-wrapper'; -import { LeftOutlined } from '@ant-design/icons/lib/icons'; -import TaskQualityComponent from './quality/task-quality-component'; - -const core = getCore(); - -function TaskAnalyticsPage(): JSX.Element { - const [fetchingTask, setFetchingTask] = useState(true); - const [taskInstance, setTaskInstance] = useState(null); - - const history = useHistory(); - - const id = +useParams<{ id: string }>().id; - - const receieveTask = (): void => { - if (Number.isInteger(id)) { - core.tasks.get({ id }) - .then(([task]: Task[]) => { - if (task) { - setTaskInstance(task); - } - }).catch((error: Error) => { - notification.error({ - message: 'Could not receive the requested project from the server', - description: error.toString(), - }); - }).finally(() => { - setFetchingTask(false); - }); - } else { - notification.error({ - message: 'Could not receive the requested task from the server', - description: `Requested task id "${id}" is not valid`, - }); - setFetchingTask(false); - } - }; - - const onJobUpdate = (job: Job): void => { - setFetchingTask(true); - job.save().then(() => { - receieveTask(); - }).catch((error: Error) => { - notification.error({ - message: 'Could not update the job', - description: error.toString(), - }); - }).finally(() => { - setFetchingTask(false); - }); - }; - - useEffect((): void => { - receieveTask(); - }, []); - - return ( -
- { - fetchingTask ? ( -
- -
- ) : ( - -
- - - - - - {taskInstance.name} - - - {`#${taskInstance.id}`} - - - - - Quality - - )} - key='quality' - > - - - - - - ) - } - - ); -} - -export default React.memo(TaskAnalyticsPage); diff --git a/cvat-ui/src/components/task-page/job-list.tsx b/cvat-ui/src/components/task-page/job-list.tsx index 5249449fb2c6..16fe1b43b38c 100644 --- a/cvat-ui/src/components/task-page/job-list.tsx +++ b/cvat-ui/src/components/task-page/job-list.tsx @@ -3,57 +3,83 @@ // // SPDX-License-Identifier: MIT -import React, { useCallback, useEffect, useState } from 'react'; -import jsonLogic from 'json-logic-js'; -import _ from 'lodash'; +import React, { useEffect, useState } from 'react'; import { useHistory } from 'react-router'; import { Row, Col } from 'antd/lib/grid'; - -import { - Task, Job, -} from 'cvat-core-wrapper'; -import { Indexable, JobsQuery } from 'reducers'; -import JobItem from 'components/job-item/job-item'; -import Pagination from 'antd/lib/pagination'; -import { - SortingComponent, ResourceFilterHOC, defaultVisibility, updateHistoryFromQuery, -} from 'components/resource-sorting-filtering'; +import { LoadingOutlined, QuestionCircleOutlined, CopyOutlined } from '@ant-design/icons'; +import { ColumnFilterItem } from 'antd/lib/table/interface'; +import Table from 'antd/lib/table'; import Button from 'antd/lib/button'; -import { PlusOutlined } from '@ant-design/icons'; -import Empty from 'antd/lib/empty'; -import { - localStorageRecentKeyword, localStorageRecentCapacity, predefinedFilterValues, config, -} from './jobs-filter-configuration'; +import Select from 'antd/lib/select'; +import Text from 'antd/lib/typography/Text'; +import moment from 'moment'; +import copy from 'copy-to-clipboard'; -const FilteringComponent = ResourceFilterHOC( - config, localStorageRecentKeyword, localStorageRecentCapacity, predefinedFilterValues, -); +import { Task, Job } from 'cvat-core-wrapper'; +import { JobStage } from 'reducers'; +import CVATTooltip from 'components/common/cvat-tooltip'; +import UserSelector, { User } from './user-selector'; interface Props { task: Task; onUpdateJob(jobInstance: Job): void; } -const PAGE_SIZE = 10; -function setUpJobsList(jobs: Job[], query: JobsQuery): Job[] { - let result = jobs; - if (query.sort) { - let sort = query.sort.split(','); - const orders = sort.map((elem: string) => (elem.startsWith('-') ? 'desc' : 'asc')); - sort = sort.map((elem: string) => (elem.startsWith('-') ? elem.substring(1) : elem)); - const assigneeInd = sort.indexOf('assignee'); - if (assigneeInd > -1) { - sort[assigneeInd] = 'assignee.username'; +function ReviewSummaryComponent({ jobInstance }: { jobInstance: any }): JSX.Element { + const [summary, setSummary] = useState | null>(null); + const [error, setError] = useState(null); + useEffect(() => { + setError(null); + jobInstance + .issues(jobInstance.id) + .then((issues: any[]) => { + setSummary({ + issues_unsolved: issues.filter((issue) => !issue.resolved).length, + issues_resolved: issues.filter((issue) => issue.resolved).length, + }); + }) + .catch((_error: any) => { + // eslint-disable-next-line + console.log(_error); + setError(_error); + }); + }, []); + + if (!summary) { + if (error) { + if (error.toString().includes('403')) { + return

You do not have permissions

; + } + + return

Could not fetch, check console output

; } - result = _.orderBy(result, sort, orders); - } - if (query.filter) { - const converted = result.map((job) => ({ ...job, assignee: job?.assignee?.username })); - const filter = JSON.parse(query.filter); - result = result.filter((job, index) => jsonLogic.apply(filter, converted[index])); + + return ( + <> +

Loading..

+ + + ); } - return result; + return ( +
+ + + + + + + + + + +
+ Unsolved issues + {summary.issues_unsolved}
+ Resolved issues + {summary.issues_resolved}
+ ); } function JobListComponent(props: Props): JSX.Element { @@ -61,115 +87,242 @@ function JobListComponent(props: Props): JSX.Element { task: taskInstance, onUpdateJob, } = props; - const [visibility, setVisibility] = useState(defaultVisibility); const history = useHistory(); - const { id: taskId } = taskInstance; - const { jobs } = taskInstance; - - const queryParams = new URLSearchParams(history.location.search); - const updatedQuery: JobsQuery = { - page: 1, - sort: null, - search: null, - filter: null, - }; - for (const key of Object.keys(updatedQuery)) { - (updatedQuery as Indexable)[key] = queryParams.get(key) || null; - if (key === 'page') { - updatedQuery.page = updatedQuery.page ? +updatedQuery.page : 1; - } + const { jobs, id: taskId } = taskInstance; + + function sorter(path: string) { + return (obj1: any, obj2: any): number => { + let currentObj1 = obj1; + let currentObj2 = obj2; + let field1: string | null = null; + let field2: string | null = null; + for (const pathSegment of path.split('.')) { + field1 = currentObj1 && pathSegment in currentObj1 ? currentObj1[pathSegment] : null; + field2 = currentObj2 && pathSegment in currentObj2 ? currentObj2[pathSegment] : null; + currentObj1 = currentObj1 && pathSegment in currentObj1 ? currentObj1[pathSegment] : null; + currentObj2 = currentObj2 && pathSegment in currentObj2 ? currentObj2[pathSegment] : null; + } + + if (field1 && field2) { + return field1.localeCompare(field2); + } + + if (field1 === null) { + return 1; + } + + return -1; + }; } - const [query, setQuery] = useState(updatedQuery); - const filteredJobs = setUpJobsList(jobs, query); - const jobViews = filteredJobs - .slice((query.page - 1) * PAGE_SIZE, query.page * PAGE_SIZE) - .map((job: Job) => ); - useEffect(() => { - history.replace({ - search: updateHistoryFromQuery(query), + + function collectUsers(path: string): ColumnFilterItem[] { + return Array.from( + new Set( + jobs.map((job: any) => { + if (job[path] === null) { + return null; + } + + return job[path].username; + }), + ), + ).map((value: string | null) => ({ text: value || 'Is Empty', value: value || false })); + } + + const columns = [ + { + title: 'Job', + dataIndex: 'job', + key: 'job', + render: (id: number): JSX.Element => ( +
+ +
+ ), + }, + { + title: 'Frames', + dataIndex: 'frames', + key: 'frames', + className: 'cvat-text-color cvat-job-item-frames', + }, + { + title: 'Stage', + dataIndex: 'stage', + key: 'stage', + className: 'cvat-job-item-stage', + render: (jobInstance: any): JSX.Element => { + const { stage } = jobInstance; + + return ( +
+ + }> + + +
+ ); + }, + sorter: sorter('stage.stage'), + filters: [ + { text: 'annotation', value: 'annotation' }, + { text: 'validation', value: 'validation' }, + { text: 'acceptance', value: 'acceptance' }, + ], + onFilter: (value: string | number | boolean, record: any) => record.stage.stage === value, + }, + { + title: 'State', + dataIndex: 'state', + key: 'state', + className: 'cvat-job-item-state', + render: (jobInstance: any): JSX.Element => { + const { state } = jobInstance; + return ( + + {state} + + ); + }, + sorter: sorter('state.state'), + filters: [ + { text: 'new', value: 'new' }, + { text: 'in progress', value: 'in progress' }, + { text: 'completed', value: 'completed' }, + { text: 'rejected', value: 'rejected' }, + ], + onFilter: (value: string | number | boolean, record: any) => record.state.state === value, + }, + { + title: 'Started on', + dataIndex: 'started', + key: 'started', + className: 'cvat-text-color', + }, + { + title: 'Duration', + dataIndex: 'duration', + key: 'duration', + className: 'cvat-text-color', + }, + { + title: 'Assignee', + dataIndex: 'assignee', + key: 'assignee', + className: 'cvat-job-item-assignee', + render: (jobInstance: any): JSX.Element => ( + { + if (jobInstance?.assignee?.id === value?.id) return; + jobInstance.assignee = value; + onUpdateJob(jobInstance); + }} + /> + ), + sorter: sorter('assignee.assignee.username'), + filters: collectUsers('assignee'), + onFilter: (value: string | number | boolean, record: any) => ( + record.assignee.assignee?.username || false + ) === value, + }, + ]; + + let completed = 0; + const data = jobs.reduce((acc: any[], job: any) => { + if (job.stage === 'acceptance') { + completed++; + } + + const created = moment(taskInstance.createdDate); + + const now = moment(moment.now()); + acc.push({ + key: job.id, + job: job.id, + frames: `${job.startFrame}-${job.stopFrame}`, + state: job, + stage: job, + started: `${created.format('MMMM Do YYYY HH:MM')}`, + duration: `${moment.duration(now.diff(created)).humanize()}`, + assignee: job, }); - }, [query]); - const onCreateJob = useCallback(() => { - history.push(`/tasks/${taskId}/jobs/create`); + return acc; }, []); return ( - <> -
- ( - setVisibility({ ...defaultVisibility, sorting: visible }) - )} - defaultFields={query.sort?.split(',') || ['-ID']} - sortingFields={['ID', 'Assignee', 'State', 'Stage']} - onApplySorting={(sort: string | null) => { - setQuery({ - ...query, - sort, - }); - }} - /> - ( - setVisibility({ ...defaultVisibility, predefined: visible }) - )} - onBuilderVisibleChange={(visible: boolean) => ( - setVisibility({ ...defaultVisibility, builder: visible }) - )} - onRecentVisibleChange={(visible: boolean) => ( - setVisibility({ ...defaultVisibility, builder: visibility.builder, recent: visible }) - )} - onApplyFilter={(filter: string | null) => { - setQuery({ - ...query, - filter, - }); - }} - /> -
-
-
- - { - jobViews.length ? ( - <> -
- - {jobViews} - -
- - - { - setQuery({ - ...query, - page, - }); - }} - showSizeChanger={false} - total={filteredJobs.length} - pageSize={PAGE_SIZE} - current={query.page} - showQuickJumper - /> - - - - ) : ( - - ) - } - +
+ + + Jobs + + + + + + {`${completed} of ${data.length} jobs`} + + + 'cvat-task-jobs-table-row'} + columns={columns} + dataSource={data} + size='small' + /> + ); } diff --git a/cvat-ui/src/components/task-page/jobs-filter-configuration.ts b/cvat-ui/src/components/task-page/jobs-filter-configuration.ts deleted file mode 100644 index ab5569df1407..000000000000 --- a/cvat-ui/src/components/task-page/jobs-filter-configuration.ts +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright (C) 2022 Intel Corporation -// -// SPDX-License-Identifier: MIT - -import { Config } from 'react-awesome-query-builder'; - -export const config: Partial = { - fields: { - state: { - label: 'State', - type: 'select', - operators: ['select_any_in', 'select_equals'], // ['select_equals', 'select_not_equals', 'select_any_in', 'select_not_any_in'] - valueSources: ['value'], - fieldSettings: { - listValues: [ - { value: 'new', title: 'new' }, - { value: 'in progress', title: 'in progress' }, - { value: 'rejected', title: 'rejected' }, - { value: 'completed', title: 'completed' }, - ], - }, - }, - stage: { - label: 'Stage', - type: 'select', - operators: ['select_any_in', 'select_equals'], - valueSources: ['value'], - fieldSettings: { - listValues: [ - { value: 'annotation', title: 'annotation' }, - { value: 'validation', title: 'validation' }, - { value: 'acceptance', title: 'acceptance' }, - ], - }, - }, - dimension: { - label: 'Dimension', - type: 'select', - operators: ['select_equals'], - valueSources: ['value'], - fieldSettings: { - listValues: [ - { value: '2d', title: '2D' }, - { value: '3d', title: '3D' }, - ], - }, - }, - assignee: { - label: 'Assignee', - type: 'text', // todo: change to select - valueSources: ['value'], - fieldSettings: { - // useAsyncSearch: true, - // forceAsyncSearch: true, - // async fetch does not work for now in this library for AntdConfig - // but that issue was solved, see https://github.com/ukrbublik/react-awesome-query-builder/issues/616 - // waiting for a new release, alternative is to use material design, but it is not the best option too - // asyncFetch: async (search: string | null) => { - // const users = await core.users.get({ - // limit: 10, - // is_active: true, - // ...(search ? { search } : {}), - // }); - - // return { - // values: users.map((user: any) => ({ - // value: user.username, title: user.username, - // })), - // hasMore: false, - // }; - // }, - }, - }, - updated_date: { - label: 'Last updated', - type: 'datetime', - operators: ['between', 'greater', 'greater_or_equal', 'less', 'less_or_equal'], - }, - type: { - label: 'Type', - type: 'select', - operators: ['select_equals'], - valueSources: ['value'], - fieldSettings: { - listValues: [ - { value: 'annotation', title: 'Annotation' }, - { value: 'ground_truth', title: 'Ground truth' }, - ], - }, - }, - id: { - label: 'ID', - type: 'number', - operators: ['equal', 'between', 'greater', 'greater_or_equal', 'less', 'less_or_equal'], - fieldSettings: { min: 0 }, - valueSources: ['value'], - }, - }, -}; - -export const localStorageRecentCapacity = 10; -export const localStorageRecentKeyword = 'recentlyAppliedJobsFilters'; -export const predefinedFilterValues = { - 'Assigned to me': '{"and":[{"==":[{"var":"assignee"},""]}]}', - 'Not completed': '{"!":{"or":[{"==":[{"var":"state"},"completed"]},{"==":[{"var":"stage"},"acceptance"]}]}}', -}; diff --git a/cvat-ui/src/components/task-page/styles.scss b/cvat-ui/src/components/task-page/styles.scss index 86b68a789076..487164e9e151 100644 --- a/cvat-ui/src/components/task-page/styles.scss +++ b/cvat-ui/src/components/task-page/styles.scss @@ -7,7 +7,7 @@ .cvat-task-details-wrapper { overflow-y: auto; - height: 100%; + height: 90%; width: 100%; .cvat-task-details { @@ -103,10 +103,14 @@ .cvat-task-job-list { width: 100%; height: auto; - margin-top: $grid-unit-size * 2; + border: 1px solid $border-color-1; + border-radius: 3px; + margin-top: 20px; + padding: 20px; + background: $background-color-1; - .cvat-job-item { - margin-bottom: $grid-unit-size; + > div:nth-child(1) > div:nth-child(1) { + display: flex; } } @@ -165,13 +169,3 @@ } } } - -.cvat-jobs-list-filters-wrapper { - display: flex; - justify-content: end; - margin-top: $grid-unit-size * 2; - - .cvat-resource-page-filters { - margin-right: $grid-unit-size * 4; - } -} diff --git a/cvat-ui/src/components/task-page/task-page.tsx b/cvat-ui/src/components/task-page/task-page.tsx index 5a5138b81180..752029dc0ef7 100644 --- a/cvat-ui/src/components/task-page/task-page.tsx +++ b/cvat-ui/src/components/task-page/task-page.tsx @@ -140,7 +140,7 @@ function TaskPageComponent(): JSX.Element { align='top' className='cvat-task-details-wrapper' > - + diff --git a/cvat-ui/src/components/task-page/top-bar.tsx b/cvat-ui/src/components/task-page/top-bar.tsx index 6a365caf255b..01542d619033 100644 --- a/cvat-ui/src/components/task-page/top-bar.tsx +++ b/cvat-ui/src/components/task-page/top-bar.tsx @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: MIT -import React, { useCallback } from 'react'; +import React from 'react'; import { useHistory } from 'react-router'; import { Row, Col } from 'antd/lib/grid'; import { LeftOutlined, MoreOutlined } from '@ant-design/icons'; @@ -21,10 +21,6 @@ export default function DetailsComponent(props: DetailsComponentProps): JSX.Elem const history = useHistory(); - const onViewAnalytics = useCallback(() => { - history.push(`/tasks/${taskInstance.id}/analytics`); - }, [history]); - return ( @@ -51,13 +47,7 @@ export default function DetailsComponent(props: DetailsComponentProps): JSX.Elem )} - - )} - > + }> @@ -168,13 +164,7 @@ class TaskItemComponent extends React.PureComponent - - )} - > + }> Actions diff --git a/cvat-ui/src/containers/actions-menu/actions-menu.tsx b/cvat-ui/src/containers/actions-menu/actions-menu.tsx index 07bd9c6e5512..7435b18ccf5d 100644 --- a/cvat-ui/src/containers/actions-menu/actions-menu.tsx +++ b/cvat-ui/src/containers/actions-menu/actions-menu.tsx @@ -20,7 +20,6 @@ import { importActions } from 'actions/import-actions'; interface OwnProps { taskInstance: any; - onViewAnalytics: () => void; } interface StateToProps { @@ -88,8 +87,8 @@ function ActionsMenuContainer(props: OwnProps & StateToProps & DispatchToProps): deleteTask, openRunModelWindow, openMoveTaskToProjectWindow, - onViewAnalytics, } = props; + const onClickMenu = (params: MenuInfo): void | JSX.Element => { const [action] = params.keyPath; if (action === Actions.EXPORT_TASK_DATASET) { @@ -106,8 +105,6 @@ function ActionsMenuContainer(props: OwnProps & StateToProps & DispatchToProps): openMoveTaskToProjectWindow(taskInstance.id); } else if (action === Actions.LOAD_TASK_ANNO) { showImportModal(taskInstance); - } else if (action === Actions.VIEW_ANALYTICS) { - onViewAnalytics(); } }; diff --git a/cvat-ui/src/containers/annotation-page/standard-workspace/objects-side-bar/object-item.tsx b/cvat-ui/src/containers/annotation-page/standard-workspace/objects-side-bar/object-item.tsx index ad9d3491e966..3b598bcef4f3 100644 --- a/cvat-ui/src/containers/annotation-page/standard-workspace/objects-side-bar/object-item.tsx +++ b/cvat-ui/src/containers/annotation-page/standard-workspace/objects-side-bar/object-item.tsx @@ -336,7 +336,6 @@ class ObjectItemContainer extends React.PureComponent { serverID={objectState.serverID} locked={objectState.lock} labelID={objectState.label.id} - isGroundTruth={objectState.isGroundTruth} color={getColor(objectState, colorBy)} attributes={attributes} elements={objectState.elements} diff --git a/cvat-ui/src/containers/annotation-page/standard-workspace/objects-side-bar/objects-list.tsx b/cvat-ui/src/containers/annotation-page/standard-workspace/objects-side-bar/objects-list.tsx index 4003ad33e7b0..feb2c8788221 100644 --- a/cvat-ui/src/containers/annotation-page/standard-workspace/objects-side-bar/objects-list.tsx +++ b/cvat-ui/src/containers/annotation-page/standard-workspace/objects-side-bar/objects-list.tsx @@ -19,9 +19,6 @@ import { switchPropagateVisibility as switchPropagateVisibilityAction, removeObject as removeObjectAction, } from 'actions/annotation-actions'; -import { - changeShowGroundTruth as changeShowGroundTruthAction, -} from 'actions/settings-actions'; import isAbleToChangeFrame from 'utils/is-able-to-change-frame'; import { CombinedState, StatesOrdering, ObjectType, ColorBy, @@ -49,7 +46,6 @@ interface StateToProps { maxZLayer: number; keyMap: KeyMap; normalizedKeyMap: Record; - showGroundTruth: boolean; } interface DispatchToProps { @@ -60,7 +56,6 @@ interface DispatchToProps { switchPropagateVisibility: (visible: boolean) => void; changeFrame(frame: number): void; changeGroupColor(group: number, color: string): void; - changeShowGroundTruth(value: boolean): void; } function mapStateToProps(state: CombinedState): StateToProps { @@ -74,7 +69,6 @@ function mapStateToProps(state: CombinedState): StateToProps { activatedStateID, activatedElementID, zLayer: { min: minZLayer, max: maxZLayer }, - statesSources, }, job: { instance: jobInstance }, player: { @@ -83,15 +77,15 @@ function mapStateToProps(state: CombinedState): StateToProps { colors, }, settings: { - shapes: { colorBy, showGroundTruth }, + shapes: { colorBy }, }, shortcuts: { keyMap, normalizedKeyMap }, } = state; let statesHidden = true; let statesLocked = true; - const filteredStates = objectStates.filter((e) => !e.jobID || statesSources.includes(e.jobID)); - filteredStates.forEach((objectState: ObjectState) => { + + objectStates.forEach((objectState: ObjectState) => { const { lock } = objectState; if (!lock) { if (objectState.objectType !== ObjectType.TAG) { @@ -112,7 +106,7 @@ function mapStateToProps(state: CombinedState): StateToProps { statesLocked, statesCollapsedAll: collapsedAll, collapsedStates: collapsed, - objectStates: filteredStates, + objectStates, frameNumber, jobInstance, annotationsFilters, @@ -124,7 +118,6 @@ function mapStateToProps(state: CombinedState): StateToProps { maxZLayer, keyMap, normalizedKeyMap, - showGroundTruth, }; } @@ -151,9 +144,6 @@ function mapDispatchToProps(dispatch: any): DispatchToProps { changeGroupColor(group: number, color: string): void { dispatch(changeGroupColorAsync(group, color)); }, - changeShowGroundTruth(value: boolean): void { - dispatch(changeShowGroundTruthAction(value)); - }, }; } @@ -242,12 +232,6 @@ class ObjectsListContainer extends React.PureComponent { this.hideAllStates(false); }; - private changeShowGroundTruth = (): void => { - const { showGroundTruth, changeShowGroundTruth } = this.props; - - changeShowGroundTruth(!showGroundTruth); - }; - private lockAllStates(locked: boolean): void { const { objectStates, updateAnnotations, readonly } = this.props; @@ -292,7 +276,6 @@ class ObjectsListContainer extends React.PureComponent { colorBy, readonly, statesCollapsedAll, - showGroundTruth, updateAnnotations, changeGroupColor, removeObject, @@ -500,7 +483,6 @@ class ObjectsListContainer extends React.PureComponent { readonly={readonly || false} statesOrdering={statesOrdering} sortedStatesID={sortedStatesID} - showGroundTruth={showGroundTruth} objectStates={objectStates} switchHiddenAllShortcut={normalizedKeyMap.SWITCH_ALL_HIDDEN} switchLockAllShortcut={normalizedKeyMap.SWITCH_ALL_LOCK} @@ -511,7 +493,6 @@ class ObjectsListContainer extends React.PureComponent { expandAllStates={this.onExpandAllStates} hideAllStates={this.onHideAllStates} showAllStates={this.onShowAllStates} - changeShowGroundTruth={this.changeShowGroundTruth} /> ); diff --git a/cvat-ui/src/containers/annotation-page/top-bar/top-bar.tsx b/cvat-ui/src/containers/annotation-page/top-bar/top-bar.tsx index 14aecc356613..0910c4c8abf3 100644 --- a/cvat-ui/src/containers/annotation-page/top-bar/top-bar.tsx +++ b/cvat-ui/src/containers/annotation-page/top-bar/top-bar.tsx @@ -66,7 +66,6 @@ interface StateToProps { canvasInstance: Canvas | Canvas3d; forceExit: boolean; activeControl: ActiveControl; - frameFilters: any[]; } interface DispatchToProps { @@ -99,7 +98,6 @@ function mapStateToProps(state: CombinedState): StateToProps { delay: frameDelay, fetching: frameFetching, }, - filters, }, annotations: { saving: { uploading: saving, forceExit }, @@ -144,7 +142,6 @@ function mapStateToProps(state: CombinedState): StateToProps { canvasInstance, forceExit, activeControl, - frameFilters: filters, }; } @@ -343,16 +340,13 @@ class AnnotationTopBarContainer extends React.PureComponent { private onPrevFrame = async (): Promise => { const { prevButtonType } = this.state; const { - frameNumber, jobInstance, playing, onSwitchPlay, showDeletedFrames, frameFilters, + frameNumber, jobInstance, playing, onSwitchPlay, showDeletedFrames, } = this.props; const { startFrame } = jobInstance; const frameFrom = Math.max(jobInstance.startFrame, frameNumber - 1); - const newFrame = await jobInstance.frames.search( - { notDeleted: !showDeletedFrames, jsonFilters: frameFilters }, - frameFrom, - jobInstance.startFrame, - ); + const newFrame = showDeletedFrames ? frameFrom : + await jobInstance.frames.search({ notDeleted: true }, frameFrom, jobInstance.startFrame); if (newFrame !== frameNumber && newFrame !== null) { if (playing) { onSwitchPlay(false); @@ -371,16 +365,13 @@ class AnnotationTopBarContainer extends React.PureComponent { private onNextFrame = async (): Promise => { const { nextButtonType } = this.state; const { - frameNumber, jobInstance, playing, onSwitchPlay, showDeletedFrames, frameFilters, + frameNumber, jobInstance, playing, onSwitchPlay, showDeletedFrames, } = this.props; const { stopFrame } = jobInstance; const frameFrom = Math.min(jobInstance.stopFrame, frameNumber + 1); - const newFrame = await jobInstance.frames.search( - { notDeleted: !showDeletedFrames, jsonFilters: frameFilters }, - frameFrom, - jobInstance.stopFrame, - ); + const newFrame = showDeletedFrames ? frameFrom : + await jobInstance.frames.search({ notDeleted: true }, frameFrom, jobInstance.stopFrame); if (newFrame !== frameNumber && newFrame !== null) { if (playing) { onSwitchPlay(false); diff --git a/cvat-ui/src/cvat-core-wrapper.ts b/cvat-ui/src/cvat-core-wrapper.ts index 1f79d6b55ad7..56a0c6fcf4a1 100644 --- a/cvat-ui/src/cvat-core-wrapper.ts +++ b/cvat-ui/src/cvat-core-wrapper.ts @@ -14,12 +14,8 @@ import { import { SerializedAttribute, SerializedLabel } from 'cvat-core/src/server-response-types'; import { Job, Task } from 'cvat-core/src/session'; import Project from 'cvat-core/src/project'; -import QualityReport from 'cvat-core/src/quality-report'; -import QualityConflict, { AnnotationConflict, ConflictImportance } from 'cvat-core/src/quality-conflict'; -import QualitySettings from 'cvat-core/src/quality-settings'; import { - ShapeType, LabelType, ModelKind, ModelProviders, ModelReturnType, DimensionType, JobType, - JobStage, JobState, + ShapeType, LabelType, ModelKind, ModelProviders, ModelReturnType, DimensionType, } from 'cvat-core/src/enums'; import { Storage, StorageData } from 'cvat-core/src/storage'; import Issue from 'cvat-core/src/issue'; @@ -64,14 +60,6 @@ export { ModelReturnType, DimensionType, Dumper, - JobType, - JobStage, - JobState, - QualityReport, - QualityConflict, - QualitySettings, - AnnotationConflict, - ConflictImportance, }; export type { diff --git a/cvat-ui/src/icons.tsx b/cvat-ui/src/icons.tsx index fc515157b8f8..b44b21d7837e 100644 --- a/cvat-ui/src/icons.tsx +++ b/cvat-ui/src/icons.tsx @@ -63,11 +63,6 @@ import SVGClearIcon from './assets/clear-icon.svg'; import SVGShowPasswordIcon from './assets/show-password.svg'; import SVGPlusIcon from './assets/plus-icon.svg'; import SVGCheckIcon from './assets/check-icon.svg'; -import SVGDurationIcon from './assets/duration-icon.svg'; -import SVGFrameCountIcon from './assets/frame-count-icon.svg'; -import SVGFramesIcon from './assets/frames-icon.svg'; -import SVGConflictIcon from './assets/conflict.svg'; -import SVGShowGroundTruthIcon from './assets/show-gt-icon.svg'; export const CVATLogo = React.memo((): JSX.Element => ); export const CursorIcon = React.memo((): JSX.Element => ); @@ -127,8 +122,3 @@ export const ClearIcon = React.memo((): JSX.Element => ); export const ShowPasswordIcon = React.memo((): JSX.Element => ); export const PlusIcon = React.memo((): JSX.Element => ); export const CheckIcon = React.memo((): JSX.Element => ); -export const DurationIcon = React.memo((): JSX.Element => ); -export const FrameCountIcon = React.memo((): JSX.Element => ); -export const FramesIcon = React.memo((): JSX.Element => ); -export const ConflictIcon = React.memo((): JSX.Element => ); -export const ShowGroundTruthIcon = React.memo((): JSX.Element => ); diff --git a/cvat-ui/src/reducers/analytics-reducer.ts b/cvat-ui/src/reducers/analytics-reducer.ts deleted file mode 100644 index 80dda841001e..000000000000 --- a/cvat-ui/src/reducers/analytics-reducer.ts +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright (C) 2023 CVAT.ai Corporation -// -// SPDX-License-Identifier: MIT - -import { AnalyticsActions, AnalyticsActionsTypes } from 'actions/analytics-actions'; -import { AnalyticsState } from 'reducers'; - -const defaultState: AnalyticsState = { - fetching: false, - quality: { - tasksReports: [], - jobsReports: [], - query: { - taskId: null, - jobId: null, - parentId: null, - }, - settings: { - modalVisible: false, - fetching: false, - current: null, - }, - }, -}; - -export default function ( - state: AnalyticsState = defaultState, - action: AnalyticsActions, -): AnalyticsState { - switch (action.type) { - case AnalyticsActionsTypes.GET_QUALITY_REPORTS: { - return { - ...state, - fetching: true, - quality: { - ...state.quality, - query: { - ...action.payload.query, - }, - }, - }; - } - case AnalyticsActionsTypes.GET_QUALITY_REPORTS_SUCCESS: - return { - ...state, - fetching: false, - quality: { - ...state.quality, - tasksReports: action.payload.tasksReports, - jobsReports: action.payload.jobsReports, - }, - }; - case AnalyticsActionsTypes.GET_QUALITY_REPORTS_FAILED: - return { - ...state, - fetching: false, - }; - case AnalyticsActionsTypes.SWITCH_QUALITY_SETTINGS_VISIBLE: - return { - ...state, - quality: { - ...state.quality, - settings: { - ...state.quality.settings, - modalVisible: action.payload.visible, - }, - }, - }; - case AnalyticsActionsTypes.UPDATE_QUALITY_SETTINGS: - case AnalyticsActionsTypes.GET_QUALITY_SETTINGS: { - return { - ...state, - quality: { - ...state.quality, - settings: { - ...state.quality.settings, - fetching: true, - }, - }, - }; - } - case AnalyticsActionsTypes.UPDATE_QUALITY_SETTINGS_SUCCESS: - case AnalyticsActionsTypes.GET_QUALITY_SETTINGS_SUCCESS: - return { - ...state, - quality: { - ...state.quality, - settings: { - ...state.quality.settings, - current: action.payload.settings, - fetching: false, - }, - }, - }; - case AnalyticsActionsTypes.UPDATE_QUALITY_SETTINGS_FAILED: - case AnalyticsActionsTypes.GET_QUALITY_SETTINGS_FAILED: - return { - ...state, - quality: { - ...state.quality, - settings: { - ...state.quality.settings, - fetching: false, - }, - }, - }; - default: - return state; - } -} diff --git a/cvat-ui/src/reducers/annotation-reducer.ts b/cvat-ui/src/reducers/annotation-reducer.ts index f25fb997d13a..509fd3fc0085 100644 --- a/cvat-ui/src/reducers/annotation-reducer.ts +++ b/cvat-ui/src/reducers/annotation-reducer.ts @@ -12,7 +12,6 @@ import { Canvas3d } from 'cvat-canvas3d-wrapper'; import { DimensionType } from 'cvat-core-wrapper'; import { clamp } from 'utils/math'; -import { SettingsActionTypes } from 'actions/settings-actions'; import { ActiveControl, AnnotationState, @@ -56,7 +55,6 @@ const defaultState: AnnotationState = { openTime: null, labels: [], requestedId: null, - groundTruthJobId: null, instance: null, attributes: {}, fetching: false, @@ -75,7 +73,6 @@ const defaultState: AnnotationState = { playing: false, frameAngles: [], navigationBlocked: false, - filters: [], }, drawing: { activeShapeType: ShapeType.RECTANGLE, @@ -92,7 +89,6 @@ const defaultState: AnnotationState = { }, collapsed: {}, collapsedAll: true, - statesSources: [], states: [], filters: [], resetGroupFlag: false, @@ -152,7 +148,6 @@ export default (state = defaultState, action: AnyAction): AnnotationState => { frameData: data, minZ, maxZ, - groundTruthJobId, } = action.payload; const isReview = job.stage === JobStage.REVIEW; @@ -184,7 +179,6 @@ export default (state = defaultState, action: AnyAction): AnnotationState => { acc[label.id] = label.attributes; return acc; }, {}), - groundTruthJobId, }, annotations: { ...state.annotations, @@ -195,7 +189,6 @@ export default (state = defaultState, action: AnyAction): AnnotationState => { max: maxZ, cur: maxZ, }, - statesSources: [job.id], }, player: { ...state.player, @@ -274,6 +267,7 @@ export default (state = defaultState, action: AnyAction): AnnotationState => { delay, changeTime, } = action.payload; + return { ...state, player: { @@ -1015,16 +1009,6 @@ export default (state = defaultState, action: AnyAction): AnnotationState => { }, }; } - case AnnotationActionTypes.CHANGE_FRAME_FILTERS: { - const { filters } = action.payload; - return { - ...state, - player: { - ...state.player, - filters, - }, - }; - } case AnnotationActionTypes.SWITCH_Z_LAYER: { const { cur } = action.payload; const { max, min } = state.annotations.zLayer; @@ -1107,11 +1091,6 @@ export default (state = defaultState, action: AnyAction): AnnotationState => { return state; } - let { statesSources } = state.annotations; - if (workspace !== Workspace.REVIEW_WORKSPACE) { - statesSources = [state.job.instance.id]; - } - return { ...state, workspace, @@ -1119,7 +1098,6 @@ export default (state = defaultState, action: AnyAction): AnnotationState => { ...state.annotations, activatedStateID: null, activatedAttributeID: null, - statesSources, }, }; } @@ -1198,29 +1176,6 @@ export default (state = defaultState, action: AnyAction): AnnotationState => { }, }; } - case SettingsActionTypes.CHANGE_SHOW_GROUND_TRUTH: { - if (action.payload.showGroundTruth) { - return { - ...state, - annotations: { - ...state.annotations, - statesSources: [ - state.job.instance.id, - state.job.groundTruthJobId, - ], - }, - }; - } - return { - ...state, - annotations: { - ...state.annotations, - statesSources: [ - state.job.instance.id, - ], - }, - }; - } case AnnotationActionTypes.CLOSE_JOB: case AuthActionTypes.LOGOUT_SUCCESS: { if (state.canvas.instance) { diff --git a/cvat-ui/src/reducers/index.ts b/cvat-ui/src/reducers/index.ts index 1ac22aed0e5d..e38e8c8079ea 100644 --- a/cvat-ui/src/reducers/index.ts +++ b/cvat-ui/src/reducers/index.ts @@ -6,7 +6,7 @@ import { Canvas3d } from 'cvat-canvas3d/src/typescript/canvas3d'; import { Canvas, RectDrawingMethod, CuboidDrawingMethod } from 'cvat-canvas-wrapper'; import { - Webhook, MLModel, ModelProvider, Organization, QualityReport, QualityConflict, QualitySettings, + Webhook, MLModel, ModelProvider, Organization, } from 'cvat-core-wrapper'; import { IntelligentScissors } from 'utils/opencv-wrapper/intelligent-scissors'; import { KeyMap } from 'utils/mousetrap-react'; @@ -93,11 +93,6 @@ export interface JobsState { previews: { [index: number]: Preview; }; - activities: { - deletes: { - [tid: number]: boolean; - }; - }; } export interface TasksState { @@ -451,8 +446,6 @@ export interface NotificationsState { jobs: { updating: null | ErrorState; fetching: null | ErrorState; - creating: null | ErrorState; - deleting: null | ErrorState; }; formats: { fetching: null | ErrorState; @@ -544,11 +537,6 @@ export interface NotificationsState { updating: null | ErrorState; deleting: null | ErrorState; }; - analytics: { - fetching: null | ErrorState; - fetchingSettings: null | ErrorState; - updatingSettings: null | ErrorState; - } }; messages: { tasks: { @@ -667,7 +655,6 @@ export interface AnnotationState { openTime: null | number; labels: any[]; requestedId: number | null; - groundTruthJobId: number | null; instance: any | null | undefined; attributes: Record; fetching: boolean; @@ -686,7 +673,6 @@ export interface AnnotationState { navigationBlocked: boolean; playing: boolean; frameAngles: number[]; - filters: any[]; }; drawing: { activeInteractor?: MLModel | OpenCVTool; @@ -704,7 +690,6 @@ export interface AnnotationState { activatedAttributeID: number | null; collapsed: Record; collapsedAll: boolean; - statesSources: number[]; states: any[]; filters: any[]; resetGroupFlag: boolean; @@ -814,7 +799,6 @@ export interface ShapesSettingsState { outlineColor: string; showBitmap: boolean; showProjections: boolean; - showGroundTruth: boolean; } export interface SettingsState { @@ -848,8 +832,6 @@ export interface ReviewState { newIssuePosition: number[] | null; issuesHidden: boolean; issuesResolvedHidden: boolean; - conflicts: QualityConflict[]; - frameConflicts: QualityConflict[]; fetching: { jobId: number | null; issueId: number | null; @@ -885,26 +867,6 @@ export interface WebhooksState { query: WebhooksQuery; } -export interface QualityQuery { - taskId: number | null; - jobId: number | null; - parentId: number | null; -} - -export interface AnalyticsState { - fetching: boolean; - quality: { - tasksReports: QualityReport[]; - jobsReports: QualityReport[]; - query: QualityQuery; - settings: { - modalVisible: boolean; - current: QualitySettings | null; - fetching: boolean; - } - } -} - export interface CombinedState { auth: AuthState; projects: ProjectsState; @@ -925,7 +887,6 @@ export interface CombinedState { cloudStorages: CloudStoragesState; organizations: OrganizationState; webhooks: WebhooksState; - analytics: AnalyticsState; } export interface Indexable { diff --git a/cvat-ui/src/reducers/jobs-reducer.ts b/cvat-ui/src/reducers/jobs-reducer.ts index 5e567f877184..efea5581da65 100644 --- a/cvat-ui/src/reducers/jobs-reducer.ts +++ b/cvat-ui/src/reducers/jobs-reducer.ts @@ -16,9 +16,6 @@ const defaultState: JobsState = { }, current: [], previews: {}, - activities: { - deletes: {}, - }, }; export default (state: JobsState = defaultState, action: JobsActions): JobsState => { @@ -92,54 +89,6 @@ export default (state: JobsState = defaultState, action: JobsActions): JobsState }, }; } - case JobsActionTypes.DELETE_JOB: { - const { jobID } = action.payload; - const { deletes } = state.activities; - - deletes[jobID] = false; - - return { - ...state, - activities: { - ...state.activities, - deletes: { - ...deletes, - }, - }, - }; - } - case JobsActionTypes.DELETE_JOB_SUCCESS: { - const { jobID } = action.payload; - const { deletes } = state.activities; - - deletes[jobID] = true; - - return { - ...state, - activities: { - ...state.activities, - deletes: { - ...deletes, - }, - }, - }; - } - case JobsActionTypes.DELETE_JOB_FAILED: { - const { jobID } = action.payload; - const { deletes } = state.activities; - - delete deletes[jobID]; - - return { - ...state, - activities: { - ...state.activities, - deletes: { - ...deletes, - }, - }, - }; - } default: { return state; } diff --git a/cvat-ui/src/reducers/notifications-reducer.ts b/cvat-ui/src/reducers/notifications-reducer.ts index a89e5f84471b..a1f13f7e77e1 100644 --- a/cvat-ui/src/reducers/notifications-reducer.ts +++ b/cvat-ui/src/reducers/notifications-reducer.ts @@ -23,7 +23,6 @@ import { OrganizationActionsTypes } from 'actions/organization-actions'; import { JobsActionTypes } from 'actions/jobs-actions'; import { WebhooksActionsTypes } from 'actions/webhooks-actions'; -import { AnalyticsActionsTypes } from 'actions/analytics-actions'; import { NotificationsState } from '.'; const defaultState: NotificationsState = { @@ -61,8 +60,6 @@ const defaultState: NotificationsState = { jobs: { updating: null, fetching: null, - creating: null, - deleting: null, }, formats: { fetching: null, @@ -154,11 +151,6 @@ const defaultState: NotificationsState = { updating: null, deleting: null, }, - analytics: { - fetching: null, - fetchingSettings: null, - updatingSettings: null, - }, }, messages: { tasks: { @@ -1541,40 +1533,7 @@ export default function (state = defaultState, action: AnyAction): Notifications fetching: { message: 'Could not fetch a list of jobs', reason: action.payload.error.toString(), - className: 'cvat-notification-notice-update-get-jobs-failed', - }, - }, - }, - }; - } - case JobsActionTypes.CREATE_JOB_FAILED: { - return { - ...state, - errors: { - ...state.errors, - jobs: { - ...state.errors.jobs, - creating: { - message: 'Could not create job', - reason: action.payload.error.toString(), - className: 'cvat-notification-notice-create-job-failed', - }, - }, - }, - }; - } - case JobsActionTypes.DELETE_JOB_FAILED: { - const { jobID } = action.payload; - return { - ...state, - errors: { - ...state.errors, - jobs: { - ...state.errors.jobs, - deleting: { - message: `Could not delete the job #${jobID}`, - reason: action.payload.error.toString(), - className: 'cvat-notification-notice-delete-job-failed', + className: 'cvat-notification-notice-update-organization-membership-failed', }, }, }, @@ -1644,54 +1603,6 @@ export default function (state = defaultState, action: AnyAction): Notifications }, }; } - case AnalyticsActionsTypes.GET_QUALITY_REPORTS_FAILED: { - return { - ...state, - errors: { - ...state.errors, - analytics: { - ...state.errors.analytics, - fetching: { - message: 'Could not fetch quality reports', - reason: action.payload.error.toString(), - className: 'cvat-notification-notice-get-quality-reports-failed', - }, - }, - }, - }; - } - case AnalyticsActionsTypes.GET_QUALITY_SETTINGS_FAILED: { - return { - ...state, - errors: { - ...state.errors, - analytics: { - ...state.errors.analytics, - fetchingSettings: { - message: 'Could not fetch quality settings', - reason: action.payload.error.toString(), - className: 'cvat-notification-notice-get-quality-settings-failed', - }, - }, - }, - }; - } - case AnalyticsActionsTypes.UPDATE_QUALITY_SETTINGS_FAILED: { - return { - ...state, - errors: { - ...state.errors, - analytics: { - ...state.errors.analytics, - updatingSettings: { - message: 'Could not update quality settings', - reason: action.payload.error.toString(), - className: 'cvat-notification-notice-update-quality-settings-failed', - }, - }, - }, - }; - } case BoundariesActionTypes.RESET_AFTER_ERROR: case AuthActionTypes.LOGOUT_SUCCESS: { return { ...defaultState }; diff --git a/cvat-ui/src/reducers/review-reducer.ts b/cvat-ui/src/reducers/review-reducer.ts index dd4d507eccf3..007c89b6f98c 100644 --- a/cvat-ui/src/reducers/review-reducer.ts +++ b/cvat-ui/src/reducers/review-reducer.ts @@ -6,15 +6,12 @@ import config from 'config'; import { AnnotationActionTypes } from 'actions/annotation-actions'; import { ReviewActionTypes } from 'actions/review-actions'; import { AuthActionTypes } from 'actions/auth-actions'; -import { QualityConflict } from 'cvat-core-wrapper'; import { ReviewState } from '.'; const defaultState: ReviewState = { issues: [], latestComments: [], frameIssues: [], // saved on the server and not saved on the server - conflicts: [], - frameConflicts: [], newIssuePosition: null, issuesHidden: false, issuesResolvedHidden: false, @@ -29,18 +26,14 @@ export default function (state: ReviewState = defaultState, action: any): Review case AnnotationActionTypes.GET_JOB_SUCCESS: { const { issues, - conflicts, frameData: { number: frame }, } = action.payload; const frameIssues = issues.filter((issue: any): boolean => issue.frame === frame); - const frameConflicts = conflicts.filter((conflict: QualityConflict): boolean => conflict.frame === frame); return { ...state, issues, frameIssues, - conflicts, - frameConflicts, }; } case AnnotationActionTypes.CHANGE_FRAME: { @@ -88,7 +81,6 @@ export default function (state: ReviewState = defaultState, action: any): Review return { ...state, frameIssues: state.issues.filter((issue: any): boolean => issue.frame === frame), - frameConflicts: state.conflicts.filter((conflict: any): boolean => conflict.frame === frame), }; } case ReviewActionTypes.START_ISSUE: { diff --git a/cvat-ui/src/reducers/root-reducer.ts b/cvat-ui/src/reducers/root-reducer.ts index 3559a0fa2134..0562fe21fe78 100644 --- a/cvat-ui/src/reducers/root-reducer.ts +++ b/cvat-ui/src/reducers/root-reducer.ts @@ -23,7 +23,6 @@ import importReducer from './import-reducer'; import cloudStoragesReducer from './cloud-storages-reducer'; import organizationsReducer from './organizations-reducer'; import webhooksReducer from './webhooks-reducer'; -import analyticsReducer from './analytics-reducer'; export default function createRootReducer(): Reducer { return combineReducers({ @@ -46,6 +45,5 @@ export default function createRootReducer(): Reducer { cloudStorages: cloudStoragesReducer, organizations: organizationsReducer, webhooks: webhooksReducer, - analytics: analyticsReducer, }); } diff --git a/cvat-ui/src/reducers/settings-reducer.ts b/cvat-ui/src/reducers/settings-reducer.ts index e732f26a7e7d..fbc575f272c4 100644 --- a/cvat-ui/src/reducers/settings-reducer.ts +++ b/cvat-ui/src/reducers/settings-reducer.ts @@ -23,7 +23,6 @@ const defaultState: SettingsState = { outlineColor: '#000000', showBitmap: false, showProjections: false, - showGroundTruth: false, }, workspace: { autoSave: false, @@ -119,15 +118,6 @@ export default (state = defaultState, action: AnyAction): SettingsState => { }, }; } - case SettingsActionTypes.CHANGE_SHOW_GROUND_TRUTH: { - return { - ...state, - shapes: { - ...state.shapes, - showGroundTruth: action.payload.showGroundTruth, - }, - }; - } case SettingsActionTypes.CHANGE_SHAPES_OPACITY: { return { ...state, @@ -447,15 +437,6 @@ export default (state = defaultState, action: AnyAction): SettingsState => { }, }; } - case AnnotationActionTypes.CHANGE_WORKSPACE: { - return { - ...state, - shapes: { - ...state.shapes, - showGroundTruth: false, - }, - }; - } case AuthActionTypes.LOGOUT_SUCCESS: { return { ...defaultState }; } diff --git a/cvat-ui/src/utils/quality-color.ts b/cvat-ui/src/utils/quality-color.ts deleted file mode 100644 index 5373a1457c70..000000000000 --- a/cvat-ui/src/utils/quality-color.ts +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (C) 2023 CVAT.ai Corporation -// -// SPDX-License-Identifier: MIT - -enum QualityColors { - GREEN = '#237804', - YELLOW = '#ffec3d', - RED = '#ff4d4f', - GRAY = '#8c8c8c', -} - -const thresholds = { - low: 75, - middle: 82, - high: 91, -}; - -export function getQualityColor(value?: number): QualityColors { - if (!value) { - return QualityColors.GRAY; - } - - if (value >= thresholds.high) { - return QualityColors.GREEN; - } - if (value >= thresholds.middle) { - return QualityColors.YELLOW; - } - if (value >= thresholds.low) { - return QualityColors.RED; - } - - return QualityColors.GRAY; -} diff --git a/yarn.lock b/yarn.lock index 64aa589afd34..18636dc1c78d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1738,11 +1738,6 @@ "@types/tough-cookie" "*" parse5 "^7.0.0" -"@types/json-logic-js@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@types/json-logic-js/-/json-logic-js-2.0.2.tgz#f22ae63b1ff529db77368e78dab196730a2f1527" - integrity sha512-kM5tSI/HWDqlxpYTgISwaU93OdQ+fWzYliYOAn3QaVSCT1S6l0nm8jK2RZXRlD+Sx8s6RYhovZSxookkw6Wk7w== - "@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" @@ -3909,7 +3904,7 @@ custom-error-instance@2.1.1: three "^0.126.1" "cvat-canvas@link:./cvat-canvas": - version "2.16.6" + version "2.16.4" dependencies: "@types/fabric" "^4.5.7" "@types/polylabel" "^1.0.5" @@ -3922,7 +3917,7 @@ custom-error-instance@2.1.1: svg.select.js "3.0.1" "cvat-core@link:./cvat-core": - version "9.1.1" + version "9.0.1" dependencies: "@types/lodash" "^4.14.191" axios "^0.27.2" @@ -6879,7 +6874,7 @@ json-buffer@3.0.0: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== -json-logic-js@^2.0.1, json-logic-js@^2.0.2: +json-logic-js@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/json-logic-js/-/json-logic-js-2.0.2.tgz#b613e095f5e598cb78f7b9a2bbf638e74cf98158" integrity sha512-ZBtBdMJieqQcH7IX/LaBsr5pX+Y5JIW+EhejtM3Ffg2jdN9Iwf+Ht6TbHnvAZ/YtwyuhPaCBlnvzrwVeWdvGDQ== From 35d191876b3d855c62250f913438c31a66c9c1d9 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Sat, 27 May 2023 00:45:00 +0300 Subject: [PATCH 192/257] Fix remaining places with org_id query params --- tests/python/rest_api/test_projects.py | 27 ++++++-------------------- tests/python/rest_api/test_tasks.py | 3 --- 2 files changed, 6 insertions(+), 24 deletions(-) diff --git a/tests/python/rest_api/test_projects.py b/tests/python/rest_api/test_projects.py index a28e10fb137c..0e02ed059d3e 100644 --- a/tests/python/rest_api/test_projects.py +++ b/tests/python/rest_api/test_projects.py @@ -213,9 +213,7 @@ def test_org_worker_cannot_get_project_backup( and is_org_member(user["id"], project["organization"]) ) - self._test_cannot_get_project_backup( - user["username"], project["id"], org_id=project["organization"] - ) + self._test_cannot_get_project_backup(user["username"], project["id"]) # Org worker that in [project:owner, project:assignee] can get project backup. def test_org_worker_can_get_project_backup( @@ -231,9 +229,7 @@ def test_org_worker_can_get_project_backup( and is_org_member(user["id"], project["organization"]) ) - self._test_can_get_project_backup( - user["username"], project["id"], org_id=project["organization"] - ) + self._test_can_get_project_backup(user["username"], project["id"]) # Org supervisor that in [project:owner, project:assignee] can get project backup. def test_org_supervisor_can_get_project_backup( @@ -249,9 +245,7 @@ def test_org_supervisor_can_get_project_backup( and is_org_member(user["id"], project["organization"]) ) - self._test_can_get_project_backup( - user["username"], project["id"], org_id=project["organization"] - ) + self._test_can_get_project_backup(user["username"], project["id"]) # Org supervisor that not in [project:owner, project:assignee] cannot get project backup. def test_org_supervisor_cannot_get_project_backup( @@ -267,9 +261,7 @@ def test_org_supervisor_cannot_get_project_backup( and is_org_member(user["id"], project["organization"]) ) - self._test_cannot_get_project_backup( - user["username"], project["id"], org_id=project["organization"] - ) + self._test_cannot_get_project_backup(user["username"], project["id"]) # Org maintainer that not in [project:owner, project:assignee] can get project backup. def test_org_maintainer_can_get_project_backup( @@ -285,9 +277,7 @@ def test_org_maintainer_can_get_project_backup( and is_org_member(user["id"], project["organization"]) ) - self._test_can_get_project_backup( - user["username"], project["id"], org_id=project["organization"] - ) + self._test_can_get_project_backup(user["username"], project["id"]) # Org owner that not in [project:owner, project:assignee] can get project backup. def test_org_owner_can_get_project_backup( @@ -303,9 +293,7 @@ def test_org_owner_can_get_project_backup( and is_org_member(user["id"], project["organization"]) ) - self._test_can_get_project_backup( - user["username"], project["id"], org_id=project["organization"] - ) + self._test_can_get_project_backup(user["username"], project["id"]) @pytest.mark.usefixtures("restore_db_per_function") @@ -810,7 +798,6 @@ def test_non_project_staff_privileged_org_members_can_add_label( user["username"], f'/projects/{project["id"]}', {"labels": [new_label]}, - org_id=project["organization"], ) assert response.status_code == HTTPStatus.OK assert response.json()["labels"]["count"] == project["labels"]["count"] + 1 @@ -839,7 +826,6 @@ def test_non_project_staff_org_members_cannot_add_label( user["username"], f'/projects/{project["id"]}', {"labels": [new_label]}, - org_id=project["organization"], ) assert response.status_code == HTTPStatus.FORBIDDEN @@ -864,7 +850,6 @@ def test_project_staff_org_members_can_add_label( user["username"], f'/projects/{project["id"]}', {"labels": [new_label]}, - org_id=project["organization"], ) assert response.status_code == HTTPStatus.OK assert response.json()["labels"]["count"] == project["labels"]["count"] + 1 diff --git a/tests/python/rest_api/test_tasks.py b/tests/python/rest_api/test_tasks.py index 631c70b94064..f0e2b137f9a1 100644 --- a/tests/python/rest_api/test_tasks.py +++ b/tests/python/rest_api/test_tasks.py @@ -1334,7 +1334,6 @@ def test_non_task_staff_privileged_org_members_can_add_label( user["username"], f'/tasks/{task["id"]}', {"labels": [new_label]}, - org_id=task["organization"], ) assert response.status_code == HTTPStatus.OK assert response.json()["labels"]["count"] == task["labels"]["count"] + 1 @@ -1363,7 +1362,6 @@ def test_non_task_staff_org_members_cannot_add_label( user["username"], f'/tasks/{task["id"]}', {"labels": [new_label]}, - org_id=task["organization"], ) assert response.status_code == HTTPStatus.FORBIDDEN @@ -1388,7 +1386,6 @@ def test_task_staff_org_members_can_add_label( user["username"], f'/tasks/{task["id"]}', {"labels": [new_label]}, - org_id=task["organization"], ) assert response.status_code == HTTPStatus.OK assert response.json()["labels"]["count"] == task["labels"]["count"] + 1 From b6117bd7fa0c9df9a80f43fb6bad7b90e7e88684 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Sat, 27 May 2023 00:54:24 +0300 Subject: [PATCH 193/257] Fix merge --- cvat-core/src/common.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/cvat-core/src/common.ts b/cvat-core/src/common.ts index ee06f2d5fcae..aa884b1dd0e5 100644 --- a/cvat-core/src/common.ts +++ b/cvat-core/src/common.ts @@ -140,6 +140,7 @@ export function filterFieldsToSnakeCase(filter: Record, keysToSn searchParams.filter = JSON.stringify({ and: [...filtersGroup] }); } return searchParams; +} export function isResourceURL(url: string): boolean { return /\/([0-9]+)$/.test(url); From 76e2942c09b490d0e12f18594e9c7047f364ab9a Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Sat, 27 May 2023 01:43:02 +0300 Subject: [PATCH 194/257] Fix some permission problems --- cvat/apps/iam/permissions.py | 21 ++++++++---- cvat/apps/quality_control/models.py | 4 +-- tests/python/rest_api/test_quality_control.py | 12 ++----- tests/python/shared/assets/annotations.json | 32 +++++++++---------- tests/python/shared/assets/jobs.json | 2 ++ 5 files changed, 38 insertions(+), 33 deletions(-) diff --git a/cvat/apps/iam/permissions.py b/cvat/apps/iam/permissions.py index faf6fc88f8e4..9a7edf38e220 100644 --- a/cvat/apps/iam/permissions.py +++ b/cvat/apps/iam/permissions.py @@ -907,13 +907,16 @@ def create(cls, request, view, obj, iam_context): return permissions @classmethod - def create_scope_view(cls, request, task_id: int): + def create_scope_view(cls, request, task_id: int, iam_context=None): try: obj = Task.objects.get(id=task_id) except Task.DoesNotExist as ex: raise ValidationError(str(ex)) - return cls(**cls.unpack_context(request), obj=obj, scope=__class__.Scopes.VIEW) + if not iam_context and request: + iam_context = get_iam_context(request, obj) + + return cls(**iam_context, obj=obj, scope=__class__.Scopes.VIEW) def __init__(self, **kwargs): super().__init__(**kwargs) @@ -1204,7 +1207,9 @@ def create(cls, request, view, obj, iam_context): scope_params['task_id'] = task_id if task_id: - permissions.append(TaskPermission.create_scope_view(request, task_id)) + permissions.append(TaskPermission.create_scope_view( + request, task_id, iam_context=iam_context + )) self = cls.create_base_perm(request, view, scope, iam_context, obj, **scope_params) permissions.append(self) @@ -1641,8 +1646,10 @@ class Scopes(StrEnum): VIEW_STATUS = 'view:status' @classmethod - def create_scope_check_status(cls, request, job_owner_id: int): - return cls(**cls.unpack_context(request), scope='view:status', job_owner_id=job_owner_id) + def create_scope_check_status(cls, request, job_owner_id: int, iam_context=None): + if not iam_context and request: + iam_context = get_iam_context(request, None) + return cls(**iam_context, scope='view:status', job_owner_id=job_owner_id) @classmethod def create(cls, request, view, obj, iam_context): @@ -1669,7 +1676,9 @@ def create(cls, request, view, obj, iam_context): elif scope == Scopes.CREATE: task_id = request.data.get('task_id') if task_id is not None: - permissions.append(TaskPermission.create_scope_view(request, task_id)) + permissions.append(TaskPermission.create_scope_view( + request, task_id, iam_context=iam_context + )) permissions.append(cls.create_base_perm(request, view, scope, iam_context, obj)) else: diff --git a/cvat/apps/quality_control/models.py b/cvat/apps/quality_control/models.py index 6c3b93449c43..600b7135ff05 100644 --- a/cvat/apps/quality_control/models.py +++ b/cvat/apps/quality_control/models.py @@ -126,7 +126,7 @@ def clean(self): @property def organization_id(self): if task := self.get_task(): - return task.organization + return getattr(task.organization, 'id') return None @@ -221,5 +221,5 @@ def to_dict(self): @property def organization_id(self): if task := self.task: - return task.organization_id + return getattr(task.organization, 'id') return None diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py index 91be288b29e3..9c62aad3a9d4 100644 --- a/tests/python/rest_api/test_quality_control.py +++ b/tests/python/rest_api/test_quality_control.py @@ -282,9 +282,7 @@ def test_user_get_report_in_org_task( report = self.create_quality_report(admin_user, task["id"]) if allow: - self._test_get_report_200( - user["username"], report["id"], expected_data=report - ) + self._test_get_report_200(user["username"], report["id"], expected_data=report) else: self._test_get_report_403(user["username"], report["id"]) @@ -561,9 +559,7 @@ def test_user_list_conflicts_in_org_task( assert conflicts if allow: - self._test_list_conflicts_200( - user, report["id"], expected_data=conflicts - ) + self._test_list_conflicts_200(user, report["id"], expected_data=conflicts) else: self._test_list_conflicts_200(user, report["id"], expected_data=[]) @@ -706,9 +702,7 @@ def test_user_get_settings_in_org_task( settings = quality_settings[settings_id] if allow: - self._test_get_settings_200( - user["username"], settings_id, expected_data=settings - ) + self._test_get_settings_200(user["username"], settings_id, expected_data=settings) else: self._test_get_settings_403(user["username"], settings_id) diff --git a/tests/python/shared/assets/annotations.json b/tests/python/shared/assets/annotations.json index ab9f5b68736c..f716d6cd501f 100644 --- a/tests/python/shared/assets/annotations.json +++ b/tests/python/shared/assets/annotations.json @@ -4795,22 +4795,22 @@ { "attributes": [ { - "spec_id": 8, - "value": "black" + "spec_id": 7, + "value": "non-default" } ], "elements": [], "frame": 0, "group": 0, - "id": 55, - "label_id": 52, + "id": 54, + "label_id": 51, "occluded": false, "outside": false, "points": [ - 424.4396493594086, - 86.6660822656795, - 664.8078219824692, - 251.54672960215976 + 244.32906271072352, + 57.53054619015711, + 340.34389750505943, + 191.28914362778414 ], "rotation": 0.0, "source": "manual", @@ -4820,22 +4820,22 @@ { "attributes": [ { - "spec_id": 7, - "value": "non-default" + "spec_id": 8, + "value": "black" } ], "elements": [], "frame": 0, "group": 0, - "id": 54, - "label_id": 51, + "id": 55, + "label_id": 52, "occluded": false, "outside": false, "points": [ - 244.32906271072352, - 57.53054619015711, - 340.34389750505943, - 191.28914362778414 + 424.4396493594086, + 86.6660822656795, + 664.8078219824692, + 251.54672960215976 ], "rotation": 0.0, "source": "manual", diff --git a/tests/python/shared/assets/jobs.json b/tests/python/shared/assets/jobs.json index 777fc9de2a96..a60d1fac95d9 100644 --- a/tests/python/shared/assets/jobs.json +++ b/tests/python/shared/assets/jobs.json @@ -21,6 +21,7 @@ "url": "http://localhost:8080/api/labels?job_id=28" }, "mode": "annotation", + "organization": 2, "project_id": null, "stage": "acceptance", "start_frame": 0, @@ -50,6 +51,7 @@ "url": "http://localhost:8080/api/labels?job_id=27" }, "mode": "annotation", + "organization": 2, "project_id": null, "stage": "annotation", "start_frame": 0, From fa34b767325e7b92a6ab9e9385ef8ee39556b510 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Sat, 27 May 2023 01:45:34 +0300 Subject: [PATCH 195/257] Drop ui changes --- cvat-core/src/common.ts | 27 --------------------------- cvat-ui/src/components/cvat-app.tsx | 2 -- 2 files changed, 29 deletions(-) diff --git a/cvat-core/src/common.ts b/cvat-core/src/common.ts index aa884b1dd0e5..95077eb992b9 100644 --- a/cvat-core/src/common.ts +++ b/cvat-core/src/common.ts @@ -115,33 +115,6 @@ export function clamp(value: number, min: number, max: number): number { return Math.min(Math.max(value, min), max); } -export function camelToSnakeCase(str: string): string { - return str.replace(/[A-Z]/g, (letter: string) => `_${letter.toLowerCase()}`); -} - -export function filterFieldsToSnakeCase(filter: Record, keysToSnake: string[]): Record { - const searchParams:Record = {}; - for (const key of Object.keys(filter)) { - if (!keysToSnake.includes(key)) { - searchParams[key] = filter[key]; - } - } - const filtersGroup = []; - for (const key of keysToSnake) { - if (filter[key]) { - filtersGroup.push({ '==': [{ var: camelToSnakeCase(key) }, filter[key]] }); - } - } - - if (searchParams.filter) { - const parsed = JSON.parse(searchParams.filter); - searchParams.filter = JSON.stringify({ and: [parsed, ...filtersGroup] }); - } else { - searchParams.filter = JSON.stringify({ and: [...filtersGroup] }); - } - return searchParams; -} - export function isResourceURL(url: string): boolean { return /\/([0-9]+)$/.test(url); } diff --git a/cvat-ui/src/components/cvat-app.tsx b/cvat-ui/src/components/cvat-app.tsx index 8c1056febea5..0435afd7dd6d 100644 --- a/cvat-ui/src/components/cvat-app.tsx +++ b/cvat-ui/src/components/cvat-app.tsx @@ -73,8 +73,6 @@ import EmailConfirmationPage from './email-confirmation-pages/email-confirmed'; import EmailVerificationSentPage from './email-confirmation-pages/email-verification-sent'; import IncorrectEmailConfirmationPage from './email-confirmation-pages/incorrect-email-confirmation'; import CreateModelPage from './create-model-page/create-model-page'; -import CreateJobPage from './create-job-page/create-job-page'; -import TaskAnalyticsPage from './task-analytics-page/task-analytics-page'; import OrganizationWatcher from './watchers/organization-watcher'; interface CVATAppProps { From 50c695e01f96b49d4737fa748824032835007fde Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 29 May 2023 18:08:58 +0300 Subject: [PATCH 196/257] Fix access permissions --- cvat/apps/iam/permissions.py | 71 +++++++++++-------- cvat/apps/quality_control/views.py | 21 +++--- tests/python/rest_api/test_jobs.py | 3 + tests/python/rest_api/test_quality_control.py | 22 +++++- 4 files changed, 79 insertions(+), 38 deletions(-) diff --git a/cvat/apps/iam/permissions.py b/cvat/apps/iam/permissions.py index 9a7edf38e220..637058201c97 100644 --- a/cvat/apps/iam/permissions.py +++ b/cvat/apps/iam/permissions.py @@ -110,6 +110,8 @@ def create(cls, request, view, obj, iam_context) -> Sequence[OpenPolicyAgentPerm @classmethod def create_base_perm(cls, request, view, scope, iam_context, obj=None, **kwargs): + if not iam_context and request: + iam_context = get_iam_context(request, obj) return cls( scope=scope, obj=obj, @@ -117,9 +119,9 @@ def create_base_perm(cls, request, view, scope, iam_context, obj=None, **kwargs) @classmethod def create_scope_list(cls, request, iam_context=None): - if iam_context: - return cls(**iam_context, scope='list') - return cls(**get_iam_context(request, None), scope='list') + if not iam_context and request: + iam_context = get_iam_context(request, None) + return cls(**iam_context, scope='list') def __init__(self, **kwargs): self.obj = None @@ -907,16 +909,17 @@ def create(cls, request, view, obj, iam_context): return permissions @classmethod - def create_scope_view(cls, request, task_id: int, iam_context=None): - try: - obj = Task.objects.get(id=task_id) - except Task.DoesNotExist as ex: - raise ValidationError(str(ex)) + def create_scope_view(cls, request, task: Union[int, Task], iam_context=None): + if isinstance(task, int): + try: + task = Task.objects.get(id=task) + except Task.DoesNotExist as ex: + raise ValidationError(str(ex)) if not iam_context and request: - iam_context = get_iam_context(request, obj) + iam_context = get_iam_context(request, task) - return cls(**iam_context, obj=obj, scope=__class__.Scopes.VIEW) + return cls(**iam_context, obj=task, scope=__class__.Scopes.VIEW) def __init__(self, **kwargs): super().__init__(**kwargs) @@ -1207,8 +1210,14 @@ def create(cls, request, view, obj, iam_context): scope_params['task_id'] = task_id if task_id: + try: + task = Task.objects.get(id=task_id) + except Task.DoesNotExist as ex: + raise ValidationError(str(ex)) + + iam_context = get_iam_context(request, task) permissions.append(TaskPermission.create_scope_view( - request, task_id, iam_context=iam_context + request, task, iam_context=iam_context )) self = cls.create_base_perm(request, view, scope, iam_context, obj, **scope_params) @@ -1651,6 +1660,20 @@ def create_scope_check_status(cls, request, job_owner_id: int, iam_context=None) iam_context = get_iam_context(request, None) return cls(**iam_context, scope='view:status', job_owner_id=job_owner_id) + @classmethod + def create_scope_view(cls, request, report: Union[int, QualityReport], iam_context=None): + if isinstance(report, int): + try: + report = QualityReport.objects.get(id=report) + except QualityReport.DoesNotExist as ex: + raise ValidationError(str(ex)) + + # Access rights are the same as in the owning task + # This component doesn't define its own rules in this case + return TaskPermission.create_scope_view(request, + task=report.get_task(), iam_context=iam_context, + ) + @classmethod def create(cls, request, view, obj, iam_context): Scopes = __class__.Scopes @@ -1659,26 +1682,13 @@ def create(cls, request, view, obj, iam_context): if view.basename == 'quality_reports': for scope in cls.get_scopes(request, view, obj): if scope == Scopes.VIEW: - obj = cast(QualityReport, obj) - - # Access rights are the same as in the owning task - # This component doesn't define its own rules in this case - owning_perm = TaskPermission.create_base_perm( - request, view, iam_context=iam_context, - scope=TaskPermission.Scopes.VIEW, obj=obj.get_task() - ) - permissions.append(owning_perm) + permissions.append(cls.create_scope_view(request, obj, iam_context=iam_context)) elif scope == Scopes.LIST and isinstance(obj, Task): - permissions.append(TaskPermission.create_base_perm( - request, view, iam_context=iam_context, - scope=TaskPermission.Scopes.VIEW, obj=obj) - ) + permissions.append(TaskPermission.create_scope_view(request, task=obj)) elif scope == Scopes.CREATE: task_id = request.data.get('task_id') if task_id is not None: - permissions.append(TaskPermission.create_scope_view( - request, task_id, iam_context=iam_context - )) + permissions.append(TaskPermission.create_scope_view(request, task_id)) permissions.append(cls.create_base_perm(request, view, scope, iam_context, obj)) else: @@ -1744,7 +1754,12 @@ def create(cls, request, view, obj, iam_context): permissions = [] if view.basename == 'annotation_conflicts': for scope in cls.get_scopes(request, view, obj): - permissions.append(cls.create_base_perm(request, view, scope, iam_context, obj)) + if scope == cls.Scopes.LIST and isinstance(obj, QualityReport): + permissions.append(QualityReportPermission.create_scope_view( + request, obj, iam_context=iam_context, + )) + else: + permissions.append(cls.create_base_perm(request, view, scope, iam_context, obj)) return permissions diff --git a/cvat/apps/quality_control/views.py b/cvat/apps/quality_control/views.py index f3277a66e5c9..ee24724cf0b8 100644 --- a/cvat/apps/quality_control/views.py +++ b/cvat/apps/quality_control/views.py @@ -73,12 +73,16 @@ def get_queryset(self): queryset = super().get_queryset() if self.action == 'list': - if report_id := self.request.GET.get('report_id', None): + self.check_permissions(self.request) + + if report_id := self.request.query_params.get('report_id', None): try: report = QualityReport.objects.prefetch_related('parent').get(id=report_id) except QualityReport.DoesNotExist as ex: raise NotFound(f"Report {report_id} does not exist") from ex + self.check_object_permissions(self.request, report) + if report.target == QualityReportTarget.TASK: queryset = self.queryset.filter( Q(report=report) | Q(report__parent=report) @@ -87,10 +91,9 @@ def get_queryset(self): queryset = self.queryset.filter(report=report) else: assert False - - # In other cases permissions are checked already - perm = AnnotationConflictPermission.create_scope_list(self.request) - queryset = perm.filter(queryset) + else: + perm = AnnotationConflictPermission.create_scope_list(self.request) + queryset = perm.filter(queryset) return queryset @@ -154,7 +157,9 @@ def get_queryset(self): queryset = super().get_queryset() if self.action == 'list': - if task_id := self.request.GET.get('task_id', None): + self.check_permissions(self.request) + + if task_id := self.request.query_params.get('task_id', None): # NOTE: This filter is too complex to be implemented by other means try: task = Task.objects.get(id=task_id) @@ -162,15 +167,15 @@ def get_queryset(self): raise NotFound(f"Task {task_id} does not exist") from ex self.check_object_permissions(self.request, task) + queryset = queryset.filter( Q(job__segment__task__id=task_id) | Q(task__id=task_id) ).distinct() else: - # In other cases permissions are checked already perm = QualityReportPermission.create_scope_list(self.request) queryset = perm.filter(queryset) - if target := self.request.GET.get('target', None): + if target := self.request.query_params.get('target', None): if target == QualityReportTarget.JOB: queryset = queryset.filter(job__isnull=False) elif target == QualityReportTarget.TASK: diff --git a/tests/python/rest_api/test_jobs.py b/tests/python/rest_api/test_jobs.py index 543d12f74a35..d9a997b717ad 100644 --- a/tests/python/rest_api/test_jobs.py +++ b/tests/python/rest_api/test_jobs.py @@ -224,6 +224,9 @@ def test_create_gt_job_in_org_task( self, tasks, jobs, users, is_org_member, is_task_staff, org_role, is_staff, allow ): for user in users: + if user["is_superuser"]: + continue + task = next( ( t diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py index 9c62aad3a9d4..98cc9d7faae3 100644 --- a/tests/python/rest_api/test_quality_control.py +++ b/tests/python/rest_api/test_quality_control.py @@ -155,6 +155,9 @@ def test_user_list_reports_in_org_task( admin_user, ): for user in users: + if user["is_superuser"]: + continue + task = next( ( t @@ -260,6 +263,9 @@ def test_user_get_report_in_org_task( admin_user, ): for user in users: + if user["is_superuser"]: + continue + task = next( ( t @@ -377,6 +383,9 @@ def test_user_get_report_data_in_org_task( admin_user, ): for user in users: + if user["is_superuser"]: + continue + task = next( ( t @@ -505,7 +514,7 @@ def test_user_list_conflicts_in_sandbox_task( if allow: self._test_list_conflicts_200(user, report["id"], expected_data=conflicts) else: - self._test_list_conflicts_200(user, report["id"], expected_data=[]) + self._test_list_conflicts_403(user, report["id"]) @pytest.mark.usefixtures("restore_db_per_function") @pytest.mark.parametrize( @@ -534,6 +543,9 @@ def test_user_list_conflicts_in_org_task( admin_user, ): for user in users: + if user["is_superuser"]: + continue + task = next( ( t @@ -561,7 +573,7 @@ def test_user_list_conflicts_in_org_task( if allow: self._test_list_conflicts_200(user, report["id"], expected_data=conflicts) else: - self._test_list_conflicts_200(user, report["id"], expected_data=[]) + self._test_list_conflicts_403(user, report["id"]) class TestSimpleQualityConflictsFilters(CollectionSimpleFilterTestBase): @@ -683,6 +695,9 @@ def test_user_get_settings_in_org_task( quality_settings, ): for user in users: + if user["is_superuser"]: + continue + task = next( ( t @@ -809,6 +824,9 @@ def test_user_patch_settings_in_org_task( quality_settings, ): for user in users: + if user["is_superuser"]: + continue + task = next( ( t From 6766e8a4bcf39d9d9973707cdfce23741c2b4399 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 29 May 2023 18:09:44 +0300 Subject: [PATCH 197/257] Fix an error arising in rq worker debugging --- cvat/rqworker.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cvat/rqworker.py b/cvat/rqworker.py index b21a8c8f7bd0..2d68a419f95b 100644 --- a/cvat/rqworker.py +++ b/cvat/rqworker.py @@ -34,6 +34,14 @@ def main_work_horse(self, *args, **kwargs): def execute_job(self, *args, **kwargs): """Execute job in same thread/process, do not fork()""" + + # Resolves problems with + # django.db.utils.OperationalError: server closed the connection unexpectedly + # errors during debugging + # https://stackoverflow.com/questions/8242837/django-multiprocessing-and-database-connections/10684672#10684672 + from django import db + db.connections.close_all() + return self.perform_job(*args, **kwargs) From 484b75af21b6d58ef307684f266051ca369f46c5 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 29 May 2023 18:10:16 +0300 Subject: [PATCH 198/257] Move test setting declaration --- cvat/settings/testing_rest.py | 5 +++++ tests/docker-compose.quality_settings.yml | 7 ------- tests/python/shared/fixtures/init.py | 1 - 3 files changed, 5 insertions(+), 8 deletions(-) delete mode 100644 tests/docker-compose.quality_settings.yml diff --git a/cvat/settings/testing_rest.py b/cvat/settings/testing_rest.py index 36bf80dc0a2b..6f7f7ec1bee4 100644 --- a/cvat/settings/testing_rest.py +++ b/cvat/settings/testing_rest.py @@ -10,3 +10,8 @@ PASSWORD_HASHERS = [ "django.contrib.auth.hashers.MD5PasswordHasher", ] + +# Avoid quality updates during test runs. +# Note that DB initialization triggers server signals, +# so quality report updates are scheduled for applicable jobs. +QUALITY_CHECK_JOB_DELAY = 10000 diff --git a/tests/docker-compose.quality_settings.yml b/tests/docker-compose.quality_settings.yml deleted file mode 100644 index 259bcda3ea1e..000000000000 --- a/tests/docker-compose.quality_settings.yml +++ /dev/null @@ -1,7 +0,0 @@ -services: - cvat_server: - environment: - # Avoid quality updates during test runs. - # Note that DB initialization triggers server signals, - # so quality report updates are scheduled for applicable jobs. - CVAT_QUALITY_CHECK_JOB_DELAY: 10000 diff --git a/tests/python/shared/fixtures/init.py b/tests/python/shared/fixtures/init.py index 8c5b8844a672..c2fd87671521 100644 --- a/tests/python/shared/fixtures/init.py +++ b/tests/python/shared/fixtures/init.py @@ -29,7 +29,6 @@ "tests/docker-compose.file_share.yml", "tests/docker-compose.minio.yml", "tests/docker-compose.test_servers.yml", - "tests/docker-compose.quality_settings.yml", ] + CONTAINER_NAME_FILES From 32f80b11d135814a80eb81c3019bac9d44396441 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 29 May 2023 18:08:58 +0300 Subject: [PATCH 199/257] Fix access permissions --- cvat/apps/iam/permissions.py | 71 +++++++++++-------- cvat/apps/quality_control/views.py | 21 +++--- tests/python/rest_api/test_jobs.py | 3 + tests/python/rest_api/test_quality_control.py | 22 +++++- 4 files changed, 79 insertions(+), 38 deletions(-) diff --git a/cvat/apps/iam/permissions.py b/cvat/apps/iam/permissions.py index 9a7edf38e220..637058201c97 100644 --- a/cvat/apps/iam/permissions.py +++ b/cvat/apps/iam/permissions.py @@ -110,6 +110,8 @@ def create(cls, request, view, obj, iam_context) -> Sequence[OpenPolicyAgentPerm @classmethod def create_base_perm(cls, request, view, scope, iam_context, obj=None, **kwargs): + if not iam_context and request: + iam_context = get_iam_context(request, obj) return cls( scope=scope, obj=obj, @@ -117,9 +119,9 @@ def create_base_perm(cls, request, view, scope, iam_context, obj=None, **kwargs) @classmethod def create_scope_list(cls, request, iam_context=None): - if iam_context: - return cls(**iam_context, scope='list') - return cls(**get_iam_context(request, None), scope='list') + if not iam_context and request: + iam_context = get_iam_context(request, None) + return cls(**iam_context, scope='list') def __init__(self, **kwargs): self.obj = None @@ -907,16 +909,17 @@ def create(cls, request, view, obj, iam_context): return permissions @classmethod - def create_scope_view(cls, request, task_id: int, iam_context=None): - try: - obj = Task.objects.get(id=task_id) - except Task.DoesNotExist as ex: - raise ValidationError(str(ex)) + def create_scope_view(cls, request, task: Union[int, Task], iam_context=None): + if isinstance(task, int): + try: + task = Task.objects.get(id=task) + except Task.DoesNotExist as ex: + raise ValidationError(str(ex)) if not iam_context and request: - iam_context = get_iam_context(request, obj) + iam_context = get_iam_context(request, task) - return cls(**iam_context, obj=obj, scope=__class__.Scopes.VIEW) + return cls(**iam_context, obj=task, scope=__class__.Scopes.VIEW) def __init__(self, **kwargs): super().__init__(**kwargs) @@ -1207,8 +1210,14 @@ def create(cls, request, view, obj, iam_context): scope_params['task_id'] = task_id if task_id: + try: + task = Task.objects.get(id=task_id) + except Task.DoesNotExist as ex: + raise ValidationError(str(ex)) + + iam_context = get_iam_context(request, task) permissions.append(TaskPermission.create_scope_view( - request, task_id, iam_context=iam_context + request, task, iam_context=iam_context )) self = cls.create_base_perm(request, view, scope, iam_context, obj, **scope_params) @@ -1651,6 +1660,20 @@ def create_scope_check_status(cls, request, job_owner_id: int, iam_context=None) iam_context = get_iam_context(request, None) return cls(**iam_context, scope='view:status', job_owner_id=job_owner_id) + @classmethod + def create_scope_view(cls, request, report: Union[int, QualityReport], iam_context=None): + if isinstance(report, int): + try: + report = QualityReport.objects.get(id=report) + except QualityReport.DoesNotExist as ex: + raise ValidationError(str(ex)) + + # Access rights are the same as in the owning task + # This component doesn't define its own rules in this case + return TaskPermission.create_scope_view(request, + task=report.get_task(), iam_context=iam_context, + ) + @classmethod def create(cls, request, view, obj, iam_context): Scopes = __class__.Scopes @@ -1659,26 +1682,13 @@ def create(cls, request, view, obj, iam_context): if view.basename == 'quality_reports': for scope in cls.get_scopes(request, view, obj): if scope == Scopes.VIEW: - obj = cast(QualityReport, obj) - - # Access rights are the same as in the owning task - # This component doesn't define its own rules in this case - owning_perm = TaskPermission.create_base_perm( - request, view, iam_context=iam_context, - scope=TaskPermission.Scopes.VIEW, obj=obj.get_task() - ) - permissions.append(owning_perm) + permissions.append(cls.create_scope_view(request, obj, iam_context=iam_context)) elif scope == Scopes.LIST and isinstance(obj, Task): - permissions.append(TaskPermission.create_base_perm( - request, view, iam_context=iam_context, - scope=TaskPermission.Scopes.VIEW, obj=obj) - ) + permissions.append(TaskPermission.create_scope_view(request, task=obj)) elif scope == Scopes.CREATE: task_id = request.data.get('task_id') if task_id is not None: - permissions.append(TaskPermission.create_scope_view( - request, task_id, iam_context=iam_context - )) + permissions.append(TaskPermission.create_scope_view(request, task_id)) permissions.append(cls.create_base_perm(request, view, scope, iam_context, obj)) else: @@ -1744,7 +1754,12 @@ def create(cls, request, view, obj, iam_context): permissions = [] if view.basename == 'annotation_conflicts': for scope in cls.get_scopes(request, view, obj): - permissions.append(cls.create_base_perm(request, view, scope, iam_context, obj)) + if scope == cls.Scopes.LIST and isinstance(obj, QualityReport): + permissions.append(QualityReportPermission.create_scope_view( + request, obj, iam_context=iam_context, + )) + else: + permissions.append(cls.create_base_perm(request, view, scope, iam_context, obj)) return permissions diff --git a/cvat/apps/quality_control/views.py b/cvat/apps/quality_control/views.py index f3277a66e5c9..ee24724cf0b8 100644 --- a/cvat/apps/quality_control/views.py +++ b/cvat/apps/quality_control/views.py @@ -73,12 +73,16 @@ def get_queryset(self): queryset = super().get_queryset() if self.action == 'list': - if report_id := self.request.GET.get('report_id', None): + self.check_permissions(self.request) + + if report_id := self.request.query_params.get('report_id', None): try: report = QualityReport.objects.prefetch_related('parent').get(id=report_id) except QualityReport.DoesNotExist as ex: raise NotFound(f"Report {report_id} does not exist") from ex + self.check_object_permissions(self.request, report) + if report.target == QualityReportTarget.TASK: queryset = self.queryset.filter( Q(report=report) | Q(report__parent=report) @@ -87,10 +91,9 @@ def get_queryset(self): queryset = self.queryset.filter(report=report) else: assert False - - # In other cases permissions are checked already - perm = AnnotationConflictPermission.create_scope_list(self.request) - queryset = perm.filter(queryset) + else: + perm = AnnotationConflictPermission.create_scope_list(self.request) + queryset = perm.filter(queryset) return queryset @@ -154,7 +157,9 @@ def get_queryset(self): queryset = super().get_queryset() if self.action == 'list': - if task_id := self.request.GET.get('task_id', None): + self.check_permissions(self.request) + + if task_id := self.request.query_params.get('task_id', None): # NOTE: This filter is too complex to be implemented by other means try: task = Task.objects.get(id=task_id) @@ -162,15 +167,15 @@ def get_queryset(self): raise NotFound(f"Task {task_id} does not exist") from ex self.check_object_permissions(self.request, task) + queryset = queryset.filter( Q(job__segment__task__id=task_id) | Q(task__id=task_id) ).distinct() else: - # In other cases permissions are checked already perm = QualityReportPermission.create_scope_list(self.request) queryset = perm.filter(queryset) - if target := self.request.GET.get('target', None): + if target := self.request.query_params.get('target', None): if target == QualityReportTarget.JOB: queryset = queryset.filter(job__isnull=False) elif target == QualityReportTarget.TASK: diff --git a/tests/python/rest_api/test_jobs.py b/tests/python/rest_api/test_jobs.py index 543d12f74a35..d9a997b717ad 100644 --- a/tests/python/rest_api/test_jobs.py +++ b/tests/python/rest_api/test_jobs.py @@ -224,6 +224,9 @@ def test_create_gt_job_in_org_task( self, tasks, jobs, users, is_org_member, is_task_staff, org_role, is_staff, allow ): for user in users: + if user["is_superuser"]: + continue + task = next( ( t diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py index 9c62aad3a9d4..98cc9d7faae3 100644 --- a/tests/python/rest_api/test_quality_control.py +++ b/tests/python/rest_api/test_quality_control.py @@ -155,6 +155,9 @@ def test_user_list_reports_in_org_task( admin_user, ): for user in users: + if user["is_superuser"]: + continue + task = next( ( t @@ -260,6 +263,9 @@ def test_user_get_report_in_org_task( admin_user, ): for user in users: + if user["is_superuser"]: + continue + task = next( ( t @@ -377,6 +383,9 @@ def test_user_get_report_data_in_org_task( admin_user, ): for user in users: + if user["is_superuser"]: + continue + task = next( ( t @@ -505,7 +514,7 @@ def test_user_list_conflicts_in_sandbox_task( if allow: self._test_list_conflicts_200(user, report["id"], expected_data=conflicts) else: - self._test_list_conflicts_200(user, report["id"], expected_data=[]) + self._test_list_conflicts_403(user, report["id"]) @pytest.mark.usefixtures("restore_db_per_function") @pytest.mark.parametrize( @@ -534,6 +543,9 @@ def test_user_list_conflicts_in_org_task( admin_user, ): for user in users: + if user["is_superuser"]: + continue + task = next( ( t @@ -561,7 +573,7 @@ def test_user_list_conflicts_in_org_task( if allow: self._test_list_conflicts_200(user, report["id"], expected_data=conflicts) else: - self._test_list_conflicts_200(user, report["id"], expected_data=[]) + self._test_list_conflicts_403(user, report["id"]) class TestSimpleQualityConflictsFilters(CollectionSimpleFilterTestBase): @@ -683,6 +695,9 @@ def test_user_get_settings_in_org_task( quality_settings, ): for user in users: + if user["is_superuser"]: + continue + task = next( ( t @@ -809,6 +824,9 @@ def test_user_patch_settings_in_org_task( quality_settings, ): for user in users: + if user["is_superuser"]: + continue + task = next( ( t From 7a0bbff593161de75ca4a5742a00a01da34ad30e Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 29 May 2023 18:09:44 +0300 Subject: [PATCH 200/257] Fix an error arising in rq worker debugging --- cvat/rqworker.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cvat/rqworker.py b/cvat/rqworker.py index b21a8c8f7bd0..2d68a419f95b 100644 --- a/cvat/rqworker.py +++ b/cvat/rqworker.py @@ -34,6 +34,14 @@ def main_work_horse(self, *args, **kwargs): def execute_job(self, *args, **kwargs): """Execute job in same thread/process, do not fork()""" + + # Resolves problems with + # django.db.utils.OperationalError: server closed the connection unexpectedly + # errors during debugging + # https://stackoverflow.com/questions/8242837/django-multiprocessing-and-database-connections/10684672#10684672 + from django import db + db.connections.close_all() + return self.perform_job(*args, **kwargs) From 9294e9bb83c57c4b73a26125ff3894f991c219be Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 29 May 2023 18:10:16 +0300 Subject: [PATCH 201/257] Move test setting declaration --- cvat/settings/testing_rest.py | 5 +++++ tests/docker-compose.quality_settings.yml | 7 ------- tests/python/shared/fixtures/init.py | 1 - 3 files changed, 5 insertions(+), 8 deletions(-) delete mode 100644 tests/docker-compose.quality_settings.yml diff --git a/cvat/settings/testing_rest.py b/cvat/settings/testing_rest.py index 36bf80dc0a2b..6f7f7ec1bee4 100644 --- a/cvat/settings/testing_rest.py +++ b/cvat/settings/testing_rest.py @@ -10,3 +10,8 @@ PASSWORD_HASHERS = [ "django.contrib.auth.hashers.MD5PasswordHasher", ] + +# Avoid quality updates during test runs. +# Note that DB initialization triggers server signals, +# so quality report updates are scheduled for applicable jobs. +QUALITY_CHECK_JOB_DELAY = 10000 diff --git a/tests/docker-compose.quality_settings.yml b/tests/docker-compose.quality_settings.yml deleted file mode 100644 index 259bcda3ea1e..000000000000 --- a/tests/docker-compose.quality_settings.yml +++ /dev/null @@ -1,7 +0,0 @@ -services: - cvat_server: - environment: - # Avoid quality updates during test runs. - # Note that DB initialization triggers server signals, - # so quality report updates are scheduled for applicable jobs. - CVAT_QUALITY_CHECK_JOB_DELAY: 10000 diff --git a/tests/python/shared/fixtures/init.py b/tests/python/shared/fixtures/init.py index 8c5b8844a672..c2fd87671521 100644 --- a/tests/python/shared/fixtures/init.py +++ b/tests/python/shared/fixtures/init.py @@ -29,7 +29,6 @@ "tests/docker-compose.file_share.yml", "tests/docker-compose.minio.yml", "tests/docker-compose.test_servers.yml", - "tests/docker-compose.quality_settings.yml", ] + CONTAINER_NAME_FILES From 6ccbff78fcd0c231c251624ea726ce805bcf5f0f Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 30 May 2023 13:25:25 +0300 Subject: [PATCH 202/257] Add settings list endpoint --- cvat/apps/iam/permissions.py | 6 +- cvat/apps/quality_control/views.py | 13 ++- cvat/schema.yml | 68 ++++++++++++- tests/python/rest_api/test_quality_control.py | 99 +++++++++++++++++++ 4 files changed, 181 insertions(+), 5 deletions(-) diff --git a/cvat/apps/iam/permissions.py b/cvat/apps/iam/permissions.py index 637058201c97..2632c558c4f9 100644 --- a/cvat/apps/iam/permissions.py +++ b/cvat/apps/iam/permissions.py @@ -1782,6 +1782,7 @@ class QualitySettingPermission(OpenPolicyAgentPermission): obj: Optional[QualitySettings] class Scopes(StrEnum): + LIST = 'list' VIEW = 'view' UPDATE = 'update' @@ -1792,10 +1793,10 @@ def create(cls, request, view, obj, iam_context): permissions = [] if view.basename == 'quality_settings': for scope in cls.get_scopes(request, view, obj): - if scope in [Scopes.VIEW, Scopes.UPDATE]: + if scope in [Scopes.LIST, Scopes.VIEW, Scopes.UPDATE]: obj = cast(QualitySettings, obj) - if scope == Scopes.VIEW: + if scope in [Scopes.LIST, Scopes.VIEW]: task_scope = TaskPermission.Scopes.VIEW elif scope == Scopes.UPDATE: task_scope = TaskPermission.Scopes.UPDATE_DESC @@ -1821,6 +1822,7 @@ def __init__(self, **kwargs): def get_scopes(request, view, obj): Scopes = __class__.Scopes return [{ + 'list': Scopes.LISt, 'retrieve': Scopes.VIEW, 'partial_update': Scopes.UPDATE, }.get(view.action, None)] diff --git a/cvat/apps/quality_control/views.py b/cvat/apps/quality_control/views.py index ee24724cf0b8..408c3ab6fb85 100644 --- a/cvat/apps/quality_control/views.py +++ b/cvat/apps/quality_control/views.py @@ -290,14 +290,23 @@ def data(self, request, pk): @extend_schema(tags=["quality"]) @extend_schema_view( + list=extend_schema( + summary='Method returns a paginated list of quality settings', + parameters=[ + # TODO: add support for this + # *ORGANIZATION_OPEN_API_PARAMETERS, + ], + responses={ + '200': QualityReportSerializer(many=True), + }), retrieve=extend_schema( - summary='Method returns details of a quality settings', + summary='Method returns details of quality settings', responses={ '200': QualitySettingsSerializer, }), ) class QualitySettingsViewSet(viewsets.GenericViewSet, - mixins.RetrieveModelMixin, PartialUpdateModelMixin + mixins.ListModelMixin, mixins.RetrieveModelMixin, PartialUpdateModelMixin ): queryset = QualitySettings.objects.select_related('task').all() diff --git a/cvat/schema.yml b/cvat/schema.yml index c08721226bc0..b6f60eb73216 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -3614,10 +3614,76 @@ paths: type: object additionalProperties: {} description: '' + /api/quality/settings: + get: + operationId: quality_list_settings + summary: Method returns a paginated list of quality settings + parameters: + - name: X-Organization + in: header + description: Organization unique slug + schema: + type: string + - name: filter + required: false + in: query + description: 'A filter term. Available filter_fields: []' + schema: + type: string + - name: org + in: query + description: Organization unique slug + schema: + type: string + - name: org_id + in: query + description: Organization identifier + schema: + type: integer + - name: page + required: false + in: query + description: A page number within the paginated result set. + schema: + type: integer + - name: page_size + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: search + required: false + in: query + description: 'A search term. Available search_fields: []' + schema: + type: string + - name: sort + required: false + in: query + description: 'Which field to use when ordering the results. Available ordering_fields: + [''id'']' + schema: + type: string + tags: + - quality + security: + - sessionAuth: [] + csrfAuth: [] + tokenAuth: [] + - signatureAuth: [] + - basicAuth: [] + responses: + '200': + content: + application/vnd.cvat+json: + schema: + $ref: '#/components/schemas/PaginatedQualityReportList' + description: '' /api/quality/settings/{id}: get: operationId: quality_retrieve_settings - summary: Method returns details of a quality settings + summary: Method returns details of quality settings parameters: - in: path name: id diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py index 98cc9d7faae3..7e8eb4f6c166 100644 --- a/tests/python/rest_api/test_quality_control.py +++ b/tests/python/rest_api/test_quality_control.py @@ -620,6 +620,105 @@ def test_can_use_simple_filter_for_object_list(self, field): return super().test_can_use_simple_filter_for_object_list(field) + +@pytest.mark.usefixtures("restore_db_per_class") +class TestListSettings(_PermissionTestBase): + def _test_list_settings_200( + self, user: str, obj_id: int, *, expected_data: Optional[Dict[str, Any]] = None, **kwargs + ): + with make_api_client(user) as api_client: + (_, response) = api_client.quality_api.retrieve_settings(obj_id, **kwargs) + assert response.status == HTTPStatus.OK + + if expected_data is not None: + assert DeepDiff(expected_data, json.loads(response.data), ignore_order=True) == {} + + return response + + def _test_list_settings_403(self, user: str, obj_id: int, **kwargs): + with make_api_client(user) as api_client: + (_, response) = api_client.quality_api.retrieve_settings( + obj_id, **kwargs, _parse_response=False, _check_status=False + ) + assert response.status == HTTPStatus.FORBIDDEN + + return response + + @pytest.mark.parametrize("is_staff, allow", [(True, True), (False, False)]) + def test_user_list_settings_in_sandbox( + self, quality_settings, tasks, users, is_task_staff, is_staff, allow + ): + task = next( + t + for t in tasks + if t["organization"] is None and not users[t["owner"]["id"]]["is_superuser"] + ) + + if is_staff: + user = task["owner"]["username"] + else: + user = next(u for u in users if not is_task_staff(u["id"], task["id"]))["username"] + + settings_id = task["quality_settings"] + settings = quality_settings[settings_id] + + if allow: + self._test_list_settings_200(user, settings_id, expected_data=settings) + else: + self._test_list_settings_403(user, settings_id) + + @pytest.mark.parametrize( + "org_role, is_staff, allow", + [ + ("owner", True, True), + ("owner", False, True), + ("maintainer", True, True), + ("maintainer", False, True), + ("supervisor", True, True), + ("supervisor", False, False), + ("worker", True, True), + ("worker", False, False), + ], + ) + def test_user_get_settings_in_org_task( + self, + tasks, + users, + is_org_member, + is_task_staff, + org_role, + is_staff, + allow, + quality_settings, + ): + for user in users: + if user["is_superuser"]: + continue + + task = next( + ( + t + for t in tasks + if t["organization"] is not None + and is_task_staff(user["id"], t["id"]) == is_staff + and is_org_member(user["id"], t["organization"], role=org_role) + ), + None, + ) + if task is not None: + break + + assert task + + settings_id = task["quality_settings"] + settings = quality_settings[settings_id] + + if allow: + self._test_list_settings_200(user["username"], settings_id, expected_data=settings) + else: + self._test_list_settings_403(user["username"], settings_id) + + @pytest.mark.usefixtures("restore_db_per_class") class TestGetSettings(_PermissionTestBase): def _test_get_settings_200( From ded60d94e3afc3aae7152ae12dfa142c2fe77f69 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 30 May 2023 13:41:59 +0300 Subject: [PATCH 203/257] Update schema --- cvat/schema.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cvat/schema.yml b/cvat/schema.yml index c08721226bc0..6f8aa180faee 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -3694,6 +3694,7 @@ paths: - br - bs - ca + - ckb - cs - cy - da @@ -3746,6 +3747,7 @@ paths: - ml - mn - mr + - ms - my - nb - ne @@ -5821,6 +5823,7 @@ components: chunk_size: type: integer readOnly: true + nullable: true size: type: integer readOnly: true @@ -6977,6 +6980,7 @@ components: type: string format: date-time readOnly: true + nullable: true role: allOf: - $ref: '#/components/schemas/RoleEnum' @@ -8764,6 +8768,7 @@ components: status_code: type: integer readOnly: true + nullable: true redelivery: type: boolean readOnly: true From fc7fa37499c74740e5aa83bd467074d0818758c4 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 30 May 2023 14:09:13 +0300 Subject: [PATCH 204/257] Fix CI --- tests/python/rest_api/test_quality_control.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py index 7e8eb4f6c166..88402082d122 100644 --- a/tests/python/rest_api/test_quality_control.py +++ b/tests/python/rest_api/test_quality_control.py @@ -827,7 +827,7 @@ def _test_patch_settings_200( self, user: str, obj_id: int, - data: dict[str, Any], + data: Dict[str, Any], *, expected_data: Optional[Dict[str, Any]] = None, **kwargs, @@ -843,7 +843,7 @@ def _test_patch_settings_200( return response - def _test_patch_settings_403(self, user: str, obj_id: int, data: dict[str, Any], **kwargs): + def _test_patch_settings_403(self, user: str, obj_id: int, data: Dict[str, Any], **kwargs): with make_api_client(user) as api_client: (_, response) = api_client.quality_api.partial_update_settings( obj_id, @@ -856,7 +856,7 @@ def _test_patch_settings_403(self, user: str, obj_id: int, data: dict[str, Any], return response - def _get_request_data(self, data: dict[str, Any]) -> tuple[dict[str, Any], dict[str, Any]]: + def _get_request_data(self, data: Dict[str, Any]) -> tuple[Dict[str, Any], Dict[str, Any]]: patched_data = deepcopy(data) for field, value in data.items(): From 731c4f0c2c12b8d7b3e75c6e46c8fa1f43affca0 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 30 May 2023 15:18:41 +0300 Subject: [PATCH 205/257] Add quality settings list endpoint --- cvat/apps/engine/serializers.py | 4 - cvat/apps/iam/permissions.py | 11 +- cvat/apps/iam/rules/quality_settings.rego | 49 ++ cvat/apps/quality_control/serializers.py | 4 +- cvat/apps/quality_control/views.py | 18 +- cvat/schema.yml | 39 +- .../rest_api/test_check_objects_integrity.py | 16 +- tests/python/rest_api/test_quality_control.py | 48 +- .../shared/assets/quality_settings.json | 549 +++++++++--------- tests/python/shared/assets/tasks.json | 17 - tests/python/shared/fixtures/data.py | 2 +- tests/python/shared/utils/dump_objects.py | 11 +- 12 files changed, 414 insertions(+), 354 deletions(-) diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index f195cd8f89be..8fef0cb496a9 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -1021,9 +1021,6 @@ class TaskReadSerializer(serializers.ModelSerializer): jobs = JobsSummarySerializer(url_filter_key='task_id', source='segment_set') labels = LabelsSummarySerializer(source='*') - # The field may be missing because the app can be disabled - quality_settings = serializers.ReadOnlyField(source='quality_settings.id', required=False) - class Meta: model = models.Task fields = ('url', 'id', 'name', 'project_id', 'mode', 'owner', 'assignee', @@ -1031,7 +1028,6 @@ class Meta: 'status', 'data_chunk_size', 'data_compressed_chunk_type', 'data_original_chunk_type', 'size', 'image_quality', 'data', 'dimension', 'subset', 'organization', 'target_storage', 'source_storage', 'jobs', 'labels', - 'quality_settings' ) read_only_fields = fields extra_kwargs = { diff --git a/cvat/apps/iam/permissions.py b/cvat/apps/iam/permissions.py index 2632c558c4f9..94883dfba265 100644 --- a/cvat/apps/iam/permissions.py +++ b/cvat/apps/iam/permissions.py @@ -1793,10 +1793,10 @@ def create(cls, request, view, obj, iam_context): permissions = [] if view.basename == 'quality_settings': for scope in cls.get_scopes(request, view, obj): - if scope in [Scopes.LIST, Scopes.VIEW, Scopes.UPDATE]: + if scope in [Scopes.VIEW, Scopes.UPDATE]: obj = cast(QualitySettings, obj) - if scope in [Scopes.LIST, Scopes.VIEW]: + if scope == Scopes.VIEW: task_scope = TaskPermission.Scopes.VIEW elif scope == Scopes.UPDATE: task_scope = TaskPermission.Scopes.UPDATE_DESC @@ -1806,9 +1806,8 @@ def create(cls, request, view, obj, iam_context): # Access rights are the same as in the owning task # This component doesn't define its own rules in this case permissions.append(TaskPermission.create_base_perm( - request, view, - iam_context=iam_context, scope=task_scope, obj=obj.task) - ) + request, view, iam_context=iam_context, scope=task_scope, obj=obj.task + )) else: permissions.append(cls.create_base_perm(request, view, scope, iam_context, obj)) @@ -1822,7 +1821,7 @@ def __init__(self, **kwargs): def get_scopes(request, view, obj): Scopes = __class__.Scopes return [{ - 'list': Scopes.LISt, + 'list': Scopes.LIST, 'retrieve': Scopes.VIEW, 'partial_update': Scopes.UPDATE, }.get(view.action, None)] diff --git a/cvat/apps/iam/rules/quality_settings.rego b/cvat/apps/iam/rules/quality_settings.rego index ca998e224f7e..31ad143211d4 100644 --- a/cvat/apps/iam/rules/quality_settings.rego +++ b/cvat/apps/iam/rules/quality_settings.rego @@ -48,3 +48,52 @@ allow { utils.is_admin } +allow { + input.scope == utils.LIST + utils.is_sandbox +} + +allow { + input.scope == utils.LIST + organizations.is_member +} + +filter = [] { # Django Q object to filter list of entries + utils.is_admin + utils.is_sandbox +} else = qobject { + utils.is_admin + utils.is_organization + org := input.auth.organization + qobject := [ + {"task__organization": org.id}, + {"task__project__organization": org.id}, "|", + ] +} else = qobject { + utils.is_sandbox + user := input.auth.user + qobject := [ + {"task__owner_id": user.id}, + {"task__assignee_id": user.id}, "|", + {"task__project__owner_id": user.id}, "|", + {"task__project__assignee_id": user.id}, "|", + ] +} else = qobject { + utils.is_organization + utils.has_perm(utils.USER) + organizations.has_perm(organizations.MAINTAINER) + org := input.auth.organization + qobject := [ + {"task__organization": org.id}, + {"task__project__organization": org.id}, "|", + ] +} else = qobject { + organizations.has_perm(organizations.WORKER) + user := input.auth.user + qobject := [ + {"task__owner_id": user.id}, + {"task__assignee_id": user.id}, "|", + {"task__project__owner_id": user.id}, "|", + {"task__project__assignee_id": user.id}, "|", + ] +} diff --git a/cvat/apps/quality_control/serializers.py b/cvat/apps/quality_control/serializers.py index 53fcdbf5cbd8..9d65d7579d05 100644 --- a/cvat/apps/quality_control/serializers.py +++ b/cvat/apps/quality_control/serializers.py @@ -64,7 +64,7 @@ class Meta: model = models.QualitySettings fields = ( 'id', - 'task', + 'task_id', 'iou_threshold', 'oks_sigma', @@ -85,7 +85,7 @@ class Meta: 'compare_attributes', ) - read_only_fields = ('id', 'task', ) + read_only_fields = ('id', 'task_id', ) extra_kwargs = { k: {'required': False} for k in fields diff --git a/cvat/apps/quality_control/views.py b/cvat/apps/quality_control/views.py index 408c3ab6fb85..cf9eaa35a4d0 100644 --- a/cvat/apps/quality_control/views.py +++ b/cvat/apps/quality_control/views.py @@ -29,7 +29,7 @@ QualityReportSerializer, QualityReportCreateSerializer ) -from cvat.apps.iam.permissions import AnnotationConflictPermission, QualityReportPermission +from cvat.apps.iam.permissions import AnnotationConflictPermission, QualityReportPermission, QualitySettingPermission @extend_schema(tags=["quality"]) @@ -297,7 +297,7 @@ def data(self, request, pk): # *ORGANIZATION_OPEN_API_PARAMETERS, ], responses={ - '200': QualityReportSerializer(many=True), + '200': QualitySettingsSerializer(many=True), }), retrieve=extend_schema( summary='Method returns details of quality settings', @@ -308,13 +308,23 @@ def data(self, request, pk): class QualitySettingsViewSet(viewsets.GenericViewSet, mixins.ListModelMixin, mixins.RetrieveModelMixin, PartialUpdateModelMixin ): - queryset = QualitySettings.objects.select_related('task').all() + queryset = QualitySettings.objects.select_related('task', 'task__organization').all() iam_organization_field = 'task__organization' search_fields = [] - filter_fields = [] + filter_fields = ['id', 'task_id'] + simple_filters = ['task_id'] ordering_fields = ['id'] ordering = 'id' serializer_class = QualitySettingsSerializer + + def get_queryset(self): + queryset = super().get_queryset() + + if self.action == 'list': + permissions = QualitySettingPermission.create_scope_list(self.request) + queryset = permissions.filter(queryset) + + return queryset diff --git a/cvat/schema.yml b/cvat/schema.yml index b6f60eb73216..8a89a72a0efb 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -3627,7 +3627,7 @@ paths: - name: filter required: false in: query - description: 'A filter term. Available filter_fields: []' + description: 'A filter term. Available filter_fields: [''id'', ''task_id'']' schema: type: string - name: org @@ -3665,6 +3665,11 @@ paths: [''id'']' schema: type: string + - name: task_id + in: query + description: A simple equality filter for the task_id field + schema: + type: integer tags: - quality security: @@ -3678,7 +3683,7 @@ paths: content: application/vnd.cvat+json: schema: - $ref: '#/components/schemas/PaginatedQualityReportList' + $ref: '#/components/schemas/PaginatedQualitySettingsList' description: '' /api/quality/settings/{id}: get: @@ -3760,6 +3765,7 @@ paths: - br - bs - ca + - ckb - cs - cy - da @@ -3812,6 +3818,7 @@ paths: - ml - mn - mr + - ms - my - nb - ne @@ -5887,6 +5894,7 @@ components: chunk_size: type: integer readOnly: true + nullable: true size: type: integer readOnly: true @@ -7043,6 +7051,7 @@ components: type: string format: date-time readOnly: true + nullable: true role: allOf: - $ref: '#/components/schemas/RoleEnum' @@ -7365,6 +7374,26 @@ components: type: array items: $ref: '#/components/schemas/QualityReport' + PaginatedQualitySettingsList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?page=4 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?page=2 + results: + type: array + items: + $ref: '#/components/schemas/QualitySettings' PaginatedTaskReadList: type: object properties: @@ -8067,7 +8096,7 @@ components: id: type: integer readOnly: true - task: + task_id: type: integer readOnly: true iou_threshold: @@ -8603,9 +8632,6 @@ components: $ref: '#/components/schemas/JobsSummary' labels: $ref: '#/components/schemas/LabelsSummary' - quality_settings: - type: integer - readOnly: true required: - jobs - labels @@ -8830,6 +8856,7 @@ components: status_code: type: integer readOnly: true + nullable: true redelivery: type: boolean readOnly: true diff --git a/tests/python/rest_api/test_check_objects_integrity.py b/tests/python/rest_api/test_check_objects_integrity.py index ee3b5b830d6c..82e55525abe1 100644 --- a/tests/python/rest_api/test_check_objects_integrity.py +++ b/tests/python/rest_api/test_check_objects_integrity.py @@ -15,7 +15,7 @@ @pytest.mark.usefixtures("restore_db_per_class") class TestGetResources: @pytest.mark.parametrize("path", config.ASSETS_DIR.glob("*.json")) - def test_check_objects_integrity(self, path: Path, tasks): + def test_check_objects_integrity(self, path: Path): with open(path) as f: endpoint = path.stem if endpoint in ["quality_settings", "quality_reports", "quality_conflicts"]: @@ -34,20 +34,6 @@ def test_check_objects_integrity(self, path: Path, tasks): ) == {} ) - elif endpoint == "quality/settings": - # There is no list endpoint, but every task must have quality settings - objects = json.load(f) - assert len(tasks) == len(objects) - for sid, settings in objects.items(): - response = config.get_method("admin1", f"quality/settings/{sid}").json() - assert ( - DeepDiff( - settings, - response, - ignore_order=True, - ) - == {} - ) else: response = config.get_method("admin1", endpoint, page_size="all") json_objs = json.load(f) diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py index 88402082d122..851f05d09601 100644 --- a/tests/python/rest_api/test_quality_control.py +++ b/tests/python/rest_api/test_quality_control.py @@ -620,6 +620,19 @@ def test_can_use_simple_filter_for_object_list(self, field): return super().test_can_use_simple_filter_for_object_list(field) +class TestSimpleQualitySettingsFilters(CollectionSimpleFilterTestBase): + @pytest.fixture(autouse=True) + def setup(self, restore_db_per_class, admin_user, quality_settings): + self.user = admin_user + self.samples = quality_settings + + def _get_endpoint(self, api_client: ApiClient) -> Endpoint: + return api_client.quality_api.list_settings_endpoint + + @pytest.mark.parametrize("field", ("task_id",)) + def test_can_use_simple_filter_for_object_list(self, field): + return super().test_can_use_simple_filter_for_object_list(field) + @pytest.mark.usefixtures("restore_db_per_class") class TestListSettings(_PermissionTestBase): @@ -659,8 +672,8 @@ def test_user_list_settings_in_sandbox( else: user = next(u for u in users if not is_task_staff(u["id"], task["id"]))["username"] - settings_id = task["quality_settings"] - settings = quality_settings[settings_id] + settings = next(s for s in quality_settings if s["task_id"] == task["id"]) + settings_id = settings["id"] if allow: self._test_list_settings_200(user, settings_id, expected_data=settings) @@ -710,8 +723,8 @@ def test_user_get_settings_in_org_task( assert task - settings_id = task["quality_settings"] - settings = quality_settings[settings_id] + settings = next(s for s in quality_settings if s["task_id"] == task["id"]) + settings_id = settings["id"] if allow: self._test_list_settings_200(user["username"], settings_id, expected_data=settings) @@ -743,7 +756,8 @@ def _test_get_settings_403(self, user: str, obj_id: int, **kwargs): return response def test_can_get_settings(self, admin_user, quality_settings): - settings_id, settings = next(iter(quality_settings.items())) + settings = next(iter(quality_settings)) + settings_id = settings["id"] self._test_get_settings_200(admin_user, settings_id, expected_data=settings) @pytest.mark.parametrize("is_staff, allow", [(True, True), (False, False)]) @@ -761,8 +775,8 @@ def test_user_get_settings_in_sandbox_task( else: user = next(u for u in users if not is_task_staff(u["id"], task["id"]))["username"] - settings_id = task["quality_settings"] - settings = quality_settings[settings_id] + settings = next(s for s in quality_settings if s["task_id"] == task["id"]) + settings_id = settings["id"] if allow: self._test_get_settings_200(user, settings_id, expected_data=settings) @@ -812,8 +826,8 @@ def test_user_get_settings_in_org_task( assert task - settings_id = task["quality_settings"] - settings = quality_settings[settings_id] + settings = next(s for s in quality_settings if s["task_id"] == task["id"]) + settings_id = settings["id"] if allow: self._test_get_settings_200(user["username"], settings_id, expected_data=settings) @@ -870,7 +884,8 @@ def _get_request_data(self, data: Dict[str, Any]) -> tuple[Dict[str, Any], Dict[ return patched_data, expected_data def test_can_patch_settings(self, admin_user, quality_settings): - settings_id, settings = next(iter(quality_settings.items())) + settings = next(iter(quality_settings)) + settings_id = settings["id"] data, expected_data = self._get_request_data(settings) self._test_patch_settings_200(admin_user, settings_id, data, expected_data=expected_data) @@ -889,8 +904,8 @@ def test_user_patch_settings_in_sandbox_task( else: user = next(u for u in users if not is_task_staff(u["id"], task["id"]))["username"] - settings_id = task["quality_settings"] - settings = quality_settings[settings_id] + settings = next(s for s in quality_settings if s["task_id"] == task["id"]) + settings_id = settings["id"] data, expected_data = self._get_request_data(settings) if allow: @@ -941,8 +956,8 @@ def test_user_patch_settings_in_org_task( assert task - settings_id = task["quality_settings"] - settings = quality_settings[settings_id] + settings = next(s for s in quality_settings if s["task_id"] == task["id"]) + settings_id = settings["id"] data, expected_data = self._get_request_data(settings) if allow: @@ -1056,13 +1071,12 @@ def test_modified_task_produces_different_metrics( ], ) def test_settings_affect_metrics( - self, admin_user, quality_reports, tasks, quality_settings, task_id, parameter + self, admin_user, quality_reports, quality_settings, task_id, parameter ): old_report = next(r for r in quality_reports if r["task_id"]) task_id = old_report["task_id"] - task = tasks[task_id] - settings = deepcopy(quality_settings[task["quality_settings"]]) + settings = deepcopy(next(s for s in quality_settings if s["task_id"] == task_id)) if isinstance(settings[parameter], bool): settings[parameter] = not settings[parameter] elif isinstance(settings[parameter], float): diff --git a/tests/python/shared/assets/quality_settings.json b/tests/python/shared/assets/quality_settings.json index d1579a6ae714..b543186d9f84 100644 --- a/tests/python/shared/assets/quality_settings.json +++ b/tests/python/shared/assets/quality_settings.json @@ -1,274 +1,279 @@ { - "1": { - "check_covered_annotations": true, - "compare_attributes": true, - "compare_groups": true, - "group_match_threshold": 0.5, - "id": 1, - "iou_threshold": 0.4, - "line_orientation_threshold": 0.1, - "line_thickness": 0.01, - "low_overlap_threshold": 0.8, - "object_visibility_threshold": 0.05, - "oks_sigma": 0.09, - "oriented_lines": true, - "panoptic_comparison": true, - "task": 2 - }, - "2": { - "check_covered_annotations": true, - "compare_attributes": true, - "compare_groups": true, - "group_match_threshold": 0.5, - "id": 2, - "iou_threshold": 0.4, - "line_orientation_threshold": 0.1, - "line_thickness": 0.01, - "low_overlap_threshold": 0.8, - "object_visibility_threshold": 0.05, - "oks_sigma": 0.09, - "oriented_lines": true, - "panoptic_comparison": true, - "task": 5 - }, - "3": { - "check_covered_annotations": true, - "compare_attributes": true, - "compare_groups": true, - "group_match_threshold": 0.5, - "id": 3, - "iou_threshold": 0.4, - "line_orientation_threshold": 0.1, - "line_thickness": 0.01, - "low_overlap_threshold": 0.8, - "object_visibility_threshold": 0.05, - "oks_sigma": 0.09, - "oriented_lines": true, - "panoptic_comparison": true, - "task": 6 - }, - "4": { - "check_covered_annotations": true, - "compare_attributes": true, - "compare_groups": true, - "group_match_threshold": 0.5, - "id": 4, - "iou_threshold": 0.4, - "line_orientation_threshold": 0.1, - "line_thickness": 0.01, - "low_overlap_threshold": 0.8, - "object_visibility_threshold": 0.05, - "oks_sigma": 0.09, - "oriented_lines": true, - "panoptic_comparison": true, - "task": 7 - }, - "5": { - "check_covered_annotations": true, - "compare_attributes": true, - "compare_groups": true, - "group_match_threshold": 0.5, - "id": 5, - "iou_threshold": 0.4, - "line_orientation_threshold": 0.1, - "line_thickness": 0.01, - "low_overlap_threshold": 0.8, - "object_visibility_threshold": 0.05, - "oks_sigma": 0.09, - "oriented_lines": true, - "panoptic_comparison": true, - "task": 8 - }, - "6": { - "check_covered_annotations": true, - "compare_attributes": true, - "compare_groups": true, - "group_match_threshold": 0.5, - "id": 6, - "iou_threshold": 0.4, - "line_orientation_threshold": 0.1, - "line_thickness": 0.01, - "low_overlap_threshold": 0.8, - "object_visibility_threshold": 0.05, - "oks_sigma": 0.09, - "oriented_lines": true, - "panoptic_comparison": true, - "task": 9 - }, - "7": { - "check_covered_annotations": true, - "compare_attributes": true, - "compare_groups": true, - "group_match_threshold": 0.5, - "id": 7, - "iou_threshold": 0.4, - "line_orientation_threshold": 0.1, - "line_thickness": 0.01, - "low_overlap_threshold": 0.8, - "object_visibility_threshold": 0.05, - "oks_sigma": 0.09, - "oriented_lines": true, - "panoptic_comparison": true, - "task": 11 - }, - "8": { - "check_covered_annotations": true, - "compare_attributes": true, - "compare_groups": true, - "group_match_threshold": 0.5, - "id": 8, - "iou_threshold": 0.4, - "line_orientation_threshold": 0.1, - "line_thickness": 0.01, - "low_overlap_threshold": 0.8, - "object_visibility_threshold": 0.05, - "oks_sigma": 0.09, - "oriented_lines": true, - "panoptic_comparison": true, - "task": 12 - }, - "9": { - "check_covered_annotations": true, - "compare_attributes": true, - "compare_groups": true, - "group_match_threshold": 0.5, - "id": 9, - "iou_threshold": 0.4, - "line_orientation_threshold": 0.1, - "line_thickness": 0.01, - "low_overlap_threshold": 0.8, - "object_visibility_threshold": 0.05, - "oks_sigma": 0.09, - "oriented_lines": true, - "panoptic_comparison": true, - "task": 13 - }, - "10": { - "check_covered_annotations": true, - "compare_attributes": true, - "compare_groups": true, - "group_match_threshold": 0.5, - "id": 10, - "iou_threshold": 0.4, - "line_orientation_threshold": 0.1, - "line_thickness": 0.01, - "low_overlap_threshold": 0.8, - "object_visibility_threshold": 0.05, - "oks_sigma": 0.09, - "oriented_lines": true, - "panoptic_comparison": true, - "task": 14 - }, - "11": { - "check_covered_annotations": true, - "compare_attributes": true, - "compare_groups": true, - "group_match_threshold": 0.5, - "id": 11, - "iou_threshold": 0.4, - "line_orientation_threshold": 0.1, - "line_thickness": 0.01, - "low_overlap_threshold": 0.8, - "object_visibility_threshold": 0.05, - "oks_sigma": 0.09, - "oriented_lines": true, - "panoptic_comparison": true, - "task": 15 - }, - "12": { - "check_covered_annotations": true, - "compare_attributes": true, - "compare_groups": true, - "group_match_threshold": 0.5, - "id": 12, - "iou_threshold": 0.4, - "line_orientation_threshold": 0.1, - "line_thickness": 0.01, - "low_overlap_threshold": 0.8, - "object_visibility_threshold": 0.05, - "oks_sigma": 0.09, - "oriented_lines": true, - "panoptic_comparison": true, - "task": 17 - }, - "13": { - "check_covered_annotations": true, - "compare_attributes": true, - "compare_groups": true, - "group_match_threshold": 0.5, - "id": 13, - "iou_threshold": 0.4, - "line_orientation_threshold": 0.1, - "line_thickness": 0.01, - "low_overlap_threshold": 0.8, - "object_visibility_threshold": 0.05, - "oks_sigma": 0.09, - "oriented_lines": true, - "panoptic_comparison": true, - "task": 18 - }, - "14": { - "check_covered_annotations": true, - "compare_attributes": true, - "compare_groups": true, - "group_match_threshold": 0.5, - "id": 14, - "iou_threshold": 0.4, - "line_orientation_threshold": 0.1, - "line_thickness": 0.01, - "low_overlap_threshold": 0.8, - "object_visibility_threshold": 0.05, - "oks_sigma": 0.09, - "oriented_lines": true, - "panoptic_comparison": true, - "task": 19 - }, - "15": { - "check_covered_annotations": true, - "compare_attributes": true, - "compare_groups": true, - "group_match_threshold": 0.5, - "id": 15, - "iou_threshold": 0.4, - "line_orientation_threshold": 0.1, - "line_thickness": 0.01, - "low_overlap_threshold": 0.8, - "object_visibility_threshold": 0.05, - "oks_sigma": 0.09, - "oriented_lines": true, - "panoptic_comparison": true, - "task": 20 - }, - "16": { - "check_covered_annotations": true, - "compare_attributes": true, - "compare_groups": true, - "group_match_threshold": 0.5, - "id": 16, - "iou_threshold": 0.4, - "line_orientation_threshold": 0.1, - "line_thickness": 0.01, - "low_overlap_threshold": 0.8, - "object_visibility_threshold": 0.05, - "oks_sigma": 0.09, - "oriented_lines": true, - "panoptic_comparison": true, - "task": 21 - }, - "17": { - "check_covered_annotations": true, - "compare_attributes": true, - "compare_groups": true, - "group_match_threshold": 0.5, - "id": 17, - "iou_threshold": 0.4, - "line_orientation_threshold": 0.1, - "line_thickness": 0.01, - "low_overlap_threshold": 0.8, - "object_visibility_threshold": 0.05, - "oks_sigma": 0.09, - "oriented_lines": true, - "panoptic_comparison": true, - "task": 22 - } + "count": 17, + "next": null, + "previous": null, + "results": [ + { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "id": 1, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task_id": 2 + }, + { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "id": 2, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task_id": 5 + }, + { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "id": 3, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task_id": 6 + }, + { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "id": 4, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task_id": 7 + }, + { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "id": 5, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task_id": 8 + }, + { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "id": 6, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task_id": 9 + }, + { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "id": 7, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task_id": 11 + }, + { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "id": 8, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task_id": 12 + }, + { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "id": 9, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task_id": 13 + }, + { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "id": 10, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task_id": 14 + }, + { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "id": 11, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task_id": 15 + }, + { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "id": 12, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task_id": 17 + }, + { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "id": 13, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task_id": 18 + }, + { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "id": 14, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task_id": 19 + }, + { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "id": 15, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task_id": 20 + }, + { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "id": 16, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task_id": 21 + }, + { + "check_covered_annotations": true, + "compare_attributes": true, + "compare_groups": true, + "group_match_threshold": 0.5, + "id": 17, + "iou_threshold": 0.4, + "line_orientation_threshold": 0.1, + "line_thickness": 0.01, + "low_overlap_threshold": 0.8, + "object_visibility_threshold": 0.05, + "oks_sigma": 0.09, + "oriented_lines": true, + "panoptic_comparison": true, + "task_id": 22 + } + ] } \ No newline at end of file diff --git a/tests/python/shared/assets/tasks.json b/tests/python/shared/assets/tasks.json index f9f466684fb1..926134a2d137 100644 --- a/tests/python/shared/assets/tasks.json +++ b/tests/python/shared/assets/tasks.json @@ -35,7 +35,6 @@ "username": "user2" }, "project_id": null, - "quality_settings": 17, "segment_size": 11, "size": 11, "source_storage": null, @@ -77,7 +76,6 @@ "username": "admin1" }, "project_id": null, - "quality_settings": 16, "segment_size": 6, "size": 10, "source_storage": { @@ -127,7 +125,6 @@ "username": "admin1" }, "project_id": 12, - "quality_settings": 15, "segment_size": 2, "size": 2, "source_storage": { @@ -177,7 +174,6 @@ "username": "admin1" }, "project_id": null, - "quality_settings": 14, "segment_size": 2, "size": 2, "source_storage": { @@ -227,7 +223,6 @@ "username": "admin1" }, "project_id": 11, - "quality_settings": 13, "segment_size": 2, "size": 2, "source_storage": { @@ -283,7 +278,6 @@ "username": "admin1" }, "project_id": null, - "quality_settings": 12, "segment_size": 5, "size": 5, "source_storage": null, @@ -325,7 +319,6 @@ "username": "admin1" }, "project_id": 8, - "quality_settings": 11, "segment_size": 25, "size": 25, "source_storage": { @@ -375,7 +368,6 @@ "username": "admin1" }, "project_id": 5, - "quality_settings": 10, "segment_size": 8, "size": 8, "source_storage": { @@ -431,7 +423,6 @@ "username": "admin1" }, "project_id": 4, - "quality_settings": 9, "segment_size": 5, "size": 5, "source_storage": null, @@ -468,7 +459,6 @@ "username": "admin1" }, "project_id": null, - "quality_settings": 8, "segment_size": 0, "source_storage": null, "status": "annotation", @@ -515,7 +505,6 @@ "username": "business1" }, "project_id": 2, - "quality_settings": 7, "segment_size": 11, "size": 11, "source_storage": { @@ -571,7 +560,6 @@ "username": "business1" }, "project_id": 1, - "quality_settings": 6, "segment_size": 5, "size": 20, "source_storage": null, @@ -619,7 +607,6 @@ "username": "user1" }, "project_id": null, - "quality_settings": 5, "segment_size": 14, "size": 14, "source_storage": null, @@ -667,7 +654,6 @@ "username": "business2" }, "project_id": null, - "quality_settings": 4, "segment_size": 11, "size": 11, "source_storage": null, @@ -709,7 +695,6 @@ "username": "user1" }, "project_id": null, - "quality_settings": 3, "segment_size": 1, "size": 1, "source_storage": null, @@ -757,7 +742,6 @@ "username": "user1" }, "project_id": null, - "quality_settings": 2, "segment_size": 25, "size": 25, "source_storage": null, @@ -805,7 +789,6 @@ "username": "user1" }, "project_id": null, - "quality_settings": 1, "segment_size": 23, "size": 23, "source_storage": null, diff --git a/tests/python/shared/fixtures/data.py b/tests/python/shared/fixtures/data.py index acc6f85c6f85..0694437d4363 100644 --- a/tests/python/shared/fixtures/data.py +++ b/tests/python/shared/fixtures/data.py @@ -127,7 +127,7 @@ def quality_conflicts(): @pytest.fixture(scope="session") def quality_settings(): with open(ASSETS_DIR / "quality_settings.json") as f: - return {int(k): v for k, v in json.load(f).items()} + return Container(json.load(f)["results"]) @pytest.fixture(scope="session") diff --git a/tests/python/shared/utils/dump_objects.py b/tests/python/shared/utils/dump_objects.py index 90fd827d0d22..ecab740f0ec1 100644 --- a/tests/python/shared/utils/dump_objects.py +++ b/tests/python/shared/utils/dump_objects.py @@ -9,7 +9,6 @@ if __name__ == "__main__": annotations = {} - quality_settings = {} for obj in [ "user", @@ -26,6 +25,7 @@ "label", "quality/report", "quality/conflict", + "quality/setting", ]: response = get_method("admin1", f"{obj}s", page_size="all") @@ -42,14 +42,5 @@ if response.status_code == HTTPStatus.OK: annotations[obj][oid] = response.json() - if obj == "task": - sid = _obj["quality_settings"] - response = get_method("admin1", f"quality/settings/{sid}") - if response.status_code == HTTPStatus.OK: - quality_settings[sid] = response.json() - with open(ASSETS_DIR / "annotations.json", "w") as f: json.dump(annotations, f, indent=2, sort_keys=True) - - with open(ASSETS_DIR / "quality_settings.json", "w") as f: - json.dump(quality_settings, f, indent=2, sort_keys=True) From 7434d48ff805de5b01e5d7a3ee6437887056de39 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 30 May 2023 15:46:18 +0300 Subject: [PATCH 206/257] Fix CI --- tests/python/rest_api/test_quality_control.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py index 851f05d09601..4939a44aba4a 100644 --- a/tests/python/rest_api/test_quality_control.py +++ b/tests/python/rest_api/test_quality_control.py @@ -870,7 +870,7 @@ def _test_patch_settings_403(self, user: str, obj_id: int, data: Dict[str, Any], return response - def _get_request_data(self, data: Dict[str, Any]) -> tuple[Dict[str, Any], Dict[str, Any]]: + def _get_request_data(self, data: Dict[str, Any]) -> Tuple[Dict[str, Any], Dict[str, Any]]: patched_data = deepcopy(data) for field, value in data.items(): From 3de9f6b54bb140cdaeb18c3116e4ee0f03f5db9f Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 30 May 2023 19:44:57 +0300 Subject: [PATCH 207/257] Fix interpolation tests --- cvat/apps/dataset_manager/annotation.py | 21 ++++++++++++++---- .../dataset_manager/tests/test_annotation.py | 22 +++++++++++++------ 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/cvat/apps/dataset_manager/annotation.py b/cvat/apps/dataset_manager/annotation.py index 4779bf5e1949..231b21716a8d 100644 --- a/cvat/apps/dataset_manager/annotation.py +++ b/cvat/apps/dataset_manager/annotation.py @@ -554,10 +554,18 @@ def copy_shape(source, frame, points=None, rotation=None): copied["frame"] = frame if rotation is not None: copied["rotation"] = rotation + + if points is None: + points = copied["points"] + + if isinstance(points, np.ndarray): + points = points.tolist() + else: + points = points.copy() + if points is not None: copied["points"] = points - else: - copied["points"] = source["points"].copy() + return copied def find_angle_diff(right_angle, left_angle): @@ -868,7 +876,7 @@ def interpolate(shape0, shape1): def propagate(shape, end_frame, *, included_frames=None): return [ copy_shape(shape, i) - for i in range(shape["frame"], end_frame) + for i in range(shape["frame"] + 1, end_frame) if included_frames is None or i in included_frames ] @@ -926,7 +934,12 @@ def propagate(shape, end_frame, *, included_frames=None): # https://github.com/openvinotoolkit/cvat/issues/2827 if track["frame"] <= shape["frame"] < end_frame - if not shape["outside"] or include_outside + # Exclude outside shapes. + # Keyframes should be included regardless the outside value + # If really needed, they can be excluded on the later stages, + # but here they represent a finishing shape in a visible sequence + if shape["keyframe"] or not shape["outside"] or include_outside + if included_frames is None or shape["frame"] in included_frames ] diff --git a/cvat/apps/dataset_manager/tests/test_annotation.py b/cvat/apps/dataset_manager/tests/test_annotation.py index 644ea9d4cc32..6687f692a0d3 100644 --- a/cvat/apps/dataset_manager/tests/test_annotation.py +++ b/cvat/apps/dataset_manager/tests/test_annotation.py @@ -11,13 +11,21 @@ class TrackManagerTest(TestCase): def _check_interpolation(self, track): interpolated = TrackManager.get_interpolated_shapes(track, 0, 7, '2d') - self.assertEqual(len(interpolated), 6) - self.assertTrue(interpolated[0]["keyframe"]) - self.assertFalse(interpolated[1]["keyframe"]) - self.assertTrue(interpolated[2]["keyframe"]) - self.assertTrue(interpolated[3]["keyframe"]) - self.assertFalse(interpolated[4]["keyframe"]) - self.assertFalse(interpolated[5]["keyframe"]) + self.assertEqual( + [ + {"frame": 0, "keyframe": True, "outside": False}, + {"frame": 1, "keyframe": False, "outside": False}, + {"frame": 2, "keyframe": True, "outside": True}, + # frame = 3 should be skipped as it is outside and interpolated + {"frame": 4, "keyframe": True, "outside": False}, + {"frame": 5, "keyframe": False, "outside": False}, + {"frame": 6, "keyframe": False, "outside": False}, + ], + [ + {k: v for k, v in shape.items() if k in ["frame", "keyframe", "outside"]} + for shape in interpolated + ] + ) def test_point_interpolation(self): track = { From 66c64746e1c149492382bef83a47b39c4782edeb Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 30 May 2023 20:47:07 +0300 Subject: [PATCH 208/257] Revert change for outside shapes --- cvat/apps/dataset_manager/bindings.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cvat/apps/dataset_manager/bindings.py b/cvat/apps/dataset_manager/bindings.py index 19c35d1dc1e3..6e5c6ab76d60 100644 --- a/cvat/apps/dataset_manager/bindings.py +++ b/cvat/apps/dataset_manager/bindings.py @@ -433,6 +433,8 @@ def get_frame(idx): shape_data = '' if 'track_id' in shape: + if shape['outside']: + continue exported_shape = self._export_tracked_shape(shape) else: exported_shape = self._export_labeled_shape(shape) From ce82601ca345458cf8210d543f5b8c2f568dea00 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 30 May 2023 20:47:20 +0300 Subject: [PATCH 209/257] Fix track merging --- cvat/apps/dataset_manager/annotation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cvat/apps/dataset_manager/annotation.py b/cvat/apps/dataset_manager/annotation.py index 231b21716a8d..7fdfad6425fe 100644 --- a/cvat/apps/dataset_manager/annotation.py +++ b/cvat/apps/dataset_manager/annotation.py @@ -525,7 +525,7 @@ def _calc_objects_similarity(obj0, obj1, start_frame, overlap, dimension): error += 1 count += 1 - return 1 - error / count + return 1 - error / (count or 1) else: return 0 From 88ed6d842090659fda95addb1a1440f71638e01d Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 31 May 2023 11:36:55 +0300 Subject: [PATCH 210/257] Fix test requirements --- tests/python/requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/python/requirements.txt b/tests/python/requirements.txt index 89af8413f6be..9637eb536189 100644 --- a/tests/python/requirements.txt +++ b/tests/python/requirements.txt @@ -6,3 +6,4 @@ deepdiff==5.6.0 boto3==1.17.61 Pillow==9.3.0 pyyaml==6.0.0 +numpy==1.22.0 \ No newline at end of file From 0c5a6e543ae347999c43b37c4afdcde20a797960 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 1 Jun 2023 12:02:38 +0300 Subject: [PATCH 211/257] Update frame shape percent --- cvat-core/src/quality-report.ts | 2 +- cvat/apps/quality_control/quality_reports.py | 4 ++-- tests/python/rest_api/test_quality_control.py | 2 +- tests/python/shared/assets/cvat_db/data.json | 4 ++-- tests/python/shared/assets/quality_reports.json | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cvat-core/src/quality-report.ts b/cvat-core/src/quality-report.ts index 5aeff0aa4f82..41d28eabfca5 100644 --- a/cvat-core/src/quality-report.ts +++ b/cvat-core/src/quality-report.ts @@ -111,7 +111,7 @@ export default class QualityReport { summary: { get: () => ({ frameCount: data.summary.frame_count, - frameSharePercent: data.summary.frame_share_percent * 100, + frameSharePercent: data.summary.frame_share_percent, conflictCount: data.summary.conflict_count, validCount: data.summary.valid_count, dsCount: data.summary.ds_count, diff --git a/cvat/apps/quality_control/quality_reports.py b/cvat/apps/quality_control/quality_reports.py index fb9175ac3fd5..0e63990d4594 100644 --- a/cvat/apps/quality_control/quality_reports.py +++ b/cvat/apps/quality_control/quality_reports.py @@ -1977,7 +1977,7 @@ def generate_report(self) -> ComparisonReport: parameters=self.settings, comparison_summary=ComparisonReportComparisonSummary( - frame_share_percent=( + frame_share_percent=100 * ( len(intersection_frames) / (len(self._ds_data_provider.job_data.rel_range) or 1) ), frames=intersection_frames, @@ -2362,7 +2362,7 @@ def _compute_task_report( parameters=next(iter(job_reports.values())).parameters, comparison_summary=ComparisonReportComparisonSummary( - frame_share_percent=len(task_intersection_frames) / (task.data.size or 1), + frame_share_percent=len(task_intersection_frames) / (task.data.size or 1) * 100, frames=sorted(task_intersection_frames), conflict_count=len(task_conflicts), diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py index 4939a44aba4a..ca2d3d09a63d 100644 --- a/tests/python/rest_api/test_quality_control.py +++ b/tests/python/rest_api/test_quality_control.py @@ -987,7 +987,7 @@ def test_report_summary(self, task_id, tasks, jobs, quality_reports): assert summary["valid_count"] < summary["ds_count"] assert summary["valid_count"] < summary["gt_count"] assert summary["frame_count"] == gt_job["frame_count"] - assert summary["frame_share_percent"] == summary["frame_count"] / task["size"] + assert summary["frame_share_percent"] == summary["frame_count"] / task["size"] * 100 def test_unmodified_task_produces_the_same_metrics(self, admin_user, quality_reports): old_report = next(r for r in quality_reports if r["task_id"]) diff --git a/tests/python/shared/assets/cvat_db/data.json b/tests/python/shared/assets/cvat_db/data.json index 04885a4561d1..d69114f44aa0 100644 --- a/tests/python/shared/assets/cvat_db/data.json +++ b/tests/python/shared/assets/cvat_db/data.json @@ -10255,7 +10255,7 @@ "created_date": "2023-05-26T16:25:36.613Z", "target_last_updated": "2023-05-26T16:17:02.635Z", "gt_last_updated": "2023-05-26T16:16:50.630Z", - "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"oriented_lines\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share_percent\": 0.2727272727272727,\n \"frames\": [\n 0,\n 1,\n 2\n ],\n \"conflict_count\": 37,\n \"warning_count\": 15,\n \"error_count\": 22,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 9,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n },\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 8,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.6774193548387096,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.5384615384615384,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.4883720930232558,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.6363636363636364\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"mean_iou\": 0.1773115335759765,\n \"accuracy\": 0.5581395348837209\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"frame_count\": 3,\n \"mean_conflict_count\": 12.333333333333334\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 91,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 118,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 88,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 102,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 68,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 98,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 107,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 121,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 122,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 70,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 76,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 93,\n \"job_id\": 27,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 74,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 95,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 73,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 96,\n \"job_id\": 27,\n \"type\": \"ellipse\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 64,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 66,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 94,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 89,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 123,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 97,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_attributes\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 82,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 103,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 81,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 104,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 83,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 105,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 87,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 106,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 80,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 111,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 77,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 114,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 2,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.84,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.6363636363636364,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5675675675675675,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.7777777777777778\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"mean_iou\": 0.5319346007279295,\n \"accuracy\": 0.6486486486486487\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"conflict_count\": 31,\n \"warning_count\": 15,\n \"error_count\": 16,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 3,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 130,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 128,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 124,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 125,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 127,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 129,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 6,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" + "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"oriented_lines\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share_percent\": 27.27272727272727,\n \"frames\": [\n 0,\n 1,\n 2\n ],\n \"conflict_count\": 37,\n \"warning_count\": 15,\n \"error_count\": 22,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 9,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n },\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 8,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.6774193548387096,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.5384615384615384,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.4883720930232558,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.6363636363636364\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"mean_iou\": 0.1773115335759765,\n \"accuracy\": 0.5581395348837209\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"frame_count\": 3,\n \"mean_conflict_count\": 12.333333333333334\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 91,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 118,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 88,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 102,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 68,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 98,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 107,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 121,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 122,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 70,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 76,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 93,\n \"job_id\": 27,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 74,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 95,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 73,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 96,\n \"job_id\": 27,\n \"type\": \"ellipse\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 64,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 66,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 94,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 89,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 123,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 97,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_attributes\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 82,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 103,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 81,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 104,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 83,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 105,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 87,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 106,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 80,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 111,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 77,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 114,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 2,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.84,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.6363636363636364,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5675675675675675,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.7777777777777778\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"mean_iou\": 0.5319346007279295,\n \"accuracy\": 0.6486486486486487\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"conflict_count\": 31,\n \"warning_count\": 15,\n \"error_count\": 16,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 3,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 130,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 128,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 124,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 125,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 127,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 129,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 6,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" } }, { @@ -10268,7 +10268,7 @@ "created_date": "2023-05-26T16:25:36.616Z", "target_last_updated": "2023-05-26T16:11:24.294Z", "gt_last_updated": "2023-05-26T16:16:50.630Z", - "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"oriented_lines\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share_percent\": 0.2727272727272727,\n \"frames\": [\n 0,\n 1,\n 2\n ],\n \"conflict_count\": 37,\n \"warning_count\": 15,\n \"error_count\": 22,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 9,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n },\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 8,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.6774193548387096,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.5384615384615384,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.4883720930232558,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.6363636363636364\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"mean_iou\": 0.1773115335759765,\n \"accuracy\": 0.5581395348837209\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"frame_count\": 3,\n \"mean_conflict_count\": 12.333333333333334\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 91,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 118,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 88,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 102,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 68,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 98,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 107,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 121,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 122,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 70,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 76,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 93,\n \"job_id\": 27,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 74,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 95,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 73,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 96,\n \"job_id\": 27,\n \"type\": \"ellipse\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 64,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 66,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 94,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 89,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 123,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 97,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_attributes\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 82,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 103,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 81,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 104,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 83,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 105,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 87,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 106,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 80,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 111,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 77,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 114,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 2,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.84,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.6363636363636364,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5675675675675675,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.7777777777777778\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"mean_iou\": 0.5319346007279295,\n \"accuracy\": 0.6486486486486487\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"conflict_count\": 31,\n \"warning_count\": 15,\n \"error_count\": 16,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 3,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 130,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 128,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 124,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 125,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 127,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 129,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 6,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" + "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"oriented_lines\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share_percent\": 27.27272727272727,\n \"frames\": [\n 0,\n 1,\n 2\n ],\n \"conflict_count\": 37,\n \"warning_count\": 15,\n \"error_count\": 22,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 9,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n },\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 8,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.6774193548387096,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.5384615384615384,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.4883720930232558,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.6363636363636364\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"mean_iou\": 0.1773115335759765,\n \"accuracy\": 0.5581395348837209\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"frame_count\": 3,\n \"mean_conflict_count\": 12.333333333333334\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 91,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 118,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 88,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 102,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 68,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 98,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 107,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 121,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 122,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 70,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 76,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 93,\n \"job_id\": 27,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 74,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 95,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 73,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 96,\n \"job_id\": 27,\n \"type\": \"ellipse\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 64,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 66,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 94,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 89,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 123,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 97,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_attributes\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 82,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 103,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 81,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 104,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 83,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 105,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 87,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 106,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 80,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 111,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 77,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 114,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 2,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.84,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.6363636363636364,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5675675675675675,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.7777777777777778\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"mean_iou\": 0.5319346007279295,\n \"accuracy\": 0.6486486486486487\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"conflict_count\": 31,\n \"warning_count\": 15,\n \"error_count\": 16,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 3,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 130,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 128,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 124,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 125,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 127,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 129,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 6,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" } }, { diff --git a/tests/python/shared/assets/quality_reports.json b/tests/python/shared/assets/quality_reports.json index 21215934bcac..09095664d9a7 100644 --- a/tests/python/shared/assets/quality_reports.json +++ b/tests/python/shared/assets/quality_reports.json @@ -27,7 +27,7 @@ "ds_count": 34, "error_count": 22, "frame_count": 3, - "frame_share_percent": 0.2727272727272727, + "frame_share_percent": 27.27272727272727, "gt_count": 33, "valid_count": 21, "warning_count": 15 @@ -60,7 +60,7 @@ "ds_count": 34, "error_count": 22, "frame_count": 3, - "frame_share_percent": 0.2727272727272727, + "frame_share_percent": 27.27272727272727, "gt_count": 33, "valid_count": 21, "warning_count": 15 From 7151ddc13800218e24826aeb2fdc9ab7d8db14c5 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 1 Jun 2023 12:39:00 +0300 Subject: [PATCH 212/257] Add field descriptions in the quality settings api --- cvat/apps/quality_control/serializers.py | 44 ++++++++++++++++++++ cvat/schema.yml | 52 ++++++++++++++++++++++++ 2 files changed, 96 insertions(+) diff --git a/cvat/apps/quality_control/serializers.py b/cvat/apps/quality_control/serializers.py index 9d65d7579d05..27cf68cc0c86 100644 --- a/cvat/apps/quality_control/serializers.py +++ b/cvat/apps/quality_control/serializers.py @@ -3,6 +3,7 @@ # SPDX-License-Identifier: MIT from rest_framework import serializers +import textwrap from cvat.apps.quality_control import models @@ -86,11 +87,54 @@ class Meta: 'compare_attributes', ) read_only_fields = ('id', 'task_id', ) + extra_kwargs = { k: {'required': False} for k in fields } + for field_name, help_text in { + 'iou_threshold': "Used for distinction between matched / unmatched shapes", + 'low_overlap_threshold': ( + "Used for distinction between strong / weak (low_overlap) matches" + ), + 'oks_sigma': """ + Like IoU threshold, but for points. + The percent of the bbox area, used as the radius of the circle around the GT point, + where the checked point is expected to be. + Read more: https://cocodataset.org/#keypoints-eval + """, + 'line_thickness': """ + Thickness of polylines, relatively to the (image area) ^ 0.5. + The distance to the boundary around the GT line, + inside of which the checked line points should be + """, + 'oriented_lines': "Indicates that polylines have direction", + 'line_orientation_threshold': """ + The minimal gain in the GT IoU between the given and reversed line directions + to consider the line inverted. Only useful with the 'oriented_lines' parameter + """, + 'compare_groups': "Enables or disables annotation group checks", + 'group_match_threshold': """ + Minimal IoU for groups to be considered matching, + used when the 'compare_groups' is enabled + """, + 'check_covered_annotations': ( + "Check for partially-covered annotations, useful in segmentation tasks" + ), + 'object_visibility_threshold': """ + Minimal visible area percent of the spatial annotations (polygons, masks) + for reporting covered annotations, + useful with the 'check_covered_annotations' option + """, + 'panoptic_comparison': ( + "Use only the visible part of the masks and polygons in comparisons" + ) + }.items(): + extra_kwargs.setdefault(field_name, {}).setdefault( + 'help_text', textwrap.dedent(help_text.lstrip('\n')) + ) + def validate(self, attrs): for k, v in attrs.items(): if k.endswith('_threshold') or k in ['oks_sigma', 'line_thickness']: diff --git a/cvat/schema.yml b/cvat/schema.yml index 8a89a72a0efb..6e51897e18e5 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -7719,32 +7719,58 @@ components: iou_threshold: type: number format: double + description: Used for distinction between matched / unmatched shapes oks_sigma: type: number format: double + description: | + Like IoU threshold, but for points. + The percent of the bbox area, used as the radius of the circle around the GT point, + where the checked point is expected to be. + Read more: https://cocodataset.org/#keypoints-eval line_thickness: type: number format: double + description: | + Thickness of polylines, relatively to the (image area) ^ 0.5. + The distance to the boundary around the GT line, + inside of which the checked line points should be low_overlap_threshold: type: number format: double + description: Used for distinction between strong / weak (low_overlap) matches oriented_lines: type: boolean + description: Indicates that polylines have direction line_orientation_threshold: type: number format: double + description: | + The minimal gain in the GT IoU between the given and reversed line directions + to consider the line inverted. Only useful with the 'oriented_lines' parameter compare_groups: type: boolean + description: Enables or disables annotation group checks group_match_threshold: type: number format: double + description: | + Minimal IoU for groups to be considered matching, + used when the 'compare_groups' is enabled check_covered_annotations: type: boolean + description: Check for partially-covered annotations, useful in segmentation + tasks object_visibility_threshold: type: number format: double + description: | + Minimal visible area percent of the spatial annotations (polygons, masks) + for reporting covered annotations, + useful with the 'check_covered_annotations' option panoptic_comparison: type: boolean + description: Use only the visible part of the masks and polygons in comparisons compare_attributes: type: boolean PatchedTaskWriteRequest: @@ -8102,32 +8128,58 @@ components: iou_threshold: type: number format: double + description: Used for distinction between matched / unmatched shapes oks_sigma: type: number format: double + description: | + Like IoU threshold, but for points. + The percent of the bbox area, used as the radius of the circle around the GT point, + where the checked point is expected to be. + Read more: https://cocodataset.org/#keypoints-eval line_thickness: type: number format: double + description: | + Thickness of polylines, relatively to the (image area) ^ 0.5. + The distance to the boundary around the GT line, + inside of which the checked line points should be low_overlap_threshold: type: number format: double + description: Used for distinction between strong / weak (low_overlap) matches oriented_lines: type: boolean + description: Indicates that polylines have direction line_orientation_threshold: type: number format: double + description: | + The minimal gain in the GT IoU between the given and reversed line directions + to consider the line inverted. Only useful with the 'oriented_lines' parameter compare_groups: type: boolean + description: Enables or disables annotation group checks group_match_threshold: type: number format: double + description: | + Minimal IoU for groups to be considered matching, + used when the 'compare_groups' is enabled check_covered_annotations: type: boolean + description: Check for partially-covered annotations, useful in segmentation + tasks object_visibility_threshold: type: number format: double + description: | + Minimal visible area percent of the spatial annotations (polygons, masks) + for reporting covered annotations, + useful with the 'check_covered_annotations' option panoptic_comparison: type: boolean + description: Use only the visible part of the masks and polygons in comparisons compare_attributes: type: boolean RegisterSerializerEx: From 14875d292d3e28ba00d81692762f9725a0f1bf0a Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 1 Jun 2023 15:15:42 +0300 Subject: [PATCH 213/257] Update wrt iam changes --- cvat/apps/quality_control/models.py | 4 +- cvat/apps/quality_control/views.py | 53 +- cvat/schema.yml | 30 ++ tests/python/rest_api/test_quality_control.py | 46 +- .../shared/assets/quality_conflicts.json | 486 +++++++++--------- 5 files changed, 345 insertions(+), 274 deletions(-) diff --git a/cvat/apps/quality_control/models.py b/cvat/apps/quality_control/models.py index 600b7135ff05..297565c65614 100644 --- a/cvat/apps/quality_control/models.py +++ b/cvat/apps/quality_control/models.py @@ -126,7 +126,7 @@ def clean(self): @property def organization_id(self): if task := self.get_task(): - return getattr(task.organization, 'id') + return getattr(task.organization, 'id', None) return None @@ -221,5 +221,5 @@ def to_dict(self): @property def organization_id(self): if task := self.task: - return getattr(task.organization, 'id') + return getattr(task.organization, 'id', None) return None diff --git a/cvat/apps/quality_control/views.py b/cvat/apps/quality_control/views.py index cf9eaa35a4d0..6d5cb67e5c0f 100644 --- a/cvat/apps/quality_control/views.py +++ b/cvat/apps/quality_control/views.py @@ -29,7 +29,9 @@ QualityReportSerializer, QualityReportCreateSerializer ) -from cvat.apps.iam.permissions import AnnotationConflictPermission, QualityReportPermission, QualitySettingPermission +from cvat.apps.iam.permissions import ( + AnnotationConflictPermission, QualityReportPermission, QualitySettingPermission +) @extend_schema(tags=["quality"]) @@ -37,9 +39,6 @@ list=extend_schema( summary='Method returns a paginated list of annotation conflicts', parameters=[ - # TODO: add support for this - # *ORGANIZATION_OPEN_API_PARAMETERS, - # These filters are implemented differently from others OpenApiParameter('report_id', type=OpenApiTypes.INT, description='A simple equality filter for report id'), @@ -49,12 +48,23 @@ }), ) class QualityConflictsViewSet(viewsets.GenericViewSet, mixins.ListModelMixin): - queryset = AnnotationConflict.objects.prefetch_related('report', 'annotation_ids').all() + queryset = AnnotationConflict.objects.select_related( + 'report', + 'report__parent', + 'report__job', + 'report__job__segment', + 'report__job__segment__task', + 'report__job__segment__task__organization', + 'report__task', + 'report__task__organization', + ).prefetch_related( + 'annotation_ids', + ).all() - # NOTE: This filter works incorrectly for this view - # it requires task__organization OR project__organization check. - # Thus, we rely on permission-based filtering - iam_organization_field = None + iam_organization_field = [ + 'report__job__segment__task__organization', + 'report__task__organization', + ] search_fields = [] filter_fields = list(search_fields) + [ @@ -66,7 +76,7 @@ class QualityConflictsViewSet(viewsets.GenericViewSet, mixins.ListModelMixin): 'task_id': 'report__job__segment__task__id' # task reports do not contain own conflicts } ordering_fields = list(filter_fields) - ordering = 'id' + ordering = '-id' serializer_class = AnnotationConflictSerializer def get_queryset(self): @@ -76,19 +86,21 @@ def get_queryset(self): self.check_permissions(self.request) if report_id := self.request.query_params.get('report_id', None): + # NOTE: This filter is too complex to be implemented by other means, + # it has a dependency on the report type try: - report = QualityReport.objects.prefetch_related('parent').get(id=report_id) + report = QualityReport.objects.get(id=report_id) except QualityReport.DoesNotExist as ex: raise NotFound(f"Report {report_id} does not exist") from ex self.check_object_permissions(self.request, report) if report.target == QualityReportTarget.TASK: - queryset = self.queryset.filter( + queryset = queryset.filter( Q(report=report) | Q(report__parent=report) ).distinct() elif report.target == QualityReportTarget.JOB: - queryset = self.queryset.filter(report=report) + queryset = queryset.filter(report=report) else: assert False else: @@ -109,9 +121,6 @@ def get_queryset(self): list=extend_schema( summary='Method returns a paginated list of quality reports', parameters=[ - # TODO: add support for this - # *ORGANIZATION_OPEN_API_PARAMETERS, - # These filters are implemented differently from others OpenApiParameter('task_id', type=OpenApiTypes.INT, description='A simple equality filter for task id'), @@ -129,14 +138,12 @@ class QualityReportViewSet(viewsets.GenericViewSet, 'job', 'job__segment', 'job__segment__task', + 'job__segment__task__organization', 'task', - 'task__project', + 'task__organization', ).all() - # NOTE: This filter works incorrectly for this view - # it requires task__organization OR project__organization check. - # Thus, we rely on permission-based filtering - iam_organization_field = None + iam_organization_field = ['job__segment__task__organization', 'task__organization'] search_fields = [] filter_fields = list(search_fields) + [ @@ -292,10 +299,6 @@ def data(self, request, pk): @extend_schema_view( list=extend_schema( summary='Method returns a paginated list of quality settings', - parameters=[ - # TODO: add support for this - # *ORGANIZATION_OPEN_API_PARAMETERS, - ], responses={ '200': QualitySettingsSerializer(many=True), }), diff --git a/cvat/schema.yml b/cvat/schema.yml index 20174a51f3b4..71730030a0d3 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -3364,6 +3364,11 @@ paths: operationId: quality_list_conflicts summary: Method returns a paginated list of annotation conflicts parameters: + - name: X-Organization + in: header + description: Organization unique slug + schema: + type: string - name: filter required: false in: query @@ -3389,6 +3394,16 @@ paths: description: A simple equality filter for the job_id field schema: type: integer + - name: org + in: query + description: Organization unique slug + schema: + type: string + - name: org_id + in: query + description: Organization identifier + schema: + type: integer - name: page required: false in: query @@ -3458,6 +3473,11 @@ paths: operationId: quality_list_reports summary: Method returns a paginated list of quality reports parameters: + - name: X-Organization + in: header + description: Organization unique slug + schema: + type: string - name: filter required: false in: query @@ -3470,6 +3490,16 @@ paths: description: A simple equality filter for the job_id field schema: type: integer + - name: org + in: query + description: Organization unique slug + schema: + type: string + - name: org_id + in: query + description: Organization identifier + schema: + type: integer - name: page required: false in: query diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py index ca2d3d09a63d..23b88c17169a 100644 --- a/tests/python/rest_api/test_quality_control.py +++ b/tests/python/rest_api/test_quality_control.py @@ -428,10 +428,11 @@ def test_can_create_report(self, admin_user, jobs): class TestSimpleQualityReportsFilters(CollectionSimpleFilterTestBase): @pytest.fixture(autouse=True) - def setup(self, restore_db_per_class, admin_user, quality_reports, jobs): + def setup(self, restore_db_per_class, admin_user, quality_reports, jobs, tasks): self.user = admin_user self.samples = quality_reports self.job_samples = jobs + self.task_samples = tasks def _get_endpoint(self, api_client: ApiClient) -> Endpoint: return api_client.quality_api.list_reports_endpoint @@ -447,12 +448,28 @@ def _get_field_samples(self, field: str) -> Tuple[Any, List[Dict[str, Any]]]: if self._get_field(r, self._map_field("job_id")) in task_job_ids ] return task_id, task_reports + elif field == "org_id": + org_id = self.task_samples[ + next( + s + for s in self.samples + if s["task_id"] and self.task_samples[s["task_id"]]["organization"] + )["task_id"] + ]["organization"] + return org_id, [ + s + for s in self.samples + if s["job_id"] + and self.job_samples[s["job_id"]]["organization"] == org_id + or s["task_id"] + and self.task_samples[s["task_id"]]["organization"] == org_id + ] else: return super()._get_field_samples(field) @pytest.mark.parametrize( "field", - ("task_id", "job_id", "parent_id", "target"), + ("task_id", "job_id", "parent_id", "target", "org_id"), ) def test_can_use_simple_filter_for_object_list(self, field): return super().test_can_use_simple_filter_for_object_list(field) @@ -578,10 +595,14 @@ def test_user_list_conflicts_in_org_task( class TestSimpleQualityConflictsFilters(CollectionSimpleFilterTestBase): @pytest.fixture(autouse=True) - def setup(self, restore_db_per_class, admin_user, quality_conflicts, quality_reports): + def setup( + self, restore_db_per_class, admin_user, quality_conflicts, quality_reports, jobs, tasks + ): self.user = admin_user self.samples = quality_conflicts self.report_samples = quality_reports + self.task_samples = tasks + self.job_samples = jobs def _get_endpoint(self, api_client: ApiClient) -> Endpoint: return api_client.quality_api.list_conflicts_endpoint @@ -609,12 +630,29 @@ def _get_field_samples(self, field: str) -> Tuple[Any, List[Dict[str, Any]]]: if self._get_field(c, self._map_field("report_id")) in task_reports ] return task_report["task_id"], task_conflicts + elif field == "org_id": + org_id = self.task_samples[ + next( + s + for s in self.report_samples + if s["task_id"] and self.task_samples[s["task_id"]]["organization"] + )["task_id"] + ]["organization"] + report_ids = set( + s["id"] + for s in self.report_samples + if s["job_id"] + and self.job_samples[s["job_id"]]["organization"] == org_id + or s["task_id"] + and self.task_samples[s["task_id"]]["organization"] == org_id + ) + return org_id, [c for c in self.samples if c["report_id"] in report_ids] else: return super()._get_field_samples(field) @pytest.mark.parametrize( "field", - ("report_id", "importance", "type", "frame", "job_id", "task_id"), + ("report_id", "importance", "type", "frame", "job_id", "task_id", "org_id"), ) def test_can_use_simple_filter_for_object_list(self, field): return super().test_can_use_simple_filter_for_object_list(field) diff --git a/tests/python/shared/assets/quality_conflicts.json b/tests/python/shared/assets/quality_conflicts.json index 3f4bd5fbe82d..c116140f511f 100644 --- a/tests/python/shared/assets/quality_conflicts.json +++ b/tests/python/shared/assets/quality_conflicts.json @@ -3,214 +3,323 @@ "next": null, "previous": null, "results": [ + { + "annotation_ids": [ + { + "job_id": 28, + "obj_id": 129, + "type": "polyline" + } + ], + "frame": 1, + "id": 37, + "importance": "error", + "report_id": 2, + "type": "missing_annotation" + }, + { + "annotation_ids": [ + { + "job_id": 28, + "obj_id": 127, + "type": "mask" + } + ], + "frame": 1, + "id": 36, + "importance": "error", + "report_id": 2, + "type": "missing_annotation" + }, + { + "annotation_ids": [ + { + "job_id": 28, + "obj_id": 125, + "type": "ellipse" + } + ], + "frame": 1, + "id": 35, + "importance": "error", + "report_id": 2, + "type": "missing_annotation" + }, + { + "annotation_ids": [ + { + "job_id": 28, + "obj_id": 124, + "type": "polygon" + } + ], + "frame": 1, + "id": 34, + "importance": "error", + "report_id": 2, + "type": "missing_annotation" + }, + { + "annotation_ids": [ + { + "job_id": 28, + "obj_id": 128, + "type": "points" + } + ], + "frame": 1, + "id": 33, + "importance": "error", + "report_id": 2, + "type": "missing_annotation" + }, + { + "annotation_ids": [ + { + "job_id": 28, + "obj_id": 130, + "type": "rectangle" + } + ], + "frame": 1, + "id": 32, + "importance": "error", + "report_id": 2, + "type": "missing_annotation" + }, { "annotation_ids": [ { "job_id": 27, - "obj_id": 65, + "obj_id": 77, "type": "rectangle" }, { "job_id": 28, - "obj_id": 101, + "obj_id": 114, "type": "rectangle" } ], "frame": 0, - "id": 1, + "id": 31, "importance": "warning", "report_id": 2, - "type": "low_overlap" + "type": "mismatching_groups" }, { "annotation_ids": [ { "job_id": 27, - "obj_id": 91, + "obj_id": 80, "type": "rectangle" }, { "job_id": 28, - "obj_id": 118, + "obj_id": 111, "type": "rectangle" } ], "frame": 0, - "id": 2, + "id": 30, "importance": "warning", "report_id": 2, - "type": "low_overlap" + "type": "mismatching_groups" }, { "annotation_ids": [ { "job_id": 27, - "obj_id": 88, - "type": "points" + "obj_id": 87, + "type": "rectangle" }, { "job_id": 28, - "obj_id": 102, - "type": "points" + "obj_id": 106, + "type": "rectangle" } ], "frame": 0, - "id": 3, + "id": 29, "importance": "warning", "report_id": 2, - "type": "low_overlap" + "type": "mismatching_groups" }, { "annotation_ids": [ { "job_id": 27, - "obj_id": 68, - "type": "polygon" + "obj_id": 83, + "type": "rectangle" }, { "job_id": 28, - "obj_id": 98, - "type": "polygon" + "obj_id": 105, + "type": "rectangle" } ], "frame": 0, - "id": 4, + "id": 28, "importance": "warning", "report_id": 2, - "type": "low_overlap" + "type": "mismatching_groups" }, { "annotation_ids": [ { "job_id": 27, - "obj_id": 67, - "type": "polyline" + "obj_id": 81, + "type": "rectangle" }, { "job_id": 28, - "obj_id": 99, - "type": "polyline" + "obj_id": 104, + "type": "rectangle" } ], "frame": 0, - "id": 5, + "id": 27, "importance": "warning", "report_id": 2, - "type": "low_overlap" + "type": "mismatching_groups" }, { "annotation_ids": [ { "job_id": 27, - "obj_id": 92, - "type": "points" + "obj_id": 82, + "type": "rectangle" }, { "job_id": 28, - "obj_id": 119, - "type": "points" + "obj_id": 103, + "type": "rectangle" } ], "frame": 0, - "id": 6, + "id": 26, "importance": "warning", "report_id": 2, - "type": "low_overlap" + "type": "mismatching_groups" }, { "annotation_ids": [ + { + "job_id": 27, + "obj_id": 65, + "type": "rectangle" + }, { "job_id": 28, - "obj_id": 107, + "obj_id": 101, "type": "rectangle" } ], "frame": 0, - "id": 7, - "importance": "error", + "id": 25, + "importance": "warning", "report_id": 2, - "type": "missing_annotation" + "type": "mismatching_attributes" }, { "annotation_ids": [ { - "job_id": 28, - "obj_id": 121, - "type": "points" + "job_id": 27, + "obj_id": 69, + "type": "mask" } ], "frame": 0, - "id": 8, - "importance": "error", + "id": 24, + "importance": "warning", "report_id": 2, - "type": "missing_annotation" + "type": "covered_annotation" }, { "annotation_ids": [ + { + "job_id": 27, + "obj_id": 67, + "type": "polyline" + }, { "job_id": 28, - "obj_id": 122, - "type": "points" + "obj_id": 99, + "type": "polyline" } ], "frame": 0, - "id": 9, - "importance": "error", + "id": 23, + "importance": "warning", "report_id": 2, - "type": "missing_annotation" + "type": "mismatching_direction" }, { "annotation_ids": [ { "job_id": 27, - "obj_id": 70, - "type": "rectangle" + "obj_id": 69, + "type": "mask" + }, + { + "job_id": 28, + "obj_id": 97, + "type": "polygon" } ], "frame": 0, - "id": 10, + "id": 22, "importance": "error", "report_id": 2, - "type": "extra_annotation" + "type": "mismatching_label" }, { "annotation_ids": [ { "job_id": 27, - "obj_id": 76, - "type": "rectangle" + "obj_id": 92, + "type": "points" + }, + { + "job_id": 28, + "obj_id": 119, + "type": "points" } ], "frame": 0, - "id": 11, + "id": 21, "importance": "error", "report_id": 2, - "type": "extra_annotation" + "type": "mismatching_label" }, { "annotation_ids": [ { "job_id": 27, - "obj_id": 93, + "obj_id": 89, + "type": "points" + }, + { + "job_id": 28, + "obj_id": 123, "type": "points" } ], "frame": 0, - "id": 12, + "id": 20, "importance": "error", "report_id": 2, - "type": "extra_annotation" + "type": "mismatching_label" }, { "annotation_ids": [ { "job_id": 27, - "obj_id": 74, - "type": "polygon" + "obj_id": 94, + "type": "polyline" } ], "frame": 0, - "id": 13, + "id": 19, "importance": "error", "report_id": 2, "type": "extra_annotation" @@ -219,12 +328,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 95, - "type": "polygon" + "obj_id": 66, + "type": "polyline" } ], "frame": 0, - "id": 14, + "id": 18, "importance": "error", "report_id": 2, "type": "extra_annotation" @@ -233,12 +342,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 73, - "type": "polygon" + "obj_id": 64, + "type": "polyline" } ], "frame": 0, - "id": 15, + "id": 17, "importance": "error", "report_id": 2, "type": "extra_annotation" @@ -261,12 +370,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 64, - "type": "polyline" + "obj_id": 73, + "type": "polygon" } ], "frame": 0, - "id": 17, + "id": 15, "importance": "error", "report_id": 2, "type": "extra_annotation" @@ -275,12 +384,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 66, - "type": "polyline" + "obj_id": 95, + "type": "polygon" } ], "frame": 0, - "id": 18, + "id": 14, "importance": "error", "report_id": 2, "type": "extra_annotation" @@ -289,12 +398,12 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 94, - "type": "polyline" + "obj_id": 74, + "type": "polygon" } ], "frame": 0, - "id": 19, + "id": 13, "importance": "error", "report_id": 2, "type": "extra_annotation" @@ -303,308 +412,199 @@ "annotation_ids": [ { "job_id": 27, - "obj_id": 89, - "type": "points" - }, - { - "job_id": 28, - "obj_id": 123, + "obj_id": 93, "type": "points" } ], "frame": 0, - "id": 20, + "id": 12, "importance": "error", "report_id": 2, - "type": "mismatching_label" + "type": "extra_annotation" }, { "annotation_ids": [ { "job_id": 27, - "obj_id": 92, - "type": "points" - }, - { - "job_id": 28, - "obj_id": 119, - "type": "points" + "obj_id": 76, + "type": "rectangle" } ], "frame": 0, - "id": 21, + "id": 11, "importance": "error", "report_id": 2, - "type": "mismatching_label" + "type": "extra_annotation" }, { "annotation_ids": [ { "job_id": 27, - "obj_id": 69, - "type": "mask" - }, - { - "job_id": 28, - "obj_id": 97, - "type": "polygon" + "obj_id": 70, + "type": "rectangle" } ], "frame": 0, - "id": 22, + "id": 10, "importance": "error", "report_id": 2, - "type": "mismatching_label" + "type": "extra_annotation" }, { "annotation_ids": [ - { - "job_id": 27, - "obj_id": 67, - "type": "polyline" - }, { "job_id": 28, - "obj_id": 99, - "type": "polyline" + "obj_id": 122, + "type": "points" } ], "frame": 0, - "id": 23, - "importance": "warning", + "id": 9, + "importance": "error", "report_id": 2, - "type": "mismatching_direction" + "type": "missing_annotation" }, { "annotation_ids": [ { - "job_id": 27, - "obj_id": 69, - "type": "mask" + "job_id": 28, + "obj_id": 121, + "type": "points" } ], "frame": 0, - "id": 24, - "importance": "warning", + "id": 8, + "importance": "error", "report_id": 2, - "type": "covered_annotation" + "type": "missing_annotation" }, { "annotation_ids": [ - { - "job_id": 27, - "obj_id": 65, - "type": "rectangle" - }, { "job_id": 28, - "obj_id": 101, + "obj_id": 107, "type": "rectangle" } ], "frame": 0, - "id": 25, - "importance": "warning", + "id": 7, + "importance": "error", "report_id": 2, - "type": "mismatching_attributes" + "type": "missing_annotation" }, { "annotation_ids": [ { "job_id": 27, - "obj_id": 82, - "type": "rectangle" + "obj_id": 92, + "type": "points" }, { "job_id": 28, - "obj_id": 103, - "type": "rectangle" + "obj_id": 119, + "type": "points" } ], "frame": 0, - "id": 26, + "id": 6, "importance": "warning", "report_id": 2, - "type": "mismatching_groups" + "type": "low_overlap" }, { "annotation_ids": [ { "job_id": 27, - "obj_id": 81, - "type": "rectangle" + "obj_id": 67, + "type": "polyline" }, { "job_id": 28, - "obj_id": 104, - "type": "rectangle" + "obj_id": 99, + "type": "polyline" } ], "frame": 0, - "id": 27, + "id": 5, "importance": "warning", "report_id": 2, - "type": "mismatching_groups" + "type": "low_overlap" }, { "annotation_ids": [ { "job_id": 27, - "obj_id": 83, - "type": "rectangle" + "obj_id": 68, + "type": "polygon" }, { "job_id": 28, - "obj_id": 105, - "type": "rectangle" + "obj_id": 98, + "type": "polygon" } ], "frame": 0, - "id": 28, + "id": 4, "importance": "warning", "report_id": 2, - "type": "mismatching_groups" + "type": "low_overlap" }, { "annotation_ids": [ { "job_id": 27, - "obj_id": 87, - "type": "rectangle" + "obj_id": 88, + "type": "points" }, { "job_id": 28, - "obj_id": 106, - "type": "rectangle" + "obj_id": 102, + "type": "points" } ], "frame": 0, - "id": 29, + "id": 3, "importance": "warning", "report_id": 2, - "type": "mismatching_groups" + "type": "low_overlap" }, { "annotation_ids": [ { "job_id": 27, - "obj_id": 80, + "obj_id": 91, "type": "rectangle" }, { "job_id": 28, - "obj_id": 111, + "obj_id": 118, "type": "rectangle" } ], "frame": 0, - "id": 30, + "id": 2, "importance": "warning", "report_id": 2, - "type": "mismatching_groups" + "type": "low_overlap" }, { "annotation_ids": [ { "job_id": 27, - "obj_id": 77, + "obj_id": 65, "type": "rectangle" }, { "job_id": 28, - "obj_id": 114, + "obj_id": 101, "type": "rectangle" } ], "frame": 0, - "id": 31, + "id": 1, "importance": "warning", "report_id": 2, - "type": "mismatching_groups" - }, - { - "annotation_ids": [ - { - "job_id": 28, - "obj_id": 130, - "type": "rectangle" - } - ], - "frame": 1, - "id": 32, - "importance": "error", - "report_id": 2, - "type": "missing_annotation" - }, - { - "annotation_ids": [ - { - "job_id": 28, - "obj_id": 128, - "type": "points" - } - ], - "frame": 1, - "id": 33, - "importance": "error", - "report_id": 2, - "type": "missing_annotation" - }, - { - "annotation_ids": [ - { - "job_id": 28, - "obj_id": 124, - "type": "polygon" - } - ], - "frame": 1, - "id": 34, - "importance": "error", - "report_id": 2, - "type": "missing_annotation" - }, - { - "annotation_ids": [ - { - "job_id": 28, - "obj_id": 125, - "type": "ellipse" - } - ], - "frame": 1, - "id": 35, - "importance": "error", - "report_id": 2, - "type": "missing_annotation" - }, - { - "annotation_ids": [ - { - "job_id": 28, - "obj_id": 127, - "type": "mask" - } - ], - "frame": 1, - "id": 36, - "importance": "error", - "report_id": 2, - "type": "missing_annotation" - }, - { - "annotation_ids": [ - { - "job_id": 28, - "obj_id": 129, - "type": "polyline" - } - ], - "frame": 1, - "id": 37, - "importance": "error", - "report_id": 2, - "type": "missing_annotation" + "type": "low_overlap" } ] } \ No newline at end of file From 0a291a55cd55b37ea8fd4c5f28183b81d29ddf0b Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 1 Jun 2023 17:21:00 +0300 Subject: [PATCH 214/257] Implement asgi server debugging --- cvat/asgi.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/cvat/asgi.py b/cvat/asgi.py index 715f9cf6ac71..dda3ac5ac4ec 100644 --- a/cvat/asgi.py +++ b/cvat/asgi.py @@ -14,8 +14,28 @@ import os from django.core.asgi import get_asgi_application +from django.core.handlers.asgi import ASGIHandler + +import cvat.utils.remote_debugger as debug os.environ.setdefault("DJANGO_SETTINGS_MODULE", "cvat.settings.{}" \ .format(os.environ.get("DJANGO_CONFIGURATION", "development"))) application = get_asgi_application() + + +if debug.is_debugging_enabled(): + class DebuggerApp(ASGIHandler): + """ + Support for VS code debugger + """ + + def __init__(self) -> None: + super().__init__() + self.__debugger = debug.RemoteDebugger() + + async def handle(self, *args, **kwargs): + self.__debugger.attach_current_thread() + return await super().handle(*args, **kwargs) + + application = DebuggerApp() From 3416e878df9d2a7f7dd5f2c8361394720d8235da Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 1 Jun 2023 17:27:36 +0300 Subject: [PATCH 215/257] Clear data cache --- .../shared/assets/cvat_db/cvat_data.tar.bz2 | Bin 928875 -> 1024646 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/python/shared/assets/cvat_db/cvat_data.tar.bz2 b/tests/python/shared/assets/cvat_db/cvat_data.tar.bz2 index 0cceac56470b2220b17ed9d7129cac17a44270fc..dbf7dffb50f69e264d1fd448d95554be33eb9510 100644 GIT binary patch literal 1024646 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

{hJCnMUmvnjdsnG^t90S>7^; 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ÐV-uWKK?)! zcN2C!+H4sj&Bxjb^F?X_M953dU{R-;1rVCdmP&ep%moWz;4Y=POGB-!I^t!hI9vm<%yq60FaSiYqXb}SQrxw95_#7FDaD(&U|>yv!38n8 z!R?EHI14?;{_5y9V9S8>8iEe^c#~`gFhE3s`;3`8db(lY)T`G35zct^H;spsJ2!0# z-<7!;1{Eu7C^s5Ud)6u6iK7!%YIeGi94q(>Fr9`PH?4!XRTREi0wzRz4(TxRuQXk2 zT4z(dnElZPC7+PWoRA8Kv;af{QUn#i z61~;Ejbq{cDi>cDZUy#UAeB&q)Tu#QvLWL{~IjjSI%rYL;W@QWq9?rbhQ`a!8r|Fk7i9U6_kg49^Tb*1$AO55>E*M`h z_b_Qc*AYmWdDOaG^1WM{X_qT=KiW;%mac5~-BDSYApc^l_kD-zuBKyxdYF1A8c`Ve zHBnv%SKQxcuc*vdN8I%SS@?OJD}5~n9zV1$7rnsZ)|LgwZ+E|uLO*-&R&49^&3|N& zGy9F;QUaF$E93G?i_{NJ*Dfp=dqNWaZ#VHRJ9f=KK2R5;m{8vCL90imXwGDZW*19Y znhD%aadyqja1|&vRmiaLh*ZQchvMpPrc}9?PLogN_GN8j>_- z*mhOef8{1;?HW_Wt`eD~cC+#l_ZKMq#Vh7zydU9$?_M0;DOnP}k&(0Z`pl+0y#%eW z7^Jf9-6QB$vJ<;b-wDgcr+%sP~lEP&A+IcYB;H`WDUH8_VTkjQVnhd&J)RHW z*J;vo-rQ#28Eh@9nT{)Dp1Mp&L38$(_O1eRn-uwte;2*%AxJy8Ul~Qiqiz??yqwSH zlTTlmHdP+kW|@xrbM)cbHP3Nl?{11k^L@bm_S&X5X}A$NEF6@Z)_*)bT zI!oGBIUSz%+Z|Q4=J%;mgxBieJ$m) zJfy_im{-(&P9HcH`EcN>p;RzfUn+ikiwh{z=GyBkm-cVVkj4NhVhl!H$~pFvCS*-k zKBxCrHZHtM=Dw%_%j|dbTde?oYhQnIcjwVNxUX?F5mu5aMX<3_~ob1=~ z1>S2Nx-emaARLxob)0&> zH&sHDY7Y%xmjDw6<7MQ`UW%lFK(d1=AvAS$Rt2@!&2l=mC`mUDC^d(-R{Pr$NGMaY zHAJ%XL9O2lT`Y4?s3Wz=Lj{@jjh9H&H?ulIo_eBHGig_XmZ$-nD)^UNjV& zL?$*WS6f8FC_ItTF)!>k-#MSqO|{_#4Ni{@)#v)O?-!|6wV+|E5b$=vo`bx>y102?CA| zcs|P;bGh}UOwVDKBanB6i3YB0f7VME&K~%?v8a3GN-Ps3hgi|BgqOZ7X3diPLZBlc zfA(OF_bP=mp5qx=43>95KpxVwMw7gAzVh1&?dB8y!M*CO)|34x;3f0uy|+_CX%w}; zm+m0$P?RI|V^69MvW`&yb31+FhD%LKC%;>_hIdiQQOag)DKBe4;Z*nH^UfgxpDQyK z-tGbu3Gfh5^8b!B($#@9mztBU3?$c{H9fjGbJF!SN%xD*6{X{d%d5$~v=@Y%A}{Q^ z`d_X8Amw;?>thvy$8Q~E{vVW>36vQpc08S zh~=(#bB>CcX04l`D{-$_cI`OE&CQh+F#6dziTuXa2nJ%z@Wn#^#f?lS@h2tn;o_z7 zaas!Sa_Umgt_8fhr6NyG`}DIfw%<5rif}H?7Mr-RBxFWOL8udQ>Z278({qU}99@gQ zE5yDh<~O^1Rz8d@_aH4RqT>Vc1k|CVlm(om?vT&1|38F%1za4@lkeg#!65{9cXvY2 zMRt(@!QEYg6D&Bv-C2T5a1Fto;7)LN_qX}oy}SS2yZ5>3nVy>N>HYLp*YsG`w;VP= z4Agif%eN4U&l7VFHAXKz?hWJ~`~nIGU<*Aj z$^X$rdC!1iZDW8aPM9)}{z&hvwcTqyW#c=m5;>{~c0EF4&WIGvC|aq^YlYy%pgx+ zke%<>+?6^mg(0_?cJbWQX8%6cQ7)Rc(wp zN;=`p`I=?tp=PF1`zl-SY2u0kIg=3_b87@5>#&8d-?vrq zF0p6dUT7n-3QcQYp74^}<&=unL`R5`bcx}`NzxQ8J(xBLliCiWdi83!K1I3!?S{3v z74E9yAI_ce(x155OA`7~B^x9I3<89Gxl|gh8sUR5Cvo5R(;}_4)lQ8wX8&#najB}S zI6e`khbb2*^wt+p*6d=CTl9WzEsxr^Q&7KH>>R7l`Isva^jlmYWGM>@eBZqk+`4lQ zwoeYFqZ+km=kHb#_c*WiHu~N>OW0zKWtbW*{6248?(7L(2A}2UQ>zFc0>;3F| zVC@GE=X?CD$sdQ_MBk)bzT1dncA}&lO0Rm#YdH>xLpXf8W_OPN&fvrRB|6!k3uZjHSQSwKaw0UDC|J~+nFS8del(eWs$$S-PE zbGQt4cARf4%wFbQa6|SXw^#fs+rW<}dlKDR^Sy=i?+bL*=<5^!blz3v<-^_5YO@`Z zYi9`nq3 zXp@dkMmE~=P19QUI8Jex@aD>6lQM7sJIBNaoOLKn9H}`sO3R`(+S2AFP$ z9Y;EqB3@Dw7MYg*Ak{wXG%Uj`I3Ho&69-5BSO{u4Tfm-PJVY9MeeTqDdV43-7_0D6 zq+f7u9Bs?hrE8y3uU?SP_QhnZ(>l~8IxnfWSzfH;t2q;4HEPZlL0cREp}y!0=_hI& zrt;eQdab4N(uvBK{Kk)4*E`ajYX>u%oGevXZ*@)%$H4bTd-lwWKT_x`Y4ZJPm7ori zKdKb>Q>U)B@9vp(eK-)2zfz!1AUO|RthR#cF&?I6dghrcL$qQ?z`R{welQjFN7|>9 zzDP8FLnCf1Q}fGC9-n{s+44S9KfqSb;FHl=ekdrz6-b4utunTr^Esa*^7fowubu zGj5dF(ZBQ=%G#~{=7=<&_=oRLhuOH6UYoZUQi(fG=d@IMCVZ*uz7F_jc9tSVv%pu4 zw~RI4Yu6`CaP`x5@%;s~Ao=3bx83kgVXyyA5%YHNk%p47{iea3d)frpbt?JPPM?~| zYlC?5IPPisX@04Fwq;C1CtIHkj;F@K=h5>@C1=%3}&ZPvpr^(ou#DqhcvCXPz6^<-yHTrReviKB(#+SuMdado+0vlutC zu+=Pg(XQExk*;@CmTj%i+Ji#;;Queggn&M2Ke#iOua5vpw!$@|17! ziX*l~^jR{Lj zk~H{oy{rQs8Tii!Yz$IsPvpn?c_tJSe_(!Ay%GuAmlZpmpMK`zJLTULK>5jD+}dD{ zMh`#b^ltsTOYPwg)^oMH<>F#>Q>VC^CFK}@xP}#ztHseM9yR!Q1qN)n@1Iq|agKv= zD2Uli0qj|!Z9x2~{Z+Lujj#ZfMolOxU?xKD$dJ5u_Q!=eAJ&z~hD-JR%&Kus6ZX&O zpPo(DJ{VlDp7_1+c`Um8kp$h|w132yX;J=s`<4YwaLvcZy;Dj%P#(|*a1z~BF*h>) zR??Dwewf@arWoH&9+kD+7sX2eh*Z(B5s_ir;bE+0tSQM{aQP^IeJ+siGV|;$I~=zcJZ2-m2cZa7gp76z;@QS({{| zqu8*@{}kh-zEP43{TzcY%7$>q>1JK7Fl*u7+iJRB+p=7Vgwr&7E4lA@o%Yk%A$8e= ztnhO4jPhyk-rHee{zh}HJwwd8du5@rA5)nA=rQMcUt`iDbVwk|Kijstm4&U7ZVor; zfrQX3vH1y;oV_<@sp$Cr<-TBjW5b7^_UP)+_gdd&X#ae=_w&ho>#t)p-$i2&0mu=1 zOV2ftu#ehBb)`UT$g>dsrHe`teREvez{HVQIp=SKimOf+ma8Tb6_7A zZl-Q;#+!p4QEubz%Z_%uGxe8*EB(z0wbRp}wz(u4$F;uEl_8!ElATss`-8;^{zJ-2 zD6?FmSXw5fFP`_$%;xarQ%&c zQ>)pN7A8$U_2pgZ}zFNBj}5Q5xv2!34PNeBG~r53d>@JLmcz z^y^y9E&DKn_7E9QzvTx2PK+D8-Uc9Lt$qcZe%9U>b}wi=80WaRSuXS%!7lr>vKqc_ zqQUC6<(@oC#n7gettjTkFZ7l*x*aU>dc{2!BeR$QJkhymZZIr{QTmdC(9+~+e``Zy z_U;1HgD`OWs@}e#Qq!4e)>cP@BS9p}*gv6FUDYNL7^=gqUC-3yEy4gQMAMOv* z_H9N(IofyW(^UPcdk+|jc&MLuE|Dtc;Q5XJ@8@!o<5?>9H#S4<1GX2HVDTb{a&hZ7 zk;S%#in9H^8sZ)oURUqlC3G=NKAFxIHR_bC=|x8@&SVDwB>ZRqcz+mtx|Ix?kFPvB zTA!mg@qYS9(4b}#^g*4IS)Y#lUW1y=KN`#wWk{#kLZcRs4(a|_SdR5d(fhscT}{?O zYkcIjlaKnak*c;VzH=vvfDCW3_7YQJR#B7$dS9j?Ppbivx6)9f)ljIwQ)g7j*R0hr zgA|s|#!rGudlHkZ6m^oQCN+R~8m6U_MNCCjIQ3;9P@>xVdJRS^8})jH+IprLU7eZu z$)VZOL=CeN%?c)}dd&(Aoq9$Ec{HZk@AB3~yiBwTy4uznYNmzpI-ns9YmhOmLK#p; zv$RZSQfjuyA7-Vsv@}v7QuBLhd}0J`k&cE+eb$stk{XlxjHW_-VUqQ1vZ97&JyY$+ zBI_ZYE_iGSiV*uOgBsy4<=q_t8kxlT=kk97I0J~NkYDRbdO8*^jh{kQ8@EpGXivn5Hr2{EwI_2KA zY49g77e@I@h7@Hxj@zBm(YDw@1oPX>q$c2%L1tnbc#d##4~w; zp@LCu>Ub%UoIIUj=UP<*JqZXK;#(<5*QI zb?91~>z{P9!`lmCmR{VK?R4#&47W8d#p9OggsgW5k99@Bn6(9ugfDMaAbwKABzj}Y z^g<{U(T+P^UHtLAO%i9@tM(}KxQ^N*b`V5v?%gj1F2Q%-onr2Vaz4=Cc_uY#1HHEn zxvOeRgOJzoqLs`Jm<37KpPE1T@s^|7dJ0({w>HMa7z4UnxbM#!3Btl>fuw@4L~!UZ zp@0#jolfu}u=!=`YpjPZAxzNq2VMW>(k*b`u1WdX+tFyyNGRNb=xWHb`avTo{_;5P znvn1~K}p!(0cMvtbhvCuTAdi?6Z_EG?KP>MxOCi-m;}w_Kc2b$lYt4t{uuYja!0=W zW6855_6lWD55xU|Cib`U3!4rCc9-3=Ra$tcgSQ;wxH%P&p@AWSVh@kGVc{M&7okxeeDH+gLee46|?+9UI&6Jpy@(JDeSo z;C73kMh$M}d?N11283nN3xN|*JJ+jx08^D}FtP-CHtf>a%0V+uEps>CtV%}C_)tX$_<>#)bC-sd*V zud{{YVodra4g5BJtDAgF;#Be59)_X1{-H6#)2z%j(Xgy{%4 z0eAoa6NuGlxd50Y0D!*;v@&W~G*P7RCF`K}w&@h_$DWsq-HmI0paKJ}0#5K(R`W!( zY9uZ5<08!1FIoldLADwIrV^=DveHrpfCwq|%<=)~768+-tDX;iaYB58x@;=UZ7VY` zy67krF)CdnB`@tQh}bY)I+%?(qy9cmP8FX?dI_WkPsLQFJz75teL7eBL)Z$ik-(jY zlR!%>LYTjvR>LdBNn+HHD=jTeWWbYAzkORuRa(lFq@kWyBq0Hl3l+!T=w5&{E@L<# z55Ni%N{vin^%Vm#N-}}s7l|Q-Rlx_kbZhg}57gK^7yt}7926!g008+ngzgPQDHXs2 z0EDJnrUC%a1tmNIpoEe@`86B&11u+rVQL!DhYz@PALyiUae=(3#Q{^-5>!C--;nHF zL?8e$z;eQp1OTuEAV$L}1pr96Fko^4e}51IS_qR19UWv11-UL>V7vNS{rlIO(vky} z*U8chjDzq4aqEP>?3_}FaROhSC{L6M7+74SG-L$1$|)`07iHW5%hx%~0Kgo9BB9fx zqTmlXrSu0@qQFo{adF83Fq|(v?fU{>aG$&=-&d=H&u<{AKn)uB0ZY6E9$;=dur6wP zFhOb3Dw>3tD+5U7<&|p1g~9khf~A(1B$`V-BdTJif(|ytkZ-5s;WC~2@FDS;ONp00 z@xlwp7nlc;#Ne2ovYZT508w*ENhBx%(!DIzpMWZKmcLc#OSS?AONtW|{7UY5`O+$S-S8@K3}*V4^uS<2`uD z%i&sHU{RyH)@qb!msayJ!!6y1&}g#RpC0QG>*ld)?h#A2FU3N-z4?8&O%2BN?}nGd z;S3uGw>4QK?D#?DQ890Vz6l(KaZKde^r7UIni}~)$NccVtMpH=#0j0e5f>ct-}?*S zHHt^fei8$%eeeIHkoQsZ$#LNkFVqTsT$&{vk%Z2yBAslTkyUOJc$n#E&&XhL!iRgFS(3a z)Od{+4|J*EEysx9r;m6Ue9UGkLyxCg1D-M0KQB9Kzd|XqkpZfy00mHD5u<{{U-thc z3>%$)4*Gv<{{JP&eNa?G?EioL|5k(dza8*D)f1=vrOdc8agQ!Ei6GpzUsVnvEBj9V z$#YT94?D+=E zt^>E?%)?aKm(>=!gOa-`yN`2VcLx$-;COpQQiHJm^0;tcd=gQqWpRc@0ktqO*@f>$phm^Ke^O$#a`5VIRv@YmtCG#+Ffc^HkO;!tBP$Hy;N-eEOAbK26XO z)eCC23fga=&v|}!dEXm**GaI+Sy`h%Iorq?M?PD0q3c*ng_`La5k;acn6B!B zR53E`w>|61+Zu&^5%zHlw;RmsC=bp9qJ~i7wt!85FR360&4Hs0G8do(+9 zg?W!`d^q~NeQ`lHK6CQ2LW1!_>q@$EMD7I+0=pR8neB`y1y<%Xc46CIpf}wtgIzkT zp2maS9}2SY#U{X7ysNIRSM`a>!8o>UHIdq}=2j7e^03b{pqDGESvEe zHlG^scJCp75*<3%D7=o|?x4yf!Dr#1OCYfB616e9Mn1 z2hWvFjW%BE=G;>-kOxwsQx87`ISbazc;baCNrWeX!4lrAC%-~HgW8f>2|`K{ z#bSVdK5kwB-~;@X!3Qz8D(d6XDfJKbkt?pv!OMe>zL)Piaa&yM8Iur*MSG#{htA|^Xdd0e|#L5`o6d#ApFZd6S2Rr*J-736kgucGCcAd-ln^WOvl z$nak#*K!DDVjvz$t#r;FmhIW{_K$;Du)oD}18ses%4S!R9{9s*JhDE`p5O58=!Kqd z8W^nGsT}GL7a!in(usbPY&2ChS-?AT_$XH#%{#FvC13=LJ^ZR&{8slZB1~Yo$$$nK zaceIbZ$UB$bdIqoAd05!t`7`K9nj$CD9vaTDRWt`IW3L)z4e{{&-dkH0_M#J5@m?( z&~_E;INQZefI1;RVvg9lj!Xi9|CDIv3*^?$T&X6B{d|io1%LCXuxM%2JQ2r)^7+ei z{?uy9G2znqBKuc1V;nC6b*YJ^_OBSTT_@)if+q4_ZTKy^5T?YEdz~4QoqdgTbsZTk zM1G?e^d-~>GKY?f)@|G2z7c%yDEhCaZu4GGQoxI@S2QHiK!;?)v6m{F>$VOlk&sT~ z7L}`g1l%kfNZ)`uVWZ?ZQHK~YYS&KnkLvb$sXy3;*gswe)Hn}jxGUk%ZK&5H=ycEx zLmrclK@O7884AAND5r~i((KHut}d=}u;8afkx!b{3cY2L@}X-|ix(fy%lQ0`5|I@o z0SyfiQ9)ad=)V%Nyjfyk$iEWY|3EC05%GI@c z)1Q~Q!P{UFj+B^Eo?Es+cI@$)K`hWYkQ}GK(wBLqQTUvBhs0ley-s>bR8ghFx8R)2 zf15KX zU68rR-@0K{+}*J!c1f?J=uMIhtPBZ>zbU1dK&o{?`jIR^;B$T!fPzIW^=S%=-0=5( zd3ynQT+h>v$T#^HAX99PcXI5APr0}3vR!yhqwPl=gmNMSt5A8EmbcOY9R4{55%jsX zvZsy?Li81WL04{V}F>8Nqs$*X$CN+0AddYvs9dta`twOjM} zc!d$Q)+a%evdEFGJg{&}dj8{tXgA7ZaO{4Pg!Fe%y5H`5i_iQ%ZO+(JKYfGPrD5Uy zdiu{eXyO9X28iI}Wd%+>h8drdD<_uyWmQcbgo9|<_ne6dzeN*%wX@hH5>FU#nw0QH zn11P-s&;5A5a&1;z7jUY0$8?fX&v}eOMAbN*G$t3jCOENCJcFDaV)mUj#dy?NzMV} zJ!4%h1<@7AW8*H`xYHJP&&Bt=!kYXQE3UD zZ()9ZAsUHtnYA?ABuXd3QoI{(ij^B!B&~{>wsjznp86zU7#Yr>824d$Dd%i0vz9=z zVFay#{NsRA0GauRsauln-tSRpJ$ylQTnLB!#Nre>TWBnS7VOvWMgmM`*_`3T3W){~ zxq@oWqt{>_#NEzLzp?E-ALIV!5`#nfX*6<&fgyT37!4DL4req>L4sI|@N>)*?N4TV zoRAasAI4w`$~Z1WiPBJFI0}ZSz`wkRw-Og3_5d*)gNXWP7+DJ0EewGHVwfRh+>gJv z^l1-Sv#u(=LFeo^4_e`#$sYXJnWf)E6u*8iS`%8EyUiheE-qtKtXM>ueGqHZT@V#7 zXH=YMr>>ZNU4I?d{kf8+py!~p;uWT=STTEFyzR3z<<^#>JEv#gsC)Q^xnf@|eD;{V z$*pCL@6fI7@oL3^diJuiQMY3D(DBgs^l`;*7s{WBLJ#kEYmJ4tb+)|X_Nfc4KnrSS z58YZ;XJ)TY&evO@1(Of{Zyp`;{op(nG5OWqVcnnSKVsSijH5fn2+ePj8lyWAya}TT zP;ETXx#dF@xVt+z=k?rUpaPSVP5>N*?=yY=k}HKYIqBVt75P|ISLizcY2m4@Mi`+oNv0gstNbUVi`O8Oe^2=X5>Hy0!)j|ndfOFn@loQam%S=qY*fTFVfXjb-?(8g6So-EP9O0XfsxH1+pu@$Vm8-w)=~@xI~Q3%{`p_jt0R zqzBu%o5mEz-nyp)}YRB%q*WE=t~ z)|0RomR^!*JHJI#uzaPnXm}!ro8Q)}dbl;9C(qE4X}LY9Sj?yQE_l!0PZ@erZYtHK z_Uqu4s*|nuYvw5bik_f16){s3Y@|m%-FW{m!lbyPlOHFyx%sggw}$SoFjziVmZ58n zMFN0}1CJp{@1xlo;qKJMCGPyryFN4Fjn|WGLaxkt(b}ALDIXoM5ikPRIQVE!c_?^J z$~d?e<>I@_H!0Il1v4o#1yhJR9W+5CwlM!~`R}FwRMXoi_+OC;2$p1_{Ci?dPn$@a zObbdC3`)LXNF62@`<$}!&D4YaG^4A$tBQ~qDLq=D=-ce7Bl5?wEe&*EvWYfe&3$Nyk#UjM-ednZJ@ z1rkeuj7(4eg6icahJh8X0<}a0_k*%URmi2>r;CTc58su|gLf>U*_C?nH>9DUTWg;d za3#1QSLAEXoPsUm(-pmg)Mp`Z6_^PZn!ps!NYI6rtBC90G74uf(?2C*8YuhwDpAF~ zMWP$o?!jY;Bc#(~iK9w;|2JV(NT*|3DQEWVkNlJUwZ8=lxiC&`Jr#O3?=mPm$L+aq z^Gz=?VyYJk8pkc=@eN7a7V-_@+VSlJtKGYn!1jsIH5gifDs7xNk7NgI!Tky%l?vWq z?8y^Igh)Wg9`bj%|2>(iroqJtGA5yXllxD-_(vVgq)b7?s+kJluf;gQW5FYN++eOa z=(do%h#QF)nn8C*i~* z%YK;If6@|Syqp=GX-a+zeL}Ikw~~pA1XV6sTKO(zHm#Fu@|)Z=`51-9&JLG5wSFWt zwTo0ZS<+)j2tK+#W&TLZbtF_>=sXAH<+aP zDdw}k88R@_rtDq$O#0{x`+W13Hp*0NCShmg@|fz@bldElV_QpS7PyVMC1Esbu|;TEC+CDGP;3#m5AZ^}?HKMo|7;j0(nsKw!N&A{&@p4h8w!DVab2;oXdYj_ta$RID{Ko%z@X& zS-1lV3sueJ6|j=-X7IFh>`Mp*k@DoNhp=M?uP26K2G8g5;e`22yoHnRCQ)XXG))vy zD?EdmOXdmGt#?Zp7II7wp?*?LB~ikl!wEy6jKIZ%;Qdlv&*cCSDSTr56894X<#_~< zP^6*!q#>hc1xzm^CM$H-gH9PGsh}O6zjI(ZXa{1Xm?meAhiEkO)X{{ew(#e9P=5VE zDsCS!ER+;m0M)k?bcVM#8kVI)RObC~QanzC<6^@siL1`MwDUi+v z@us$Mrk)j2c`AcvxP|2xwS($@P)B9fqm&m4df{rzxnRJQ7xGS||4PwSu68Sd@`<6< zMRQU%mKbJ~9gG;45)LImYa3KOBgHt-;onVV@a#t=1U3ffiYko(6B^JZXUOO{L1c-J zzy_OwK^gK-4-sGj{`L^nFppEpu#oF-Wo_InUdtjJU)4lZ9>0RLtIt=^NfGAWq$`?aOWoV= zYS0W>t(qqT0|qMB2>S{|8Om2CTvt>N9XQv*fu2wXC0b0x1Ux!|AY^a|N1{L;R2`t` zK5Wg$Eg}gV9vy57igakeFVH$vrhob1Jg7_y zp>q63cpP|$FuzivgD!xCY6|@eyhWG|0ke3`iFDTHiOnS$66O=clWG54sG$l9B2Kys z$dAoA7^jt=&9Xz8oy@j7lsE*1xiWg7O7|hKb4%G5VIDKKK=u_|5D!%E`vRb%ou=CZ zom9{rWWXpwrHMcZ?QDU33r`wPm?~sn?r#G`sM6(e@ceTkF)01jR6IHoI27p!To}bK zalI%3MZGA0&!)ecYGn0~R9O)b6WlEMp+mudK0TVtO#;2(L9ctGP+jHCgwU7a51r=;i1<;K0uWHgkRTQd}=TZ)d z|EQ=d^ggDZcQUzA z5#?iAvP5u5$Wo)xffc4|X2T-Xg~0t&4-8so-bDt=ytNf4`}Z5G^eQgePS`3IN7iS? zEq8B~+0xdqY5BQhC-JO6hCf7%xC^%;5G|NUz3B%mgC7_A>vHL?OAr1Quvq-Gpq3P@2oZe7ZE9?k%KpcgJQgzVlX*pro8b{Fp z5I_+qy#QlYb(NGuRt&GoXVif~=2AdHX6^vTXOG#_M>E{BTG=EL>=ygkczClcj*?P% zW8&E0rs^Vw!6+1w$cPh120=-NM-p!aPZFmGB!lr@9$yk)QUgze7GFjUK|@9cPv-q7 zke8=NMuTUhM;=EFUr7>M;7>^V0eK1&FgO^JK;r*zZB>o#-PW9e52>9wszd>sF z&>*bpc&am;7)mp|k_eL28l1H7Z*XPa$f$9G;WfD5z|g`-g4OUb-oMwt8yT6D(cqHg z#mDEFR_axQ{*uglIiR`>7f40}T8*#voI)U5^lL$Vyu%@o9{>N*h1y0MpJMhY1T)AV8GTp4J+HjY#-rz&$Y1Q(igw{1-t&XY)mINIY@w|ghl#Tsl;Jw7xVSt3nOCAQ#66N+iX!cAn3-WLs- z&mn_?XBQzXK%nTPskpAx9!Y@<=G+1;nGw>S_vcVd&Fzl? zcD-V|s0CuwIe}ULEki9saM3(IG^Mw#=Go1ayD+Qju)Jk=+7V(;%UShi$+n2!_>J~^ z9r;tV07b~adFIM4W08wcf2_ToqKmuVxKP}dP%M4}ZM3sa6H&j(eWCF_Z6Ml;$9W%*qmYKI2g2e7)BP}@(ZC|$Qx08(q0ZcWux9H&pQLH zhYRoJnGcX1Lkvl&pjqlRn6ZEc^Wmi^hj(t@jafShKBKxmeesldxiM zxR%e`L08(qG&@^?d7TS1*F<$K{n{m$(0;GjmtB zd70C3LdQjWEM$tS<>IyCHW1kb{GRRZ!yP+8WUOj&1+#XlFJpg*ug08z<;Y&-#wpU9Y@G6y($vMgDSc4k zor;6OGq{Kt_ar<$^T$YNBTa4g z4scI1$XMTr$8@N#V71nCSS)X>7Vod!ASL?>mW}27PWX*Q5{{9Uo0b5%WE7>@nK^hM zXIxETwVwNsoxs|>vu=CO{*~^s9M_51_vyMGvP<2nx;ve-#d&AfW_5%2w)~y>!4lff z@F!!({wuGEonyn(S?*|3(q3V5mJJ;Tqwhy(D`<8-$=0-A66$jsL9=u(?=U~yVj28V zcgQ<0Wb%GExUV`j!DZPs-Cx|RU7>nucKam8@7Bs}N0gBDJ~nt@*@N1|w#0O0mLPvo zXh~ihNuchU_vJiWrMUa#(0ymV-1WI=P|;-}#B63KJY|J))OH8fX)Jnf7m1VhF5>+- zhn#y$16Xa9h+xLwCLIU8U4E=Z@G!(~I5zOo?>e~P! zeszc+QhF@vWV{^h@IJo5Lbx8qo$kw7Yd;y}mUJdAo8p%w2dF+)>;o+ysNr`&p#lj!&A*fEtnIVhjhF7}v>%wkA8!7DN7 z)=EvCwpJb3XcQcyfVC>lm-yNwa*^$vcx&xngiTI44gGL^eVi_+afmO^+FTdPU!qC&tV8bl_*kxWM=ulzpz8o%jmyfz5_ZJOez_ zidLY^t7iKpp6sbmO1ae0Z-cVGDW3#CwSdp@Ze5E@kwzI07*)Kmiogr1Ib{k^EcD4t ze9@md70*U96FFSL_jtuaNE>kbFt_lBXlq7+UMh`B5x$EqS5I|QRj8S0Vs(0tc?QB~pGG9!Nc&&U z3~ehQJf+tZZLvTUG%PUi%oMWQvH@>Rgy;?NS8m8$hjG6JS&%(0qaMPa>rhCY=#Nu=uR?{3|Tr3~h z3!RZwsH({2HvKD4p4YhRi-F44*?gJxLROPg(&jgwv8ZQUuw+5&bpt-!{4|!oos;Y* zDf3BpAYEKqlyJ{_s>OZ$U`#o6#aw|3-87|eFa`ky#m`)sA+YdDw-zBUGEpyyf^03c(K zw`%6$F*CiHC+AXcnZxgql5~OH>zM^5c6;lWXklDDF|IOgyU`ARv;pIgbC#cIbj(*> z9c#uq$YezkU)|!A^iI~8{A=4)NWF}{7dzi?k}E&q-BRH(w8PdN8-^9yA6l)|JvZaz zE-kO^B6GV3wN(Q#50u~U{SWwsUW7)%gV^`e5Q|;-$wp-gymrD0u9}N44DU>sm$@#T zW)*!@j5DYTPlnfzZgV*mAO@F8#Jn)(MW3mgHS%Xtxh$7nTU}C`$BN$7P6r_ZX}1sf zKF;r_=>-q9z0})t8{l}f#2F42GgLihSPeI9I~kB_JX?v~^)qJz_3dUm{ST5ew_Js+ zQ|5-IGS+M+W9zytv`-953$pd5j2(+HLh>N=+JhFEaj!Xpco%yqK zx_s;S+b<@v4i^p2ADw^(vqW4jqDWmXoRodL6T6Y)KeMM#08(*fA7t^)7$0O@}`{tnjRK1@TWe1VT?8gIREU+#J zv+E*x{JeXP#pX4G#SIE}H%tiQB678&M>pobk8te{TAV4%RrF_Tdj3vck7!^e5P_mM(g;f$Fdivgz z^YfUm{Q+ZiSM(2_sl-L7#*8D|yqQe)c_gz=OAh-rE@Sde*gvp5>*v0kzVM#)u)&Wy z1IyKem3E63esHgJQ8bT3hv8sZZ0o7krQq_-AO97V@RHB-%y;U#O9Fvm2Dt~ifkuEf zxoRy*AGh7Q5ZlqsX?H1v#)e&(8OhlZN}53wWWgv{#fe|=GzIer7tDC>#iiXSyWrGE z58~1kYo#!HF(OtsTh>@vY zz=mvd`ywc?n zK8qUes~jur@cb+M>Csm;zwLDKK`88(;RnO0F5)lT@aD)PZ&Kf+sossJUHGXC-aNl( zcz-8X$wbzM4UfUD6&OR|_A(^}lx5y!X@y9vE2#c8%lpSR z51Jvs{RjJ>g^UV#|8mH`mP1?oj}2r(5ke8JRJ~(;usi#Y+%1JwL)LduJAH#0ek4}0 zRlMula$D*&xzf;EW45mSvHD3}{nAh3&d}>rbRGV1(@yzO@)!94BUVJBxG7%8G^&3p zqZfA3nGEHcrHVU(ut^UIa1Zakp1BWhjPVFiJjjDoZHc9f*Y+juiH6~ZQt?%t@&3Tu zEO%E2E~1XyvJre?BwnYm%c%TYMZIW+vQ#`o@i*Of-$^_-p5lv=4V@-}N%`qKh#{2us(U<8 zCQ>p_&N74qfh~kyc2hmc2z4kw`*m#U#(VFjyyyOd@oL14R)abHZOMiL+%*+=oN*~J z>=y&pH}$YC1}s^ew>2o+sM5FlD)ICd>R}^{Se#P+RuVoOBGDkCJYnO2i!CXy8eyG0 z;d;?gluHH`S5>k~N-;(`Unbl&5ZM1oIm zg$^tkdw%YJRt?#PCFEVZ@S`8Tc8Y_9r`|L z_@$gl3sQ>4zqkA3g{}vRuXU8;DA65v#r`2~@wtBAuN13f-f_%(~UQ`0CSwKUAkr;TY8wsxp=Ghi@)yX z>-}u*exn{i3UGO+r~C-7#E|Kx3$-#I9KI?gZ?M;~8Y9`XCZ6?fc35p4K z%Dh4(PIV*g;uXmHb2nR_LTzK+ao5az@${Ubg|RxSdh9``G9PE0DEE?Zj^sQM*L$AV(Tr*kQq(k2knr>H?)b-jqoGSxM zKuJ7A0dDy8X@}X!%ep_0DulsPNUxVVgjxunvuxCj(;dhDhtjayBBra!C$VAA*kix^ z8!>a|dKBE0;aMUd_Ril8mR?@(yh93!h|S<>zFmF6FSHOZF$19%;;S+fF;g%Vs(mSy za%*V*Bi}UMS+Bn$@f+6JAK-zxD!N=Mp~=1%!Z_u$d4KTgDV z#Sb?LvePSSZ5-X`(1lauUq}gBz%MGwML&uP$U%@mJtwP=LaU*4l#55GRye`kRDY`; zc0HwdJW)Vd_{bzZPzU-f6aHKS$^Xj@Y7?=6{8^UL^@!+yDHW% zHk0xt!F}3Oel-(M7F*4Z$?7l@n`o!>hw+MkomLK&aPUQIkvf2gCso6NZ8 zzk)ogSV`GU?u0;ahv4q+E&+mDaCdjN?VNM({m*}Q@9tJV&$LWW^>lUD zTVH+heon#&V}*;fa2=W4M+jrIa64ouTw?^80`B8E*VO#uvB5Sfg>N4C+9*NbcAvVIdZ&0r0RS;GkK5Xbk6eJDcD zQAdW7e}K+;@{7D7l6Vjl%M>*gFd4(a2nrF*MaTsb3j$*YFk}#AOqeX25LCb+BRYAV zy&eX%kj7T6i#wg}YipM?1j0+$tBU;^a1Ht2UyZK#tUR7vqUpqYuh%GYZY6!XQquvf{-N$rK(C(qN>kO0jz1Tu#k|zfqq?`db$;r?<(K@w?qHi zIe!j>z0UjBkN%Hm{Cl-D@&BKv_jf^XU)pempxj$Z$eLi>4_*^q4}J9Io=Rm7umgviDXWTg>XRGp#{4O zxP8pI=#=Oe*A__0P}rRao+d*n5+`^C=7z^OM-+^#!MlZc@{2leQf^|LBKK0dzs=bJ zB~+Rq_vCPW#keL^xc3)3D3IGx z^30OGU&~pQO&d4)6qR${i*ST725}JA!Wg4`gE0{>5%6a{mcxvw^(uz1%z{7_fSVf3 z5-i91QQpMup+)+yTGF+Bl6#bc=8u-O9%Hc41z-y_Q4vpqx_9VTKby1Nj`nGJ%|!<> zZ#*NOFK4A%S-QkM&)}{NT)|#jwexO^Mh>4ml*nA4y-~ll1R0CeJ>Gq4Pb|x>R?X8N zb4fg!>`=TfBkKsa>snRE2CZtRe{H}9aSS4zG)&srhLd#ICS2~syQ*n;yB|~?b1Ai{ zCk8C0HQubq?V65K+ai}G;wR!)7wJf8s~mFoUxx@DQ%YN$+N6B5!U$RuwUSL&mB)=G zUlXu`Y50LCe+<*AU_<$)mks2zs9>AHhKOz}_0wn36gf_+D{|2UITGSb`Dd$XZ67VT z3=t+(p$t(wiPED|)NvSk%`c%_{)gQUJK2k2=oz5%$>Z6IS~9;H7qEoPV+5NDxK2c_ z%BMQ{Toek9#Rf}{eUQz)$dt(DGl~5qp9}%k7){KtV#$3aGURv1aLABj$rEhnc`!X^ zmYv#c#4jO&Qy8B6_s}_)-=P8FYN?bWS)nkh3E5N@CL|-z}EA0pku4{XQ}~ z-votuj9?-VuS)jntHNU81z*OMxU;Fm!PFCDm)EGgxEiP2OZc<{>C2IMNlFpP;KmnJ6 zVvDiCdE)r1;^R5Y3VgX^hz^KasM!LM;~C62Qm~~sF#I_aF`1_ZH(*a^zvIcdK!U+JtFq+vM--W zUMzXsFaLwiCsb#@f{Y!NNM&(L~Be3R}%z><70fIoZRr(uSI?zhs{Rbq0b#-jC5&d;K z@W|)$t{qyW{SQdlA-33P*Eyx4>#CXnrDUNk9a$4YLjvff8QfCQfEC!$XiG=DuI(P; zMUMS}Mr=+$FYs$=C|D{KmW2k>OpUOsqf{bQD-Ub^ub%R_OxDv*f;4ZT9@SF;5HQNG zYa;co+0cRSy^#1_xFrN;YXCOJDfP*;2sr<=W-V;YMq5o4v^z`l050CzaqhaBlZDWx zUD~ZN9jOT|;&V^3f;JJP5Ir+>?9|y>TH&6S8MK%33;gtJwuF$jn#d>m+Hc~jmj|?% z+?!?hU`H-?`V#H5>NNYb1d+PU1x^ zzkT}EtE$7$pKH#&vvgxk@Us;)n;M}}UMT!d?f}nXOF-9^_JhD|dugTv*7`1;a77)R z9Y<(<;ABsI{PWM;La(yk;j2&B#G9XUuidbT7Xc2*4o#%gaIURP8-O#|yr&^PZB$^Y zA*!RIAwICDA%VSdFg1KMwVlbAz%2H<__K5z{zG^2eP z%`~T>4HcMb3FLYjf9M)B-4aXEm_>ro!{l#@guh7Xez(?Q87nYdmnJ zlZ5(MO^u1Fss{F<6`gQ@9bGD|#MgQ~j}_2ZJ-`%f6bFPE#7@=Z{S|HShtc$3g+}#1 z3cwwlsrS$Dgs!fxKSZJbS>A_I%a7I2{2vM(StfAp|6bH+fC^2t(FMjT{(Gqh_&xRh zy%>;9Hvn9-r5qM1f~$=xI1Lo6g8mc-Na08M!L_@aANOWeZSeCc(6Oe~I>j;HNS>0C zQku)^u+Y=u+qA5?b{!8k(2mA^2d-@i)4$JQKe#3%T1ke9 z5U~9v7(VvFCU+wcdIDxWc3&JlJpTj4WldrYM=(4O@bEfkmcY{kk=1_)$DIQ0I!qBisc zt8`#s?0(Q$T-2ej^rFvL)!G5vGx?g3^nn^Ko#=I*p7jCBQQ<;w)*jb3aHa)-i#N&f zSyK&fM^piF)>X}|5jwk_gc*Qdkq#W#Q$t7A(-0bBA2p;+BCx6v>I)#+;+icTc;mEX z1RJeuss^BLJq3t#S9Q$&R#mmIazkxhrTze20vd3|g&TmLdR>diC* zYG}aTupvqP3zz|ku_6v(B-mYPb8F+xebvl1D#^aY*v@mRT;UKD6A#<@Vh zCbgjfI*nI#i1P=D5N~IsxkHV&g?b)r;||yx7uZV<3H){dakpzc@TUP(2i*cAh7M7o zEs3w5*GtTkwD6F2c}62Pk%h+FSwQy6o2th~Th|osX+SzTZ5#wh%l~@(_v{IO#IZkn z`M_<0Zp(ywLSldPKan{g1x~Jiih8 z->aJNJ2Z6QvxQKg?a1bV2TBUu%Q0C4(6r0i6iChMnxd;ZI+NKx%=Rp z9qkrCgO2oaEZp2;&I|nce}hVJbWNJSe4Ge2SrBHq?nAN zf%B+XMyE0PW$Ri`qt%w&F8{H;(B(w}t_v#2u!CYu0V)SA5zGKERYy{2vk^2G^h=!W zZ(Z^P#V~pI46QTVB5B@2PNjWP z)`H=^$ujr-kVG-FtL{X_z(jzYo~hyh4W%9AgOHHWT&VObXPL@JiLc040kB{FrKxB? zac4c~I-eRCCB^rlFP;Uj(hDOr^HA~Rr=~7RMjiAhY2IpYHd#fxnhSHv#iSO5uAZM( zrw6BfgW{}Yqoj0hye~!njg$9%M1(IOItni&o6B$AN8AuI6{Cq5$aV}+jsav9%iGZQ z_pYzzpftrgf zEtqjdK_jkE(}N;*8~m*CM%Q=l##u&Rs?|aopln&6#VutOh+* z)vply67wX;9`Hp@TY0jq?Cq2GLXtZJ292v2F$-`jP8o9z!^o4Od$`h&ha=Afosy_l zUxMdSYN_sSe@MSh9)6cfeY)YuYqR~7q4bPcL+Bmh9!_A&~ z+q5)q$9O7aOF)bPgod$9uXf<>ZanDvC(ZiuuoW@tcF-+1TW8kxrBRD&^Yy?@p`k-h z#M-a0%J!cfL)*XQl@6sKgdTA;{XWDpmQbklR0(XRj$NvSyyJhbm%=@`M`usC)gM@mEEGIU?4s=~!d| z=nY}y3xRrWcE{bbT)f%`pBDpOoeV}+Y2vZWJDqFpN`U^#^#eEr+sLoBrMt82Sv>&p zG+0oo9J2DdCH0n?!MQa7+c(wsyR&xR=g04f8n|B-F5tH6I4&Cq1Wx{J-S$GmeV*ZM zb_^Ur54UPnUcqsP;JGg?DR@qSp}GEI$%<51&F_@)>sIipPoSBCLqAxR1C&VGQUyz* zh#r{lC=C{OI*5ZiMSorG>ZPb177$T9mSM9f?H;S>!z5HqeVLuQ9z?FyCPCuKyCS%n z7lCQnUoU*+DRl3>`4vRp=4}%9{oDlP5dMxkPu+A()+dwvPu|Es`F$|=o#C#>o?>R+ zHzuMYa4dqPRo5jWmGu4PG)sw^zl^VmSY9MQiHu(dQ%=oDj2zWD?%+V%*f}Fsptd*` zi))wnn$g)JEo!7 z)PdCR+C*(Ff~xW*uAV>o?cCnD;k4Ud4mK?4JYL5lAbh$evMs9%@$g0|@4m5~9hr8* zpOD9Z%H&t_^G^ILue2&<@IZa|L9QqrCyOYeCN@YWu)=k3Sst~}oq)ni9tq{+)Sc#? zyGfYw26{?ysotw5<0?0$w!#KzDBVOcLLn}r>zU@?HHD6yF1A=6!qdyT`_1935P&`D z2Y?^|`w^lc_QUtK=d*kAg@>|N=NIfqr>S6er0M7lL@E5-RN3g zHgbPMCByvnNZ;)4$&|sho1nY2amD@924D&tISt zy3_PFKqS_Yg%=a-7ZdEX2As(@kRnzLPrV+>uby}oxtS{z$4%MXY+|3<3U#`#j1L-E z3gsy#)}6!4y))f6#akKnK57*+CsB!x&5l1J5e#Att0wd0of@}GJ=x$#6C#AM`-nlw zpRZ>7N&u{GbVy=MgKZ7wb{;QI`iAHaQ~i)g<#74epo=^#JY94o!=#d`3wp&LFT!cN zg3q6ok+*6Fl$I9j)p(u4yN5RUZ{BULs@doh*S_IMph>5#pXr}TxgGL$_2?Jz+s;Ig z;_t>s1#;QFp81K98-CghOd5V-TP|a}Xn}iIuLICCe)7+G#i45QrjryU2~P-rSvwCd*5{Gk3-&>c!w+TYkOlhYG`vA3iB}EL`R-xQ zZSdr_sks1dVXKewu|Kxz=}T6Kgow085_g-*u&!50nm)`a(Ybt@*IBfOi+c~8Uz-C( zQW}P5N$TZ~bD6nxt&1y?JJe=b?u+exj9)xqxO?b_c5Mr9?z9$oB`6M7c_JtVU1+u$V@ z@6O-^O;Mn~z#xA+vW8^DePL-?G<3a0V0c1TyK0$vSIO>f*`&RsG4|%QHJ#EH?txG^v(;er< zImx?nss2T0z@v@Z`EHDvrk*~_WubH9ITl1kYUlCp=9+jlM{F4t7{J%~GA2kqVVh|43c|}II zLe!KcVs7;G^WHV?G?dF| zr&ZBbROt1ACh^K(%C4c=BU~zdx77T-a-y#MAa=B6Jmsbb1~@ z6jpOxKMEaNlhpd_jKFTW;3>MwjVAtp&dO20?EV3QUt?G7{d#{Fetd2EyjfKZ66h;lE4Ct zzv#E*8HN1ppj4AiRaGU~4k+hd0l>7dX{C?t?F8vf6_k8xJJ>Z^R9KUkC{a>yp3uoc+pLE6P}Ph$6o&7eldWa&QLh2#@Mr?};WqX5 z*%IzK0~mMV!${j(QonEFYRHykQBeDvT@P#nOY20qO0VsQKZl+7M7bBJn_Aws?qI>E z2;L5$pnieMfKq0VAuRM21=)j*bFtXFhNt!pUfg-EgH|`bSA#0#{OrL-zrUg;TyjK> z??(B8f;8YhGX_Ebz>(|-{c7=CsPR^eZ6G465m%gB=QB@dmIJcF?(G@#=@WE{(Z!xc z3%p`vuyu7poSo0XUYX(wlCf1${O8hvVp|hZUse5Ix2pZjk(3kr@B#wqU;)Gcj9Us> zMF2XC`1^T=Z>phpruz-fXTKY>fbrf@G01wut{mwhq54A$GfPyiLSTn$Gj)S;lhF-e zaPJ0x*3S*J8E`c2D^6d$LcJ4%>_<+^wto3uDlSt#*?JC`7SXW{% zK1M-#rc_~RJeto!-G&6`Eu3cq@Mstmbqj!K059;Tbq(=jW)T$OGH-Cin6{-)L4mKS z0mVh+Z&csdH0V%sdI^D+7=Nmypwgouv|ugokk>jgSFvt5>Rx)9P}oz%BnlWrcd|8z zAI_8K4jq+S>1S@Nlh~h{-KD-Mj9?r0Bj?ye(sII!QMT11p{p;-nOiq|0)8!SBqy3$$3Ic)D4VNmUDL>N9k!|=^bNPNaN5^% z0kx!vX}Is{xq4aoyua%`4L=`6^o=x5_ILF!aeH{lt-K#y@!nkw{MNqoH7viA)xJWh zf-m!pR+xtvp$Co^3slix4J3=0fyqZZBVNY2?pca2Nv;*&)M-%H1AJe2=u@i|SF6{o zDGEckIZk|2$#yOxKy9^f|@Wk{ae}BvKX&dI~m{V{|yxsHZm91{viiS zCzs4==PsTNhHXd8TI_TVnKF`yu~_Z2LH83n`5aj7^2A>V;{{Lzg*=~~B{p2Mukq#+ zEw?^S%E4-dQQuzt^rXAdS#{bl` zH!#ql=9H1_x9~|=lj-e`VDewXY)J`rqsF}&nI(jgS##MbRC5X6?w-<-jV3Sij*qQ* z+6I5Gd$vpMxQjSFnDv`~Qxa7k5IQmYPjyS7U=yi*q9YVXanc5^#?NjOPpmMJ(`oOqx_ zb5hHpeqzr`Q>HI(LDlE_VY#tLVp;9wFE6U)a#_3-5VX^s#of;nZvJF2y2v9mgfFQv z+DH>PNjStn)d7t1@}*#PL{Tg_?#>%ew&3{+4SM|QgBHKqOk!$Gcj?~>%+RtU+Y!fA zk~zGKSl}04y@Z3l*d6xbstVDcEE176@OuH2qB3VRnxEN*<@9W^M?bDt`&N}$9y`Xm zw6l*OKWg#WQO=zk@6#y1@E&fJIi`>1dHNgq`dX$=UdUQ5dXd6|rf%CX-pZOW4$Ld0 zU>=Hm)kWz!u>-!G}llC(y{JWcrEc0nb7qW;|#l7*jw{DRts4|PZkj2Z4n;Ztm z(zl5kn)P!UYWJ7jr?Rq-7gVZrp?;uxn z8&Qcndw6y1lge-C%N;_54G9wOMb{o@ay=0_W~X&vl{%V9uN!QE7bB5y0P+=p(3-C2 z2;u6``0CqwqY^=^3|K3)e(en%b8T&(elybjhEs$ho7F#97lSUi#Ze>5OX41HW}2Oc zX8SIx7AeKg0@epJA{4NIwABKRe@XEt}O|(Z7-gu?7j9f&KtNr z$;H6fo(-8skvMeHEQ~Bc;aauLL#rtC`Vj)F98ZO{J+9EW=cj6>^ylzbx zN!)*-8EQYCK(`z*cE&NPnzQ)DhU4|+%|X@p!!ayhJ8lRy(FrF9yLw$u9?X;FfjZmy zHMeR195(itf`0*Jg$&UBIY6lt(B@`sVb<#ItPNhNY&Swkse1rTIA--!DZbjb_F{v( zrKai2%Vz`IVgjAYF^7d-tzfL@gib?d!AsV~&x3e5daQ<>%6aGrzKrS^U3v_OIwaTc>=98~X8wV%OQ^|CyB(@!_N37k%4Yf^g|w3g`6l}(!cYN}2bTJTbUTVa zba25&2^Vi1jQ8xqHnm#lD?14q61LlFCs^^-q}SoRk~S_YbEp+S5*JwKgFTlJ^`})1 z;&4Df*s5gbxKE{v`fWuXlNqEJp@ft{U2X5^cRCxH=Ay`XH`9jXuC`1Q*GSk}xv58p zw#4Ab>cO$}^Ra05M@7?@(GWCj11j27>4jm&E`_1Myqf&MGhlu`gvaf@5n67UU_!y$S z(7P`?Qh%UwAmz1c<8|*huhv@+2|KRQy2NWyEglP)jUVpoFxSPxQ}2epABtYBo#e~& zl>&KznUOHtV^0P_;nr)N$E=f6Q0W2D(410!wq(2>Dna7rnJ)ZIZM)vrD#bnvnM-83 zVmdB(8a3E{Paj)KEtj;*LZIUD+Jmnj1WgWdS~1$%9}gR$1F zl}#2lnubxg$=f24!W@cvX1by8A%uJ=?PlGvnKa-N$@Pe-BNrR|TuorQZLydYbF|Ju zEB;)}bpp{wW52fRQoVNIF{c=GX_()P{@|FC9TcI^qYEl5e68yXUcOQv0xonizj@=` zZ=8bd3byflE+{cIk@YEcUnNi>SP^jwD?>R$`RO_sT>Q&`ijMZ9qs;k@iiR%yD(v#_ zV3QIfIT2&QzU%Ln$!AtFc}t;-5}j)w4EXQS&sS=?b%(a+Mg2F{bv`(_h{(#^F4w&~ zIuQ!busD6^Ez+fa9PPQ-P&ZT9!em%tnEFA*Am`3%No<+De-mBvr0&W=da>yqQGGn z?Udb2vd4(*cXiWupG@L-1vwWGr&weO}@8&gsz85iBy~kc|Q`?__yD~CD7Ap z>jI6BsEScRzUhu!i!Wtqv~Gy?QxT(pTA8MzN8o-Z1;sRIpxa|n23zkX2^3f~r1pT3 zjE;jxc`iS5_n5Xu{?m!mKJTVwp2T621q18-la#*v%i`m2M4WS*dWT*jy$Jotzv6;@ z3ej@Fq6iJO6(v`0GY&)qY<3jI85I+LQNUru!5po=0F2gj1?EhHUdI@8&{^Tb}bCaGo6Qh_IDpFwC~NB(FuCyL_z3` z78pQcTm{`fdQo}c%VbM-X5Emz#M&@Dc9jK;C~r>&?ptP=c_ zhi~Jz3^q8p{u&e-m|I7`&-c9BUe@aJ+IUaSwbcyCiSsf|~d^Kqp7 zMJVe>31s;MvaKM7VI1*rH(fb<`GLoG`B~m72?L?$k_vK4 zf**yM(B#B06=Rj;Fv%3@EJx1-gF zp>0k!FjPAewh^Nc${Iz3*oJ6jMtybz&u8A7vdyfEsjy@+zTZTin;*Q=D_>OTh8kK9TInvE zCyob!l_FG)5`AOqjzsR$s9zfFZI&2b5i2VM#v9*jMU@2=i78B$itKmn1XHVHS)o@us}p`L^=W z4NQ%dsD%UL@EZ1CW0K%6$SsD$D_c&g-Q0KsJV&&S`TW!w)!9)X3wE9uy8`mAz8^>> z-X;zPb4@tV%ZL3%vGXgleD_uFBn?7p+$SV!$WI(R%;BofKG%Pry3nnkzx$ZUunTYv z01}WAVG+M#rmGtYYsu79z2x}5TQdBhC^afXMp0&a6r63(Vez)>xxf??g!opGf$-N$iYlJFmWW6s9uLaig=C2W5nRzm%uhtDN!m z{2|1}Md`XTc259B(LqJ{w?ZKsj8O9E@u)tk?|^+!xut*NPOD@?hlnPe?F-d1yPV*O zB_ow#9F7EKXGA$_&G*Yce^% zYNr%1(lR5OV2n}SUo7Es643HicBF#AX(Lj8$zT^Twnusm3HBPb*J(($ZsmFm2#{7C zsLM|t7+C5EPb0w}zb}h$&EhOCW*XT(->44&Q>j)Re7Ro_9g$`%WJW)MS)dt00R&3Q zC)v-2r^_`%HFZwGjXTIN#h z=xIYgnsJrGC*JntZ~vio$Qp2$vu0KIJq2>4{gRf#9lP0{)4r^Gu$OMMHT?RF9Wc_I zLe|iM`SoYNE0)l+mp2V3@!!I*>A91vq0%}?UMQ?{9h;W&bDeOLA2wtsJ9j4>@0KqN zOtS^0W6^70JG@mnhN8KG5T>;4xL!M?wlrDfAE_13t3_+;)-nRqi${!K2$AwWdHmk$ zD@|`%QcLlyYjInz#H&XhwD~A}5GX;ZiaeunMfYr5Wh{5CpKlJAK6O`|cW+;|S_Z^M zRg|=TvB0J&uh)O@PSZxR#W>k)xv{CU(fEqy;RZB~3&tvhkHS|5)X+R<%-f_xffV6x z1e0rq1Yt!o{dRS;Bd$j%F*K4g&CpdzQuj(;&KA|<;rFkTFlCA_p**l! z6SSUAty1lM(|T=$@bLUaH`{>uI|Wd-TmHfPR211+_VS;S*kTvZ78XnEd(hk=q@b^n zVEj95@cmV$$L%YdqZzFlW&|(a=jx02>qBORPb+zQEOWp24xV3#VU`Zqs$=$7n(R5~ zqX9Pw=nynb%viu^%O}4c2+aSanF|7+GkI49q?=N47iVcaCp0k%C>kFyCZ`+?SdG8a zy^CSB+ui--us4~n6uPJHwPIADR6kqeN93f9v7ChpI30iz7^2B-t}GpIux= zeVjcU4HtWh;VF|m)xMlX*(D$h0Vr{47zO`#n%vh6|0o~-;b^A&U*x;}eB#3Y6Zh`F zoa3;tUjJ3X!v0$Q)5Yx{S77-25{9~+5T`0}HPYOi==gxx+GzPjF^N8Jfrq@!*mi41 zGMXy=Dm`Ha0aS+9uc1*O?D|9|s>{|bb7{D1k?|A*InlwsAs z`{n=7mA?&=m*4-)FUODwZ6g~%O2f1M5L!FA;D8CpZ`A&yxKYnc;hRHir`}gtlRY~! z2ItM(eT}L66YQLRfP;(Va>7BpdTVtC|W&xC#JNfdgRJ(&4>xEQQ$)!o1}xq z3%aM{o1g&qqF!ah5=>R93Ka?xd?}7I5AXEPzo9_#flzTi5ZWPq+&GD!y$VOLr#@Fx zBM(;fgBDSXPipayJ43^AQT#G7i6N222mCqDg~^`WJ*?F%vuL4TIU#-5Jnm6BAw}_d z2n<=|f!BE$FCWgM$;*jE6VXJaO$5-;nTZe(W1g;>X-bqn{Lt!7aSp1fpVGC~wqR*D zcrx`o368qHC&0sy3M{H^iJn&o$fM0=4Fuxl)9s^Ynw;qvIS-q^Afl`ssIWRE@X*;G zm4P)88?dUBWai9ti9eFkFGLNqPPQp;RC{ex;}vi4w_esR{CK2?g{2IF<;p0-AXXmn z2Z@R*1uWBu3$1($m@Pz)5t6dxCt`>U2xRon@ErzYlk5f$sOi})Y1@nbX5#pog5jxE zrq@PZHsjp<^wz=t{DQA(fKXIZl|LGmlzI}!7~ZZ#IYUF-PJXknXVO%%me}E z)x~OM*ZI*(F;^iDLEs&Vf>|;`Afc`R9O584$+IQuSVb5O2@-r)7sG#S^e}#u3=;&7 zbUJMTF0t=aKV!WO4AA=@HmC+d`>>cRCI7t+pt6YOv6_FY_rEUi*G5!y@BgFbe_Zri zm7aK6;vHyWKnFqfV-P3aKACQ*w8W?_7o9+Bn`>S-OA_~UA0An7vEi)m1>vkYwXqtb zTN^w42iR-hEPcWIPG${r?754ehp_b!bOmN~gb-3m1x!*&G2#fiZyDt0Nk+*9L9hP3 z{D)Jqq$)#2MTYLb%0Hl6?>~K$yWjqe$^ZKNr%N*BztOV4fB$d0|F!c^ApdK-GEQ7w z4C0n)tx--Nog=ATPb^Qq)#Rq5)$JPBt6P)Cnsh^xBdId>GQ0Tgo6)Mjc$KjdJK~4j zw;W`|#t?DM;uTITa;70c$Ct9u(4mJVnT3nK@!R!=7U|k-Y!5L~k^%2%SDGs$0Yo1q zsG1;f;2W8?MaQ{B!)PQE`ce2hRYW_2-9e^_%FOFk5fK0s9LT4iop|w7 zMC?nSwHeW4{&Xp%T)uvWcL_hFC)ZkJC%jy&f9mNlJZmdQiwA$t17`Kb#XL3N>z}QkI%cfSo$J&a z+j!bH_x4SxUo$j^^WsW~q5m>{HJO7elW=VO*`n+M%I&F+FS>>`C!1oP6!Likk-gH} z>V{d`{X6YUpH2LMZ3(;wd9Y#%KOiXc|1Bt&-C*8|n+1X&%0)`Os{FITz ziX6lQ;mL7{HRotXfiY5l@h(`XSQEfMKvq;#3jIv4%_5U!XwJ>eK`Q*uZGRi^R)rC` zgSnXaaR0Dq073bk?ihSvs8QpLXCNlBlX$AE|C0q>R)(+)oiMKl5O`qkuMYLyQs~pq zyO$g|_oPO60|H-bWdxr7Ftof#IV7%3u>SXH(kHgN@v&x7hivCr`^ujIU3&i|?^V7&hKud1q{rp+YPrUV zeQy;mvIp7q++*xZz-nx9H%3%Q;*;k?$oCaf+c|+dXO+|H{_%Hu(of{LsAk-qPEB_t zt(FDL2+TUN&a`{l1gh^h#|NxWv7bu$S96$Z4acY|ij{Q#Sod6Dcj#RM#91DOhQ zR+)LQ?K5*I0xJ?*UV}7_7>Fz&e*86;9^v%Z$5-zb!WBFhysfj&8ns36NTt1Mxo+OE zE2D=hqaPha3th4hn^J~^=Y-4|6Hp zr_t3MsBLSp#5xqB4C)NfZUf2iaQ3C?D1Bi%}b3*pt&1nQg zeR{2*$t}h;{!z9^O2@Rzta^{wz;H4-CnN~r%M>hM%qr_1n#Wvq{fbe3@`suIsIw>u ztP~QtsRk*B7^gvI!T3Ec)KQE1D z9`><2&_?9C*%yrh z`V%*=D>o{u+3zUb6dm60Bi%oSE9L!8jwyieIF=(nd6!{xIc30%UEp*6IPkn7Xm!JM zZ=d3}u5ce@nt3Uno;g*2Qk4s@hHCEuIxmFKl3-Z!FjG9XBQ%a!K5t2fOLn=kc}OapL?kFuhgkn0Kvq-R=FYlHC}!^W3Y} z1IIvK==ZMGr0TsuNTwLN|4#%dLZJbrD2R9b`L#&c_uf0okR{hnp`WSWqRBbDl!$c^ zb#x5j)8ff!*3ja`#aI0LyLwgCK&o*H?YEd6(Fs3$au@nos5rT>J|kg@8A7*2Cs0>< zI_542#d%6>UDJ82;Gos}6_ z$wb8sJK&?3r{>7u{Ro23<)ycrJ<}Pbir*SA{aCu4sGe+QE4yjhKZ)v}*d@wVf+->7 zKV^!S`ZHntIZejAOaKjYXV@_?Vp_mm1`1$XMH=SombMBiJ;d(0Co%gmwZ7ia6vaR) zH2|M#_{(HAkHY`EP@#%w6@=I}U_o|3g)W*LBZ?_Dq%S9AbV8^zHZuL_Vy7d0AR{N_ zhoHx8;<(w1ck}L()kEFg%J`ZW%KKKK>r_TO51k{>?=^_^vO3R>B9t`fw$zGDPZ6;K zvjkXlAr*=lW#`p((r7jX4|9r7Nh{lZhpeC)zZ$>BGTvuVw0lcw02^x2|v|6E@W?$p> z8EN5BBXhEgVu^jiVk@<5o*)PoAC&2+qo#)E>H1McP(}^^{7%j%+gAiIMSei&O7<5W zybcFH-a;0}5Qv<7LTi8O=`<5RkvliIqc+S~$`xQ3wwMC&XV-r6knzj>E%`IP7B45M4Zlo)7 zE$21`O^)^R1ns>sTn-Z}HMijI9s0kZSP5_1U$kBrDV8FdQ z^8#}IlNxSp?zdh2TUK+rthbZZl|TDq^VLxSFc$iz`?qEKY1L?vtdob?-?3~Z6<$|K zx5AW^G~^4PW_;po!@|Z*E4ou*c&_cEdrP~5N6;5;qhExmzR-smhg*-Tq1rPP?t6gQ z9zPoGj?n2u8^v^6uL;3*_M^jGdVniLT54t2UBr!Mi%$G-wpK9dK-Pbd&xxL`h7-r?sld$i!@~DtmFV$EjXDenI@^&z`{hO>?L5-h zCRk%AA(BAiq*+Gdn+8oP1+QoM)V9zjsh>;>P^Uxg(feL~xf2L|voQX|skJ<1?EL*8 zGa|)<@*AomUxBY2C<_ynvO{64PvQDhuIu7S#|p0kvn>E&6T}ad=Im)tV~OSkzf*sb zT70?-R>M!`Rr&=)ueBtJ1#AXbF1ss*4M4JMNjjv`5Nu&Yw zId?;XZjL*~rq|DXj7qV`PZXomn~G^E!FhGb^X8^=P6_%Xr`NdGCdzvde8PA(yxwUP zmP3d1h_AiRPb%@lV`>B`F^A93kb1WcB9AZxs14&WQlE3?CmO6eL(d&K9mZ5=orS27 zdRr>|>e&Pjl3u@8J#RBoBp`;n+TL8680>Oze70M6ulexvcr#|= zD8uF!WZ4|YURhIZ#y_>{5*a7DkjNamQ4c8P6%`6h-#lo0pox!tzcoTMe%IT-5ma;k zkY&!c;u??1%6?_}V1#ll6#`kYI9~pl`z4+If?WR8he-?p zIh30w*chw*XG-yd<;&(ZCmJeRV+&>nS?1>(=fJtfU*G7?n_pJb7az_XSkZKoJSoOd ztp8%i&q|)0mrXI5-f6(R8O=9_ zeVBmAqbtPtz~*oMNr?O`3XCZmGc0MZnIw4}@Ff$^KVSkrf*s*QmkFi zD(W(kz>`EQBP1@@E)UnzDTf-z);n@UlZ-YtiySuSY2|V;R z#CIPZkwv5*E0dJNtnVn*&fkf&RFVUs;svFmnznyoayr>%_-FQq0!s-Q{nA>ZESgGWW(Zm|{xU$UeR4`=O(I8Pkq1>bwY8h3w>eiK1#bX67Fd%s)v8q39?*HOAic z3m@I8;XGYr7rI_|nHE%O(_AM&B|bvRlh+C#?_O+6Vw`kudClTMqS}Ctf%sXy@!eLD zxIj?I&x?tteJ_lyV}^{x1OBSt?0D4*Z)jIK^6-tG$ei(yVqoXER8%suoK2ckO4nhmicS zr@ByHC|&+WJkHO<*3A>olxrAs>U`i__OnsQbAg$s=_j_z*F803KdR^VFe+*{6#Hu1 zwTabz2#F>^6%b?$%wx|(Yr1PXxp8c8#n?Re`Bgn$T|5i2rwzkm(C?C!f>l>fz#rqs!+9zxF}#j5>`i2E-{G^L z7g&pAk-tdz2CO7ZR;zM(e+&#%b6}-^u5!_x+kKauXnP6)0?(`!1Y}Us4~&h>t>%pYf`J*OU3xBiOMGFkX;1e* z)aRf(@J0w(-{g)@7}J{I^ZJCrgqk~aqwBR^UQftH`;r@?4`^NGYSmtuf|+punFHd- z7I^#X3VHkL_GM-4X6EBw!b?i9MwzV;>d!}bpsDaobnK9{c!{Hx}YvY+4ZG{zzE$m!M^3A31i-WE78EgOGONoQ<6&Laej$WYgLLf@;6 zTsqV6u;&IL52B<`44U6fH+bxGqM4O!dH%=zwr#K&`?oR*9kvG1?Ze|L+i_SnL{k zYqdca~Mux(Ys>pBBewtG;&+3E%Hl@^iFGQU&<#1w`*|4X*7FWv-sE zWp)k&(hl1fj}LM6QG}>oTr!Jw!JZc%)SOm?b>n~AjIXcQ5k9E74mZ;h_UHHfY$#w% zBf&*`K|R)v1munARy@?xWGMG{XGqI=0hy4I9ch?2W_oWWRO)ebr>>?_RCf z-U0!Mvvq&KW9>#KE@mAI0?0bWc72T~&;^|Cky;DZQ0{lW0JFBlj*a=?R+gkC{Ezx)QC=0z9W1M`$aacY zj8$p$XU_G9;QF%D7f0Ussb9Sli8RG)y%MMp4TY6A7b1IpTmL9Nobb~hxZX_GTf7h=XDlF zjLJvN*}F78trdh-met$HJo8c#O(g}_OU*THvB6RPN_KW}-FU4gW4J2c)Vhp{By_P*1Ak`H3vho*iY|M6>hGq>#(wjdhg~V0+ z0kDBXUts^fXm(1}W=iXEK!0)fcX2IiDQ${}=kDQP@&b=$#7w75x zn>UY=^1!Pd%I%sgq|LW{s|ZwLM9Yr-2665e67s<}z4aIY8=RKVB_g6?}4@tSv0T@@{t*-@fV)Jiq2E<2Ve29ih8SjxtfV@v;_wx zbDN+fSF*jX{k(xoL`9rJb3*(9GVkPDxY>nW+Sbh?#rHQ{7G^58!xo)$=B;`K;sRd- zI>3+7dD^%!q>lz_7^_vC$ZiZRRo)?mwL5=?wXW4A+vaEQpaZ3P;4iFEoT%LTCnB%J z_bf;WvS?|sN|XVPQe8E^5aJu)1z)h&w`38 zHg>VuihGWwcRnYTxW};wgug5GNZ)}69J!8bR}!W!IyTDKo=~G!XmaCqcD8Xzif>wY zheWO$sPOcFbRcu>^@TRO*Z#P6m0I!I*L^pnT@dl-619J%5mh}Mjx@Tr!sGF1>M`8x zVMI-+XSfg&q~BOwQjoS_;#MP8{>u`WqE+ntZg==p;kTx}nAhA{Skw|$zon(j6WpW5Pflru{js4B1e0*E_unTuU9DrLn!&g+ zjj-ru>=Os<+#^QEu4XLo8O^X?cG#p#^^Ejm>WNKL?V0~hxjK159y0hHGU)HB>9~V$ zf^|Iy1}7EU&`VPHe;@2V=2*xtnKy4NS5e7T+fFU+)4oxdt7p)k1Jmdv71p$S^~|*| z^q;&$|MQIV*QlNk?BL7QS4zIji}yLcQjw(-tMjcL>Q@TN#R)0iZohaE2(=U}fYy)z zCNV{{PgXa(p9jqTM}AF&PsgLJ@+8Rt|0rjTSUF(ul%(q~Fs-PsT_yj#lX^lkZ1}GOwk()Xb#}>+)AP*G z?S%Ni4Kt?goYyIdxaNdd)Gn^ul(^)CDD*A^&MRt66ab5CsZ%GZ0n9e~kBXfp{ghY& zKPjohUVrM}6W27rx>wJ5V~>>&hOdE9L;ocv#+`qxsupn3zu*1taiDh*-S&ZFnCU^K zNPL@rhIPG~2`wI6Uyht&Oen5C+N|ra`A)j{2e-n;T@*%_JV^J*UaQ-#q*r_n_lJH%jb$}p!@>?FDjCSPg!ZEIULg1Jms*K1%% z7FYm##crWtLhlp(;2Ip&1J`2zWm^AGGY`U;0n4`>ssbv~9MZfTn%^a)SyUya#l=ZE zxJ9Iv6p*aOqR7rU$q{JzHG-|~meiFv!R7FWSzez(%AhQanLrQ2uC5mWpV`y?n zgFq$vq#-#*Aw@L$etv#5X4R!iv+^(s@+2crGdBV+d^yJq`p1kFJ*U|EnLn2)d7NNX z$?H(NSbvCQJUxSqMh{wx53n5KEoBzcD@(C2#$qRi^T7X(l&uk8-rtUFVE~!o#fua^ zv-|hE9hg9Ggg8+8a9|mt&_jrXSpE17b7HFH2ew|);ePkhpVK0r(w@y~4$G=)#-4J( z7W_{e(8kc;XFS|h$0oh|*DM&<$Q=+D9TGwA3^5;#za0{=LEw_s3_{@g`fr_SN^ITG zIa|_B{A0%;3RWG&e_>PWmy76swSK@b3I?Qw{jsC(-^NGOU+P5sW1rCfud!im&vn2p z9fI>LHTSB)BFDbGW)vOM!0zg~CWM*Nf;o1<2I)EYC?ZOtpsY||Jq>{T-2@W%U8c!l=*_ztvmquKM3QZ(}}?x36KQv<-$5(XS!z-^UFR zb!iT_WOXxqoxin&eHD=2s+7aj&4kcSf??hq?M#fk*sFHF?m0vJ?F1$k=Izt(t?1b? zc!^efMnV2-D1RUSBcM}PY|?i=zn96MeJzqV?eE*C*z%58+sBOAJ$rLnqSvWmX)TE0 z&un01X=_6v0ZZb#EiCQ7dymS(q-L;m=)(qYut|Hsea9cSh`s-`#!JoqYCYFN(n})R z87=Y&EyxFN7VzzQi<+=|?yv%9H2e3s5Z7+7fBdIo8rARlC;nf*uu-MAQoFV9*Rk3y zieK2)SeDy6H6Qt%50@uKYFharv*-YY1G;6z|Mq0RDxWgqwn>lI_r{DZ1k}$dvk1T` zEJTn@<(*eXDLIeAuOA#_Qw3bsp#E9t+0xpCz@f;Y><7TpfzLSlGeYP z8PgWeYSZ2Zf5FgGMa=8D-BDN#7>Nhg-6J}1R|uYC=SUo~V>tMy3aeR7*lV{5fiG{O zhwd;-4El$RHi6)eoYL$cYSRuJ0xQWcFt-fcXC$s$s$=CBgAs~-mSD|UY7SF)RrzmC zQBRBj%M|yYdg;GZhz>O-l7Qu?zo8B$y@3Ic+b_J5`<({Ej;>L`SDD4`uN^59UfaqO zjW;(>2Jh!i!x#L_{i7Uy$JszNh@T<03eW1gQ`e;X)Ud1; z#M2f;R|mwb&ak`|#H9b|0JztENJZ42>oCwipbtY_y9UD|8x#8XnVPZ3Zm~%Z7&fyy z6Muo56PSCs%OG0qv_8v)2-X#>{`sM1tZVS8p?XG}F%2wiFsLm||Bj%4sD0pHX$Nd( zJ21CW|J6%$%^s`g%!xtC4t2?Q2o~M$bL(Jg5PcQiS-%&H-R5BOlt%K;ubl~Fa|mQ1 zs0|JNyJZSI($i-F$5hahd@*6y6ZH822?6w9FHl`re}zl(Uep85P14MvA6c_eWt)}r6id;LucI^@*Yez zTY23eKYtjA@ppds-@~%(NC#7_b*A0}8*I~X$i?`i`Br#a+piTwTt}Oq#Wn9fMKulv zHAFu%@UvvwsQc>%jlR1E6|DHsI8_15z++Qw%V`GTVeL;FhxMTEvG|<{;p}-;daAA{ z)x&HS^39bP1OX_Jry9Hl_r|p1`UPb*RSVWaiC60bel5J{6qSpur~60m-jmZK*9w;8 zzW;`$D*Fd5;D_IYNC7qluzpR?@7XDG8;SL1&K!*E8Rp$xHKfF%!V?@unr}^SP74{| zs&OK$O1{10Do+rZEACzW3ig$ZSUO|his_xwa6Q&-{sYgzeW@2NJYr;;5XQ}g5dIm5 zl2QWY5FK4&W4XmO&uzQEb9jA~j)y*+XZL&{xgHf-nSVg4K9?TS#%8z34)Lq)+PXe1wue?O6I-XBog(^QI!u-g*zvmsJF+sgbb4+qses0fMchj(38)>NqMoS!2@Bo@HT}LgzuyY-OZ&4}O>TeDCFKd2v)K=M%D^ z-yJeO<2EpRYEt#poDq=vi46S(eZ>B0qtOo&YqRC#?X$={4vb{R{H)xc2QHiL{u8!M z{L#k^6Q>ieM9=NZJQCS$MOI!D^t@D;w*j25)-&z0Ej=5!nJ{DCMH zXM@{}54`kjaa+O+Uz(Oa%d=-_8%YeZqCe(z5mVsrEnbwFGLzX7L9MPwUH1&e!m}4| zn9ZiFE5%S0Y^a4RdJ$~uEzbkjQRcI~{q^`ESe@@&+GmbB%!{36<|;vk<5d;xh38wI z4F#_^Uv@7`3}CyJU@##1{wf{wGvWIPNk`l-6`7E7O#z##8=jhM;#OKFYNH`RI7zEG z)B<2Te>Y1es#52s43Sd@{AAN02-MMlc_J%pq>BxCJ{8Jr6PMH0W8qTGoi~Tn{#v|c znuH5G(I1b?qL59Ot4(Q<33{iPL)0)~r@9vDSsW{!nEf{8mo}Rh&h9o0ovxA9SrD|0 z6HBhShgDJ6-zOR0cP3R&ZC>9LV?Z#QBX{j9nsRWQkf`QrsJ=n>LeNYg5YH2{)l-LK zqj&x*{G+pnIVwFhdK7=1_tIloxn^i8NfG}<)%q=S~7blBJCOhJSH z>MM-iAc3_u5hbz}5REuX1ziL|v3jnf03anLvDhj-ND6Y?Y;)xOy#_n7j8ptp!Y~aK zj`*z%R4Jdk-F}LBn70D$9W)4T{xr@n{-W#(o=HN&M?L0H&D%P3q_1XU3+19T!pSAZ zuAhR`12kZp&a}dY%k%tE&z|7sS>4x*Y6)GC=6aLI&MrC8FMH8$DW^24Zdg({h@~wf zSfa)~k9co0YS%IH*&SE3^469O%QhSthNh_On=}9C;Y9Dmg-uvHZ9u6z_Qlq4ocetg zwSdoU;=BtLAo9k*$qct}3?G7KNshWP&$2&fQ~fwjA|`q4O}^g{74yf!l)?v?1!)S1 zGB#P2mcP|%J^phi@j9L}Hp#_^V0b|rR&Q&y&h7P38pcI=cxvLXELte*buf0lul3A# zZ`7TZOc_&N^D9OmI@b!I3%*YZfWF@?p9n=Mah=|Q#1%RmJ-n@<1#Vbq-2v6v0-FF$_2+q&$(r4rmMpV z8HYZe>zY^~;RlzGq_@jPqxv+Lr2KYx9?#;yea4BF!gfBE|{+?^imqH0CARch41fo>9%BW&?83;;|=%MWxVi4`oZcwWV2EYKE~}0+e0A zHH;=023KJ*gTHTAHFWIajfx|TdRg`Kziht!a{oy1vQRrrEnSx79&<$H!h59Mdvn_J zc#*3)AK^aTUh6+XLq#?gViHZ5RB^!XqTnMm8lMM}E$6nX`YP0eil`4I`$|ACQNk0> z&lNEX5izQ=(4V)!y&cTv}%bh;A{q3{=((MhXHPJlDAjLJUxe zqZltd9IJetIyob)X`2(t71LX^oOo%}kdh5LU-I?c_%z+a?clf6XpkSKuUa1Dpo?fw z)fdoVp1l4zO24FLvQr>HNe#R^L7r3E#+G@{R7y0eyEnF9oGBgx(6Hhr=aWI=E^h?o z^76*jv9<`Pr}Ilu&{@9)x0oKJ^UbGlKGTS565}015U2i~e_$brxavyf^@A+S^?}~1ciFkAz zr*>8+-Q6FybwGxdyuz-}P#}E)LG}jU*UxzuW}!kNbe?>9QfQnb>?eAoSN4vKwtG(nta|uMT@=Vrc5lVW541_glPgEdicx zA__Xccoq^i2*-mi_?BACa+T}!XDH|=2>p)n@f4D>WhMuz5p!{~r?GG}UyLTt{V^~-3r~Y~F(b$sRg zvSi1WNGAt>Xu8_M&5uQYc5@6x5rJcE?$x=MDOGJLt~Hrs^08k-3LxlOx>;~WG?DwD z613M!R#5HSZy#g>NDE-dLC--5Uo7`T4i|r4qOcz4WoTaU?434jq_L+B3oh(A<2|XN z*kACn;OAye8*rxOvoRjn+7me+@U3(ME(ezjUhd}8JKjd4ZKcKyv(V`^b&*(_k^4Hj z%wNz~{`qK*B8G&%@-Pp8kp|EJRPZ8C`I=RKnu3RC-5g`F+J$3X$uaEAqk)#++e;S4 z%NK& zH|VmkdP1;oHcQyY!RV5`*_qZyw>Rk#5D=-143gQ&X7dWmVKAm+O)KG%n)+S7_G$S* z^^6vb2jV%1Asx=TSi8|^ooza-dO72ze2*GE9pCXa9gSZPp5EqXcw4dj>@IlTs0$t> z#mM?M5#(^iH?^$U(T$R9N3S-(%L^EKU*9Ppv?tY zY18n2&f~Wfz^p-+kh0xH#q~}Ad$$<8w{9?BvLO$FsFH2fUH>^**IMq?>68tS^ebQ= zfBB+}kSLGHN$&f$o2hQbJ93%Bg!{UxU6GmW5UM@?RLLd@jSkxx-5m5A1|2ba2J-LC z0GT9Yoi`EY25$F4c5C|Xvkp`Jx%5D(BeP=$-w(Gl&G&fHN$z^Z_1eRXLnLl$y(Fw7 zoT_@nFdSng+u{RO)nn~fq;xC^Xf#M@2rl>lK3K3FS7UB{D64Y=*+!oG zYV?eXbnkoQW|8BWwp%xx=lc4`*adO-hdyJgl=TBCX9*F-?GWy6I@|b9k7h{HulGlB zS$-hoOP^c_5iw#fmaH*k z3EsV%cNX?_>{;Hn7dQjeG|u13(%9sJoho+@tmBo|1p<@+_)&P}vKdwYfe%ANz%vXU zs$SvalXT#r%{^N1R8j+_}oBlln!}-=T&b zJG88FKzc#g{9X;cD>5DnlUt5%i5uw{zH--ezn^;L27_>%L*2&osgfK8Bc&?^w^EiEkzsjEX0<<86KkC&JS z5leOs2=A60dG!Ij6bWDIj2IrxE0(jq2^D@?11a@!UD@Li+ac3K2+iT z%6UgGmjV5om!eepdfDGz5dr{x7zwHsAik9)9Tebs zG{4l(Gg-9;b6SFO5_7lqux@AHNoV-R)4P7=?5Aw}9PrLwX_Nm}$Wh2xvqWl|=@9$V zW|WZ_K@=&_uu>K;I_EPRaaJ2J6hvmKQ^7ocP$9#c}<0-jdN9JbXh06NFveNl; zzN(uMLiIciUSlO8VPi|RjmY%1?kk$f{6;LUJeP=w06S7AT&apHp1aJ90IQF-IZ6wH zCswC{8Iu4d8ZSV@D@Yw5sMD3y+bHtCX zMW&AvNEn%qT(|H}hZg1txR{{c&U1Ft6ZQ)HV%B^JP&883=X^WuzvO06Lmf6U%lp^F zR>u$Ux*=#dT~QNC{>{hBIHLs5dcCMENcFvB)f>!I(bR35GJUb z(HanV7lo@AZ0{e;DOu6bxUX@$;Q&Cg_#=B%ZTkXMc6n`bnFlXPH8n zKhhmX#Y!ZG#+3ArACwlkUki5I_Vr~pohGgQB0wZ$oTR##G{TpZgI{9NoDx3Mt>s>- z96V*DyoO-K)wS*}MT$F1YBnT$<0DBqO+@}S3Freri@IVZ^jj6~SIHGj?bjro{oJ6z zBK-6Badxt;5Glonx}Kl ztwz**PW8E+r>5m_U+l|Q)!qyD!M5%jZY1$Nffw3@*g4nOmJJ8R*R_f4*GJh(fA7g- z@y6KI^)iOOU#%Ot4`i3MXS!S;z+&FDCr;ivFP^l!t*;4fYjwf>*XsV)F2RppoprbG zvJdVbv<+uIQFK01KG-Lb)3ya4?qYkCKM|2u>L-epMY32YDvHSu`B^^kLw^rI2pe{A zA4h_d8Eo{gleOJ?F1vgb#}7QLLfJTA6p@}b*uQi(HUOM{&;*olCgdoAX$-sJInYnM`G3L{P;_|?K3NvZeqtbUyV`CTAB(I zr%Brz9n$;VU&muxbkD9}Btdm%7ourb46T=?IA6J)=)3@=^rf+;s&|?Nukx|S%_L0B z`?Jj-Va^VTA-@8p-oG{Kv>D-c>!}$g_-Q=+V)@fT$z*D!)+Lxl&hm+kyeFyUFT~KN z5G?koU1XTKn1}>yZT9#Wc(q7JF9vNgzjEoWP@cr_KDDW<3pTX>X{m44Qh7n+PRd#C zHbGY%5ZTFCcUFu{S*#=d0m5CxnUc>c+p2#3WE{NxlJ<>}=tXRn2;Zz`_j($P79Pn( zvR>IUvfKVaih~Z9l0I&js4-8kaDOIf)iQTr_ra(gU*?qt{Rv10wgC5A1zS8#R0e_l z;udFAygnE=Yws)ZHX8QME&&3$Wf^CPQ_utO0G666*7^3AI7N%U#=utTB2UA`#f&OW z!ocZ-U!FgjKE5k*7hb(;csuQt?xv2-h4VQ%-sp*AcZ``G3^hUr&^sR>11Dn55*&R# zH0c4UzMSSA@M*$$n&Q0i4NA-F()xxMYfo)(qKr!~|9tO?X% z=m%*j@zkT?LNiHbJ8wQ@omR1F5KgMMUs~5ic)*N!^^Y&&K7g3t!+l)8kVOCjm=8}d z6efiGU(C5dp{-DlP46;qYOGcpu{3v1S3_C8P(S$Z{IzY^7}`q!WIW_S_}( z`Y~p5q(%Mo1NbAI0w~K$sfz!VWaV*W+`Qb#WzD&+L(S>|l4bYI59ad3z*iC*lbFpD zIj}Q&KSmG@8Et?V*aaz96<}=o%JFXy12+~KsV&Z@eV{pTwed6usbdRB?xNcj>M|&5+z>b;xI9vQapmHC za;}UIG}pgp%NgH1=lBw{rtDs-%ssq@$u|7?ce0f1i)v+-=fQpcO2Be`z&V-EM%(y` z$@{C$QSz*v#(KOam@%S4{FC!Y`xJ^hk>#d`UG_EZ;;yruV>bj@V? zmS<*EaGun7UbO^}P+*zs7!5)aY)py?canH5Ow7>E&v1iN z5v1Gq9&UYl0T3hpu0QLvnf>5=HJDe3f^WN}XB2gDeY0NIWQ{+j6Cfjj5bFX&13h^# zqfvh@QJhLoRGwM_q9Ebtkpw4$1)7#U5J&hcrb)Y%ifuEiXjA~#0I zxOyi{d>0V=QUl<)l%8n*v`=(oKI1KZVZqpt>D9s?Q3bYi^ZS8Wz)#Yk-P}m)nv=YG zA2o659CLm<+P;EU?v7|NAd#JHZ$y7C_tY>a{*@#W^Jjvxg_nWX&ZK_+)WJEHyX-V6 zbTs8`U}E#fMu+Hya*(eO$a%%@xb9?+-7CC6^#Ng2mHaW^+c@v~o`$K}wqxveZ@Brq zH|WQ!D(vsx_7D5KsJw;x0H`35%ilpMgT~MYHg&8!cgZZtFsyMgAmG=?K{#d&=E&xO zXWs7&>58p{-uM|W{OQ4g_9yegVS5#D77_S)w=>&&Kes18)HuprI-Z1!fN6Z&RK_^C zANW?ev7KL2*WS2%wDtp0fn(UpqLaS2P`mRlVVCxy1P>+Lr$Y^K*<5TRbDj zjjjoM4 zfHMGU3IG6L0wDI!?N3(CTp~09Q0-@hZIR;ImjI~N*+rIs1Y=?ZNK+Up$A-{b?zseF z6jJ~l1To-~6SNQD697PrtXBdA`0WA!$Udas7Hbk#4JB5g1U`!`TizewQJEj#al{%jH7y8v*;aZ2AIF6^8|ZPSw) zM9aAxeD35S&aGAj4+V2lrzWt_BXds3Vu+qDPMi#)X zg7v`;`XXa5te8s^gGqx~qG4lPh%Z+i9+5&*>dvK1E>SG>M|%ZN0UiJ)0Nuq3fcV3N zc{?4=YB-%WD-D}sY6vi8o%;4kEE!gsm36v6SokXjMGEdWh=3`GT)~hj)9L3NAdQeI zAV~_kD;b9ZTp9@&4c#~F14zPy)MM@bW~he;#!F&IB^4H==zY^S%LPDB$5N!|>m~`q z>!FsoK-~%HhRS86qyS)j0C=WItYGm2OaXxDEWp2-fQbH2`qLaM01p5NlpqzMSjjw7 zmK8Cbd{dm4J}!O{L881+mYoVdj*vBrD?B#raf>y)mZs>-e2zAE!?*)rZXV}Kk)3gX>5#w#{ z5TEow$8fmR7VieynY(xzR0UE!PioCI5Q?2?1#3FJOTNETqym)}pXpz!YcrjvJQ;8C zzjW8%7+X&a^1$2#SuQHY3=1}wM$y_QkMt{5s|Y<|N`95D=K?CV1N zdgwkWzw=6Id$Km0@bc>OuMYpOHpu_0tH2lG3^4mpOZ?wn4S;LEaNoG*_yK@G13U4H z_$9=b0pK_%?9=~~^Z^h^a9FRmq@^Gfr|wB2E<0;)tS#E<+!agIt3?uC2XazVv836@ z#hLL+Btvj@%?CsW&{zb_tM)EEc(jatkrg-|pS{?!!aX{`C=`!8>d72ALW7y$Ew+44 zGcS8t{-#vTne7rqRi_Z!K;#+nD$Sm!GN2hSUACCRnx5Z~lC%;XIXZAl-b8%qK zF(ra1w8zLANoqR6Bv*@6c0A5_+$}lW;FH(P3`=gF#7WNaz-jXGwZ;|VrdqYV=KV^U z!M;SPx$)f~P^?a!RoO1Sqj}&<>IryEXx8$lby{qLgDAeaMZ|;9F29@d(=%h>X7v~P zSH;dw>Fb(Pg2muHIOqCT6`5CVioS}0pNS)jRpLL;a!-Q>)Z({C7o^fRS`8BvlPGlZ z9VDsa1QBHvL*>6|8ieU_9TyKrd8EB`Lzin()5Io|kW=T|jnLRgq?`0gadGKc2Gz$H z&V5s!z$xmkthJ5fbjr}9$Cc=*&qda*Fxa5<>G^%s z;HV0!c5-QR4FSZ?{zAl9y=dgzboQ{;tTWrir|)#}6KZaw1yjHUwNx_$Eg+8hH%OUn z&lQUQ&pVR%)j_F8ROpHKUZrqBkLmmNwaeo|M0xvnq*{m&`ep~%O(-*mpfqGS*ks}< zJPZL-LiYG6@cM)}RV}bsY^jOO5^LqdVtd}h1o$~k2tv600l%qfvj$JHyWny-_|C@D(ijP&KrMP)G%kR%EfjJU=Mf03N(>Sc%~0ivPSFsVOf z!3slB7<}Rc^rBjlr_hdQ8HWF5DwwYVk7pRkW*i|DB$x?htc0>ilnam&;GjkWh@40r z)qqnu0WbyPktWew?aL!_2Apdr4l4*`6%XG*DiSj}Sjk-nB zi^j#uq{oW7BPc_FF5@TAOAH$jCk!Mul`?f2<8r{$R4X$zn&CE)%wk3T^ED&E-0-Me zTAL)ZXe!>kfiYaYVR3*_KnJIz(0V~G zbc0PxblXH!A>+%6z&ttIx9VaN&u@@Ffc`?dXMGF-)66)%0l%4jyU-$$g9#vJzE36L zWGKJAA^Vs}n7Ikr%35$?ys{pd?TrzVksccI-SrM~+a7I4*98Vr=ux*98*q8-G0DSH^nh!91>!7M0bxK zNz&?8TXEjZkx#dOBhIQPH;DI_H)~Vc;C$^Q{$5NkE%pCG$_4uWZ!jGgW$-^6m|VmR z`rn!VC;op31^+^X{{a$!*#!S{DL8`p|ALSHzp+}>e{{Pcbm$szu*Wn|W@b)5qoG_( zd|HVwMmKe%=(e}`x!J;bf>AZO| zZto9+y~}mQ#;6!(&|j~3t+wbJr91Z!;XU%9Qu=i2&S7bP;^=%!(8`IHeTyV{Re%f2 zYGBBlv^{FH7NI@A)DuEGR0#z|CgPf|6=qht-kC5TC1(EpF2*q!?&v;J#_4&tx1a^u zxbJxbFUN=)j7Umdx~P20ae^TR<&;3YpG>oT9oe* zz#!S<`~B%Wu358b*dU(bO(+4=AEc}=F8BT-Q?Q@ZW>e$YOjcO8(!REhTC;u+P(Z`P z=A%~m6-nYl@%;eGkSEPQ#zf4pX^_ew!5#_O#Z;o)bm%kgMR-=EyxtF!5&kP=7IyI( zWsF9B!v$owT0;w@Sm6|la8Ms(zr8kR;Tlu2VP^QP*HQTcodVVo&(G2~DP?cHi%f{h z@lNHNGvk1m<4i86#a1KqyD>Cxn=jd0KW6EjpV#k8x2i9auH7>e7QJd2=se&u=RGJi z+7?ghJMbCb)l$_4Tg*H4F0|jSh_*dA_UpWcpW=;NpK9fj>!8%-|$OYv5O`VmS&Y5DxezBtQ^b@(ZaFbBDmd&q;=Q zjxT$s&I?Y-*lFUgK3DK5r|1$YyrIQQ;rCa#iK{72W042s$MZi=_+gBi3oeMcnI6-G zwFzDamk#6dubEkA(>MU}OJ*7uSqR4vJMQ3s?sVZImnhshLZ0B;Zx^3jWOv^uFW;l6 zVfG1m{J)SyF(2?5jJe7RzJ2MavO0a+{p@o%{TZpw3J>y8onOwi(`fjy`*uPJRmg|tqN`H3vMa+^M^HOvIkNax z_c&929yi1HHN>&q-TdfVi&W>}QfKhXM`dH)8D8YXpF~h`$?YU=@r=Qk_ffH(LptTE z%E%E<<;ra;nAy*J&!L-rTUnqG$e zcii}QoHA`-#rxJZz0N9@@&dOl7OlSNH z0tLlPS&gL8qrXn_QTh;zAi;I#G~p5WW=+??2E+>IQL)lPjQ{7g!LN1*jsUx+Avt}f zOxwU8Rm6&iA&omLIHkDn4?ZPA)7u(SVP1Bwa)-nwu*RW!Y*vuECJB2P!FpAY25sg? zJ=m#W?%LEVeReZGjX%jcE6w2m3DCn4LkrMlf-dvy; zCh#?27%$=-UZ-j~m(oGow5{CPX#aKE8RqWgqo*gYJ(J_Y`$q$rmK2ld`n&3ag$v9A z_GJ-P3r5din~tyl;gbiEMp=(j^NrmjE??gHkDGUY6gJ)|a%NTDw2Qvud-anmk=Vz8 z*z>;Fg}&JLdy^F_AjMRSyvcIOTDRD=Cfq9)p01#DE5w{Zk_ z%I>*aEVGQ{X4oMK>aW-0^jZ!PAK)NKGS9hW&Pc_{c%p;0W!vm{Vk*NCrJ8jy&t)`6 zV9dDC=E@$g2M2o=<}2DAwvWJx9l8)|hj~kgY?y#fHSnqkal6OE#W@Ewr&v_bm(|p< z3*sGCmW9R0xlL1w*+lvNu5HBg+f)ZHvo7u2$L$mS*z#^8g{|LhXR1r7z~roy7YoVckk2tF(!Qin2zXI=xAVtBko zj&XHfpXu>M=?PR4i>aw!6M{NOlsaS*qMSj3XCny6@%o-IXdVj*2hshSXpAvQDQ*sV zkN%=Wb5o1A0mA2glyWJdRF3rQWx_H!#B68~MOj&MtYFL7g@Q!6d9D<^d1;26=s7t& zpOCqkm2hFP5~2GgpUQm%vqJ;~St}t|JjlrG{Kq{^{vb>_*BU?nXNfEp$ndE!R#Fyq zdv#jYoU|Ul@D;p?=-O_QbRgpe`rU^VAZjn&@?Eq!kQ@Y!0RMYz_(G zgnUk2S0heyMMoL6JWl=S^?YzfK8N7CqC*}V#D5e4Lz%jWP{KT$4J>To|0qL2PV~Hl zIh-7q?_9wdbqflv^a{B6_c=w;CKBl=No0PX4ciL*&|G#l@o8$t6h`dX6W6@ zSVH2KMV)fqZP4vvij}m}cz)s$_W1LOgk@v#FW>Y+X$tT%I4dQ0AaZ8c`Ah92?KrRd zo87?EJME^tbteClRiTlNZGt(!VNMXklIX~V*ODzD^chdgV@ z*p((%Q_Pv9SYm(KP^BcV-`VGaxss#=y{cA9BwFCOvfp_Lh=O!^|F%YZgc?Mj$R(m< zw#uPAY#iSL=0IRIC~&G9A=W1LYcfO| zB$Zn>EX>SmaZGdC9q%i86JDEf$>3NxrWk;7V6oBbYnC;(zqRX@OysgTndIh64A+b4 zr{faV8#k$7r7);3N?E>$OB7mGB2C!lSG!Ac2^!r%uQQ}jQ$;ZI{xRoZF}Ei);5-nu z!tTDSKwqhlV5!$?a2!?C_&e1<$Eoah!82+iXB-)BJajll;c{9m$rMOpvsRFE`u|Y& z7GQNWPoF3d4(^)Z8aNOn0fGdV1h<3BK>`F1?ydnsaCf)h?iO5wySux~4)6Q@?|!>? z@AK^Kfu5e8dFJ#~cUM$~>GW6|^;!za>5QWl# z=$+W#?h9H*2OJ^;_p>A#RD>cEXfc%DN{B>=8$@%<0~Zn^k@6dgZ$QjKQa~Pi0^VCm z;0}oS5ZnuikhDRF3Lho$3Eu#*P-JuC(NSar9gIl2Bkq0nP&%72+Ri`8VZUL&A+Rkv zWp4CXZbSy>E|(Z(hcO2Bmq;a1*L)9LZ7PMuxF-4JwNVRLIfsl-J7cy5A|tdc{CWH! zUZsq6bUIRcr(Ka7Mxk~|Xpk%y-i6Xj&I+U_eSjjT7i=R*k}vI*$AC)#?o0oGqUDuG zLH_|lnGM`QA(i2YNU-OKw|}d9WU}~kpg}#P4(!w?(rt{vEpFYG_fwI?Drd+TDC=0@ zKZQoo+L0a$LlMzP?C_e(t?`-~C7Kh_NT@=vfQ^@bQ;;NR zH2P*Np&$kMpVVkVY{b|ok;W@Qd4U9p4wP4Zm`JB12`Fu3qHZCAj#l&^qt6&6R-%`| z=x5=}8t9kl%S1A#*(VooZxoM<5kbbB9dT~PjuXqmDVLlbp`Tys8K`hP19on3gs?%b zAOxs<5I3x>gh;sj8*mIVa0{;<#C$jEoRhvR34QP4=mpe0y)BAXch#;jI=w;;So${iM>iS^O7!YG%uibIrXH9(>eTMi)HL`%j^q^>Fui!DtdwH^@)4y1<><_dO+=G0|}ov zikv=r8~XpED;Qk{HU|8g^yNkW)(JubEgwcet1mBlabbuixK*q5*1&Q)o za}XKiY_J`Bm@7S(5*>0nmzcAdsA>Ted)JokH(5m`CdFWA(R-JEx5aqg58=y_q-Wu0 zhLkOMjk{7C?aPq!SYMy$PpeWb?4S0&S0Owiw-9`mfejxsP<%s+AtV(!3UnQI1To4e zK|^6fVStEu0ZMO$q+$S60hN0BZrIkr}Jt4loA( z7CttaZ~B@Fk-DWL?p(JImj9E3)*fTiPaIg{ZGoe9(Je7}RF<3{w^v%R2hA!g86-oY zz9Tb@rgINC7 z9>-C&#`xzXEU((9V4oK(Kdrci#z@6>#C?(GrZ`VuV(Da#ARnobT4zBOD7|y~lmwm@ zDdgdD6Lrk@P!cdDJ3{(#U)u6_R?vC&OV4whRJuTE*wG!mszf070iEVbd?&{*_zud~ zAI>A-SLg%*ZyN0~e)-@(l{8X^McXGH@%zSZ9U3DMHg60~$u_s}C9uv#mlr)_CdlZc73B(a)HW3gU@mlfV7|iKA*Lhm z;3F|$0Uk`ngpsG0U-y;SRoX3kJ_U4Xp7S0R9r^A*FG$CSqi!|&!=2u(@-puMFX>)w|j!Rq8ut&r6#peJ?7{5Jp)}-FH{@P^Ue~)iHZno-I z!jiz@=$^ov05oZ?J}M?Z>@A}i8W_*`4=p+`D6F&332GY)Toc?emlLK*(Xu<8 zvGSx93KW}S3yZt>M`7BykHpy%xq`Axza>Obs9vVuRO@P6ZrIGqjj;a!SvGIq6$&b0 z%pLHJ%igu;ek0_{q&1=-DRp|+Az|KF91U9Qqka4UB#$)<59{ex%Qs3dvwBbd#*p6y{>Y*dQOpNDhq~zv}M8k`WKUu z#VqjPC*QhbM5)px5<-otPC?26Ju09PmO&QrE3NzQUwHtj;Xx7&6t zxAo_>mQ3-yzRjQ_2eYCblqrNPrdf3-sjlMw>+`Y^cbqqffA;HGC`+D74Bh#$W!hTBLMRJ$$ovG zqC#YJz4*J`_Bj1k8@c)g zjxA@p$*qOw_{WOiSh|CpKgOE^vISdLDZBQll}sjF4Lf|-wpo{94elFCbS`8z^qfp! z$EAU!w4YasXLLU2!y$Y^Db~{$qi-8Lr=d%+dpJy-mH|{I`V;I*YvqhjSHH%eQgUoV z6@5P}^ZB$s47p@ck&Qm-c(l$PGZ9eraow?aYQ|58KdBd8xwA&#NKbwmuDP5#mkHO- ztWBQNT>HwcC?FH-34xdl#IHMTyPiK=^wr~gY@AsV>fBbim<_kQ6QF0Eth(9xB<{hZ zN*iPmAeEs!HN(80U}r4tx?23sG1H*dao$c{sk|a z#HKN5zU)9DO}W6>vEhyak_ELLEUfGAyLoJ`da|?`dPKze{m}bd(X4q>fE2{!;~_vd z*E3P?;oun4+1W|keeNolFS(H*Q~vCYwIQW zRGfp0N(&Wa!z>7;Uzs|7KolV^O|CZ?gS$73_`^Kh(+fr4WC6_Vyj7S8udEJNzwOmx zfzmh>9aNG?l5F0vgpRLCLKEE9GWl*>+uYcKa5vBm7n%9BoiH1wOstn zvfF?tFo2Kn**`+ib6h*0^{;`Rv)1pqrXN=2 zSwV&sQ+vsNldI$<=I{!q_#^M_>KN(hLl0VTT=Q>ou4&IM?#=r>VV%z&th-re2bm8V zfA?8cqAo#N^3WOq*J?UxMwdL($Ey9ao^1LMR+3K+LT~f4?{O1W{$@*SWX!9uX3;G}OUOZj3I|P0QW9tPj=kKe{VcGG`g{1{M$gGFlqKGE_+hN zFqBA80SGrbrq?(dzgMY~cFn_L4TfKVgN~H!*705-yyo=cg^+sM{*Q5^X?6eOW`Sqs z(aK{pUL=l~DO^2JaOtMzrRJp` zcqgchB!GAf9dB@Lo#uMKD?3}8E>A|jxI1|8aNWB3`0@SEufPiLKatw|;P#&?XfM~n z|7N|@EgwMq`}Ol2AH~g) zD{ysXyg!1>?d%fwo?E_;^TpOnT{;T{Qb&oSm=ki}!UTW5@G5}Sv-0Gi>)fAm@E{N) zcSd3+%Qla+K0QqH>~XDqiZ5PAJ#5*}+5t9uC|qf}#jP)hVoI%#VJO3qN@-D3QV=>u zY23~qEvrwJQ(oR4x(4aW>oKD=(7-fFRSnw9@BLLewA^VtI|dNbZW`B)dkKYWzomXz z7MGmt(@7~j+^}w7LNG$z7I7RtSwL`$nT>tu zCTrTi*t%r~)h>VgKUii` zHsB=7kc2ExW-0qd_Ucg1t#_a9p+faKi*9^t_?LY7OhLH=b(5%bshPuBtu2Gw4fWam zS)N~9o!4nCifumaS$MIoj*m0{DjB}l6654me}1@R3-n&xi2S+Oz5JH6`m%WB$^oakh5Pn+ zbt@n@?fCJ={cly%{P!)-H*a63icZr-T`JxCVmN~_pJMoyVqdG4b~5!uAy(QwzPV&w zU3z~GyCXIVnI4_EK=i%K{V$%SYu|K&sjeTZm{@)h9p|%dLfmQ^*GB|)@>gq}vX`6PtAADqz%I4C>r616OK!p6 zUCI;+RW533-n8&IGWq_-#9pJw-_PgnZem^1qLBr=h)JX^)i=(Hpq6uw^$(-i17wy%Bw>`6ks>49 zD<4GoQs+``Ne!w`4HDVoB&82s-i-@`g zbuXKvnv1u2WdUdJ%~_eky7inh{5w!US^mpg@e@)+cWsl;nFY>G4y^HXi2qxZs;$ zb!}7W_0I9g!>@*@eF=6OM7j8fECn>}JC(Z{kGceBB*T<{#2mLuDBgVRF6kV;YYyCw z+o)KCX0_XQa0o3e&VDfHi=vErYoI}&BJ9TC5-j+o+kReIxn6JGV{Z*Z9p7@^|*CBnE+Cpx3cJ z9lKwU3LR$MPzwjupfJ}+xRQb_!4N@c(uxmbS8)4GQgeh+f-W)-G5&cuph@XZ%Muf+IU;uTNr;F$ z!g?bc$gTNZn}V9<&E#1GXjKcYh{n*pq^|F}q_*$X3X{_&Z1}o&NbYhXl5a{+G3D}7lM27Mib7aV+K;luL)h4_hDU0-;66peCVqX{v@x&?0k+&GsXl7dtxab;M9Q4wS>yR4(teB z=`)JNaB=#0fRdT=b6d^~M}6HWvA0ycmbM~Th=lPhl^o4-liIX`?&G!Tb|D@M?o!RsZNk3lO>BALPE zbqc?Rjr<3)IqSP1?4o}dG8b2!>epQ0N_7@_&YH%PuA`C;W$e0G`d;>U?7G!l@2dFN z5E$lj5W}Rzo7{#UT!b-A%C4+hFVEtY4h_cLi8Iv^)&Amn)hclmjXLbYC0F(Q(|_V! zVTRYYz14}$oe9(hVJBh}Ufvw00jeT2F9S4A!`%r~Ip<9mPXyetd-|YueWfzAI{hpD z$`yLTh=;HnVN-jLweY%klDV+I-mqUug6^Lk4?l^^28JGazW{|-jh*2TU~Z)4-S)=@YHX8E(cuy)FEwXA%f@g}*ld zk_1tTMff@^@+`IP&mkA&yMCv47bCu<9r7&h$hQI!7p~WrOPlu%&zP2(ieWnPefqeB zA8R!Qq4CY!&NvrqWj{Dt$zKqHK44>^N`uwU5pFc|b}alXUBa6Zlws-fNd5q<{G z_}z51cNMR_4UxNJ4qeRUPP_OhtRNtUEuu-t_DvXsQY&EG{?5d*@TfCETb_TO+PU6eO{Euc0fz9CYPF3mVnfHb(S zs?NlWdGy_dIqPthccHQ47`2J{OncSQe~EC%ox}U2|M;EJEzGa#%B;(VR}o+9KTPq? z2`RzF*x2!5bpXhxg73;tw37ccg{}JdGDG}Zq*1|34Ro9#n?D!ydhlY!&qqQqTrLIN z^$SiaRXPi2+e9qwCl#Xj=;LG%8b|hKS0J}v1*u|CqVee&`hP!O9?xSxe=)OqWuUxL2!|X$*6;tB*Vdd5`cSDK>Sr%BZ6PPPmk5HTQfQeKd zL8>Boc3x2ie>3vTXli8irPmR77c7^FnF-k(OTOVJl^e<6_XjU4UD;vk=k1OrZ~7lg z9oeE*=KAOUGq;Hx2j)9c(jB8!gG}HY_T1nbl#9COJ~y60dRNXx|5w^UVl2o0e1gF7 zhwP^GGs+5z8{TVIhiJGDJlAzR3|UJ!nAeosj~ivi@a*kyDIg!1cDQ!9(Kgd_K4+qN z{;!O2H(Yn*VKQo8_$MsLe|k=?PRiCld}o~vkxn@d%{D_jEQxeiUGE;0KoV}Hlm&dp z@Sw{2lNMOdy8_?RUQ@&5$Qk@w*cUKuFk%0^TEcHZk+r}8}^zK|^F0k1L^l~cEeDB3w0Y)2{ zT9+*lPLG+7c~mf&gLxhu7$ixKR7EZZ_T0ccR!jrQTA2tG(7TI|o=)5tQkG?ZM1R|l ztE+fmj2Te|DK?5e_Sf^TI@a>LpkVAOP*TtIc* zsy%d__GOn@w*)wf(;G@n?w1x%ZBoUZFTXk57zyO3ZSPduy;E~^y0Nq$`U`tR8Ga{6 zdQf$)ow{59{{w!~7eBgPPq*y<8*}o1gS@1T{J(r${dMX(;`@Kz9Ds_ar(5x!gJY<% zBz9G+RlXs3OVgVJWDPnFZeVT4dP~lph)0C?69V)Ewk-ZlXbrKL&hypF3cgfD!E7+2gXHWf!;;8YeKI6-dd}JthGv${;4a{>8i)b`oxZ=Hk`iU;&l3uRNpRB@f$0x2xIMu~(uOluwgQq-W zZ(^@4uSk;gheA0DP;cE{GgZVWBES$0ml7mWhJqe!E*u(4{A*>*k``l=ab(OA#Jr~G zMg94;Ix7Hg0+S0XbQJk&e9w?+rFbPdW0$;~^SQBQD?Czi3*{X_@S{vbw$GhoqG1-l zgm&P$VPu`tI+F9|n@w$_~8c=-4>YGRpXP zqRNVR)$*bcc2Ol|Hc>1IQ5n2R(KaQeNj7YJ8l_1N8U=iO(FhQ>g6PDAk^&kwHolmM zvXZERk}_Tlj)I~R&BUO*5H_ANHv3<^c02`qF$poqdo&4lB_ZVx@(MyCV)#l!(rilM zVh{x}EK&9@WOM~=95HM$kQiky37&M1+E;7^B?S(Uf&_>b7a}SzrmT!7Bswm^CfzQB zCnkms!dFHUR1*DzH-wF?BqOaPrX)Wqh7XS|t-!${EyE!yB!mqiV0)kDT7zq`>vXx4 zHh1o6cr#5sGQKq3Oj@JxAmG}PI3PTsLExX^3LQ{z_oNyP-8{Y|tY6ba4YFoQ*yoC6 zt+D@J792C?>KI$gV&6L+p2s9xlN5ahB}n1Ae3MFT7W9XOs*)}d1q!2hBZ=!w@0c&M zk+TGG&gP6hl7VefByN{#8YLcrZHoRh@%B{QT#_syn=5M~hs7VU0MZ&As5nY0u6Pkj zIZ<#h7I%WTLoa89*D~z4OE0G{pY{uLz2IQ(RV!Ygn=yvC;tfr@0I(n?ZW{{QCrM6* z*BT$qZls(OU(Cq**GT3~jEQ={&;A!p&G3Y}=L*pp!LbjQrI7dTNwZ2T4^A-UNL#^?Y8lZ?4IDlzlQL#GE!p=+Xf;rvz$ zI_YJJl0Ss6Rv}{et@^W|Wpi1;c4oXpM6$0(PbPpo^lUCSr8R#RJg`%SR2PvfSln7t zBv_F|#p`yH^0FT{4HAjh+NMaRX2N?jdKbe_i+s^9vW*v*Mup8_X5g`69{l!6m4IL^7M}?D@W`Io5*$YEo$itwus-1 zz8IYuUK#F5b+BmrUp|dwY79&e4rLZhkz3ZpJ-2GE@hP}RxWhCP2IzS04V<86exbTs z6dRANSkoG5VQFEuIZT1Ije|RtCfwqR%{Zpb4 zZDB>YSQjS}M1qR?*M`Zkt&YIwDv{vSRiI}=bKveSB>kmrJMo4@xaSfA&ArRNsntx~ zSaZOtmauY3N6cqIO@knFNprxdHtxN9H)?!YE#c5U(`Hjsx6eZ=D1$fzRTy}YvkU3k zf@a9`Z-TW)7Rc{9!rnP8sUR!D$TjHrffII9Ssg*Ty^{;rSP34bqeTw=~YY}Pc4KW3iS-Bo%N`#4ScQj5Y{^0G1odfxel0T zp`yKe$F!MW8+*3I)HV2dtYeEwY*4FfkXe6=+Qfb?m@_CkRUiSaY=J&{ zj|%zwlbm}H<lQ6FZsy8P?vs|SJr_*G9=1yd$e1=ANeG{i|=lK+@0zk2nLu`*y{ z{4b35f8{%*d-@>0%Fz8^fLs4_Va+6#U-thBEh9?RQbGTD&;K-__I-J!mlX!={{!Oo zPa>pz6a&_0TI(O1Xc5Yo7=QoXYJ$ve^LNZ3plSWFc*oS0Umw!NNw8|k)OD|>LyhXJ z=Y9+~rG+XyszI>!F|KJsGejM@*LN1{e^^#WxOy#6l>B2&$1J~oK;1Tu+lmklXlb^d z-_=c-4C`tM)-G=}2dv4h>#7M;?^5ThSr{~0#?v*D2737$vg1S>X!i$pP^aUZpdF;A zj$O;Y^huc0+EdX;H+kQPJADk_j$SfGUkhK#;LMlV!*v2X2ID%*0M}sjEw3Y5Pv!M!)RiXpQ z_ga%$Q+j~IS#t6Zq_KvdsBX*cH1=c?r~!|B2h!U1O%0m8|G8XeXNl_=t&Q8zt&Jt{2Y4VVz{P;yek2P~cbD}q zJ$DAm#|%2KsvGeC!rmNEU=`PY005IieMPI7HXA{8Wx$4BW>EADz&DLqj!u}6w*Fx> z1ZxXSCzkJ!7St5{WAyY8-y10Bm-$*70F8vDdr1>!NgWN~h@o8%JR!mW13Oy)*b=m} zcaLDL<8cvH-OU5EC$QcNxKXttv;aVyt(e3zESWkULpLwxyRNu22LKkTL0AX$tywOD zGfo16v**|s=6GreG*%Y(myZW{Yd@X3v0BI4WLp)B0wxJGy*1^_sA{@+fS{K zl8z0{feOHrXx4;|=0E*g16BCJeZ!WJRII5w_Uz#iwHIjYOF&%$o{Bf^0E$CPoxfAB z90Q-=Ij-)(`N9!0z7vu#bsanrQ~+a%@Msl*|Np|2pJY1D%-zHPb2mrU!TzZ~q_(*9IVIXfj8=0YsC z%u#xFeviJqiz2AGuj}8e958M)T+^IF|fP=u_|LQ?X-I^H$a6oHfDb)CC z!uPg>to0c~7^PVI#2JOetJ@qyZ=)o}H)cQgbJxU_F#h5}Oelmj)f0z0IA%GzX^vJk z5`Nw)v2L&;W4b7Pz2IV@o{;je$&8Q{sMpBzehiYCCtjMsoZh0_0Lrm@`q*$b#p3OM z_Ni_+M4bb)a(k&sh(XH#KnysU$o7_iDe_A7R;Eeu{s0H~_chiS$kYh&vHAtuQMIVb z;TNCU(lzwNdOzp@Z-x=VHnQH_aXEj`*W`^&vOY^=A7-csV<01bO=m@99Z?qK4~>bO zoh^0MW{d0kR;hXMxNND0w@3L){73{}ybz>>k`I7R3l@4y_&jnAnK3PsUr(*hc_#5F zdlkV78C^8G;X;s?k_xT_I6viS$eNk6!yd8C2$&yUcK@!4fP7T1c#| zMj`v{DPD6h73Qm|Hk;_|ZYR>DpdU6e^GajTi+9|PeW~s^D=iHisk#T9+)Fkcqr(Pb zpCnu>dBI!?I^jLqpHxvxR@LCw4ln`KkhE{HeK-APjQ$)r%3*PRIu zB;?0i&}v={OQwRr9~P!8UFJ@HS4;6*P}6;Z@*BF)Bo1Qfr*Gcqh@HF}gU5{@5GlQ( z=5Q3EY?$b-O$Wl7Gz&T80Tzl_jM?WDSO8@F_^B56YYb@rX|X+*RcQbRoG@0go(tRs zXb1JL92fLQGxmNJO``MlMFKuNE-HFzHbV-{uD^Rndn_f`36+ zSoUm6It|I(Wn8t5a^;hU!%Sx1vtru%)mNt2T^z1ys#8)5T=RPC) z7JnTwm1oApB`15WAr_0;U&h(psS>tzYw`8_Ic_|MQk_+OqJlHFX8EkRR3<(d8oV) z1`8x%A2A%?DcSsOxlX zK^hm+Q-&oD9es{(zwBnn!+o=EWZe*m{qu9}zNN^>;={V%_smPD*^lh0^Ya_Ds{7h2 zZpXho-RC*-4x9WEu3mtXXhLAXf{KDUupU?QNZ?;Rr7itdN2R>GD>B|z8CwyEyWP;O z^E!I9cdbXWpW4Mb@1}kqRZ@>cEbi`HMML;Y>2@!9>VJpG*RBmP9 z6Ua&yteUDXV#9O!15*kGquX8@jt59W8}V0QFvG0<>jdn`jA_@2#iwni->8KQw3gL< zm4KlX{JP63ho+v9ds)Q65u+Z!IUAYO5%7^ENz;iH{7$nJxjON@dCU>u)0dH%Iwc z<|);!sq3_14k!v1;;Mn?-oN)4*|Zy>G6*%4Lt&HBr~7j*C#RA#NeH9JZH9V3(v{l) zYQI25!Y_;;a^X7+K-sEQ%jZGZPC!+|+L&EfQtM#rweb&;glxm!r^phu>qb2Q^)Kv8$1FRpW_215fEd<~P4j zPt_OBJ3`}b?yJKc_(Bep`CN735Y}y}Xed#$J_CDdW}Q0rr0Q9^&liGGchYcg#Wn}J zaE8T)=$RBPE!5!Pk??U-(9>GaqBvw*M^7*H)rlXh_u*pRAeI=JAuyp~?p|+Ha2+33 zQD?g`lWz@jWxEyMrNDVT8pCq@Yl+4HBbOpx!-~C-lvI>^g~$mYl6}`^WdZ|w=^PO9 zRfvsoH_;84?RpoAax-WmBrLr|A>tJn8Ky0#S=AD-xrR2U81tpSB5|yt4uJ|cxSjQvj z_r9y;teeE!^@w{i#DsenXOHc6Dk`c%ATU(E|GBhBrrQvC4gyvgwCn9X2<1-QO3U}} zJf^2sopq758FR>Oe!%H~D-pUgh81nc+x5Pqkp}$D5@25SKHGpZAzv26YqJ|^r9f5t z?X#a}geIw5dH=B>bExI~>;&>Mq4pER|}EK&^`eU4D; zfC1F!;ju^Ni6!XNC9U*upd4hJ2HFU_Sm|1G6_+>hBGBDW$;F%pn}R!NVR&FteZT>s z@a(W`5N4Uzxi;u##6|*U4}4j^Sut~LJS_){t@!5l_qJRfWRC*!hE|_apX72XF28$_ zE`6+-cRTLkOat1DT=AY-a3!1{4DzM&7NQJ;vLn(|iiWzf4LPUglv@@A3u$aMvV)ybRsua%EQ_j?heLnFZ zR^+e9rY$W|Mio0X3N&^w4F{rbC$I$BE8I4z8Di#1hAy4Fm58iUt(f^H=lh%XIM2|7 zjpf8%9kzPjTnuW*BQ0SpJa->28aOXsCZGdBUjqvtnE>aq!?Su}T*V2C*KOO{S6{Q= ziZ0+72nV%^K| z89XoZ(cbVzO}QRU=bdbM%w;sR(rmtWJW|x z;sBnih?D1v;CDh;K_Gr$gt~bdp;A40Wryy}@!G&%s)DoiTCXSH6G-KFdN)Kd!PB$q z+9vQjg;nR+hkQj<>9Dy{=P74L62|sPQw+DGO%O-puI66<@O|B5#o4Rh7nSVJ3Uf6! zWx@XO7oN*wc`0)1Aa`58S<^6|8HRA`7qEJpU^${FR+~5V@5Ip0k{npwa;Cgs9`s^_ z*%{(*=2qwYWA$HNm#7`{`i5gtkO|Ux$x|f5m7BnAITEC<6(4+>hLxSm;dBPn0Ed%Y;Se7 z_;u*@f+dPHU~hf%b|uLtqQqki^Qx7EDHh`&a%daFoUa8*Wo0}lJ9U4npS*H?E)vQT z^4sX7qkAjD{x^T8*J!6N{crdP95U5$tV8K8MPd+DCH?H4Mok_e>dxeep&tDM>4!a5 z=)?2(`hqJxo%6+!;{E!ZPVLR&wA{41rOEHRwiSeDUcn6Q%05LPH2|eu7jW!G52O5E zt9M}CN+Ctk#8t}WC`LA|>bKko*+_HB(&U~6n+&*R$n&e<$2A_FGz`-I%A_-oVar5s zxGtUyDoulX2nxIeI|t~)i*IspIz+IxY6{(Aznx#|GK(dO6QdazV&$yKQtrzIQInA< zpX-g%c}vC*w7KI>f+RSkrM}#n`6l%lZ*940(DD~){K<_f=o9h&Savo)u%_mu7lX`? z;`gtS`fr%3gs1%qZ0bwTdd&GLQ*1oJ)HVhhL7d~l?}QU$)*lHIiNfSI;nU4Om&TvE z#;)Z*O|yNJVv%au#H5?IsQf-i5Hua$g$9ZkFOt3I^C|tReIS@4Bt?`+^#ix;r9b6+ z3&AL3y)LkXzQKZTCxgWZ^^kK97349Kn!qmTybeD2(qp|rq5iJ1U%wvnT!cESMK`k) zTJ_2H^3M^`Js}g#U`^=u%z~s)LhK)a707t=!kHs)5PZSytT){dIM&gz%mfVVL#p1M@Jy=s!Q{QEa9 z<2SNS@z1b)Fo3zfki1U@{Pr8yeOI^J6?Mm3fVH(OLmOvH_0R%5WgJxElJEnmEpTA9 zABkj_P1kp2Iu;e;7ECQQ=~(bW&ROA+DB#=tD36*KYHto4dtE`-uAd@Czb22DP;GkD z+E87t>rE>BjL{81z@oBO$MTM62gAOI5_tctd8;g`rum@UD*xG(^07j0W9fhis#1UB zLtf}WK<;^(*u(>eL-V+>*y{E$$s;ex1`7u$7YSUoFs=J=4=9(W{bCe)h4?J@b=@^a zs7pJRl>;L{TEysp6(|qn!}PUXo~;@-DOIjB3)+uD&ah@_~wiN!Tr+~XeEUtw_Vof zzqm797+<&LBD&s$hX)eUNXJjSrW>%J4yjFu5wK|iw=Ytcw%1>T7puohm-f$mT+#1R zJwpGd%jbo}$@mkRg}Z%M=kI62f1Ra?Wnx2D;V(YyDSS=IwrcH+*yRHBbp$j9owW50n!p&C8j{_fi>`8oKTlnW zoHB>ok&eX>=Yu*tHK5SNsoNX9Ho*%;^mb181^m|xtV+6dB-|(RD>;>(Dqjt?;Jxsz z&GLkVUCJ%hIWno3;EW0T7P20!1*vfhoUpfNYp%unZucZtHa=|ydg_S73Gffl@J z*BDPdZ>vY9>o(f37^2AZ@!FTwAq@4V6Py%?g;ems#+!d;2KnCRY|G0}wrA>DM&1yg zN49G9M0u^(*gWgA1c%yjLVv74Ga{gD5jeIp9yHI?rHdevs+i+n(pSmDmT^a=v#CU} zh{^M85cgKLk7y{yUA%Dr%!u)3z-7vsYA#zLnvOUyxQp;B;5K0YSvcxB=>t52-WVeB z!{r4$8)Emj>S7)QU)E2N0v``*)xUzs&Z}>A@1+>@Dqb74b|rBNjFy->UzDX&$P&!D zD$x2O#;uE9=WoFZ`PhRIUK&R>DClKA98JK}MZETuT>jzL;y~zPa;e9$EXuBy|KgP~ zy#>KFx^o)}E0!mWA4Cm%k!W^#UnBu;{7&!U{+NUK``2A~f5Ls~odj6-ZjlHDZpo)w zrzy^geiBOsxNHEwF3|mc7$Jfs6fK(ht=vE4xO=pKjH9r9x*YL_2UIc zk1ZjAD|fI0a5;cT9*xhC14=qJH*tMal6DEJgeqeWsL@boHtnubFYM2Zd!?6q3AApX zB?5KF_xI`vW2>QgBOI=^IvF&-OT17}%2$8C5<_fepm&Ol11!l|2 zqmY%nb~(Qr#zBwN!^_>L`h8cJJRw=1Yo5pF=vo3wwNF*;?MPNL$!rLtvX&!X+9fU2 z=C&1^9tB{wuh++_jd&I09Aixstf%zVNA0V_=9&R3+3(CgtlguiXk@{_4y!zGfMo;n zt^e!LC%{PW{z-FaSW#p5Gl~^q>Y`RCRfTYsWN)1xn&~s<%pk{xZh76cQN2^3cHq%s zVfWbpG=SV7HuCSfBgX2)zmg_h8z9b#oqlt(Ze-#8!e-*W_?2Jltu6AA<>TU_E`ycQ zN=?l{3KHmbXo^q8$I=wN6W)dp80uLxOZfL~UewpF(bmbH=9{tA#csi$BJrNfM;}Y) zmdtX%%;J%FyON4g-wf<$Jc@gT$=khf)EtCK!lb4?rzJvLxkBM(J)QMJzQ>z{nCX@` z#E8j*v6KZfy@446NGY0gwS1j-1TGb%4Jx|fV=`c>usMt&^yxse?iR%9AjZ}xC!c;~ z`&%yqvGImUtAwNu7p4s~R({&JB}?iYPg-DhEoHhB=edXYU%-A-y2D~4#=`|FhZh($ z|B)O?l1oc3EjKI5?!=)t`@u|v!+L%yAm_NT1yJiC3f zOd&Au`^!xHTg3D#m1V!hM5~)BQ&;h4-~MMpft|8V4Lnh;KjIAVSZ(P-{5~(zHFMCp zNayL;Lb>Xa+p zxxTgwZfXL}xrHdHuOixTU>$yVQ{W=1m6LnFYMar%No=KkUVCizASh`L?V4dY1f?6G z^a4je)gTIRpf)KQTUlxb13WIR_#?4B>)XWlM0#jQpGby3Zli3VtTEhB^E1Y~qECpvbUU%qj(zp z5sDjb!iK&M-CF;Y<@ql=it80CN9Mre3q*6oofYyBM60xm&&zzigkw7bt|E7kzgTAl zXD)eTyG1SEYR=KWH1vDEzhnm8hkc&7l>Ykq$B)y8SEnBPuorn_I*9YSmss|3BTZ-s ziY_BE-uGC}#)oCj+}w3HtOq0Jm z0*5&^H~;j#@T`0^X}}B2gDX++;90m~)Qmj$Ei`sjYF7C?hF5&^Ir-^6_x!rWu5R2b zPe=&^5hfWf1AgU287>P8DA`r(cg)^S_i0X>DWZ_hhYSZCJ}B@?xUr{I65+pEDez*L zIZWNkf;y8CyiIjXtwmy9XEWyuNB0o3&`(giROIvv?9)?NrUGkLyM!bbub z)SeQ_i=-UQ!Q2xefh#j!+cAw#xPFwnA`TwWpS-U!RLyCTiaCjSR&`BT*wo@@c6$3x zkM;fQ9wvbKNpH8y`TR32!;LC|M0d`+{j&8eb{bq+J386f4dj$Vmx1K;1PtW=a?%w@ z9p~Gx>L?Ww$J#9Ey{Kpaj`iFI=04}pAC6ipgrW=G3H6Q=}CY%4v3h*33YSRm82xD_#u9^ z4MxrjcLg+RS(52ypmF-a-4G3TnDgmXsb`IZ=dct@_05<&!_T?sx22jtzCPwgY~DJ$ z5eFa^7`m!zc0Y56G>PJXro&`W{#jp90+w1JJ`SBLx2)PGWCRuW{L|)1;g|J#K zA3bw>evJz_@ZERefA30JRel&WrdD@(XQzs((gV9Pb*}GtVoUggkh<+p0T0KE>ik7e z02WW$wcjOP2@uW>Jo9Ve0Uoy1Q=U;~uiYF7B6t}XuCtIsI#<~kVe-RhPL4(YDK!na)S z?QfRZinUW6$LhuRcaTc_9OPHlw0r-z z5b}?`#lI0XHDDU?pYY#(!~OT4L-X_d_cBrv#}6%+5iL6^i6#n}WSMt4@@0i!L;?_vI=9d{$D)*UvH%9 zGx)!Km>MnN!%v_XlD)bW6)y>DG)1WhgG}j)R2{|~nyB)JBh{H}^7i)2r%JOW8y%%g z#(?8D4+|fZy8R(PBRUNraKL1d4&c7P=^f*zG(tuN$nntMWBu|OFH|g8AulC&nga4e zBxAm8zQqxu^^9gi>wOX`%pTE1pH6DV|H0Z@K(+O4jlM~M7AsJ^Elz+IFQvE@DFiK0 z+#L$R-J!*c6pFjMyF-EE?(Po3y};Z3pL5@L?i+WE_lxJzg11E z^TsU1)=*3uXR?w+QVG)=?={La&wSe>v2{lR@1D->(}09^V(S6b@}nx#QM)JKP0RHk z!-ecY=b$Sg7jIV-9*`?YF_IJ08Eu00No^m00S@N&A3{}y@iIa2$+NIkXn>e%UXq(+@$Qlw5u zxlc)?)QTj`xx6Z+xOfH?S3v`DzIhuRBD4BPwUm;%@leB~;BG3Mmi;Qw65aW)=lJKe zbg+Pt;Gr8mNXr6VMo>ktApufGu=BUh`eF=5b&Q+6zk=X0PT+MDPv8v0SjV_4=(~ zZsG@0K?(F*dEYWf|J-z#*y+qYJih+D{=;#9_M6MzbE_VV3>fWcgVqH!*}*~>FBnFL z6DhN_Jr@aE%py6@4_&Ssm zA1ghfN}LCDYeGzyNO=MY-5GgS4Qf{Hf6I5I@o^A#2-25@IE6<#veIUNBXUbPI<22$<)c^_927v zP(lB$O!OmG2|KJ$wNjviPN!oe&7BZ2a#nRV?@U42?vT8sK0)(mVF0|%Kx1MsA2hk z_b0yT=@-Ql11{a)8G|Bv;#Fe+(Sj@V6*Q*p-?KIc|E`*ux%t&q9b$0bG?-I;z?P7I zk>aLi&ROdI&?>IDUxN;_$1gU&jN`e4lAZ*Ld1SI;t>k3MF_s=}B>BkwT9Xm*#hwh|JS zN1w-ClzyrtZuyg)BKoRKt}LVyGfpquC?H|rnWHS#Fov4rn?5$Qy&!o=CIRuAGQcj~ zE)1ENE`F(LbhSUWB@pu6^tEJ!ymvFPbdHIj^R&m2CWq7GR;iAjhohD3cUS0Qi~w zGdsiJ{<`L=^wwn|Kqv(TaGD?_yN1(kThsz=WIz2)$~=NS{+@<<9#|X1NL8oI3;ixO z3wg@DM@kSWechZYNeRQQRbYp?XMFzj3iSGULYN0L?SGWL~5}gUK&D=_EF}W3Ng@<>U zIXQk2FBcg3dQ-Gee%AZ zbSr3YJXIf?!%qv(%ho0Z$9WAXyy=cnuTgpy8tFEdU*ZUiS)%$NC+Wj@)SxK}Fgo~` zo5dp=W`T9jg{)Y$b`of$)=L;mJdCDyEtTPEneRpC7#ABi#mo4ckz0@qC$Zl56eqk1w#_sW(}x3Whb)BF+j>M-}B>E^lgB zB$PYGO|>zjaKBXa^#KCVlJE;qaXz;-dkfuq$J}Za|Kl zCK@DEpfd~hJFmw$wk97x^GIFt5Hvr#@4gchskvj1)Z&N6IR5?_sRM`690t*Zzqnb? z*~5i7=R;%fG9s~R4GxFhgTc_kUu5R`dMvWkXC&%`-NQcS?+iW zv|SPs-0~cG-KOiGwZgpi50K2~A2DQBDog}s0--{z$@a)_((d_|tr`0~-8re}rd)EGtkc?4!1=~N3^c>- zd}veV54nazeijYuY9dB(hW>@%#>IYG=3M-C*cP)$v4x{IqFVwCxsXjTuHGLg-RynG5^^kp)=OA?8D{dnxW4dh z*HYuykyJDDdE<;z_7X6zk)I7enK$ty5rrToe2p>AP7XIssLK{T1dgg13a{x{%zy>@ zgT`SY7+r2*hX+m)j`4CL>G z#~Ocyeh+DE#a_USMbRmW4lE0qn7c^0NNc{*E^{vkJzNA_u23rF7d^c%LanyCI%_mv zAqkMiCMiAt66Do~JH$4SisYvdE(IDfo%d%@9{3XlQ^7ACXOtOSsY5+M^GRp^$HT|M zo2ACyLQ%cnS+N9==~7MFFVkqDpMfdOQGW~bc@5!zO>X`_N4=_Q_^jo~|8f;KVk^@# zECS|AN`FrU(tpf@eE!Qr960)?yZ-ld=szY%|3T0Gk3QN}!up>nkq_t$3twQ#+Zq#d z?`hk0i`7M=m&S5)?9K(5_(nZxC0bbVMXLS#F_@P@f74NKi_Ise4Isie4#uRQWd4as zQVs1VmClrth1RbrzIzzUGBhT0=nb@mL*w~$q!g6qAkJHE4H|0=W0Fj>@F%3#GmI!x zB70Z3A9^0CmATzZGdrIDZJCOVm{Cj-s$|3Wdls7H*VfRl)UN>BY9`|BvuV_-5XMO@ zEq#E?gf!NLropI<_)kqq>TdG6MJb_iAw|&NzF;}ke~hcj=tTso^i?QE;)?NNP(aD{ zOd`DbAM@^yvJbC*tTiiN%fMSTZf_TH`&80MW!{5%46$>9l|i59R4+dMTIsiRzaL z8Ijm6`}~~mp|S2^*RrQD+MP&QP8t{;(CN`i#PC1(!CbY=uDks=r!Md#HNvu_&klOE zzJq)~Uv6X;l06QM3JP5=xY7eBJ(coDDq@6`g_KM^fVIOif(SwbsT({}^To`ipCfhG-2pV5YulSt9*sg0J zB^va(BGU9>>+Rj^?#oHr?-#3)DK&c~1Z_<&cK0bg_Bg#)Ra4thh5G?jrKvJ}<{_0{ z!c$%lQ(}>P$W~9Btg_x*RH<5c#~9MZ2#uQwL*a=K@C8^se@Q)+i~EiwUJcfS`v*BF zve5$)APq**Aeoxs&h|CLyTtHz_ku9U`JtsI1K%P;OfLlt6+)HLvA6#6o zEDW!5V_$WTeR*qbQLBGVS0lm@&)!$)pQX{iFP2=mi2ATlsUhVENQbwowZ!T}=!;;1 zrl)9vQ44wj=D8B}#i@>0(1M(v+o=utTf!45c0sP%Bn;9d(si-42g+NXl#huflhyUJ zoF@Vj2>=`ed6wd@1u7aJ2=(T?b+^|{-HO0t{Tx`b+2XY|F&iG<|Mb?NUN{C9Mn-?3 zp3^D5FMinX8K%7WW!L;tx;P$-x^oCC_r=@w{DxkYpn>c*XTFhQ5|z2E*33A5S-M+d<2Vt<(`5ox$ z)T3VFU1o{Y2$5!?pV?hJIO6Xg5s?mo4o^>LPNIf-7(zfbzY=L-5pudYfQvp z3#8F$T2du9UyVnez;FLia>SvuZ-`F?hG134`}hmvd>`&5KAN{NxN@Jo;?H^bS{UDS z9l%>Evi!B7M}p6@rRcD5O2036eyz0eameTe@~60sb}CL1X16;|xTU?7mz7u8V@3%y zvPZC=Ke{-)-HGBu#wQ>Au^nqz`bYwC$5#=aCkB{-vA>@Xo4$W4pZJkjw;N{Qd4$xO zoYQ(bIHw5=jyeOrzTa40%^^Y=o@X%Gb&l?A&($|zAkZdGYCfx$QTb4@TUDNV_B>UO z7VINY#UwuVH6n`l^>V3eaQ6_Wx1=tS7yfQ!`!UQCtP}d8{axFRoX2y*#o{if@r_g2 z$Da+7(pgxo7vl;ysqgBB7hWd#kzqTrtbHv_>O-;KA?Ro_++vn>=!77yR7#f@wY+J1 zt@cNrxpKC<^-ST3VC8_4LhM$8(m8Wo-acLh?; zo4hN9l${qze|V#ag?;U1T{hMk-ue^k`O{-%=LS)~`Hh`aWficHe!Y;~&@?0&YGS`C z)R0{LJ5A$h`$ZvnPG!P=uIHx1nqIa9=)*PSlP4VoI(fyoLU#<9*+2`~umkMX~6Th@ysqLnp1UnTN%eInO)7j=2F3vq1VN*VC*v-0; z!K|z{FSdk<@hjCO11<19C42g6ACb9rdyDmazaHE!dhojLyi}cnu4&F%PV80gUuyPX zd>hrAVVHgiqSMmfr)=m^cQZ`G__ZP;QtyX?Y|ni5I+ax`MvW8U_?awN=xn>2tXsd- zhJ-JtT`?}zy93PwRA|+oy>2Qv^*w6bG3=b))c3?E&OL|E z5Zke99x8RrY?V`%uf_~xM1sAE`bD+(nQu|o) z`GG6N{pYrz3fiEHl|vd*LH)5o@{{9fzA`ce0p!wEA=e$Giw4oRpz|Moa-}hmkbs*L90+7~in< z1cW`Ln-0R+QFA-^{Jr_lHy@RSdD%Sg-k0h*#mT6G3UyII@&=hHoYr2{c=J2q_*^A3fj?-y>qkRb0^ERhB4V09NYPG+Atwqi_Z3b53< zNRNQ%Fj3~%A6~tZ{6mMhZ;TV_3qm)=n`pHJr<^MCT*;B^2Q=Co>=bEbo%6nzez0U& zv}1ZSnH71_Iu+`*my7A$XWur#qS#12?ecvZiJNr|m9>`}2dF@k>P5rTPbiMUqTMLJ zi$4hGjSCFxlug~g|55UebmI++fJioVYmwS#%^n9H@nIPUypK#HDs_%}Jnz}YZR2?a zS?*um!_Pzb(0GHbORv+2CPFMyeeolygvw|UJ5mUnQn>4T@0}GOX>&-Wdj=*_&`KvRZSNLxFz9X z4fWVYC#>%@46m(XVyoh2N}dzTr%XIF^pbCGmr#RRbT;skF$pHpFf<>8;+4GsZQtrM z$Usy#ed-`vZmW)bVUjV;ZRXi({xQQ#E;s2St52)IDdlm1$;w%AULrKTNp`a^ zf>0fAGikeJ51}b8FIq1?cMAsD!w0 zJOjM8r>$S5-oGzBd86-^rEjM<;Ql!kNvO0(YRuq=>MPI?jfN1l&jR~~l1Jhdl+T0n zjggki1jLv^B5BTpE!1{YsJNY;gvoc*qf5M@QZT(t( z_TjFhBzc}`Q|mJcK1JBF_vUO$qPJ1W72zqaNccr1SXBl6op(JvEz_Uoecl*$*9>Yi|*f_@z$&; z<;S*K%k=6wSr8>fb;mOJ?Gi+#X|XkxUTp57dP2EoM1>7ESHBl*wz>;r=|5FVGBkP` zQxc-oJ*<{_3NO{AuvSbqS0QU`-QQmP0BlI?Cnb$M2DXlT$6bOPYemg>lIpv>Z_d@& zH%XJj;ng}hTHw5RA>zp*S73IRs=D^V{sHk7&3E2#?Uzy7A`qjYI_EL3Mw^~D zJ>>f>83l9t)`vmYeF6L9w0-iFANQ{l6Rf*#BGRRWGD%o8hymyH6Q6lHytebAqJX2nTCo{hpqyNIo#xoHa9YmM%B&%X!7KImOX_ryh=)Fk0Wc{d5K@AJfhGz&_)6UCL;l@Hts} z-|A>FhIoctNTd9sPDDItfeE`Av!A@xlKNPho)dg8J8EGJc75e;IsmqA6loQr~uO7#2VdQOh8T^*H_%UdLGoUuQ(fR2#OK5 zX?o;RPHmalf`aJeAyBY{Z)?rA2d8p`3b$uX`qsQlsS&yz81$W36vG!ODn5YwnM10^ zWb3})Txz4)Y_AnUTVAk`IG<;v>6KsoyfWV{vwwOWM9xG{hNtq@5mZDhM8AQ%D@CYM zq{QGtM>Yn>Kye#>FETl(X@nFp-D945!zQd*vZu5EdAu?|zgKb2?wJZap_C!;^oHpxlf74egY-7o@F*59i5 zDlF}@*Ln`MiCt0TEaJ84CXOSE7QFozp-VE;T@NQkuRrRQu8Sm3D(P^YGPjc)WVXMf zk=*Jpy03HFTF?f=AVrhPtygeYjl=jeYFqz`7O5E?^(~Ds`;T_{MDmayG{xa zh<9rkrn8It{h^cQ4UNaO>86YPET#kfmm}Wg=?t5r{K@uA)aT#s9+~JSAF;q}nSlRh z%9kM(>ep6U4`-K&hf{6~41Dt?%>C#`zWqDA{-V#bGzfNBpL{8tibNC`J3(_BWw*`U zX8Bqs6S3mHN_5cgk%}+UxpAtts*wQ=2_)M_h$$`YUvwK_pp@_+EZh{W=NA~-#WUgN zQNVNQt|)-*$rMtW*uC>y;(i*Rhqu_!9x?x17n_vF{bs#ewrR|gjiHhQp^MAii(pSp7Ci>KkI`Na|9u|%tAbJ8x)lN!B+2W6X`^8_t){DhZNFk0fYRFGkvWl z%b3fQmK8M8ngVT_jHz^!tke~6_%mM`arxyauh@@kU`7s*j5pyg*GHpb`BsshPg(*5 zy41SODOt&0Ul$Gf8-%0awYpz&)~k)Qm8@$U-xYgvJZ<`|Gu;S3T6j(YmVylS1C9`d z+t`uLUSzP8sIk1kixLf&QcGbfzbt4KPpDnt`(e6`_^vZwWKq$KI0LWqt=f9$vYvvN z1uz!t7;1&gZ@Yr~*{I_L6A&5~AJ*{gx*w-hR&rR6Wh@A)i<_E_pvt%L{$PD0K|{u&o2>OyHP_jAHl>9O4LM4{rJ!Y?33k65|M23vdbYW3c-x_EKO z^GNYsT50e>{Gcf%BX1?~&v*h~-qOt(y<3bmWt20(f}m2!izu$FA8j4+Y|Wf$`0l7K zwNs$D`$IHAt+H|9ShC|w18ZITCwXiON&_YcMKd1TIO%rdK-QRP$)~Q!UjwO8TMKx| zBzf`wJga)7 zaB3MMfAwAq<)ey^8TCi+46ulA01DlrE%F~oAo2yj{(Z}nv`ny=uLH`ZfbZj5ujqiW z+e6v3)*hTsLh134uT0tFvAIBew4MXa>a{PzDK?M=27oQfwwY1Nnq&WmB-&URS9~Es zHcWmun)+uX0H1+be?t`jBRC^y03=452j-uxic`MLA+@!UuRwHsV&pIly@T*&Bo}~sS3AUtlVt^;X_>0P{j^_)6k#Ng4~x>jvU{m z+H44Rht(cANb=VEqW4LI3HFW=C$AZfn{>R61Vyfz=^or~MfXCg9L1J+aSx=rh(Z~e z+ZrJUV5jqDmfpv^6R*ewl?b^Nx)rUV{%czA)b{r%KfIB98Z!1m3Rr@c4wkQ!4I+&d7#N?j1j5n^}Jw0AFZ^=-B|M5g;on zmH;foUl@(5_Bg;rVERk8!4RHNCnP#D1vobVZDQ4i2zO0~Xw#+N#XVN2nh3a6ZgUol zh(ETeuH8CWh#nc5@zTuBtQ5eu>7RvKsIjPy}NO zXyKYWPmlwPM7BHr%ZxZAH3EeKUF&jC%x_%iEWOzf4O)E5DP7v7IWYexlZkn4GJ#i| ze^<&uKgms7dN;27Nkc5}^bX78=-gLFrNR}wG6&+6f!9{F$JjWFEbz0AZm*63@pPGq zbDGI7%woGY{Yf=M+@8jS2-`|FUI)?_ym=igVH)`I4Xu8jZ+u!o zMnXcc1XW;yeqO?t9A9H!{~)T248Wb0KA0+qD*rWA4!v#$6@5lVP!5%8pfNoyJ#j{! zab9pxU=CVvP(faXWKKZ=a7thtm1I^{Fgh*0q;6^&9I5@OFE%pE=!_Qb{&9otZpdvj zzWl|Q(RN;5B&S40nly$bjn}6$Nur(`Z%Xf2vC_)g8%`?R+v#P0dUjb z`|PX-KGZX1^7~f}1{hCPOh!%ry!j2M1MCjrk?I)VM-zYm0yJfS66Kffxtuenl4B&>hRRK9| zfI?%pL#S?>_|s2o@WV)+*=YL5F)A2Glh|pjB$OCbe9d*@gVDVR`zm`vbD+ z9_|P5K733yFbY@H|6#)v0rZk|Qyry$UFg7>XcNv{7*P*gKtn1>&xS>$r!M9fKne0o zw_w7+5C)($YF31&OB(ImqpNQ&aSHQ0dYvu!&BEWCG!ju7I#2fSr-RbkrEpeKW_^8F zh_%VJwJXgWA(z_htqc#Tmj@vgOq=6GH4{2Mqb$e5_M0~;(|Jr?<1rb(c4E1|Fx#Fs z5U%Y2^6xtmZJsb?r!@=yRWN2Y%rO}ono>UI%#g>w3>FNak^Q?wE_eXp;D3c1X=(Mb zU|C-Ss&Jzv4Nx&RfQAdmU$MgS22ipZo%JCrwoGE3&D+4;Vf=9AV-_2?i>2CPS^3N3 z`In~lahFADYvAi@19bl1TGay7)Nn5mfp?t)(xLOExoyXwqJAG`?}|c$2xePidnig zI-|&ye>)k6dr4CeG`1lp2aMAVn|P`;!M$p2Q6V6-#y|uKyFp8~-qd<<7f&q9w^pB6 zm;@;SQl2pWAnknQqS?LYT5Sr0_12NQR9rJ7?6z+K%a|9m|?fCK8qNA1`uK@%sAvL!eKR` zRq%8cxdoTU=*qSC zFr>|D75sw$UE}1>23F>1&qWNk*9GOo2bNUI>96umyRG<}+_V)tYy8+o9O4TDeiYLZ z*Ppy~{3xSkLq_8!?qfxs1NHeta;?d`#mSIn>lq7}t7nD;cmCv@6tU{1g!%Wn(f#oI z66NupMzSJ(9kW*d?3b=ULXS-z4syy(hP8w4*O$jQ{uZ9ANf6^M0GF^Rp9lF6_kFI* z)~mMv%kh25$@aUx3YWWvH$NE@9b#we)Sy*pY~eI3)u;@}ozSQO>qD*5E3fN2W*w?o zRFrA40^6+`Zy9fVBkh3U(E5eJin-)$*GNkoDdQp1{Q)K}Xea8RNU<3_f=?GRST4ftWnf0w?c&$!(Rk)G4ElWgfE zrBF25`1|Vl9NFetlN(mjx4B&3x9S%}^Aj^*mH=MD6*OS7IH-J~^j`hoVJ#MAFfrtj zefieH=;%0$_t6i_xE||GsHmuh>|EE?E46nJp$Na0`)FK>){=9~WZo3XF;w9=`j*e!23rQ$xKA0d;b~wE*Ar2kaX}%&8?WA;IdgImEJaa zzQgK@`EJ^&P5N(WVh&BliMywJapqlcnOXT+14lwUsnv5t(Dygmo=566i0~(&Q@lds z=l;Ds?4w=2W!R}$UaOUoH>It>x|aed3+#HiLl(f@yuGusQyJ?{7bWI9OKkB(rd53P z=b*Mx&c+iaO~MLz9r?0iZ)>di-O}8k?Kk>cKR}l84D*OJ$O#*k^$X>$}#fd0HPrZ zrUKOq#=L6I!ghFdMmtR@AD zc}6>I!)RaQIc6C~ao%g6YbZ@$v!Z;w>9TyqLQ0^Tm-4lG*%|p>gUu|q+wf}~5MiD7 z2U>JY@kX1d;NWJ$f?UyeE!@{B+zFy!fw@=w!Xb*^ON(nDZD%zMr1RSm@!F>sY~TId4U&HT zt!U-|{0^9d<1R5fZ0mJq4|u(M<;d-?m12!h_bE2Y5%ZdKNtiob;CsN=nQTCJnsxb7 zir;tXF81vo`*P=ZYyCX1ei#zN8~u$9H=vbq)~7rQ?Q@)tIhaTG)}^g5;-=po;6mZw0t6( z_WxCf!l7dP!IA3ESkePiNdGIfv;h-7@^UwBxJxvmy5{`6t4Qe^jDh z`0vFZBRp?po8DAh7YSgV+|=r#J}!gd6A%YrQJ|rvv9!Z<#c3?k-rUP-oQ1di^TJ7l z4xtxU${)wOpw|ib!&sJ2R&CXOZ1xcxAHhggI_84X~9U7~U~5aqX$*pYcy<{-~B$)Y)W@oxOzku(V4pw6Y0) zVW4pABX>wT8+EgJOp;CFVE^_zIs;{>4Ay8CB==KH0*XO2@(#=3y6hE(h@$E5`pdUg zr!{==Xos_B_Tj0G0mipEzmV?^_VWr5xbL1XhkD|h>sgPVw>OwN-)Qg(NqcfI-~iO1 zASL+y>(cG*u$iV4x++eltNgDQ)+1Ok&aH(nMjEcIOXo{vhYftbxficFQdZ;V39;zX z5KG`tRDMOp@yB?A`jwVUpN6B9jOCf5;APvW>qUi~ZjO(jZvx2OC_<)Y;m$MI-1@DV zTkp0y5PO{*PA4DQRqyyYxwUjwaUvmByR{TC1ZE20b2mofojN~O!KN*KAnX2KFYOzT z!saU%KTx8_)e?Me{%qxi73n1&+x_pR6m$Cfr~NB?OT3Y(wZU|i+8+p^5Hw-MR+Q|A zEw8#`+2yC^&64L4AY=sCd?V4D+13v0>`bS8gw5RiE`Ks(zZ7WsR*H}g!3H};@-Z}`Y~d5jfLs1kQ2)5q|fGyDphk_eVNSr1!sO8$trSXRWq zJ$e?qtGcemxLq$j9!l==232V;dNQCAXLN*F63l}vG_JGot9P{xD*y5! ztD2a0rHozHJM$6u$oO6wPbJ8uCi64_WxutD(An#TXU~bTH)xA#t)oDs*~b|>_Nj=z3XuQ@YDf` z$8GCX$j1F|ID#9^x+R?N+%v!i<#&=90wt4>iz^EEbfR6 zefoh#R(n*8;m;qp(D9TInrFwKT#{Kit%wUftUMoI=pan)44xyD+_@9$CGV%#m&vIK z$;6q$yZ0WJMe4m}K)AZuPN3wr*UHm0jIi-pD`90`QO~`z#10pP!5oXAAOq(){fpLl z#Uy3H!^11Y$%-iGz%AWJ=;`#C_Vl1jiJi9#cW@4xFDkumU@&T+uVh-_>pc1ldivlm z{u$nBfq8Md2D66om``GR5Z|Cb%V@(^iYSVN${+b7d37%3?OB>7nZ$J*r+;^8z>|*Em0{dHN7o*$9q{`5jJ-HwG%{n+12kGgYqpF`4q$Pa_%wo z#&TL6`zz`5{L}`a#jK2tea*AM_j1uik9~qSGz7xJo`Zo9ZFCtYuV?xi12sG`{CR+x zixL!BZu5nYM%ByUc>^3pU8$PX>+9#BE?0pn!BK>}VkrCf?~;$-S&_e4$ekyWQ&YQ4 z)J>IPz@5h)O!B!P$`u+mp!y|VI@0&=ySps4Tg4P^{fN38hZiGRVv~hzq*KKR4|&ZT zyFILn?(*++%{G^wL^?Qj@fKYItH@H4-gwr?$#WKw7WKtHk`6gd?|BVpH@?JgRDizi zVmd$3jd0OeHyXh7IP4zxZqaa_M---dW!j6e;7fP>7VJa&d_tCI)EW%ZvTL z&oSNZ`F3B7ixm5--8;Eu(ATILhy=RcoMVz;1nZmiaZG5|=Cx z&brr03cv~89iu2sE{~RS7khsa!kxfDY3?s{i*@Lkc4!feegU(JourEXe0HHz3BC*c zUgVzJsqSEp{b!1SP-^xk2+tr+eXLN&GzkP9K`RRUv`84w@;*UOc3?5&7=cw?%%?u6 zeSoca0e@GDSSAWv;;dg*(h$%0HN&n8-qQV`SB0X7ysL+j$tT+R(n@Ikrr6rM=>l8`H4b{ zj+ffhKHy<}HS1sU1kbNF@vC2N9i1<(??Gm8o~I?NI)dw+UDOrtJ1^(CDYWLRk8-bl zn`h)#jU9(a@tquBdt*}o#_lyyu;)+y5&_jk3JQ$zaKWzmsh%5?ik`E?jX4seA7&Q~ za&Z1zFDaXgcNpRFqg?Pgoemn(D5F1jWE}!UDQqr5{E@4=U)VfZjcOPHmc@zgIvDihvM1MvAikNB!OlvXA9po@>ax6Do+(H4`RteHh1{KF9s!p64@Jh78pxJk!SXKElC||zY^T*7v9P! zoR${v(&?-4Z}n$l{=U6?L|QBop%8Y%fAC09+dG&4!fHD}He!z_S}SmC=3E!A4tWpc z07*QuJ#K3Gox;3&P;c+?8W#Sp__TJxT@x!T)CH+tRUl}DoG(A!ZOvb}Ern0IVSD^B*i7BLjua~O;>`DN)XvUsXZ6*@7buvo zuh%)4y6YIw*0(s%gbQ4$q}MwCzSc7TId!-{ZS~%BnSHUj;)h$e=`r?HKN%UlejB=K zjSifYrJ;7v*u#Vi*$#Hu!oVpT<+g;Ev^@bQPq@E zBlXRT&oH?0NxiRVb#qzJ-{8B;Y5K#0ZdcpiK0xk)eXR!F#W_Emk#Vlte?^GAcD*zUY?Z$d859g3#ohuKyb#oAy{NmTFJ2gqQ2A#k zYIli2WlDwy%jEBju9v{7?OY|+T19*{@kgQi$kR6u>IT|0I#*U>-Q$9M4etu<;;-)b zd7Pe1&D~R{ouMh1F7USfF>Q4su3-THUqv8|?j8EvinH?}S0MI#g-h9{|17Mc7x0;!YJ7p^26 z{e~-=4P?fbgLx3=rz-AM?(|!IPy4%F^Jq?A<^p?FL)u_EiXXMeE)eBe2ar1j5Zd)l6618 zZ$wIG2ky7xzcFVHZaPR?UCJ(}Y7|}GJ26H{JYY>sAa!%-zbifb?I1`J{j2Sk0vQcz zFav`yq9Hw*I1?&|S=e3#@LG&t{` zjWWCEbSAAnUbs|-X<ZN~h;FLU^g zi~VwwuI7q7cfaZ`Y6LJYqf+upv-Su-PYiG+o)H*?5>7xE9y0I4fLNF}ZR+>c4JTeH zD<5XRc|-MCpMy}_+o&f!iZ*4VukLIQeyz?Qe!-V>FWk(zgvFey(Yc44i%#1&x#`)T znA7%Taf_-RFC_tekHSNf#YzMySK*0ws&2Z$W8Y<=`G&h&%fq9=qPyU`j>R*#mNQ=h z-lU=)l*Xb+?FTk(jZpC!s|gBNgEpKj8LVd~WaAF3_U zW5Clg5ygP=x|Wy!5JYwMEz0Rvv)_c{^q;AjWQ0j^dl1#)nx%5Io2P8^mo_QJp%!ZW zj$|o|1w&QD4xD?5fkwHO6))gH-?u_Kr}ByA{V^KD?c@J%YQGooAUFmg34t&Pbzg&! z=3|!DwG#JI3EfBFi;2lsO+pbM2<+K0=m}^CA_Rp9NysD9&0PxES(-R3Ts8BCYFQp( z!xOB@D#w41+j1;U*C@>vJm+6(L#$xogVN~&pa zArJ_Po(IAgf`C9E{%WDMy?&r;L^}YzQXF(eIDI5{YQCC}Pnjy38<>A(IjhCgU}te-^grv z7^T5J&t27MQ@3BVXajegc1)f+tXCU494;x+nz|^IU3B_bZ#u0}VwXLiW669Ci1Vts z)Cs2`_@Wu{3(o&H9xC_Gp6#HG#tko zp1qIHb?7r?c&gY@zkldb$ z$v5xuRe_C><{G_?+mBoaGvUft93Cio`*ZNTN@2Jup3J94%RzWvJ|P2rpHa=+Rh`>B z#|~n?DNVttxjT*j2p(BoZrcB$;C*#5yyhL+v*Hgj#j^0h;+i?N7&V!M;F_v__$Lkd z{6alBk4{NEps0WZW(CDT4130<@jwZNFNkR=y+fa2h9XHLw?XvvSV0goU$bv*crvWW zXtxnTLLWtdv;MA0X=utmE+WJJjJ;=Eu@kvHC&=eL zU)P7+0_u+!LKHu9qi7SpaAeBlC#2-Ch4R0o{YaVPAD`Dr79}##)0>If(>Xq2sQ;2U z!8QJAr0K}HzucFPDM8;epGS=(z(w#TdS0^erAL5*J_jPVxhcJUwoCg}$P`oNEwMjs zJUg4Ip`lq$=u2=8Y8wc-({Nk}oEC@X4cuiMJJRQSJkU!JSSXvGO1JYlyQ>&y#xvN4 zfefvg9PLDJ{+_eMx#75UoOJ#nE6O|C1Xp%gMLa);&)bZ*?46@IieP@l6OJ4TIf=oS zW@$2caOsKP5p!{4>}`n+wA+NCt*|!yp#%GYeqQf-P_>q)GP6-@vv5kOBOfT{$|#|-xjMV~8f7zm>G$C)X(f<$ z1Fz->Ax-G#4>}lV=zsWdO6C0I>3He=NW+T}UID;Xlo-Q~Ess+i^YEJg+t2zTyZ?(9 zb<%Q})^eCcAOY7bdtr5I<+vV>Oa zG%?OrR|K_8E?o1`@tF*z>)|*|%ZVDbi|QshR+j9`IUl3PR8-8#rd0xH7QzndPBfj( z8%i2hEK}^4e^#$DT^l*pTmQZ{N!qAdjfvmo-EMK*45?(QRaDZtJoLCll>9%8y#-iX zO|&)|+=?_sO0f_^aVb`yc#+^*DDLj=?uA02XtCl@+#QOv1gE$ZcXzix{l0VVbI!fz z+~?oVWcJ8T_GGO!{;pY5wpp(n2mCyzLz7PmfqypaT3=r~uy>OlDm+YfJ>8$<^m*t< zncJQCt`!%C9VK51#XsJ-@oE)^`bykTxVAH%-c=-v21=CU5AE+*B{f*bV7sfQ*#_s= z!N&^Hn9Z)Vr5Ww!rRp0@Wt!5MudEsPEx&eY+x1LN-F>)Os`sw%ps;OEJsh#Aop*gx z*Rrp^;d(V3%b?99XYIzP%b;jBxo3S=FgCZxyr6ASP&tjuoU})0$8XoKQZCCm=3Z%WrDUuxccQdf}cY<~G6@9Jo}W<`N# z$9;YEa#*EBh%0k)$uE`ocpS%*r^zyD-fpcbiFZI}FZq>q*h6{w+l?4Tw_LxdPzLx# z{{m;%o=d|AzHy4W8XMDQ?F*K*;CVEwidW-)GutIG^8u}64G!bFT+IiE%?>SpnvYt` z?<&fs9LLTSULCIcBvv0>jNO^bI@R`m;hX*<|MsZH%}v`ni$%uU{_S1|PT3{pyQA`R z_gUAT@`J6y3zz$-EvNJ{=90wvn7NOtWWEJ&^>r+xH?$`=Sekd0x8uv!P>?D=nOLaC5bKVACJ z=Z~L?bzeVcsgMGHJZ;(xRL60z`VGwf7SusbWbr}364)I;WXco4gz-(4lWQFoTmB<| z&*>yu`2)^_A~Flr(yRrV_Ki|tZJ)TtZ3>0^{KX%ESA6rstjUf`SDtg8nd@O^+s?6Dd-soKi2JZb%56Py38aG(V?>%iLo9&h3ND!G2KL z6n*lWjL!N)TtOz3hHCMKh0bhaBAIM^iMSwmP4~n(_zAZnxI&!BvWl3!u_a0r&HIf# zj%|KQ@%#7u@wa0SK@Uzx5_hzxI8H=(0;j055ZR2(qgT97RLNG1p1|`=5S3|_fRQ)8J>ZL75j`vPK6 z$>gsR_5a<~Z|bWanZy47G1K*LLUr}MZsken4O*`vM#U-Dv2Tp6;{k#C;rOxRo~dLD z$(a;3y`g8+kFGFeYCi7Bw>DgCs5dk~A2~JJH9g7IM*J;YG7PZOuYl2aMVD1>udZ#| z7Sz4U_V(3cjNB7jxz&?Maam{@%Yx>SkwvZ1{!jyTR>p#=WHhA8c9@mgoAgB2HnE97 z5kE%|i(uZprb7A{I11+D3MBa_T2~5bS0-7br-zi)5xsiaW0Dwiz- ztOn4uvwtn^rrR)&H71Unqb!TOYB%>TtaYk8xNQ3KTc*6+!eP0MY@GZh+QtsTOyejK z_T!S8KW5Aaf>Qu{t8rii?w-H}Mhur3jm{sf_iQ@?Qt9o2nL;h!FTbc)SUJI!XFOx7 zt$QAI&-D6LWP&!l@lmWoXD(|Wp9k+n{BY@mW1@#%!7S(%;sL9M$!mcySCJn-tTU}u zsr1&lynBNlet7;Ars+Iq(mz$LQ#o&z(fxxr?Jzd!HudSl_D6@uj8LNIC3`f#CK<`y zfTfc^PObHH{VJLhO(utTskf!-suvvRtWLD=3?CJE$SOfNnR)GHPG3fiE*4E$YB;qO z!lx_Dt;XjHp_d-9FLc$f<7)2I>V0!El*|)yQ`6(G7R{{VG>?7?HIL}uCtVWi3UgjI z%(TZGnex%|+3ZZrKR={C)F4u}6UJ}TyFLRf?a{eKE!wewjh#b+hN)blfE4qim#CV7+Kg`=EZ?5L6wtxUj+N?bcCx zZNgdqRc28*^mlxfQksc@ z$K!qbg!(7^=Esiq$A&w}yee=`5&q5OlNR>UjSdHAW!+QKZQJSx*ZCL~c!>p|TU>up zR54Vg{4P-GU{Rz2Eqhnz*JoVh2c4+HpC^y*gSI}gxEt3fmMN(w##Dkqqm-^*%a69& z>WiG?9&E{l!VX#j6`aoYcS86g`T~0C9aDOF?SI*?UE~#MfzR zpY+n)blMi`j;XNU* zl1Eav=zE0OEuC_rKXfkgg+#X zm@yMX5U#}W5|CBARTKRfh?#)GeM7xY<7rFv3%`>WQw&86`@P(}9){;$4qUD3F@pNE z?K)LRtl~Fj2KW?vDd*LQ4n*J{W928MNNYqepUcGxK8e{+q30|6@T%58WGbhl4?B6| zE1#s8E^A20Jf>B|%w7zOz3dkXg*eKoKC`z3UkBm;$O?wq9pXL5{K;U^6aqx$CkdVg z`}JUoR1r9U9xX&Sr|aKudi;5xJS8@HqCXF#R)4SjvkXuy6q)42y&i~V^zkW9QE%#j zCnTYH`#$?=RLZe6R82OL_X~Z=ucb8-hWcQOsih_{SL1|iZB@?#Ub@?u0nr8u^8d zG58t#p=uQ=Qv-^C)`zFHg+KmF#i4b&&3O2@zl@xHrv@>R@1Ox}tP#iuT>)$;t%klG z`Ym&OK0FI;-c7;?y;#lP0Bv3nj=vc8224X6RK|fl2h+G84FI6BI&PBKFt2P`e>_NE z=0THWxz*t#hRbg7d6Bx)L*c9~i)#3WZB zL^fC$Uj`tI0F;Qh{MbYqM=8K)S+wn4m=4%}rTXj69cQc0u!b_$xZ=qJ&-vZrVnE3} zj*re!%Yh%4o<_erB&byrcvtyhD%n-{RxYZ~MdbLLwc)Og z9(heWdEmvLf{ zlW~Yp4G~KRC9JEYa7`5cy?;$u2d2jj|Dt=x!Oz?8Vy72|P$s~3;iSoqRtPh3c@sH0 zs1Ro4!pShI5XQm(vd4lu$la2L<^ģm#>1>>zkQ7^g@q`3!ZxGiO%R95i55$4!l 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≤|;TMC(%8lFd!hrIJuq{s}rdTX@Wn|VcEbITa> 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%0AW4B><_0;@CTF?r#Ht9SrAlFyIP3;MXv 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

8Rll-fN@y|T7)j?> z8hVIQ%f?3laW^FA7TzTP+YXC*%4$?R+7S@KW0X7vfsYN7P~Ri_N(o3S`U#KAE->t9 z)8@~$2Zb{OMRxzzv;q!W3w7^(r@<*@`Ef=K1 zJ?JlYA3%aYin8mi6E5a;lj`v(+8pmtl*(lP%87`u$bI%xk8kw!*gxM@qV9Mvb@gMNs!kg%pj=Z__etlM$Q}?%G zH@YBn2rt}$Q+`H3gU{1&RiL6bJi0}=xdDlk$c($ifOkDR^RhPK#fpbz zz4+%-ljMEEnyB1gF6A4FO``^Fx00Q%7C%C9u^++6T>^#`?j-K))gT430FJ;WJl8V0 zvr3<1R@l$^C7S)2Vo>A6FiF3ZCoo;d0c1uh;L@C6J3#ai*ab34>_}NYCY+2w^P%a5 zLkhtZ9Q{g<6tBQe)NgLA)I9wdtOD@^+b*@3``@6`HbGE3)-ZxbnN!$oMsL^qRyzTv zCk~B+qH54`kZaIf4EVv8~w3dN>>% z2p|*K1lj>{Tf0o&f6Ss9-U*!6`!8!`)J zDx)XM-eRD(M!w*owSh|}AwtAbZhAE`hNEUDwa*4%0Re-U9B&orT$bXT9owSj-sIaL z$uz3|l5cfOMk*Icd{lX3C?4CwG`6hF&t0kGii4&_@7CPz6h2w4_P-6^3ghSD(@b|f z>K(c}TMuJIBQOAn4yROXEw%dw3Tl7+v}U)}&f1-wmAdy}>A4?QryCc={=DvWhL(be zS`tK0dJ~UpMwGA2?|>*!2+7@nh~#z8i;I3gPqv18aj*AG|dC3_7Xn9BoKJsElw_VYA_}w+Ye}NsLK%rN~tec(K<0B!z^W)1h zjM0^T3lQ~yo~t|WxSq$(PzSaXjWRGPec?WwMFR8SY3RnqNMK^qgIRzN>qd!iZFPVp zkC@hF#h49jE}c;H)o+y(0GX|OQ2&fFG#Snz@sRxkg)ZW3_rZ)d( zg8Lr*8&2MN@@4ieaAptVDW{-(6b3Pg$H5o*rW3{L8=Ilh$|8^kuUj%>pr1&q;-XLs`40L6$}GC zDNgFEBh+vj#7GMXJDtFe>&tMjKNpp6&pIQK6-Ht&Vi~25Hd9kMY2G4(C}?p;%?a^v zZZ(%)F7p0ci5K1kI1+J9OP_Cm9jfB6(e#!vuOr}?!(KZ_=pEnCYfz108AHJ>P%4X} z@r4Gc!d4+6Z$Hd+>9*E(0;pDfN+h_&fH7;JWFwB(m9It4jZJ+dr6M5{`2wn{=NIv8 zZqQw3Fs%s- z!Io}sZL_hC-L ztV93+2=Cxyv24|)Jv0y$AQY$t+vk65{#h}F7N;iw-Ii&kn;i8d(BoV1USD@eO4@Qc~k%5d7KFE%f19TXiJ zI0JzpHX-z^m;B4=J3JF+0vbO)LuSW(X{wbt5a#d&KfxEG942sq6FgE-CSJi&Ay~}u zt#nKsdIr8+lL%n?DC3!O*lb7Y__Ts@jtyH#0nuIV{B3w?T*!-v+U?XvFxM9gnntvbl%INh!jmXR8dvI>YaHU)=_fP*x zie02!u)m_UoH!a^*Nu_;Bpl~k4~5=C z;6NWt4wLxs4!?cC4*>L!NOLK#2!I% zOEU!EW8hr8dRwKp=-Xq3w|Mm4(+9Yp-DdmD9}~df8=dlbEEkWu>t}DUeE)Ixa|d{j zS*PSZ=If-}|6g_FGkGZGIZ15~+@$1&Eyoi(fTE-4#UFi1uf>CEg55sJUTpbri8cMhi- zJoX3j@VIfe2|JbY=dPch=RCIy|IH_yw@dT!yoO+TiR2@NwcNI5VsbDQO{^y_4@w5p z2c3qd#12#jR>=v7gMF-q8OT%h?%^Lg=MUXogs*&99(MZn`+h$UfSjanH;{vmj{f|2 zOTFNCy1(Dd(nke8c0-Zw@C~FKPd$Ux+yr^6($0(@y?7V#UPcdZ9Ean>qUP{ki&y73 ztk=Y!Zx78s$szH-_W;d<`M*XAYv9T?_QR*abue?DN)pWm(gu%>V)c017AoMVol))-%EoB0fjQuVt%Sf6%TbF$kQMon@3H zo}EdMw9lqIVwf}f9PngK@9VT&j$#JT6$AIEx`cP~2OMU}VhUd@!-6C;JoYhE1|vZL zEP(YISuDtirUaJpBW*{){dAIY1|wGKTLU8h1`i)+&0Ot5%5@pF6i(NIDd~%$tuyp) zS9V7g$WT@2eVqDFX+va-(cg8CK>iuJ=xnpCWMcGmB_HNCY=&e5ybDQDiq;`jOo&chS zMmlzon&6sa<(k&Z1NSgRH0{wb&71bhf@-U|;#U5sPu}blgZv znJeI`iiTiP{ojDPjC<8sSseEzLjhZK5OBs#pnRR)gTBA}Rr&m+`SwllR24ZJN_amu zYrIEN3~Xmp(6-F#zOVZ;osbO+6*Cgq5y!-6&MR@B{HyeS>Vpa7HRRSxPLmnn-R(s5f5o8swz+srGM)`s`HZj6S1iY!L3Q~G;7pD*;{4~#BGbTBYjO8l^XYV*%y1eNo5Q<)(Z ztJUAtXHWz%l*_d9y|QeKMZD%okP41Tev${18f`R&1hA)~ns^f{73M?9lO=D4Vv~MI zJpPd9EMTs4E=BKXZh~)ij26u{6jmh|n_Yj%0|c6dn&qDV^HIvXfdhkVK&bFXdP4$& zG};dGk!>qhC9K(m8}#u!#H&C8Bk}H9Rt4Yr2s{9Qs^+B&KSHrEUyk7Y*hKEKr}Y^5 z^XcUP>9MtRAH4i_vGPZ(gE9d-eznrPlkWO#bNq5`kRe(DJpd$bs#rU8xuO9=m4lQz zH~7G!{eb01p8%D^Y|`ftYnI5~ma!kbE|f)8wbcY+d_*vgC}VUz3RD1}^RSX#qtj=3 zQTIj$us1PSV?m-=QZbEh>lr?lkCt>YyZC7%=BkELHWxz7%>Lym0zQTE(rm&ejt5N`)As{`%S-ArzNHIU_Gw^q@G9$KFj3XEv|| z^urUmEQa?|)Zwgbf-XCbtzrMRsp92Fvai(4pMditK+ZN&0OlSvXJ!*n4Mg=lg7B-#j%lwo(YXO*)_=*Yd=&iPR-yn-7I@eWTDV;E22C z&duK_;MaQH<;Z{MGrE5ktMfPFni~K8$*%wb2r1`={$H$>@>FC}*}!vPPI+mnA!nYN zRe2u#ga-_JKnki!$==WqlK_%!2o|0bP;4xCjQY&kCU#Jqf2I=@51jR!vqBxhw_|qB zw8l7az8{VUB9i;WikkAT#2E?dM=x1W+i5RugWjN|F90G3Ljd3aCtKYFZ23sSvvmlr8x^)x)hgZysdETF}Ap zfCtlRufxpwF>iBr+Cwa2J?MPEvl><-nE*-wCugaqr$lH>)_8Ni;@W~9Q|Q5Mm<3cR z3K93xbYpaX?S~X>`1dR<$}pHr*z)IsO^ZkjA~pWl0Bp+Vfm)&N?epf`Dl zr`Cykri}O>L{)rcZh7+1WCn}^Tp(Oj&rS<3Ps4>bx0_+|NLo8`L{fi?=~AZ%&-gK) z7diHGC|2|fH-KO7`}};hBp~TyEqwLjkI%eMptEeic#4q!E(>>pZ^lCc1feJ9#S!2p zR4x{{&iK2r?(-}wI7}CJMxuIBJc8qfmHr7y+l8aJ8mrryVU@!En<#s94Zs==i>oiO z+MlHy%f5as3+%Pjb%-B3ZbsKY#imVGK@&^td-Li?NryC@@pbX^F9<)!L_RB%+ET89 z5OJf29a>DGQb=dQh~jBvM~g}Q@+A#93koG$Iac!-xEeD4n1jv(iBA&?2l9w#Zd!y2 zVlBG@i);1<~=fK!*%Fjuc2RqA>4t9>G9 z1;qScIp{zSAQ!ocY8K_Yo6}0qL;U`qh9$iXeYg9+RF_-l+$ zDWrUFC0?L@9ai;5X;sp+(>?88P7TFwN^zm48h(Bt9j;KrI`|=b=vPHz9>k$nPCYO+ z**)el?m-~A7M)|Y_zlj8vQiaha%!l6v5N{>zy5d|Krh@F`n)srUNL;xhtOLutoLQ1 zT3`a+kuHE#mhSwtyj3N`=k9Naz<-3~ypD)@zwUS=r9s!=*A_Gk-}!qahrOg$8n@LR zy_fA22FBHOW$kTkcB!II7yB);XIR$QHRASs!xFk8J&A44ydOxrSXB2F2W?tOy%vXi ztL43<854NHV7NR@Z2V?o`Ks$<4!_r3^nVDbeD^j=dB#t0u&Lznc{^pM6e=DG5XU?GfZ?9HmdM*K;bpmV3p_i`8S_%h=}M`Vq)d-qE2|yWpZ+OD*(;}vIYX`q;9ISL}wWPBOX+@uapOhc7(Nrqkj9#nCu)B5) zrGL4x$I|E!<{rk2yOq^s-}=~!Gn{eR8Wvr8;r0frlef^!MBtQSE%VOQZkOQ`v4xhK zGKQ&ISvs@Sx-eJnrL?&WM~|;Vf2|DH=k=aj4~6p=IoMz`kxZg9?KGqS6cAlI_D`wR z#ud(#S~oC2EvgDY0a6GF00@msM7MEECv@P|e6sWYrfA#GBag3gS9P;{TULiWF8Qbv z^(jAubo*nmcWLmWtS#S9F{Onz-S1DM`7v8;Orgv7T!If;>%}4t?0BA$ zc8HMJVFFOC&M3z9@V=nK<1rlzt6IZ72BYEQX*xhtAcd(gb0tg*+N&-7-j!G7_5s0N-labg8YC4^~U1IfSO16Q;|tsvaO_?5DB-j zvG1M$7BlQ0up6gyVRZ6%Z^3}Bj8EQ0IvG=vP6a`=d07 zI0+^tro2ytjNwXrpD(cAh;^h-HCN9}+{U~2`YU}zkvOL{aj|9;ldM~{)jy>}zz3@3 zskL8$p}Thzro6A~)@SM38YS>?dY5du0V7GPCa6owU>tZloa*R?*So0?_q*=CbIGFi zyS`o-twK&g@P!D}V)<8F0JaPoDXT#u43EyC>JZbetfXXHt6^D*Q5Q8MF z-XA8@7RyHs{)0_5N^y_MKxb`xwo22(vzm9~rq=Ifz}Yg30lX+%kPH_sHEsjjeG?Sn zvFpsED>TxIN@15hZNFzUzC}c=0V@Vq?g{R7|9d%OoX_?4$SG;>=$&36J3@WyYc-v& zUnN-2?X-bT09y>hs(Bpi@~K3nrB7Z4HI#BP&3@BB-lOR-+}#RyHggGgq5n55%cI6O z1o6x9$1d{Ikk1CDd zydnSq2HSWmJ=ib+5?BSvUcYqnDSK^`x!Jy!PPgibr;++LXS*{ppTy`!Ryh&cMA{Um zvUQl$cXv{Q#m$kztKF31*kzWX7?GHd`WZ|1@mef&G1=Wk5YYIQ7eV(cwO&2;ewuQ( z$UHJ0SBYjd#msd=>v5F8t~58XBMmwEI(=vTzSCEUU*W&HAOL z-*9C|Wpe|Cc%Pro9m`)Lq>T0ci)x-l}$r)A@j?b6N$m-RMkJX#@r?oK7pZ z?U=HuHNqUFoYTc``e6&8E4!;`Z)-sJ?+v@CyJFVR0xQ(Nxqkk;Fm?|5I~#|__1!J- zA?}F)yHWoA^;4JPwCx5o4_&2GM9|cykFt% zk=7rgUwTQA?3xRe{Uki4%=0X&8dOp|2Lh(0VFbOxz*4wz?0A$V2@eM(FsM$at%5(| z^=as?mN-BDUncz%0|55SF1G;CJ=f2d20Kv54k7l>Gkj1m%)M25e&oykHqz3+ylh~S z`v^BSaX^1i3L2sm&a4Ge2*hrodC&*t#?u+&Z0?TJ8L5M_10X-`6JnYO`0mtz0_n{D zF(W!ZIXunT!x7>6RZ52JzdA`2LV)oTHb~Cd@xE1LF&a$20|WW00dE zxGH3{zZ7!i$Cn}{M&gWquY7)i#AYF%M&3`Cp(SU0nyfG&?^DjtpwEL=shM=|z+U5xFI@ackl0bmW1>$BtBqI_rtp?qC@OHfhS= z9>ru5lf$>_$rE-;!`4RI12B?h^99lM67XxF)qg1V`P;644fmo>a8 zyG9o`#@!-<7Z7*${}bKpuX=9Y>6F_Q)Ml)RdYkan zOTiigU$c7Lo_30ave;;r>M`tfdUDB)0ZjP|1d-Cujw&WJSN1LOSjEw@6t%TcbO$_y zoif|q1GhK#w+*1ZPFNzb*eJvSh&`*Ax;jM_lGiet(Rpd)U9nD|@k-i8A@9UQb6zmG z@tMF<`bYfYkdhY{s`a2lB^!t_+^|ghQgeClf_}^i7r^D3==)V={oOyLC*D`BX2Kl5 z0Z-A3pI%;B*MRzQlUrjS)6W42KmdE<&lm6WITfbh03^Ne1fBsLqd@J-e-@?J%}dd1 zKiowc*+=+JiR?H12);oYpaj{2A;NKtwULq?$NkicfrpsSwrmFM@-Z(}OQTr>v^H|V zW$JD}_}Y42*|+=vNYB~2X!5-J@Q}~rojs#9@drzwLG;e(FV?F#K9w$5)(88ZGUsiz z4e1x(H_8RDK<@pt;7A$suMqG2s-RS0D_p~pK`32%!zHA1{Ry502Nrn)2U4%B;E?AS0cwne-PsAUEi1T2gHe52&%c4*Z zHEFoGr&H(fdRVLt|pp*jc=TO#%GMyLBq3^rG))-VWg|2ng{qiFX zNm+brs8rW|ge)78&Is_D7CDOZTO7*p_X?*|6R6U@4^5S zr5;scC%58pYyjN6KANld{_?5{o4|WLg%?qHig;;CwNL`~ziH>;&;INu24Y{?vIYYZ zHF7;S{n0OOTSdWLID^an zej>GZ8u(ZkA!S1cLD7`}6@2y055a`yesK0Z+{P<$mG}RCWf$QoDxd&Vup6p|kRGrc zFUfg6%xAB7wf$?NGh?wusBrC*#S5mgGH9bfe@qzVZ$M43^sbT$=CJrJu?=qJgCz^_ z-)9h87tzvGGz6M81%3HoFja%a`G{scgr|+W~=PZ`ly09fx8mTiTfKDOzzF&33`5LkX*m2lYqdNlJfIxq$Jr%X+ z`gl@#CPe8jSio=(FqliTI|k>{sR!wguxyJtQ#ng;FckLaX!fDDNPPj|WMF}Cm9Uq0 zfPoFcuySM~A_yDtPPZON?V>a>)76Yb5geY}#9~yI)eOS+8~`YvgAvc~PyhjAruykS zKggX%g{fzq&D#J|aDWnC`PZWg`4n^G%sgLJd^OfrKjNTUWX)?;=+ma`k_rbI`hC|= zSWN?FjEz1$t`M~d!}uJEtiNIu2c^bMtp<3|L1o++VcF4IE?$Q+@?|II=zo=Lk@49& z>8l%wg?>6ZsTg5a60z5c$g`xg)(DTc6|kyh*530jUil*8hCuyg^Jx6l#mUJZV2fe_ zOjBJyL?3&Vci6BIKZnx0@UP2?=D&_SAo6QF95N@L-nWCS)2>Ws>%W$d z?GiUGwN2RaDt)zK>gL>>y#-iYz1J@~#ag_jSkbq%P^7rK6?Yq43WdSly|_D+!KDnY zgA{jncXxLN=T6`MJ@>iackey-JSUmSPO?{4R+8V|$(U3CyH~AM zFKQ$3k;#V-tN;Z)~nu{hwh^3_sLWXX-@C%dKAVdy`EIODT8r2y>H0=;0b=bthRP zQfyU4hnbXzu+WSGeyLafB6&alhFa^Foc5ZAOp9`QTE0Hdy91gF>Dy9WsexzDsp{{_ zLmVP;6r@Hqfln9;7-&Q!vWTz_aCU$^)|?Kw;YI#~KDqIpsFNQH>AN2?Z6B>%<}F&f zW9S$es=`Q@Zh(j`NvHlT1;7#jK?|yg#Cor6MOVfqZn!Jp-PGeDtJV^o5Dm~! zx2aZo|5`OZlQzSawb`LnN|}dl$tx^CTrnN#7Qxgb?q@MV&~Fmw9Di)pGL)g6EDkq5erWoVG1)Dv&<9&&@YKP#7n(a1j7N zN&_%FuHro=wd*G0(j^ZfdDY>3?f<9Bb@bCcbc;ByX27!LY=*eLU!PqjYcPkE1nRSg zTv5b4_(IW`5df(x@?%h+yX^0m^uJIIr3nJb$n|R2uvo~C11BY8$}{WLqxI?pK6LMI;$H3pCcY;qPbkh&l!E8GP0@ANp4R>qn$n-y8yJaxUOq|Ldpt##KOqS{#P+jF zakV!TXvg`%&~@*W2XAgB&Q?%(=oTxU#h0kQw%UG*rw3LG91k0{v$~8K0Dx&Ff#r8k zA47*`kLxP9kN_cpq!ikEdkC6<8nOd|>j)|W1&9bj3UbRjv9LIM*j_nLe@(fAPOXK) z!ts^pQ&_*kjTI@c=T43VVLTEo?LSk=d2D(e7QsfVYy}~~FM)_5xo)K<=Ec5QE6mK9 z$)a6KmUsPYXRD^-eEQDd$eIw3JkCs*@SEqW+po(hlA?Z}$c^srFXW?s==q~ZER?hC z(g-Zqec6S+y~0KXI@C>HVZ&wTz{HPXnt&AGhTlN2>H@|#?vO~A44Z= zfZDziHuL>@)hV0m-f5hZkACKatxtd0J=(Q#q#sAP6UXjOgqTc0RhKBwC$ud|@Ov(1 zW|0a5hG5TWP~U>~Al+d6+9xh;5$(U*p;x0l`8Mm7U@scgsew{le|-RfyUjYHyL`mjxM*c}3KYTszX($;VaW zqA99-kS`;eq>tJ+xXPAt+lm^W10J~Y@ky?@E{6&|k6Ybvq=OG)J8x7G$TrekjXR39U=gQ`-ad5ox1;IHkKKhY~=G5)SqqVeg2-I#lqN) z&7mF(MP=uBl6Kdi6<3yc+v+%fyt37+qVoM9K!o$nTk&6Ou~N-<^fjgR!={}l{yE!t zrdMxaHYov%11aG4YEIeC-m3G4WEs(tnn{Rd%L}6gX!`vJZNUYb9dU|ZA{7Wc-U%|B zPexR1V|#0OlE{&G&$JQfT>Q~8@2s2<7rYI3A~t?*Mfa2A`S8OCN#39W>!%o(_0G;J zT&s8ByAMm%8V~BFqw)S$dom4C-Xl>w*Y68y$Dy#X^`LNv$)a#(@i^(O__ZelFsedM zal2XO`SN=FQ1!DUHnK|tMgCce>)z(XYz>((Uegj088Ws(z;_l^%YT95{uDH)wY~4B zVHl9@Wn?}k93+^D*ln5W4_USo^?sy@>I^@&xBb$&PU8Eh8`m>olV3Q`Y}KQ6fcW^@ z+T3fEO}9>0w&6v(Gp*rrMTG04gVI#NYJCQ#*3uNc9RNPyr>dx&Zy-|9S~@2Jlf599 zd!@`~Qk;$~Y3%qiSYMREVp9RBpM@CJbrz))o*Kgr`Pp8lW7~0)#(Z-gC#lmM$6M%Q zBAt+F{=@yYF+_T#20DKWQU)?H+!dQru9b6ZcwV6&9Bi-=+Elm(fN8n zXnxPKauM&n3Le1|uvld85k+_MqGLlz&07kUL`|C;RR2tc`w|ECd-lzILJf zMTG;6du~Q6 zC}2<{4>-){)k=zlVnAqWhMuZyRQR!*uff6SH!U655)%h~S&^4nOJG_0NxNR_*RJ*A z;*1l&u3tA+nVxm^4)r2t(i#jRN=_#;mhpY{5L%~rYRcrK5Y}+&RNH-X1&K(o+(nv< zUu}wUt2?5KO_+CkLBRmu^Jg428V!EU3hwx7ogIO>!aVw2kq)b92s9Y~x8`b;V``iboskIgB(lR5r+VzgzXvaycEhiWK4<(HBx=Q`{pc|FK+l5taggZk~0uw3I`) zNWE8l1gPXZql;o@qljgsboqH+vG^*5WC&nRG)vnZ6qaV>&5jRQ)e5|)Yk|HQUHJN@ z^6Of+@NqWH)P_SQ1qVp(8WHV}Y+TVTC&e3)w~RUjei_*1Rs?ial%fvVc?aGAE!H!H zAMKP*ZcOGQpHpxp&(Sz0Csa*B)fcQZv8BfLIFK^8ROowsPGs3i#V4NCM6%B4C#I4< z5B@=^q7RBQiSOcOzD;+2J>+m#B-r;Gr!&-~MoSrUDFpg1t?j9UPLKJvH;#VQN_hkD zVWjTOFg42#m3ZO-HFwAzti5{y)Wq($OM*0*NW) z>ElDKOv{9=UHAC{UJ-ts5|Q7$6o}$!b#ThU%{(>O<`RJ~n#>4XYcMZ-`~pDz2cWXT zcv4$p_1W00Q*I|1^UkWh09lonT=@I+#D#$BUFY@-{$t8y`t}oKKR|nT17?PAQy^}jz@8ga6 zK2f>V=nz@Uf%sCbmEB1$F~>aCOXSXdo#9|WFuX^dGKQrgvC~n|kS(U7gMepwz;_IZtEM49cFFU7INJY$o5>?bgLc^{lGfD?~^jJlhp~@OPpHq--_0 zcS9($ICaortDDb1fdHz3m{&Ah3%Lp=6Q^l~j+g(em!W0u)QF@gnUdBS=Oq#o8pY%t z-d58i4~yxrqcp4cp1&}^Xp>Hi#k_tmhOzZtp}&BGFq_C2zUSjtaPrUiKR#cYetu2y z2w49d+h0^bYpM=pj?kWu$_d!BqUh1FQk_7y+m8~rx%rXHI<16O${MjM@*3x?Jmd|{ z+me8NlJAWY%7(U3a6qAOCz1n#`UiZ{)(4nPTL+QHo?4%R@zhI;baZ1QX&Gb9^vU6K zuR3(VzGeTEZgp<@bCJskKMZ@;;=ps&LE!~Q5)I*%?oS~A-~|2#=OtMi!un-*=Xz;0 zS6>XWt+LDhKD{jHsSrhoSl?qZYh6TTtz5TO6H25WN%l*>!Begpr&M+iMs{-4ODR2#@+f5($nP_8=-kYzMLh)`a@6 zw1m!V#?pFykwO=xP3RUr#Qx6Asj@H_kze_^FEDPJoldVzQh_A@W^aOXM9y7dKJYq- zKyaf8jmPYh&LLvp{UJ|_T*a)FCZ|F?svDFR1(BtFO2)+|goAXOt-547qk(_G46Avd zSgIwxsPah?G4S}SU}FAQPDYJC1SS8_Z6;5Nfk~%irdYgoedNTcR+qr#WCvvY+>}Vi zcZ>8$uD%LWNZ*MiT=A?Jh`rB!hu$C2-du(tlYFskZ*xVFouq8p#0Pe;Z6}B1B_pE6 zj%6?>4%e$CG9H6ZD?aNaQ}hdMeTGaq%+oab@m@IEPd4J}x(-%GveP7cexiBB@ToZo z7*e5Rh1kxOz@0^JTTN5LTlpHRr)T^{T)*RUjCVAba$a|38>YUoUggP8&JVw=iShk= zbok1Cs7s@k{O+GfSmN{*ld^kT>VW?q(7^IM)L2gZ%)$sIIa+ffx$>vQkBXV)=Y5Lbj@$1YjpP4bP34rexX#Nl;_O9b$O5%fFxDKq- zQ2U~208i*)!t-?=Wb1LB&9dLJot{lOm6j(N%oN?HNNwYl#t3f{Qz@d_o|b)hqa)Rp zC_TBPO^_gxikrte#m{a_;+d~*UmVd<8 zcIIhO39zzW80L0zvxjcmhURVRzOdv&%K&8ih2=fQfh#pX&=9F4Bzb(4S{F!#O6Gzr zD2)(_vfB`I>I>-bsPN<7J4h{|EJ=2DvXwq7hH@r~wW(L`aKB+<|K&Kx0ucCGRu?_~ z*=M|iFo*#@krKcd01}o_USUAZPzhZ>+NPipI|o69JVVwzOQ@0lQJ@}X5dQf-U@#ob zukYQn-7Rf39e$599~pD=Kk00_)DHIy{m&U5DKQ@zCa;Etgl7Uf8htH4u$hV~j82&n z85s0z_}VhRGUehyLZ4Ai)VHNkzh)thnksq@DOuh?(lo8WEUjet3b=Wf_8KL<~v9rC6z3=XQJQ0@^ngB%vZ`k;xQt)}!#0X+Y+5HdX=-oT(k&b{# zr0|5#Whgb)8G(^w)jB=raRcraW%p}v^^jG2OKQq6j@^c=xR5Cm( z4jVEs#%KRsjSeGk=HRP(Y=JkQ4xQ8TN3AWe1!$0Y)xoP)V;X~@GQvOO z`vGq!b0XG|phJK^9WpvlZIzj5InSN#^m+RXK~0^}cu!{;;Hg*PGp0lb=x&>*XjHgK zP=A;uAogWQ5h#@~W5$6|(Wa~5^YZ^^ZolZaw*hbf0587+PXME@Kxq~RqhqZeU<^SH z4RH;C(gr~A1pokhihu{NY%SWABLINpqPTI+t_}boXf(mbeUS=Y*Y`G!0Z@w4EcYgzeu`QjS7-nLq;O6E0D^m7HM=nYK|XSB%*qN)+x(}h znwoOn@hrzc9(5LNp$xx=D_Na~?m?nRaRyvAXxB^ zWAGYontBN%ucr9PF;P*rVxEX%k#dnQvKkS}++mR#HM*}NLMVU;Kn*XAZ%mv10me?*ZrWpSCK!nML5{W3sMuZ|{ z7Slz8=`_D z8(dhp004j~0Dvg;*8?|fe|qt1mfj{Bl$ZQv1wV9FVCl1*JPV1^3YXI973~gUliX^F#_2v%>rwwmx%r)6C!F z@$Y5x4>D}jh!iHg3nOu_`Xc!`vYW-oQc`L5*{(9;i7;jP(Z2I5$YxE-G4->Js&=@` z%CU-kV6zgB{D2|HVkJH)!ZtazAW^tCj*v(l(G`HhLdDLH5i-wKcuEx{b)TZZX3qSj za2sPH_4@OZtf(wpa3TsTl*0Sm{=)qOcfe%7!Z#~+=ED3eHhwV{HzqU>k!bj9eid_m zGF3O04Ad0JRo~0BDwzEXeSfzR{(_V?`j$~Cb8)}4^g8{BPC6grt z=hp|%9D1{DSDDP4&b7yjHK(rsw$=ZJ18Y9@SovQ{$B*r?0&DtTBK?0M;tcpZUHHFa z5Ph0I!8#Iq8SfmU!=IXnWxsI|(&an$Usx)t?LYYw8ex3Ddlo%&*GGTOU@htyx{sF2 zf8BJy%q2hu^!h?@X}vcRy)5(Rg+2o%DgWSuyiGB9dUwWonPYs$@@tTS`oZw3NR4-u zb=Sr~d#Im2G7qOa3Q>Tz^sGZh-2$;B3z%p=$`2<0&iROH&N=r(3w}ur5iL#AFRfC{ zMuHj(t`QZTO5IFqb2r(4(oGUuXqQa(QuNK_uo8EsS7g*OxvPl$4z1L_mgRx1lO z7J`hOV6BZ~bX!+tGK+V=9QuT9)E|AyrRSpb`^qrx#=;V2Ti)vgLvU5e38?5$ z+GDbU#1&F-X5~Z8^SI^Xr1f?icn2J2U$-b58Fo{~IV2+SD>~@Ye5?r13X%&GnU)ZF zFS0BaojOs*d1Jj2bfKK^kuR9iN3O@!+^$fC3q}J|aCF(8t=zS{`{U(>#qd<_4!rIr z&=FkT-58{nRXr{_GAT=QYITmgS_rvssMV>i)83yi4O*D5ti7GUtLJgdQxir_GpfQV z0XYy9vZs`ACf#UpPnA0tx&vvPhwQluBo&?l(6lqoBtqyNVvCozPIKT38ip zW_Dw26{(5ZmSDfv6VjlsiS1ERCx4cv`DRUZr{`oIX1>`d&rw^wBS&nP+9!U&89BW1 zQ*L-G6tlG?PHxkET#+ZD*fPsxVG0eHr(~!Mq(;e^-ZK_E>BCeVqtUP(e47_4r4g3r zFh^*J8>jbxc4=}`@Hq;;UQ_ytkV4%Ow^V(+CM>bdu*4uF!T=dHS$(xit5zhg<}0#* zu6{M#)-q%@D&JDpCaCNs7hol=TH&>6GWhjLkzytsHvf9EBO|bBTWq7*&|V0^j{kls zc>034a*M4j8okk>p60|`av}X; zT86iIUe;Jtv=>9xhEz6&_mf^KeF8@!6mP@&#&g9ZiP%j4XNQ@u|AnMv=Iz*j%uILf z|0Jz2(*Km}e5&u#J&oWdtp9B%md5mlaS?UoN~%k;oVrtHhccN9&Q>nMC7 zfBM~yAF{CqEGC1r0>}ZmMkR==C?KnZdezM_>>5y3(Tkta}|E4taBsuqKii4uL z)TFBU@b@b+dOJmn!SxEh8`4-@?t(F-{-KSpNr=w^q_PeSD8S7>mTL z@im+%b4%b$TkEiAbRKi;0^hf&=*~=%!u7P6>t>v}EioY?A~^S>72O1KA$P8vJqh=6 zcQKwIh6H|wb?A$Agn!EIh3!iOlDt2Bog%a;|UR;nnCM?lOkrj1Ou;75$$4I6p0 z5$;{w*>uDltJfK^dk1(bMRwszmi!w{p2$LlWOmB5fs#dJ|9ET&i2Tt(!%n_OZ~U$y z(0TIqUaYg_Tl(cSuY~Vel&?T~=Z&Dl?MGhFg-;7>A3u4)Y@bC_Eksrt?y$z|JYIGRrBJ=YpUb}= z^XFzI0+B<3KNtNBnMr>7lOImsIw9VWh6W)ETOgYe{ALu_J$LCi4G+yc<7{1epg%sz zd}ch{xs5y}e2P5vXg)HO@$k5IX+>_Hs;jGOkm$p|DLCMeM@W{Hl`o@({^ZcoQ<0npC;raOg^*X06 zE-qhsc;tIN-@xu&8tG4KS5917;4vQ4r{2LMiP9&=ls3*RadoXwk7v1)5aqgt^i$pD z)MuXFw^kH;X#$Y41o$;~l2HBFm4tlk2N%V8gm5fx#H5wj$lR@N5 zN7cR-_b&}iw`2jCZLcz|nB)g-3l#beCTXDgMZI~*dcVr zhm9r4M~00Z0uQ#G4P?Cj%lWlmGCbJneZllMgSqgBr_GD7jLoxG0{Is&56|S?pvTdZ zsS}wo0!Q6;cZw^KlW-U@uH@bmfnCRwLcYS)3eEIm^wuG7w9l4@mX&$PvAOAYuReyP z?v1Ch=fZMDApN%N>sh*HfTT*PoUs=^aj%Rzy7F6Jqj()RUA*=EZSXlx z$aT&&Fj)SCjJJUC7sDEqVXdLvA^cH)W}_g#?wSl_v+0R-H+?IoreXk4M}n* z_ET-Xjj9BrydET{kdzbdU67({JcXjEw=-z^P(Lnx7Yrvko5eXvzHjThMNZuaKzb8n~Rf}3j#l|hFNZ; za+QqGMr?q)EjK}U(8x5Ef6x4fK(HCQMU!z4J~qpg(zbE6mg}$Q>{~YZp7vk>*vSnqX7^h6|sy9Ln>2k6|kC8xEwZ6`H#9mT3{v9hFcTu&*DG+i^Y3%kvdL`J5tfLj0nV|-% z8lXEX3Pu}P0xI>WkpLN(mvqdtHc|rV?20P2qHw1stci+&z;%(e6RJ&Rs9%^}u|=@` zz!Gk5s8N{t3ap1WE}Ez|KeCw4&72$v$=_De+)2nC!Rg&p!_wp)*;3~TTRK?SUaBp# zui+lZO_{Fasoe?WHn-Lss4bJG>5ES)TH00`Hr%aO@&3a!zYX2nk-3DTC*(8fTd?TU zF*Psq5Lt&Gm=HV=Z0`^xR*h&qx|ilVgC})q*<vrF_oqRA@y+G_UB^TQ*#)x+qrhoJu%-^-qB z#O2t<&9nLz0Z_X``<|A;dOrF~1YM%o_i&!6&S_p&e7{Kv>#BIP<1o$sSP4V5Wl35( z<%`IK>hBI>%wGM_>X6B=gV5jEWhMJ``vu`(BxT3xMbuHtaub#^V4j2t)u#{YTuxAv z6(S?{h!K{KxF#u_iE*k!wV}cQbIE|;{gwhLhVQHAwOZdfX@gk_dp^{&c|*E-s+RMp z((GB2Kegti3f`PaYH6~|k)(;YE4feg3CpV{btS8j<&CpSf5GMNA_*FnlUeBF-t*ks zufL?qhwo|e@%4BWd=omTsG9ijc(}e4jg|jD3nKC)`IM0f_z?Pp@QF6UIwcE3&!@4V zFCHEVCP#HiwysO1Fcet!%u zJ@!-dx`Xddy zjOh!ZHCntlzd05`CoL(dD;}A+E7%^^%i0*}@2S_da;&7-Wf#q;ROGjGFJnZmnileP zM*}M@^X|LOKXCNP+fEHkZbK!|J8bXPZ>{17M!h=mr8mE5Bl`#YAnWE+eectI^Ce`1 z!HTc`EafDG!`-0hZ5J4=LunB+j362J2jrn4t~&v|snAkZYs}G8N8w+gCcu+44d$eDAW=ti73)Yj+5N=AI+03^{bC?oY`KEH z>2$Qk9PlJa8YE@}FAR_ejrW1C2rfK7SLqs%Um(}rzIMBq8?PR(egT>emmA1!4lhVt z?G|tgxUB*I7jyqTvCYY?4?b^4GbdvtbUh#L`B1W-9)U4rSesb)T@(s3$(}E8I~J`1 z&jFVMt>$HqfV_Co!UfK_aBY5cq+z|`#a!nQ*MVL%xWye|$HI$(+uAi1Yj$%iwCUQ7 zs)|iI63b1+wbDPOX_o(&3$ZJ3rb!PvnuoJZSgZmMRE}g1v!;vwwQ;q(io1&NZVTR1 z@dQ&^^=sP$mnONX;dkD9-Rn{XRxcHm{l!7(V7Cn;C^XE~P5~Y0YL-C)xttnJG#`Ca zx<19n6C9{<7PbO!O14q7%Jps=tWg3w8|E7q(=%N%L3uvq?U#{GeJ_XICePUTo>I*W$mK-Rt{ z-0jRW2Z_|~0hjTj!g|GwAi!nJNjMc8$J0^H_KI6eM?0ww1rCXIyxerw(u?pLcrV+C z6P6Q}^kQ5sJQEcMZSHw^jjO2@at!p1K)OrP2;xx6#mm4XffgUUVUy z4GVaOj?9>Kl%4aAm~RO35>T-WG}eYI5TY>LKv@-R9&~8kvSinZvI?wJ0+Dx>-jo&uP-bKqeyt^YhSA6<&Ct7Y<`>Ud(yumTLAiu}YyM?xH#W=>*GLI=0zy(pWYzaTeet<*T0 z`pd=S2wvUrDlD)sv4=Q7(?$RGl{~?JD_bq<|Ljix4!%-nQHCKN+~=$FCng+7Z+;>$ z82gxKzX;c)e``7)nZ9W8TIANYS*@A=JScrYzbVv5DCvs+@sr=Thz5^^Nf)_gK1^C) zH2|%zzIVz5U&XDCyS^|0$s1>0t$jeju1ro?tKG5}x}^b?o9_I;43N|Neml2OX`_cLAiViTVTN}au2LP>;JC#s;f3}JR;ECh2j zuJ;B?o8kHM5+AqSex)GWz@H^kU&$TS2_Er*6&M$K*5>Im2J^J%)QX^8(_oa% z?ah27ASp68&be;Asif2)GTVa?h7`gvG+o9ujH$V zoNW|!LFs&isGqZ9XcAsBgL7M^zd3@D`P5{;Me)Ha6?_-AiWbGYs2LM6<6!Q;{n~`K zopsyqN5DVQ{fQzX@0YIoVzY7hq(A$JeD)A{pR!_n$z+*JANNqA2Ma$O*|rMQNy*_r zO++>l^aI405`DlIhQE$L!^W&ekYv(fsJZzr{X)8jK88N_tN&LPBduNluzh7^2w%%; zmMS2CQV0#}E&c%Ujzfv6oi&gbv>9?NXMSY!E#4QIEbhj?$07LC?=Mh{JMS4jze{G_ zyhnd={#auY|H14W;lpk$SIZown#Cz<0Rywb(35T(rR|2j^@@B-zI}VHgs(;PuWNSJ zHM6&o*AIF;r(b9_R*Xm0bGwYVNfZ0mldYe71_hvVHr|eK)wqnZ?I(9sCu0vp_X5@7 z)`8A!J9+x?k6AHN2BpcvnQEUI4=As6A2S*ASvr2(N7o=0ZCuFR?dW`lKLKG*ITbGK zxCHf!AD4BKA9fwNYnuJ$;FfV)s?xd2bLx7YxfD*V619$)b>y?k{L07Zs5KBY``#?l zj;8e4n8jE@-)hq`k;t{-s!t)vKhZ5w{lVS6@v~9mGzU$X+0^Mx_!MaUwtRed1jy9m zn#YC9-CAq4ZX~o9j_lh#FhVRBYMQ0f2)jMF=_g9U+zpPX)3KkFsqY0|$lq_h1@RJD zMy{L+QbPISA|*<@x4ZN$3Mf9fx{|c&s_nU-8Y?e&OS&z%kg8f;Ymukqra_?cu&(i}=-Q1zE4;|$}rcY1~wPtyXs2RziZ z;(Xqbmwo*b%HBAUbNtaKdGuj-)YDxzECl0P`aYe!YRm)QuCY$vOIKp)(737f@U&9w z*~PN;z(-u4u|pIh)mHdY%gBApZ+W^HSKb3t==v!0Y@3#ban#(LZpqeU2@ z7ZS(pQ^uW`WUDyGsVTBYEP{#xIA@5_PF_2=rpI+ed?&q;S-xzXnsmu_JW6pRsYWn) z-Q1g6TxM4|ab{}Qu^}8tKc`vgvFkxGZT~+lHmD7N9Z`1Nj@|G?4BEVbeLF*w5UTjz7ACmmxKht zE*j+dETiugay%v{%Os>M>n0734|wZApkKpIgG*hwb=JA;ienA115M#_Z(;A<$4SQt zEtIVT5ZBQv4dp7f&iZe?!J!Fykd-rOiK*iOY~V4smVtLhm$@}GS+vkFujW~oZA<5l zmyYV!$=(x&{Cs(weY_||l0%zM@NQ+Q!BCThfSKna!HPt#q^0;8d>!o&IVas-3(IA6% zyr#)9g73-thMAU40zaBYel&dT*bkrHktrNXI%Lr&XR6TWcBl?seDF z2|6##!~riuyfInfvl95pS2g19S|y|9K+x}!QC-=4chIo~=p1wS7k09)o%hOjcP)>O z`wxNB1oU7=1u(-k>-iz5WYLFhRSen(@qPxwRNFv?#Es6$pEjO$Q^`BG{ryp9@~>vei!Je~i6Z zAuDllpRU5zR;e_;b8k#!VTzu>a(c(rn;`&W*?*o{J%A6;%5=$7?Wkq^0B9(PO1@+7 z73IX#k*1Jw(aPYrUAX@LgCzHbyA%YIc&7JEN;4rt*wUesyqF_b?Xnw8vGqEn+TU3t z3Z{g#+D)k1y*&h9r;s#eJthOtUk*7I-3E%_Cho6OB>mSZr2Xsu{_9xPxz7=IdlB3T zvOd^EJ@vv~f^RYtH+)bx2V-comQ@bWSB2@y80?%WF9Jv6ZROhJ+NG!ZCNHw9T)1hY zy_c64jFvJPp^tAgc-2$zhlNRZ-TOW5SLF$^t&6ucCB%Tm&L}*(c*R5vBSnzjPa`fa z?e$5|X3Tu}&rLP5Il$5j`7gzgj6nrE;La?VC^=e?lYQ-;@_G?m>MtI|n`F?Rdz>CM zh_X1=GGWkP_FF$p{wHy5G;h+mQ=t+a58DvaGByQq3$!+VWzYMrRE;Q|m(fPFmYI0z z_6gG>dWgdvM+?_9e)_ktKUK1Wy9|128dgN`+C6k=xYKl?>hk^42OF{p@<#1|3p#pF@#9BwcL{ZflQ=@q*VF=Sw7RgU_X6){fy z$4*ss6pR$*!BH`&bWSqtw~rT9A@&OwSof1YtP^KC$$x%VM~+-0nZ@k%aJISN+HKOL z>`C|8iMFKYG_R?WeUaU+4K4@_bT*zaeBP{Zt>sUqQ_YXks99QWIYh6gyux_j^1<;o zpbtX>LpOh*VWdt!T-~B2s?ysgDZj;caPw?z=mVSQ^zW<{i|Ut~PH=vF_@xPnt@Xxn zvXjfZ#veikgWt4ES$j87UJFN`RNO1-j?xkCdF>8;kg|C=`h1V6O}`HRDC80i>*BEK z%cyauJ?uk~!AN;@@g^dQwL53yiivdQs1&S7-sGOcC``j0EIj35*l6lIf3>hlrIrUD^=E=~(vc)|75Q2WN&e1b{q*QX&hSqx}TG&{v3pGiO`a=ZU}gSFGk+&aD^i> zI_qL8k^HDBKwebPr^f1X}B^^A1{t*sS77G44rqrR93gF8}!&oeIh>>$!2 z-VWZ7Y_G>tA=(uZ+aFeuyOYoMjLwTBPyBcl&es4zA%rbo)z@DYH?PvM>ikDP=|-cK zrF~>EWwha1WhE~y_j>96W1-!<*rvZZTNkhs@J5>ofJ!;cP2|z^Wm@y1xel5o0D83z zdv0BG8-cWV4QtaD=}>(3Ao^V%qLcGjbuaSRzBhO-_PlYvLU-GdxMErERJs${#yH9! zJb&=h`p-5Gnk{ba;mT2u!b)=2@JnK{e4>^%ZRZ)4tAMD4**4EgR7U3ho?D6fkeJsG z$-%Fxh0{3oCx^w4PwTYuqO`wqzC}BRk_RtkUr>C<`1ZJDq=u=QQlmI6Rs65#V*#X8 z(wwGPnJAClJi90!SVUCFZbTF_6%Syq-q(TT`{(mI< z9~^4_JHP*N0-lRkn>Q#VfaUeS=(^5kwkaso=%w*BgUU(a(+*FZOC0 z?ou*F59Xi+%bNqx7W8C0noQ%xUE`rE`0VrO!*ulXe&%e653THDSno_;^!kh-RWWGx zx4?nM1#R%sH1<7ZR8_C0QAy?W$C+YM3sUo7)yip&Ls@ufvS$jMib##4t!=FJ&2=bm z>@K>WUwMUkF)24><$0G^lWC7!@^K;`7Iyc=r=txV9)v7UzdQ6xobnQO|1qQ&e}s^D zFSxQpN!crA?BKyrTzK6QRS@mA*6fpl_MAqk;*Qq-^ig{GW@VX%fhhO&)UB}ex+hR zt*h%N!p{-OewC^|-M?;pa<7ylOQ=irib?6NyX39>a@Re8AHtg%&S-QL@UFdDb(?L;e7?`QR7sEdxj+)+BG&4_`B^}mS-7V47l`nYPs`{mo0f8?d!+FJX)_9gAYYHRl( zd#zyoFbP_dSvnN;<{Vogc6nzWvEFWTQDc{jh+Tayi4X_C!EyYAg5#Tlkc!NKkoxzb zTz;-OIJO_n6t@qZeE**Cd)5>4$#}g*x*^@&HmD#?%$q!pn+yqj!aw~*WcbNIY& z%=0mYmAlX7D-UVY{DduL+k3lrC~K%~s998S&b9NR?1%O-U@81+t+7f0x7)$ZEIdbC zgK@^@t--KeUIyn=t8Nad3P_>(z$)!L(VWB@;V0h(h49d+TYEEa_y;*F#j-6LJ6d2f zekuoP?`?IWTzb|Aiw>6a)*I>PcV=VPUPJ0IAw}%90wnc0gluFHv;e#}v~M*A>6P;Z zh2Nv!`jA+H$y87Y&X5A2Wab8{233CwY+}<0K*W|ykdlh+wDa|p z7B|+c2SS7Sc5>p)?1RO;kamA03`7(RLX=m&jC1BWh31JxdB1;GSH~4eLw=XiXvNV} z#wwTMgqkTUrX=N=mwpcGmoC&QQVq)qr8Ezvs7gr8E1H?6v@)!kekUibMyaf(OsSj{ z2aKZ*rJbk_OZiub~2#ixM(lU>gp3a%3Dx{}XQ!^J+(kfL= z2v_@2l32b_woz0pqo!6}5UZAGrdmpyBSot!C8d?9Ne{Xa5QV)69(cmuPdya9Ffj(c z)4Njg%SEPDMz9ywR_XXmaQ2CKzWYrzQ@_iHz(p0e{6wOQt#)Ix*UePzJu^u0SVxfZ& zpGIw-NVW+r2Xra3A$qn+Im&#d>ZG);ATx|PrnkfX0LHbnpHhCUeuu}+Jl55x{gY0A z_zaRz5zu_`yAUGROAC4uLPOtw(Q~Dzkj5@;NjYk{%W-q}L3l}0lQ9aOZtF39aC;jQ zR|l-~{;GeR>SgoKn?|zp1~~RdR)zJ2${1XY}rcvpjFaumHuvOaPqIjjs zx13?E;)Tq5vH*pXP6FK;m3E5BJEm-s=zxo>$6~~1=bFu=Xu}VfV%UxIumMo}{25-< zMdfB&!=% z)AOtrrqdgO%_|pcNQ-*Sw4Jv(Em%schqNvGt-w1pJ2ZPvza?*1c7INvKMqs%DI3&W zaLA-$7j4e{44b;&Nz+?9a?@t|x<>`5x0>^_M{28&X1v#$MP~YnkL=f0p@EM^#KvZ7 zIyRo2D=HooiAnU|f8WfO^nAc9+%EE)&Px;7Y^^%*Jy>c$7m|zwqJzr*Bz2A3~ z7@Xx2x{5PvZh&g3J*+bSO!3#Mc;-}IxaRjB^ad)R8vUiYgc9oE8NL41^S*;Q>?|i^ z4tOPI^@7iz3-pi^ouVTfmpz0oSV^3mE7;X={+TjgT%a>H+7@HSmIxal+o;VxVOH3p zBgZXm4Xq)Eze~9f9y*p7EGBQFv#Fx9v7gS^rD-w3h0*rbLp3Q*w;gXnIX`pB`P#IRTJe!=VOy zxu-%KLpbvQ)miVhlFRe|33($CgPN^UzkGI4gu|Jt!OLh;dnk^GBH*FdlX+9G=BxDL zjNB*ml^E&gKYI1DNGmwgWeqIkCY&*WYh4IZs9wDRN9j0SXce&@$ULZ5!aR)PnXwUG zc)Y<8JC5q&M(8;`pWr_ZrgS1V62o*NN4tQ%xwgIJZbuWQ2A%Ibtc1EBA{Zii2qXyQ zLnE*vdAK?pWeprB`|P;`hY8q*ip`RB#_b{o>Ya_XEm-tgvE@~OHu{Od!bbg7CZ#xwNI_lfFof61P2Ik`A@zT$V8AQ;}8DuO_<1Ko0(9h0!x-vrxweUYgb}QN|r6m(`mfZhIG74NSnco6ATnX>cb_S zHefO|kUve+2f4K=KDc8(`byM>*nNoOkZCjA229^3RTH++Svff()z3I9aE7Alhg!U+>n%#Y-cpOcn--ymJI0a)2h(YpC( z58CY5c$zf>*~D+!(2J8MQrqWeK()NG0}mOkr+;{cxZINe7=t+zjh2l$yBDH8fvXM) zD;wa`u*Fp?iI+gDbLqvk#JZk^=m_A73ee|Qjekkc`#V{~1|vfKV1<3gUHYp>2g0&| zu9au-xpVHuv9@>AbePTm!Pr|s#nE(YqcCBDB_Y^MfFQvgf`{N5g1ftg;O-hUK#<@T z+}&M+1b250?mEEy&HJ5m&pqp&^ZmDL&Fbmt>7J?TUA1@Z=h?ebOJYW%Y4VrD3krU@ zsAN1`8m?Q4H_k^q&$!*P+}I=bQdt=&`Sq*n{)6;FaZ#OmV1q~1d)w|M^%&T;v9of5 zZDkdFN%+Cour_g??mxzYUaR3L!@944P*j&R0g@qisP_9jp_^xmXDiGT)61Wy!)5)F zV& zX$8owIxzXKOoNjeq0j&8ir4>*occeoSy6o`5fVUp%$bjrZK*Yl50iiRXIhHitLCS2 zbk9gKqUoW}*>Jb#c)r;in1V(#B`~_$cctk{GM;@1-`AQkq3eOPm?-~_Yt=WO(5gA; z_DB?-J~&b2MXT6%#1JcXTN3V{wNMMQiVH%cQjdqhQYXS=_| zRF>5>U5zcz!5B=YBYQ;JCTEuz^d-%HLGe`sliV@f2megdCjR5yB=_`i6L%cGMYoxW zavpO%1|$T3ai{W#FFtC-xMIEGuGFJ7x%<{^S#R7sUg7TZG(Q#}=MPz586HSL6oDi- z>MMPynFXYCR@`;`kiq!r@ba9#d;YIFW_7tbB(twJZp?yl!;AnOTwMbhpVt(<_yE1D zBr|i<7ELs#A7B~OWk|Fn(|5uTC7o7>h(^}Nb#h69%WHsJYJ$saF+0^50`hBtBVA%} zb#45np6!S27q+Y^%qYj5bDhSkVt?bm;3<(nE~%D}jIK z#eu$fIS(Y-+C7NKt-;~hpCp*QyQq3=Aljp4&aM(TU?K(#8FHU_oYevVd=k#?A9b5xF2(+}JL z6&A6ehlu941(EjE#-H9Ti6**-qYRd7Kr*lJApslqOmEgEwXW7jo3PF(rZJRs@|#`V z3Y#+fv^qQNC99`(C6Aid9CF6vKj}ULAKbz9*DksrG513g#Hq`*IuG`ywF3HdmHQab zY11gNE%dyf$F7_(PzKubc^BW79``#hyWccuLHF*xn`S0OrQocb`Ckl53)fUdwG;=j z0ug5=xc&4{XCayMnvy`XEgh2S>($1$ZLB^$2Tgl=XhnN11f6A4Q}UKq%s2sP;3jaC zUYn%Q?IY;mCRAut17fgsW>*uZ9+$bO0UTE|@%k;Q8v#+_W%9+bT6oD#l(x zx25j?{8OZG4xxF?PqVsH`IU@q$Ev7bG$2*)P1K>j*W3Y7desb~i6-jkq_g6vdd}KNgNqv_rXG+N$2&;n;FEA#GB$xun+G;(5G}8T60aH2hhG09Ji0^0)ePtjgX(dj4_r)eW_1YqoE6i#4P<>$1L_SlZ|E<- zc{Rp5p=tH_M|_C!gkCj$-<2yQbFcr^*wqy)lIaB zn7|p{b+%TFz2M*KQB9r_AA?=!>LW8YM;0)IXtVep~Se*f7&B7Vg{`306^&-2H zDI?194tskBJ@lcTiL1%YM7y~jJw{`|){3EXQ4?j2 z@ueutUDBsE9@P>uerN~P1u9D)D(@CHz;eS4Ed+XVUthU)Za{JKv1xtFG3FO0hDScq zbuyiR{5mKgbo2x7jnp@Rh6P&L%#vxgPaQJO0YNvjuZa_l0&Y1EJhR%k%vnuzJzx~! zl61)?uXcO2iWA z+DDFY#)(F{v3`SN=`dI{a5`eNt3|m7aYtrnMTbx648)Y&{ zMEzW#m0#9%?aIBS35k_8>t; z{qV{st3wEsN$o2S%2X1N2e|^|lHQiNO7#-YyU)S6r~bEmXs)t|9rusH!(|)a+?VDx zdIUGEG1Hs+{t&*2h*l`t-{Cglyw3aP6!xdO>eP)%uAz{CSodR^K=A9bJkPM~(y4s= zr2?m%5k}7uK(j91?f9+ftl;%@^vSJozL_Qr)+rD|3y|~6AXXR|_>ixbU|lLQrL3$-SHoXpzl2L z)ssVkFMlM9qg|Mla7p?y+buGP9%;SO@YwBai=PdbrHeNAl*AzTrifhIwQ)T^2ZWf;^k5PZ1y$Qk^d`oG`WXl9 zxutj~-4B@xstdx$)tC{@5La9Q;&w8<+87jXvL6^yGpA^K{KIFOhRGYW{EPEFqMt`z zQR(<@F2UjnQ>;K*wNh_%`w4ONq z1rmM?ezYJ=cz=CTsWvDVKD$%4|~^jsHw9QT3H!z{0WU*$)^C( zYg)o0@W_o5G_?|l5E<)2-64eL0U4HU>=%~nDSDsbbkVR-qNzG!`K*Pa7yn_)GHH4F zj(g^4iOEeXo|xR&SF*rHVKt{iGJ6kA3zx|LdgTudiGqZv-(JMRF0i zW9Fo*#Mf*lkYILqf(#`q5$H)+*&o`;l$@t zq#4zmmBp0}EW&^aW*MUOUha+m<$dhw?-DO`ckh!uJpU=p)3_6Mdo=zTw?g-f}x-=f;k;==_I5=G>oq6eg?% zbNj7nHDM35Qf<`j1K;ee1+YiaB5|2%^^_x(+KX&ce@S-+Lnn4JDnXT?Ud>{7i{;AW znZ9*ZX+tfsBXI?63?{4CW=8Ci^6FT>NTq!E0gwApmsQJsjz2q+1rM79l|aMNtR{Cl z`DvFYKYm9nvF~^@@0>tVGeJ_6o@twa=>;dEQ$|BY`D_?(9CHY7klbQYSQ|b&)Mb{N zQQbG6V7j|*+Jq&wteA5ydl=rxyRZ>_-cPWuX3gFeXM*Nq*y>Rbf|yU}%U+*;rbI=vuDq0z2zKu_1Ma009zpH%-y|E9z; zYhmQv{pCFi_aSfREfyydX+eE3n|TexJzp0hzfou#bRpDk1(p);`SRF| zU9)x1N`|GV}M1_f^lYPNt6WIyl_1IhI(&VJ>ai6 z5&h`e3w#wp&VDJ+2(tRTOhbK@Cd9;;n=1^JpK&}}eN{PFo8b(vxZEii`t3|cc)hdb z(8lNdQhCDc3s?hAitzqDLomtnZUzTzJ!xMKuqvQo^<peQD3M>&bkLAe^bhZ!oP+p>Tvntr*xh!6Qk zIy@ZCGp6@c&rW>tPRgxB5dF&YBcDr0;WHzGAHoZNM+EK{MSomMC5QoA;pKV!sgfnG zqFZ=S>6;SM@N>WJ=J*~OYCqET;fiR7qFVD;lgm68IjXSWTQnbB1lre1B>94JetWW@ zLeSq6GEaW(negrrMNp|zSZw7RC6bQd;5fdI5T>C-Tb=%^0?Xul2^sL$Os2(2SCisc zdhg(AMkS^wqN}2@@DzHN%!Iq)eXxTQM_w-E%3!uN* z27n1&90atYpGTVwSIhyqrW&O$L=j%Ijh#8*yJ&Y6(+3}ui6DpPTq^CV?jz5RTf=Y7EsBKxPj9&=SEbhjJUC=$fh`zSkdvdV>*6nIS~US{e<;O`-4?!^4%9LFI&D=q+5LsuTdmzU>@jY9rI!gD5UfmvD*I4Bm)b8; zAwl$Y!KNamHgMyGKd0O7bzk$cQNX+U+1zyf;zdp}y3+F!GI{=*b9d=fIf23%gVGwo zVl9n=7y0%GDeYwGc^$HTzrcLx*RbOI;Q?kf{OX-!U9c`V=i7#`OPOX^Xjq_^L^{}yNj=zHQv9>m(I9}0EY;(4HwcXwvQ}A z3djbvoxbF8X5Fs8e-HrD69cOS(w{!Sm5$gQXC(+LYHGxtu z(a#%dp~2F`BVjL(T}NZA(&ds-Ob^`k$T zjeR*Q_Y&rMRFmF!9I*7(7`>6mnZaxQ!*7}tF6NWo@x=GNq4dcWw0%vr&Z0n&WfaJd_ zP5B6I{2k7JujA3o8(2X$G^)`)Eo|C_#+AOj8)49@SS-={$>s25%)+?P@axt03NC3s z07ykEN8JP-ez`U;|2m8wr5!1V=8*lwt?il<;WO{BUCrW5zfK#X+D_TXWJ8bPkf?|Y zBj!t&C?`JYP*o`EU4ucVGTw_2gnt>HB)|@Av}(tC9}IjVU!h)&pcq5sC^nV4jrr(A z^|`arFs3qZX6}O4jGdaG{2&g(lR;Gi*g)y@ zA4?$C7^;nq4!WTLDUAxsNrFC_4#i*;a^^8@K=nb+`whLXswohfW7m0KX|I}5;9>SfCAJ0m)AR0XkFCsb z4tUprC>P}$p$#9TRYWdC4y0KeJ!&5{-HB%$=!b4YPBdJ$?U{(2<|mTx-XTf;Y`_Yk zQSNGsXF*;d;2#b7B3As!<45RiJoDw*s>;dyGDrC_*e>ADDU@|?-C1ciY|iPg?9h#A z9_IxnY+0(!Fhsk!#4CTdsV!{dh7FP5M|Kta25j(8@$1)FA1Ij~L}&7;^aIMhxIrN2 zdZ|9FfllQ;jNp8{YSHGgYMGnQHciNTHX_x)Z8B=ntvZsK?x9(0N@WL`y`{3B5~f|_ zY*o}a+#(W{pKaYc+pl^*8<*e$#f=SAvpooQCpYt0%M?KIRp`bqE1nwV6> z0}m#_ZTX58_-r=(A%pI5tqSrA_MYWnxKe zjsf#q)GSKg>0Nl(bcmQ1nX!cdu^|h?-ERzsEbpfBsw+i)<6gl5v5=8(!l&0QOpsx}ep-x+sMy zu@_hO(!ANfLoEQWUL91lXx_IH3=5}Az7oLlLE3z>J<2(FxUo*X26B@T8m|Dxw-IirFkLe(Sylwdt0_!8}nxR?^eRmoBTEhdsLhBaZ z@9mSGz=%xEEG@{6G>I*zlT4ZC8If}e#IPWZLMwMW|4y!P&XAQo3h<2`HU51+lRwlv zTqnNVjZu4MUqbF=PS2Jw{&I4Tau=g@ps;U|@w{r>DsXZkLCnfVPmuG;)|c)8cF@+b zYxQNP`ktr3fr}b#Ep?~uGi?3g-5T6x1gYJ!`N4NkQ{4HT=;{lw?fR6?`0fFh3)DS` z)TD`6XVz+ovu$R~XXzn|*JAo~q(RI5(m$U@PF~pXb27*RwVtM3u06+B*l$L)<&{^P zSahAey%p-X!IAlP^Djqa{?O+5usw|`S?33%-T|*=j^6eG7;K=7fB)O$kuLiwk0rlw z6z1b&{52inKnCBU6)VypPQS3tf7p1|B_|He_rY&HI~{PYe!%qeM7d~flv(FshXC@D*1-v$_w!5Hhf%tZxAo-K_Mr}j41(+tGASrLr(L`bFrf6q$r_0I zOpOh}y2|%M1D+A+#QD2_@4Q(hHFq?MpPPK%A9C2c=UGf+Ro*DHYNIit6^iT{dvbSx z5okpU{_%XIEg2{C&hfxG8k@9EX8z_8ux63AL6}~7ah(# z0-g7X`NCz3cHBIA4({G3@qY7?l~#h2G5YTjiakq53Pk*fkT)I$^1!*FIZ^v*y!@MG zqf6@ceu0QXhPy%+9QjiKFakA^Q~8QT{e=;cxx4JcryB`VfBudu%HAV=WPD9_8#0P= z`%UlL9s(vA)y9i(q!cf6m-!RBm)L$jUdi<$PRE_=cG&l{x$;Su8jaRk?^2qwy$Sy1 zJ9i*^+CzjRx~7QD`Y!J_N_x{6?d(HSw4eie-ZR*}dIOkK?%_(eQjCg3--ykbs3H&p z+e%AVmiCHFQ$<6?-ogvUn8YKBJ%6&?Sbv{9p4AV0qaR3s!8-NzqoTzn=uiyIMr*J=$Z5vVDpw!~!_7N^{AwSMT5y`^L?S`z}C zdH`dp_&X*JNoI$f-`xvJlY-4-O-@3%^@CMi*Mwi*r#!F>+DZ_Px;y{L=irr%s#K`K zp0C_At-%)%lB{04P+9N-ian}&kgKlapHcB=NxK_$V|>cCZzvT!e;kO8XXZ~(85G*8 z>9ksipBD!0N!`QaF_5Jcacz_Y@_i*hxnL=@1csZkrm4pR{nkbo4QAb%H?+(O!;fD) zPdM<0rbF9nvtBgefgvgT$6H;;H~b$81~8t**O{>5J(;i6?SNU0 zG-R_({SF_nc+lVzlGDX*+^dKzC`WvWOMdblJ*vxp>OFW#e~kUME${f9wDz`|*RAyx zToW#}gs)iA76aEFH&V>(-O6Tl9zc?%*(MZ<;(FH-;@+v1 z%m%;{7^!GH-|oG)b7^|(QH;^@vswR?g(|&ca9r$X7RY% z3!MFWi|wHuPW%xJ&5`a%F>eRK)NpGO5tPsn-({YWKcHx&T^`xj0(ri?fPUjfBf&Y7 zoNBxAkkL|MQF ziXDY5kf2dXFO?gYd7+@bI0qgd{YWprC#SVj>W(2FRXyF?`!KF3Zlmx{u4>l8rAb%g zg~5P`lx(&ykSH(e%v(ub%!%sH)4YG2szWwJ*3So_Ng8JG(Vd6_O%#Q0p&oSY6iO*WWgL!GulkTPqw=aH&N}!&O#Kzuaf7_8{-EEarTae|Z|$akWSC1^E{9E(1q-Kc8_z!X4jr$VSp$>VtYQoL!k`j3!{ zon;1@8SLZT^z{0%L+34vCSI{h2mtZ8eY2+BDmxug-eIp@>Qdu6q4UWIib{Bi$d1$p z%16zACa0|HJI}JyR9A`AhkMKvIec8iKhx{qY*a3-v%i8(z&ibCeHL7r7C}2DXyGJ= zd3kzG7E$0ED|gzoq*k-Pp&T1$#LyS)V}nBap&j9^KoS^&nopVkJUtE1yynphdHBI4 z1LTjZB=HVh>4=ajK#dRSd34(QV7oMvVcR5R(eh2?G{B#z@BE~zkp7Q8cs36MD|lr8>?3GlzCn=)gs{%Oh|6$s_kM$*Mn!pMkplx6y zcko)dZ*&{E9i0+Ar>upO%fwD}!D}kjA#lZ9?B}jjtgXh#U>*lf1Mru|h( zL2xG(>?KA!jOM@Xvbu6XqG*8Km0*YPT(8h4P%rr%aQ`g5qS3TZk1`vcMGck7BETe9 zMxY*=Dy>RJ@|^$g&V1u9dZz*9hS>8AaN0Y zRfO_$(g%2NEQJN}Ck2(f5(ZoHcT8)*G@z8kyAJ(mn6%0{HKt;h4O2d{_G|aiH%!rZ zuZrKjR_g#Nk_8s?m-ov?$VM$!0`Rdoz;jl!47*uH@^4n{XU+mA2Jd`b6RtX$w4kFm z_C_0u9_*nB)Ko^#-xKlAV;Kne#>h+CtORY@JAQ=l_n>^E=#UJ-TFq&vn5?I@eUPeBctC%2EyKzqxL^&w(NNL(!@ z_GF*}S5;0e76OXR%4g>I9NjF7et8MhFDCX-D7F_%2y1he5MZ1}>H!{bC~I@cZc_Ud ztpRyc*|NmTP}6(1+&1ID2Dna;yUe!&U(e{*{uE+jP~`7y-lC(0)Z*=jT&zTFnKGH>5|KpC|DI@RW8{n^M|RBkGfX!}goqZ}Mn zk0U;`{m~n5Ayb?}N&IyPo|2HR5rPx~X8Y@=?4O%SCg-FHUCu~--`;x|jO{S}w+6VGOj!#juu=yRk$Cnz) zs>73YWqCco;-APS({BJHVsrh$_{Qh-e#!q@BF@JLV z8jYGFk#Jn{vb|k#`SvRc3P=9TU%yCWi&u&2WfRd<&v0Us-pPtxN3?%6_X?rv^DN5= zr5@q8z57gAz#6gInryYvt!RID_Ezo%>Z+_ylHV^xLC`O74$RRNUFt9GFP#zAs7$av zI4F47HpRS5N9d{`n4jg*t2%ZMq#v;!h*L&YNz2jYD{ADbxDFl(DWQ7GCKu9-B69u1ja z+`(*UI5?v~FvBP#!$eoi6r26*at*&Bka>U&tlryv#YcOQwp?S`H@RI1IK>{>QAvrd zi$x-kmBh0ehIckRi9@nfL-#&B?4lAQ@3ZCh?z^aJRQDPYF2)Cq3ETB5zqsvRalKj` zF-rX@{!Ol|qKIRG@u$!MqRBU|)*(c7K{a1>L3IHYIgJ8FQ{ixpmT@&fH9^nm@5#-4 z1iTcvJr!4P%QO$Tk;onUK3&I@xmqo{Y0U@`OuI>I*n+G8Ypp$mk#GpEep9jr4Ze6m3DTNZ`CAmQCKx*=(Q)uLU|) z*=gOH5QOVGn^1ZG7qF55XZH=24YrTWrKE0}{fI&S-1%+?-~xv-ew@*sky|u{DbGei zT$4q}{mFMU+(+TjM?YU&xJ2~#bSXb;ErsI%M44Ua#|z%&+f&{-18x$)T1NYVtMt^+ zkbUH$jeX~OZiY)|hHMkGV!$Gosjd3u*YX&z&R_K`1hzMW2w*lwB4z%6?LB7wf#G!I z?w7vaA@<_mHeUGIja9>lA3A&Wfx=e{es&pBTI7t*%hsb6#}admq{->r8umhS#T=1{ zpw-4Q`J#=>+o8`q3?B$Du|A;L;oNA?Qovnem;%<>&r43>s=+78*T^?S$-c7(+#=-G z`JeWA*e&Ivjw7RH$HTC{Spal@Mt2Y4L4iPGGGIe=Yd(nEEg8vB;el zv!e6JWW4T&!gkH=Su=#)x@OT$=Qn;VYpuZwZ}cm30M zd<4RK#a5Gjk^z@F;L2d^eRnwW(H3y_FvQq1t8VkbG4gIZ5$#S|RjP2#Eb297A(}+* z$lo!FH%5OFlCo9{dCQ@Uc|!f^Jl6Jt-25Gx>1nIX`KKS9v+u}U$;ArE-%);&K#}OH z8?`8FD1+fS1}8XOXBFHZte$Z3U%%aXcf0@g73zr`0MQtrwo|UAfWogg;CXb;*6PrA z8rMnQQvk#E*(bC}h)yIFTkHIf<=38D77co(l$Y|UGL8Cx#OWZ;<_Ucg(vIY>r3Tb- zk;vGE80OGzvMSf7LMUDG)zA#;si({jlLNzDm#zcase=z+w|aT|K`}_HPxug0-;>`! z2JuVsXOBjH23e2dHE;D*IZd5yjQwaKK7I>e%#VQ#E^Z)$wmDr&O^GTY%*N0DmB$NvTmxlakb4tM7|p?sqYW zp@reFE}Lr7**xnqtDUNW4n(|St(B>YpL2YBovI&HaK)7Lkb+^KLyqOuStPGD%*~KW1s^HFC4!+_@CW>>OFImzAyjU%q{=7#I`HOi<~xN zCB@2q9eOR(nUnuYn%nU|Ysi0+>Z+aoXhS`2(T#%-n8w{j9KwGsxwn~Jdo@K~9$;fM zyosf7w#F{?m{(BUd5!Ovh4WJgmDu2PT6Q`q)`~XxEIm|!YvaV?QFD4m~{<5$F zSM+?0tWqQ#M{Y_a4i$Gg>2q|ePj(qC7ut3|84dN6kl66CD(9EFJ93v)6cCbxqvei*U1ccZ6DR|f}x!cJ}E^f(5R+d9tjPR=I zP4`j?td9(bq_XcHnda6gmg5NLoQ(^X%E?t%9koMSxPI|}%UFnsErao6^dH5U3?evd8uF4dr z_K)E4536O1#>#kcVi{Bo48Mk+h=d_h!>mUau!wTcLG5c^ypNCX*I=W>{6A*!E*7k$ z1r?K$ZkZ6!TG0{}L1lhrK1Hi}k1)YPg{8B5evRu@)Ekhv7vpw~o!)S7U+#Ur?@{-f zmDwGS+a|FMLQW&K?~N~@%&`1_C`G;PHu8^fS7jCv0aE6yBZ5egQ1bX1Bp#3Ix@*

{J9%?B)i_Do;by}|KtK2+yb z6v418X&CNnnn*SDQL_Z%tcair5jimGp z4^pd!I;2Ixd$@A9mL19Y?sauij$VGAuwOg0A&*$gFkP4&-&|>v!G`iDflbL}{lBi= z!;H2z?-UC;?ZDIxh&Z~-<(4R=_0Rcz?Z z2N+{2F$;ctTWf1$qw$@S#)yXE`%~*8=pX&4Z~&Zt8Z)1_1GqWb^K%QpC&%F29q;QN zzbe2#f#`zp>9Yrps^oeGS7qY4z@hVGE!8lcjslWEun!3r=a&>Dyks-WH2o<&7|VHS zof*HLzv(yo(eqy=_UA_GMUhAsphz&Kp9PK@O}U!3Oy<5;c7x}gDl_UJDE*-R^~+Vv z$u$0?RDFr4Z^lAH;w&AS^6I!@mW=EKhE+ZMV<#fIsKZ+E{C@y0TrT2!Ff+i`Qls&a zNeQ2-CAh6U&k;!Uq1#CJ9YwG2+(-FY$y(LNx_rpnq5r-@yI(A`SUrDfj-1JY{l3rt z$8-oXMbybdaamowB#!Qyi5q|6-Gea zWR4e?p7lKs{15%kd1;H9VKLMqiJvDt3)y-C+83yND?julrb3~b<5z^ZZp0iv!{(`4k<8sZ88zq?fnx3!m z>ntg{S6QGv&wABU`Q$sMANm@t6YVnb%2h?hVet0hYku&OyJt~?LkZ32Pbolh`0;dt z5kk$C8rj_LDb}d;2h>FQ-3p6$R{Ie)_z1KRAJlZv7lgd#uTAr2l!u+wGFxMNiOPZ6 z?*<;&t#S`_=DgDGDVaPi?S4-*)&JgpV`*E)Vox;P&_JSSm;qO%*}8nA`#qX2l?BZR zwHV~$9-2`;qFJ&3j&01|>|zn-J*n(`o0-1hd}l87RXgTrj8IW8VPv2h?zk0ei}xZT zw}1pq02h9EGv{|P0P1HO{j=%yK;*fgD`;M^n{(!3r90$(>fknmo>N!WmEn^|NX5?0 z)0Db4!Mwq*=(DYEMD!&A7h7a>$LzOxn-^{`o|6S?Ic@xI$UGoiwM3!L$hHSN-8T31 z8?<_)ln-;Q!~;hApPC|AA+^?Nhm{)*E-*4}ecJmW!lu_J29LMVMm1lxWEB;8Eh^@@ zFF3*hs!A@vGYkCQU|B2ON=)CpW9Rh!&|9vCuk_qyXhHD1TKU&*jzG_H*x#04D)Up* z)w`O@X)*U81BB#nHVc%pEDcOnP&ZzlJIF^hBpXo2uy;$j1P4T>0=H>shJnhYF&Ew> zux7L9i4o@UiSgW}ar4K9$;?K&`%jWU&815RNa?rJYloiz#YYm9qNnWYr|hm?<$vt(Al^XVA~cHsjHB#q{4qb)7t2@je!bR5C(Z_- z>6juEIao%bghzesW;F%UxtmH}!Anion8__;YQ%>FSzl0Ty1eJr;U|kGyORbv4 zZ`8}ap@^UpHRm>@m9FaIt`+_9gD^1oAqHgrQr~DK&~0#r;vDl1oB&d`M2Hq()VBIQ zzagGJ{>OP&rc>Yj_5#(0$x~t&v(??G)5kIEf$gm#4SGipR&97kJEIW~CIE1h2xdk%=rMx>DZHjxh^-B>13ah1m4oEY&E+VlkZPGd@q-RM=l62ax?M{oW#1m6k>x!vKm!*zfzD*`{Eb zuS>CgJo#XeY(%aM?{cnLzAY)tbTQaPMs?7N32zzZ%Mzhoniq4!7J2rXadWCS&n2UO z-lK~{AF|x979MUAKWtuE0sc!DY)%VnVe5F}evVbNDd|3b1le||;3P=s=FBW>^A2{k z%ox+xmei8U;+e6?%;18>`j8k4|9;QCLgRw>G6M5fxvu9mny&|l4BCf=>W7oT9XXE3gI~Ey_5@wWsvLHS$unhBm@8}#aR2B@PQ?>rr>wsu}f2^VX5PSI^xKv>5eNu>HOT& z)U}G^YndvwRGMEsnjQ>~;9AWZwy|l~ib9o+

  • (;u8&E`DInT#^~kgf2$TF?8z<~ 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%0Dh)!Ws*EVj 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

  • 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

    ?zLRB z#2!!Pon7_G!O|0XWsXDt4y$3OPP&rO{Kij4Z#cg?8M2!QYzS|G0428$CDq?u>XZQ? z3fbx8ndkuv-L>!KeN~z8W-yd+5ZFFO@x7TXOvrx)N&U-jl#Oh8^gKM|V6=foji!2+ zXM*Dmm8VzKhvPCjS({Zw=-);=%^gbD2ta9og4;wzid_>?P~2lh4`N&|GNnc);L4Ci zv?O`js$@n02X5<7IkrqAyZ4I)GIftJBJP~bQqOWJ@l8bXK@b~(1o`1_6- zNHTVpw7PCbLO()+8XyT+X|VQ*(%(ijv&;orSob_)h4anZ0n?Z7T1)=U zOlY$BH6UvwedJ`@`i0Kus0&1QDV1IAkPAkyKgp-tzsq12m9R&<5}G;-{7y!pbBohh zm2u@a%WkUjtrC?nr_zA)*!+n1A2h9oX+^jxy~U$mfMkx(GgQbkee`oNWe?W(LOL25 zCSk{SbTsy)SUkERJE{IX5L}D^lc1F4jnz(%yq~{y4cKM%1*{hbaoc(w2}_rMjfdvWQsa7{qqIh9Bu<1 zjhJ1p_cQ3V>0gYKODzf%i(k1A#l=ObX>7%XXvM{JCM+o@TSfR4hW2GXnP|oIDbnga z-87W6Og^V5Kvn)BMdSG~zJ7(!Kn^=W$4244>B3|ZEALDM2)3;ZpR>XNg>c(QG>E`q zBb)vOXN=j>M_G1@a$HWlw!-}v%C)%OZWMwWmzafjMC}z|N&TS>OP>k(lZD{6==}9ob-x7IBZ(IxO@Ss5 z0EX;H-&HI*Aa%vpYKYug2z`569JQnzG`0xUg!S-{br;8WpTFN|L+p@ChZ9;ldQVmU z_R*$Ha)EGQ(crbEW!=qP0Ty|~{0Hmvnyj;)6(4|7Emja^KD0A?f)crNb|!u6=9}@k z^{RsqgkdaUc*A&dQgxR z0z1rcB>0Q;XjEw*Wp~&<4R!81-GNs%o*VWt4woQ+;y5PrYiLYs=Jrf#LpJiqmdDwb zFf^FV9%to?BrR~-9>3s#1Iu0xjL)e7l#|C*t5YjYG$%11;x{Xi9Sz}#te$M*-%MhR zE)7dbwm0a}`~acJGl@*d_J5Uy4g{bClpo}Gg@(tuU}ikuY~FY5TLa<&!FmyylRnpv z?GdsMZW(Lu&c!csQD8J*fl)X(Hf)XKnZrY?%?=EreQm4-JR?>k7hYwFk{Bm%D+1TX zeZ<#66W9nz&*k67V)=5FWmHOAExJQe{|-?#Mj3VZ!3cvx(=Q!8SOhL_vyT9;?xlCZ zPqA;4e+tM^PE_}(iCow4F3SiZzH=<)R>8j5w zHYg|CID2)<1#%AZ1bhX{6)cp|ycH&yWd-#8+eaV=sH1nKpMy4ml{PR@9(@|4S0lhS z2n}+>39=8zd{j?YZJ{*y@DO7G9Rp}8nIsV;; z(v>hrk`Wvv@%G01>YFNp_pivT9Xy=K+2{Smkzov@G~Tr` z&c>^F{O=S$v_&tQ@`NIKdRN}h$SC!WG|NlV4s2vbXU%;V*Oy^)nEJeaEOBV+z;SLo;h2^Ytx#+{s$an9CZ{PC0R77lh zbry^}h*#eKoS+y>jzH!)cZzNul`|yG{QSf6(T=9lFDF~hZRueQy-(`kD_|Sd8OXgL zd|!78=yi1c!cBLYyZb*KlexKRYAQr|B&pJvhelc}<`#vnDu^1>tp!fBU7z5a5*2Me z=nUvL!H*^SyH5CYfKZSqKe|{fI`s!$x&|&b;CSEud4yqQ#X2o(TL{Lvj8M_7a?<5c zklM-C!tD(5VC;vPqHe;}!S4VRdBRGL`~_>$SMb)8+ef5NfC0h{1wQ5+sJhS-!`M!cq(47q_yK_|%qshr+YCp>9- zJ!$<#5_Crggm2pw+K_Yddr-3oOiD7d+en-gq|xukhNZiSAp*!=HAUco6K$Q##8xr{ zLy3|?bQ}iB3&A|U`TMG^!4LIcZ)HcXz1#qQrvdl|Aii#Qytu8!W2e0e?k=oK=gJnW z17C})j);qtSfmlL|@{w=Fp9*JYn?oyPtO9Y0YSer}^rPE5BAs1>L03k#j5sD98 z!bGwZ!2E&$#^MSIt;7f{71yG9&v!n`^hY7gW*E7FxF{AY+9^i!HTz9t**BD4Q!F9U zq6IJp#{UW!X6MOf5C7EMCy1mT7v%9d?EWHPrhc|R#t2Og8t|GFkTwUcgkE_&jCjE< zyCU>Y0XvgGp6d!LjiVmmv9;?Sh?8&{s9D2;1mnoBn!Iq*Om8IbeFr7Hy1J-0Sn;bG zjKBY$`h3cPlo$B7?1lR|s3})_Dxk%C)VgZ9dss$)9!OM0>v%)lpUhu<{ut*;eI0cA z2is!MvqaG`#(Syji63iD#`P)|DR%5yZnX7!>f1HBM4+R&lL@x_j;YJiVRx-O4Z%Is zH0+<6QR&D-wk`xj*ZUXzorV?o?qNFMF0unD?&*C`5Q3a7^$&Kby1UoV5$79uZ^!F~G{VVX(p$@!Y4z z;-maiT6?|2-pOm!{(o&nOAAz7L@1a*@3^w;u2K67d3+B)>D-%>v+re_q3i z7?qKN9(KKQ2kiHcB!j^PC4!{v`=R@o4;@BPb3yMEr&KZNv+<;3cNXWf-l%VNn1f6M zXh>Wz;iQM5wJT#&(-!qoI#O3T=W8i#z{?iV{dw5ms^HDLkFhxZ>xk4ARQg9PNdX8y ziD7pnNP8h;RphDc9X)l=Z7_PXh@a|v01cQjP!gk3E6-rJjKT_|>7#BwzboCAPLo(N zDd`oTy~+jmS4}e>ol((LlJ{7bs-^|%81C9vN=UQWbRroR3Hbn!hWOh8kIE#ff?SWm zo5;!#Z01^kagCT}rb=cmKDTil?^IwQmJw2OWMnm)OhW?Q-#}$`&9MerDq)M)E(6=WT$MhUp*YZD zFfScY1;q3)EWf&i((!vwxciR|0}2J|{VlsUqL- zhQXmoQv}HI>)Oq+^zkeg_Zg_jjSFxjxIKw2Mw^s4+Tg6rA4u+>BAIp*aV~)>#G-Jp6eNkZOCjyavQlRWXA)z zq!6KW>b19H8M$#P%-mcmCNMV>AdM}#E36WCIN8Ce1NB_Me6xH@VgSwYi!GqdjV1%; zw*f;bv#`Y>h0*Zq1;`tUU(CJK9CWak6)j;&(O|hFIv~tFV`n_l0RoOs1QcefK^Uki z!l@$6FiKCiSvPEg3{RHug3ocxGz!HQS+p>G2oww$GBnxqgXJ}3P3iI9dl#HyW)^W8 z$SIPABg;|dGyID2qEb}d8XU)nhk8n+A+c7}YlM(?qmkWLe$$!Q^~Az!3N1AkNzX=7 zfAi@8zE>u=;+( zo|Y4S+9g#Y)Y~D5<2sB-iKnJ)0%cE77KB2c{5uCg6RiR|Z)1_a1MM1xP6YCu8Q#8p z3`1u@pshso8$JHq-e#eWzmKIX@>LYa3%b_gXjKm5EAxd`DvLJK6W{@*p2|QK`3Qy# zpYi|`Acjl{30GGRn+3H3$4^F`44jW%w!it}*ZcWs5T9D!r}ZCnMd`z^L@jD%WMnP| zmrfkDZw3`Z0T)_9zrI=H!$L8iKfLo)vn_OGl=@8fT{=~rtRY9kV8M16bHN#Mu(>U~ zRdE=8a0FMU_U6{GKC_-vVS`zs(-=~bH>%ZY0A@FWzN5Ww{gsrtn##Ya`s1eZj&kvd zaoF+r6D<17^=63X-Kn-})+x5QiXca1deQ9mXoMkgzuzGMWa0lAcr1Gu6t?Jt(ApK$ z0tFMZ9hd7-w$dH{!=)B96hh_vb$H5VFi%-R8t$)SZr@-h#Hmwn=!QJ5jM-}Mmn{tK z_6QhIhaZx@8@3snXkSRgktryD<;)bF5FEb5XgV+oN&i%;Gj^y)$+9Uq@M{un41|hj zKvaJgZcB2kUmX{-42d+G6ZfuG6Zv0y&;k(>6?4`R7=ZBZr5fcuwj-wRFrJy@74*C}QW2JVWg`AjK>H(9PI&;-P|ehb?(myz+32pAU8f$CR0(m!SG z7;oY&(hw&RHz~j8qC{){ZTWg4&!k#a3Y)FrhTB`1EZeKFIqDeJSJ0nlwcAKbqm!mb z?9TFxOc(>Fu}HH|0&RRMEd*O9E?+sADxZE#+DrYq;G*%5n>1>q{l4K&hbW^K>0Hv% zXwewwc`I&db=@9KV&$K98nfUi*bv=a`u;ZnyM~8>FSIW z`?F^UNBd+Y|5A7_4J(2Gx{a*1>`6`RE6?R4%(vZ-QV7CtU<&zhR(x2&_7gW5(^K{p zXNGHItvHn1!2ZAQ?QfFH_{IVf2#pB}*67Y9Z!bN#r$0<7puVy6MyOdkI~1Ldx#_QX zJN)3D|EVBx8DA|qKuup;Ys{}ac9y&Mvubp8Xv8}--fHH}&oPrjiDx7EFEMTN-;$A| zt{Ig!ABxa_q@elOQA;AVxb&`p{`4)h-Jh1N%K(E-0HA@z!XV#Is4a~LG?98!03*5#$8 zdoH6-5$$#764hF7RP4B#Ilmy`<{S8FoP zPhQNo&3}L9yoAY5V?U0IrHlE2y#0dp_-5WX<{;!U=)F4Bo02m0*NXev#X%!krcf|U z)GsF4?Ccg<4nlJJ$e^IfVbV4TxhPFWX$c7lJo|mrF1Ag z%DyoWiLl)qJzMkh=|Dq~xhnwjc5`A_C9PIqC!E0Uk1u=C|BRXo6^Osi51k;Wbt8g} zR3AoW{?xm_ZGhr1m(3gD?V~aZ0f=xA$tIrdKgS_z1ZuUm2B432HT>zF$%_TAB;X>R zoeAqMwr#?F@_yjrVeNhYhxH1&kGWpzcdKpO6N$cBdQs+j6lfYv;>sma-)$c>EnH`e zsd(ujej7$e3=oEJBLKJ&u_cL@HhH%mgov;o2s$hRqb5At@hJ^(q&QHL$;DE+{^=i~V1fv6`k+A-Xu)Gib6pS>5uR7Xpj zAuJT&;H z2ah0NkH=iR=zK~-dJJe?UnY@QpKy4EDHpT=-ZD6HkC!fq=8pR2g($j_s|kPF`t@i;MKnyeu$!F(mb~B=t$# zhVQLI!dfwQ8YP-&#HoEg!UTaDoDksyqf)*Bi2uy?HQVeRi@bLS1HU4}OMYAaKLA-k zroRLu#YM(17$`z%;23T9>pW|QqN!4j`{vQRxw7keEB+m;)pT%K9HTQ?t;*$eqW@w| zo(?F|MqW8phKWH3`?2|HKwi1o764Z?-tCCy_r~A=QH>Z3q^;XYzKn-#9Z!Lxh}!ik zNhF2p`{G?h0G9IUoot!}gdyjDUcH|&?3)iNf6_Cdi|?PwrA&Z+FRyS<7klK#*QO`sEA+daat_9=4Y zFbmizqPQSuE?eRAR28`~iCQw*Ef2sBYlH|MEZxo4{l`K*(=(U{<3}~MN|K|tgZzKY zu-s*;PrCocKoEkN_H}~pfY!}Y0+azAF+vCdZS2`O-YZ@Owlfv(rc9+6;%zsLGcopy1HT2m0lVcrNO-s)u&8mkA!Xqlz^N<3P zFX;EX(a)hz<*GlLV&*Hjs3Xqz%|GB;6~cryltaZz(?FCUT+nV^`(GuF?LHJAnZl|Wd2o-{HQiJ8>9-eV+Z!E zQ~yXCy`J7ylnm?tGUTV~wiCOTy?Zd~-IQ3~dG52Qz$n6Ix4X{wf!YYrT7Ye9wmSW5 zdB%k~lm_ZpQ&RSq27n|$o0wk3j&bKl)*K%JWM}~hLIT9^Y5{u1KK8=!y;Hf9b2gT! zZQfP2kg4zdyqGPJvI*h0hLGLzqY06n}0dn}+tY*FC0Y6RF)pr|CmXD5lT7V z%<9EDKnVs2XlmqyVQ>Xjd=KVL&#sTUIPlLdF(-V=m_ReHF(4rU8%{HB)|4LA%!i)0 zZ-^gF1)5{PFIQm~g2|K&veJyjQ8#Y@-r4I*{SBHQlzDt5doecDr-^SYGyI12I}i$I=(tJ0-& zn5nGxkOL@4LC>F6Ydw3cZrR^cbHe+9B9Y?cO)1r@L{dloqNI{SKU@%I;MhxR^@I=r zl!b?O%XY2;Ly7@ce>uq=mtL14**|#ooBz4=$Z%kAY8;ZQ$o6Vi7jxH{?7J_@=6hh9 zt7b0KG}K%hi3r8DxOYE6pYKmXV0f~RUT(VR`*pSE#Lm>d{KJ(fa-z|{^wqsmc! z4UF1*Muhh}$061{Z=E1^=l?I?xX}#B-~dH{3>}ioTF?EtH4xOc65lu!wHbG1j&~A5 zvWF%*j2t8+f{i7B_T>Zk?Ocez2jB1%>ZPYIw|st~1?}6@N7V-~dyhmAO0V4Se3Vzv)Yx*+yC(DOMB+(-@3=8qsa z^nMFqC^B*Gdz#NCiyDAi=_9-+zGVMhzkW}YBAJY@^L(zpy?w-dqgFfeBCrxiKCQS5bDCVheLoksE+{d58+dJSVRQ(-A2(qW zu%^d?A_otX&Dz6Y`@I=%e2g$j!7VOzap7(aSUIlERN~sY@~qF{WS!B6ccHRwngl}d z$8h9`h$QM4As|aNCp(%-P-hh`20xG;UUf41#0P1DIwsj#Xdzy zJyzuOugc=URNWGb5Rwd-AU%jkTdg=D7&@!v6Cq6RAP-i`McgRcZ$8?0)D2FV+&WfR zi9o9F%c^T981bI3hJMt=J?-dS)?`}QuB~DqEx||To2c))pY#w(>+;_$wF(QjOy$I1hIXrbVFP*L0g@kPK&!H)xj!DUg( zI_3V5OJ(&Vwtbn~WO^rjPzq^sGT1W!AqC8@G87K|VWx4{HIcK;hCm1a5o<>tpNij2 z=c4%sc5iPTd+uM?e*Kt&5&Q?_ix4{xR;Y`Zewo{#2to;o)xAZz)wqL7SY|eVEodPZ zMilOt1OS+q9^d)-sucYgDt}aPj={sYt?Ibed7Ow;(}vd+3;P@Oq7i`yeP)a~_un^s z6!Tf`?+5FM@7S^6k`0C@Qpa>T;J{4*BrYIp`yoNodP0{r+lKfY1Be{(ruhLR97mTB zes%)&%fx?#g6)HIq|$UeS(YqFLqSZ@Qi&&u4b8gxxvT>jko-3V%D0!y4;<$Q52BJI z0aBjr|GhSvM(x|M7$gUj(5H~0)7cyxLt zF#o89h+ulZ1XDg!JJ^%ka23PlNDXoG1Oy=lS*u?);jdwjiP3rEKz}s<3~Ohw+MD#9 zHm>r*@0bX69l>{hhPO$C}=t^DoiyP9=~pXf5{n*Zm{7O$lk_0 z(^qOH-`+^3Iz%9R{;^Zu$j&8$`H~nBfKW0*^3a^?I{-7aP6Ku4nYmP}$b>J#W2zNk zf+8ME?Dv|Hf{tbLP#IZrDv|01=~A8-Tv|LT@%3 zkh2GWN96kkdPF>yT!l2gPgWRN0NRI~5f4HDA{9$j{;ia6Z)Y82UkK&*4J-{q`{=B4 zDE&NecYO@yE-TnXPi^wv7W1Cxb?i zr!)3dUjVmbs(sQrOk@Ii%nP;>;kpEny|sCbV=L73AOt^oHhCw%H%iwb`U}URb?$td zyGlc0r9yvY_ETu*bbQu)V9Ws9fmM1~9ef?c`^$_>8CUtD)kKNn-xQ*;c9w5>59+|a z-D2OqK$!u|4o-&$#$ig_>Gzy)hfQB8Mf&MnF`0l-cn0YCS4OmR>QgxRFE3OkU?k?S zfwpRT?QJtEJwOS&`{Dd9RR{~)l_>m{)}F2kcYnfqysPpe+w0b`Ydla~bx{ST<70#G z2XT{y(`$p!aqNES{#(8(W4Z_l8;o4+AyEz_9WeSjWq~9d`gD}S+Qp?6Ey2&9T56gt z7DK}GMv7ta$HAo0%VXs7>kD0Pgl*5n4~m<*J#?cKOl9gI7sNos2l>NmrRfCFb@LQ8 zi{WVBX(xD=)#r?uH10u2-9O9%A_*7x&B}8y8?dwn)o?H$>#N5{4d4z7lkyYcNi1H{ zt!;EgFQf(fH2zf`2)P3urzKJ^ukzqyfinVI@+sf@;7lYSws~D<*~9DW2M<$~`Gd*M z*V?#GO1)UU4fiG;`=d7-L&}W>S3R%EY%~Es8$(Zqz;!1tUN)SkgR^(vDTa*qDBcGW zU9VB)pVwW(uIJ==!UtSDO)M54yGMiZvAi?5#OTxnD0l+vSlQc)Ad(ez>!#E(&290g z$?i&n$_s4Lp=RcGG$CuQ>icie|NG{N<#xna9x9rRUjBKy%C(ArY0J4BY1~c5r#(p| zr>P+fAW2&tgHF>CNs7URv@6pJ}?0Hr>On# zoG*P_C~ovPh-IeT=8|`>}R9f zzf9lT(s?7}=*CxL%Y2~r4iQLBzcPK8VCxt5V(K>hl=nxi#q$5iv{Z4`JlTP*Y?WWi zR$9}t6&=qx&c+EKxZm0!1T)(H#Xa*uBp(TkAS8v8y|&ue=X>MxLa{hr`V+6W8Nv$$ z*RB{Q>R&z0cdO#1K}U~8qLUNsc4X6_wmU$ZLXKg(eI*Z+>W~QbzDLGw)b{BGd3(KU zcvtVUR|EtDX@%Zn*U;HBa@Z4+A60J6mr5IN@LxR267*5iGyqPl$$)m=jW&5Zc|SZ~ zmb&m{de68!OU6zJp5Jr=_N3?-DTSJUPPoFLe$Ob=ITY!G7!L4`01VsLHVVIYEJ-^6ezOt&bq6>xm@qIGdKp)qMJ2zhq!M%FL__x0^8rQJzVXt825d} zSSZc)?ycxg9DYgwN8zV*COBa|$?8|U?Ux%B1H1@`CVD=Jqhi4i)MvpyTA1Z;C?aoM ze(JavV9CeAZ&w5a0Ux`N|4haN2o~OO51paDuJR3CU=C({M$v4j<+qVY%FA{h?bNhv zH%oQq`%iB)t9%o~i-_RV8LDo*U!VaZ^>+BoLTR$R!MKMMHL=Z6uDf?uH*Y1obNr38 ztpq)E42OfB;1Tg%-2+=5w_@xJb|$7QXI7si9KV)yBBtKJx~`P-{zs30k4$pk=gsUT z;q#OK3aY(nF121|NT-JWBu4{tL`O&1doHC8@Nqao5QLxa#MB|tNNzx8fz6wZxB?|# z(Zg|xJyBK^+6pKF2S3J)PtwG0+eN!lm1$E|S zL2JXyyjOW((t_7&sF~eA`9lEPDz@FZ0-4C4UafJxfD@04m;h3#ldq!@2?>M4jMqfp zfk&}s0}E{HoM-*(bpVlo`~yZ8`uRLVidA2u!&hs*PrywQDYW@C-&) z{42iKJ2}*f)d#H}%1`1lHwG0LEOoi~G*(C5Rt6#uWC;}5c^OJ=_%{;U87O#6_g0`8 zt`Kxq?_YpBfdA9F^ZOgStADH@z5Jw2NUVq=Nd+(AV%b~-WGpjWkJB6^BX3mehG2XB z)WYAx4MjquSrSHl!STGm>MS;q`x?L?QLVYX&%l3gbuiPpfhgxh)X%)U_mK!N54^yt zVuK19_$r3@ejU4D_pZ^;Uh_pu{QPVnX6h7L8d$2#~Kj=H90 zxE`}CA$Xj&2!{5-)fPyO4-f>xFfO_5Lq(ko_&=8@p>VIECei5c4HMIrsxgd%g zTTmMPSpY2;9s&D$0j`2uNp?Z0;@)y&Iaj(4K?oDi?&3^jC7_Gdl>@>L^nbmuR`lG} z`0!jQ$}Y|Y@&p_KW!@7*sA$8;)hV>zdH-xwdfzC^v9Np81b%auw#kFu#69c5f|TU9 z1-cf4E5M?H)P?e&`RT%1gX9rkd}q2c85K_HIMrq0ObyuxR(#T4BA=MA!%w#B`aszh zSY=QEqo96r1(SKtTx(8)^Cbi%&%rrw3a0|RDxg0q5{OJ!Yx_rq0CvErih zWi&Q@P0ADvfJ&pCX}o^hb1`JrrynPuiu~9_-YS3*6H}l5&0ix}tL|LP#e5{+Ymbb; z?3Gm~_V3`)ObCOXdMU%x5tZ`;mHyiP+mc;>uf0>$zEWg+KkysT{`)_fox7V<9H zr>9@@a{&+f>uwk>O{-d7CX78UPTEkDwg%;>A_IaGXdn;IA_#_sVE_>}T_(m}+bjLY zUz1{s)WBL9DT7-Tp!Ha^n_o*H0$tsukwQN{Sdc%{$ylpR5&_of}_xlRmC`>*|Xc`x0JPQvn5PI4+ zdYGj=^hi%REx4X*eHjxUW2#*{9LZmXt*qJ6i@hX8D$D=;@3Qc-0KxNzay0l;fe`I3 zKtLJ&q2-zT#7x$}v1;wWh)IL0kYTbpOpOf(JCDz#)5kJ?r~&^q*u_F<{}mlC^_`Jn zt&ki(#D(mIE2IA2oCokJ{gWVg&+&KuOp`D-;42$;fLrm&Z>=4eX4QbwnJp^0RW3=3Togb?2@z~R^D=Iu$6msS}7@XmR=X*dWxxP_0xY&>c%b_ zGCYKT@5B~gcK+j_aGVW}0Ao!yCN?&b1}J}$!Uqj8p8=-9j3qiuO^LR>r|4tf$xdpV zM1ez1HYPUM2!u-^gbaoZYu7QcjFwzQ7AC~oSP%w7?z}n|!T6w(2IafxWeLvI56@oT zj|GaIV-2Jlgm~&J{?`=$9jI+SR3p4hZ?b#5vfv_~d_e%pNDUk&t0}|nQQkjwXsBSt z;h91M_f5b~lr9FPG$;H>)A4Z#<bf{K;zKZwO%MU*2YQP@NSV?79fkt6c-)C0X4+p~s6jXK zp}-5EV%md@gI@bfjuyjdm-SxkznosIKg-V;_vgvkd0=Q{yXWxpSvZaez!iRgv;z+( z-T3IrG);EEJyM1EB|Cwd34W(MTJW3NICu1LWB9+^tJTf=#LS|Lx~Cr!A|Res?%igp zb!{~~uf`k!DsXnNa^+60>w^Xl4f_|LIC&>~K(d8~t-a0G>MUC_*PS1`bRQ6w?&=LQ z3^2lBhd)u~d=C-je?R#C?Y73-d;Oo`eH(3!w)Qd+=HeK#dXGR0UtWdd%f_T!^ z-F_7_+X|s|-ZDd?%a57?I$Un$mTAdI9uuJc)2s8G+>cr2`=2+Nn9R)1^ZuOQqwZXP zZs{{K8JU^ZK7D@wl(zxu$G~*-@vSqD?5DbgP20|XkzafKpG4A3VSxx?fDmzHKMmMncJ?C?T?RK9fASXb2=h*OP z6cO*?E;(GYFO@Z3L;<=dx?&*DFJk={{~*Bt^P7Xm>9GKRFNaCa^mM7SOH_WabiK+@ zH#AHIslZ9?dw^HL7P6uN3Q*2@qW+Cp=ni7M3|;RSy!{!{vRjj@sK}hzcfQ7z0Pm>a zhOniucH<^)3h8)EusJa;KM$LnLxbC8p8eN%(F0}Y`a-xo)xS&Y>Z|2LOvC)-TdORe zSR3Gof@>cA@NyLD^}y4AQr;=mee-iVpt?=<-)9^7E-!p&7D)Q!Ukh$Lu;0&(c_ zAv653_))N2HRsG*aEPU$9jJ zA;1S^ASYaHAP;IMxY6lU{Em!_&qNA@A21q8Xyxl5$R2>Yg#N+5YunhL@XoBfj2nK1 z@p7g=MF}&FN2>7}T!p_=&RRMx0i$%j0}u{Ll9N)Z=1ny?JBLg;;D~}xf8PZb_WLKV za^(l`3aWiJGhFj?fAzGp-UH)$Z3TQy~EWZ?37~F3 z`b;>zs_e9q&;aOw<*i<*Jq-X9(O7R~clA747RW2DiMc{ z(~c~msgTMBN={TR$^j7Cf58K1W%1Pg^YyY`RoObFoA5|s-!Rv9Xz2hw;ML{7R47ru z4s%ine5aUTB3X7)mD#vV-?7{-@QPHpyK~(|gLbWrPKYi>;;Y_%uJiTpO)qu8ynEw8 zU%pufd~Q#q>VPg-;ER*?{Uuxh2p4Cm8RV|ufTJ~*@}Qr{zp~mM^IcmW5CGs^^~=D4 zn8X5RjcE59@h?URA#OthI1CR{ni$$wUt#qLFi6+XQWdTy6eS$7A?xD#nsDsg9c7Op zOw$B~C@uL}3d{Sw?)V1#q5LzYMq(~bO+gm&6Qggew?hTbIIw{qJ|Hz(_xLo zqsjy4x8sma0KZ#e2ZPN}1pfyjAM*vvE*11X@KxdOX!yX6(6YE}|3or1Dpvp&)^jm9 zc0E``@m9fRdfp#g{#vKQMQhdFArJu(?m7EMMhatN=jSXlSaxzJ@~{fPj0lHr#M#P)j)$cM5zcrUkVyz& z7zj6jBm<2{o5TdOI}B!-v|snZ`@2-RF)1X3^aWJCY5*b%^8N9EE3vWkPnuXOxN`iRK90~t z5cf}YGahZLR*A1=RixTgW6l?s3zr&-NyH062^S7$8Ogkt0*2t?elj`(KbP+#ulJ9h*|( zSSEqfJ@;dE@Q#3ifTo-+LlC1I6RB;!@f#Qb&9B4edeQCQzy<-N0uX?O0(h(5^XWdw z8CHsr&$9ZDlhaQkic-_$0+H}BKMs62e=IGHbZO=THTLrYx$J!p0Diz_Jw6D=&=yBr zd`e?nrAX4-IsiGNQk34lik`A;&$T<~WHe+A}=4NE3lk3^F(%0|TRYYqt*Eq7-Gy)2zPhpD_-e*(@I4}n{r|DTBI;?)7 ztCVEfH~1S;xZhn5Eg=4#gY5Kn0d=qW`fq-TyHuzHtu@mwU|ZEP=s#XILG_^qrO&k} zAm13?&lCK!Wf#`t^N#s|nPtl2rZ@pe<3JW+R<~XS<;61(d;>TZ6=^T_4nkCo&jzuo zC=3clu6uz<-LM_tES_=O`j)_8fm8x++z&dM-+c3VQgo|4*MfSrQ-;d4RKBxD>5b00 zJNxgDQ6u?`sMTYOzp&i}6Jnn5n>3`T@L21Le^+b>UvrrtxOF-vw#~#?{$Y zXN#3be2um5k920tVUBOJ;T>`Ohu{`K%s?SlM54D{Hy$%c8-R|7+dcti51GgS`s}JA z$~9sb28UFqfOmG~ZBIPb{=`5!2L?>l(yVLM|NG5uYg7wEp8Ae@&CUS zh$CknO^%$?$ssVu`tK4!b*bMOK3-(wAoc+8W6Ew9jZVees1}D{Iy-)o45sx@qfOMh zKW@*jE))Xgev5JJn^cb}`*i83fMdOfNFFD4nnz2t?e(M)J+nS;_T>#W>JlGg#Amv# z0>U7OA{5u}p=PZC(MG_!q!`>I9&UCT;Bfz42f=Hw`< zv~l|3+_%kP;n=0QfmGhv+E;{NVgwHCFe|J7jds&uMs;P{0Q290mtg&ex}a}TIy6(R3$|!GgfEeEtxTl-@{gJ}Wvs@&2_afSGKKw)+EKxz@*>Us_=Rhcn(0j`l=#G# zS1~5x?BGwtl4dOa<{Hja>&Leqe7Y^jm$&a$v*oHTT0k~?AsaouqlFvQWVBY_aBX zfW=q{g%aePG}|--t~Vj9wjJj#w*wWBn!83vbD|}{KpDFv*KLco!Kjb#vT+vz!&e=@ z3Apc-ZMwueafc}?u&?DH0+~N^>OkZreLk4+j)-420d-^93Qtjx3;O~4?Obo$x@Py2 z|GK>Gj|zoW*MdVl8c0S2c8bT<_g%g}KJF85XpnT!;~;wWJrC0(Fvfrg7=J)SU)0&9 zIU%skPRX=U)N1fQug<$r3R7>LX+~fHHsGVB^$S~GA0beQ^7>jP8aH|OC5KjR+iRFb zMRByY<$wFw-Cp&AWZMAGvsiA$&+n!5fQV?|wf@e7Xjz;=o>xwH%HDqJ1lS9kBXdJ( z%0M=gKr?~hI_=3J^igu%fN747&e}Y+VCMYGXIdM23qUDAx8N*m&vHN^1)v|`J6VwZ zG-GQeYCmh7B!~&Mx7!FlHS-NSrkuO8HVUGumfTacBCsAU4{;(uoZ4*Z@CPId@GFs( zD0MuZaY~(b-7=QP?k?>7+1lbHOHr>=TrdeE%V)HDbd}_Vdai7G;b8Jl0?RttPI{ea zSHK+@{(+#-Y8X7Aua+GUYY#{@iL5n-u+}yS*@W0D1!y%5V{mF3gJ9M+hM}lz8V!SB z&}b_KsAx9^3>Ym24PytW9#nRLN^P4A%QG8+ybVJJp`d6rfqT!R{U3ARXZ1TS2a94B zN;kt{m5t?TL;^*c{j`(|l>5Q9lkp_1Hrn`pmmdg-J%H3R#@HuBJN}qY01bA z;4HE807?7NnSnS|kqVuMOYL+MxjY~ly0vV!wD{+VHfF#0z1jzVMd(T^Z!!2NTCBfs zN+-O_?B9-L-bH37IX<6MNIIG%ftRcXTSr65QX|aPzC(zgj zuo(uRz*R$14UK1qG&}&*8-oT9IiaOY3@|XlVTLZ4^W1+RaKE>}`a6l^&ezCx@AC1U zU;ZoSl0JpC>b0B~q5)219d+>NfQcK^)ab6;k6bS_971hWCwie_Bes}a2P^L>w<;W4 zuSc<#tY?A=w)zQ}s{Lh)Ia6wKd;5LyvOjoO&_UD`0v50aL6A(al0bMTK>tu@5&HkF zgF?O0C!VjLCxq=8(5n4--OWPNV`8?1ALeSDmEtrmL4lOb)+}!}w~)d{O-6YFEw13C zV^%_2%GK!h1F(9@(R;O3u3*4$T`gus=}52o%U|@sr+@fcSfquGB! zRisaGyxMv~P=EWWs?G)fn*`~P`g8GG4!BWAV)ooC4&z4`2yyA_3wqz232iUxdz>9-|Q_`u-pX)i$;Z8B<89c{GNq~+8BKf=n) z0=msCa{|=}Tj0Ze5Dmc#VXflr<>X@c1mcAz0+z^&4JPo4KNh}@HS5^ICqhBfRTw2Cs;1HHNyRB!xx^-RNnR#Pf2H$t;m=XeVcjXMD7As(SZg%Bd0 zd|hSwN3d_5%*4U0(7Ttz?Ok56#~F_T>qdu|bR570c;=NLa0dV!M+0mfJ7@_$s}MR5 z@y_gNa}D5b^?Z`+`7cxK63WmHqah(O0R#ZR7!?#L@LIS5;Q-(O!v?#s%;LqoWFP3) zT}Gw9gB0aV!U4VNuaFOgm>T0&i;`Z+lSSsU$Uk6Djwxn?EH6NwSbDdXz&F+9L!W@( zTJ!Pft%oTA5g!5hkN*{6Jy^qlzieP#H<)(tq3Htzo7V%$%nR=XF<~8#sM1ARYd2n9 z*FLe%)pviYaMznR1brnm!DP7xSP&D68pIG2E34b-`u`iCf(VKKv*1N|caGYJiC2DC zQ_L1^hraw~pnvHMV;p21ueb>%Twnn2l*y)+e=NOyIUh?vMYnh= zd)wvglAZs$$lSIT4SmK8^8@uqL3B6xZAgF!m0mB#3j>#_qR59w@3I8Ee0aV9%JKdH z>p|QHxc#0-N4Y^QKH^;CsCyYiB7+AO{ZRtW1q?_=r>i5Rya^$8ZV`VMK?w*h*0i}s zbR51FW;NP9bR2SZs)4xyr~r*9Pd4ublkQvG6N(Jx#h?iY#;}Bhl9td7TjqStG*N(p zPD=*E_qKKoP;RE~h&PuO-sV7h)k5$ZSQt{cfNBHFj02hvNM?CqhtT?UbTH3%{ULh_ zUz5FR*9z73h-;>Y*urdZX#_x(VrL4>J4v)VH~|1{hgJW4*E#Xq)0}O$1inbvruEwn zt-R9IXZWdfeUGs3x-B^G2ixk77i8(UXGGx^F!~Ww@rEl|;{S6~Q)8jd*X{|*m`pqi zpL&>#28}IEb&l5ovIes;TVo{#6)>v4=?o;Qz!PpyebI1YNyw+$AE$(fdAnYIb2lZ3?H z5j%#8a$(|l25lfW+t-WMd7q#1dnYd1>3&zp>nr9w+h8v&Jy5co+JU46$p}vn3Ls(X zRL@~)AkU(xU0?w|lT?9!%fhL`U8k-WG!grqO|5ahuX~w#A#?SH_QN?%zI-dzQ3)-U%ER{xsr?Wfo9*{y!FRCAq~$!5_=MIX{QD&(Adm&|e0-^9)mO`!5);VNpfB@)|8lNC z{e=z`A!rc(bE~gnP%=DBJP36F6E%hfhqxfF$!>!D!MC%1KZt*V_Z9vBD}JOdUnjnI z+1>lsuo*oDH@z&pt{x9hE1Lo&l!-SMr{(YZ$!PP}1;7`v~S73PI?KVQghmb?YTF;+>(1#juxg>~UkI{dtD zz60wx*E(>boA`~Dqp+}b$KE?`En4GX7?TFf9ud@f#cT{wSRxW zguB|1a6!jR50=-~`f$uM2UwF$w#o4ICSAf-U15QdriF0x!9D|j=GSMf-pBJOPt9ln z)&5R_)@B0lYsU60fr@jmL!qnz@9Kbx1)K)Qed|y2SutSl@}X)b(mN)_0|`Mo1u{#* z)_=Cfvm9`uKfjcEWx&x4n0GAp1-io`?{Yjq2QO`XN~oOD^UV z&sF;U)w?|M|I>(6gpz@Fq!!&bI5M0(y^3x8)oJ(c^&RkYCp{;vcsTp2HOGw~g0_-K z;b;k{A@`xsXiB@fRD+5g{=i&;^`AxGos0;~?jrR!vR7ZFu^JorFdiU4p<(9ychSZy zi@;x5LkF+g4W{Rq2to)yZwicQE^VzgT4$11jGc`LdAhMaFRY90UdM0*x6Qct>ZcR2 zrg#TZ3tHyq;rdt!7SwA zU!A_?I1p(I>&k=$aY1t6xDIq&_`!n(g3i_S|12+lYcOOkPd-KI4CVc|*2kxO0>%O( z=mEO|b^9kEzV$y$y3q{YaZ<{xoj z)M~2JNnO$CIo$(|3C5U4s!@ToEDmc@uX~E&Z5R_}`<-3iq%+NIj?|NTzY`;>%)g}@J-T_+ys9lD0*>l{CFvNl|&@E@jTDPf@Z3TTLd=fm`A@Jv?@ z_L}i<$DNR<0{x<4We4xL0@L8Z+8$*0Y7?u=z8_xSlYh)GL9s>4i@P{lOc6wO~E@ z+3EV0ZRjX@54QX_*#82+Drdgj86_W#U-!4Npb-QmbJE^BA$*(cP$Z%qkN`k{ZfyZf zK^wPh;YFoI!t8=#7{>04l@tT8803)|v8huY9o*@laGwDrEVd*t#)E@dK$qYhy#GGA z{l|y*{mk6-y=ST$(ySO5FYNH5b2-vZtr||e-sdXqRn4Fc+5#dae+tpY<$0!K1OiuC zrG~`bAM+XCTUAPl*<6@z_zaHg%1)XKo&+oGc<}#%bRT9cYldda#bm9VW(~u;U!IAU z&t+43?ft%fuot5z9=XLXbMXL10Lz(4^+9YX+0H+0%mKi>3uS4C=pYxh3+TDB^6x-3 zu4p=VsDQ?0bp!XM)C1RZh(Zv6c3vqfp&}Vj(rBZsm?KBKsv0=^Z@=@Q#`9*FcNbJi zfXWhJ7)&7y0Fu?-l{fyyJ>d`4FR70~VS@N4kz_p-x`6o0|89DJ6#HXr=yk&1Z)$8r z5d&NRqUk;T${>lbHrDn@R1qO7uG!f>k5!7&t){ zOg0f4OlF2FeF3B5LH;u?mZ>{*Joqa}#ptPk z?%D96(a-Fs`oV^0d*HG$hCVBBA|h?%`1a2`b6W2-G@)kd>3GSMaaLxn`3JwAZVBfL)o=?!5~d+001Mb)fx;LNjW`qC z=C;G5!1iN;-qSnanrZt?HLLTHG`}CPHK2^}S%{zA5!$jqJw!IoY*0wM#gEjtpr!jo z@iPBVa?N`IBo7{c-X_rlMDj3_NiFSY8O(jXeb%W0AKm~2$^c7>+#pVX3sC$3&JDK<2aUZ{rEj~fZFJF|> z^NhK5pVyydf9;j;elhib590dY$NUe^{J+oZ_=9L>pPAD|(uQ}(U{yrWCL1cMDjBOP zs;e2RY$(eD8^fB#gJFF9q%{ZrYBx+V@Dvc*Ke6Pe$u)_IY6lHW#IT1AOvJU|OiKuG z)XYm&F)e?pVp^$*YGx&`c`+@09K^MA64oXqs+g9hVp{pRiEGTvO9*h)%u8FQC8}u4 zMiWMiv|%)8%SID9=133wO3)lNtk$n|jn}Gr^6SFlU)?zF?kzhv$s3B-?TNnD70lso z)ZKvTNU_w>0hf8RFNwH1-#R&{K(S)^t`aaetm*$lvaThEAOwM>3w;TJBT(hoyd)$Z z>(QdV2^aW{LvYFF>%n2Hzc6mEH%oLVcpF}MWa59kXb=McXx4NKjS6}j44*??7mwT$?4&{V}jRCYr$1SNl(fdJV*p<;G#DAlAhu$*`R`Q=WI##kna8pMH{Lvk{|S&F3U2N+bmmyJ8&&U?|`BDn4s=5fdVt~{vG7+}$IgN}LRJjrxuI~hlt z*Hf1i*SEHGjmGG8sY%G211lMWDN`yKSgd~n59RH;dkx=U704Wc2oBIg&jw`VG!Q-( zClC|J6JTnUt2^(q#<(GW>O~VNkM7{RO$HunXmo1MNC<=>0SWV80ah^*VX1-i3uW@Q z|F-m<{FA&2+s&?%cnFdK{LY0<#k;M}2;ifOR@*zLVz~L)FZ+a1Q8AMptKSJ$Pz;3TRS(H=O`2RJ$Us~ zsLpBjhA)NqCOov!1B|@sUh5pdfxC`}BVvwYCx+U0LAUfl=s!oH0DtZfO#JqV{MUs4vmZ+>34Pj z1;YGgXrKaw$g(Eql^SBZZlT@$uekTe?d@|uKnvk-MY@i@_eXr#O^0sCf+v4A%^ddH(xu3r=9L(5a^hn0kwsn*;!j%X!e0Rn^G5aJ}mIw*ZT+ ziMj``tz+-;83R2A7cP$4Zw;RZjx^p^jPnnO-{Bji!O4^|a2t?hWe5y8n8Wp;3l2&j zu<^1q=YSTG$T+=ta4OFv{m0J>4{mH)Y^V>^L?IbYr)!VEdq?)_LXKi7HEwmR>3HHzqtwX!3Jg5j7NFIE>Xst2(7N@&7qj08p@gTUsv5gy_6GDw{r z#;_b<1M9nV^xPy~^>wM_(6hZVuKfOB2;SttN}SLJ02l#)5q0_UT8>;3zH(m89y5{R zN9Ky&h6>fVA-wuJ6`_mRes3=?#^>C7_=gB}VrV0n)hAyABtRf~0V?C4mnmVUg}`+S zu>^r4j{=bE0`0t<9ajniO`M+$HwA2g_zmwx^N+{k^xI&r2kO8FymHqKj-&Pe-j{nB zrCw#81ja6@?rguO&o^CfMdh9X1(xr%5!gPS^;&@p(U74}OtWj>T0p1((TzQ@^%%X# zs`?9*72mB%`+ajS-71BNFCEZ=Po%M?2uU6bRdH z)zB>wD+Pa-1aLyUwS!r~cGkyt)T%gxVSFBwX$ype6}UhiN0<==wSQ0bZK!%m7`)`n z3+by%P&`{501(*GT{8P0{0&|K9lg$ei4|PKV1fuq6sR750SclQv@2p3j>Lq~3h7Hi z^~xb=>wGK>hj=uU4_{dd$D#+l%!be=JuJ*8POpW_`{-dATPMSH$egVP4u7M4D*G!x z<`2fV8Wq9yK@kuTY7s(#Lu_rauxuL}1PDn8`yY4hdeaj$6;)IfRa6yKR25ZJ6;)IT zB!N{`Ow7#8%*@Qp%*@avl0I|X|5Nfq^*`zXBnb4u%t;{v2yLd*X|&pHBmzTiw%c#; zH0*z`>2=DT)@)CSW0Dzns9?dVD}IA6yOH6*1E6MtrPl2w5j*h81>Vb@%jLPYO?9oL zwJZ6eh7RWm&@?$fkh|3aY2BfP-~^B&f#rDyf&kEj`IHC}NEGI2%-2Yyu7QcRWpxe{ z%lbEVU~26~hB2V;b-w6+?lpT&2eIXADJ!T8H#_{`0gnXq93}yfXfg?bfdGTr4*76@ z{A>Eb$+q;lZi4DnnF}oESPx=JUmF2|bk<}ig6&OmXaa{DC2QmqOTt(C?0Kf#H?x$k z0Ow8{LHUzcGqq!W-|tUf>OAJ7#~j&5uRWOX=d^M%gHg|l+Sc~^RNKK%YCY+=YI`rE z+L2RHwxvnD)DFdxzQ3~YdlPD=+3~nNn}(+nr+_xpe_qgsxGMB&J&yD`pFhCq8{qah z)I{3Et^mwpt4eBMmV*Uv#B%`z3J}x|Zc>k<(zxfK{NU^hWrJon71XiwGLz0AM1U{E zm^C;1L+Z8}fR@M6a{{qOZ@2$TD{krN;sao;xVx6MTmm7xs;w1%s&Hy-yV-KfHHyl# zK-IwtK*zJyvTzH7uIaWTv%U|7*cd}?bcE>#TKf};LwI|p1&iF;v!y?iyBq=!7p|h3 zQZXnDa25bjRswHgOax#b;G9g)Ccq&B*+4MOZuyz!xX-U`_a^a$z`K!mI~j0j&6LPL34*R(L2Zoe=-kaT%Iv;BLJ@m9hF>fRW&xdsA# zt?1$*@bhe#b8FiT)*6qZ<_80#YS@31%kg%fU0 z9a(ph;;*um&&E*l^I@ibo@ThNJS)%kqyDkQSbH6dr4{DCy*piZa~>>1Mhe5M^Ztw3 zQcmT~c;dRRm}mvSM(k6tzh79Me{YOLt)Knd38h{`r$eoa6b+$^Suo0&jg1S_dTp+? z$bX5bw%iUF^M@%E*dAC{IV-FiQ5vpYT`c1d0l;wGr%qt~92XcX741J`z8zoZ@e7Yl z!8igU4WJ@Ogi?|+3IWe`xDWac8@Z|EX0ze&2~TEDs%k%!_mI+&_!kSferQjmb<`!56AY=b@D;NG-Y4@uDags*X%C*OAX$bIzianGB#wh{U|hw0S?^j zC)xjd)rsn?l*h?JSyTnv2Mi8*U}8Wr$8{^e5l#NshZ&y}$s3 z;QVz!zDK27uafw^mj_FYe^KUk+&^S)1sRF|x{gOdc~J5Wt!$aMTMwW!K+jP#u+r1h?!-tyzy z4aq$xnGP7^2h8=q1EhiWi>BQN)HWdhrsMfCmg@}PpMP1WU)k@VBfTDOJHe(c;G4Ch*m;4R^?fRxaHDLqT4v3}0==PW+u?!#R2~j}x;|rroj~O8`g%nx00{_5>g(mWg}g}%6&@so6(3ZUxjblM z+`D@)+1fTcu1;S&Jm~W$X)TaR2!bW0nWsfPg23z~f_}NRN2@3t2+w?$|5y}oRhO6} z=CyKhgb$T#z4S;xkusZxKadW6Ob1g}em62?(igU2Cx*B!|b0#wyQ544s=p@}7wy zc`KLApA62+n=-rg# zJUi$hF;hUU<-8TcK7>01cc%R!qjcXiE3ldT!7=2U2BPIShW-t~!{L%O6nC!G>^>(` zu)MZ6oqVSh z?NF9vG(Y*psWEzRzgi|0N^Ry)9z>9=mfXK@wi@8ccDprEBnn3Di(=co<44V->KqA` z<~@cLvRg(3$@UZ? z!%V;&ckWMK6E$_|1e9JsO4mRZz=Tu@K=wmQNqJbcq6+;kl0niEN4AwU(R95Bqitbry(am9NvQp*^nvkw{R8S zx1YWmD=ia34Ys|_hAtcD2N%_u^?H3SMw>mEO^tYZIncg@^!J!b zqMc8>cGlDfq#J=dt=(`qYl8F6G_^lEmh|ry7-G(6zV8M7{9vv5aY&xtt3`eY?Nr}C zyXm08ij*&xjrvZmw{(X)+Y?FdDBe3;`v(h!RE08vtQr7?G zg{;mOrKNk{e z1Ed3tZ&o7S1$AzZB~3DQ>tox5@h2PZzW9jI+bWoFN(((U z6RoEmifPYH91J%Zo=o1az96i##mI-m&*fFC9`w7d{l31#$Q|wO#YvczV)@I8%-zR__=b z$E*%b${t5yBWw#fUEU~MbeJmGHdAHC%v51I+_3_Qcjk=k8n|tGdjqKQnHvgTMhNjC~6zQ!;Ql|9CjR3(IiJ)e8N*g}h*3I9fF$&w3+%N2L!x^7ry^wn^>1zX;?M;}hB*{>RuF zfQpENCHJwg4MUteygwCP+-on+tj3WarQb;ZU-BV2Sd7V?DlrlzAcLm+!?Y4 zdqH(&4V?&eTqx(i%@h5cNJe-+L9k}vI^X^PqX42a0rOS@pG{L>*`u3b5QthqcxUan zk^;714kJzCPjnX)tzf)^t?D?(n0gQxkH-8=@fafbE-v+ZaeL+}uMn{XAiW59`jLw=yT zQ7&9t0jv+ca}Wiq{ePA~eci288FT^bTi;!_a5UHSq%i%eR`&C|NmTSBSbmbm8Gk&(lxh1^uB#^UC=?Q<~ z310$vle6M(Jr$7%^UHe6dwWZVzS&@P=33t7D{%L7_u%mYT;s0V-fx32$JK9FDn zXaiABAOK5uBG|LnnA=TV{r%2WZQr~7)ms9~c)$PYn`_USTrt7Qsd<5w@oF~oG&-)h zSfc(-lwb6t3;*R#I1Ij-OL&*AJu{Svu3qd5FG)`{V|%hW z@n9a(@EmmjP0UEvQuaX@HL)5&H~lzfQ91Dt06+or<8OQ0_`3E`4*06%6fp%!YoC4EB$$S_<7;-i27G)MNPe z^pR2DAt4i&FcH&W1Y_ooo2RZIU-|d0CrWk}vZB(C_cXaKqR(MP=&E<1_cH0J^l8R%1LnSbHEOmg+R)Z$JW# zc77$R;c->vecsv=&<_$l?p*K!Qi1{4@4|O{pMbXK`c;oRFL=g~Ir_`@FN{8{Eqo?{gV5GZLOfl5EH+1#_GC~r720%xOo8zQjptoEO z7;mjO>~Dq-CIVO*wc~jX2nk9%_1*S5D$7GG$5Z=#fvUk>J|J~G0bLd^SGh%X=OniR zfkK5B)6Xk*i9!$)t}d6sFqds`m;pWtpDW2ye97hkBrcW$7P5dl^i+f|1ouxRj^bOr z+iu5NLru5mNilLj1~wEgU9Q|$ViV6@03s)X+z+1Y^S?iIy<=4{q0Mdpr<~OHGK&}A zkYy>|?pLLC)|{k(deQjgdQ-5upO-s6j$RNP!D!X!!!#Wby@vO5`kuw`^NMzl*Iknk z3m10=t4(AzU4{*0((o1K(tbEc@FM+HG8)eJUl2E2pXtAK+buU;J@#Y`qw{XpznPK) ze&+9`Wz&eV#9s&kI1WlTZ{&^yzS#^3ss6V|8$X*trihlm*QxST!mio*fe6RPDgh(e zo7X11Th?z^BWUqxe^U3WhoceHp){aXshX@>N&?w@?4%`s2QU#EB;d1%BOY<^7iB^Q zSU?X)0&Cd)yTfZAf5BX<`%nGH)5g2XxI4_lNWe^|m~kX6J^_&=FC^y8p$(t2)9ckq z1MVZEkBSYx@;%Y6un@m%tu#@z zjFKp~B}&2U0PZR`^D^oI)p1;34S*lTHc%Z5lGlRyuo!#?f(9FRZ| z^aAO(y?e4b!~iZaVbr+9{h=1^|IUrB_wn@xGfEeVpi^p>@XY9UcH6*Huj^cuhydJ+WcuRvH*#p-c>>hJ~d~4Gk(92GNG0hK8+prWG2E5v(*Y!wfLM(*tP} zpb7v|3%zS%kJc8~jtkw@GP<-D7lHgfaWqnt^u7Juux}t_R!Osq6E*W9pSch9z}qUYvM1Dhz2ZE z2DN8DfgRjILUv?h_3@aKa9vUMmMshi8&#&Zy;YWm=PAwdlQlN<3jjOL%+ZYg&;8C$ zk8Plp0#MtS>ol=1e{^(^%*|W$hd4>FT>|Ado`OioWO4zp?S~U%Z09-`90V*;V^%6tgokGcz+KN$I|U)Apb0Id8T2A5+kLQ~GH< zzdOsE^auz_ZE9QAX&@$l*r0b+!1!1{V{G3pGa0`}4T)e^*CP9?tbk#TRkFCjQU*PV z{3P5qeLO9RB!em%5N$1;y72J%0ne*}@Vm@uy6~+Jo$tj=O4u7{mRuz7{jAgko#qAj z1~~uir#I5sHqK+bQ(l!SlXwFF1tI#$l$CKn+1Kq>(BjysmqJOOA{$m6;CLO}HW$9{ zVS<)Q#Wjk>u?CPEV0FQPpaOlLnG2We$|Sx+0OBc(4edR<>7K- z!zN73$g?VDGYZT=m|=hs)$dU+cR7sOc*|-4GkKo?EMA*QVWzzbXu!h)4Fwb-^st^S zHAEq8)AlcJnLaemTipr`h7AH#9#Av@1_6Lz6as)c_(P#j@aC6_zQ@UHNW11j|o7@%wR`vCM8b1NG_Q<>DyUDzZzAvJ)Ug;mx2 z*8Pz{FQjVH{BA#p`+P;bC|tk1hLt1*5usxQh6H5gtenL^Fsu_6k?ukAq|h!sKJOOW z%a{hQ!6DD+c5vUVy>vJM#R>I4G6+aQUxou*zzi`)VVHN!G|1B_DMMBzW@ehS)Bqql z-;BkSJJ)YmO2y*WY+Q`XGZnxtdQF?t{G|$<@~CCB!923k`7i}~jBRd&&O((nsh_il zf{beFSJ;W`0lWlMi1|-+_ph14V}>ex1piEgMgZ^3@6+nR%q3nQiXY#L_5(!_6O|e{ zU_g5Sq4_;#Hz73u)Z(VFqWRBf=e}t4uP`M(5IKMu#~$4Qsa^-?uxH5uObHnI%n(0U zH7`~4%76k9El&h8;Y6LpW?eW~5YUEa!(@un2D_x&K?C!}#_pSYJ(>=G_&u-~IIMQl z>vib7MRY?*4grnGMCN5Jwu|CEgML3bGcY1^vlr?=t-(2J8iY!atA%T8zG-{l+VFKB z947+4^<#k$0##f6{?lrGXK8!-dqc08LY3{m)Xo}hJ@8$iG(fNd!lZ-cY_NmV(9NlS zK&zA;mfH@`@7U@9wc4()Y!CqMWLoq~ziTCUE!`roDPLRrK4;DC@trz^7{vEzxC!eqFce~c-=)UN2l)EqI|D6(EER>u#5cvI#Fx(wf&s;n0XqKrq&(r z-WgCrcS1mJl0rq+;bL*qO<~+bhSQBpgk7jWxA@l-0G9d*!WO*x%j>ks)C7@5oBv&a z5!`)$@NtAB5wZ?<>eQMkJt4+vDd5ko2hns@gE0Hw&{MTi zn%m`mcVKpO;%ai!fBNlM=D^e)SxZ_W2`ZNApJtNB(Hv4q8tF=34Xqy^H}76{J;t+8 zi*iXJUS6>ikn%QlfwTD9&O*U&quASK0f7QV{*=fdIsA~^Q*f{G)uA!&eOJxYsXKmG z%G0L)A4mJQcXx9WHGj$Ov;;3t^pJl)i-dp$+4qs?K>`2w&VU7gAJRZurx$YgYu-*QVtflH0YVE2g?Eh+Hc%WCm( zo75vC03sg#O)OLv!A`6=8+gV@ERU8On%CDH)FZRe4>UX`KsHYvNV94%!wfLP3{ScShrWFItHw%*K6a{5 zK@q5FU3LY7Ym-toQz%A6TcK}kYW(fv;anJb?)GE=OysB-N>p)>XPl>t$GSkMWkO^i z>D2SuzEU4UJ6YTg31Ygf7$5>!V2&$%+?68Q^>>bT3V=lGL;#eDXJA4~L=Y@RH6Rr( znO(2b>-c@2o~YUiuq1^h{mY9&`5>iY>!ATrLgz>AXTW3Y@9vawc*W4L%3xiqu`FWY zMgP*1UXHc#2WZyO%0r04#%jmjVakYKB1p|o00^oyRVp$umd%?sYT4giwG6Zk#5-Zk zi3@i+1M~9^Pb?L@9`6f2;oOPA1~H8hR>;oI)YR1CA|R5%G9F(pDxQ(&hpK{qRssfd zCx_M$NHEQ%DRsceQsHe9

    A}{I-<+hM)b{0TI0N%2EZWsO;#9>*$|Bu;(C*tnB_C zt}dqJ7nzryKvuzjsWtq}6D3{ekK1g|#XPUvqJR=F-G<#95=hA;Av^7U{8(YrC0MLh zW>uHo4@cM_1iKWxuP5LA>bknRygWQdgLduPw{PIyAxBj#`F#ni==bcg!M+dzSPzv3 zpdMHh80>=|GAHkUAu{sURA>js?Q@0)n#Bh1sKbdgwgjp{_KRr&DRC8Be^8t~wg44$ zi@L?$^~PUG4S(0t;Dd!W2!bR8uS4a2cLYP456?lGT$b{B?wby@8{EczZipRzy_IEg z5d`Omh$Z)`8<5eyJwiPqk9DM;J{on;wJUu!f z$TeEfNt!)~+tlF)hlI8qX(E1Rw+=oG-V( zqocE|oa`WXr))HFj+wJ4#>WLP2v-ig!X;{DE`rYDnHFbbje>8qc6N4lEiElAEiJKh zl>$($6aoiDfNBXExEn+^m?0wXfv*p!Un;y`B>#aOiJ#RNf1qvIiEEX+FwoeC&AbXjgvpmwKuZq?e_R9I3X086NVEE;Ua1Ts22`ANZS+Tdv4V5bB?Y}{#> zNX#RfX3d*6ZJdLe2?(FRvVa`%wA#GP8fGwi$@|w5w+!nh!bJMvT(JGO6lSdx?age_ z+&w}7LJ$H6zzmQNp&nbO>)qL<)td{v#U!~rTn>bs7ZS@gCqmNmJdB`5Mn*Pl*|TQR zE!($l-MePZn>K9|zN2F?O>OUa{>M^I{Y}CHZ~~Iy+W2_nIg*`eotYq)yKd=oTB8XN zK#~%hy z!%*d$s>yYpZ{i{$yo>qx@R^VhM-(JMyeais${sanUV+WyG8xc-j<59xM|%ON+FEq* z5CJRRe!`g;N_#zzr@Xj5)Sb{kOM%9@X2b(IpIxB(+ya6gP5JAKRT8QLSQ(gX7iUq8 z_6I`Eo(c_D?o=7|4U#~<)Ea<3fPoc>qw}QeV`Q>tH}{N>2S6;JstTdO$o(IXfKZ_j zM8tyRyL{sg^fbQ?*mLh7{n7sF=bAN>{iTU_53p>h;IqDYY2=tb2KW*}!h~~x!{6Y5@Tt9x#RN zuNP|bgrh&8zH@=CzRhcls1MLA=puh8LxAsGGq2TF|Sc=@4z zxyx!P6aw5o5d;Ea0}Ef8$sogLuj5xS z+y8O6)&N?h-jz!KCQBsG*)y(8oox;Lk0c~|qcF=1u*Mj$$S}xZfIg6>#6k9i;ubNk>Q2R$UvT~D*f2<7daQ5X=iaXN){_g~&US~11dyw; z+N@X3e^`x^27u%p&;1uL=t0*lmMgW^u7&(CK+kFSHv55#@uSHgfnl@KxAyP*w#n_@ z+WY=Q{>tfq5rPU;q7JgRcYaiZTO!+MSdF}u)qe4TdDmR+aR4C$mDL{@1mu?h9VGMk zU~9^7As<2nG}0lF53l_ew%D$)04ehcCIl0GJ!>-~2v(dre@~_9wt~Xfu*pw{Pj%j< z!dpUlarJm+&jc8EGLP1Isp8HN0aw&NBiJ15svUA3%BBLCm6*!;|C9DQ-+JNzwboeT z*izqs~s5vhqrhi@B@{;7>^BdueX0fUG{TYo`OXd7JSnhx>FW0A=_z0ShpzHlZ5G zi~TO&m!BcZu5MO<0E#ETAE9PunlGvCSHDu5Eu8(M5FQ()HV*2r4s+|758a~MFY^RM z5!1}QC8U}2w?Ky9rXOX=wqfggrbt7KzpyX#5714$YG`+)4!f)`~Led6<**) zx2a*K_aD@BkXxUF58lD;=l!gUmm=B%NXpr=9RVXvOLy7rKTW|ZC3eWoEyk6oP~!^i za`FEERARb;4`<^#4-YXGkiOvdHlNGPo8CLMlz$9v1(;o_2SAvDcDc`RrL_x|d8+Ct zkgN&D!MIM4A}2BDmK()iH#J?i!piaD!@}~&xX6|xoV4Bm*aiipOYT3|D8uorYkG9R zX8h6k96&+=>p_y0pNxmX(C{jOiUW_u{fp_{pm!P&ch$O_Y$ht$h?yTtydv^v|o*di19yj!R#N-Kiit-kUdTRxj0%EtnBS(C3+SF7gR(|dsQ z$pK)bCk*}OzHZ8^Ya$anecg<6!YN2eG<08_Tyhv45LPxUG(!3F-)nd-b7dNVYRwmL zUFBOqK!&CDT`tm@CpX6HOI{U&wR`b&ghT|~)j};uIJy1;bCESV_#Z%d-bBc0s4M(9 zl~p~Yr|nEcFfk^}guRoF+qUl}zrTsf5Zd1Mjn?SE!eb&T7Ky5Us3+oFCOfPz-wt;` z9l}HvXb?R?O!e~%uYw=VLac1jFt>Qnt&P4l=NSmvagbzM-M?R4t(9nUv=5C_441C>w`|2Eg9YSupj?k1DXap&^> z{k(>m;V})tt7qKBXB}GXhuN966~he`+@GWfoO7vqE|-GU?g<$d;jXuKQIqjx?T?vC zHu@jOCxgNSB}auA^Lf(G{gk96kRm)n5)txQnVFfHnMkHDJNUgPs`Q;_wsoJm-aaRX zq{i+0b3jldm@o;{c`G10l4zN?FO*ReeUAc;f*5pd6EK?2pZc;pC4PFO+` zdkP2otxbs4^t@qM4u>1{4R&HnpTqew0lmgFHPwh9Ozrp_uItDm7$9UGCWWxRYk6Cc zRih?E${_Gkv}VqkYkxVfMkgA5Nq{iu6}`-pKu0}+an>!`_gd53jo3U%J4EgZ`&HZt z9FuSsixv&@6Of4xm_o_$dc57pWwuknhR1mR&U|pTGHq>c9|#!0E}rr77Lx$4H825x zZLw~ytmXlXNGL(lacE19Nd)s?B(1U)PYsox?1Gx=3i|Kaj5{!UoF(<*R~+v{lv!h^tBkdjmf-_k`X&=(Zje0I~?R0 zP!Oh!0Ft-~6(8CbuQFqV0^;7S!J@AM4Q2|j=cB-Cf_Pc_U;Y7P1{5Zw_ihCS`@sFa zK$m#=L;&5%KZU}KIPjm|_pIIay{ESc@;aeq2`z4U5k8@$vfP&X z*YIVA%eI4WRyK3EABJ;7m-^C%!)^?=3*nD(>V!=&YIrZr;rR$V)Jp9OP<=b<`<`B7 z84tIt22Zy5J6X_HYqPKePeWHxME3>h;oa;qvvkiFSPe#B&VAa!bL<(E7!w{!6qa;$ zO4XPGW%=|Ao5Qm38?T*xV0TwnBr5oKbrK!5Hf&eYx`|_l)_yb?vOW1QbyKldB4{`uc^ z4^~Zlm;G9Kg|vC7J175jFfp5N^xg{L1OHS)HQpf*ts>_+;A#mX$<#00`RC4>8maJM zwBa=4&%=d@W)?TwLhe&F*jrdpxD`K0aXq`At@;%qB3g~!_P8;q!6@r>_xH&(GNGLe zzyfo=6I6T_seOaA>~1EN{4D~1F+nVcnQ{73@EZ7rZ?s~BLUL0n_Ob@<7So*w)!dEW zgT7*-*-6=CWxKz3R=|@`g9~5I(bs4ASl`HMRK3E&yo>=Aw-Wy|3uR6oZ{{1Q3*uqg2Mk^o16E%M<;l#{*7)^kKXOwps{ z`sEEgvplD(;2uEwYI3|EsK~0YGOu{C_(&*U5FVP>E`W^ygcrHjQ|UOehO$3pU?uLD zDVMo;JCYI2N2YM_1qR2X;5#?Kc>~u5)eK>?jg$fovoraoa;gXj1*@Kg6TCW{^spNZ zDw9gj_B-x@2*sT%6mpc55}g;=``ddpP&TO;95UQUgDe-g#3!h94^8fmNw5ZQza-HP zAV|fLHc}e^U9f zcDQ=nahA%CGao_4lrIe*#%nf42Wz%j^78rFK4do&Rk`1H_ML_o@uqAp(?M|u6`LqR zPh&vI#J=PF00Je~UWkGj8-=RMya0=j8Wo2?|46PivsiLugXQ7A^Z9Mo4k$pcSAOd> zpa90SvH}g!Kgx$7bgLgI|NV@SJoaP3#>3D;3*Un_crbv zg>|*BuL`@TB!0N9&zYT4mUs6ToB@TY-`{)J{*bC{z#?9<>hdW=2n{`1o4%GqL=-B` zKqR!`$+^`zc)<1mB#*lR^9*bV5QGFTxVb4K^Gj9FvFqZ2?*4T62x^J*eC?k6{rl9UM$LJfvn(h`kwR?LGg@>2~e`xMXBhp^KFO27k4RR0OB%-R=& zE1vgJqayeOVszLK-tN7VWMTAd!Ep#y6WjXXCV?c)7AaFEjDB!Y58GTsauU0(O4~iZ zhR0Zgk#P9YF^LFMU1fXg(YtH;9W9Vd0U;!Qm_kC9cw`U~iyPj?qGot5nERVb$VzEt zVPTZ$;kZG1=)1)?@9F=0-j|NWi=nRBw_6ktg4oS%=nL>Y?)i~5tcFd}ypD1X$P8IV zubFSH_E6`EQfq97R&Muj0SG`vRfy^8hcc8FUf;aUL`4h-!;-`Ox@>;uY(acHIdcsq z`_{1oU>Il&9*^`hOWs>-AqM`q?~Av1c>4dO_52$Ld?{i!@BA$esb+{fw z6mMaJRVoeZ=OHxJrqU_p!Tbhv{)U4Lv*FVMk9rTDd2g8ce0Y$) zgQNo?NV@s9CUriJc>r@Q_MeIp-J6 zd)!49qD0tqGB*6UNyjo{e(Dhkv=NzORYT#|A#WSgTp&4lUH@w#TMl!+Uh@N&nLqHg zuX11lO*?^f2%n?)B!V&rvU^1Bz2XIflb|utKVslaETzLwjMK1OpYb;*u3sDW9Nv#C z8NA?-`kYUcb@|yh=`ZBEye}gK}AKHz9J{vGpKW1 zvd?_8_*e_zWBXyRh6vuLORNn{?V3d(*{r+ngDmdNJEV!i>Q-^UWtNYwIY$id^3&s~w#L!ml zlKap|v-dBNau{GlASV(BQ^USY`fQ8Me(Ft6pKq;POtmoGQJ~;0+N}DlZcmH;*YCNA zz*@cmh>?LzxB~9z#U8_$T6+yX`vDZvp}UCC0vqME_H7YpqP5lKPxNZjr8(al{N&y) zll>$lwkFB^20WjG()Gb{_P2&^i}^W!S-j(@uBx5C{UG@>brA@MFhur+I<1eU8sL@Osj@ZK-%R;{IYet2eh z$f4T)YAKL=IsN7U4h)gfBYkh6CNrTWUje>4rULEd*4D~naBy!~Q0ZnAA`SuKXo~Or zXBs>*eyg^PO4*f%Tm|LXobS!X`~+HVQAx(;enjU7(|!Zb?+sI?0SG`xV2_Dv0``-a z)@_rkg!vwMZ3#d5A+2lYf}{9(mm|Ru5L3Fc zdD(6xjzxQ%s1mL=KL_R$9c5jCW7-Fw`)Yjs1!pJ~>ySey5k08K-rXzk9Ov>LhUu&H z*1+q7Z?0GD6yG2evI)0fBG1M%jQkzUSZ}nl8twNt^wEI4wAmVMZOl!rT}UfEZ#B+$ zbuUKR2rR5BH_hR{NFXB6O~yz7fQnZho2P%HU3x?=`GkxE@7N~zn5+$i?+gqKFvAQC z7jDu7lbgshcj)zaLD>EShQFp9pdg_{Adm0Pt2lnI009r6h=MKybr3s)%kx+QavlQb zL>bRMTf;q*2smk1VB!7uT_DkguDJLOGj^mL-mRkFli@5FDg{6C*0j!^WY) zdVdc#;$MCA?1$JiUN78&lDdY96f!xlA~s0_t-Ie(;d?;6LV(|}^LdwD4it|h+>e)1h^^7V|+od|9%)IAsMYeq~+u3 z@881p47Ts@+12BqDFZ4QWnH*_5jnjER-Ge_4`Ipvv?`ha=-vQlVv42UJOB_A^HZhU zo`u)1s@@{ncKR_T(utW)^eZf61ZULSqr+;z6589O1vlAB4M~AO4wdt`sb~I#SR0>v zhX-36zuEHMX=cqcJZ{P-_Z|kM$4rFgy0FsiDHV0SmdIDWexod7Qzd^Z!5`LRJHzKG z+afEF00_PeKf3?u8c#x??~1u(odkyy?H`fT^l{i)h>(i5*R&lkJGHM-$$zO$!NG#P zQNP|p=k)q&sEm5-=KwWt&P)K|RXfGi$xT1-I+oL0%|g2L^i;o}9|LE$rL^Sf7x7|@ z={tD;xP_ZWQi(u5t|Bm=?eeN_FQn||fX6e&7n;>R+N5u$m;@pgv;lHB(yUr-KZi!Q zaOGYD4LHl=D&c_0In=59hJU`muX`$99?W1u}IO;4s_2D`>5gO+e{VLnppDM!J$QQWfkKWh0YWXhfil4LtJI8n| zHCs$o&0XwX6kN|4LxWTSr1Q;#24AFQ{2I`zVpw<5@4*3t%Gs?G#>hZnsiCfDk^)EI zAKxv40wN}PstV`6{Q31DY(UyZ?;4^U-*58zOL3wV{f3sA>CML4k)A%i_ocEoV19_1xRiPy|FGqnnmqt)fd| zWI7gH^e{B7$A-W!nU1AaOhiMW^W1Erw67F4IDl#6at?#l4WKH*Vh`ZuJi;PpJap}ArcK;$Us1WZe8!*uwx}HGl2lWWqX-lJunX!!5hLitTCuLIuDL-aY|lT3QYNQ{EQ`=I+%p zt>7P6l%zmTX|K#lgy#Rz@}>;~)bGoFt}njkfz7-}N=lTD;ZY{-c2;*D5DynX?m!|@ zz-`?l*FC4NHe5DMV=zJxi)+s=w%5JBbT(rn%`fbyRn}t6Rk~~(!~kLb_+u+SE;D~1 ze%}Mj4`>k(K7DpZ*{vh~57kGH2`z7{F+IKqo^sbpw}Tsa!^T-7&;iwMc~NF}Cms?0 zZX*7wNnL-9vT5d1bL<1g9?W0H^3`z)4um6XYRjFR$Na(8pj~0A}&aEJpy;UVgw-KA+NI`T*6BXYx!@`dB>Jgb*#uRot(8 zte7tbhfjLrHM#ggQ&quu)Lephq4!tY`4z3)bW807j#E1&D^V(~lwb{)#b__1Bc`SU1GQPbkl{taDCx{t?I<} zf)UsB2@Ca5b)4sT`wXttB$IYoY-?O^@%E2D=OzEA*Bd|D=TW_ZaS8=bNv&1&ae$|q}DJ_)a$nToVRn5-m$oY2iDJ~ z7!eHro2VAnHt_@i%>X0%_EDerYO>+>kABDy*VI;qx99R-h;iV-AR-Wn9##(f#uAF< zFE9##80~O%40a{7hqFkTZ;A+=%A4mVTE_xTrpUz30GF|ZWTx|h$pFtR2HI}ZM;nz6 z*+pR-+a&h#Y5JN2ox$XQ_|}4te*^=1l*&8xC-f_6SMhs3$aJgKBbY$u_`LQ%jvY^> ze({G+e$Db00$xBr=rGL(Tb6);3oAZ$iAtL;3y~Tut>LWDp?+bH495}RJ0P_x8my36 z==_6v&^Ubwh+!`-@f+$F3rRTj2uUITE4^rteW|bvAdK6d{6iND(7$zfL$H&xtoSU zld8W)wEXxSD;HlSzl9R{NJ8tmUU+T0KWTm45~}483?T?VX@5?Nmx%p7Yr@p6a;N7X zI8^>aQlC!&U2dg6TS-pB4tPYgs#k>k&tdp{r=H^bGv6D^q`QKgwiVm;1dSkeUbaI@ zhk;7^r;FP3Tsg<@Kf`00&Of2je|9N87h#YN^X~g-uYN_0Xf*&5<&1D4oq?bvP4>|f z(Ajn~z=Sn0oWPFE2i6a}aS;$s-%h_|3rDOqIcGf;Pn#Vf|(JqEqr^=T1|5;6`PIh>;MyR#N6ZuTcj2+ zf_K=4xx1Z*sOpE4_@jC@q6rao7(o8=(m)0fBb$TEoTU=-#QJRn!OF&mz1FQblHp9$wt?ozxUE7MJ13<4 zSBJ>?_#y9E6oL!WzjtfH#B=m?s;yobWv%P8RUz(Alt} z0)0K-^lVdJKg8Ke7_h=ahi~DyQ`=(ydQleR*ZS)hl4<&5VOHO03*J-%igPo5ywdXLEXvZu~}f?M_~VyS*5=a5n+_Kq=66( z9@q>hkT5T+0;@0+jNnau+d0lEC_Hvw%_E=5sq(@lNb%~PCGaKryBsh! zZK;m8O$oTG7F-Dm9-og?#dWn0BG?WM3_gs9^an5vA#XqDmUSDz_J=GrudevY-(L(n z3|8%{-ll9M>*GRS4(=J;w#+m)4TK%0qVVYATIV6u&@VY}1L7~-E#k7f2xe#M3SL{- zltXTRs`lerSh0CwFbF^u0Of$LANUo)5d?Y#vurO~ViK z^CW~>x=8{mJq(P#UQ6S!v*jZwdopDg<~6`BVAaB(kpTaTV)?`BTRCsnAi(Euk)?6t ze18BefFTG7jpLP1l-6L+e_!-lW82I}G#YADW;W3P|MRZHKlONcT^K%K^1(}uMoufKgzI0iK_ng> zd#gb&>&G`U?$EhP0tDh7cC<*HM{5-{WEC1n9RLE&2Xj3=i;++B*%@&-e7{@OIZ6`a z&x*P4e7m@a;6Oo@%g08KshmTwKhK%)7g{@%KX!Za@{x;AX$9H(idJuR(5(J=ouwR#xE*)C=HQNx*ok%IIr)LBY=G!r2r3lJvma z1CLo?4Zqf4_%PcniUVcq-csn@@7-Fw^F8;glK8EilT*Bh(b-0Ib19H%9cG?EDn>}h zdXpXYmsEgldq8)=)FPo*lFkE1f3*OFASWM@+_s-UnMG}+!FXyq@=Wjj=#}7PFyfq` z#wX{a_77LOvB38rv=i5#L)x#``Wj6S6E}#n`>fO(o=;m>57O0Q5FnK|uWDADSWdKq zPa(hM)v*S*qF zs=AIcm?_Lx^XRl1X!uAcy|63TEUo}|u-3@pS;sN{3y>SInLM(7T+fBk;AHWx0^H~PLLEdPj5G0o(m0{gM#aRGJ3)kgHKXJi5YYm?zx(de}+0YC2 z^cceL^y_ooHFqY!QD*+GGQvOha3X%R5LfRb`+y?JV%o%a?gwzO*=8 z<$iqinO`RVpTc9|-kds-Ua*GTduIE;E!Z891if!s6}R@nNK0RX?`hhJ6*dq6icsym z+D=E@{h>$}P??9SUb;3a!_MBan}wJ#!R|8+T%fAMG%`tsw@rf02UDr64VWZ_J=hg3 z6TAn{A!6ga*KEO4_y#hz>sADgebt~PzS{#SASR(-sPXFZ6Iq6qR~dY|&%W~p+-#kG zdh_LPlI_cGsh1Qeue@Uk9GMO!$K3r%3>`c*JIVNdJdgpuai6}QD zXbY054h9`^^$n?Zcyl; zAFfD#u2t{A-Wg<*tCk4n?%=Euha!*@iJtjjez>yaRI zzvGYhSgmlNh@=H8l(PFban3&jh488eqNF%@*D$Jeo92VyA`BZ`tv^Ak?LCfm zw!p33g14KpaeBbpsDjL~y8B|-Xf**zXl7!3f(C}Y2x(`ly?6V>+qPMKQgpU%9xA?B zmm2O}`=qzwvV%S-H6X;m@EQ*t9aF$Evn1cY>aZv_>?^F>h5E1z0n99zK~m2LhlvR+ z2rJ+hY(AI%e)oYQ7jCwHJD`=m)c_Vg-sWm`nRDr2SRV@bMZgYu6z!4_x$nvUlexxKmZUIkZr~p5Efr zKX^1J-zs##IM9=`P%``f=gYMS^+jgA*LtilcwKl&I@fsKsJ>yHZ+6+Rc)qHc9YVbo z{5hd89MHLpVHvNa?E2SnArrZ&dgX7e)yuL-7b~CkND`qT3je~pwSAijB2QsTa4k=H zM_;ENugi?eF-iiiB9gE9(L`9a0^KdSAgx$u=72)i{(a)2cO8h zYU!qe$(s?*fH#|rbpdDx@G;9^y=cxwC2tB_us}Z+#OeTN8UX}aP@g6Ga zRQxK1*la7@cQtvy3jBa76@9C^$_Lyub*T1vz!QGF|FMsKDVLv26r|^$bqOla&8Dxrzcfk%7&1NWqv<4g6%c`o zpT1?9ZeSYSSttYn$*5qHGyd z3KblBl`P@SSb*kQv@iMH3r7`(KcN{<6XDfOHne2pZV#{_g2CT%U0xc;gTUwVBqabe zWx4onu^7n33fVPxg^RWzs(c3h!>rgbw-zUGW9Ben z0z=T-b$yrR+_oN>pl-9fW&$gA5Fn@HwR-E7I+(3pXkGjoh|GS&XxE)$l+Q%wDrY`= z6(<0*PA&tQz*X{S0_6oA`3=R75s3NkY}0|O%w@8DnoIaPgKQ?+9k&rz_}$d|29ZnL2#6jm`oLwe^=&}!0kNJ5=`IAEgR3mW_1@c4cMJ0q^X{6F zhd(uByr1%6C zC{BY&W$p5Ki+lcKmBM|O(LQeIG`>mMoTywwtDW2R!YTQ{AOj#FJrup|ARu$Rm*7Fb z(1CcnH%{^ck@Yee(p<%Cm>qu-1*Wldcf__V1$K{=tb_KWFc0o=Qn)JbU(E0cBu8p) zo{9KB1?CRQ^JtL0+QQ*d%I~~Vk|8B?x80iGEhLs#Gzf+X$=BUOdT|f#%OOE)2IZA~ z#wRn;xA{>6eSVX%0D%gD;=_~%mmw*bAuFTCp6iwH#7slqNup3K@8??^kOdXGe*g>_ z{W9*_^j+rTA8Bpw)E)pOJ02_L0~6UPynAFRxD$gUATu5)cM@OLfK?4_?>ygUIQIy-%vmAY>}GT@iMF3$Gh$$S?*9jdi>vo3(gizt#1+a6J0Q07y&U#G2?YmWs<63Y{hREW5kUny=`= z*AW{v{Dc1i3zdQyd5q@Ug%E55auCXasm9;I{cu4ASFgZ`A@y6tQdk8A zPa&eHe3gILHRKdz^L+TgoCK~_ocBschPUSlMCXO+5x{HVo1pOP_T02LI*K_EC^-J5 zmV%#(%0_lc+9(G4(##wk0=($SAYl8SrXLZ!GeWhEQ^LFM{#_}5`9|$0b zhZ8;Q+*8!7$X|Fm7rR7V@Cj5cxHqy?xE}%Zh=+h`lKDtdB4+`?F1VlqVG0PN;1*cm zLUUl-^g!KGfrnRYR9>v~>*IP~Lqpsz4jca2Pzi79IuQvpj8|4Ww8UHc03<)ntbsnO zo@9~|eyd7qx~`G@S0#1sY-pi`^lD%Mn!MmbQMx`TBz4k2rbyY=!x_}Y?XDN_Xz&-x z>(?h)UI*zrr~Sjz&7G9L;+WG*aXEEBdv2~ukwg5C6#%@^H zuBhdDU_R1mCjlQ;1*Y{fKe5JtRXCyHXE;=P;VQ5zAN(M5HvnsAq&UVD!2O#6e)+%z zW6K?Q7I(SMWn$HI+tIPlQ~g_87dOpayvF5rL6~z0tSyquLdWQmNJ`_i5RH6fjhhe} zE3=qp0*zVG`l@zd;cY5jVI(g|k`y)0U&jmvuUbp_&)q$q$7fv2@wx9VMYFzz=RcHX z6p$KhM_FdEP*waF93tPXa1dYCB|H#P2|!w&cXX{Gc(+SPNdGJvKidfgd-v1JjP*B{ zAVklDO^eDLE(d+!Je@6QWqR2ELzJj^dhE*uuq_!tLReVa8~9tR!I=atd}Ie#m!8OY zT8U&39s~sO^sDG@G?5nVldB)qy0xdSySDD}x)<6^bwn^y#pzKdsjo`8u2kRUUC=ON zxITrON9GOgPqnM|sWPa0G7@5!x+iey~QA$ z27NBtW252@FJ^}I*x+p+m_#I}I+j95UCZA+V!5*a9-v};fRa~=UC-NMjOVwnO`xeE zBo|1KzkM<@?)O^JLJZF=HyIHmrT8+S=|W34+~jq&wBVB7lLw0QJ?I`<@tTb==xUd) z9y!j-ub^1xwHrvIkc1&CWdP!9C)4_nz{zBei1}IiKpY1jk6N`6d=92(m~i=$U>rs4 z?U)uXG{5nhglkG9AQ|)(lTn@cyRbBHZpcPv)+?`0Hae@hy|fCvh29zKeo9$Ao9s{| zg`mx7dEU=|_%>HvSWze;V$83$hm!uv`Ko}yi0*9+ofSa0Y@KvXQ_bZu?j=A?dE`Fs zOE(}qd;Jx=cpFIb4~*SKJ9mfx2^+lbH`Y(5*j2Jrm@RIZK>7=v^S#Gz8}ebnPN>CZv?g4zaR6EGL@l-sTZievl^zgJ_gI0F&c z;YDyC=nM5XT8+kg;1SX~GJ%;5bq4uG?&`3;D%KjU@CbwIb-F$N)5QMG0 z{Ch4ej@G}y;O>P)t#tM$O|8TApSFz4sA?WZ9jFBWmVjWW zl>^xUD08dSv%}MDxa8D={-v%Jr^8;ZvwXf3KLBz~{5v~C;AnB%AJ}c0njbTq4v1E% zfmIsJ5wCb%^bTAl?7->b1P&POM8P2pT!VM-J2Xdn=f;?!SG8+3<>)E5z44a}z0>EZn>H;p5w54`{qa>@VM1JOX*pf^=9KwsmfNYh)|?XR^f)e*WVndf=?Fz|4e~uZ$NuHX9}qjRR1jD4YU8O#P@r_7?RahB~jV5Z@i)TKyfflf6hFHuqCS=T+lQL#Z$(b`IWXwqdNJs1+rT?@M5)w?vNi!iN z%!HFN5=_V>k_9Bp5fDT{5d=gL5(y-aIp{rC?uK8l!D^><>Oyv>==+Nz`u3t15v0-viTBhU!WDDM)6~GaNvm2&o*3j{(ptow+*RT0>H+{E0weUFmSc}hh2_3z~L;!>!BAZ)x zXBNLI`K$=_hSN?tea~+Q$4?>;b!Z1E7z<7U?k8r@3cci9POCcu@UC#DweY~9B!Lzn z&1eHh_XfxVJ%nTsB#{6kkd2qFb~-+S-)7Ok;>sgvp{Y~=1eSYs*(3XD zqu;vrs4hup2zRjPg}Y?UhP3LiuXZ-`arvrk(Sj)T_ME!k0A7VlSa8}wQv0s<>vm20 z7mQo;!#p@Ptssr|O)b|cQITEi1zry4UHL>v+Q}TvBZXXt$5WPvld|_iog-ogKicFw z-m?@E4|aYt!59+~kf6J^=RM?g0EmE*1!e7EPHrCRDN<1|_>3jHb2dIKW_@nQ+yy*0 zpHKl9@9etfi^4{{Gw`Yu?JbeH@jONU0iC27U~`e06olm z%*Lmi?*945`-H1+PN4q1mskL*du|VPuezxgsDHdOv_Y{Qp6^(9qfsSxq5@zvKZ(~;7S3(qi<5paan$@_uikb%`=@_hU$g`D&i1`EQS%^ z3L2T&Zp|K#NYcg>TM9@^1^k~0Bud_7Eupri>;vDEp=ANZ)GjYKTGy%an@QZnOR<(r zBUmakbnXtA?7$%eRLj-3D^G-8YTn(GkpCC*1J}m8i&fekao8`&2tooYA{pZ4Vbk-@ zRzU7mf0iylt1|)dJNZiIF-f(t{reRel-8Rw0JEsYGq&(!zo0s7u0T;~O)fS80>k3I z;ss6?>7ACMnN^ep>%8NC*`?Ypn-9z}L_&fvO_I&7N+O5_8uS(=Lev;us1?xc)KR*0i-?lC z>6yJa52j3l_g#e}%(7Y8Mu3|~tuSfqkbn@MV}DLr{JQ*FuAVt}iH5AL;C5O_1vVu* zi>88uf0fw5#3DBu%|C_uIxchd3&y_Z6({_*JAz0}t21j(`(19@ zHtFNI-W!WA0nE#V&@iEO$#qqMZ>k1gWD3~nF3X0=fJ+wdoCR^#~ z^{^Dq+Hy3RK=)EKu}d>s0J**5Ln*)JQ2H@8N~>6i>zyz-vc}WJ*BdC@bw4#95%0JF z1f+C_w2fMPbHBU-paWf_n^fX&HWEqlqmukKc0fAq(2lK2^y#tqEWn31^|A+^j02m^ zR80rYV=JzE%r4@>_XA%vstAT+JLz?qw?}-U>^fbKijC~JW>stIbWq*3uu=|swaX8j z@zynjhkjyymFc@yKg0D|+X6{+Fx*~u-&bHCg)r6Q^neLhOH{-kEZ(drSg?#2#k=!6 z*45wp_}{K`Rzaobl8EE#p1ShZG!Yg+%Cb+o1kPhk9pngkEUlB!!@mnJvhC#t@c+Dn zs@?rh!9QcX9`xUk;m^#Y4>y-!GVrJK=zDA@)SDmzq0dPP8oQ-$P?mrM2w(d3bm};F z?)tbv30HJ&kr!!D`+wR$<5&I=0TMpbvc7lhT)dpdf*}fy9)6QD3;A%FeQCJzLtqWk z3ph29|G@3T-C?K=_X8*Fc?;~|2H+GO8ZOtv3FD!U`dp!=UVumxs<1~pJZx(k-Ig92 ziQ5Xa(#upH!h8kPkH)@tbw@z1_HQnQMHv@v@hg=O2Ke9u?_GzfaWUYy@;vD^HjHT{ zK_2bU0IiB)0@+6wJO$h^5LPEtdGm|v8$oO31*txiDOBIrwkXbqO;NH8+E`UfFYah@CPOujN0h8ur%OE zRAlD7fo0rKzXLr}%5Ch3HtZ%F`T&;u0d4X;snr1@G}HQV6Rw-uy#arG2WZPRp)D_9 z3HGV1`f|rZiD-szY)^fODM?u14zo$eJ6e4&zIwg|FZ$9}wxg~F*+Yw$$esZX&U&HL z5SBMUW`OrsFIbrjX3d}a{w0~&V|=o8V9QwP)F#_pFjIn_JYWQidPoeFMdks=(Km~Q z5CIc4fy42ML=Z&R1YG?&9h+ZvKkcr{)_+J&vt%vkQqMz zX=W@ENDadGOIHPt>}rAa*wp9Q8k0Ds*9F5J!`z1h->MAgDeCf%A_$2H8rmjWP1k%R zLU-Gn*+;V3ZVO)BFjI13!D{<#2AqZ>LF7F@j5`$E0A@C|TMXs=IR5$1ySOS`DD+q_ zCDbE>336fom#$bov>&p%&HNVGBc5&@DkAZm29^+`P--nvy;(F!- z*4M)-{u8~G2vS=HjWBH6wKN%a>1P9btD$>aNY`b$VQQb#E7`vmBsnIyT!j!k$M)UM zFTX5JJqc89f28{S*3Dq`tf3z|oPl@$OuYg8l9)bFsZXMQ53&7R$B^SY-;Fwt-~BLC z>yHE!`6O6+kFzQW0Di|JbKs?)JK*IoOZeBee?PAN02DW_^)1kqaR2Sz6hSsh1p(-m zEMqiTlR(onf0q-&eEr_R`5qU%pUmZVc)CYgeVr3cG%{tF8KyL=SM#!cHYsgX8A@~#jKX29Ad|e;WyLXNV-53k+G4oO`|iGb4P7Ug z=05!ShhRLWBE9ZQcnBgfE>c+i*Bt|Gh+T2&2K*;8ncjPH=UYFqX<|)3^{hI8@i*kb zrLuaW&a8fq51Zpnaml(w2mvl3AFg|k=ph25H%JA*6h60^(eUUmA&{EY4080H!{d%A9HdYv6frc1iiLAn_%fSc%E$8e%_C8l!;24gF_#`U7fvVm1mKbQ_ zHdkx3%g9KEruyHC1VbyVpY8-OS5PX*#=O#4qzYsKUIKIg66@R(U%;~h)CT6+Usit5 z173~9Z?8QqFL%&6Bg;GwZuB&>h6r8MWmssER4x~yOjo7o#65?yM5otD>AVPNSlcd#Jp zfXTRRL;w*hS#yr{|Cx?;4jX5D((XdB=rvp5!OA%4Xfh1+-sOPjWd5$bPdW1BIkWacND&ZB;5dW+4ZL&uNd^*Wm-0&l%5@d7 z51h^VQ*%Yxx|^M~G&^!`j+zD;doPV03|{B^AHA7#d-+bLpU77@-(&K;S*qP;BBB|6T>S zT}s}M{Lb^ER*44p>|R}-O*gY_idpscEnO&G62$Jq$1d*~7wHKIN6fve9UBN6gn_Mw zJU$jE%KxYmLZ1VtxFNuEW9`95$V~y)kqNEPiq!(sW@vFoBP+cFOvW85wPe)MlQ;$F zY(OKxOl?Z7U+6(aDy$X!rKv@w@0VFCn!H`J_rrIZ@XEL18_XRu-;7Gt6skO1X zNg)R|yKCA7)&nHrYPM_Y*eF;A{XpJ_gSjEMkynW5oegc&iUmZ^qzEf{gP#PG)%VO| zcToQR)8Ifroj(uUW&XiPE9szi0#)CN5086lphQIDe(#|A@TGvG-+#XSKvsJ5PA#wO!&JU8mVxjFdAQVAF;@D8LY~4Fboh&Om(qH&B#|zBuIT zlJ*&G&-%Nt(g!R!VI`}wf=FLbwrzZpp-#&N%E{#8ZXgu+oG@^o088v%hI@b!AvPQS zGSD}_DqXh#h;MSAg>Yhze!xtiJ32uLed?GGekCC;b|)>w;qI)o2;7F#MO(r@cu<41 z&^9x!Iu}SARQ^7mw(;9l$;Uf`1W0tKV(v3g64kHY z)~?GFhCPFBuhg)yd9*UGI7$H!_oxI;|6BhD+lgdbG{CwwFg$q!sD{^~fUxe~jTP-a zS=u9kk*wvffOLPDZ6~q$odXf%26C)42*0>&d%;KX%HP8g{tc%yS=7x^U}a|n1PZknLL^55-b><9i(`FI~N$;D(3;g1|Oyh6N`B3A^ zE`HVuP~JfrfGV#1pc${pFT^NCkbn?H$3SZ~r>kEe@(kcNN=$rqZS+@SJ7Q|mmYdt` zkPs~_I`80M-;`v#w>Cg&fWFjE@(*jBz@(5m)_TFw;Z*Vg)PhyugnMUE@3g!P0e=WxXSQ3{uVedO`mpcW z{W8Oj58=+S)`FNW#m>it=M7(CJF0;Y;REWKhU!ETLd6BYiBPfy4jyt6GhpC`zyD_! zvmHN&IHxFi4W2jTaeU;=s$!$StV%JNnVFfHf+3|UC4W9rkzf9X;E0Hbh=L*rh#L|B zLWpU$+#w+lh)|L$EUFOj^HhVg>xY~Oy(nJdpy48C;{pPScPlRWu8aT?Jz^onc=4u!G`C&zhA#lz-%NH!7W0?tf*<0phZv;n+0r z8Bn;&?|nWV3eYo zdtCj%Ap4$`mTo?zF0??1Q_aC}98nPxf@xn<2Wi_qS~^Y(*gH4ry=M;}!+K=meDdE7 zL?=fqA|NwDg0NcuHL!q)f@!9M5tIxqM!-$_%8+IIk0 znFsKk=Wo_2H=b9@g_>XQQ6Z~udR;BXM#J62EUR(2Iz@zkeKLYhx?KC z1R(^Mk9+mkp#lRYAle0EQC|lYwu!gXCfc~D;^%nNRG}@nAvtt{V;u0{r`)s!5rpo`9)6xu^fFdy2Z_wOm8 ze8aVyKpOMt;~Vj(Vyq4F*8oBF+~?wufDn`4SH8X%q0q0vyo25IZS~GRV*wEa&d>#v zAlWJy0o*d5SoheR07SM?RNL(}92$TT5VBr5vE68W zg?ksBXAe5()-z+$Q4V@N{Q1EtoNaE*9EMb6P%XoQ5z0D)@9 z4d{72-WvPWlg&HWPj|0@A6m1`>OOAtBtzdS*T6ktL4osqU_M=#e*X3;Sr2WR<&8PS zl{f?PPzoLrs22m+%PCy83Z&;2t8{fpn)FI}08x~As%x#mTy}ZR!IPs;~gP;{o z``mm`dV@!4@#gC~0k5D2ilmZevRmbAti@clE=USs8RoNkpFoLeIpdz-)xg7UfX&?C z-de~YNb(TC0$pE64qHeVK+DA3GM11@3uEn>-I`sw->5z3)IHFYjSy4h!Bf>f_ksAB z$bqlwv1ES$Sh_4-xX6$Lw2lZs94n^ntLC6LJVbrqAq7TGo(W7G!tWN65-q_Wpojbi z=67xTVW2_l0}GFUv`AGvlwKtgPyV}t?fn4T^Q)j>s499b0ABuXHdsn}b5B%Oe5&8y zgv<|KHz5^1=;DM8oNWR3fs+?}t&O#`ftGHnJyVdsI9JWEfCEgvn>t62v~Bpa?aB~> zi-+f?D$rd2ZF@i8&=f9yg$D`Pz7P>$YQEEW`s?Y=df;`cSmh0DSstIi1T$3}8((Q7xKET3>9)k_*Sv%IV72 zq$H+&gRho?iNVx4kaSs}ix?g%qDcoOy{ZAjKm-{I@Sfd6Zk^(mZrIZW)55t7@trjQ z!kNry>y?36?R)?PS62VPefrj_5dgn22J%Ps{^iu)LPbjw4fCeZ~%UG zA*1g&^6uJ4eUl893>9_O?2uoB`$G|O!gc83UBW~VL@s>4+kkTRm?+#`!@I!nh2x2W zc9xCg*l=(WGBSM%{QCotf+9YI`~SgCsqf8mqk8({)_wl0w6IfT)lh^W5KsV3DxExA z@Hggnz!ad0*;GM+htrn*>MdP&rz?Q`vE_DY^>&Bxz}o`QaUwB2jM|fOjzoXenWfMU z02(T4S!+aWSRxF4pVRn&XSHyYKk{f4&{K_n@l-SX-PmMf=aKjm*il$io;NE0>08H!Iwkk`fTAk)@lv zsA8C$%-<~d9gEjp)G%=16`tw48BdT^_1zqTG_nE#u=hRdR1NB{L*9Jex`*g&x{MFC zi<*BHg;)Li4*V1t-Rkrbw+HvUX5;gMTfor%h=LZrhn}=7y^fn-?O;R@sLL~GG|M46 z%-q1Z$t}3Pq$2Z_IZQY>yLr5VSN_p4Y9X^ zecU_mbd=DiqyYR@OAhrdh98m;paoJ#S8Mm?aSwTokRU6VTphL@0DLAEDD-YpNhNlf zV)av+#Z*0|z&N;@Q@voO*IDm#$9D5Djq}Wl0X4%1JUR)DaKhz1RZlv-6W;(tL>_Rc z&d;2n!2SS01Xtn9zxq!1eljr&`8()8TZX*_^Q$sI8gI;-+BTC8@E=B%z~_cWd0Wqy z&h)aPA|k6Qw&Ejc7YQE+r)HmQ@~+JWI?}^x#%8?okeZ%VPcdACdie#!5-tGYz^2Ow zwl{k)uxGyB4Lsi>=Mc<*2oSUPY399Osc{HG0u#EC@&N0hRWyy?VRp}VwLDXjiDpnX zUgUwOi|2O5F=Y3Fac%dslm4~d=u};Qde0MC9Mr%Msw92f=&9vQ64ZbVNC-g}fex+T z@9#ZnF0RM=cHmJxs$8UVo{JW~5IxpQ{dPnZTt%K6e;n3%$#spwQZF+O2d=Ae&N^TN z;8=!s*bVF#ONHG45evuEJvPidnxf!g>*ugGZnF}m)@-!-0O@#H1d0Yl0sy;T-+I9D zx(xQ;dpf~7{NBQ2cvo5Ma@jP`-0c73OOdDr;I+nvR**Bwi?r%*+xs^y5fLD)?$=ue zWr+kz*bA;+_s!$x|5fOS0AS)GoGg#>ObVILTs{Nx9#7sJ5}Mm|_3alh zLSb%vqUoVD0s;sK61{13nk*mW>1pvZ=vfyHy0Jwe4F?=ef z*{$*35~82HKz|JGDgNFMBH~#ZIFYk_h7O#BixtgfT|gj)2X(Lq=u4+9)|Ydl+})=x zV7+!|WzF`06CWCzCKFq!_lI~%BO}8RzN=+uljuHV=OO8$MKzv+&zljXzm^4%?WTsQ$@ z3jM;|@FWxaq}jbFNejWhxCf&<$j~CSKW&`}Df8sE-i#0j8^?m8UvLba)iCr05NPM> zCIg9I=Y|b{X#saU7T{jsTsECA-1qr+b^Z+4QcHTa%US8qm~esq18;mT))I#TeMgimo^r1q90YZfe6n9Sm zqL&B0k>gIED8md4FvAR5rR!7p`pt^#Wf-96s;+QNeCnUhtbvEfrofL45gK>;HUR zLlK#jL@B>Q{2tQo6ypIXwbh!oYIvsXr93>(kI(ysutEX{CxZA8 zIfdLq>nr}he_w(G^Jlt9<*%f(U1Yol+#$7?y=SNkHzY?cm4VVUJqZCElwAOqId~2& zcebsRr>V4@X5F2wB6X^C1?JEkk zQJriPuHrXiR=_cajuIVQ5fDh5N$e?|Wpe*$1RxvJjl)SSIN*u8W+` zghD_c!k7M3$QrQ58gB# zdEi)~;o$MB`AxC4f4W>kq`(bcUS?euUDL}`z0z#>{BjOZ5+FWSR+m%!e(=BU$Z0 zj#2{`N-6n=cVZ4Nz*7QGoM`HZ1}Ozkw19&?W&k|uLy2<0nH1P~J0c z3tsF2B?;#2+o;GkfH^_uXF)Tm!?^zPKRHR)&idz?Vdr6!9YeO10H7T#haB2GZ*$*? z(Kdq{80A_Z1x3xwfDTh>;GWB7|N4;KWDYALsR%*>5x%`a$uEgn@jD>_-VOJ*9eG0i zv#Ix^Qlp^GsVeBjq@kbQQQ0~Fu*N*yy1t#PtgF3FHf;pgG~3!1s3C4)fYkeIdFTNU zxEAnqYkoFs+Bw-pJ1$q(jmPAuGE3e?ZV#<@nF;b`0fI92&)??SfdF=j=0Gzx7QRX? zVo7?ibLKI8hxEMzl@r~5EOV|;N|Iq<`_J|Ppnw1@W};~(h$SN(Cq2-{$=qeVU^sZ# zb?ia+BsE>?rhoqa@d9t---1Y2s7_XUA(wcob7u&M2HslG1kc{DhZ~dqcQNio;4`>W zjVljf-0xZT!SIA+opn$g!ME>s7k77C2<{FEwzvm^JBzy{xG(Mr?(QzZEw~1E2_7Ig zL4#j@_uY5@c&}%Arn`EoXR4-as^|1MpYNvh9bJ=D2E~PXAd}jF(d8>>m#saBX`M24wHy|FT)vw2||nJ!RrVPPWqMkw2Q~ ztICc|u3ip?C2KnPX~bTR#*$$xeIt0Re;WZ~e$sufPV^=2Cj!iML$Z@4;$6PX~x zIduN8npDw>aQ)K7bJjuYrJky;7gQ7UdyGBo{daWUXn*Lj5}&XA^3NHVR{45QQ)`;@ z-yg#k4d-1xcLYAffAsxHg-AR6r_qZ$;msCk3aW>2RFKh)h42nqS=vcogZFd!_=^`4 zP%bte470BUh;tcrZ9%_|{9&?h8@G7<_ljgzHSSdXNXUG*igGg`OdjlMVfDU$hK5EffIJ9oq^RqW$uw*H8~W3p=pUrc z-`E)6>G)%ws|kO0^yfD^?NDu1)WLf7_lxb-SkPe1gFFVq+GRPwJvaf~M}2KrX>Up> zFz!$Lc7Sq=L&+Os-8(9t+j!uEfj;3TPs=vVrLqkp7Vp6-VsYbLB@ z`bGHB9QFh%-JXB7PZl$KddXTgmToWN5?iY2leP47OBAu^{&!J8kJv+Us#g zmCV8 zmf$T@aO6^zHH8T~JT;d<>?}#B0;$6-j~R^~}xH{^f*d{4L~ zK~6R)xrKW(UG)O8Fu*PDGUvE8x_hG*OPwyZGjUYb(FVys*iZ1Yufo{N1G#sshIhQG zOWnN3NEs4idp=t)TdK6HbqF?0Ub|p+sH}DB%KD;z#B(xSEQ(9k^N_AR0{Q*^BWZaU zfSF2vNw6jNXO!A6uFmg578FuqQ3aB|ft`iXqCFi@m%vBeIq#cw{EZNpuoRd8R^4-b z%2|^_Mf%P@XJ*C?Xnxs&Ctda?)vYXIS( z2Aq@aPwdO3w5mT2ZK?{}-+kOkSt`UtU(EVlt)dk44m4%cZ#Vu>p&eDfQOe`OMGI1Jil^Uij8ky9dO z)_4!+!{*ddecINcittAbgdIZR$<`@ClBHfCFnykKN2PS$^S;R(`u&LVN4G)a;|qkJ zLSlnGd^9Y;xWH(~cpz2b16gbns zgJF*Os)P5V_qd@qE`I>r`<61#8CR!-e@U)3?U zSd+(mZmQg@?f2d7bNas(ZLg8)GHO6ty*sa*nDU9+5r*L8)HQ44yBP2wr z)vg}d|IyOrv?SY27W}(^l<4iA@K`c%vkEL@SlKE%Vz89(=~_wI2oCMuwT^94`2uAT zZ%7!#8pcGDS+EO2v(`LzJwfVl(Ej(wM@~Iz_m;obA#+s4H;W&aiElbZ0*HKw0)_-X z_)oObfd6};fCelF9}%|Z&^df|?~l}b^zn4$!3pW?nP}@28{vy5^4-BN?OC|Wv2z%a zir*Xh7~Eo%O2!LhFez0pApK&4fFUcwWWKUu4viq#V3D8=oOd1tKhy#Tlbo|uLEc0 zo(l(FCIIh)RODFQTsI}&l!D%fwrSTn?ZtT84*v=ZUd$dQij5MFtSfM^2xmqFsf#{0 zcGOsM2BH+l?npKt9>~>Pc>hZ^RE$OI z&g8q^`9_mci#D2fndn7|OrvFwd+Nu!i2QgbG_O68b8ddEdTR~veFHY&GZcEt)S*w} z*K?M(NIS)pO-j#Q3y}P~>%tiLkmXAe{!>J<>zYPVQpMhwWXP^czey;-xbGs&p?-VL}!X(rhV!p5a$Z`k&A;strU@eb#3}A z;?TjLJ*l*3v$K5;cv{N4opu-~8jI>$evm(I{#_ZaF}w zyrg+6!4<>EOmNUm5>GU%Is3-Te~d}uH6jVx6m8uec}G_qXD3fpL*>;kolpSY)9+C6 z=)BOL$$R$hGj#HvrEh9*pGqc692{8!nrxa~tj!-m4DGVf&A#xG5iL6?o371E`$W-J z;hlt;gK(%5DI8Da4^wP*3ml%zB8uKGAwe%D1@MAjzUZXNEyM_xs$3&d(J{w3?ozq8 zoBQCPHHcsA1H~P!k;d|fsP zKquViVkBwVBNDC_ZvUzuu*BIj;1%S;^rZj}`eHBQ@hE3rxCnXq5PGR6Jxtc?H7jjV z?|R!>w;qPaL(QXGmAv{2#}%wUG7$pSx&M%>KC#R>_PwVJFOV3E&{BE-*cTAPTRk~; zYWV8rm)Quq_SjSQd1*O|V*)l&lixOMur!LK+nYZap={r&WKaIgv2N|Nv*n+^G#-Y{ zBK+o%LrhljW-GvGB=|N-0388=u!9ooVX+HKhFo5{Hg#jdjbfrte)h{)^lLP9knzV; zePR;J+dp+{@;&U}hY`Oy^uawX<~?J7@{aU{j5%k*PAnb5-q3-3U%OtKi!Wc%v`9He zIM$FR0^KVEe05xCsJS%Gk8|HG@!mo^_?A0Kdf3)9b?fi%$G)JVyQw@~h^7)s#3fI;ZBig(l%+kIKRR)U=<>D@;^ z3}p^)=^zGWEoqRB1+M(SPe13@*uCmB90GRtdvH+dE;S4UwY5Tr&Zf4A``qe#@qT@~ zzc=e@73jwNVscV(JByvvzd`Udr>TMOb|OTZR+PJU2_A>CZTlkl!N&V_T~>(BWO}9H zwN}(1YzeJFYi28Q3|Lt8RW%wO_Fwt~fmgZQWXkyT$bLUKcj)L*>Y?D)9iD;I7Bmif z*L-=HWOuGC-t!yIeDnG`RD&pd(8awlH5b8*VSzQOR>&cxk3}*Rci&!ENK8lJJ)FTX zd+l81QueS%+eiWtjV5h^a<(Lec3ypzJC?85tZedKG8O#0`hUD^@gR})YOhX&+X(#eOuewIrBbMN7D(AuTw)a_mB6I*{LY9;|9Dk zd1x9!Rz0kzMdpIPnmhbgeG$#FVOT;B))5RIC8rJ#*6iC`Hls*)zy>VvXE=VW&+ivH*;XY@!Bpoz`v${M zE1Q3Af_qz{ouiL-=sjbJ!2t`?wc`v#^2-vei}nEjE8R{q5oUspP1$dxVlYC3FM<>Ee1G+K>d(tSjI_RR--_eO zem+1*@A}f^@vm1jHy_NQx`;^haD<`vieKAuq9TE6`gEordh5?@dIVr8OQk3@Ccl)oeC_k9aK z^EB;4FFFV_FUix0B|g~>Q%o)-FhD<0yTavN$k)u`GrNALrLa7K7g3SMu1fPyz?;GR z2j^0lu`y&Cc(S8w6tlZk0jHwSFfovQ6#%&UcTJ({`s;5uuOO$kzuz?cX+yODXGccH zZCJW~RLG_nld@j7*?U1qx!P4x+jUi~fq+={!H?zujD;OW6bJo{G9EpVEiiQV7VYwH%+mC|8C#y_wB5lMVA9CjHiFBv!Tz_6o*}JGMYEEF#B|crDiR+BxLR)t`U*G z4a;UZvW4Hy_1~HGQ8=R2<`5{wWjjTI_Fj=oTUYwpwd-Fst3tP7wB%g@vo5$lC}CTc z!knZV=LZGY$BN&xe5#cSU{pEd(JU&6iu$2$yeB{)OWY@zL{pqo%P||+6(29-+|#qN z22A52?x8d%-C<6*bUqIp%_vR#qZI}>0FJOpTdp`^aTMQ2lcOOZj%)2dENn>7)rlci zNsu>6$7?-6Ns&DJ=lcGr2!$k>vFXt-Tu(G+Ad3;T2nb`cgC&&godr^Lz+%u;4`C+n1ob(g(+L7JTVisz8hIlc+p zq?)cbm5PyJL!nLHCCIi3etca?3Sn0Gl&)hZflD9w+Z@7jp(!kY7`RbwL(wXJmE^x= zeN?sVm5;?0zSeSI0@}jIg7x8V$L9Vxt0-CD5T#t3O=!MCO2*WC(QnGkO$KnOn&++6DkZHrciIt^tK9b~UBfb==7>|GY~?DP5+P;XOL? zuojcIUtpRJ|NJai+|gFuibk+zR%z++jvZrXpw!4HS5L4ucYma#!qywX$9A?*pg$v8 z<3Dz+Efg~*Mx!)*EZhJs9`|w>6@gtBRlD=e{S-*$z&;v z8F|r6@C&WXrM~?vH`=;lCn^W1!Al$vdoEOC!eq%xTU5H}9e)m|D8Uh=WVNNw&NCXvV9+T6^VZ%F9?Zmre|5{2r0!UTa zf3WbjQeVo!tp~h>NwH=nV=IK3ceU6~3 zuqA~2C6O_Gc!}43jAV^7yzB4{2C*L_7uM|pu`UFKF1LOkB+k{zdlURHvn0>Ro7_{5 z*ajCeaydbJ2ZI;bu-r|Lpn6J7A?WDM`3N@FE=Zm&d$(WxXu17C-^tc#{c4YqY;5VH zBLROm+&Mu^ZrM|sb;Qope)<)OMiKP#ahg- z;alT(Q{k3uTBA2=Jxnef7dKP>zN?4!D_tLVOo%vw3A~Km@aSzuJCkAg#3Qw_7syknv@ggY$H33wFKeWv8HFfh6?qGs-9?U+U7{;BQ0|=Dbe~Tlogw z2l}t4=6D;IOIE`}@-dI@I2idEkRZ7eb)M~PRM84^%qL-(?(3F3>O|w6=6c`u^5Ln7 z95!OjRC&n6FOFZT(KWu36$Qk|yUPjkb!dCYtWf|sWZaLM?C13CAH&Xnwx3;~Q`E?0 z_>B^Id{zA>c!S6u<{Lb+3v+eY z4%>^Nd}aauG^KKOUz5T+$edrJ!&$RUwnWR#SLgd00xyL}vHH2!y2a(i2R-|m1NWu! zOoN?t5mtqsBFw+`cq0&7KCq%{wv+ttihSRb6MPUa)mL`3b~1~nM_4lunm@+KMcEQa zOGk_^mTaxLXf6TO4;KE`kbK=lW| zw`KWqQ^18KyF1IN9vrwt`a&Fa?;82+?T+>T#aliW^sujrkkji&iN z49mll^T(7%o~yUvrjE6T%0(x*20pHV-}e>~9?Z-*i-^polY9G@v)>0j8CRTr-e?fZuSAHl<_YRZK@g$fJMFr8*7g)wUhxA7K*zhjYi_1a;`%hV@d_D_ysd-@FZ1 zqJ@GUKkMnaA67k|><7632JRZ1noadsN}p_hMyi^}niaJT0^IA-W{72sQok{=TlRS5Gb9eEd zAxN=r|IvLJphbSe2u71ir~DDmAjJ{3r_^@JJ;c17>e>*^i762Dxo z=DQ7{YXZKj>DGgjO^Wz^CQ08_J}$-;R!Y-HeE8~6z{w=Zm!OJ%f5$m}Hu8dzn0ne_ zC>jO#uYc=u=BTAsox5g!%wG3_Ouyv`2Xf50{%81~R$sv|f=TIcsE>Bcd+`|CHwO(3 z@XUu8e}P{dzQ!Q|_^#Yuo%v9@Y-BC{mZ%Row59Nv!fEsYAE3L~oO#$5eb_H}O=5yCUdfTeGVL z&&F`G`_21(=e!W#lHca#!YS(bQ_>H}s$%oxH79O_q_+IGG71lgRb}ZJ=9ig@lOQSu zhE%SuqG_ZOf^b&U?X+mLv1sqXI|^^;j_5gbqU+|AJ8uE%yz z;`wp{vNJF83~7N4fC>u2_}EzyTGR!uq)XxVHsdfGo44kj`S9=mK)QYR2c#sEul3Lz zOUNuybCZRZoCw&oh^;+6Ke8Sy;h1M5_`E8+z=^Ck-I^L6xf(tlo9lp#oo7te5$Jvq zXyz_Rs)Wa55(X?{r8*ruBB^myzqER5Xn?>7?0i3U+khmdO|x-+s&(<-BRgp~5V%~B zsI8v{TcUqW)*j@rRQlCWrlecy#{A?;x8z|RvPgR-sw2VbK#KN;!Nc9YDP#@+q$bMp z7sGieNr2zbeheX^(TiGsT{msWq#pH1gf)4wvU9@mR&KOYN8o5xLF}F}NcX1o;~6?G zkN0BLb^a3N1a!;`VxQd{A6U4l`GS2W*eMcBCsn{6P(m4*J7zT4VStIC^%sEk(-MPM z8a)ynL|Z;Z*@Dw1nWFWvd1eYAO>s=x?Ou@i4sFJ&Wi3#NCh%j3vpjnEH1jz z0(B475es&DLFb46cH5#}difkI-&605mN}04 z$DKSWW_Z*5M13-|7&Eb<<=Q6>0MC9C)rIAv##;o;Hd(1^erPw_hd0GtTR#rWIgsN zUGg0X35lx$(?s*nw|cJea)0-Io?CjEx`{^BllqK78r&4#J}NbZ5yyFRDAdk<>w>uK zZrcFCm6{B;Fy+J_mE5G(K3j(7l>LsljY^n4najG1d_e!gqtJ4+Q)@F)`t2f^dr7@x zTPTtUt3cX%g;RQ}1cdFzUsd+@G3A_ZZ<`iAxMR4q=^*o1zVA*lbz>MojBtBq!}#z6 z1?xxuEwb#8X8tLn#C*ooF^fJVUV0$qn0Zy?ie>g5y8ss=RPe(sSVhG5Fl^- z@I^fHVxo=IAqQT_nUNa#16!FD)rYFATK)q}uFDl75358moyV4k$4SMxzJYMKIvdag ztg#txnbK+@5`WU;XclOys@(;tP_*Mjj5NlKw8Zc-beXRv>3Q)WQ_! z2`6xkiuK?X+Y82oM|6Jkt(`ag$9Mup0?NfMy_y_Wt(ZezPXATT#ptStFyB$NMF%9Z zYHW}G%mc0_AmZGY2R7%ajgMcBf$u41O~wk zAx4;a1IBQ|mPUuL?0)q$iAjqWQqjg=#aLB8F_FhqaAp9oU>^sT50u42$#E zj6rmTCuA@E>TbxQTtQ6vJmC-K~B_CII8&h*=QV1-J>U&WmnF$>vUXM_vz2* zwTVfq3k}V;obJlL!@i8czW_Nw{|KW*=p z#F5zU?M*F3fZxRhEqgA18x=zTSnHDPuzhUqwuaH*K>v_?8$djHrq*jEt-olS+xJAU ztprOGqH)eC=rBOv*#-vt?SYj4{VY`c4vd-zwn>~isALN$$%kfiZ)y=HdcS;@$Nv#* zrFrDQ;j(3)?hV`Y*o=){;~LjFj#)@zE4tbBcs z^rH^3T4;6u#!yVQDdC$un&tdV@3#!6qG`BLZpbyw1nQH*I8q%-VWnQ<>+|{K(k13p zT$)xkBBq0r-)jJ+4=jO@-VF+YaZu~LsRsNYtWElwIz6jc2WOHZ4rm|bd;BYq3}hsv z)4l6pHxBA<>UVMQ{sTsHRQ7S;AGh-Dpx6@st1vs6=Z?}Cx!#Tx1IX{SYUGmpt$?lxGg*9mD?2?AHPvU+_=FMYg%oP6JmmJUL9~~C8@BVPG z1l?Q0I+2{uw%{P#{4TS#qNj}`pxuY=rd3#OgU8tyI96=Od;;-H1LvBCKcBn4+ST%z zvpi9U&w^-B@X`)Lzftl0LVblO^OO9x@7ANMZJLxC_OfQclK+;4;G(v@;5`2LOv0b&fbGlocHjNLD zE9#3Zg?$Lc?pysxluGxDZ&nNZriU@$!Q6b?E3Y;8v&lnZYdMVy;LD9ASx{IbhLH05 zqwcb0_(9xMJHXX$0xOD|8Fr%v3V1%QvRvK@YEjra6zj!{LXBz0y80csH_hnYsj}#c zLhZn)ns++$BYf`!#?j9an-{@`NmUjR`D7iH7IT@O;}X{YQ8uQ*0j=5+764 zW>5YjQ_R`g@4e#dms`Rz!i_Xe`3JA{=PJ4?VeouKU&RT@K;wZ@c2C`7!BX{sXaxj> z9hhA>Tm;XS?nZ>B8@E1vrdhOVzd#N*h{{Sxsk~H4rKkU!evYR6co)&-h%zA8r-7z( z;xnq-Pfo25uH7bfDC0jAhrpnB#t9?n6V(~zc5%L~PJqf-gxo^eB>Wclyu*RRACIN> zEI&dB&6YP9TdLakGvc;9F%1+whbCq1aCjroZN8^>=Lyx@=kN{nh&gM#NP|h*ioc{2 zL^B-g(8ePuIgFkB76P&p?qC0UPO&6Fh3H+d-un@?gJ^5E5^x`y`Q(ra_Lt<(((JE4 z*ivT*mqmCp$CC^j0FWcp77S0jtm5>2mL05;>>YkH=F|MvkpiSXTm@n{(XG|=e#Vsh z=-LO6+rM)*3I&43D1^#H1bdy)F9_XHH{285kT-*NTy7jt-;;@)#{D{slQ5jb!o&SV z)1d~V4MgwU3jXckvs{<^VkzuBt{UJK$N{DJIjtwLCRemb%vqU+gN^$>9N`(0$E?3d zQ})qqxAWJd`9zU0un}dg^EHnPaFvYC=mT6-H^RH{)+9V1#^+cRN_~96{Nc<^X}|Sx zk2=g zLcFRU!kUFPy{Y2hC`3I3Fj4TPJK$x0KKg$7Fv~VIJ<&l{~IpR_K)eS(q;WPq) zab_t+0FpCr2^qvR_REi_LwFr2+)`68*cALvUWi?{`)+`l@so0wVi(4JdJ!K$!x~u0 zOD;TZU2&eGsWc+wi?z=$Ne_eJPO}E$bYh(cIL=LZuZKqKdTzFOohZ7GJjg@Z2f}C6 z4u^~Kpg&Abu*(*KUz%L)4cQ}HB=B-)mq3jiEmB>zfn#tL>tBPOkH>?Q1MFg%`%i5L zjtaP5j?+^XjLFMjp{Zk0aNSMyv+=*g3`&3%St`B#z00!>`|e}*Nahq?xpnd=tthBp z!Kjkc$f%2%jRJf($BqNHzrId66L0pgfoa}3Dlp*V5xAHXE}l}q=UFfb-|rAcV$i+4 zCv?-d%zI~X*YsoM{97DhuQ^HA_OKsn%P*^i4uTC{;HyacjqUOM#mRgtk)c}M;4aV^ zIIJ_w?slI=75K}d5UEG0Gxy}C7l6^z-m;;cf=kM5e4L9mw)U<0;MCJT7eR~irj?I8 zd??P1<@9g6obQ>e2rFWgS-DZ?AH2&gCktBbfYT_( zBvtRe+eHmSKfe`*(28T{`fMoW0Sf}zsNXlccgwX6g|&$UBPz^?fXK~-P35v|`ffoO zyU!enEQXZ18n$jvG$hxr@u_Q#G`;^BZOvB9@_whYFQuLh zCR15%o|wii{skwbbbZ9|6cz?=^cPbLpX^_3Q^DQnyS3#`&O}g z`2x(yhgYu6@l`J`5iC5osfts$!WuK#U$SnKXG8T8CsW@6D^9)0$Ph`S3gI?8-jPv- z61t;0iVpfMJi=8TnWmbSuBaXcLKZUBMcOKo*DYH8O8rfW)YiE8L)b6GrlT3Bs1z^I z0AeRAkaGzZ)bV0S&3fVboEM5FEM(z-m6wd;&s zYCgrU@x5#!LDF&)FLM`|6n1#*Bjn)yxl9fcVtBT}S*L+rc0(8txaOWNd}Ami;#Xpm z7jT*@OP5r*`p-2&mBxbrdAK7Jp8o9mgB+5>7b{%PRxlm7;-aT^xxntp`b(Gek8yPJ zB8~5p+J3F9KB*9K#Ju0T+MvC>N7WD^qi?`)tn4k;p6B6oNi?+8SeK^U3*FTN`)#^% z$k`hpUMX*GMes9FX}jUsqIDy-jN*H>7nI2C=te}rmtLN!|HmojMC%2TY!F((WdvEe zDs_*XB^x~bk0=HnDRd&~Z!nVV6vdyp0?iV=Q#I@0au7fav2(WEP#`r(=ONNgcI7H7e8{M}Rc+c^s9{@qE|-{|9@f&IM{rBo&5V8 zaMykJ{DQ2#>3ch0AdPUT;u3_dpcWhkP6H4Fl^HAYC}qI_fa+Tx0C*T9Dtvec1zcT8a-KCR z5McebO#=XMG7tdiTRXrU12GL|{h!j?9eMwAoCYA50qEmVlQvXU)FC$c`SI})h+!}c z00tZwF&$U}K?jop^Wc0lmYY3 zAExPHF6!ZW4n?R)rJ{eEC zSQ#g+w@ZGMw>&V82hli|FK0t(Tkf&EM zsL%)1sUspRB`hV@OZJ>G)d%$w(X)o86+cKvmDknN)aKQT&@w+r{27dQ0}U!i9j+82!JFF1h@hbSI|lillygn!^JpK?En-J$wCSnwT83;vyu*kprHZ1t0eDi6B z+Q5F7P3Vsvi>6n`gpyEsEHsz{(O|JDM&V~Qu~*tq%;H3=L%&1IQ1^OJ!WWJ1-k-Ku zy>ive7HVHAdg?HR^*&FwPLe-3WELuQn2om{>n-x`b`^QAHg2pbi>S9(RIzF*EpjObwE>fu>|yF`XVi-$lFH1rS7ASLQuug4%YN0&2$r3V5~;C9NdV`qOFc> zfpS>qj7yUVAe%ZY;3Ela~V64kfoAGW>!`T_lH2``Ln6-x+d z9z%#i)yEjx%gYhYnN8$$%Cev+-lWL~%=a{_p*yN=?FsTP5ys!KNr>(wUYzw8#4

    R;|6BR*vsw`xGlcv99Lkv$5{kZ7~ffF6RTjup<5I zc}XIhFJ?%~dkvx5@6$npQJn^6RJ=4&UE0>3_CB?8Q%L3om}pvK?GvbGgx^AclY%pX zoyFWswqL=#a2j|Kbd52TxGh|&pPI%iaLF=Vnzi_L3Usf0VmmKn5}$4pG{tto za%1sE*U9Es&bRXV;O0P|54Aq>dZ05V7Ut^yY1>bFaKI}h(#q#DjBr2!u_-BI1S1V& z5ONSQV+75cVhD8@br^9N^sO8eL=ypypbevrc)N@;D#G>6(1rWsS>rZ}Q*N=MM>KG# zU;)>J{7(upiKY_LCiD;s8Ve>)xp~fV17Juj4!w1Xb&5POjV&Tkt;Cmy=0^#&S7|0_Mxh5&M==j-OfUsvhb9q(K$5lL^~5F2 zY4B;JBM=x>BZ2Zs3Zw5B6M<38z3-R_lC|h93L=8&(}K*?8JVMKkP{-4K!gOe$nv4k zw6y$4Q=mDQ<{MxhT2QYE(+l)LD{Bi!I$dTbX^cCh{Lzf? z$$%Qm%k*E^odJ0u`WSZO1b%?2d_27j%1ON$XV&fx5vqf{h!(FW0|#7aE+(9I-t zGL&7Xd2IWzKqJpOQ?ko7gI%d9DrLbeQiyKlizW|fuwKLs4goV7o6}~+BV;UvNypWo z!_@EZ3S1c}-{>5+pz4e%;@9j{Po;9x5_Pnee{{wysoDmLl%mT2#S(n=mJ(hJD_ezAKSRY81O=r`N7tQ zYaTIUDZfxt!qJHxr&8T}{nz?VGk1x%uP^w8lFn8kaNI3aM@6qMb#xR+1ww&X7sw zdK(PV;-=E($$51$Cf0F-O3cy7V_`wPqy)TuQGMomXpr&(QZ#XM>$pB%!k`&x8=0U% zX3E`q;z~Y+Lgs=UgpuU=m@@O^w^!CntlCSAFkZeY$(XB`CbiC`F`0I!^i9c7<~IC?VxaJ_U1cRsE!ppe};-M`x7XQ$v1{EhT(|zX>u!~ zW=5hX@t~n*py9R_OzT!OhNdw^X{jnj<45(%Fsf@31S8YSRh8?|@hLznzM}(e(<4%B z&3WW?2&Gx*&?S0Uqk&PoaY=LE9DDJ2xFQ`vb z8MP8ZQc_;yxmTT0T|$hx zgn(CLUIv%A!n(YGK7rPaXk34R^<9Ff^@4Ojt;T(!x$U=NW!pz7XPG~jJ`m^N z5XmqSiTp6&?Tj8o9m6@%;p{q&emZP9zS7~io{{NEtYnhOZ#l7JhQ1paQXfXPv5o^I z?gSm2 zzzpshEM)MY2?TctZV5Wf;O-vWA-KD{Tke~CzyE))rmMTUy1IK-t+qO6pS|^~ETYmx z>Mgo{a^X4ad1tEE`%Dc_hejnX1dSRgml-CPDp%$pcXz%HBx)4lwCSSB8xmOfWL%q~ z8UZoXBc62SQs|-{4w^D5n{0D#FyOQaf$!quE>l*Hxw(m0_Hfj6b%nmJ9v9*r&K``m z9lmFdTUTj`Z)$85O&69_|K8xdOzFH>^E)?6rYA_=h0XFy&npG2L^idq59zO1G3C%P zDS4CTYTohH(XOP*xRXTFghhTAFj9&wYQzL(=N-eAZm;7C_tp3=}pT`s^ye-+4+@(TBy z5JHK~Z*57!i)$IklgdQi8f_e_;)2hFs>aIl_7x!|aU{vB;A%{|SF=M{{xV$XArE^wrpRW5U{wv5&aiNdh$<8^5;j7biUL;0rFwJwf) zK=dA=bWPL~q`$p5Vg|vy0F|`p_ ze*PbITqo7sslCT%9%e%~P(Rry3hT&7(y8<7+jtoD1A zmC-KYCgLWd`O<}FFrQ;9r*wZ#G+OGDS}mz=X@1cAs>pYG#+XJdD-Z^!RENe7^@P<& zAvhK|oO;;ggP!HbVCOgb-Q)&}n`qGtHjy#EaVTYn%O>ho>lF8mFb!;|!^wFzGUAjdwaRtO(e!q>X>X&PvVT!2iK`gL^|Jy;U^?g+^N1f5V z5zB&?Lxb$R>~L`Gn6hmrVNN8-V)j+ki^PDE4BJf=yFNKX{;c z&6xCF{Z-Dzt_Ix(RX-#sh5J3*g8@pSi1lF)nZoT_LkqF&-m~F6NS(~w(ooz8BkSUX}nfT4Qkg;~H ztjq}JM{I%RmYF{;WuDeQ*@NE|)2`_VbDf46W0o-UR|(nEEhRes_U7}aC=Paxl1za> z`n(0HgP-CvzNt;OonSD!fF)(PoW*P2f|6HfkU`U8+{CR}6htU?v?SP}n; zPI1QC0;j6rPU%NQ7GtN$HOF%$U6|H93#8l0*B~iAr~bp4nfQK9#&jo=MABclnXS8RMxXI46*#|KM=x6<=aM0n=M^tbJL9Eo62@|%qu`c)!hD(~1>6H3Ur zG}MXm)%nI~h-rj}__GtTwrFCag)}%=d3kG;Ya)B~6=OM^$7m>pNBZ`+`0UJkR5^?} zqf3|d8>>D_cyVEn(~ujuD!z8ncU42K%BZx<$Rh6>n50SQ9kTcwQr8KK;^1&jH`ISU zp)nXMzuj3Wf=_AQ*B`%&8N4|h7)EN}w-Ig8%s0R7oE2TUj6mDsY6c?tccRRrG&54DV4D4n`ArT4tP>aGn{T@*ZQxgriz zYAZn@^1KPdKg&jc*16WdqDf<2k%Ed#g<$_Yv(ZRak0W7t@gOs5rIferQEMs1XU;zT$#rXjsa zBzn*Oog`e3ghVIWJTIF<5oX}Ikeq;tlCL2Nt+fk)fyz+;5LD#>sY_sEWw97eT4Pk8 zjss~6_;=VIzLtusLQe~aGD&*qHwIqMph$OGHjA+LeQAkr@*?ejA;!%ac8r+c6)Ar( z%kjx4psEY(T9tOE1u>^HVzaR-WyNLo3oZNXL%9i3HQAoA-Rnf|Kn)JY^2}6~p{yah zh+C;jUbrG~Cqm@zB^;Dq>UphWLh%EgDp_(u0}Gd}e5Q*s1DAud>3rj*P@8%$)J_~H zB8h?;Re6j>fsd-Y2b|rr&c(i>AvzF%;O|wj3Nq5XS5wQ zXRE{Gj3z~BC!rT(8xd)RR1Q;Bg+t)4SQ!)bUn@;n8{l!I8Cif8N{EWUnl^Y9_KGPp zDv`1U7NJQ)^W9UG+?K`I=GKZ;*oOL{K?8h&A5!{a2yG_ewsxhh#Dm(5Vi*ZF$BwVN zJ`5P>ezYO`5Of;2VPz8y7bFkGszWtqe@!({N5b%(wUE~){=r>u`ENajBe4aC3oEP+?06RTU!7aBR590$^gKc#!M`+ee{hft< zn5+5XqNwXdXmRHkC5v)E+l7XT%S{HD+Hdk0yi?)ysUiyO4zP2X9mZSEcoGIeMV54z zy=K|~_&F*&lOpOXKKUeNgV{8q7mBcimic|~e1jtP&r}B~f!m`w0yoJU5b`P1aVWJy z69?=gLVFE0VzvnW_Y>5nkVPzS-EqB8c7fK@b-B z_*_6Aao;vW{DsNKs%!An{H*br3612-;ntQjo39+BwlO*QI!ovbp zoonoa_}!7bPTSxAl~j2w0tI(86Jy}}T^(sUZEY=ae6DYtS;93I_{-DL4h#HB47(3h z=Hng&-9_e?96k^I^hnXc6Lg)Z##M`7wCH8E0i{OLOMpuiwB*-OJK(*$+x)1^u=*;#f62&EjMwA!ZDLI4WVBy^u6sj z=(3GI0o->Q@UhkoWBkMf-FN*7oCh}7swJ&paB)cA{v}sSzNUNVC!+eppUi6u=MZ7V zI5#QqZM$&m<^r`?YP`plMmsfmpSf(iNg8E|>J5i}mCxFZAdGAKlZU5NZ! zUQiwM@1n9BL95v=<`OfRe|+LIy|a5uQ70#*m8ktN{Hx~H?|*%DikD2J>Bkn4v%A_ zs%`S4`r`0n!rdg1@!hii+b5LL0;@NQ=sQ{zIR_9wRx@|6d~&!C@Tc%AYy8Wj9O5%d z8dW=M@$pOLt?%0FX^F@BweR9Cej%E{B(I<+eygWkUQK5)Ov+zAst0`a5j2(7SaJhG ztHt_j%K;e{_n#yi6$uI&Kn((a4u;kLq4-MA;`Y?v*d%6d}qREsfIVam=?G)~^!adNzvoW6D2jTUy5i_rC z7C(cks(SsPVf|YNM0HP<1fP)7GwOUxA=4Nu_3WjLd&~XX%MJJ`K*n1=VXK4Nt9)56 zqbU4HwbUEnEMe7Syrsqyt#!|`_11skbCE7l7M!w2S7I}6MiFdfVaZ~n|6Wls8jj3|5Ptz<_2PT7yo zmQuh7eVwuYzt2Bp&>&w~uc?7q<>(y!IC5TH0f%;>0e9Krg z8aUni96rvBzFyFt`y2! zd0^km6U|RG6IEq9-x};Q7U<<#`P0*n-YNk~t?m!-D!=?GMe#&;cOiHk_I*V1E&Jn` zd|L zC1<%UqW22eoZU1gEbY}%ExDRSbkaY=H7(E%u3C$VV=VG$;tm)qtEr-!tY?`lT6qX7 za8#YDAMTfu%nYdXwTr(yihcaDVYAaC3l;GD>)`3K*Ru^R_^djky1JXq#XkvZ@QTtc zC6D$!D^ECuA)F38un;wXeOI#_o`O@^%|d&d(0V^ZjVzQ4Te4KhP0PqHT5Q!h4IA4eH3vVjMOqNJ$UF_ZpD>=lh8n))=N$J-Eg@>U+LAw=JTXEGt--<888UU&N zUulRbl{}I~01$hq_!MuzU7q01ApKjRQGxX%fu0{xMekIlB}Bi-hyr{gvu6J7D7ZCv zfo}OPSN0lhi`ZS^Rcb07X=BkpW=i8!>oJo@6-mxA65eM$DKXJz#5;P`l3C673oDwA zOS0tO%<>dbLfcRU92Iw<10g7FhOO5{Nz?cSu_sSdOcip!KURxFq92!f-$epDor((% z$_TU2gk1G5);jf3JVV~;lfat}DkP=*(E#e3-wP*WDSL3$2nYzcjD&c)LUHwZ&3iDq zF)WQEejAXmQ(829qBX3uMDj?HqwG>*mQLZJwh8?dQs7aTQE7&_7`doYZZsLS4a`VI$ z7>9Y~03HUKJYA2yCAIw0+u`ms7^$BXnIjfeULIhqqp8MJx(esV`E2d?_=sTWq7;AE zj_s~DNI);|Icy_gx@b`?5dFBl0~b7w-<$h^xhRgqxoBLW@3GZegP-K?uz6avecEH1 zMi-XZEO^tk&^5!bvXTpOj`W=4EpMSxtY5iSEL8I|rY_190yrpUwDVi|@2F=Ujpyh- za#SB>m{LEt;e%U5d?Gpsz84%G(4LMl-Z&bbOEL=-7Dmlvri9-%l1UhGwAjV6QrC60 zr#EUJg`qC7s3S}lz~&uEI#|x`lj2TMc04w%rCXy(ZFaaU z6VKA~`*v}Uz5XS!jf(mV$M*5?84w(LsPly!Fv-U)(`bo7xXl$bfEC0>42CUuwa9;n zl<7_a7o!U+R{ziuRHSH8o|zkaUf9aP*Xr%n7=hRetO`2nDb5A?inE7Iioj-4tyWVz ztUj_ViUOSr)tMJ~Ei4#23C)x8N_ye8r1Te!hIk~rmX~gOVDCNc3!ulTuGTxae8sxMZ8qd`!6xo(lB{HC8;GnY-n z*<7t&t%t`&L6;BS@78Jzo<*zpywcXoAYuL9xdU@i@)Q1=__U-JZN^+K$6ZKwN@^WE5 zXErtaxB_ifXK311|GrkF5?*TQ_T{@dFBEC=hiC5;o=t~dlqsA21=wspnt0yW)QIgx zk>B2)&StiXpml+;b4c~jG!)c+rGqCyI*7+C;(fz}xis9-`lULqqGKl5U*JmBmSuaU zIkRt1;#SWzeD6#(>+=a$Ks%YFOB?$_dxj{mxLZ(684cl)MWjSpD>1KtQ!(hL!G46P zX%5<9X6y^M0ae(xDUEU!53@d_Nzi{>^pE(xb6|o{4QpO$Z(zOCeR#uujA7wjgF7M` zOVj%FMO|Q8eXWzu0wWxQknS7Sw@&3$UpyftBeuw7q^?}XNpm&!dG~#*#fn&y=7Vbf zi)I1$UTK>kA><-dfQM7KZPGi`D8sflw5yn=O`cGpEuX2 z3h#tLunpR^Qcma8OmZAaXE#Nxnxd;@Xx6XFQS{%FzqY508xwHIm>4;mw6(W2(dGFC zILy`*%|jyY-jz4tzd9Q)^53a1-#>unH%pFq=M(Psoz7e7xw|NNUAZHk(A2iiWFt^^ErkD*%;XT<7N4swS)H%vS(1Q{P4?Iwk^801&VADrc^1) zzB9ucDWS`LFUjRbo^$ZY21EZe%~JL511u%$$7@j!#WUKKB{Ff?LOcD(Y?shyo5L+i z#h>agCZW%u)hX~rw0%muZL}$Wc_^nWK<1`S{mfiWJ-yij0I8 zV&T?tjua?E>kAHr^mfm-q_9vHb)zbaewwR}(9jlBu5t3w89~Hw%i8zTux6|;Y&Z@P z8eer5-C#3Y^6;rBPU+e{znzcENzp%P&7UG!DoeyE_L<$w?PM)B(Wk<^ z%ET%K7UXXk1w7GIOz*0BH7WEQXBzZeoBK_?GY>d+Jlg(j45}wA)wgQ(7hQ}=9xkmZ zW;z-%C5kaA@OxO%Vy8{o_vA66P2e$8CVWreQN)VI9~mj->-JQPw4!pH+W`4{-hcvp z*!#O;tB%1J<8glG<6IQ(GbteO?8Ggv$`6*vSp`+yV7fFO^iQaDIH|;;DMv@FgSg3} z`Nl6jA+Oc6u{}m8dN~E{&iU5P={_mLq!=E;X2)XC&oNb(e1NHC3LUn@CH(u7ar>l&X3 zw6+Bly*Oi@?g#>0f$I2W0tcKQ@!1~j^F$gK0M@WMJrBt%Q8H1HXAWSkON?n7}M@P9=&g+ko zvs!y~+%!@!{J}vHcZ(?6>wAIL7W>1cNV&1;zP7Cq*kmqfPR#W5qXuc?a9ygGdk^jv zu(L8YK!Uyhw~J5DQs#=Q$3psMnNz;g^^}NlLnD-I4%=loQotE}eYDU%mP6~MSbQ=& z*?rV!>dmBWJfpEW+>*UgA#^*kbbZ?hfc)#OlQ#Qv5br(H(8@+bk6&GgXk8|(HR26VPavO zihN0q7U)SHIhEpke2^GJE;Jn6SX}$-!*{@W^u9Xpt;0{gAla)RbW3 zNR1gmTqD*54$e~?WU^gTuNl{Oir=f2>q&Cm=|Dfua`BlSKX&nLsR@PvgEwZ+&uhQ5 zIohp{Zb&dWKkmozPKMHG9geM%30cJ9e5EgrX%bo$@_gF@bn6&cT?$*~oRKmm8Xw70 z$vI^^LEsn;=g91dE%{ZyWpK6GtQ*z z7JgIGxw-C~m*yHhjo8>du5=~umT}=~e&4I1T1BooMTx5vrXZ2Kxdm@voK2Xst7kTT zngp}RX*`;3lplh&hs9R|LVkxtx$Hsb+SMwEF&I;E; zd^D;M10>NO)mb+^8k%rNZqeE0>!@xud!$)4HLAc;zX0 z6TE69!mqk=KI_uL^v+rM-9q7L5T&IQsw8%}_ZfPF%%uN$-OR91Q3PlInoSj@?^2c3 z7Oj!bexY;@5wNCkapVlr&Q(@w18eQuU!i7_cf0WZv*8VaoYHKyd{?GPNUgQ{k)QLl z-(&)FzUpWeI-sR$@sND*_VQRSS~RGll;yGWG@Hh6nvt-f+$AEsg3x5^ri6y@#N_Lw zi;G$Awft}x>^9?kY^JM(qVF#;o-ImxB8;0$hWX9Vj>Eq{Q$%qp4srB0VNZPbMm%QV z$0%YE1h5EK@FQQZB}5VMjB>nolq2(;imNy0Ytog&aNR!Jr;^SbA03tC$NcVziw)n89a{pTdf3$oe|7;l>^P=m zh;i0g(9#JtEvFFG4;MJx#y)u%wup&bT&*pNMYcuIsZ@p%t{+%{$XfVNvHk?|p+!!K zqyC2Tklvozgy{e1uZhfgQnl+HF7WNE&+ONHOaE4!$z5QS-e428XJBNC7)blR_(Q9v zB-}Ck!yLFc1k73T3gXJ}>Va7>Jc+dFlS5t+dbOepVHJ~g6RLB_rZw#8=SlAXJr+`j zPg-~wKu6O>m$;-E_Dk9?ErO5TE;MLk7Tnog9Yv}Z zlFos{VlJLk`ducdvka{((1MDIoCAczI8@2O9%x>QR>opOt`JN~j@?-qmdu_3!+3tb z|C$BZ#2%rnpQy9V2QCbhHPeOu?wByv`dWMCA%)c1t3{or9}=z~vKBQSRh+Dv0|Oke zXz%AjaxE$F$t_%UaDL^wx^vnYPBgRez>?Kx1Q1X9&7#B1WN8S(>Nb=`CQK#_UWPS+ zJk)1|08am_6G5xM;i;g<$%j1lQ6V0qKK(Ppbl5Vwiwdah9Vt-!!bZoA?;`E#f4A znqiaR`(kd(pd-LfF(@I|ZSddAq8-rV`d<+`0CbJ~6822&?LMQk8&Vmx34W2WEDr7{ zHgo0jgx>zS)sbk^^yDTl>P34B=P)%aB-`oTS0XbWWiWcoCR6{q1{(z5lae>%XlGIX z(Kvfmo-b5li`+1SfvTr2Ph|!slgCm%*rkItmv=!e^BxxyZ+?@-i*#4Vj z0t0OgLM?1<4gOuX3?!5e4rT}++CUl@$blrp2Ptxr1a*rMl1!HLG^Cu-L{Um;uRq#~&+x_m zar7mi6!(5KA z(?!RgDuoz#>4F)-FiZJUr7p+br1{n!IWBDZKEO-_PZ_Ixg1(4@V)aP4Z7+5zo1t5k zHaeDwgGCKL5pzFjp^XIUAcdo0#;8q$k594gt@(%DkkLQKGBc=~unkaRkq#d$uZT=g zMx0E7Oc3A&o>6cB|AD~}fb=B28|-)1B$%u^0tkS5WKm=WnGmAjp^iW{FMt4JD8 z29UyBqGS+Kg}7GHiC-fwQ+OKquOC4?{kC?z2zzCvWtwGGv}LCYz!hKz3sEQILs)up z8UDVPP9oUGI1RfBeBPHrxqmtF`b5C-r!7o}b`h46}3MQHK*_{k2ZzO-wJ%Hqv|3c{AXiOCc zUWcVdK4zY_{U*Xc*1|t74v&Px5z6BK=5)jlQGyqTN2EoB>9>gNp59GTjg6hOp*d6*s#~m%|vAa=SV&DsIrw zSloW*O+X{RU`INt9cl4TE=w)020%Y1u@JjKbH}3GWQlo8dw`~J>f(a4DcVTYq=P;* zrU6L)>+tuo6Qnukvae`!GmNcF(o>oW4<+kOYn_)&{f!M*#Pa^y>dOvjXZ`$yD)|;# zAty@4@ZHp%LB#3dOcH*3MU%9(7d@Rfd)IHOFY0)o}tJ{TG^iFV-jDC;qLyJv>jp%+*7WyySh@ zrC)yNQ)O(^h>NQt=+j@IyvLM~?_cv9P^A|Ew$k&uQ;-)yCH)?wU(55>#)e`3b}Tns z*fi&UOLZ)ugY&0mp3u^$&J^67zE^?0TEgS1m)2&AUnA49NJPq~Ze>YjtsT5V&j;Ki zNJ{LqgkJA3T_Hyhm8r>h+R+!Xx2du4g8mWtYND-Auw7`#iU=nDN(A7^RktB=VM102 z*6w2LRoNgxz9#6VuXy7Qx5Ji#QNit0>eQ5hfm)c^_+9>VEPNIDHpN>=A3!j&T;oCYW0%F7Xs zj0C?&_~hS%NqikEDb_M#eF!YgYkfVQ(=2hU{@e zakUGyn!KyV5B$?9#RuYsOg}{f%D6tooX2KJ3IJ`h|DIDfHoE{(1K`b7b3JU+<6b|h zA2t>xy;Ak3!|Q`{7j5BO|)bOw(Vq~8EUm``FcSG>g)Vl0|XwcR9t8`gHc^) zrfpVXiB1MhVCOq@%+l(a6vOISLo4+nzBycFDXFBj!?>)*WvLY=?rLLQ(!C`p-tA5W zmb`~{?#BW_Lt2Kcz1$iB9@D4M<~ug_mZCdazS#P&5nPUJPmN5Xds*W24XY+EK&7Y2 z-+Kp|7z<|=^+cyJFn=giDmE_K7uI_=CZgJQDB%Nyx^;p4L~Ngoh`d7$D>mBC3~L*YVl9@E1>KRje_mH2{D-4D{8n<0bxsVOq@J( z^xmtL7_P`H{-bW2n1rRb0&W{~OZ`8BL~qwai4xYXNk%Orpc3T z-m9IVl&Kkw&%Y1=P5L}=+w=a-c*_c%&qdp52Ui_vz*n(&k7fZvu!THwP!WFXs4L3! z$1TS9jI-%DZWez=I)k8A>VoM2gc=R*)_L*4x{?vr&X4B_^drkcS;|Bbpu^B+T<1}LfWIIx>+Z!vgEQKcmd>Wb+WlF@4I&Jj zIT$Hnr1JHJ+}<891#n1y9#0^^mK^s|p*rrJlHP7SD@9$DFx*1y4H0yM<%zVo*SrSVv}WtBfymguVz0(wv9l z9rs1lX%g73+)RHp^f=C<_PAUNcDThj>)Dp!i#N-bZ601)s>$(oEMGC@fjVU;J&0ay zjjG+OLRXXhBeW|rlWgN$wpVG_$Dd+Ja;xU@N(b}2YOyBvQ7Q-ItD6!`d|wFO_An` zU{|5L^$1CT=WLzIcGd|B8jV;u|H1)R#Gmfd7nsy z4x6>OdxFMRNr?nOtr)4c}G;TCCDF(wFJE?-Q zi%HEEmgI-*obyJEa|H$oI=PB$Y8bMtM5=X~Xc{3HNY^ScI)=;;m4=A$EKA$B@&Q&F zyPs(|#(R#AfekGD!}`yk9FL_HBDz!efKs%mVFS2q6-&g_HyeYy1>@4g4?Yi|VWW1p z$0hfx^}VcqbxK!J&r~kc{S6n3Udm{0T7B1mlCmv#rxp?0As+l+VNJ}g3@XdFp>;8d zRfYtCxJq$o5YUu_yN$Y(fg*27bOU7ffCdt6(o{aMq++^a$hDl)mWnUs*14EkJW{zr z<#a@wbkOQE_t7XbVM(=HV2*O#LXFA)Mf>DX5>!Mw;{KfW(93=)BV{SK&n$tl82@yb zhWJKAc-#GF)Co1~iCy78ZPsvfH1m%^dzWghdpkWQQpL~b$-_s3)b9M;_3O~dt_lT> zjp6+L$CpgFf4i?+Q(u|4|G*|xquK}m>o@xRd-EriG*Yu~G}tAV-;b_$ewn$mv?_U? z(4Dz^KhC^6)6$c)T01?iy1gtMKUsfjb^$r?ay~4!*H*RNUbuk#L`Ie+D@Y9dj3kKTt>qGN`_ipkEKIQfsxtrpc-7V75M=q9ZB^E?`Kw5=8Lte~Z z_C;}$;6-b<>>osP9KUzMYfI9a8mPAI?Iw%h+px!`tDocd=N%l)pzLv_gW-mKcUs-> z6VNpff5F9bVTNXGnTp3MfUfJ|963|$m6wixn)vdh zv~wBNyB{&tVnprlN*qsUB7w43ur@6-2&*239Lw_U=J2C8Zi(}& zKy|SG6$IlAkdZ-!4)xu~`u^Hml6hUb>o9~|-fSTH%VIw*FLgug(8r3;wyD&Zw~l(r z@*(Qs<{{QGH3#3dCW2=~c2)O&e#iGFr2(Zh*PLGI8i%4TS4mWOBdB><+27U~5 zjL`EbA=T-A|8k?T4aLqv9u!K}yngjh8u$FGdm`ZJwvzw)ZHPO@2o<;*4Y~)b6h?9t zLZbIOeo6V-ZiFMHVd|JXvkR~1hdE0#luGQ*ZBK4_`1CIIDjS{bZYK|q9=@Xxirw0I zXZZms;6*y~FD6B|Uy$Bo-3uA$o3vXrLAMHYA2wFhxkJP~lS~3VBGhcvF@q#aQ)*72 z1Ab*l&hy=oD-q_A(k+G^j4ncjGx z5>tJfN)#gKueehyt}=Y2cq;)7B*B|4eWT3MYN# zzGji?M95v;1s0N-BOIjcOto@1C@QdJoQ7oVV~lF7->_g32Q8yNohG15!peXb4us zCM{j$@U#$)&;mqMc91KJv_wG}(txza5dCBCiMH=iS}Gg9piX27qw%a|%w}qqjB5c8 z2fWc8Ux1cDc?(d=?3aud-;EXd(=xvOJTPD`2S8RS1CQL&wk3WTWSK`N22bFkJ+hUe zkf{O6-X@I*AJyDc~3Vn@(2@yU@fB zy9HbmDV@*e=dhG~VhiNix07PX_noKUU5sT627hUz2Ok}ozZ9v3Z_W4P%{~&`%HF{Q z^U9HW5%7X!wS*8Yi}zixnRo$qxGcBp(l8zAjznlTRw3XYVj4mXmUj~Yl*(=dqoC6S z%^?|KKm||ogd{Qq1q%>xPM<+M;GcVoyiEhsg1{?K;kMcyc$Tlx0m;9?by)a^?-F#p zSfqT1a>zg#ILYda;5p<+hXC$d#&rU7ue^#e{PkY40G@%uf-uG+l@c_r86KpkBBWYH zttOBx!m|?y0^4a>px)zkg@CS+i|IP0NM_W(|MLAlAtkk+)3u&V-vC}DK2VXGXbijR z8fCEy(9TB(L`dJ zO})L8)wL(D;?!~sO7 z$|IsEsL?oNJV}%Qb9CbJAUWz6?_gx??wD6y?i9$)q^RTT> zm0jWvE!kEry;YdKi~)QdT-eKEfVL9h!e)GeBR?pM zC+Y2;1_gYO^gn;rlDwZHp2tTzsaSqeDLKcY@=ts6bE4R1M`tYPwAQC6PHrF}){i3N zr4R*?awsJ8{0MPJd_06THISGkBb>(tVF>Ul!}^A2HS%EK(jZfP4v9>s z7?;yglj|zN=u3-O{_|UBuXh7{#P)Xi+ubjzh7uhelY7+n1QODnlJhU$P~RPbci_z~ z9y%WT+)uE>-de6@^M!JSvEM}UCWkIjJ z0)`VxQIHcv-gXJ_W^k6>k=^UvCq(?AJMe+SXQ(9w0=Xjf{t(U8=83)%%Q7jT`br1(L&5lKqh(hbkqOB= z8s|fU@`;1LLrwb`HUL$ zh*ry{>HwW3xA*(ZtKVzcYkCUZ$8po!2H$V4;Izp=y3YOUw z>8UWBhhD5Nb>fHF0!EX*LqF3&u3SY$BV2HDR8u7`S_HQi%a(&f$YW(|WviB3vLN{O z)j$8E+4~9IDmVuy3;#csy}$o|k@M@>34&(t=AVFn{-xPNL+Nb8ZGSO@~CX) z6c9YH>)<@P%+NO^B=m0|5Jy97!ec{2%#l@X;}MHj2!^`}Jbv<%8LOsFPmX#T5HsT2oOWA;%;Cn!x?`?_WbSLJ;Kr-=v)su9m@`&i8);xG_i0 zPeV+p>SiMiQ`1d7Nv6{UJx@s4sy!#E>THRbF;m)xC#mXsnrVayhLd6$29xzCrlV=1 zc!`-$3S`XCPfb(Q+A=f;sW++WnA1;46sUp#KtVJKsev>UYIvvUm{Ve&rkbhyRE zsjg%gu(Jiu(~V9!Yn>r_-MMO|dm3hnWJAo;DQwd!Roc@Fy)0Q3#{V+&rKrBVvYT}A zsnXN2FDFkLo7qw8%c~dZ7e7s6U1+@Y>las~>c5}Q-qvlSoZB-=roMYl6J8S&Ih;3| zO{SAl(wU}|+MEk=)|@$2PvJ3PWWi{<+^aQTa|#}qv~NptrhwSO#w(-Bw(4T3ZVNYR zWj%G@Sv(CzsXPqOx%u2q$FtU5?P=AOC~5^D$Y&tP zRFLL*SBc7VJ2>m%)#sisH$2pCuQyA&#c8F=`e7hR0}_igyq6lX!s^!v4r&WG+(ngS zRl>1MROv@0jB(|bnB>MH!wyCTGjrVYK=7}5yft8BjNTw)T#Ao)0x{spFCuAqv^84p z?8-qZnL=fJeu1p-P$OoVn5$zb(x%2so2Di5Wm2>1%9J^ZX)fjvCQ4jVr4R0aLEA!3 zD5ZYER(?>Sgsz^NhU--%bC_GDP{Q#k#g$6^CHSIiX-;LDoywtu{zL^bCiGVS3qnaA z@g@sou}#`%-M~{7%~L7M(n~U>9bRJ?3B$)oo9zQ^WyBOvf8HI zGM&it(&-ACRC~(Gvm{!|olQ=IofkdbvkbqpMVe2%)LNR8Y1dPePGq{m{o?#`R1J}I z)ZUjhsVax@3)Gi`;*}_OMNsRDW>Hbv7ZRPtJmm~XZ>?2TRaI43#xaalR!mH$CQ}nB ziImD^GMPp}kVrBK20U3J*3 zW@WWguO&eD(r8KI3-PJ=rSiL3RIghY95Ztzp}Tqj$&UZzQUYtl&}};p+v9T^nQn2fG^TcjMsI z|B?0sFAneam1sY>KcEzoXY&U(f=!13=3BqqG#ZIH2LZD|g23ecRw`^ZlG+KzrWtaTeAtM|EGNZjC4(6yl{BUmVq}(8Wmc6l z1!hFFRY4#l0Er}^fhtI%iYTfpF<8lrn8?EmCJ8iTfTBpk0F02tkl*hQicZi*U%Y87^UZ3j*^NMdl;Oy-K!aqsp9Vy*8&xai{q16xD~d zIDGuf8CY1y%q@e!e8FlSM7QBg7#kL(w+kZBXg}akz35se)USvmH8iDtO2tb;OGLtf znpTB?(4!3z7HV0gX-o!$nqX4R4Jm-hO&Aqsno}xMOG;@?6GI6Y(wb95S}=nVr8LoL z8ZnGQz0TBNWe8+a<3i<1>KUlbDg_xOenX1sR32qpw zE;V3Ps8`k#BIH$Ssp6Pc7_OLBa8mT9l**q9ZVZier^#OmYSNz6#XsGwEL6U9!F=h- zPrSCL1zH!+N^eaWGGdsfDeMujVw6k`LiGy3R#YqLNn!B|`WVG%yoUFcp!C7PBc+ z21^xXRu+W~B(PaiLdF#_rBuqM1*s@tWLOvzMOp=676oFapjriCDWywFsfiOntpLqf z3nZ`%DrqFuO(~hB69~XySTHQB1Z7P{iZal&8dWTbFc=FejRW!v0?=B61z2FQ7J|@C z6sf_@)Vy}fvl?mfFM}Ooz~Vk5fUEtuzC&TC;98HMI1R>wfLaWWXtWz}PGU?Dy9qxe zzRsHaT48zx*!=2u@jt?w6Xnj}xM!Pi9SiT?m&!hcF|gx1GWDhOpeet3hX;Ij&la7J zJW1s7yk#p)jWG6f`w8Wb@r4duz;GP{%sk2X)A$uXbp3X%nZpm#)t0SU!wp|;P71U) zWQR)R)m2qhRaI4FlOjoxBoGk+7?FY~A}9(7z?m5v4MxLZNSh5IA)J!2o_X4A*u1`( ztvW4d)m2u9gEdu3xx6;bwmWrG8<%J}qL6B(F{+~&scDB8!EA9-nAKJ>Raa;@szr@a zNHti()(~-0nAK9C)f9tOSjAYe#bhLagpk{kAXy|$QcIPZnvH7MX)5DWqPM3)?M_tI zn$uo`fWW|DU`en%0|tR=7%*if44NBjLXn_ig@COBc-on!^zTfrG}f6qQ>8U7;dCxx zItzm4oij|+6z5M6X|NX%t$|z(1i-;$sey1!v7odp(@c`qD_LO`r6VxQ7-CCcE7egy zdqQmehi-md9W3KbGmLAz6PNEXj9^t&RaI48fNtfUX6`RuF|#ag(KIH7!niF~i*>5i za9b@`1;lNhI=AD)7;!gL2+ZlkXB5ngoY5zT35gBuNRa>tN{T{Aj{)F7=e_JmPkY|@ z9QVEOplY%R9|^D&Vly)`1cqcpMCWIoy?JGKcc|86WL@4yGBnZ#vrX@S>3rpFc7_y8G#EBOM)|ueSAZ3dId(X?0IvA>VxGKz5M}dN@#Z;=O@32*v zs&v6tVyZj1D$G?nV5>1z9tH}t6;aOxS&FAT6=o`y0T7vjkmQre8Se z)3*$1%VzPnM9z8i>D9Y~UR*a$eWO^zHq3F=gwF2V z*xP8~;yChc&C)fFU3_)t8%Ew8om_kKjO)jTO}Ms>T*RECpFN|*YtO7n^9uoBECqpJ zuv@_=G9|yVI~T0OIvw?xlJ1&#jYqZaWFWjVZzY{I8#EIH8z^DF!OH4F}0&pgA6d#rsF1U zrt@U0B1~&=9FT3cMsvBuX{IrTlP(Ek2H~U}0GPnKsFr0lfanH>LTEK{7#fWy9u7q@ z%H3>nrh_Xftj1bT!E`+zalcNUGp9c;?`|D^{PCS!w)!6)@5G$6#{5-527*;6j|e3M zWF^QUG%rc$(uCmQDtr1di>JKG^q!O2d^l$cg~F;DLlDn6FwU_I@mSz#rirP{CXzL# zwA8ky{0ogdhf~)kbC)h0xN2*!)AzIDEtA%MEhT8PnwezHOtYGpuvw6?$S)bD=5Sm= zZtm;lO!%Tqro#S#Vu@i(=2fBS=h~zYe}MYFocy{zn`XeP6za|!ZH(`OWDTSHBL3aztgBT~#eFLDrUcNyPITh5 zFuBtd;1#eJLct%Z-U-P}GX&$Lm7*xIMHEp*6jG{-sus4kaM<_X+0r>jJ{zX7_jL;R ztr2+%IiS&GRgWcs%*EJu&u=*bl;Yl+QULBF@f^*`cJoOSx+ z>>RY`^EBk)Vf7vO4)b#r`<&+tCNVpd@;sx4+hE2R<|^VaZO~L+OccYYEwILX&C->mz5Q0?WY;c=frr9I%>MJI9e3t z)z5K~orX2z!=nxHu7*tR7{KkUa2gI+8V(K=>H2z<*e-kdYSW^@4RjlFP}pmxd3Z*= z`0BUa#j*~CJ8{tlt$c7n>(5Ub_T(`dd2^1=&Kx@BP1N?YAx+Q-_aV zH|v!czOMz>m598**M@{u3fe1w%%ip+&^qrz+`xz_a#!f@bJ$&O*`X1$*1+j zihlA>&{0vEYJQUBsN8DlMZ^osvY7hNG*=#29+i8(rfPDgbi&1B%S$?bvrDMb)v($L ztP@>hXQS?p|9+Zm*LeI|$JyGW?OPPo;9zPb!qjN6G1zp!7ti-7b#}({?BF@+V^^Vm7QN_TgeFnPqT+dKExkqolHAhEISjIXH^P=ZP)7Wy~&+mJ0({7^@=hE0~PaTJn zhXu%9vsO5cr)-X=;h61?+V)&-n|XSJEZhC@r*8!~e@HcZu>J27)OXxvmFdnro>ju0 z^*z~l%hL4MzoPdu@vE*5=&=)Xxv<;6UK;psjcpKp%yg$NFDmk>@AE0i@Z{sr(^3rg zMcCigH_t~_cm~iM7*VrfxN@Q*MOcXyVj?6}h^oXyNUISdtVBeLu@Wl8L`bVPaJEwo zv4O!nxK4$-tCMOcXyVj?6}h>=!UY+!MlTCu2-wuvFE3jjBD9@e?> zgFi8w+eow7=aE;NmuC8n3U(Ms>-$LK@$xCwJ{~x@qs>cz-9vHD5xDk`1JJ?`roD!v zvE&p$nUj8SL_~_Q5-QAajp?s|4%`iT4K~MDqcPf_Yu=Uo5}(g7EGdHum{h|I1@}QT z_V14wG+IjIz4_qhY)9`*yT_>Z5X{SkzH*e>ShQo%xjO9ptP+(Y1JaHN5<(y+qBM*X}aoBY| zc=UQ}!P;FTVx6+-hH-&`_Q!n3IK>9tvgeDy#(c$>kj~hRe7SM%=T7wYJQU^C$Y9@( z8yD;Wz%un=fI}8 z?7Dls$C~sh(~NE``Ml-V%cX4a8VxRb>NxVtUH)F$@%%U8+uU7_W4kYaTncw}-%W>7 zT6-M|czsd0@H_C?X0zQo_d8RHu9zJ?oeFdwqa6nkw(diWj`8GEpI$uwYmGP#bFkQR z@HsBWwq8%Q*pu;;_frNE!iEKg0{*I=eEuA?&rfdn*Vt0nYvgS2w0z%FpGG-HIOnH6 z5#!E1x=L#wO$-fMK(k@8VB8!)t-XE2P4T%}_ZzL@xmzzW(=%>LO`i~TgF533F>&SS zF`kAbtCnF`2=U{6difkN&f~vzu5lahyE< zgPFHiw*k%H!_3b`j``?QMsyw{(e?G_!_@As9HV2KKbhsC4&TUUZzkC(%<(u*MKQsg z+2*?IYiOpbVN5B7Fs5}uq^z{s$0D1P&z9~AmJdpEI7Y3by*k{#WLomk(`{aQXPD{O zr^mZQSgr}j=ZXl zMLU$`933PbFpo{OQ|%+t6;n&@>t9bHscI4!9POE#+dJ)8&zjp59$;GW{~0Ps`RZL zshMPZapk6(HOn?hqkzN6Vf;)-i1OLI^vhV$(~xo)bt&L*Def)|W8^J$56?zo4xcMTzfp1PTKl; z{jDEs)aS$K?Mn3Vvy5XK`@GlL!aZYdRN)Q&##RQJ&vHWc=-N%!LTnuOa?et2lZvBQ zWEe%9HgMy5l+@@On%Uf7WSh=qqkJLo!N8C95(am&94Jq4#$KV zoJR7VBSFua4rfWfKQC8Oo1pYTw`pESq;K1}>*c7!ndDPV`R%}SWygrb;#1C=>Qj#t z&xq%ar+j8wlT>*c;CI|=8kPRAm7G? zIkb;G`tw@G+)l{0wdByJAk%igaJJ8mS56Vx+9z41I!!5?r&Jqxl&wg(ZpXJeBWP$8R6xpwb9Hhl1pvrkiLg**=A>KDBM(2NQ$kHSL!yJ~Lmhw}PFio_)OV(~fh) za)2P!L_Tz})EaP1rdKBc_COJ-&=G&>ZUpy4#a!~Yi8~Sz6F7cO@J5!+8ICYM_ z^=Xm}hk>b1oq1Eh(%eLI8u(dLB$B$+-?%1Ywj)gl5T^c$WdHD_v9)&!-o--Qr z@~0@(t&DG%PFNOpAUN~mnJ)EP4 znvNreS7GB#U9rt)%)0rZ^cK2ssvq7L?J38nr+xK%JJj7wDTiTK1v|EQ4e+s+RLfx| zjg;A{o2i1BQwm|6>C|u-U0lZM913ygt=+l~2s-Q2>CQRpmrjgtj(d+DV8j$T8@}0;jaz{ zO$Nhi)N0~WJC0gYmVJjFM&jZ%;nWYO@EDT}RajyJv!_99%AFWf46>$)a~<^8Oh;c$ zJ14WV(WlcrA1rh2962|R9Aiehx9r{3_3_iEuAAxCsh9qFEHgYFy(a(%mf9^Nk;{5fZo;ybMC?8hIwzapBSWP7@1G~thE^hvPH=F3gD zO?A+woE><3xN_;QP4>Y1>aZ4U6eeld!D`H)TT;%^T!^0cHDZ? z1Jkd!SmVWMw0tz-w0SJJjXXIN!?T`nIPm86@{I+$c%wMaPCnaq>Zb)TrWEAmiqmg4 z(b_$u+C0ttZr?_+qslxv`uL75nmlceTWrTZ-MmKe+CT39^cTvf_LVjE_QoE?=JrRq z>+4T_DU|Z2J}uUvjAIz`%Nve^OIb`;p1ghI-{HQo&~Y5hAi*$VA7xLF=T3b)4q9uR zc5#@_I63QhK1RL=81vvU&|G-whcB4xmoe$p z+BWe{y|xa6$;;4mDatT2&Ee%6Q;j^SymIp#ho4c;Ih&7Xf}95}V{8`XFoT%cvrpXi z9tOMoGJ{S|{uNGJx*Z1PGvj#kG@abr;X@8C1L3DegMAlnc;==fUW0z4Xx4f4T8`Un zGAs=6|<9=4!b+J zusN;Hz1KG0P0;)yL%$BpjmIeGvpPBH9-Deck0j5gW7;tuSl71*?di8hz4|ndF56{| z@rM5Wyhft`z2={NJpR)D`#F3Ur7$lnO~wb=@3*df_KzP6+Zw%kW-{gP=5i^ELlXug zaf!okt;5-lSmTZ(L&DIfUS&QXH*HxOiylX9v>PivQRTlUEDmF_@^+2!&!apArk&xD z)y?u_zPtTY;hbVQYKyk<%9?cB%RPB##{uidf(@8K%Z#Tb;yvCv`*)91yx)}v27|v9 z)>G727NaB0x0$Z}_++)=u-k&bh@$5S849@RezYE=FW zKaDqR!_B$A$hCYmx>VAi^DIya@ypehn5X|~`Lyh*;C`unN^Q!Yv{d1metPr}p~^2r zRH4z;QOwh+rq%nD=4sP-Qm2zQg-w$CRd49-kSE#$w9`0I=p@$xvZQ1_?J3 z3>gLtmjo8l(!oU=?EJe`RaI2Vl^UQ04`>XP1eB66NOcwnBL)@>1+=ur7MiB3FrJ_! zhc->Xk`e*&Bs_L%s;lGzb%2r|a0$|9r``$-;|?pBAO|=@jsu~cFeHV}zQ^!r+^Q-i zBV-BK*&;B57)2nAAf#AD0bmW7n4+az!61VOJk0Q_f`XoINHC@;>*|01mh<%M|Dv1U zaJHP_2s&Zj7SP}F-gCWd{W^n<<4brK!|}buPi%95+sA_=UdZ_&MK)Bn@Nk8w`y`2cY;3hNIMEaScG;1_lNe z3d05x#bHcLO2oxtpVv$+5n*7RC|Vj>W@J;-uZ>Knc3mUi-(5TId!C{|J2h`a@ox^w zEe{?X3JpY)IV9+6s;a80s;k2+BrGHjh#GhR5DsvXWkw5GXoGyK1`p{Sc+@T*l`*>bBynC3C9OjPP>GpMMOkIL_|ias;a80A{YRo!Ff_%Y%BHS z@8|Wl$1FCF*6AGoTZ8rW{=b{IVFA+>5v7;)_|IP^y;$SYHOy%8@_BEsUH^UKcTYV( zXK2&X<g2VO|q}41w0*1s^w2jKKLRb-CRKU0lJ)ZB?B|1{lNcXEzXcIy9 zD*Op>E+t(@+Kklx&Hl-iE^Y&J@iiq^IWBQ{MLsY}bbdOrQM# zSgRFc#aOXcEXqkCaDWEb43KaXSfxDz=s1o4y1%CWo}Xvtu<@MZ7*$u2B%FT_lHykM zIT#w?aSZt&%;3Q2#@;VJicTQW+CL<5?)<)d{5RR<8t>LQM+|P(JI2PE^Ade9B>v1v znCA0+9i4df)0X;+uP?WU1m_rO9izus^~7y(?T4RtSlP1?+jeuKZZV$ReE3Hb&xc3y z>5qWqEvxwS3Z5llz*T`QHUSgwwS{9Tv zlzC5xRQ&_>i~6Gfa$fho7r4Hsr^Y@pr@r2?r>uIXINO4JGw^)>!OTZp+w+dGh~pnP z=K04S@xnYjqkj>u4~IO*c;duooP9crmtFe1wWmHhJ7U{x3zMIw96Y{FBZH?-QP+?8 zmu(z7H`Tv>d?OLizGd`>)csNW)2F0+J-t2=q;d-Ldui(*m{U9H&sv^OSmPeChez+n zO{3aAE)nJ0H2m&`{8zi;p6akzRf54^>;#`dCgoA&VMT=W2{@lvR|oN&-$Ljh)TSTb z1|+_*_HS45*n&~yO#YrIP-1VI`$Uv zzc$_f7ng4CG2QcWZM1WE;^7@I%y@E-Blj<0ll^XuaYDaT{emxya`Df<68n|)2oJ8J zG%C=q#8LY(M=14tIrH%!DEdZ@4w3co`o6pA#q~J*b$yjivGWSiq&~a~E#DZ%`XrnM z&*l~6Rj;}D!oQCD64P&la(PFHt649j_k~~Bm3@U@%BkcPHXif~?H^}>_Yc*p^SXhk zNvu`RIoi0DZ4`OBhNWF%t(0o3EoDE6Rw~(*Uh-Ph;UvXPUv9X@dtrVsxe5D4fpZj{ zDRM8$6Cw=?uoa5B1j2>XuE!0?$Hz|5zg}DNj~mC~zr)Mn1ojee!5qjVdgg-Su}o7E!C*!NeJW@q`l_oY5^|~Y zjYaM3_(q?alK6W^w*G?V^~k=TFRN(p^Ts;9)qePUg^4TXJi@;N?O}XMYf_yfQ?J@8 z`N?{=jlS29m#ckTcsm8B(RQoOh4KLPs+tAFNzh4v;$K)At>hYhVeSfQX#SO9_ep!u zyfP%}FeJdmS}-4|H5$}Tl3w*NE&*FqOxGm5hKjI1$Se&iX+?^O_|bF=Qvy%Hbu5U? zQvqle0hCsULYh_mpx&Z=w6rxWTMjT>DrTy6c@|Q@8jk9;FRX1#`bXz};No8z7f<36 zpnt>gK5wy#`vtr5{#WMwBlGf)w@CbHw!e|X$$o7{n*KQa@$vB-x&CI3vF6~{mO1Ui z%RISH%f&kWkBiq%9pkKb=yHwY8gzAQ8ID`IZH}CL^p2jf!_zUJNb8@YSI|)Sg{h=& z%x5u()6-tvnn%2J;emRKNc8REGVe>!Z61HP96Y!S_I|-9dY^##6=YR`U>FO4tNGWu z{8Fdp3xx^!2kmPGpuu2iDEie-;;bMvsn6CG%B)FnB{`Q+o_tG*sOL8-e_K!bRQ$j1 zKOGB)v?yc|^}k2xCE$EUsb+-b0%iv=00{~Ddx<|gPfLC`)T8NmYq^9u?%%JU|8&z$cs{;yp>UpD$@Z|ri=e(ro|Uenww`kJ5CZf-vSsr(ZCQq!6(`k_0TWK zpR71DOZ3pXD|s)_pAqpAbh?M|m71xTtd;umT?gYQ=cq4=zjT+ls@T69cObtws(2eh zu_=ZI1%)FLqXmUneL*LRo+^BYo5RALnt{Z78YP;C?F({Ktg8K`UZcTz&_9*_Mf%l0 znN!rRs2?*DurOH!Vg$kACPox8I)NGilucMu{6k~OtJF*A6Ada$BljagktPK+5@`S7 zP0LX73FtoYC%Do}0bp1a9MydqROwYa_#)~&2{?s;CdEqJu)0sIav#wOvMSlBU%II- zLQjCyzBRc1{n$a&>Y(N*a|=MMkzK|QN`Drg%b&!(M-<`wK7y|~CDeC*Obg5>byZEu zuq56~aFg;?fY7#oM%ZQxh_x@@{uKq?O{G5yy8j)(esFgwmf>dp7x#4i_;)6?SgDp$ zm|+EEDq&UorTZB#^f)zFBh6FAPghzJ&_7T~qjW>wOPx*Ce*slBE<~nEo2F@Ke8Rd? z(5iA2U#JxON~Ym?H$#dE#!CYO5G=I`WH2P+6Y^A+gCklW+*7!#-mjRz$yNnj2<((| zV#3lK0IroTM5mQ9uR%qY1ew{PVm-xEcODblk z+{-j4I-0XXS&Fo&rA>jL@+!=VUfDwh7CWGovu1x~(SB8VA$df|nDVbJM zrlDvr*P&>%8jVW8lO?4r7g~v!`Hp^j3uWO;a?X-m1_qF`R*p3>mw>)OX)S7|B#LMj z!0cMGLp3m^D%+Brc)Ie7Ak3#W)W#q%CX(bY!76OK};AhV8Hkq7K58k zi$a=(SQZQ{C;baZrjSpCPj^hI>;t@CnNJ>{v_}KxQ{+>Gpc9<|O=aP%5g*7|O-24t zY$GN3t0aHcn4`EaqfWw9;V;prl&9?O%B6MxExJ_?^`|&FCHQl*DtNT@#knQ<#jyRq z1eF6_?MwFyZkyuQP1<_TtuFt;sp?B)zfPO^#+f^ZKnz#b0Yvb8FR82r0)bQ_LjUpHx043ZF)rZcZ6^CD14Y|01Y;#XgXG zviBv!ry8gF50&XD#41qtwB8o}e{7q(KT7;;7foGDH zO4^?4r@G-&X^Um!zh<8&T_o32W~LO;CRN{4kxzFD9gGDxd^&YiJF0Iax`%;J__%uH z`f_j7=SvS!Q%Oy4hSH~D?@P}X(Q?y2VxC1i`g&P7qTT(nr46Qq^^IV9Ys+(Q|$1X)UT{S;|wqPl~r?xE<=5ma~^=aUi-294krNAxY z#42#=e>FW_I0dlTT2ndT{N!e2q+<6>|Z41a3WM5FZ6xUB^U+ymCig2MI*&U{)1IwC8 literal 928875 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%0DC=Yv~Jfge$;D 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%0DV7MJ3)eV#jS<(K1ikJujZEbEY!SFz(M?)<^&n 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

    *8M)$%;Yi_js6Sk~87U?G=RC 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 z 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 +M-u`D+N-| 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

    jzmGa{F=Wj2HM_C* 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 >Q3S_<41I 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

    qX*;9pwA9_!= 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

    M@`^kvp_e8?ydK$`zv3YWDbj; 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 From 3520d948cd59406b12182a3750b20b5a93ed8109 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 1 Jun 2023 19:56:03 +0300 Subject: [PATCH 216/257] Fix frame range in job meta and ui handling --- cvat-core/src/frames.ts | 11 +++++------ cvat/apps/dataset_manager/bindings.py | 3 ++- cvat/apps/engine/models.py | 11 +++++++++-- cvat/apps/engine/views.py | 7 ++----- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/cvat-core/src/frames.ts b/cvat-core/src/frames.ts index cd67e55ac3c0..0efd8705cfaa 100644 --- a/cvat-core/src/frames.ts +++ b/cvat-core/src/frames.ts @@ -317,20 +317,19 @@ FrameData.prototype.data.implementation = async function (onServerRequest) { function getFrameMeta(jobID, frame): FramesMetaData['frames'][0] { const { meta, mode, startFrame } = frameDataCache[jobID]; - let size = null; + let frame_meta = null; if (mode === 'interpolation') { - [size] = meta.frames; + [frame_meta] = meta.frames; } else if (mode === 'annotation') { - if (frame >= meta.size) { + if (frame > meta.stop_frame) { throw new ArgumentError(`Meta information about frame ${frame} can't be received from the server`); - } else { - size = meta.frames[frame - startFrame]; } + frame_meta = meta.frames[frame - startFrame]; } else { throw new DataError(`Invalid mode is specified ${mode}`); } - return size; + return frame_meta; } class FrameBuffer { diff --git a/cvat/apps/dataset_manager/bindings.py b/cvat/apps/dataset_manager/bindings.py index 6e5c6ab76d60..9048bbdbba88 100644 --- a/cvat/apps/dataset_manager/bindings.py +++ b/cvat/apps/dataset_manager/bindings.py @@ -693,9 +693,10 @@ def _init_frame_info(self): super()._init_frame_info() if self.db_instance.segment.type == SegmentType.SPECIFIC_FRAMES: + frame_set = self.db_instance.segment.frame_set self._excluded_frames.update( frame for frame in self.rel_range - if self.abs_frame_id(frame) not in self.db_instance.segment.frame_set + if self.abs_frame_id(frame) not in frame_set ) if self._required_frames: diff --git a/cvat/apps/engine/models.py b/cvat/apps/engine/models.py index cefabc477f02..5e81d6c08932 100644 --- a/cvat/apps/engine/models.py +++ b/cvat/apps/engine/models.py @@ -520,8 +520,15 @@ def frame_count(self) -> int: @property def frame_set(self) -> Sequence[int]: - step = self.task.data.get_frame_step() - frame_range = range(self.start_frame, self.stop_frame + 1, step) + data = self.task.data + data_start_frame = data.start_frame + data_stop_frame = data.stop_frame + step = data.get_frame_step() + frame_range = range( + data_start_frame + self.start_frame * step, + min(data_start_frame + self.stop_frame * step, data_stop_frame) + step, + step + ) if self.type == SegmentType.RANGE: return frame_range diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index b079dfeedfd3..88d1b50db232 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -1676,10 +1676,7 @@ def metadata(self, request, pk): frame_step = db_data.get_frame_step() data_start_frame = db_data.start_frame + start_frame * frame_step data_stop_frame = db_data.start_frame + stop_frame * frame_step - frame_set = set( - db_data.start_frame + rel_id * frame_step - for rel_id in db_job.segment.frame_set - ) + frame_set = db_job.segment.frame_set if request.method == 'PATCH': serializer = DataMetaWriteSerializer(instance=db_data, data=request.data) @@ -1719,7 +1716,7 @@ def metadata(self, request, pk): ) db_data.start_frame = data_start_frame db_data.stop_frame = data_stop_frame - db_data.size = db_job.segment.frame_count + db_data.size = len(frame_set) db_data.included_frames = db_job.segment.frames or None frame_meta = [{ From 97871ae46815cdd6cea39b5907e55dba98eb5321 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 2 Jun 2023 11:26:48 +0300 Subject: [PATCH 217/257] Add helm config for quality reports worker --- .../worker_quality_reports/deployment.yml | 116 ++++++++++++++++++ helm-chart/values.yaml | 10 ++ 2 files changed, 126 insertions(+) create mode 100644 helm-chart/templates/cvat_backend/worker_quality_reports/deployment.yml diff --git a/helm-chart/templates/cvat_backend/worker_quality_reports/deployment.yml b/helm-chart/templates/cvat_backend/worker_quality_reports/deployment.yml new file mode 100644 index 000000000000..ea879ccd98d1 --- /dev/null +++ b/helm-chart/templates/cvat_backend/worker_quality_reports/deployment.yml @@ -0,0 +1,116 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ .Release.Name }}-backend-worker-quality-reports + namespace: {{ .Release.Namespace }} + labels: + app: cvat-app + tier: backend + component: worker-quality-reports + {{- include "cvat.labels" . | nindent 4 }} + {{- with .Values.cvat.backend.worker.quality-reports.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.cvat.backend.worker.quality-reports.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + replicas: {{ .Values.cvat.backend.worker.quality-reports.replicas }} + strategy: + type: Recreate + selector: + matchLabels: + {{- include "cvat.labels" . | nindent 6 }} + {{- with .Values.cvat.backend.worker.quality-reports.labels }} + {{- toYaml . | nindent 6 }} + {{- end }} + app: cvat-app-worker-quality-reports + tier: backend + component: worker-quality-reports + template: + metadata: + labels: + app: cvat-app-worker-quality-reports + tier: backend + component: worker-quality-reports + {{- include "cvat.labels" . | nindent 8 }} + {{- with .Values.cvat.backend.worker.quality-reports.labels }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.cvat.backend.worker.quality-reports.annotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + spec: + containers: + - name: cvat-app-backend-worker-quality-reports-container + image: {{ .Values.cvat.backend.image }}:{{ .Values.cvat.backend.tag }} + imagePullPolicy: {{ .Values.cvat.backend.imagePullPolicy }} + {{- with .Values.cvat.backend.worker.quality-reports.resources }} + resources: + {{- toYaml . | nindent 12 }} + {{- end }} + args: ["-c", "supervisord/worker.quality-reports.conf"] + env: + {{- if .Values.redis.enabled }} + - name: CVAT_REDIS_HOST + value: "{{ .Release.Name }}-redis-master" + {{- else }} + - name: CVAT_REDIS_HOST + value: "{{ .Values.redis.external.host }}" + {{- end }} + - name: CVAT_REDIS_PASSWORD + valueFrom: + secretKeyRef: + name: "{{ tpl (.Values.redis.secret.name) . }}" + key: redis-password + {{- if .Values.postgresql.enabled }} + - name: CVAT_POSTGRES_HOST + value: "{{ .Release.Name }}-postgresql" + - name: CVAT_POSTGRES_PORT + value: "{{ .Values.postgresql.service.ports.postgresql }}" + {{- else }} + - name: CVAT_POSTGRES_HOST + value: "{{ .Values.postgresql.external.host }}" + - name: CVAT_POSTGRES_PORT + value: "{{ .Values.postgresql.external.port }}" + {{- end }} + - name: CVAT_POSTGRES_USER + valueFrom: + secretKeyRef: + name: "{{ tpl (.Values.postgresql.secret.name) . }}" + key: username + - name: CVAT_POSTGRES_DBNAME + valueFrom: + secretKeyRef: + name: "{{ tpl (.Values.postgresql.secret.name) . }}" + key: database + - name: CVAT_POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: "{{ tpl (.Values.postgresql.secret.name) . }}" + key: password + {{- with .Values.cvat.backend.worker.quality-reports.additionalEnv }} + {{- toYaml . | nindent 10 }} + {{- end }} + {{- with .Values.cvat.backend.worker.quality-reports.additionalVolumeMounts }} + volumeMounts: + {{- toYaml . | nindent 10 }} + {{- end }} + {{- with .Values.cvat.backend.worker.quality-reports.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.cvat.backend.worker.quality-reports.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.cvat.backend.worker.quality-reports.additionalVolumes }} + volumes: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm-chart/values.yaml b/helm-chart/values.yaml index ba8337013980..ba69e4964d25 100644 --- a/helm-chart/values.yaml +++ b/helm-chart/values.yaml @@ -63,6 +63,16 @@ cvat: additionalEnv: [] additionalVolumes: [] additionalVolumeMounts: [] + quality_reports: + replicas: 1 + labels: {} + annotations: {} + resources: {} + affinity: {} + tolerations: [] + additionalEnv: [] + additionalVolumes: [] + additionalVolumeMounts: [] utils: replicas: 1 labels: {} From 620ea2ea7519845a267a508426f599d420db8409 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 2 Jun 2023 12:16:33 +0300 Subject: [PATCH 218/257] fix name --- .../worker_quality_reports/deployment.yml | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/helm-chart/templates/cvat_backend/worker_quality_reports/deployment.yml b/helm-chart/templates/cvat_backend/worker_quality_reports/deployment.yml index ea879ccd98d1..b2c1097f51bc 100644 --- a/helm-chart/templates/cvat_backend/worker_quality_reports/deployment.yml +++ b/helm-chart/templates/cvat_backend/worker_quality_reports/deployment.yml @@ -1,57 +1,57 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: {{ .Release.Name }}-backend-worker-quality-reports + name: {{ .Release.Name }}-backend-worker-quality_reports namespace: {{ .Release.Namespace }} labels: app: cvat-app tier: backend - component: worker-quality-reports + component: worker-quality_reports {{- include "cvat.labels" . | nindent 4 }} - {{- with .Values.cvat.backend.worker.quality-reports.labels }} + {{- with .Values.cvat.backend.worker.quality_reports.labels }} {{- toYaml . | nindent 4 }} {{- end }} - {{- with .Values.cvat.backend.worker.quality-reports.annotations }} + {{- with .Values.cvat.backend.worker.quality_reports.annotations }} annotations: {{- toYaml . | nindent 4 }} {{- end }} spec: - replicas: {{ .Values.cvat.backend.worker.quality-reports.replicas }} + replicas: {{ .Values.cvat.backend.worker.quality_reports.replicas }} strategy: type: Recreate selector: matchLabels: {{- include "cvat.labels" . | nindent 6 }} - {{- with .Values.cvat.backend.worker.quality-reports.labels }} + {{- with .Values.cvat.backend.worker.quality_reports.labels }} {{- toYaml . | nindent 6 }} {{- end }} - app: cvat-app-worker-quality-reports + app: cvat-app-worker-quality_reports tier: backend - component: worker-quality-reports + component: worker-quality_reports template: metadata: labels: - app: cvat-app-worker-quality-reports + app: cvat-app-worker-quality_reports tier: backend - component: worker-quality-reports + component: worker-quality_reports {{- include "cvat.labels" . | nindent 8 }} - {{- with .Values.cvat.backend.worker.quality-reports.labels }} + {{- with .Values.cvat.backend.worker.quality_reports.labels }} {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.cvat.backend.worker.quality-reports.annotations }} + {{- with .Values.cvat.backend.worker.quality_reports.annotations }} annotations: {{- toYaml . | nindent 8 }} {{- end }} spec: containers: - - name: cvat-app-backend-worker-quality-reports-container + - name: cvat-app-backend-worker-quality_reports-container image: {{ .Values.cvat.backend.image }}:{{ .Values.cvat.backend.tag }} imagePullPolicy: {{ .Values.cvat.backend.imagePullPolicy }} - {{- with .Values.cvat.backend.worker.quality-reports.resources }} + {{- with .Values.cvat.backend.worker.quality_reports.resources }} resources: {{- toYaml . | nindent 12 }} {{- end }} - args: ["-c", "supervisord/worker.quality-reports.conf"] + args: ["-c", "supervisord/worker.quality_reports.conf"] env: {{- if .Values.redis.enabled }} - name: CVAT_REDIS_HOST @@ -91,22 +91,22 @@ spec: secretKeyRef: name: "{{ tpl (.Values.postgresql.secret.name) . }}" key: password - {{- with .Values.cvat.backend.worker.quality-reports.additionalEnv }} + {{- with .Values.cvat.backend.worker.quality_reports.additionalEnv }} {{- toYaml . | nindent 10 }} {{- end }} - {{- with .Values.cvat.backend.worker.quality-reports.additionalVolumeMounts }} + {{- with .Values.cvat.backend.worker.quality_reports.additionalVolumeMounts }} volumeMounts: {{- toYaml . | nindent 10 }} {{- end }} - {{- with .Values.cvat.backend.worker.quality-reports.affinity }} + {{- with .Values.cvat.backend.worker.quality_reports.affinity }} affinity: {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.cvat.backend.worker.quality-reports.tolerations }} + {{- with .Values.cvat.backend.worker.quality_reports.tolerations }} tolerations: {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.cvat.backend.worker.quality-reports.additionalVolumes }} + {{- with .Values.cvat.backend.worker.quality_reports.additionalVolumes }} volumes: {{- toYaml . | nindent 8 }} {{- end }} From 0720625fd3342a0131bba1919e57528758f4e0d4 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 2 Jun 2023 13:07:37 +0300 Subject: [PATCH 219/257] Fix comments --- .vscode/launch.json | 1 + cvat/apps/iam/rules/conflicts.rego | 8 ++++++++ cvat/apps/iam/rules/quality_reports.rego | 8 ++++++++ cvat/apps/iam/rules/quality_settings.rego | 6 ++++++ cvat/apps/quality_control/models.py | 4 +--- cvat/apps/quality_control/quality_reports.py | 4 ++-- cvat/apps/quality_control/views.py | 6 ++++++ cvat/schema.yml | 2 ++ 8 files changed, 34 insertions(+), 5 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 28056a0edd62..8c025110fbb1 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -476,6 +476,7 @@ "server: RQ - annotation", "server: RQ - webhooks", "server: RQ - scheduler", + "server: RQ - quality reports", "server: git", ] } diff --git a/cvat/apps/iam/rules/conflicts.rego b/cvat/apps/iam/rules/conflicts.rego index 5aa7329c9ea1..5c838c7a9cbf 100644 --- a/cvat/apps/iam/rules/conflicts.rego +++ b/cvat/apps/iam/rules/conflicts.rego @@ -98,7 +98,13 @@ filter = [] { # Django Q object to filter list of entries } else = qobject { organizations.has_perm(organizations.WORKER) user := input.auth.user + org := input.auth.organization qobject := [ + {"report__job__segment__task__organization": org.id}, + {"report__job__segment__task__project__organization": org.id}, "|", + {"report__task__organization": org.id}, "|", + {"report__task__project__organization": org.id}, "|", + {"report__job__segment__task__owner_id": user.id}, {"report__job__segment__task__assignee_id": user.id}, "|", {"report__job__segment__task__project__owner_id": user.id}, "|", @@ -107,5 +113,7 @@ filter = [] { # Django Q object to filter list of entries {"report__task__assignee_id": user.id}, "|", {"report__task__project__owner_id": user.id}, "|", {"report__task__project__assignee_id": user.id}, "|", + + "&" ] } diff --git a/cvat/apps/iam/rules/quality_reports.rego b/cvat/apps/iam/rules/quality_reports.rego index a5fcab55ff82..385d76b85ac7 100644 --- a/cvat/apps/iam/rules/quality_reports.rego +++ b/cvat/apps/iam/rules/quality_reports.rego @@ -98,7 +98,13 @@ filter = [] { # Django Q object to filter list of entries } else = qobject { organizations.has_perm(organizations.WORKER) user := input.auth.user + org := input.auth.organization qobject := [ + {"job__segment__task__organization": org.id}, + {"job__segment__task__project__organization": org.id}, "|", + {"task__organization": org.id}, "|", + {"task__project__organization": org.id}, "|", + {"job__segment__task__owner_id": user.id}, {"job__segment__task__assignee_id": user.id}, "|", {"job__segment__task__project__owner_id": user.id}, "|", @@ -107,5 +113,7 @@ filter = [] { # Django Q object to filter list of entries {"task__assignee_id": user.id}, "|", {"task__project__owner_id": user.id}, "|", {"task__project__assignee_id": user.id}, "|", + + "&" ] } diff --git a/cvat/apps/iam/rules/quality_settings.rego b/cvat/apps/iam/rules/quality_settings.rego index 31ad143211d4..d8931ac9bf98 100644 --- a/cvat/apps/iam/rules/quality_settings.rego +++ b/cvat/apps/iam/rules/quality_settings.rego @@ -90,10 +90,16 @@ filter = [] { # Django Q object to filter list of entries } else = qobject { organizations.has_perm(organizations.WORKER) user := input.auth.user + org := input.auth.organization qobject := [ + {"task__organization": org.id}, "|", + {"task__project__organization": org.id}, "|", + {"task__owner_id": user.id}, {"task__assignee_id": user.id}, "|", {"task__project__owner_id": user.id}, "|", {"task__project__assignee_id": user.id}, "|", + + "&" ] } diff --git a/cvat/apps/quality_control/models.py b/cvat/apps/quality_control/models.py index 297565c65614..72e78f765e6c 100644 --- a/cvat/apps/quality_control/models.py +++ b/cvat/apps/quality_control/models.py @@ -220,6 +220,4 @@ def to_dict(self): @property def organization_id(self): - if task := self.task: - return getattr(task.organization, 'id', None) - return None + return getattr(self.task.organization, 'id', None) diff --git a/cvat/apps/quality_control/quality_reports.py b/cvat/apps/quality_control/quality_reports.py index 0e63990d4594..0ae34a9b6035 100644 --- a/cvat/apps/quality_control/quality_reports.py +++ b/cvat/apps/quality_control/quality_reports.py @@ -2112,9 +2112,9 @@ def _check_quality_reporting_available(self, task: Task): gt_job = task.gt_job if gt_job is None or not ( - gt_job.stage == StageChoice.ACCEPTANCE and gt_job.status == StatusChoice.COMPLETED + gt_job.stage == StageChoice.ACCEPTANCE and gt_job.state == StatusChoice.COMPLETED ): - return self.QualityReportsNotAvailable( + raise self.QualityReportsNotAvailable( "Quality reports require a Ground Truth job in the task " f"at the {StageChoice.ACCEPTANCE} stage " f"and in the {StatusChoice.COMPLETED} state" diff --git a/cvat/apps/quality_control/views.py b/cvat/apps/quality_control/views.py index 6d5cb67e5c0f..12648beab45d 100644 --- a/cvat/apps/quality_control/views.py +++ b/cvat/apps/quality_control/views.py @@ -307,6 +307,12 @@ def data(self, request, pk): responses={ '200': QualitySettingsSerializer, }), + partial_update=extend_schema( + summary='Methods does a partial update of chosen fields in the quality settings instance', + request=QualitySettingsSerializer(partial=True), + responses={ + '200': QualitySettingsSerializer, + }) ) class QualitySettingsViewSet(viewsets.GenericViewSet, mixins.ListModelMixin, mixins.RetrieveModelMixin, PartialUpdateModelMixin diff --git a/cvat/schema.yml b/cvat/schema.yml index 71730030a0d3..bbad5d008e03 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -3752,6 +3752,8 @@ paths: description: '' patch: operationId: quality_partial_update_settings + summary: Methods does a partial update of chosen fields in the quality settings + instance parameters: - in: path name: id From 3aaba28edf03cc57942e7d13949d3a848a68a020 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 2 Jun 2023 19:39:33 +0300 Subject: [PATCH 220/257] Add more tests --- tests/python/rest_api/test_jobs.py | 24 ++++----- tests/python/rest_api/test_quality_control.py | 49 ++++++++++++++++++- 2 files changed, 59 insertions(+), 14 deletions(-) diff --git a/tests/python/rest_api/test_jobs.py b/tests/python/rest_api/test_jobs.py index d9a997b717ad..9177a5e37793 100644 --- a/tests/python/rest_api/test_jobs.py +++ b/tests/python/rest_api/test_jobs.py @@ -1391,15 +1391,15 @@ def test_non_org_staff_non_job_staff_cannot_get_job_preview_in_org( @pytest.mark.usefixtures("restore_db_per_class") class TestGetJobDataMeta: - def test_admin_can_get_job_meta(self, jobs): - with make_api_client("admin1") as client: - job_id = jobs.raw[0]["id"] - - client.organization_slug = None - client.jobs_api.retrieve_data_meta(job_id) - - client.organization_slug = "" - client.jobs_api.retrieve_data_meta(job_id) - - client.organization_slug = "org1" - client.jobs_api.retrieve_data_meta(job_id) + @pytest.mark.parametrize("org_slug", [None, "", "org"]) + def test_can_get_job_meta_with_org_slug(self, admin_user, tasks, jobs, organizations, org_slug): + # Checks for backward compatibility with org_slug parameter + task = next(t for t in tasks if t["organization"]) + job = next(j for j in jobs if j["task_id"] == task["id"]) + + if org_slug == "org": + org_slug = organizations[task["organization"]]["slug"] + + with make_api_client(admin_user) as client: + client.organization_slug = org_slug + client.jobs_api.retrieve_data_meta(job["id"]) diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py index 23b88c17169a..9fedd3b2a49a 100644 --- a/tests/python/rest_api/test_quality_control.py +++ b/tests/python/rest_api/test_quality_control.py @@ -8,7 +8,7 @@ from typing import Any, Dict, List, Optional, Tuple import pytest -from cvat_sdk.api_client import models +from cvat_sdk.api_client import exceptions, models from cvat_sdk.api_client.api_client import ApiClient, Endpoint from cvat_sdk.core.helpers import get_paginated_collection from deepdiff import DeepDiff @@ -68,6 +68,11 @@ def create_gt_job(self, user, task_id): ), ) + api_client.jobs_api.partial_update(job.id, patched_job_write_request={ + 'stage': 'acceptance', + 'state': 'completed', + }) + return job @@ -419,12 +424,52 @@ def test_user_get_report_data_in_org_task( @pytest.mark.usefixtures("restore_db_per_function") class TestPostQualityReports(_PermissionTestBase): def test_can_create_report(self, admin_user, jobs): - gt_job = next(j for j in jobs if j["type"] == "ground_truth") + gt_job = next( + j for j in jobs if j["type"] == "ground_truth" + and j["stage"] == 'acceptance' and j['state'] == 'completed' + ) task_id = gt_job["task_id"] report = self.create_quality_report(admin_user, task_id) assert models.QualityReport._from_openapi_data(**report) + def test_cannot_create_report_without_gt_job(self, admin_user, tasks): + task_id = next(t["id"] for t in tasks if t["jobs"]["count"] == 1) + + with pytest.raises(exceptions.ApiException) as capture: + self.create_quality_report(admin_user, task_id) + + assert ( + 'Quality reports require a Ground Truth job in the task at the acceptance ' + 'stage and in the completed state' + ) in capture.value.body + + @pytest.mark.parametrize("field_name, field_value", [ + ("stage", "annotation"), + ("stage", "validation"), + ("state", "new"), + ("state", "in progress"), + ("state", "rejected"), + ]) + def test_cannot_create_report_with_incomplete_gt_job(self, admin_user, jobs, field_name, field_value): + gt_job = next( + j for j in jobs + if j["type"] == "ground_truth" + and j["stage"] == 'acceptance' and j['state'] == 'completed' + ) + task_id = gt_job["task_id"] + + with make_api_client(admin_user) as api_client: + api_client.jobs_api.partial_update(gt_job["id"], patched_job_write_request={field_name: field_value}) + + with pytest.raises(exceptions.ApiException) as capture: + self.create_quality_report(admin_user, task_id) + + assert ( + 'Quality reports require a Ground Truth job in the task at the acceptance ' + 'stage and in the completed state' + ) in capture.value.body + class TestSimpleQualityReportsFilters(CollectionSimpleFilterTestBase): @pytest.fixture(autouse=True) From a708cb9c5c0f166186153e7102431f961c808f82 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 2 Jun 2023 22:29:30 +0300 Subject: [PATCH 221/257] Rename worker in helm --- .../deployment.yml | 40 +++++++++---------- helm-chart/values.yaml | 2 +- 2 files changed, 21 insertions(+), 21 deletions(-) rename helm-chart/templates/cvat_backend/{worker_quality_reports => worker_qualityreports}/deployment.yml (69%) diff --git a/helm-chart/templates/cvat_backend/worker_quality_reports/deployment.yml b/helm-chart/templates/cvat_backend/worker_qualityreports/deployment.yml similarity index 69% rename from helm-chart/templates/cvat_backend/worker_quality_reports/deployment.yml rename to helm-chart/templates/cvat_backend/worker_qualityreports/deployment.yml index b2c1097f51bc..557879e29644 100644 --- a/helm-chart/templates/cvat_backend/worker_quality_reports/deployment.yml +++ b/helm-chart/templates/cvat_backend/worker_qualityreports/deployment.yml @@ -1,57 +1,57 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: {{ .Release.Name }}-backend-worker-quality_reports + name: {{ .Release.Name }}-backend-worker-qualityreports namespace: {{ .Release.Namespace }} labels: app: cvat-app tier: backend - component: worker-quality_reports + component: worker-qualityreports {{- include "cvat.labels" . | nindent 4 }} - {{- with .Values.cvat.backend.worker.quality_reports.labels }} + {{- with .Values.cvat.backend.worker.qualityreports.labels }} {{- toYaml . | nindent 4 }} {{- end }} - {{- with .Values.cvat.backend.worker.quality_reports.annotations }} + {{- with .Values.cvat.backend.worker.qualityreports.annotations }} annotations: {{- toYaml . | nindent 4 }} {{- end }} spec: - replicas: {{ .Values.cvat.backend.worker.quality_reports.replicas }} + replicas: {{ .Values.cvat.backend.worker.qualityreports.replicas }} strategy: type: Recreate selector: matchLabels: {{- include "cvat.labels" . | nindent 6 }} - {{- with .Values.cvat.backend.worker.quality_reports.labels }} + {{- with .Values.cvat.backend.worker.qualityreports.labels }} {{- toYaml . | nindent 6 }} {{- end }} - app: cvat-app-worker-quality_reports + app: cvat-app-worker-qualityreports tier: backend - component: worker-quality_reports + component: worker-qualityreports template: metadata: labels: - app: cvat-app-worker-quality_reports + app: cvat-app-worker-qualityreports tier: backend - component: worker-quality_reports + component: worker-qualityreports {{- include "cvat.labels" . | nindent 8 }} - {{- with .Values.cvat.backend.worker.quality_reports.labels }} + {{- with .Values.cvat.backend.worker.qualityreports.labels }} {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.cvat.backend.worker.quality_reports.annotations }} + {{- with .Values.cvat.backend.worker.qualityreports.annotations }} annotations: {{- toYaml . | nindent 8 }} {{- end }} spec: containers: - - name: cvat-app-backend-worker-quality_reports-container + - name: cvat-app-backend-worker-qualityreports-container image: {{ .Values.cvat.backend.image }}:{{ .Values.cvat.backend.tag }} imagePullPolicy: {{ .Values.cvat.backend.imagePullPolicy }} - {{- with .Values.cvat.backend.worker.quality_reports.resources }} + {{- with .Values.cvat.backend.worker.qualityreports.resources }} resources: {{- toYaml . | nindent 12 }} {{- end }} - args: ["-c", "supervisord/worker.quality_reports.conf"] + args: ["-c", "supervisord/worker.qualityreports.conf"] env: {{- if .Values.redis.enabled }} - name: CVAT_REDIS_HOST @@ -91,22 +91,22 @@ spec: secretKeyRef: name: "{{ tpl (.Values.postgresql.secret.name) . }}" key: password - {{- with .Values.cvat.backend.worker.quality_reports.additionalEnv }} + {{- with .Values.cvat.backend.worker.qualityreports.additionalEnv }} {{- toYaml . | nindent 10 }} {{- end }} - {{- with .Values.cvat.backend.worker.quality_reports.additionalVolumeMounts }} + {{- with .Values.cvat.backend.worker.qualityreports.additionalVolumeMounts }} volumeMounts: {{- toYaml . | nindent 10 }} {{- end }} - {{- with .Values.cvat.backend.worker.quality_reports.affinity }} + {{- with .Values.cvat.backend.worker.qualityreports.affinity }} affinity: {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.cvat.backend.worker.quality_reports.tolerations }} + {{- with .Values.cvat.backend.worker.qualityreports.tolerations }} tolerations: {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.cvat.backend.worker.quality_reports.additionalVolumes }} + {{- with .Values.cvat.backend.worker.qualityreports.additionalVolumes }} volumes: {{- toYaml . | nindent 8 }} {{- end }} diff --git a/helm-chart/values.yaml b/helm-chart/values.yaml index ba69e4964d25..1f2f7c9df100 100644 --- a/helm-chart/values.yaml +++ b/helm-chart/values.yaml @@ -63,7 +63,7 @@ cvat: additionalEnv: [] additionalVolumes: [] additionalVolumeMounts: [] - quality_reports: + qualityreports: replicas: 1 labels: {} annotations: {} From bdfe70bff32173011ec0aff42f4a78e1bf839a68 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 2 Jun 2023 22:31:36 +0300 Subject: [PATCH 222/257] Fix formatting --- tests/python/rest_api/test_quality_control.py | 57 ++++++++++++------- 1 file changed, 36 insertions(+), 21 deletions(-) diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py index 9fedd3b2a49a..97605381afdb 100644 --- a/tests/python/rest_api/test_quality_control.py +++ b/tests/python/rest_api/test_quality_control.py @@ -68,10 +68,13 @@ def create_gt_job(self, user, task_id): ), ) - api_client.jobs_api.partial_update(job.id, patched_job_write_request={ - 'stage': 'acceptance', - 'state': 'completed', - }) + api_client.jobs_api.partial_update( + job.id, + patched_job_write_request={ + "stage": "acceptance", + "state": "completed", + }, + ) return job @@ -425,8 +428,11 @@ def test_user_get_report_data_in_org_task( class TestPostQualityReports(_PermissionTestBase): def test_can_create_report(self, admin_user, jobs): gt_job = next( - j for j in jobs if j["type"] == "ground_truth" - and j["stage"] == 'acceptance' and j['state'] == 'completed' + j + for j in jobs + if j["type"] == "ground_truth" + and j["stage"] == "acceptance" + and j["state"] == "completed" ) task_id = gt_job["task_id"] @@ -440,34 +446,43 @@ def test_cannot_create_report_without_gt_job(self, admin_user, tasks): self.create_quality_report(admin_user, task_id) assert ( - 'Quality reports require a Ground Truth job in the task at the acceptance ' - 'stage and in the completed state' + "Quality reports require a Ground Truth job in the task at the acceptance " + "stage and in the completed state" ) in capture.value.body - @pytest.mark.parametrize("field_name, field_value", [ - ("stage", "annotation"), - ("stage", "validation"), - ("state", "new"), - ("state", "in progress"), - ("state", "rejected"), - ]) - def test_cannot_create_report_with_incomplete_gt_job(self, admin_user, jobs, field_name, field_value): + @pytest.mark.parametrize( + "field_name, field_value", + [ + ("stage", "annotation"), + ("stage", "validation"), + ("state", "new"), + ("state", "in progress"), + ("state", "rejected"), + ], + ) + def test_cannot_create_report_with_incomplete_gt_job( + self, admin_user, jobs, field_name, field_value + ): gt_job = next( - j for j in jobs + j + for j in jobs if j["type"] == "ground_truth" - and j["stage"] == 'acceptance' and j['state'] == 'completed' + and j["stage"] == "acceptance" + and j["state"] == "completed" ) task_id = gt_job["task_id"] with make_api_client(admin_user) as api_client: - api_client.jobs_api.partial_update(gt_job["id"], patched_job_write_request={field_name: field_value}) + api_client.jobs_api.partial_update( + gt_job["id"], patched_job_write_request={field_name: field_value} + ) with pytest.raises(exceptions.ApiException) as capture: self.create_quality_report(admin_user, task_id) assert ( - 'Quality reports require a Ground Truth job in the task at the acceptance ' - 'stage and in the completed state' + "Quality reports require a Ground Truth job in the task at the acceptance " + "stage and in the completed state" ) in capture.value.body From 0a84f76e20152eff0402bad70d53bdb3b99a4588 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 5 Jun 2023 13:12:54 +0300 Subject: [PATCH 223/257] Update rqscheduler to use asgi --- rqscheduler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rqscheduler.py b/rqscheduler.py index 91cd49cc515c..82b7499baf89 100644 --- a/rqscheduler.py +++ b/rqscheduler.py @@ -5,7 +5,7 @@ # their access options such as login and password. # Required to initialize Django settings correctly -from cvat.wsgi import application # pylint: disable=unused-import +from cvat.asgi import application # pylint: disable=unused-import from rq_scheduler.scripts import rqscheduler From 58e8fa92c00424dce68106f4d0110397b54c0e4c Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 5 Jun 2023 13:25:54 +0300 Subject: [PATCH 224/257] Apply suggestions from code review Co-authored-by: Kirill Sizov --- cvat/apps/dataset_manager/annotation.py | 9 +++++---- cvat/apps/quality_control/models.py | 4 +--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/cvat/apps/dataset_manager/annotation.py b/cvat/apps/dataset_manager/annotation.py index 7fdfad6425fe..91a73ee1d8ca 100644 --- a/cvat/apps/dataset_manager/annotation.py +++ b/cvat/apps/dataset_manager/annotation.py @@ -169,7 +169,7 @@ def to_shapes(self, included_frames: Optional[Sequence[int]] = None, include_outside: bool = False, use_server_track_ids: bool = False - ): + ) -> list: shapes = self.data.shapes tracks = TrackManager(self.data.tracks, dimension) @@ -427,7 +427,7 @@ def to_shapes(self, end_frame: int, *, included_frames: Optional[Sequence[int]] = None, include_outside: bool = False, use_server_track_ids: bool = False - ): + ) -> list: shapes = [] for idx, track in enumerate(self.objects): track_id = track["id"] if use_server_track_ids else idx @@ -468,8 +468,9 @@ def to_shapes(self, end_frame: int, *, # and outside shapes are not requested. if not include_outside: track_shapes = { - k: v for k, v in track_shapes.items() - if not v['elements'] or not all(elem["outside"] for elem in v["elements"]) + frame_number: shape for frame_number, shape in track_shapes.items() + if not shape["elements"] + or not all(elem["outside"] for elem in shape["elements"]) } shapes.extend(track_shapes.values()) diff --git a/cvat/apps/quality_control/models.py b/cvat/apps/quality_control/models.py index 72e78f765e6c..0fd5119f212d 100644 --- a/cvat/apps/quality_control/models.py +++ b/cvat/apps/quality_control/models.py @@ -141,9 +141,7 @@ class AnnotationConflict(models.Model): @property def organization_id(self): - if report := self.report: - return report.organization_id - return None + return report.organization_id class AnnotationType(str, Enum): From 3257cd64c56de7a1a3b5b2138ba5fdd88c6706c6 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 5 Jun 2023 13:39:19 +0300 Subject: [PATCH 225/257] Remove extra permission checks --- cvat/apps/quality_control/views.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/cvat/apps/quality_control/views.py b/cvat/apps/quality_control/views.py index 12648beab45d..a55a2aacc450 100644 --- a/cvat/apps/quality_control/views.py +++ b/cvat/apps/quality_control/views.py @@ -83,8 +83,6 @@ def get_queryset(self): queryset = super().get_queryset() if self.action == 'list': - self.check_permissions(self.request) - if report_id := self.request.query_params.get('report_id', None): # NOTE: This filter is too complex to be implemented by other means, # it has a dependency on the report type @@ -164,8 +162,6 @@ def get_queryset(self): queryset = super().get_queryset() if self.action == 'list': - self.check_permissions(self.request) - if task_id := self.request.query_params.get('task_id', None): # NOTE: This filter is too complex to be implemented by other means try: From 9bc966f5111c54c69f49f96aec3d35efac0220fe Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 5 Jun 2023 14:39:45 +0300 Subject: [PATCH 226/257] Fix method --- cvat/apps/quality_control/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cvat/apps/quality_control/models.py b/cvat/apps/quality_control/models.py index 0fd5119f212d..c23e1f8199b7 100644 --- a/cvat/apps/quality_control/models.py +++ b/cvat/apps/quality_control/models.py @@ -141,7 +141,7 @@ class AnnotationConflict(models.Model): @property def organization_id(self): - return report.organization_id + return self.report.organization_id class AnnotationType(str, Enum): From 11db795b9794729d9a33447c22c808b81a04577e Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 5 Jun 2023 18:17:05 +0300 Subject: [PATCH 227/257] Fix script name --- .../templates/cvat_backend/worker_qualityreports/deployment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm-chart/templates/cvat_backend/worker_qualityreports/deployment.yml b/helm-chart/templates/cvat_backend/worker_qualityreports/deployment.yml index 557879e29644..490e8f8930a5 100644 --- a/helm-chart/templates/cvat_backend/worker_qualityreports/deployment.yml +++ b/helm-chart/templates/cvat_backend/worker_qualityreports/deployment.yml @@ -51,7 +51,7 @@ spec: resources: {{- toYaml . | nindent 12 }} {{- end }} - args: ["-c", "supervisord/worker.qualityreports.conf"] + args: ["-c", "supervisord/worker.quality_reports.conf"] env: {{- if .Values.redis.enabled }} - name: CVAT_REDIS_HOST From f4423d97e2988fb93a3486b81899f646b63b2f0f Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 6 Jun 2023 11:43:33 +0300 Subject: [PATCH 228/257] Enable code formatting for the quality control app --- .github/workflows/black.yml | 1 + .github/workflows/isort.yml | 1 + cvat/apps/quality_control/apps.py | 5 +- cvat/apps/quality_control/default_settings.py | 2 +- .../migrations/0001_initial.py | 182 ++++- cvat/apps/quality_control/models.py | 85 +- cvat/apps/quality_control/pyproject.toml | 12 + cvat/apps/quality_control/quality_reports.py | 770 +++++++++--------- cvat/apps/quality_control/serializers.py | 99 +-- cvat/apps/quality_control/signals.py | 28 +- cvat/apps/quality_control/urls.py | 12 +- cvat/apps/quality_control/views.py | 261 +++--- dev/format_python_code.sh | 2 +- 13 files changed, 820 insertions(+), 640 deletions(-) create mode 100644 cvat/apps/quality_control/pyproject.toml diff --git a/.github/workflows/black.yml b/.github/workflows/black.yml index 43f0f0f694f9..1fa9da8a9634 100644 --- a/.github/workflows/black.yml +++ b/.github/workflows/black.yml @@ -12,6 +12,7 @@ jobs: cvat-sdk/**/*.py cvat-cli/**/*.py tests/python/**/*.py + cvat/apps/quality_control/**/*.py dir_names: true - name: Run checks diff --git a/.github/workflows/isort.yml b/.github/workflows/isort.yml index c1c84183e93a..87e2d9957b28 100644 --- a/.github/workflows/isort.yml +++ b/.github/workflows/isort.yml @@ -12,6 +12,7 @@ jobs: cvat-sdk/**/*.py cvat-cli/**/*.py tests/python/**/*.py + cvat/apps/quality_control/**/*.py dir_names: true - name: Run checks diff --git a/cvat/apps/quality_control/apps.py b/cvat/apps/quality_control/apps.py index e348d15a1572..761bbddba391 100644 --- a/cvat/apps/quality_control/apps.py +++ b/cvat/apps/quality_control/apps.py @@ -6,12 +6,13 @@ class QualityControlConfig(AppConfig): - name = 'cvat.apps.quality_control' + name = "cvat.apps.quality_control" def ready(self) -> None: - from . import default_settings from django.conf import settings + from . import default_settings + for key in dir(default_settings): if key.isupper() and not hasattr(settings, key): setattr(settings, key, getattr(default_settings, key)) diff --git a/cvat/apps/quality_control/default_settings.py b/cvat/apps/quality_control/default_settings.py index 0765a24cad27..06f5aadaffc3 100644 --- a/cvat/apps/quality_control/default_settings.py +++ b/cvat/apps/quality_control/default_settings.py @@ -4,5 +4,5 @@ import os -QUALITY_CHECK_JOB_DELAY = int(os.getenv('CVAT_QUALITY_CHECK_JOB_DELAY', 15 * 60)) +QUALITY_CHECK_JOB_DELAY = int(os.getenv("CVAT_QUALITY_CHECK_JOB_DELAY", 15 * 60)) "The delay before the next quality check job is queued, in seconds" diff --git a/cvat/apps/quality_control/migrations/0001_initial.py b/cvat/apps/quality_control/migrations/0001_initial.py index e7c279b4424b..6c4326257e67 100644 --- a/cvat/apps/quality_control/migrations/0001_initial.py +++ b/cvat/apps/quality_control/migrations/0001_initial.py @@ -1,7 +1,7 @@ # Generated by Django 3.2.18 on 2023-05-26 10:05 -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models class Migration(migrations.Migration): @@ -9,64 +9,166 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ('engine', '0068_add_job_type_created_date'), + ("engine", "0068_add_job_type_created_date"), ] operations = [ migrations.CreateModel( - name='AnnotationConflict', + name="AnnotationConflict", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('frame', models.PositiveIntegerField()), - ('type', models.CharField(choices=[('missing_annotation', 'MISSING_ANNOTATION'), ('extra_annotation', 'EXTRA_ANNOTATION'), ('mismatching_label', 'MISMATCHING_LABEL'), ('low_overlap', 'LOW_OVERLAP'), ('mismatching_direction', 'MISMATCHING_DIRECTION'), ('mismatching_attributes', 'MISMATCHING_ATTRIBUTES'), ('mismatching_groups', 'MISMATCHING_GROUPS'), ('covered_annotation', 'COVERED_ANNOTATION')], max_length=32)), - ('importance', models.CharField(choices=[('warning', 'WARNING'), ('error', 'ERROR')], max_length=32)), + ( + "id", + models.AutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name="ID" + ), + ), + ("frame", models.PositiveIntegerField()), + ( + "type", + models.CharField( + choices=[ + ("missing_annotation", "MISSING_ANNOTATION"), + ("extra_annotation", "EXTRA_ANNOTATION"), + ("mismatching_label", "MISMATCHING_LABEL"), + ("low_overlap", "LOW_OVERLAP"), + ("mismatching_direction", "MISMATCHING_DIRECTION"), + ("mismatching_attributes", "MISMATCHING_ATTRIBUTES"), + ("mismatching_groups", "MISMATCHING_GROUPS"), + ("covered_annotation", "COVERED_ANNOTATION"), + ], + max_length=32, + ), + ), + ( + "importance", + models.CharField( + choices=[("warning", "WARNING"), ("error", "ERROR")], max_length=32 + ), + ), ], ), migrations.CreateModel( - name='QualitySettings', + name="QualitySettings", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('iou_threshold', models.FloatField()), - ('oks_sigma', models.FloatField()), - ('line_thickness', models.FloatField()), - ('low_overlap_threshold', models.FloatField()), - ('oriented_lines', models.BooleanField()), - ('line_orientation_threshold', models.FloatField()), - ('compare_groups', models.BooleanField()), - ('group_match_threshold', models.FloatField()), - ('check_covered_annotations', models.BooleanField()), - ('object_visibility_threshold', models.FloatField()), - ('panoptic_comparison', models.BooleanField()), - ('compare_attributes', models.BooleanField()), - ('task', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='quality_settings', to='engine.task')), + ( + "id", + models.AutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name="ID" + ), + ), + ("iou_threshold", models.FloatField()), + ("oks_sigma", models.FloatField()), + ("line_thickness", models.FloatField()), + ("low_overlap_threshold", models.FloatField()), + ("oriented_lines", models.BooleanField()), + ("line_orientation_threshold", models.FloatField()), + ("compare_groups", models.BooleanField()), + ("group_match_threshold", models.FloatField()), + ("check_covered_annotations", models.BooleanField()), + ("object_visibility_threshold", models.FloatField()), + ("panoptic_comparison", models.BooleanField()), + ("compare_attributes", models.BooleanField()), + ( + "task", + models.OneToOneField( + on_delete=django.db.models.deletion.CASCADE, + related_name="quality_settings", + to="engine.task", + ), + ), ], ), migrations.CreateModel( - name='QualityReport', + name="QualityReport", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('created_date', models.DateTimeField(auto_now_add=True)), - ('target_last_updated', models.DateTimeField()), - ('gt_last_updated', models.DateTimeField()), - ('data', models.JSONField()), - ('job', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='quality_reports', to='engine.job')), - ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='quality_control.qualityreport')), - ('task', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='quality_reports', to='engine.task')), + ( + "id", + models.AutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name="ID" + ), + ), + ("created_date", models.DateTimeField(auto_now_add=True)), + ("target_last_updated", models.DateTimeField()), + ("gt_last_updated", models.DateTimeField()), + ("data", models.JSONField()), + ( + "job", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="quality_reports", + to="engine.job", + ), + ), + ( + "parent", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="children", + to="quality_control.qualityreport", + ), + ), + ( + "task", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="quality_reports", + to="engine.task", + ), + ), ], ), migrations.CreateModel( - name='AnnotationId', + name="AnnotationId", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('obj_id', models.PositiveIntegerField()), - ('job_id', models.PositiveIntegerField()), - ('type', models.CharField(choices=[('tag', 'TAG'), ('track', 'TRACK'), ('rectangle', 'RECTANGLE'), ('polygon', 'POLYGON'), ('polyline', 'POLYLINE'), ('points', 'POINTS'), ('ellipse', 'ELLIPSE'), ('cuboid', 'CUBOID'), ('mask', 'MASK'), ('skeleton', 'SKELETON')], max_length=32)), - ('conflict', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='annotation_ids', to='quality_control.annotationconflict')), + ( + "id", + models.AutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name="ID" + ), + ), + ("obj_id", models.PositiveIntegerField()), + ("job_id", models.PositiveIntegerField()), + ( + "type", + models.CharField( + choices=[ + ("tag", "TAG"), + ("track", "TRACK"), + ("rectangle", "RECTANGLE"), + ("polygon", "POLYGON"), + ("polyline", "POLYLINE"), + ("points", "POINTS"), + ("ellipse", "ELLIPSE"), + ("cuboid", "CUBOID"), + ("mask", "MASK"), + ("skeleton", "SKELETON"), + ], + max_length=32, + ), + ), + ( + "conflict", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="annotation_ids", + to="quality_control.annotationconflict", + ), + ), ], ), migrations.AddField( - model_name='annotationconflict', - name='report', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='conflicts', to='quality_control.qualityreport'), + model_name="annotationconflict", + name="report", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="conflicts", + to="quality_control.qualityreport", + ), ), ] diff --git a/cvat/apps/quality_control/models.py b/cvat/apps/quality_control/models.py index c23e1f8199b7..3cfea3d482b6 100644 --- a/cvat/apps/quality_control/models.py +++ b/cvat/apps/quality_control/models.py @@ -3,8 +3,8 @@ # SPDX-License-Identifier: MIT from __future__ import annotations -from copy import deepcopy +from copy import deepcopy from enum import Enum from typing import Any, Sequence @@ -12,18 +12,18 @@ from django.db import models from django.forms.models import model_to_dict -from cvat.apps.engine.models import Task, Job +from cvat.apps.engine.models import Job, Task class AnnotationConflictType(str, Enum): - MISSING_ANNOTATION = 'missing_annotation' - EXTRA_ANNOTATION = 'extra_annotation' - MISMATCHING_LABEL = 'mismatching_label' - LOW_OVERLAP = 'low_overlap' - MISMATCHING_DIRECTION = 'mismatching_direction' - MISMATCHING_ATTRIBUTES = 'mismatching_attributes' - MISMATCHING_GROUPS = 'mismatching_groups' - COVERED_ANNOTATION = 'covered_annotation' + MISSING_ANNOTATION = "missing_annotation" + EXTRA_ANNOTATION = "extra_annotation" + MISMATCHING_LABEL = "mismatching_label" + LOW_OVERLAP = "low_overlap" + MISMATCHING_DIRECTION = "mismatching_direction" + MISMATCHING_ATTRIBUTES = "mismatching_attributes" + MISMATCHING_GROUPS = "mismatching_groups" + COVERED_ANNOTATION = "covered_annotation" def __str__(self) -> str: return self.value @@ -34,8 +34,8 @@ def choices(cls): class AnnotationConflictImportance(str, Enum): - WARNING = 'warning' - ERROR = 'error' + WARNING = "warning" + ERROR = "error" def __str__(self) -> str: return self.value @@ -46,8 +46,8 @@ def choices(cls): class MismatchingAnnotationKind(str, Enum): - ATTRIBUTE = 'attribute' - LABEL = 'label' + ATTRIBUTE = "attribute" + LABEL = "label" def __str__(self) -> str: return self.value @@ -58,8 +58,8 @@ def choices(cls): class QualityReportTarget(str, Enum): - JOB = 'job' - TASK = 'task' + JOB = "job" + TASK = "task" def __str__(self) -> str: return self.value @@ -70,13 +70,16 @@ def choices(cls): class QualityReport(models.Model): - job = models.ForeignKey(Job, on_delete=models.CASCADE, - related_name='quality_reports', null=True, blank=True) - task = models.ForeignKey(Task, on_delete=models.CASCADE, - related_name='quality_reports', null=True, blank=True) + job = models.ForeignKey( + Job, on_delete=models.CASCADE, related_name="quality_reports", null=True, blank=True + ) + task = models.ForeignKey( + Task, on_delete=models.CASCADE, related_name="quality_reports", null=True, blank=True + ) - parent = models.ForeignKey('self', on_delete=models.CASCADE, - related_name='children', null=True, blank=True) + parent = models.ForeignKey( + "self", on_delete=models.CASCADE, related_name="children", null=True, blank=True + ) children: Sequence[QualityReport] created_date = models.DateTimeField(auto_now_add=True) @@ -98,6 +101,7 @@ def target(self) -> QualityReportTarget: def _parse_report(self): from cvat.apps.quality_control.quality_reports import ComparisonReport + return ComparisonReport.from_json(self.data) @property @@ -126,13 +130,12 @@ def clean(self): @property def organization_id(self): if task := self.get_task(): - return getattr(task.organization, 'id', None) + return getattr(task.organization, "id", None) return None class AnnotationConflict(models.Model): - report = models.ForeignKey(QualityReport, - on_delete=models.CASCADE, related_name='conflicts') + report = models.ForeignKey(QualityReport, on_delete=models.CASCADE, related_name="conflicts") frame = models.PositiveIntegerField() type = models.CharField(max_length=32, choices=AnnotationConflictType.choices()) importance = models.CharField(max_length=32, choices=AnnotationConflictImportance.choices()) @@ -145,16 +148,16 @@ def organization_id(self): class AnnotationType(str, Enum): - TAG = 'tag' - TRACK = 'track' - RECTANGLE = 'rectangle' - POLYGON = 'polygon' - POLYLINE = 'polyline' - POINTS = 'points' - ELLIPSE = 'ellipse' - CUBOID = 'cuboid' - MASK = 'mask' - SKELETON = 'skeleton' + TAG = "tag" + TRACK = "track" + RECTANGLE = "rectangle" + POLYGON = "polygon" + POLYLINE = "polyline" + POINTS = "points" + ELLIPSE = "ellipse" + CUBOID = "cuboid" + MASK = "mask" + SKELETON = "skeleton" def __str__(self) -> str: return self.value @@ -165,8 +168,9 @@ def choices(cls): class AnnotationId(models.Model): - conflict = models.ForeignKey(AnnotationConflict, - on_delete=models.CASCADE, related_name='annotation_ids') + conflict = models.ForeignKey( + AnnotationConflict, on_delete=models.CASCADE, related_name="annotation_ids" + ) obj_id = models.PositiveIntegerField() job_id = models.PositiveIntegerField() @@ -174,9 +178,7 @@ class AnnotationId(models.Model): class QualitySettings(models.Model): - task = models.OneToOneField(Task, - on_delete=models.CASCADE, related_name='quality_settings' - ) + task = models.OneToOneField(Task, on_delete=models.CASCADE, related_name="quality_settings") iou_threshold = models.FloatField() oks_sigma = models.FloatField() @@ -208,6 +210,7 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: @classmethod def get_defaults(cls) -> dict: import cvat.apps.quality_control.quality_reports as qc + default_settings = qc.DatasetComparator.DEFAULT_SETTINGS.to_dict() existing_fields = {f.name for f in cls._meta.fields} @@ -218,4 +221,4 @@ def to_dict(self): @property def organization_id(self): - return getattr(self.task.organization, 'id', None) + return getattr(self.task.organization, "id", None) diff --git a/cvat/apps/quality_control/pyproject.toml b/cvat/apps/quality_control/pyproject.toml new file mode 100644 index 000000000000..567b78362580 --- /dev/null +++ b/cvat/apps/quality_control/pyproject.toml @@ -0,0 +1,12 @@ +[tool.isort] +profile = "black" +forced_separate = ["tests"] +line_length = 100 +skip_gitignore = true # align tool behavior with Black +known_first_party = ["cvat"] + +# Can't just use a pyproject in the root dir, so duplicate +# https://github.com/psf/black/issues/2863 +[tool.black] +line-length = 100 +target-version = ['py38'] diff --git a/cvat/apps/quality_control/quality_reports.py b/cvat/apps/quality_control/quality_reports.py index 0ae34a9b6035..4b7e9fb91e55 100644 --- a/cvat/apps/quality_control/quality_reports.py +++ b/cvat/apps/quality_control/quality_reports.py @@ -4,44 +4,52 @@ from __future__ import annotations +import itertools +import math from collections import Counter from copy import deepcopy from datetime import timedelta from functools import cached_property, partial from typing import Any, Callable, Dict, Hashable, List, Optional, Sequence, Tuple, Union, cast - -import itertools -import math from uuid import uuid4 -from attrs import asdict, define, fields_dict import datumaro as dm import datumaro.util.mask_tools -from django.db import transaction +import django_rq +import numpy as np +from attrs import asdict, define, fields_dict +from datumaro.util import dump_json, parse_json from django.conf import settings +from django.db import transaction from django.utils import timezone from scipy.optimize import linear_sum_assignment -import django_rq -import numpy as np +from cvat.apps.dataset_manager.bindings import ( + CommonData, + CvatToDmAnnotationConverter, + GetCVATDataExtractor, + JobData, + match_dm_item, +) +from cvat.apps.dataset_manager.formats.registry import dm_env from cvat.apps.dataset_manager.task import JobAnnotation -from cvat.apps.dataset_manager.bindings import (CommonData, CvatToDmAnnotationConverter, - GetCVATDataExtractor, JobData, match_dm_item) from cvat.apps.dataset_manager.util import bulk_create -from cvat.apps.dataset_manager.formats.registry import dm_env - from cvat.apps.engine.models import ( - DimensionType, Job, JobType, ShapeType, Task, StatusChoice, StageChoice + DimensionType, + Job, + JobType, + ShapeType, + StageChoice, + StatusChoice, + Task, ) - +from cvat.apps.profiler import silk_profile +from cvat.apps.quality_control import models from cvat.apps.quality_control.models import ( - AnnotationConflictImportance, AnnotationConflictType, AnnotationType, + AnnotationConflictImportance, + AnnotationConflictType, + AnnotationType, ) -from cvat.apps.quality_control import models - -from cvat.apps.profiler import silk_profile - -from datumaro.util import dump_json, parse_json class _Serializable: @@ -49,12 +57,9 @@ def _value_serializer(self, v): if isinstance(v, _Serializable): return v.to_dict() elif isinstance(v, (list, tuple, set, frozenset)): - return [ self._value_serializer(vv) for vv in v ] + return [self._value_serializer(vv) for vv in v] elif isinstance(v, dict): - return { - self._value_serializer(vk): self._value_serializer(vv) - for vk, vv in v.items() - } + return {self._value_serializer(vk): self._value_serializer(vv) for vk, vv in v.items()} else: return v @@ -89,11 +94,12 @@ def _value_serializer(self, v): @classmethod def from_dict(cls, d: dict): return cls( - obj_id=d['obj_id'], - job_id=d['job_id'], - type=AnnotationType(d['type']), + obj_id=d["obj_id"], + job_id=d["job_id"], + type=AnnotationType(d["type"]), ) + @define(kw_only=True) class AnnotationConflict(_Serializable): frame_id: int @@ -128,14 +134,14 @@ def _value_serializer(self, v): return super()._value_serializer(v) def _fields_dict(self, *, include_properties: Optional[List[str]] = None) -> dict: - return super()._fields_dict(include_properties=include_properties or ['importance']) + return super()._fields_dict(include_properties=include_properties or ["importance"]) @classmethod def from_dict(cls, d: dict): return cls( - frame_id=d['frame_id'], - type=AnnotationConflictType(d['type']), - annotation_ids=list(AnnotationId.from_dict(v) for v in d['annotation_ids']) + frame_id=d["frame_id"], + type=AnnotationConflictType(d["type"]), + annotation_ids=list(AnnotationId.from_dict(v) for v in d["annotation_ids"]), ) @@ -191,7 +197,6 @@ class ComparisonParameters(_Serializable): panoptic_comparison: bool = True "Use only the visible part of the masks and polygons in comparisons" - def _value_serializer(self, v): if isinstance(v, dm.AnnotationType): return str(v.name) @@ -201,7 +206,7 @@ def _value_serializer(self, v): @classmethod def from_dict(cls, d: dict): fields = fields_dict(cls) - return cls(**{ field_name: d[field_name] for field_name in fields if field_name in d }) + return cls(**{field_name: d[field_name] for field_name in fields if field_name in d}) @define(kw_only=True) @@ -214,7 +219,7 @@ class ConfusionMatrix(_Serializable): @property def axes(self): - return dict(cols='gt', rows='ds') + return dict(cols="gt", rows="ds") def _value_serializer(self, v): if isinstance(v, np.ndarray): @@ -223,16 +228,16 @@ def _value_serializer(self, v): return super()._value_serializer(v) def _fields_dict(self, *, include_properties: Optional[List[str]] = None) -> dict: - return super()._fields_dict(include_properties=include_properties or ['axes']) + return super()._fields_dict(include_properties=include_properties or ["axes"]) @classmethod def from_dict(cls, d: dict): return cls( - labels=d['labels'], - rows=np.asarray(d['rows']), - precision=np.asarray(d['precision']), - recall=np.asarray(d['recall']), - accuracy=np.asarray(d['accuracy']), + labels=d["labels"], + rows=np.asarray(d["rows"]), + precision=np.asarray(d["precision"]), + recall=np.asarray(d["recall"]), + accuracy=np.asarray(d["accuracy"]), ) @@ -260,25 +265,30 @@ def recall(self) -> float: def accumulate(self, other: ComparisonReportAnnotationsSummary): for field in [ - 'valid_count', 'missing_count', 'extra_count', 'total_count', 'ds_count', 'gt_count' + "valid_count", + "missing_count", + "extra_count", + "total_count", + "ds_count", + "gt_count", ]: setattr(self, field, getattr(self, field) + getattr(other, field)) def _fields_dict(self, *, include_properties: Optional[List[str]] = None) -> dict: return super()._fields_dict( - include_properties=include_properties or ['accuracy', 'precision', 'recall'] + include_properties=include_properties or ["accuracy", "precision", "recall"] ) @classmethod def from_dict(cls, d: dict): return cls( - valid_count=d['valid_count'], - missing_count=d['missing_count'], - extra_count=d['extra_count'], - total_count=d['total_count'], - ds_count=d['ds_count'], - gt_count=d['gt_count'], - confusion_matrix=ConfusionMatrix.from_dict(d['confusion_matrix']) + valid_count=d["valid_count"], + missing_count=d["missing_count"], + extra_count=d["extra_count"], + total_count=d["total_count"], + ds_count=d["ds_count"], + gt_count=d["gt_count"], + confusion_matrix=ConfusionMatrix.from_dict(d["confusion_matrix"]), ) @@ -298,23 +308,28 @@ def accuracy(self) -> float: def accumulate(self, other: ComparisonReportAnnotationShapeSummary): for field in [ - 'valid_count', 'missing_count', 'extra_count', 'total_count', 'ds_count', 'gt_count' + "valid_count", + "missing_count", + "extra_count", + "total_count", + "ds_count", + "gt_count", ]: setattr(self, field, getattr(self, field) + getattr(other, field)) def _fields_dict(self, *, include_properties: Optional[List[str]] = None) -> dict: - return super()._fields_dict(include_properties=include_properties or ['accuracy']) + return super()._fields_dict(include_properties=include_properties or ["accuracy"]) @classmethod def from_dict(cls, d: dict): return cls( - valid_count=d['valid_count'], - missing_count=d['missing_count'], - extra_count=d['extra_count'], - total_count=d['total_count'], - ds_count=d['ds_count'], - gt_count=d['gt_count'], - mean_iou=d['mean_iou'], + valid_count=d["valid_count"], + missing_count=d["missing_count"], + extra_count=d["extra_count"], + total_count=d["total_count"], + ds_count=d["ds_count"], + gt_count=d["gt_count"], + mean_iou=d["mean_iou"], ) @@ -329,20 +344,21 @@ def accuracy(self) -> float: return self.valid_count / (self.total_count or 1) def accumulate(self, other: ComparisonReportAnnotationLabelSummary): - for field in ['valid_count', 'total_count', 'invalid_count']: + for field in ["valid_count", "total_count", "invalid_count"]: setattr(self, field, getattr(self, field) + getattr(other, field)) def _fields_dict(self, *, include_properties: Optional[List[str]] = None) -> dict: - return super()._fields_dict(include_properties=include_properties or ['accuracy']) + return super()._fields_dict(include_properties=include_properties or ["accuracy"]) @classmethod def from_dict(cls, d: dict): return cls( - valid_count=d['valid_count'], - invalid_count=d['invalid_count'], - total_count=d['total_count'], + valid_count=d["valid_count"], + invalid_count=d["invalid_count"], + total_count=d["total_count"], ) + @define(kw_only=True) class ComparisonReportAnnotationComponentsSummary(_Serializable): shape: ComparisonReportAnnotationShapeSummary @@ -355,8 +371,8 @@ def accumulate(self, other: ComparisonReportAnnotationComponentsSummary): @classmethod def from_dict(cls, d: dict): return cls( - shape=ComparisonReportAnnotationShapeSummary.from_dict(d['shape']), - label=ComparisonReportAnnotationLabelSummary.from_dict(d['label']), + shape=ComparisonReportAnnotationShapeSummary.from_dict(d["shape"]), + label=ComparisonReportAnnotationLabelSummary.from_dict(d["label"]), ) @@ -388,26 +404,32 @@ def _value_serializer(self, v): return super()._value_serializer(v) def _fields_dict(self, *, include_properties: Optional[List[str]] = None) -> dict: - return super()._fields_dict(include_properties=include_properties or [ - 'frame_count', 'mean_conflict_count', - 'warning_count', 'error_count', 'conflicts_by_type' - ]) + return super()._fields_dict( + include_properties=include_properties + or [ + "frame_count", + "mean_conflict_count", + "warning_count", + "error_count", + "conflicts_by_type", + ] + ) @classmethod def from_dict(cls, d: dict): return cls( - frame_share_percent=d['frame_share_percent'], - frames=list(d['frames']), - conflict_count=d['conflict_count'], - warning_count=d.get('warning_count', 0), - error_count=d.get('error_count', 0), + frame_share_percent=d["frame_share_percent"], + frames=list(d["frames"]), + conflict_count=d["conflict_count"], + warning_count=d.get("warning_count", 0), + error_count=d.get("error_count", 0), conflicts_by_type={ - AnnotationConflictType(k): v - for k, v in d.get('conflicts_by_type', {}).items() + AnnotationConflictType(k): v for k, v in d.get("conflicts_by_type", {}).items() }, - annotations=ComparisonReportAnnotationsSummary.from_dict(d['annotations']), + annotations=ComparisonReportAnnotationsSummary.from_dict(d["annotations"]), annotation_components=ComparisonReportAnnotationComponentsSummary.from_dict( - d['annotation_components']), + d["annotation_components"] + ), ) @@ -421,17 +443,15 @@ def conflict_count(self) -> int: @cached_property def warning_count(self) -> int: - return len([ - c for c in self.conflicts - if c.importance == AnnotationConflictImportance.WARNING - ]) + return len( + [c for c in self.conflicts if c.importance == AnnotationConflictImportance.WARNING] + ) @cached_property def error_count(self) -> int: - return len([ - c for c in self.conflicts - if c.importance == AnnotationConflictImportance.ERROR - ]) + return len( + [c for c in self.conflicts if c.importance == AnnotationConflictImportance.ERROR] + ) @cached_property def conflicts_by_type(self) -> Dict[AnnotationConflictType, int]: @@ -440,10 +460,10 @@ def conflicts_by_type(self) -> Dict[AnnotationConflictType, int]: annotations: ComparisonReportAnnotationsSummary annotation_components: ComparisonReportAnnotationComponentsSummary - _CACHED_FIELDS = ['conflict_count', 'warning_count', 'error_count', 'conflicts_by_type'] + _CACHED_FIELDS = ["conflict_count", "warning_count", "error_count", "conflicts_by_type"] def _value_serializer(self, v): - if isinstance(v , AnnotationConflictType): + if isinstance(v, AnnotationConflictType): return str(v) else: return super()._value_serializer(v) @@ -462,20 +482,22 @@ def _fields_dict(self, *, include_properties: Optional[List[str]] = None) -> dic @classmethod def from_dict(cls, d: dict): optional_fields = set(cls._CACHED_FIELDS) - { - 'conflicts_by_type' # requires extra conversion + "conflicts_by_type" # requires extra conversion } return cls( - **{ field: d[field] for field in optional_fields if field in d }, + **{field: d[field] for field in optional_fields if field in d}, **dict( conflicts_by_type={ - AnnotationConflictType(k): v - for k, v in d['conflicts_by_type'].items() + AnnotationConflictType(k): v for k, v in d["conflicts_by_type"].items() } - ) if 'conflicts_by_type' in d else {}, - conflicts=[AnnotationConflict.from_dict(v) for v in d['conflicts']], - annotations=ComparisonReportAnnotationsSummary.from_dict(d['annotations']), + ) + if "conflicts_by_type" in d + else {}, + conflicts=[AnnotationConflict.from_dict(v) for v in d["conflicts"]], + annotations=ComparisonReportAnnotationsSummary.from_dict(d["annotations"]), annotation_components=ComparisonReportAnnotationComponentsSummary.from_dict( - d['annotation_components']), + d["annotation_components"] + ), ) @@ -492,25 +514,26 @@ def conflicts(self) -> List[AnnotationConflict]: @classmethod def from_dict(cls, d: Dict[str, Any]) -> ComparisonReport: return cls( - parameters=ComparisonParameters.from_dict(d['parameters']), - comparison_summary=ComparisonReportComparisonSummary.from_dict(d['comparison_summary']), + parameters=ComparisonParameters.from_dict(d["parameters"]), + comparison_summary=ComparisonReportComparisonSummary.from_dict(d["comparison_summary"]), frame_results={ int(k): ComparisonReportFrameSummary.from_dict(v) - for k, v in d['frame_results'].items() - } + for k, v in d["frame_results"].items() + }, ) def to_json(self) -> str: d = self.to_dict() # String keys are needed for json dumping - d["frame_results"] = {str(k): v for k, v in d['frame_results'].items()} + d["frame_results"] = {str(k): v for k, v in d["frame_results"].items()} return dump_json(d, indent=True, append_newline=True).decode() @classmethod def from_json(cls, data: str) -> ComparisonReport: return cls.from_dict(parse_json(data)) + class JobDataProvider: @classmethod def add_prefetch_info(cls, queryset): @@ -532,9 +555,7 @@ def __init__(self, job_id: int, *, queryset=None, included_frames=None) -> None: @cached_property def dm_dataset(self): - extractor = GetCVATDataExtractor(self.job_data, - convert_annotations=self._annotation_memo - ) + extractor = GetCVATDataExtractor(self.job_data, convert_annotations=self._annotation_memo) return dm.Dataset.from_extractors(extractor, env=dm_env) def dm_item_id_to_frame_id(self, item: dm.DatasetItem) -> int: @@ -542,9 +563,9 @@ def dm_item_id_to_frame_id(self, item: dm.DatasetItem) -> int: def dm_ann_to_ann_id(self, ann: dm.Annotation) -> AnnotationId: source_ann = self._annotation_memo.get_source_ann(ann) - if 'track_id' in ann.attributes: + if "track_id" in ann.attributes: source_ann_id = source_ann.track_id - ann_type = 'track' + ann_type = "track" else: if isinstance(source_ann, CommonData.LabeledShape): ann_type = AnnotationType(source_ann.type) @@ -558,7 +579,7 @@ def dm_ann_to_ann_id(self, ann: dm.Annotation) -> AnnotationId: class _MemoizingAnnotationConverterFactory: def __init__(self): - self._annotation_mapping = {} # dm annotation -> cvat annotation + self._annotation_mapping = {} # dm annotation -> cvat annotation def remember_conversion(self, cvat_ann, dm_anns): for dm_ann in dm_anns: @@ -579,12 +600,9 @@ def __call__(self, *args, **kwargs) -> List[dm.Annotation]: converter = _MemoizingAnnotationConverter(*args, factory=self, **kwargs) return converter.convert() + class _MemoizingAnnotationConverter(CvatToDmAnnotationConverter): - def __init__(self, - *args, - factory: _MemoizingAnnotationConverterFactory, - **kwargs - ) -> None: + def __init__(self, *args, factory: _MemoizingAnnotationConverterFactory, **kwargs) -> None: super().__init__(*args, **kwargs) self._factory = factory @@ -604,6 +622,7 @@ def _convert_shape(self, shape, *, index): self._factory.remember_conversion(shape, converted) return converted + def _match_segments( a_segms, b_segms, @@ -615,13 +634,15 @@ def _match_segments( assert callable(label_matcher), label_matcher max_anns = max(len(a_segms), len(b_segms)) - distances = np.array([ + distances = np.array( [ - 1 - distance(a, b) if a is not None and b is not None else 1 - for b, _ in itertools.zip_longest(b_segms, range(max_anns), fillvalue=None) + [ + 1 - distance(a, b) if a is not None and b is not None else 1 + for b, _ in itertools.zip_longest(b_segms, range(max_anns), fillvalue=None) + ] + for a, _ in itertools.zip_longest(a_segms, range(max_anns), fillvalue=None) ] - for a, _ in itertools.zip_longest(a_segms, range(max_anns), fillvalue=None) - ]) + ) distances[distances > 1 - dist_thresh] = 1 if a_segms and b_segms: @@ -659,6 +680,7 @@ def _match_segments( return matches, mispred, a_unmatched, b_unmatched + def _OKS(a, b, sigma=0.1, bbox=None, scale=None, visibility=None): """ Object Keypoint Similarity metric. @@ -681,9 +703,9 @@ def _OKS(a, b, sigma=0.1, bbox=None, scale=None, visibility=None): scale = bbox[2] * bbox[3] dists = np.linalg.norm(p1 - p2, axis=1) - return np.sum( - visibility * np.exp(-(dists**2) / (2 * scale * (2 * sigma) ** 2)) - ) / np.sum(visibility) + return np.sum(visibility * np.exp(-(dists**2) / (2 * scale * (2 * sigma) ** 2))) / np.sum( + visibility + ) @define(kw_only=True) @@ -709,6 +731,7 @@ def _arr_div(a_arr: np.ndarray, b_arr: np.ndarray) -> np.ndarray: divisor[b_arr == 0] = 1 return a_arr / divisor + def _to_rle(ann: dm.Annotation, *, img_h: int, img_w: int): from pycocotools import mask as mask_utils @@ -721,6 +744,7 @@ def _to_rle(ann: dm.Annotation, *, img_h: int, img_w: int): else: assert False + def _segment_iou(a: dm.Annotation, b: dm.Annotation, *, img_h: int, img_w: int) -> float: """ Generic IoU computation with masks and polygons. @@ -738,6 +762,7 @@ def _segment_iou(a: dm.Annotation, b: dm.Annotation, *, img_h: int, img_w: int) # Note that mask_utils.iou expects (dt, gt). Check this if the 3rd param is True return float(mask_utils.iou(b, a, [0])) + @define(kw_only=True) class _LineMatcher(dm.ops.LineMatcher): EPSILON = 1e-7 @@ -767,8 +792,7 @@ def _get_bbox_circle(ann: dm.PolyLine): # Approximate lines to the same number of points for pointwise comparison a, b = self.approximate_points( - np.array(gt_ann.points).reshape((-1, 2)), - np.array(ds_ann.points).reshape((-1, 2)) + np.array(gt_ann.points).reshape((-1, 2)), np.array(ds_ann.points).reshape((-1, 2)) ) # Compare the direct and, optionally, the reverse variants @@ -791,9 +815,7 @@ def _compare_lines(self, a: np.ndarray, b: np.ndarray) -> float: scale = np.sum(segment_dists) ** 2 # Compute Gaussian for approximated lines similarly to OKS - return sum( - np.exp(-(dists**2) / (2 * scale * (2 * self.torso_r) ** 2)) - ) / len(a) + return sum(np.exp(-(dists**2) / (2 * scale * (2 * self.torso_r) ** 2))) / len(a) @classmethod def approximate_points(cls, a: np.ndarray, b: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: @@ -814,14 +836,14 @@ def approximate_points(cls, a: np.ndarray, b: np.ndarray) -> Tuple[np.ndarray, n for l in a_segment_lengths: a_segment_end_dists.append(a_segment_end_dists[-1] + l) a_segment_end_dists.pop(0) - a_segment_end_dists.append(a_segment_end_dists[-1]) # duplicate for simpler code + a_segment_end_dists.append(a_segment_end_dists[-1]) # duplicate for simpler code b_segment_lengths = np.linalg.norm(b[1:] - b[:-1], axis=1) b_segment_end_dists = [0] for l in b_segment_lengths: b_segment_end_dists.append(b_segment_end_dists[-1] + l) b_segment_end_dists.pop(0) - b_segment_end_dists.append(b_segment_end_dists[-1]) # duplicate for simpler code + b_segment_end_dists.append(b_segment_end_dists[-1]) # duplicate for simpler code a_length = a_segment_end_dists[-1] b_length = b_segment_end_dists[-1] @@ -849,8 +871,9 @@ def approximate_points(cls, a: np.ndarray, b: np.ndarray) -> Tuple[np.ndarray, n if abs(q) <= cls.EPSILON: b_new_points[next_point_idx] = b[1 + b_segment_idx] else: - b_new_points[next_point_idx] = \ - b[b_segment_idx] * q + b[1 + b_segment_idx] * (1 - q) + b_new_points[next_point_idx] = b[b_segment_idx] * q + b[ + 1 + b_segment_idx + ] * (1 - q) elif b_segment_idx == b_segment_count: b_new_points[next_point_idx] = b[b_segment_idx] @@ -867,8 +890,9 @@ def approximate_points(cls, a: np.ndarray, b: np.ndarray) -> Tuple[np.ndarray, n if abs(q) <= cls.EPSILON: a_new_points[next_point_idx] = a[1 + a_segment_idx] else: - a_new_points[next_point_idx] = \ - a[a_segment_idx] * q + a[1 + a_segment_idx] * (1 - q) + a_new_points[next_point_idx] = a[a_segment_idx] * q + a[ + 1 + a_segment_idx + ] * (1 - q) elif a_segment_idx == a_segment_count: a_new_points[next_point_idx] = a[a_segment_idx] @@ -886,6 +910,7 @@ def approximate_points(cls, a: np.ndarray, b: np.ndarray) -> Tuple[np.ndarray, n return a_new_points, b_new_points + class _DistanceComparator(dm.ops.DistanceComparator): def __init__( self, @@ -893,13 +918,10 @@ def __init__( *, included_ann_types: Optional[List[dm.AnnotationType]] = None, return_distances: bool = False, - iou_threshold: float = 0.5, - # https://cocodataset.org/#keypoints-eval # https://github.com/cocodataset/cocoapi/blob/8c9bcc3cf640524c4c20a9c40e89cb6a2f2fa0e9/PythonAPI/pycocotools/cocoeval.py#L523 oks_sigma: float = 0.09, - oriented_lines: bool = False, line_torso_radius: float = 0.01, panoptic_comparison: bool = False, @@ -929,16 +951,13 @@ def _instance_bbox( return dm.ops.max_bbox( a.get_bbox() if isinstance(a, dm.Skeleton) else a for a in instance_anns - if hasattr(a, 'get_bbox') - and not a.attributes.get('outside', False) + if hasattr(a, "get_bbox") and not a.attributes.get("outside", False) ) @staticmethod def _get_ann_type(t, item: dm.Annotation) -> Sequence[dm.Annotation]: return [ - a for a in item.annotations - if a.type == t - and not a.attributes.get('outside', False) + a for a in item.annotations if a.type == t and not a.attributes.get("outside", False) ] def _match_ann_type(self, t, *args): @@ -962,7 +981,12 @@ def _match_ann_type(self, t, *args): else: return None - def _match_segments(self, t, item_a, item_b, *, + def _match_segments( + self, + t, + item_a, + item_b, + *, distance: Callable = dm.ops.segment_iou, label_matcher: Callable = None, a_objs: Optional[Sequence[dm.Annotation]] = None, @@ -982,21 +1006,21 @@ def _match_segments(self, t, item_a, item_b, *, else: extra_args = {} if label_matcher: - extra_args['label_matcher'] = label_matcher + extra_args["label_matcher"] = label_matcher - returned_values = _match_segments(a_objs, b_objs, - distance=distance, dist_thresh=self.iou_threshold, **extra_args + returned_values = _match_segments( + a_objs, b_objs, distance=distance, dist_thresh=self.iou_threshold, **extra_args ) if self.return_distances: - returned_values = returned_values + (distances, ) + returned_values = returned_values + (distances,) return returned_values def match_boxes(self, item_a, item_b): def _to_polygon(bbox_ann: dm.Bbox): points = bbox_ann.as_polygon() - angle = bbox_ann.attributes.get('rotation', 0) / 180 * math.pi + angle = bbox_ann.attributes.get("rotation", 0) / 180 * math.pi if angle: points = np.reshape(points, (-1, 2)) @@ -1011,19 +1035,24 @@ def _to_polygon(bbox_ann: dm.Bbox): return dm.Polygon(points) def _bbox_iou(a: dm.Bbox, b: dm.Bbox, *, img_w: int, img_h: int) -> float: - if a.attributes.get('rotation', 0) == b.attributes.get('rotation', 0): + if a.attributes.get("rotation", 0) == b.attributes.get("rotation", 0): return dm.ops.bbox_iou(a, b) else: return _segment_iou(_to_polygon(a), _to_polygon(b), img_h=img_h, img_w=img_w) img_h, img_w = item_a.image.size - return self._match_segments(dm.AnnotationType.bbox, item_a, item_b, - distance=partial(_bbox_iou, img_h=img_h, img_w=img_w)) + return self._match_segments( + dm.AnnotationType.bbox, + item_a, + item_b, + distance=partial(_bbox_iou, img_h=img_h, img_w=img_w), + ) def match_segmentations(self, item_a, item_b): def _get_segmentations(item): - return self._get_ann_type(dm.AnnotationType.polygon, item) + \ - self._get_ann_type(dm.AnnotationType.mask, item) + return self._get_ann_type(dm.AnnotationType.polygon, item) + self._get_ann_type( + dm.AnnotationType.mask, item + ) img_h, img_w = item_a.image.size @@ -1032,7 +1061,7 @@ def _find_instances(annotations): # Annotations with the same label and group will be merged, # and considered a single object in comparison instances = [] - instance_map = {} # ann id -> instance id + instance_map = {} # ann id -> instance id for ann_group in dm.ops.find_instances(annotations): ann_group = sorted(ann_group, key=lambda a: a.label) for _, label_group in itertools.groupby(ann_group, key=lambda a: a.label): @@ -1045,14 +1074,13 @@ def _find_instances(annotations): return instances, instance_map def _get_compiled_mask( - anns: Sequence[dm.Annotation], - *, - instance_ids: Dict[int, int] + anns: Sequence[dm.Annotation], *, instance_ids: Dict[int, int] ) -> dm.CompiledMask: if not anns: return None from pycocotools import mask as mask_utils + object_rle_groups = [_to_rle(ann, img_h=img_h, img_w=img_w) for ann in anns] object_rles = [mask_utils.merge(g) for g in object_rle_groups] object_masks = mask_utils.decode(object_rles) @@ -1074,19 +1102,20 @@ def _get_compiled_mask( list(itertools.chain.from_iterable(a_instances)), instance_ids=[ a_instance_map[id(ann)] for ann in itertools.chain.from_iterable(a_instances) - ] + ], ) b_compiled_mask = _get_compiled_mask( list(itertools.chain.from_iterable(b_instances)), instance_ids=[ b_instance_map[id(ann)] for ann in itertools.chain.from_iterable(b_instances) - ] + ], ) else: a_compiled_mask = None b_compiled_mask = None segment_cache = {} + def _get_segment( obj_id: int, *, compiled_mask: Optional[dm.CompiledMask] = None, instances ): @@ -1095,6 +1124,7 @@ def _get_segment( if rle is None: from pycocotools import mask as mask_utils + if compiled_mask is not None: mask = compiled_mask.extract(obj_id + 1) @@ -1103,8 +1133,7 @@ def _get_segment( # Create merged RLE for the instance shapes object_anns = instances[obj_id] object_rle_groups = [ - _to_rle(ann, img_h=img_h, img_w=img_w) - for ann in object_anns + _to_rle(ann, img_h=img_h, img_w=img_w) for ann in object_anns ] rle = mask_utils.merge(list(itertools.chain.from_iterable(object_rle_groups))) @@ -1113,14 +1142,11 @@ def _get_segment( return rle def _segment_comparator(a_inst_id: int, b_inst_id: int) -> float: - a_segm = _get_segment( - a_inst_id, compiled_mask=a_compiled_mask, instances=a_instances - ) - b_segm = _get_segment( - b_inst_id, compiled_mask=b_compiled_mask, instances=b_instances - ) + a_segm = _get_segment(a_inst_id, compiled_mask=a_compiled_mask, instances=a_instances) + b_segm = _get_segment(b_inst_id, compiled_mask=b_compiled_mask, instances=b_instances) from pycocotools import mask as mask_utils + return float(mask_utils.iou([b_segm], [a_segm], [0])[0]) def _label_matcher(a_inst_id: int, b_inst_id: int) -> bool: @@ -1131,9 +1157,13 @@ def _label_matcher(a_inst_id: int, b_inst_id: int) -> bool: return a.label == b.label results = self._match_segments( - dm.AnnotationType.polygon, item_a, item_b, - a_objs=range(len(a_instances)), b_objs=range(len(b_instances)), - distance=_segment_comparator, label_matcher=_label_matcher + dm.AnnotationType.polygon, + item_a, + item_b, + a_objs=range(len(a_instances)), + b_objs=range(len(b_instances)), + distance=_segment_comparator, + label_matcher=_label_matcher, ) # restore results for original annotations @@ -1166,7 +1196,7 @@ def _label_matcher(a_inst_id: int, b_inst_id: int) -> bool: returned_values = (matched, mismatched, a_extra, b_extra) if self.return_distances: - returned_values = returned_values + (distances, ) + returned_values = returned_values + (distances,) return returned_values @@ -1174,16 +1204,17 @@ def match_lines(self, item_a, item_b): matcher = _LineMatcher( oriented=self.oriented_lines, torso_r=self.line_torso_radius, - scale=np.prod(item_a.image.size) + scale=np.prod(item_a.image.size), + ) + return self._match_segments( + dm.AnnotationType.polyline, item_a, item_b, distance=matcher.distance ) - return self._match_segments(dm.AnnotationType.polyline, item_a, item_b, - distance=matcher.distance) def match_points(self, item_a, item_b): a_points = self._get_ann_type(dm.AnnotationType.points, item_a) b_points = self._get_ann_type(dm.AnnotationType.points, item_b) - instance_map = {} # points id -> (instance group, instance bbox) + instance_map = {} # points id -> (instance group, instance bbox) for source_anns in [item_a.annotations, item_b.annotations]: source_instances = dm.ops.find_instances(source_anns) for instance_group in source_instances: @@ -1224,11 +1255,13 @@ def _distance(a: dm.Points, b: dm.Points) -> float: range(len(a_points)), range(len(b_points)), distance=lambda ai, bi: _OKS( - dm.Points(a_points[ai]), dm.Points(b_points[bi]), - sigma=self.oks_sigma, scale=scale + dm.Points(a_points[ai]), + dm.Points(b_points[bi]), + sigma=self.oks_sigma, + scale=scale, ), dist_thresh=self.iou_threshold, - label_matcher=lambda ai, bi: True + label_matcher=lambda ai, bi: True, ) # the exact array is determined by the label matcher @@ -1244,11 +1277,14 @@ def _distance(a: dm.Points, b: dm.Points) -> float: # Compute OKS for 2 groups of points, matching points aligned dists = np.linalg.norm(a_points - b_points, axis=1) - return np.sum( - np.exp(-(dists**2) / (2 * scale * (2 * self.oks_sigma) ** 2)) - ) / (len(matched_points) + len(a_extra) + len(b_extra)) + return np.sum(np.exp(-(dists**2) / (2 * scale * (2 * self.oks_sigma) ** 2))) / ( + len(matched_points) + len(a_extra) + len(b_extra) + ) - return self._match_segments(dm.AnnotationType.points, item_a, item_b, + return self._match_segments( + dm.AnnotationType.points, + item_a, + item_b, a_objs=a_points, b_objs=b_points, distance=_distance, @@ -1263,9 +1299,7 @@ def _get_skeleton_info(self, skeleton_label_id: int): # Build a sorted list of sublabels to arrange skeleton points during comparison skeleton_info = sorted( - idx - for idx, label in enumerate(label_cat) - if label.parent == skeleton_label_name + idx for idx, label in enumerate(label_cat) if label.parent == skeleton_label_name ) self._skeleton_info[skeleton_label_id] = skeleton_info @@ -1300,13 +1334,12 @@ def match_skeletons(self, item_a, item_b): # Build a single Points object for further comparisons merged_points = dm.Points() - merged_points.points = np.ravel([ - p.points if p else [0, 0] for p in skeleton_points - ]) - merged_points.visibility = np.ravel([ - p.visibility if p else [dm.Points.Visibility.absent] - for p in skeleton_points - ]) + merged_points.points = np.ravel( + [p.points if p else [0, 0] for p in skeleton_points] + ) + merged_points.visibility = np.ravel( + [p.visibility if p else [dm.Points.Visibility.absent] for p in skeleton_points] + ) merged_points.label = skeleton.label # no per-point attributes currently in CVAT @@ -1335,7 +1368,9 @@ def match_skeletons(self, item_a, item_b): matcher = _KeypointsMatcher(instance_map=instance_map, sigma=self.oks_sigma) results = self._match_segments( - dm.AnnotationType.points, item_a, item_b, + dm.AnnotationType.points, + item_a, + item_b, a_objs=a_points, b_objs=b_points, distance=matcher.distance, @@ -1346,9 +1381,7 @@ def match_skeletons(self, item_a, item_b): distances = results[4] matched = [(points_map[id(p_a)], points_map[id(p_b)]) for (p_a, p_b) in matched] - mismatched = [ - (points_map[id(p_a)], points_map[id(p_b)]) for (p_a, p_b) in mismatched - ] + mismatched = [(points_map[id(p_a)], points_map[id(p_b)]) for (p_a, p_b) in mismatched] a_extra = [points_map[id(p_a)] for p_a in a_extra] b_extra = [points_map[id(p_b)] for p_b in b_extra] @@ -1356,15 +1389,12 @@ def match_skeletons(self, item_a, item_b): if self.return_distances: for (p_a_id, p_b_id) in list(distances.keys()): dist = distances.pop((p_a_id, p_b_id)) - distances[( - id(points_map[p_a_id]), - id(points_map[p_b_id]) - )] = dist + distances[(id(points_map[p_a_id]), id(points_map[p_b_id]))] = dist returned_values = (matched, mismatched, a_extra, b_extra) if self.return_distances: - returned_values = returned_values + (distances, ) + returned_values = returned_values + (distances,) return returned_values @@ -1392,6 +1422,7 @@ def memoizing_distance(a, b): def match_annotations(self, item_a, item_b): return {t: self._match_ann_type(t, item_a, item_b) for t in self.included_ann_types} + def _find_covered_segments( segments, *, img_w: int, img_h: int, visibility_threshold: float = 0.01 ) -> Sequence[int]: @@ -1401,7 +1432,7 @@ def _find_covered_segments( input_rles = [mask_utils.frPyObjects(s, img_h, img_w) for s in segments] covered_ids = [] for i, bottom_rles in enumerate(input_rles): - top_rles = input_rles[i+1:] + top_rles = input_rles[i + 1 :] top_rle = mask_utils.merge(list(itertools.chain.from_iterable(top_rles))) intersection_rle = mask_utils.merge([top_rle] + bottom_rles, intersect=True) union_rle = mask_utils.merge([top_rle] + bottom_rles) @@ -1420,12 +1451,9 @@ def _find_covered_segments( return covered_ids + class _Comparator: - def __init__(self, - categories: dm.CategoriesInfo, - *, - settings: ComparisonParameters - ): + def __init__(self, categories: dm.CategoriesInfo, *, settings: ComparisonParameters): self.ignored_attrs = set(settings.ignored_attributes) | { "track_id", # changes from task to task, can't be defined manually with the same name "keyframe", # indicates the way annotation obtained, meaningless to compare @@ -1437,16 +1465,14 @@ def __init__(self, self.included_ann_types = settings.included_annotation_types self._annotation_comparator = _DistanceComparator( categories, - included_ann_types=set(self.included_ann_types) - { - dm.AnnotationType.mask # masks are compared together with polygons - }, + included_ann_types=set(self.included_ann_types) + - {dm.AnnotationType.mask}, # masks are compared together with polygons return_distances=True, - panoptic_comparison=settings.panoptic_comparison, iou_threshold=settings.iou_threshold, oks_sigma=settings.oks_sigma, line_torso_radius=settings.line_thickness, - oriented_lines=False # should not be taken from outside, handled differently + oriented_lines=False, # should not be taken from outside, handled differently ) self.coverage_threshold = settings.object_visibility_threshold self.group_match_threshold = settings.group_match_threshold @@ -1482,13 +1508,12 @@ def match_attrs(self, ann_a: dm.Annotation, ann_b: dm.Annotation): def find_groups( self, item: dm.DatasetItem ) -> Tuple[Dict[int, List[dm.Annotation]], Dict[int, int]]: - ann_groups = dm.ops.find_instances([ - ann for ann in item.annotations - if ann.type in self.included_ann_types - ]) + ann_groups = dm.ops.find_instances( + [ann for ann in item.annotations if ann.type in self.included_ann_types] + ) groups = {} - group_map = {} # ann id -> group id + group_map = {} # ann id -> group id for group_id, group in enumerate(ann_groups): groups[group_id] = group for ann in group: @@ -1510,10 +1535,11 @@ def _group_distance(gt_group_id, ds_group_id): return intersection / (union or 1) matches, mismatches, gt_unmatched, ds_unmatched = _match_segments( - list(gt_groups), list(ds_groups), + list(gt_groups), + list(ds_groups), distance=_group_distance, label_matcher=lambda a, b: _group_distance(a, b) == 1, - dist_thresh=self.group_match_threshold + dist_thresh=self.group_match_threshold, ) ds_to_gt_groups = { @@ -1529,10 +1555,13 @@ def _group_distance(gt_group_id, ds_group_id): def find_covered(self, item: dm.DatasetItem) -> List[dm.Annotation]: # Get annotations that can cover or be covered spatial_types = { - dm.AnnotationType.polygon, dm.AnnotationType.mask, dm.AnnotationType.bbox + dm.AnnotationType.polygon, + dm.AnnotationType.mask, + dm.AnnotationType.bbox, }.intersection(self.included_ann_types) - anns = sorted([a for a in item.annotations if a.type in spatial_types], - key=lambda a: a.z_order) + anns = sorted( + [a for a in item.annotations if a.type in spatial_types], key=lambda a: a.z_order + ) segms = [] for ann in anns: @@ -1546,8 +1575,8 @@ def find_covered(self, item: dm.DatasetItem) -> List[dm.Annotation]: assert False img_h, img_w = item.image.size - covered_ids = _find_covered_segments(segms, - img_w=img_w, img_h=img_h, visibility_threshold=self.coverage_threshold + covered_ids = _find_covered_segments( + segms, img_w=img_w, img_h=img_h, visibility_threshold=self.coverage_threshold ) return [anns[i] for i in covered_ids] @@ -1567,8 +1596,8 @@ def match_annotations(self, item_a: dm.DatasetItem, item_b: dm.DatasetItem): return merged_results - def get_distance(self, - pairwise_distances, gt_ann: dm.Annotation, ds_ann: dm.Annotation + def get_distance( + self, pairwise_distances, gt_ann: dm.Annotation, ds_ann: dm.Annotation ) -> Optional[float]: return pairwise_distances.get((id(gt_ann), id(ds_ann))) @@ -1576,11 +1605,12 @@ def get_distance(self, class DatasetComparator: DEFAULT_SETTINGS = ComparisonParameters() - def __init__(self, + def __init__( + self, ds_data_provider: JobDataProvider, gt_data_provider: JobDataProvider, *, - settings: Optional[ComparisonParameters] = None + settings: Optional[ComparisonParameters] = None, ) -> None: if settings is None: settings = self.DEFAULT_SETTINGS @@ -1629,8 +1659,9 @@ def _process_frame(self, ds_item, gt_item): frame_results = self.comparator.match_annotations(gt_item, ds_item) self._frame_results.setdefault(frame_id, {}) - self._generate_frame_annotation_conflicts(frame_id, frame_results, - gt_item=gt_item, ds_item=ds_item) + self._generate_frame_annotation_conflicts( + frame_id, frame_results, gt_item=gt_item, ds_item=ds_item + ) def _generate_frame_annotation_conflicts( self, frame_id: str, frame_results, *, gt_item: dm.DatasetItem, ds_item: dm.DatasetItem @@ -1643,9 +1674,7 @@ def _get_similarity(gt_ann: dm.Annotation, ds_ann: dm.Annotation) -> Optional[fl return self.comparator.get_distance(pairwise_distances, gt_ann, ds_ann) _matched_shapes = set( - id(shape) - for shape_pair in itertools.chain(matches, mismatches) - for shape in shape_pair + id(shape) for shape_pair in itertools.chain(matches, mismatches) for shape in shape_pair ) def _find_closest_unmatched_shape(shape: dm.Annotation): @@ -1669,23 +1698,23 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): for gt_ann, ds_ann in itertools.chain(matches, mismatches): similarity = _get_similarity(gt_ann, ds_ann) if similarity and similarity < self.settings.low_overlap_threshold: - conflicts.append(AnnotationConflict( - frame_id=frame_id, - type=AnnotationConflictType.LOW_OVERLAP, - annotation_ids=[ - self._dm_ann_to_ann_id(ds_ann, self._ds_dataset), - self._dm_ann_to_ann_id(gt_ann, self._gt_dataset), - ] - )) + conflicts.append( + AnnotationConflict( + frame_id=frame_id, + type=AnnotationConflictType.LOW_OVERLAP, + annotation_ids=[ + self._dm_ann_to_ann_id(ds_ann, self._ds_dataset), + self._dm_ann_to_ann_id(gt_ann, self._gt_dataset), + ], + ) + ) for unmatched_ann in gt_unmatched: conflicts.append( AnnotationConflict( frame_id=frame_id, type=AnnotationConflictType.MISSING_ANNOTATION, - annotation_ids=[ - self._dm_ann_to_ann_id(unmatched_ann, self._gt_dataset) - ], + annotation_ids=[self._dm_ann_to_ann_id(unmatched_ann, self._gt_dataset)], ) ) @@ -1694,9 +1723,7 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): AnnotationConflict( frame_id=frame_id, type=AnnotationConflictType.EXTRA_ANNOTATION, - annotation_ids=[ - self._dm_ann_to_ann_id(unmatched_ann, self._ds_dataset) - ], + annotation_ids=[self._dm_ann_to_ann_id(unmatched_ann, self._ds_dataset)], ) ) @@ -1708,7 +1735,7 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): annotation_ids=[ self._dm_ann_to_ann_id(ds_ann, self._ds_dataset), self._dm_ann_to_ann_id(gt_ann, self._gt_dataset), - ] + ], ) ) @@ -1726,14 +1753,14 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): mean_iou = np.mean(resulting_distances) if resulting_distances else 0 if ( - self.settings.oriented_lines and - dm.AnnotationType.polyline in self.comparator.included_ann_types + self.settings.oriented_lines + and dm.AnnotationType.polyline in self.comparator.included_ann_types ): # Check line directions line_matcher = _LineMatcher( torso_r=self.settings.line_thickness, oriented=True, - scale=np.prod(gt_item.image.size) + scale=np.prod(gt_item.image.size), ) for gt_ann, ds_ann in itertools.chain(matches, mismatches): @@ -1746,8 +1773,8 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): # need to filter computation errors from line approximation # and (almost) orientation-independent cases if ( - non_oriented_distance - oriented_distance > - self.settings.line_orientation_threshold + non_oriented_distance - oriented_distance + > self.settings.line_orientation_threshold ): conflicts.append( AnnotationConflict( @@ -1756,7 +1783,7 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): annotation_ids=[ self._dm_ann_to_ann_id(ds_ann, self._ds_dataset), self._dm_ann_to_ann_id(gt_ann, self._gt_dataset), - ] + ], ) ) @@ -1770,7 +1797,7 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): type=AnnotationConflictType.COVERED_ANNOTATION, annotation_ids=[ self._dm_ann_to_ann_id(ds_ann, self._ds_dataset), - ] + ], ) ) @@ -1785,7 +1812,7 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): annotation_ids=[ self._dm_ann_to_ann_id(ds_ann, self._ds_dataset), self._dm_ann_to_ann_id(gt_ann, self._gt_dataset), - ] + ], ) ) @@ -1802,8 +1829,8 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): if ( # Check ungrouped objects - (len(gt_group) == 1 and len(ds_group) != 1) or - + (len(gt_group) == 1 and len(ds_group) != 1) + or # Check grouped objects ds_gt_group != gt_group_map[id(gt_ann)] ): @@ -1814,7 +1841,7 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): annotation_ids=[ self._dm_ann_to_ann_id(ds_ann, self._ds_dataset), self._dm_ann_to_ann_id(gt_ann, self._gt_dataset), - ] + ], ) ) @@ -1834,10 +1861,8 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): for i, label in enumerate(self._gt_dataset.categories()[dm.AnnotationType.label]) if not label.parent } - confusion_matrix_labels[None] = 'unmatched' - confusion_matrix_labels_rmap = { - k: i for i, k in enumerate(confusion_matrix_labels.keys()) - } + confusion_matrix_labels[None] = "unmatched" + confusion_matrix_labels_rmap = {k: i for i, k in enumerate(confusion_matrix_labels.keys())} confusion_matrix_label_count = len(confusion_matrix_labels) confusion_matrix = np.zeros( (confusion_matrix_label_count, confusion_matrix_label_count), dtype=int @@ -1856,7 +1881,9 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): matched_ann_counts = np.diag(confusion_matrix) ds_ann_counts = np.sum(confusion_matrix, axis=1) gt_ann_counts = np.sum(confusion_matrix, axis=0) - label_accuracies = _arr_div(matched_ann_counts, ds_ann_counts + gt_ann_counts - matched_ann_counts) + label_accuracies = _arr_div( + matched_ann_counts, ds_ann_counts + gt_ann_counts - matched_ann_counts + ) label_precisions = _arr_div(matched_ann_counts, ds_ann_counts) label_recalls = _arr_div(matched_ann_counts, gt_ann_counts) @@ -1864,8 +1891,12 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): missing_annotations_count = np.sum(confusion_matrix[confusion_matrix_labels_rmap[None], :]) extra_annotations_count = np.sum(confusion_matrix[:, confusion_matrix_labels_rmap[None]]) total_annotations_count = np.sum(confusion_matrix) - ds_annotations_count = np.sum(ds_ann_counts) - ds_ann_counts[confusion_matrix_labels_rmap[None]] - gt_annotations_count = np.sum(gt_ann_counts) - gt_ann_counts[confusion_matrix_labels_rmap[None]] + ds_annotations_count = ( + np.sum(ds_ann_counts) - ds_ann_counts[confusion_matrix_labels_rmap[None]] + ) + gt_annotations_count = ( + np.sum(gt_ann_counts) - gt_ann_counts[confusion_matrix_labels_rmap[None]] + ) self._frame_results[frame_id] = ComparisonReportFrameSummary( annotations=ComparisonReportAnnotationsSummary( @@ -1881,7 +1912,7 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): precision=label_precisions, recall=label_recalls, accuracy=label_accuracies, - ) + ), ), annotation_components=ComparisonReportAnnotationComponentsSummary( shape=ComparisonReportAnnotationShapeSummary( @@ -1911,19 +1942,28 @@ def generate_report(self) -> ComparisonReport: intersection_frames = [] conflicts = [] annotations = ComparisonReportAnnotationsSummary( - valid_count=0, missing_count=0, - extra_count=0, total_count=0, - ds_count=0, gt_count=0, - confusion_matrix=None + valid_count=0, + missing_count=0, + extra_count=0, + total_count=0, + ds_count=0, + gt_count=0, + confusion_matrix=None, ) annotation_components = ComparisonReportAnnotationComponentsSummary( shape=ComparisonReportAnnotationShapeSummary( - valid_count=0, missing_count=0, - extra_count=0, total_count=0, - ds_count=0, gt_count=0, mean_iou=0 + valid_count=0, + missing_count=0, + extra_count=0, + total_count=0, + ds_count=0, + gt_count=0, + mean_iou=0, ), label=ComparisonReportAnnotationLabelSummary( - valid_count=0, invalid_count=0, total_count=0, + valid_count=0, + invalid_count=0, + total_count=0, ), ) mean_ious = [] @@ -1949,10 +1989,8 @@ def generate_report(self) -> ComparisonReport: for i, label in enumerate(self._gt_dataset.categories()[dm.AnnotationType.label]) if not label.parent } - confusion_matrix_labels[None] = 'unmatched' - confusion_matrix_labels_rmap = { - k: i for i, k in enumerate(confusion_matrix_labels.keys()) - } + confusion_matrix_labels[None] = "unmatched" + confusion_matrix_labels_rmap = {k: i for i, k in enumerate(confusion_matrix_labels.keys())} if confusion_matrices: confusion_matrix = np.sum(confusion_matrices, axis=0) else: @@ -1962,7 +2000,9 @@ def generate_report(self) -> ComparisonReport: matched_ann_counts = np.diag(confusion_matrix) ds_ann_counts = np.sum(confusion_matrix, axis=1) gt_ann_counts = np.sum(confusion_matrix, axis=0) - label_accuracies = _arr_div(matched_ann_counts, ds_ann_counts + gt_ann_counts - matched_ann_counts) + label_accuracies = _arr_div( + matched_ann_counts, ds_ann_counts + gt_ann_counts - matched_ann_counts + ) label_precisions = _arr_div(matched_ann_counts, ds_ann_counts) label_recalls = _arr_div(matched_ann_counts, gt_ann_counts) @@ -1970,27 +2010,29 @@ def generate_report(self) -> ComparisonReport: missing_annotations_count = np.sum(confusion_matrix[confusion_matrix_labels_rmap[None], :]) extra_annotations_count = np.sum(confusion_matrix[:, confusion_matrix_labels_rmap[None]]) total_annotations_count = np.sum(confusion_matrix) - ds_annotations_count = np.sum(ds_ann_counts) - ds_ann_counts[confusion_matrix_labels_rmap[None]] - gt_annotations_count = np.sum(gt_ann_counts) - gt_ann_counts[confusion_matrix_labels_rmap[None]] + ds_annotations_count = ( + np.sum(ds_ann_counts) - ds_ann_counts[confusion_matrix_labels_rmap[None]] + ) + gt_annotations_count = ( + np.sum(gt_ann_counts) - gt_ann_counts[confusion_matrix_labels_rmap[None]] + ) return ComparisonReport( parameters=self.settings, - comparison_summary=ComparisonReportComparisonSummary( - frame_share_percent=100 * ( + frame_share_percent=100 + * ( len(intersection_frames) / (len(self._ds_data_provider.job_data.rel_range) or 1) ), frames=intersection_frames, - conflict_count=len(conflicts), - warning_count=len([ - c for c in conflicts if c.importance == AnnotationConflictImportance.WARNING - ]), - error_count=len([ - c for c in conflicts if c.importance == AnnotationConflictImportance.ERROR - ]), + warning_count=len( + [c for c in conflicts if c.importance == AnnotationConflictImportance.WARNING] + ), + error_count=len( + [c for c in conflicts if c.importance == AnnotationConflictImportance.ERROR] + ), conflicts_by_type=Counter(c.type for c in conflicts), - annotations=ComparisonReportAnnotationsSummary( valid_count=valid_annotations_count, missing_count=missing_annotations_count, @@ -2004,9 +2046,8 @@ def generate_report(self) -> ComparisonReport: precision=label_precisions, recall=label_recalls, accuracy=label_accuracies, - ) + ), ), - annotation_components=ComparisonReportAnnotationComponentsSummary( shape=ComparisonReportAnnotationShapeSummary( valid_count=annotation_components.shape.valid_count, @@ -2024,14 +2065,13 @@ def generate_report(self) -> ComparisonReport: ), ), ), - - frame_results=self._frame_results + frame_results=self._frame_results, ) class QualityReportUpdateManager: _QUEUE_JOB_PREFIX = "update-quality-metrics-task-" - _RQ_CUSTOM_QUALITY_CHECK_JOB_TYPE = 'custom_quality_check' + _RQ_CUSTOM_QUALITY_CHECK_JOB_TYPE = "custom_quality_check" _JOB_RESULT_TTL = 120 @classmethod @@ -2045,20 +2085,20 @@ def _get_queue(self): return django_rq.get_queue(settings.CVAT_QUEUES.QUALITY_REPORTS.value) def _make_queue_job_prefix(self, task: Task) -> str: - return f'{self._QUEUE_JOB_PREFIX}{task.id}-' + return f"{self._QUEUE_JOB_PREFIX}{task.id}-" def _make_custom_quality_check_job_id(self) -> str: return uuid4().hex def _make_initial_queue_job_id(self, task: Task) -> str: - return f'{self._make_queue_job_prefix(task)}initial' + return f"{self._make_queue_job_prefix(task)}initial" def _make_regular_queue_job_id(self, task: Task, start_time: timezone.datetime) -> str: - return f'{self._make_queue_job_prefix(task)}{start_time.timestamp()}' + return f"{self._make_queue_job_prefix(task)}{start_time.timestamp()}" @classmethod def _get_last_report_time(cls, task: Task) -> Optional[timezone.datetime]: - report = models.QualityReport.objects.filter(task=task).order_by('-created_date').first() + report = models.QualityReport.objects.filter(task=task).order_by("-created_date").first() if report: return report.created_date return None @@ -2070,7 +2110,7 @@ def _find_next_job_id( def _get_timestamp(job_id: str) -> timezone.datetime: job_timestamp = job_id.split(job_id_prefix, maxsplit=1)[-1] - if job_timestamp == 'initial': + if job_timestamp == "initial": return timezone.datetime.min.replace(tzinfo=timezone.utc) else: return timezone.datetime.fromtimestamp(float(job_timestamp), tz=timezone.utc) @@ -2078,7 +2118,7 @@ def _get_timestamp(job_id: str) -> timezone.datetime: max_job_id = max( (j for j in existing_job_ids if j.startswith(job_id_prefix)), key=_get_timestamp, - default=None + default=None, ) max_timestamp = _get_timestamp(max_job_id) if max_job_id else None @@ -2092,10 +2132,7 @@ def _get_timestamp(job_id: str) -> timezone.datetime: else: # Add an updating job in the queue in the next time frame delay = self._get_quality_check_job_delay() - intervals = max( - 1, - 1 + (now - last_update_time) // delay - ) + intervals = max(1, 1 + (now - last_update_time) // delay) next_update_time = last_update_time + delay * intervals queue_job_id = self._make_regular_queue_job_id(task, next_update_time) @@ -2106,9 +2143,7 @@ class QualityReportsNotAvailable(Exception): def _check_quality_reporting_available(self, task: Task): if task.dimension != DimensionType.DIM_2D: - raise self.QualityReportsNotAvailable( - "Quality reports are only supported in 2d tasks" - ) + raise self.QualityReportsNotAvailable("Quality reports are only supported in 2d tasks") gt_job = task.gt_job if gt_job is None or not ( @@ -2170,10 +2205,7 @@ def schedule_quality_check_job(self, task: Task, *, user_id: int) -> str: self._check_task_quality, task_id=task.id, job_id=rq_id, - meta={ - 'user_id': user_id, - 'job_type': self._RQ_CUSTOM_QUALITY_CHECK_JOB_TYPE - }, + meta={"user_id": user_id, "job_type": self._RQ_CUSTOM_QUALITY_CHECK_JOB_TYPE}, result_ttl=self._JOB_RESULT_TTL, failure_ttl=self._JOB_RESULT_TTL, ) @@ -2190,7 +2222,7 @@ def get_quality_check_job(self, rq_id: str): return rq_job def is_custom_quality_check_job(self, rq_job) -> bool: - return rq_job.meta.get('job_type') == self._RQ_CUSTOM_QUALITY_CHECK_JOB_TYPE + return rq_job.meta.get("job_type") == self._RQ_CUSTOM_QUALITY_CHECK_JOB_TYPE @classmethod @silk_profile() @@ -2201,19 +2233,18 @@ def _compute_reports(self, task_id: int) -> int: with transaction.atomic(): # The task could have been deleted during scheduling try: - task = Task.objects.select_related('data').get(id=task_id) + task = Task.objects.select_related("data").get(id=task_id) except Task.DoesNotExist: return # Try to use shared queryset to minimize DB requests - job_queryset = Job.objects.prefetch_related('segment') + job_queryset = Job.objects.prefetch_related("segment") job_queryset = JobDataProvider.add_prefetch_info(job_queryset) job_queryset = job_queryset.filter(segment__task_id=task_id).all() # The GT job could have been removed during scheduling, so we need to check it exists gt_job: Job = next( - (job for job in job_queryset if job.type == JobType.GROUND_TRUTH), - None + (job for job in job_queryset if job.type == JobType.GROUND_TRUTH), None ) if gt_job is None: return @@ -2230,14 +2261,11 @@ def _compute_reports(self, task_id: int) -> int: gt_job_data_provider = JobDataProvider(gt_job.id, queryset=job_queryset) gt_job_frames = gt_job_data_provider.job_data.get_included_frames() - jobs: List[Job] = [ - j - for j in job_queryset - if j.type == JobType.ANNOTATION - ] + jobs: List[Job] = [j for j in job_queryset if j.type == JobType.ANNOTATION] job_data_providers = { - job.id: JobDataProvider(job.id, queryset=job_queryset, - included_frames=gt_job_frames) + job.id: JobDataProvider( + job.id, queryset=job_queryset, included_frames=gt_job_frames + ) for job in jobs } @@ -2291,15 +2319,16 @@ def _compute_reports(self, task_id: int) -> int: target_last_updated=task.updated_date, gt_last_updated=gt_job.updated_date, data=task_comparison_report.to_json(), - conflicts=[], # the task doesn't have own conflicts + conflicts=[], # the task doesn't have own conflicts ), - job_reports=list(job_quality_reports.values()) + job_reports=list(job_quality_reports.values()), ) return task_report.id def _get_current_job(self): from rq import get_current_job + return get_current_job() def _compute_task_report( @@ -2348,9 +2377,8 @@ def _compute_task_report( ) task_frame_result.annotation_components.shape.mean_iou = ( - task_frame_result.annotation_components.shape.mean_iou * \ - frame_results_count + \ - job_frame_result.annotation_components.shape.mean_iou + task_frame_result.annotation_components.shape.mean_iou * frame_results_count + + job_frame_result.annotation_components.shape.mean_iou ) / (frame_results_count + 1) task_frame_results_counts[frame_id] = 1 + frame_results_count @@ -2360,26 +2388,28 @@ def _compute_task_report( task_report_data = ComparisonReport( parameters=next(iter(job_reports.values())).parameters, - comparison_summary=ComparisonReportComparisonSummary( frame_share_percent=len(task_intersection_frames) / (task.data.size or 1) * 100, frames=sorted(task_intersection_frames), - conflict_count=len(task_conflicts), - warning_count=len([ - c for c in task_conflicts - if c.importance == AnnotationConflictImportance.WARNING - ]), - error_count=len([ - c for c in task_conflicts - if c.importance == AnnotationConflictImportance.ERROR - ]), + warning_count=len( + [ + c + for c in task_conflicts + if c.importance == AnnotationConflictImportance.WARNING + ] + ), + error_count=len( + [ + c + for c in task_conflicts + if c.importance == AnnotationConflictImportance.ERROR + ] + ), conflicts_by_type=Counter(c.type for c in task_conflicts), - annotations=task_annotations_summary, annotation_components=task_ann_components_summary, ), - frame_results=task_frame_results, ) @@ -2389,10 +2419,10 @@ def _save_reports(self, *, task_report: Dict, job_reports: List[Dict]) -> models # TODO: add validation (e.g. ann id count for different types of conflicts) db_task_report = models.QualityReport( - task=task_report['task'], - target_last_updated=task_report['target_last_updated'], - gt_last_updated=task_report['gt_last_updated'], - data=task_report['data'], + task=task_report["task"], + target_last_updated=task_report["target_last_updated"], + gt_last_updated=task_report["gt_last_updated"], + data=task_report["data"], ) db_task_report.save() @@ -2400,56 +2430,48 @@ def _save_reports(self, *, task_report: Dict, job_reports: List[Dict]) -> models for job_report in job_reports: db_job_report = models.QualityReport( parent=db_task_report, - job=job_report['job'], - target_last_updated=job_report['target_last_updated'], - gt_last_updated=job_report['gt_last_updated'], - data=job_report['data'], + job=job_report["job"], + target_last_updated=job_report["target_last_updated"], + gt_last_updated=job_report["gt_last_updated"], + data=job_report["data"], ) db_job_reports.append(db_job_report) db_job_reports = bulk_create( - db_model=models.QualityReport, - objects=db_job_reports, - flt_param={} + db_model=models.QualityReport, objects=db_job_reports, flt_param={} ) db_conflicts = [] db_report_iter = itertools.chain([db_task_report], db_job_reports) report_iter = itertools.chain([task_report], job_reports) for report, db_report in zip(report_iter, db_report_iter): - for conflict in report['conflicts']: + for conflict in report["conflicts"]: db_conflict = models.AnnotationConflict( report=db_report, - type=conflict['type'], - frame=conflict['frame_id'], - importance=conflict['importance'], + type=conflict["type"], + frame=conflict["frame_id"], + importance=conflict["importance"], ) db_conflicts.append(db_conflict) db_conflicts = bulk_create( - db_model=models.AnnotationConflict, - objects=db_conflicts, - flt_param={} + db_model=models.AnnotationConflict, objects=db_conflicts, flt_param={} ) db_ann_ids = [] db_conflicts_iter = iter(db_conflicts) for report in itertools.chain([task_report], job_reports): - for conflict, db_conflict in zip(report['conflicts'], db_conflicts_iter): - for ann_id in conflict['annotation_ids']: + for conflict, db_conflict in zip(report["conflicts"], db_conflicts_iter): + for ann_id in conflict["annotation_ids"]: db_ann_id = models.AnnotationId( conflict=db_conflict, - job_id=ann_id['job_id'], - obj_id=ann_id['obj_id'], - type=ann_id['type'], + job_id=ann_id["job_id"], + obj_id=ann_id["obj_id"], + type=ann_id["type"], ) db_ann_ids.append(db_ann_id) - db_ann_ids = bulk_create( - db_model=models.AnnotationId, - objects=db_ann_ids, - flt_param={} - ) + db_ann_ids = bulk_create(db_model=models.AnnotationId, objects=db_ann_ids, flt_param={}) return db_task_report @@ -2477,13 +2499,13 @@ def prepare_report_for_downloading(db_report: models.QualityReport, *, host: str for frame_result in serialized_data["frame_results"].values(): for conflict in frame_result["conflicts"]: - for ann_id in conflict['annotation_ids']: - if ann_id['type'] in ShapeType.__members__.values(): - ann_type = 'shape' + for ann_id in conflict["annotation_ids"]: + if ann_id["type"] in ShapeType.__members__.values(): + ann_type = "shape" else: - ann_type = ann_id['type'] + ann_type = ann_id["type"] - ann_id['url'] = ( + ann_id["url"] = ( f"{host}tasks/{task_id}/jobs/{ann_id['job_id']}" f"?frame={conflict['frame_id']}" f"&type={ann_type}" @@ -2492,6 +2514,6 @@ def prepare_report_for_downloading(db_report: models.QualityReport, *, host: str # String keys are needed for json dumping serialized_data["frame_results"] = { - str(k): v for k, v in serialized_data['frame_results'].items() + str(k): v for k, v in serialized_data["frame_results"].items() } return dump_json(serialized_data, indent=True, append_newline=True).decode() diff --git a/cvat/apps/quality_control/serializers.py b/cvat/apps/quality_control/serializers.py index 27cf68cc0c86..874f7684d6e6 100644 --- a/cvat/apps/quality_control/serializers.py +++ b/cvat/apps/quality_control/serializers.py @@ -2,16 +2,17 @@ # # SPDX-License-Identifier: MIT -from rest_framework import serializers import textwrap +from rest_framework import serializers + from cvat.apps.quality_control import models class AnnotationIdSerializer(serializers.ModelSerializer): class Meta: model = models.AnnotationId - fields = ('obj_id', 'job_id', 'type') + fields = ("obj_id", "job_id", "type") read_only_fields = fields @@ -20,7 +21,7 @@ class AnnotationConflictSerializer(serializers.ModelSerializer): class Meta: model = models.AnnotationConflict - fields = ('id', 'frame', 'type', 'annotation_ids', 'report_id', 'importance') + fields = ("id", "frame", "type", "annotation_ids", "report_id", "importance") read_only_fields = fields @@ -34,9 +35,9 @@ class QualityReportSummarySerializer(serializers.Serializer): # This set is enough for basic characteristics, such as # DS_unmatched, GT_unmatched, accuracy, precision and recall - valid_count = serializers.IntegerField(source='annotations.valid_count') - ds_count = serializers.IntegerField(source='annotations.ds_count') - gt_count = serializers.IntegerField(source='annotations.gt_count') + valid_count = serializers.IntegerField(source="annotations.valid_count") + ds_count = serializers.IntegerField(source="annotations.ds_count") + gt_count = serializers.IntegerField(source="annotations.gt_count") class QualityReportParametersSerializer(serializers.Serializer): @@ -50,8 +51,17 @@ class QualityReportSerializer(serializers.ModelSerializer): class Meta: model = models.QualityReport - fields = ('id', 'job_id', 'task_id', 'parent_id', 'target', 'summary', 'parameters', - 'created_date', 'target_last_updated', 'gt_last_updated', + fields = ( + "id", + "job_id", + "task_id", + "parent_id", + "target", + "summary", + "parameters", + "created_date", + "target_last_updated", + "gt_last_updated", ) read_only_fields = fields @@ -64,80 +74,73 @@ class QualitySettingsSerializer(serializers.ModelSerializer): class Meta: model = models.QualitySettings fields = ( - 'id', - 'task_id', - - 'iou_threshold', - 'oks_sigma', - 'line_thickness', - - 'low_overlap_threshold', - - 'oriented_lines', - 'line_orientation_threshold', - - 'compare_groups', - 'group_match_threshold', - - 'check_covered_annotations', - 'object_visibility_threshold', - - 'panoptic_comparison', - - 'compare_attributes', + "id", + "task_id", + "iou_threshold", + "oks_sigma", + "line_thickness", + "low_overlap_threshold", + "oriented_lines", + "line_orientation_threshold", + "compare_groups", + "group_match_threshold", + "check_covered_annotations", + "object_visibility_threshold", + "panoptic_comparison", + "compare_attributes", + ) + read_only_fields = ( + "id", + "task_id", ) - read_only_fields = ('id', 'task_id', ) - extra_kwargs = { - k: {'required': False} - for k in fields - } + extra_kwargs = {k: {"required": False} for k in fields} for field_name, help_text in { - 'iou_threshold': "Used for distinction between matched / unmatched shapes", - 'low_overlap_threshold': ( + "iou_threshold": "Used for distinction between matched / unmatched shapes", + "low_overlap_threshold": ( "Used for distinction between strong / weak (low_overlap) matches" ), - 'oks_sigma': """ + "oks_sigma": """ Like IoU threshold, but for points. The percent of the bbox area, used as the radius of the circle around the GT point, where the checked point is expected to be. Read more: https://cocodataset.org/#keypoints-eval """, - 'line_thickness': """ + "line_thickness": """ Thickness of polylines, relatively to the (image area) ^ 0.5. The distance to the boundary around the GT line, inside of which the checked line points should be """, - 'oriented_lines': "Indicates that polylines have direction", - 'line_orientation_threshold': """ + "oriented_lines": "Indicates that polylines have direction", + "line_orientation_threshold": """ The minimal gain in the GT IoU between the given and reversed line directions to consider the line inverted. Only useful with the 'oriented_lines' parameter """, - 'compare_groups': "Enables or disables annotation group checks", - 'group_match_threshold': """ + "compare_groups": "Enables or disables annotation group checks", + "group_match_threshold": """ Minimal IoU for groups to be considered matching, used when the 'compare_groups' is enabled """, - 'check_covered_annotations': ( + "check_covered_annotations": ( "Check for partially-covered annotations, useful in segmentation tasks" ), - 'object_visibility_threshold': """ + "object_visibility_threshold": """ Minimal visible area percent of the spatial annotations (polygons, masks) for reporting covered annotations, useful with the 'check_covered_annotations' option """, - 'panoptic_comparison': ( + "panoptic_comparison": ( "Use only the visible part of the masks and polygons in comparisons" - ) + ), }.items(): extra_kwargs.setdefault(field_name, {}).setdefault( - 'help_text', textwrap.dedent(help_text.lstrip('\n')) + "help_text", textwrap.dedent(help_text.lstrip("\n")) ) def validate(self, attrs): for k, v in attrs.items(): - if k.endswith('_threshold') or k in ['oks_sigma', 'line_thickness']: + if k.endswith("_threshold") or k in ["oks_sigma", "line_thickness"]: if not 0 <= v <= 1: raise serializers.ValidationError(f"{k} must be in the range [0; 1]") diff --git a/cvat/apps/quality_control/signals.py b/cvat/apps/quality_control/signals.py index 7641594a2292..609e1abe88f2 100644 --- a/cvat/apps/quality_control/signals.py +++ b/cvat/apps/quality_control/signals.py @@ -6,21 +6,21 @@ from django.dispatch import receiver from cvat.apps.engine.models import Annotation, Job, Project, Task - from cvat.apps.quality_control import quality_reports as qc from cvat.apps.quality_control.models import QualitySettings -@receiver(post_save, sender=Job, - dispatch_uid=__name__ + ".save_job-update_quality_metrics") -@receiver(post_save, sender=Task, - dispatch_uid=__name__ + ".save_task-update_quality_metrics") -@receiver(post_save, sender=Project, - dispatch_uid=__name__ + ".save_project-update_quality_metrics") -@receiver(post_save, sender=Annotation, - dispatch_uid=__name__ + ".save_annotation-update_quality_metrics") -@receiver(post_save, sender=QualitySettings, - dispatch_uid=__name__ + ".save_settings-update_quality_metrics") +@receiver(post_save, sender=Job, dispatch_uid=__name__ + ".save_job-update_quality_metrics") +@receiver(post_save, sender=Task, dispatch_uid=__name__ + ".save_task-update_quality_metrics") +@receiver(post_save, sender=Project, dispatch_uid=__name__ + ".save_project-update_quality_metrics") +@receiver( + post_save, sender=Annotation, dispatch_uid=__name__ + ".save_annotation-update_quality_metrics" +) +@receiver( + post_save, + sender=QualitySettings, + dispatch_uid=__name__ + ".save_settings-update_quality_metrics", +) def __save_job__update_quality_metrics(instance, created, **kwargs): tasks = [] @@ -41,10 +41,8 @@ def __save_job__update_quality_metrics(instance, created, **kwargs): qc.QualityReportUpdateManager().schedule_quality_autoupdate_job(task) -@receiver(post_save, sender=Task, - dispatch_uid=__name__ + ".save_task-initialize_quality_settings") -@receiver(post_save, sender=Job, - dispatch_uid=__name__ + ".save_job-initialize_quality_settings") +@receiver(post_save, sender=Task, dispatch_uid=__name__ + ".save_task-initialize_quality_settings") +@receiver(post_save, sender=Job, dispatch_uid=__name__ + ".save_job-initialize_quality_settings") def __save_task__initialize_quality_settings(instance, created, **kwargs): # Initializes default quality settings for the task # this is done in a signal to decouple this component from the engine app diff --git a/cvat/apps/quality_control/urls.py b/cvat/apps/quality_control/urls.py index 34b9c7f417b1..95961393b05c 100644 --- a/cvat/apps/quality_control/urls.py +++ b/cvat/apps/quality_control/urls.py @@ -2,19 +2,17 @@ # # SPDX-License-Identifier: MIT -from django.urls import path, include - +from django.urls import include, path from rest_framework import routers from cvat.apps.quality_control import views - router = routers.DefaultRouter(trailing_slash=False) -router.register('reports', views.QualityReportViewSet, basename='quality_reports') -router.register('conflicts', views.QualityConflictsViewSet, basename='annotation_conflicts') -router.register('settings', views.QualitySettingsViewSet, basename='quality_settings') +router.register("reports", views.QualityReportViewSet, basename="quality_reports") +router.register("conflicts", views.QualityConflictsViewSet, basename="annotation_conflicts") +router.register("settings", views.QualitySettingsViewSet, basename="quality_settings") urlpatterns = [ # entry point for API - path('quality/', include(router.urls)), + path("quality/", include(router.urls)), ] diff --git a/cvat/apps/quality_control/views.py b/cvat/apps/quality_control/views.py index a55a2aacc450..5bed02ba3f34 100644 --- a/cvat/apps/quality_control/views.py +++ b/cvat/apps/quality_control/views.py @@ -3,87 +3,100 @@ # SPDX-License-Identifier: MIT import textwrap -from django.http import HttpResponse -from django.db.models import Q +from django.db.models import Q +from django.http import HttpResponse from drf_spectacular.types import OpenApiTypes from drf_spectacular.utils import ( - OpenApiParameter, extend_schema_view, extend_schema, OpenApiResponse + OpenApiParameter, + OpenApiResponse, + extend_schema, + extend_schema_view, ) - from rest_framework import mixins, status, viewsets -from rest_framework.response import Response from rest_framework.decorators import action -from rest_framework.exceptions import ValidationError, NotFound +from rest_framework.exceptions import NotFound, ValidationError +from rest_framework.response import Response -from cvat.apps.engine.models import Task from cvat.apps.engine.mixins import PartialUpdateModelMixin +from cvat.apps.engine.models import Task from cvat.apps.engine.utils import get_server_url - +from cvat.apps.iam.permissions import ( + AnnotationConflictPermission, + QualityReportPermission, + QualitySettingPermission, +) from cvat.apps.quality_control import quality_reports as qc from cvat.apps.quality_control.models import ( - AnnotationConflict, QualityReportTarget, QualitySettings, QualityReport + AnnotationConflict, + QualityReport, + QualityReportTarget, + QualitySettings, ) from cvat.apps.quality_control.serializers import ( - AnnotationConflictSerializer, QualitySettingsSerializer, - QualityReportSerializer, QualityReportCreateSerializer -) - -from cvat.apps.iam.permissions import ( - AnnotationConflictPermission, QualityReportPermission, QualitySettingPermission + AnnotationConflictSerializer, + QualityReportCreateSerializer, + QualityReportSerializer, + QualitySettingsSerializer, ) @extend_schema(tags=["quality"]) @extend_schema_view( list=extend_schema( - summary='Method returns a paginated list of annotation conflicts', + summary="Method returns a paginated list of annotation conflicts", parameters=[ # These filters are implemented differently from others - OpenApiParameter('report_id', type=OpenApiTypes.INT, - description='A simple equality filter for report id'), + OpenApiParameter( + "report_id", + type=OpenApiTypes.INT, + description="A simple equality filter for report id", + ), ], responses={ - '200': AnnotationConflictSerializer(many=True), - }), + "200": AnnotationConflictSerializer(many=True), + }, + ), ) class QualityConflictsViewSet(viewsets.GenericViewSet, mixins.ListModelMixin): - queryset = AnnotationConflict.objects.select_related( - 'report', - 'report__parent', - 'report__job', - 'report__job__segment', - 'report__job__segment__task', - 'report__job__segment__task__organization', - 'report__task', - 'report__task__organization', - ).prefetch_related( - 'annotation_ids', - ).all() + queryset = ( + AnnotationConflict.objects.select_related( + "report", + "report__parent", + "report__job", + "report__job__segment", + "report__job__segment__task", + "report__job__segment__task__organization", + "report__task", + "report__task__organization", + ) + .prefetch_related( + "annotation_ids", + ) + .all() + ) iam_organization_field = [ - 'report__job__segment__task__organization', - 'report__task__organization', + "report__job__segment__task__organization", + "report__task__organization", ] search_fields = [] - filter_fields = list(search_fields) + [ - 'id', 'frame', 'type', 'job_id', 'task_id', 'importance' - ] - simple_filters = set(filter_fields) - {'id'} + filter_fields = list(search_fields) + ["id", "frame", "type", "job_id", "task_id", "importance"] + simple_filters = set(filter_fields) - {"id"} lookup_fields = { - 'job_id': 'report__job__id', - 'task_id': 'report__job__segment__task__id' # task reports do not contain own conflicts + "job_id": "report__job__id", + "task_id": "report__job__segment__task__id", # task reports do not contain own conflicts } ordering_fields = list(filter_fields) - ordering = '-id' + ordering = "-id" serializer_class = AnnotationConflictSerializer def get_queryset(self): queryset = super().get_queryset() - if self.action == 'list': - if report_id := self.request.query_params.get('report_id', None): + if self.action == "list": + if report_id := self.request.query_params.get("report_id", None): # NOTE: This filter is too complex to be implemented by other means, # it has a dependency on the report type try: @@ -111,48 +124,59 @@ def get_queryset(self): @extend_schema(tags=["quality"]) @extend_schema_view( retrieve=extend_schema( - operation_id='quality_retrieve_report', # the default produces the plural - summary='Method returns details of a quality report', + operation_id="quality_retrieve_report", # the default produces the plural + summary="Method returns details of a quality report", responses={ - '200': QualityReportSerializer, - }), + "200": QualityReportSerializer, + }, + ), list=extend_schema( - summary='Method returns a paginated list of quality reports', + summary="Method returns a paginated list of quality reports", parameters=[ # These filters are implemented differently from others - OpenApiParameter('task_id', type=OpenApiTypes.INT, - description='A simple equality filter for task id'), - OpenApiParameter('target', type=OpenApiTypes.STR, - description='A simple equality filter for target'), + OpenApiParameter( + "task_id", type=OpenApiTypes.INT, description="A simple equality filter for task id" + ), + OpenApiParameter( + "target", type=OpenApiTypes.STR, description="A simple equality filter for target" + ), ], responses={ - '200': QualityReportSerializer(many=True), - }), + "200": QualityReportSerializer(many=True), + }, + ), ) -class QualityReportViewSet(viewsets.GenericViewSet, - mixins.ListModelMixin, mixins.RetrieveModelMixin, mixins.CreateModelMixin +class QualityReportViewSet( + viewsets.GenericViewSet, + mixins.ListModelMixin, + mixins.RetrieveModelMixin, + mixins.CreateModelMixin, ): queryset = QualityReport.objects.prefetch_related( - 'job', - 'job__segment', - 'job__segment__task', - 'job__segment__task__organization', - 'task', - 'task__organization', + "job", + "job__segment", + "job__segment__task", + "job__segment__task__organization", + "task", + "task__organization", ).all() - iam_organization_field = ['job__segment__task__organization', 'task__organization'] + iam_organization_field = ["job__segment__task__organization", "task__organization"] search_fields = [] filter_fields = list(search_fields) + [ - 'id', 'job_id', 'created_date', - 'gt_last_updated', 'target_last_updated', 'parent_id' + "id", + "job_id", + "created_date", + "gt_last_updated", + "target_last_updated", + "parent_id", ] - simple_filters = list(set(filter_fields) - { - 'id', 'created_date', 'gt_last_updated', 'target_last_updated' - }) + simple_filters = list( + set(filter_fields) - {"id", "created_date", "gt_last_updated", "target_last_updated"} + ) ordering_fields = list(filter_fields) - ordering = 'id' + ordering = "id" def get_serializer_class(self): # a separate method is required for drf-spectacular to work @@ -161,8 +185,8 @@ def get_serializer_class(self): def get_queryset(self): queryset = super().get_queryset() - if self.action == 'list': - if task_id := self.request.query_params.get('task_id', None): + if self.action == "list": + if task_id := self.request.query_params.get("task_id", None): # NOTE: This filter is too complex to be implemented by other means try: task = Task.objects.get(id=task_id) @@ -178,7 +202,7 @@ def get_queryset(self): perm = QualityReportPermission.create_scope_list(self.request) queryset = perm.filter(queryset) - if target := self.request.query_params.get('target', None): + if target := self.request.query_params.get("target", None): if target == QualityReportTarget.JOB: queryset = queryset.filter(job__isnull=False) elif target == QualityReportTarget.TASK: @@ -186,14 +210,14 @@ def get_queryset(self): else: raise ValidationError( "Unexpected 'target' filter value '{}'. Valid values are: {}".format( - target, - ', '.join(m[0] for m in QualityReportTarget.choices()) + target, ", ".join(m[0] for m in QualityReportTarget.choices()) ) ) return queryset - CREATE_REPORT_RQ_ID_PARAMETER = 'rq_id' + CREATE_REPORT_RQ_ID_PARAMETER = "rq_id" + @extend_schema( operation_id="quality_create_report", summary="Creates a quality report asynchronously and allows to check request status", @@ -201,28 +225,34 @@ def get_queryset(self): OpenApiParameter( CREATE_REPORT_RQ_ID_PARAMETER, type=str, - description=textwrap.dedent("""\ + description=textwrap.dedent( + """\ The report creation request id. Can be specified to check the report creation status. - """), + """ + ), ) ], request=QualityReportCreateSerializer(required=False), responses={ - '201': QualityReportSerializer, - '202': OpenApiResponse( + "201": QualityReportSerializer, + "202": OpenApiResponse( OpenApiTypes.STR, - description=textwrap.dedent("""\ + description=textwrap.dedent( + """\ A quality report request has been enqueued, the request id is returned. The request status can be checked at this endpoint by passing the {} as the query parameter. If the request id is specified, this response means the quality report request is queued or is being processed. - """.format(CREATE_REPORT_RQ_ID_PARAMETER)) + """.format( + CREATE_REPORT_RQ_ID_PARAMETER + ) + ), ), - '400': OpenApiResponse( + "400": OpenApiResponse( description="Invalid or failed request, check the response data for details" - ) - } + ), + }, ) def create(self, request, *args, **kwargs): self.check_permissions(request) @@ -251,9 +281,14 @@ def create(self, request, *args, **kwargs): else: report_manager = qc.QualityReportUpdateManager() rq_job = report_manager.get_quality_check_job(rq_id) - if not rq_job or not QualityReportPermission.create_scope_check_status( - request, job_owner_id=rq_job.meta["user_id"] - ).check_access().allow: + if ( + not rq_job + or not QualityReportPermission.create_scope_check_status( + request, job_owner_id=rq_job.meta["user_id"] + ) + .check_access() + .allow + ): # We should not provide job existence information to unauthorized users raise NotFound("Unknown request id") @@ -274,19 +309,17 @@ def create(self, request, *args, **kwargs): return Response( data=report_serializer.data, status=status.HTTP_201_CREATED, - headers=self.get_success_headers(report_serializer.data) + headers=self.get_success_headers(report_serializer.data), ) @extend_schema( operation_id="quality_retrieve_report_data", summary="Retrieve full contents of the report in JSON format", - responses={ - '200': OpenApiTypes.OBJECT - } + responses={"200": OpenApiTypes.OBJECT}, ) - @action(detail=True, methods=['GET'], url_path='data', serializer_class=None) + @action(detail=True, methods=["GET"], url_path="data", serializer_class=None) def data(self, request, pk): - report = self.get_object() # check permissions + report = self.get_object() # check permissions json_report = qc.prepare_report_for_downloading(report, host=get_server_url(request)) return HttpResponse(json_report.encode()) @@ -294,41 +327,47 @@ def data(self, request, pk): @extend_schema(tags=["quality"]) @extend_schema_view( list=extend_schema( - summary='Method returns a paginated list of quality settings', + summary="Method returns a paginated list of quality settings", responses={ - '200': QualitySettingsSerializer(many=True), - }), + "200": QualitySettingsSerializer(many=True), + }, + ), retrieve=extend_schema( - summary='Method returns details of quality settings', + summary="Method returns details of quality settings", responses={ - '200': QualitySettingsSerializer, - }), + "200": QualitySettingsSerializer, + }, + ), partial_update=extend_schema( - summary='Methods does a partial update of chosen fields in the quality settings instance', + summary="Methods does a partial update of chosen fields in the quality settings instance", request=QualitySettingsSerializer(partial=True), responses={ - '200': QualitySettingsSerializer, - }) + "200": QualitySettingsSerializer, + }, + ), ) -class QualitySettingsViewSet(viewsets.GenericViewSet, - mixins.ListModelMixin, mixins.RetrieveModelMixin, PartialUpdateModelMixin +class QualitySettingsViewSet( + viewsets.GenericViewSet, + mixins.ListModelMixin, + mixins.RetrieveModelMixin, + PartialUpdateModelMixin, ): - queryset = QualitySettings.objects.select_related('task', 'task__organization').all() + queryset = QualitySettings.objects.select_related("task", "task__organization").all() - iam_organization_field = 'task__organization' + iam_organization_field = "task__organization" search_fields = [] - filter_fields = ['id', 'task_id'] - simple_filters = ['task_id'] - ordering_fields = ['id'] - ordering = 'id' + filter_fields = ["id", "task_id"] + simple_filters = ["task_id"] + ordering_fields = ["id"] + ordering = "id" serializer_class = QualitySettingsSerializer def get_queryset(self): queryset = super().get_queryset() - if self.action == 'list': + if self.action == "list": permissions = QualitySettingPermission.create_scope_list(self.request) queryset = permissions.filter(queryset) diff --git a/dev/format_python_code.sh b/dev/format_python_code.sh index 775bce7f0ba6..e31a712011c4 100755 --- a/dev/format_python_code.sh +++ b/dev/format_python_code.sh @@ -17,7 +17,7 @@ fi # The commands must be run on each module directory separately, # otherwise tools confuse the "current" module -for paths in "cvat-sdk" "cvat-cli" "tests/python/"; do +for paths in "cvat-sdk" "cvat-cli" "tests/python/" "cvat/apps/quality_control"; do ${BLACK} -- ${paths} ${ISORT} -- ${paths} done From b66a296f3fe7d5a6e8bd853aa9e03502f8dd3516 Mon Sep 17 00:00:00 2001 From: klakhov Date: Tue, 6 Jun 2023 13:46:38 +0300 Subject: [PATCH 229/257] renamed `frame_meta` to `frameMeta` --- cvat-core/src/frames.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cvat-core/src/frames.ts b/cvat-core/src/frames.ts index 0efd8705cfaa..1296aabd33b3 100644 --- a/cvat-core/src/frames.ts +++ b/cvat-core/src/frames.ts @@ -317,19 +317,19 @@ FrameData.prototype.data.implementation = async function (onServerRequest) { function getFrameMeta(jobID, frame): FramesMetaData['frames'][0] { const { meta, mode, startFrame } = frameDataCache[jobID]; - let frame_meta = null; + let frameMeta = null; if (mode === 'interpolation') { - [frame_meta] = meta.frames; + [frameMeta] = meta.frames; } else if (mode === 'annotation') { if (frame > meta.stop_frame) { throw new ArgumentError(`Meta information about frame ${frame} can't be received from the server`); } - frame_meta = meta.frames[frame - startFrame]; + frameMeta = meta.frames[frame - startFrame]; } else { throw new DataError(`Invalid mode is specified ${mode}`); } - return frame_meta; + return frameMeta; } class FrameBuffer { From e4bd9601f4de812a8e265b0f51cd59e84ba32b7e Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Tue, 6 Jun 2023 14:02:37 +0300 Subject: [PATCH 230/257] Fix python linters --- .../apps/quality_control/migrations/0001_initial.py | 1 - cvat/apps/quality_control/quality_reports.py | 6 +++--- cvat/requirements/development.in | 3 ++- cvat/requirements/development.txt | 13 +++++++++++-- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/cvat/apps/quality_control/migrations/0001_initial.py b/cvat/apps/quality_control/migrations/0001_initial.py index 6c4326257e67..3d362dd220af 100644 --- a/cvat/apps/quality_control/migrations/0001_initial.py +++ b/cvat/apps/quality_control/migrations/0001_initial.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/cvat/apps/quality_control/quality_reports.py b/cvat/apps/quality_control/quality_reports.py index 4b7e9fb91e55..ad226be2b748 100644 --- a/cvat/apps/quality_control/quality_reports.py +++ b/cvat/apps/quality_control/quality_reports.py @@ -1187,10 +1187,10 @@ def _label_matcher(a_inst_id: int, b_inst_id: int) -> bool: b_extra = [ia_b for i_b in b_extra for ia_b in b_instances[i_b]] if self.return_distances: - for (i_a, i_b) in list(distances.keys()): + for i_a, i_b in list(distances.keys()): dist = distances.pop((i_a, i_b)) - for (ia_a, ia_b) in itertools.product(a_instances[i_a], b_instances[i_b]): + for ia_a, ia_b in itertools.product(a_instances[i_a], b_instances[i_b]): distances[(id(ia_a), id(ia_b))] = dist returned_values = (matched, mismatched, a_extra, b_extra) @@ -1387,7 +1387,7 @@ def match_skeletons(self, item_a, item_b): # Map points back to skeletons if self.return_distances: - for (p_a_id, p_b_id) in list(distances.keys()): + for p_a_id, p_b_id in list(distances.keys()): dist = distances.pop((p_a_id, p_b_id)) distances[(id(points_map[p_a_id]), id(points_map[p_b_id]))] = dist diff --git a/cvat/requirements/development.in b/cvat/requirements/development.in index 4866d90a1895..66ce788b1c9f 100644 --- a/cvat/requirements/development.in +++ b/cvat/requirements/development.in @@ -6,4 +6,5 @@ pylint-plugin-utils==0.7 rope==0.17.0 django-extensions==3.0.8 snakeviz==2.1.0 -django-silk==5.0.3 \ No newline at end of file +django-silk==5.0.3 +black==23.3.0 \ No newline at end of file diff --git a/cvat/requirements/development.txt b/cvat/requirements/development.txt index 687c2b65ffe3..65019acf8a51 100644 --- a/cvat/requirements/development.txt +++ b/cvat/requirements/development.txt @@ -1,4 +1,4 @@ -# SHA1:4ea6010ac7e1df247f335663badaef30aabd8a11 +# SHA1:c976e8cb5c96afe9ebe284d9b4dcf8019f55140e # # This file is autogenerated by pip-compile-multi # To update, run: @@ -12,6 +12,8 @@ astroid==2.11.7 # via pylint autopep8==2.0.2 # via django-silk +black==23.3.0 + # via -r cvat/requirements/development.in dill==0.3.6 # via pylint django-extensions==3.0.8 @@ -26,8 +28,14 @@ lazy-object-proxy==1.9.0 # via astroid mccabe==0.7.0 # via pylint +mypy-extensions==1.0.0 + # via black +pathspec==0.11.1 + # via black platformdirs==3.5.1 - # via pylint + # via + # black + # pylint pycodestyle==2.10.0 # via autopep8 pylint==2.14.5 @@ -48,6 +56,7 @@ snakeviz==2.1.0 tomli==2.0.1 # via # autopep8 + # black # pylint tomlkit==0.11.8 # via pylint From 05b9fa0913038f2b6d70f6f6f268af13cabe268b Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 7 Jun 2023 15:59:27 +0300 Subject: [PATCH 231/257] Remove query params with no values from schema --- cvat/apps/engine/filters.py | 12 ++++++------ cvat/schema.yml | 37 ------------------------------------- 2 files changed, 6 insertions(+), 43 deletions(-) diff --git a/cvat/apps/engine/filters.py b/cvat/apps/engine/filters.py index 9a2f9c32db6f..1a46cdf2dbed 100644 --- a/cvat/apps/engine/filters.py +++ b/cvat/apps/engine/filters.py @@ -58,7 +58,7 @@ def get_schema_fields(self, view): description=force_str(full_description) ) ) - ] + ] if search_fields else [] def get_schema_operation_parameters(self, view): search_fields = getattr(view, 'search_fields', []) @@ -73,7 +73,7 @@ def get_schema_operation_parameters(self, view): 'schema': { 'type': 'string', }, - }] + }] if search_fields else [] class OrderingFilter(filters.OrderingFilter): ordering_param = 'sort' @@ -113,7 +113,7 @@ def get_schema_fields(self, view): description=force_str(full_description) ) ) - ] + ] if ordering_fields else [] def get_schema_operation_parameters(self, view): ordering_fields = getattr(view, 'ordering_fields', []) @@ -128,7 +128,7 @@ def get_schema_operation_parameters(self, view): 'schema': { 'type': 'string', }, - }] + }] if ordering_fields else [] class JsonLogicFilter(filters.BaseFilterBackend): Rules = Dict[str, Any] @@ -219,7 +219,7 @@ def get_schema_fields(self, view): description=force_str(full_description) ) ) - ] + ] if filter_fields else [] def get_schema_operation_parameters(self, view): filter_fields = getattr(view, 'filter_fields', []) @@ -235,7 +235,7 @@ def get_schema_operation_parameters(self, view): 'type': 'string', }, }, - ] + ] if filter_fields else [] def _get_lookup_fields(self, view): return get_lookup_fields(view) diff --git a/cvat/schema.yml b/cvat/schema.yml index 3e1812e6f2d0..3df89f047a53 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -3488,12 +3488,6 @@ paths: schema: type: integer description: A simple equality filter for report id - - name: search - required: false - in: query - description: 'A search term. Available search_fields: []' - schema: - type: string - name: sort required: false in: query @@ -3584,12 +3578,6 @@ paths: description: A simple equality filter for the parent_id field schema: type: integer - - name: search - required: false - in: query - description: 'A search term. Available search_fields: []' - schema: - type: string - name: sort required: false in: query @@ -3758,12 +3746,6 @@ paths: description: Number of results to return per page. schema: type: integer - - name: search - required: false - in: query - description: 'A search term. Available search_fields: []' - schema: - type: string - name: sort required: false in: query @@ -5437,12 +5419,6 @@ paths: operationId: webhooks_list_deliveries summary: Method return a list of deliveries for a specific webhook parameters: - - name: filter - required: false - in: query - description: 'A filter term. Available filter_fields: None' - schema: - type: string - in: path name: id schema: @@ -5461,19 +5437,6 @@ paths: description: Number of results to return per page. schema: type: integer - - name: search - required: false - in: query - description: 'A search term. Available search_fields: None' - schema: - type: string - - name: sort - required: false - in: query - description: 'Which field to use when ordering the results. Available ordering_fields: - None' - schema: - type: string tags: - webhooks security: From ee3891f3d6c9a36a14ff6428c3931b62a9634161 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 7 Jun 2023 16:52:49 +0300 Subject: [PATCH 232/257] Improve some descriptions in api --- cvat/apps/engine/serializers.py | 15 ++++++++------- cvat/apps/quality_control/serializers.py | 1 + cvat/apps/quality_control/views.py | 4 ++-- cvat/schema.yml | 11 +++++++---- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index 8a04d12d0a73..960251e393c6 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -584,7 +584,7 @@ class JobWriteSerializer(WriteOnceMixin, serializers.ModelSerializer): frame_selection_method = serializers.ChoiceField( choices=models.JobFrameSelectionMethod.choices(), required=False) - count = serializers.IntegerField(min_value=0, required=False, + frame_count = serializers.IntegerField(min_value=0, required=False, help_text=textwrap.dedent("""\ The number of frames included in the job. Applicable only to the random frame selection @@ -593,7 +593,8 @@ class JobWriteSerializer(WriteOnceMixin, serializers.ModelSerializer): help_text=textwrap.dedent("""\ The seed value for the random number generator. The same value will produce the same frame sets. - Applicable only to the random frame selection + Applicable only to the random frame selection. + By default, a random value is used. """)) frames = serializers.ListField(child=serializers.IntegerField(min_value=0), @@ -603,7 +604,7 @@ class JobWriteSerializer(WriteOnceMixin, serializers.ModelSerializer): class Meta: model = models.Job - random_selection_params = ('count', 'seed',) + random_selection_params = ('frame_count', 'seed',) manual_selection_params = ('frames',) write_once_fields = ('type', 'task_id', 'frame_selection_method',) \ + random_selection_params + manual_selection_params @@ -633,10 +634,10 @@ def create(self, validated_data): frame_selection_method = validated_data.pop("frame_selection_method", None) if frame_selection_method == models.JobFrameSelectionMethod.RANDOM_UNIFORM: - count = validated_data.pop("count") - if size <= count: + frame_count = validated_data.pop("frame_count") + if size <= frame_count: raise serializers.ValidationError( - f"The number of frames requested ({count}) must be lesser than " + f"The number of frames requested ({frame_count}) must be lesser than " f"the number of the task frames ({size})" ) @@ -647,7 +648,7 @@ def create(self, validated_data): from numpy import random rng = random.Generator(random.MT19937(seed=seed)) frames = rng.choice( - list(valid_frame_ids), size=count, shuffle=False, replace=False + list(valid_frame_ids), size=frame_count, shuffle=False, replace=False ).tolist() elif frame_selection_method == models.JobFrameSelectionMethod.MANUAL: frames = validated_data.pop("frames") diff --git a/cvat/apps/quality_control/serializers.py b/cvat/apps/quality_control/serializers.py index 874f7684d6e6..3e4132b24bd8 100644 --- a/cvat/apps/quality_control/serializers.py +++ b/cvat/apps/quality_control/serializers.py @@ -133,6 +133,7 @@ class Meta: "panoptic_comparison": ( "Use only the visible part of the masks and polygons in comparisons" ), + "compare_attributes": "Enables or disables annotation attribute comparison", }.items(): extra_kwargs.setdefault(field_name, {}).setdefault( "help_text", textwrap.dedent(help_text.lstrip("\n")) diff --git a/cvat/apps/quality_control/views.py b/cvat/apps/quality_control/views.py index 5bed02ba3f34..eeda311c1813 100644 --- a/cvat/apps/quality_control/views.py +++ b/cvat/apps/quality_control/views.py @@ -327,13 +327,13 @@ def data(self, request, pk): @extend_schema(tags=["quality"]) @extend_schema_view( list=extend_schema( - summary="Method returns a paginated list of quality settings", + summary="Method returns a paginated list of quality settings instances", responses={ "200": QualitySettingsSerializer(many=True), }, ), retrieve=extend_schema( - summary="Method returns details of quality settings", + summary="Method returns details of the quality settings instance", responses={ "200": QualitySettingsSerializer, }, diff --git a/cvat/schema.yml b/cvat/schema.yml index 3df89f047a53..00775d50ac4a 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -3711,7 +3711,7 @@ paths: /api/quality/settings: get: operationId: quality_list_settings - summary: Method returns a paginated list of quality settings + summary: Method returns a paginated list of quality settings instances parameters: - name: X-Organization in: header @@ -3776,7 +3776,7 @@ paths: /api/quality/settings/{id}: get: operationId: quality_retrieve_settings - summary: Method returns details of quality settings + summary: Method returns details of the quality settings instance parameters: - in: path name: id @@ -6758,7 +6758,7 @@ components: type: integer frame_selection_method: $ref: '#/components/schemas/FrameSelectionMethodEnum' - count: + frame_count: type: integer minimum: 0 description: | @@ -6770,7 +6770,8 @@ components: description: | The seed value for the random number generator. The same value will produce the same frame sets. - Applicable only to the random frame selection + Applicable only to the random frame selection. + By default, a random value is used. frames: type: array items: @@ -7889,6 +7890,7 @@ components: description: Use only the visible part of the masks and polygons in comparisons compare_attributes: type: boolean + description: Enables or disables annotation attribute comparison PatchedTaskWriteRequest: type: object properties: @@ -8298,6 +8300,7 @@ components: description: Use only the visible part of the masks and polygons in comparisons compare_attributes: type: boolean + description: Enables or disables annotation attribute comparison RegisterSerializerEx: type: object properties: From 87782cc34d0fa79080842a3447fd79b3a51b79c5 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 7 Jun 2023 17:06:12 +0300 Subject: [PATCH 233/257] Rename importance to severity --- cvat/apps/engine/serializers.py | 2 +- .../migrations/0001_initial.py | 2 +- cvat/apps/quality_control/models.py | 4 +- cvat/apps/quality_control/quality_reports.py | 28 +++---- cvat/apps/quality_control/serializers.py | 2 +- cvat/apps/quality_control/views.py | 6 +- cvat/schema.yml | 41 +++++----- tests/python/rest_api/test_quality_control.py | 2 +- tests/python/shared/assets/cvat_db/data.json | 78 +++++++++---------- .../shared/assets/quality_conflicts.json | 74 +++++++++--------- 10 files changed, 121 insertions(+), 118 deletions(-) diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index 960251e393c6..57c29d1a8d3f 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -781,7 +781,7 @@ class RqStatusSerializer(serializers.Serializer): progress = serializers.FloatField(max_value=100, default=0) class RqIdSerializer(serializers.Serializer): - rq_id = serializers.CharField() + rq_id = serializers.CharField(help_text="Request id") class JobFiles(serializers.ListField): diff --git a/cvat/apps/quality_control/migrations/0001_initial.py b/cvat/apps/quality_control/migrations/0001_initial.py index 3d362dd220af..4ca79e292c53 100644 --- a/cvat/apps/quality_control/migrations/0001_initial.py +++ b/cvat/apps/quality_control/migrations/0001_initial.py @@ -39,7 +39,7 @@ class Migration(migrations.Migration): ), ), ( - "importance", + "severity", models.CharField( choices=[("warning", "WARNING"), ("error", "ERROR")], max_length=32 ), diff --git a/cvat/apps/quality_control/models.py b/cvat/apps/quality_control/models.py index 3cfea3d482b6..2e7003f8e88a 100644 --- a/cvat/apps/quality_control/models.py +++ b/cvat/apps/quality_control/models.py @@ -33,7 +33,7 @@ def choices(cls): return tuple((x.value, x.name) for x in cls) -class AnnotationConflictImportance(str, Enum): +class AnnotationConflictSeverity(str, Enum): WARNING = "warning" ERROR = "error" @@ -138,7 +138,7 @@ class AnnotationConflict(models.Model): report = models.ForeignKey(QualityReport, on_delete=models.CASCADE, related_name="conflicts") frame = models.PositiveIntegerField() type = models.CharField(max_length=32, choices=AnnotationConflictType.choices()) - importance = models.CharField(max_length=32, choices=AnnotationConflictImportance.choices()) + severity = models.CharField(max_length=32, choices=AnnotationConflictSeverity.choices()) annotation_ids: Sequence[AnnotationId] diff --git a/cvat/apps/quality_control/quality_reports.py b/cvat/apps/quality_control/quality_reports.py index ad226be2b748..bb84e0d2999a 100644 --- a/cvat/apps/quality_control/quality_reports.py +++ b/cvat/apps/quality_control/quality_reports.py @@ -46,7 +46,7 @@ from cvat.apps.profiler import silk_profile from cvat.apps.quality_control import models from cvat.apps.quality_control.models import ( - AnnotationConflictImportance, + AnnotationConflictSeverity, AnnotationConflictType, AnnotationType, ) @@ -107,13 +107,13 @@ class AnnotationConflict(_Serializable): annotation_ids: List[AnnotationId] @property - def importance(self) -> AnnotationConflictImportance: + def severity(self) -> AnnotationConflictSeverity: if self.type in [ AnnotationConflictType.MISSING_ANNOTATION, AnnotationConflictType.EXTRA_ANNOTATION, AnnotationConflictType.MISMATCHING_LABEL, ]: - importance = AnnotationConflictImportance.ERROR + severity = AnnotationConflictSeverity.ERROR elif self.type in [ AnnotationConflictType.LOW_OVERLAP, AnnotationConflictType.MISMATCHING_ATTRIBUTES, @@ -121,20 +121,20 @@ def importance(self) -> AnnotationConflictImportance: AnnotationConflictType.MISMATCHING_GROUPS, AnnotationConflictType.COVERED_ANNOTATION, ]: - importance = AnnotationConflictImportance.WARNING + severity = AnnotationConflictSeverity.WARNING else: assert False - return importance + return severity def _value_serializer(self, v): - if isinstance(v, (AnnotationConflictType, AnnotationConflictImportance)): + if isinstance(v, (AnnotationConflictType, AnnotationConflictSeverity)): return str(v) else: return super()._value_serializer(v) def _fields_dict(self, *, include_properties: Optional[List[str]] = None) -> dict: - return super()._fields_dict(include_properties=include_properties or ["importance"]) + return super()._fields_dict(include_properties=include_properties or ["severity"]) @classmethod def from_dict(cls, d: dict): @@ -444,13 +444,13 @@ def conflict_count(self) -> int: @cached_property def warning_count(self) -> int: return len( - [c for c in self.conflicts if c.importance == AnnotationConflictImportance.WARNING] + [c for c in self.conflicts if c.severity == AnnotationConflictSeverity.WARNING] ) @cached_property def error_count(self) -> int: return len( - [c for c in self.conflicts if c.importance == AnnotationConflictImportance.ERROR] + [c for c in self.conflicts if c.severity == AnnotationConflictSeverity.ERROR] ) @cached_property @@ -2027,10 +2027,10 @@ def generate_report(self) -> ComparisonReport: frames=intersection_frames, conflict_count=len(conflicts), warning_count=len( - [c for c in conflicts if c.importance == AnnotationConflictImportance.WARNING] + [c for c in conflicts if c.severity == AnnotationConflictSeverity.WARNING] ), error_count=len( - [c for c in conflicts if c.importance == AnnotationConflictImportance.ERROR] + [c for c in conflicts if c.severity == AnnotationConflictSeverity.ERROR] ), conflicts_by_type=Counter(c.type for c in conflicts), annotations=ComparisonReportAnnotationsSummary( @@ -2396,14 +2396,14 @@ def _compute_task_report( [ c for c in task_conflicts - if c.importance == AnnotationConflictImportance.WARNING + if c.severity == AnnotationConflictSeverity.WARNING ] ), error_count=len( [ c for c in task_conflicts - if c.importance == AnnotationConflictImportance.ERROR + if c.severity == AnnotationConflictSeverity.ERROR ] ), conflicts_by_type=Counter(c.type for c in task_conflicts), @@ -2450,7 +2450,7 @@ def _save_reports(self, *, task_report: Dict, job_reports: List[Dict]) -> models report=db_report, type=conflict["type"], frame=conflict["frame_id"], - importance=conflict["importance"], + severity=conflict["severity"], ) db_conflicts.append(db_conflict) diff --git a/cvat/apps/quality_control/serializers.py b/cvat/apps/quality_control/serializers.py index 3e4132b24bd8..8fbf9f097027 100644 --- a/cvat/apps/quality_control/serializers.py +++ b/cvat/apps/quality_control/serializers.py @@ -21,7 +21,7 @@ class AnnotationConflictSerializer(serializers.ModelSerializer): class Meta: model = models.AnnotationConflict - fields = ("id", "frame", "type", "annotation_ids", "report_id", "importance") + fields = ("id", "frame", "type", "annotation_ids", "report_id", "severity") read_only_fields = fields diff --git a/cvat/apps/quality_control/views.py b/cvat/apps/quality_control/views.py index eeda311c1813..17a20a79d47c 100644 --- a/cvat/apps/quality_control/views.py +++ b/cvat/apps/quality_control/views.py @@ -20,6 +20,7 @@ from cvat.apps.engine.mixins import PartialUpdateModelMixin from cvat.apps.engine.models import Task +from cvat.apps.engine.serializers import RqIdSerializer from cvat.apps.engine.utils import get_server_url from cvat.apps.iam.permissions import ( AnnotationConflictPermission, @@ -82,7 +83,7 @@ class QualityConflictsViewSet(viewsets.GenericViewSet, mixins.ListModelMixin): ] search_fields = [] - filter_fields = list(search_fields) + ["id", "frame", "type", "job_id", "task_id", "importance"] + filter_fields = list(search_fields) + ["id", "frame", "type", "job_id", "task_id", "severity"] simple_filters = set(filter_fields) - {"id"} lookup_fields = { "job_id": "report__job__id", @@ -274,7 +275,8 @@ def create(self, request, *args, **kwargs): rq_id = qc.QualityReportUpdateManager().schedule_quality_check_job( task, user_id=request.user.id ) - return HttpResponse(rq_id, status=status.HTTP_202_ACCEPTED) + serializer = RqIdSerializer(data={"rq_id": rq_id}) + return HttpResponse(serializer.data, status=status.HTTP_202_ACCEPTED) except qc.QualityReportUpdateManager.QualityReportsNotAvailable as ex: raise ValidationError(str(ex)) diff --git a/cvat/schema.yml b/cvat/schema.yml index 00775d50ac4a..f0c153a255f8 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -3440,7 +3440,7 @@ paths: required: false in: query description: 'A filter term. Available filter_fields: [''id'', ''frame'', - ''type'', ''job_id'', ''task_id'', ''importance'']' + ''type'', ''job_id'', ''task_id'', ''severity'']' schema: type: string - name: frame @@ -3448,14 +3448,6 @@ paths: description: A simple equality filter for the frame field schema: type: integer - - name: importance - in: query - description: A simple equality filter for the importance field - schema: - type: string - enum: - - warning - - error - name: job_id in: query description: A simple equality filter for the job_id field @@ -3488,11 +3480,19 @@ paths: schema: type: integer description: A simple equality filter for report id + - name: severity + in: query + description: A simple equality filter for the severity field + schema: + type: string + enum: + - warning + - error - name: sort required: false in: query description: 'Which field to use when ordering the results. Available ordering_fields: - [''id'', ''frame'', ''type'', ''job_id'', ''task_id'', ''importance'']' + [''id'', ''frame'', ''type'', ''job_id'', ''task_id'', ''severity'']' schema: type: string - name: task_id @@ -5601,9 +5601,9 @@ components: report_id: type: integer readOnly: true - importance: + severity: allOf: - - $ref: '#/components/schemas/ImportanceEnum' + - $ref: '#/components/schemas/SeverityEnum' readOnly: true required: - annotation_ids @@ -6481,14 +6481,6 @@ components: description: |- * `random_uniform` - RANDOM_UNIFORM * `manual` - MANUAL - ImportanceEnum: - enum: - - warning - - error - type: string - description: |- - * `warning` - WARNING - * `error` - ERROR InputTypeEnum: enum: - checkbox @@ -8369,6 +8361,7 @@ components: properties: rq_id: type: string + description: Request id required: - rq_id RqStatus: @@ -8398,6 +8391,14 @@ components: * `Started` - Started * `Finished` - Finished * `Failed` - Failed + SeverityEnum: + enum: + - warning + - error + type: string + description: |- + * `warning` - WARNING + * `error` - ERROR ShapeType: enum: - rectangle diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py index 97605381afdb..be8376a77cf0 100644 --- a/tests/python/rest_api/test_quality_control.py +++ b/tests/python/rest_api/test_quality_control.py @@ -712,7 +712,7 @@ def _get_field_samples(self, field: str) -> Tuple[Any, List[Dict[str, Any]]]: @pytest.mark.parametrize( "field", - ("report_id", "importance", "type", "frame", "job_id", "task_id", "org_id"), + ("report_id", "severity", "type", "frame", "job_id", "task_id", "org_id"), ) def test_can_use_simple_filter_for_object_list(self, field): return super().test_can_use_simple_filter_for_object_list(field) diff --git a/tests/python/shared/assets/cvat_db/data.json b/tests/python/shared/assets/cvat_db/data.json index d69114f44aa0..c0523ed4406a 100644 --- a/tests/python/shared/assets/cvat_db/data.json +++ b/tests/python/shared/assets/cvat_db/data.json @@ -10255,7 +10255,7 @@ "created_date": "2023-05-26T16:25:36.613Z", "target_last_updated": "2023-05-26T16:17:02.635Z", "gt_last_updated": "2023-05-26T16:16:50.630Z", - "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"oriented_lines\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share_percent\": 27.27272727272727,\n \"frames\": [\n 0,\n 1,\n 2\n ],\n \"conflict_count\": 37,\n \"warning_count\": 15,\n \"error_count\": 22,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 9,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n },\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 8,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.6774193548387096,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.5384615384615384,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.4883720930232558,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.6363636363636364\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"mean_iou\": 0.1773115335759765,\n \"accuracy\": 0.5581395348837209\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"frame_count\": 3,\n \"mean_conflict_count\": 12.333333333333334\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 91,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 118,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 88,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 102,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 68,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 98,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 107,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 121,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 122,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 70,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 76,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 93,\n \"job_id\": 27,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 74,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 95,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 73,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 96,\n \"job_id\": 27,\n \"type\": \"ellipse\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 64,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 66,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 94,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 89,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 123,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 97,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_attributes\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 82,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 103,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 81,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 104,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 83,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 105,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 87,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 106,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 80,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 111,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 77,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 114,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 2,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.84,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.6363636363636364,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5675675675675675,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.7777777777777778\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"mean_iou\": 0.5319346007279295,\n \"accuracy\": 0.6486486486486487\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"conflict_count\": 31,\n \"warning_count\": 15,\n \"error_count\": 16,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 3,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 130,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 128,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 124,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 125,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 127,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 129,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 6,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" + "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"oriented_lines\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share_percent\": 27.27272727272727,\n \"frames\": [\n 0,\n 1,\n 2\n ],\n \"conflict_count\": 37,\n \"warning_count\": 15,\n \"error_count\": 22,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 9,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n },\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 8,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.6774193548387096,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.5384615384615384,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.4883720930232558,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.6363636363636364\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"mean_iou\": 0.1773115335759765,\n \"accuracy\": 0.5581395348837209\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"frame_count\": 3,\n \"mean_conflict_count\": 12.333333333333334\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 91,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 118,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 88,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 102,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 68,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 98,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 107,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 121,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 122,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 70,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 76,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 93,\n \"job_id\": 27,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 74,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 95,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 73,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 96,\n \"job_id\": 27,\n \"type\": \"ellipse\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 64,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 66,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 94,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 89,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 123,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 97,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_attributes\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 82,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 103,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 81,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 104,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 83,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 105,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 87,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 106,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 80,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 111,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 77,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 114,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 2,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.84,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.6363636363636364,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5675675675675675,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.7777777777777778\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"mean_iou\": 0.5319346007279295,\n \"accuracy\": 0.6486486486486487\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"conflict_count\": 31,\n \"warning_count\": 15,\n \"error_count\": 16,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 3,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 130,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 128,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 124,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 125,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 127,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 129,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 6,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" } }, { @@ -10268,7 +10268,7 @@ "created_date": "2023-05-26T16:25:36.616Z", "target_last_updated": "2023-05-26T16:11:24.294Z", "gt_last_updated": "2023-05-26T16:16:50.630Z", - "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"oriented_lines\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share_percent\": 27.27272727272727,\n \"frames\": [\n 0,\n 1,\n 2\n ],\n \"conflict_count\": 37,\n \"warning_count\": 15,\n \"error_count\": 22,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 9,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n },\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 8,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.6774193548387096,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.5384615384615384,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.4883720930232558,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.6363636363636364\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"mean_iou\": 0.1773115335759765,\n \"accuracy\": 0.5581395348837209\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"frame_count\": 3,\n \"mean_conflict_count\": 12.333333333333334\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 91,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 118,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 88,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 102,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 68,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 98,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 107,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 121,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 122,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 70,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 76,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 93,\n \"job_id\": 27,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 74,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 95,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 73,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 96,\n \"job_id\": 27,\n \"type\": \"ellipse\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 64,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 66,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 94,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 89,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 123,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 97,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_attributes\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 82,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 103,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 81,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 104,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 83,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 105,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 87,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 106,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 80,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 111,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 77,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 114,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 2,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.84,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.6363636363636364,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5675675675675675,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.7777777777777778\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"mean_iou\": 0.5319346007279295,\n \"accuracy\": 0.6486486486486487\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"conflict_count\": 31,\n \"warning_count\": 15,\n \"error_count\": 16,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 3,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 130,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 128,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 124,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 125,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 127,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"importance\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 129,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"importance\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 6,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" + "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"oriented_lines\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share_percent\": 27.27272727272727,\n \"frames\": [\n 0,\n 1,\n 2\n ],\n \"conflict_count\": 37,\n \"warning_count\": 15,\n \"error_count\": 22,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 9,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n },\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 8,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.6774193548387096,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.5384615384615384,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.4883720930232558,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.6363636363636364\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"mean_iou\": 0.1773115335759765,\n \"accuracy\": 0.5581395348837209\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"frame_count\": 3,\n \"mean_conflict_count\": 12.333333333333334\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 91,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 118,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 88,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 102,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 68,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 98,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 107,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 121,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 122,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 70,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 76,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 93,\n \"job_id\": 27,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 74,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 95,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 73,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 96,\n \"job_id\": 27,\n \"type\": \"ellipse\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 64,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 66,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 94,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 89,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 123,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 97,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_attributes\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 82,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 103,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 81,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 104,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 83,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 105,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 87,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 106,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 80,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 111,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 77,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 114,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 2,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.84,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.6363636363636364,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5675675675675675,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.7777777777777778\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"mean_iou\": 0.5319346007279295,\n \"accuracy\": 0.6486486486486487\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"conflict_count\": 31,\n \"warning_count\": 15,\n \"error_count\": 16,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 3,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 130,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 128,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 124,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 125,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 127,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 129,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 6,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" } }, { @@ -10278,7 +10278,7 @@ "report": 2, "frame": 0, "type": "low_overlap", - "importance": "warning" + "severity": "warning" } }, { @@ -10288,7 +10288,7 @@ "report": 2, "frame": 0, "type": "low_overlap", - "importance": "warning" + "severity": "warning" } }, { @@ -10298,7 +10298,7 @@ "report": 2, "frame": 0, "type": "low_overlap", - "importance": "warning" + "severity": "warning" } }, { @@ -10308,7 +10308,7 @@ "report": 2, "frame": 0, "type": "low_overlap", - "importance": "warning" + "severity": "warning" } }, { @@ -10318,7 +10318,7 @@ "report": 2, "frame": 0, "type": "low_overlap", - "importance": "warning" + "severity": "warning" } }, { @@ -10328,7 +10328,7 @@ "report": 2, "frame": 0, "type": "low_overlap", - "importance": "warning" + "severity": "warning" } }, { @@ -10338,7 +10338,7 @@ "report": 2, "frame": 0, "type": "missing_annotation", - "importance": "error" + "severity": "error" } }, { @@ -10348,7 +10348,7 @@ "report": 2, "frame": 0, "type": "missing_annotation", - "importance": "error" + "severity": "error" } }, { @@ -10358,7 +10358,7 @@ "report": 2, "frame": 0, "type": "missing_annotation", - "importance": "error" + "severity": "error" } }, { @@ -10368,7 +10368,7 @@ "report": 2, "frame": 0, "type": "extra_annotation", - "importance": "error" + "severity": "error" } }, { @@ -10378,7 +10378,7 @@ "report": 2, "frame": 0, "type": "extra_annotation", - "importance": "error" + "severity": "error" } }, { @@ -10388,7 +10388,7 @@ "report": 2, "frame": 0, "type": "extra_annotation", - "importance": "error" + "severity": "error" } }, { @@ -10398,7 +10398,7 @@ "report": 2, "frame": 0, "type": "extra_annotation", - "importance": "error" + "severity": "error" } }, { @@ -10408,7 +10408,7 @@ "report": 2, "frame": 0, "type": "extra_annotation", - "importance": "error" + "severity": "error" } }, { @@ -10418,7 +10418,7 @@ "report": 2, "frame": 0, "type": "extra_annotation", - "importance": "error" + "severity": "error" } }, { @@ -10428,7 +10428,7 @@ "report": 2, "frame": 0, "type": "extra_annotation", - "importance": "error" + "severity": "error" } }, { @@ -10438,7 +10438,7 @@ "report": 2, "frame": 0, "type": "extra_annotation", - "importance": "error" + "severity": "error" } }, { @@ -10448,7 +10448,7 @@ "report": 2, "frame": 0, "type": "extra_annotation", - "importance": "error" + "severity": "error" } }, { @@ -10458,7 +10458,7 @@ "report": 2, "frame": 0, "type": "extra_annotation", - "importance": "error" + "severity": "error" } }, { @@ -10468,7 +10468,7 @@ "report": 2, "frame": 0, "type": "mismatching_label", - "importance": "error" + "severity": "error" } }, { @@ -10478,7 +10478,7 @@ "report": 2, "frame": 0, "type": "mismatching_label", - "importance": "error" + "severity": "error" } }, { @@ -10488,7 +10488,7 @@ "report": 2, "frame": 0, "type": "mismatching_label", - "importance": "error" + "severity": "error" } }, { @@ -10498,7 +10498,7 @@ "report": 2, "frame": 0, "type": "mismatching_direction", - "importance": "warning" + "severity": "warning" } }, { @@ -10508,7 +10508,7 @@ "report": 2, "frame": 0, "type": "covered_annotation", - "importance": "warning" + "severity": "warning" } }, { @@ -10518,7 +10518,7 @@ "report": 2, "frame": 0, "type": "mismatching_attributes", - "importance": "warning" + "severity": "warning" } }, { @@ -10528,7 +10528,7 @@ "report": 2, "frame": 0, "type": "mismatching_groups", - "importance": "warning" + "severity": "warning" } }, { @@ -10538,7 +10538,7 @@ "report": 2, "frame": 0, "type": "mismatching_groups", - "importance": "warning" + "severity": "warning" } }, { @@ -10548,7 +10548,7 @@ "report": 2, "frame": 0, "type": "mismatching_groups", - "importance": "warning" + "severity": "warning" } }, { @@ -10558,7 +10558,7 @@ "report": 2, "frame": 0, "type": "mismatching_groups", - "importance": "warning" + "severity": "warning" } }, { @@ -10568,7 +10568,7 @@ "report": 2, "frame": 0, "type": "mismatching_groups", - "importance": "warning" + "severity": "warning" } }, { @@ -10578,7 +10578,7 @@ "report": 2, "frame": 0, "type": "mismatching_groups", - "importance": "warning" + "severity": "warning" } }, { @@ -10588,7 +10588,7 @@ "report": 2, "frame": 1, "type": "missing_annotation", - "importance": "error" + "severity": "error" } }, { @@ -10598,7 +10598,7 @@ "report": 2, "frame": 1, "type": "missing_annotation", - "importance": "error" + "severity": "error" } }, { @@ -10608,7 +10608,7 @@ "report": 2, "frame": 1, "type": "missing_annotation", - "importance": "error" + "severity": "error" } }, { @@ -10618,7 +10618,7 @@ "report": 2, "frame": 1, "type": "missing_annotation", - "importance": "error" + "severity": "error" } }, { @@ -10628,7 +10628,7 @@ "report": 2, "frame": 1, "type": "missing_annotation", - "importance": "error" + "severity": "error" } }, { @@ -10638,7 +10638,7 @@ "report": 2, "frame": 1, "type": "missing_annotation", - "importance": "error" + "severity": "error" } }, { diff --git a/tests/python/shared/assets/quality_conflicts.json b/tests/python/shared/assets/quality_conflicts.json index c116140f511f..7244849f9c57 100644 --- a/tests/python/shared/assets/quality_conflicts.json +++ b/tests/python/shared/assets/quality_conflicts.json @@ -13,7 +13,7 @@ ], "frame": 1, "id": 37, - "importance": "error", + "severity": "error", "report_id": 2, "type": "missing_annotation" }, @@ -27,7 +27,7 @@ ], "frame": 1, "id": 36, - "importance": "error", + "severity": "error", "report_id": 2, "type": "missing_annotation" }, @@ -41,7 +41,7 @@ ], "frame": 1, "id": 35, - "importance": "error", + "severity": "error", "report_id": 2, "type": "missing_annotation" }, @@ -55,7 +55,7 @@ ], "frame": 1, "id": 34, - "importance": "error", + "severity": "error", "report_id": 2, "type": "missing_annotation" }, @@ -69,7 +69,7 @@ ], "frame": 1, "id": 33, - "importance": "error", + "severity": "error", "report_id": 2, "type": "missing_annotation" }, @@ -83,7 +83,7 @@ ], "frame": 1, "id": 32, - "importance": "error", + "severity": "error", "report_id": 2, "type": "missing_annotation" }, @@ -102,7 +102,7 @@ ], "frame": 0, "id": 31, - "importance": "warning", + "severity": "warning", "report_id": 2, "type": "mismatching_groups" }, @@ -121,7 +121,7 @@ ], "frame": 0, "id": 30, - "importance": "warning", + "severity": "warning", "report_id": 2, "type": "mismatching_groups" }, @@ -140,7 +140,7 @@ ], "frame": 0, "id": 29, - "importance": "warning", + "severity": "warning", "report_id": 2, "type": "mismatching_groups" }, @@ -159,7 +159,7 @@ ], "frame": 0, "id": 28, - "importance": "warning", + "severity": "warning", "report_id": 2, "type": "mismatching_groups" }, @@ -178,7 +178,7 @@ ], "frame": 0, "id": 27, - "importance": "warning", + "severity": "warning", "report_id": 2, "type": "mismatching_groups" }, @@ -197,7 +197,7 @@ ], "frame": 0, "id": 26, - "importance": "warning", + "severity": "warning", "report_id": 2, "type": "mismatching_groups" }, @@ -216,7 +216,7 @@ ], "frame": 0, "id": 25, - "importance": "warning", + "severity": "warning", "report_id": 2, "type": "mismatching_attributes" }, @@ -230,7 +230,7 @@ ], "frame": 0, "id": 24, - "importance": "warning", + "severity": "warning", "report_id": 2, "type": "covered_annotation" }, @@ -249,7 +249,7 @@ ], "frame": 0, "id": 23, - "importance": "warning", + "severity": "warning", "report_id": 2, "type": "mismatching_direction" }, @@ -268,7 +268,7 @@ ], "frame": 0, "id": 22, - "importance": "error", + "severity": "error", "report_id": 2, "type": "mismatching_label" }, @@ -287,7 +287,7 @@ ], "frame": 0, "id": 21, - "importance": "error", + "severity": "error", "report_id": 2, "type": "mismatching_label" }, @@ -306,7 +306,7 @@ ], "frame": 0, "id": 20, - "importance": "error", + "severity": "error", "report_id": 2, "type": "mismatching_label" }, @@ -320,7 +320,7 @@ ], "frame": 0, "id": 19, - "importance": "error", + "severity": "error", "report_id": 2, "type": "extra_annotation" }, @@ -334,7 +334,7 @@ ], "frame": 0, "id": 18, - "importance": "error", + "severity": "error", "report_id": 2, "type": "extra_annotation" }, @@ -348,7 +348,7 @@ ], "frame": 0, "id": 17, - "importance": "error", + "severity": "error", "report_id": 2, "type": "extra_annotation" }, @@ -362,7 +362,7 @@ ], "frame": 0, "id": 16, - "importance": "error", + "severity": "error", "report_id": 2, "type": "extra_annotation" }, @@ -376,7 +376,7 @@ ], "frame": 0, "id": 15, - "importance": "error", + "severity": "error", "report_id": 2, "type": "extra_annotation" }, @@ -390,7 +390,7 @@ ], "frame": 0, "id": 14, - "importance": "error", + "severity": "error", "report_id": 2, "type": "extra_annotation" }, @@ -404,7 +404,7 @@ ], "frame": 0, "id": 13, - "importance": "error", + "severity": "error", "report_id": 2, "type": "extra_annotation" }, @@ -418,7 +418,7 @@ ], "frame": 0, "id": 12, - "importance": "error", + "severity": "error", "report_id": 2, "type": "extra_annotation" }, @@ -432,7 +432,7 @@ ], "frame": 0, "id": 11, - "importance": "error", + "severity": "error", "report_id": 2, "type": "extra_annotation" }, @@ -446,7 +446,7 @@ ], "frame": 0, "id": 10, - "importance": "error", + "severity": "error", "report_id": 2, "type": "extra_annotation" }, @@ -460,7 +460,7 @@ ], "frame": 0, "id": 9, - "importance": "error", + "severity": "error", "report_id": 2, "type": "missing_annotation" }, @@ -474,7 +474,7 @@ ], "frame": 0, "id": 8, - "importance": "error", + "severity": "error", "report_id": 2, "type": "missing_annotation" }, @@ -488,7 +488,7 @@ ], "frame": 0, "id": 7, - "importance": "error", + "severity": "error", "report_id": 2, "type": "missing_annotation" }, @@ -507,7 +507,7 @@ ], "frame": 0, "id": 6, - "importance": "warning", + "severity": "warning", "report_id": 2, "type": "low_overlap" }, @@ -526,7 +526,7 @@ ], "frame": 0, "id": 5, - "importance": "warning", + "severity": "warning", "report_id": 2, "type": "low_overlap" }, @@ -545,7 +545,7 @@ ], "frame": 0, "id": 4, - "importance": "warning", + "severity": "warning", "report_id": 2, "type": "low_overlap" }, @@ -564,7 +564,7 @@ ], "frame": 0, "id": 3, - "importance": "warning", + "severity": "warning", "report_id": 2, "type": "low_overlap" }, @@ -583,7 +583,7 @@ ], "frame": 0, "id": 2, - "importance": "warning", + "severity": "warning", "report_id": 2, "type": "low_overlap" }, @@ -602,7 +602,7 @@ ], "frame": 0, "id": 1, - "importance": "warning", + "severity": "warning", "report_id": 2, "type": "low_overlap" } From cf4a4f3e16f53ef23650b7e10014212f2fa3f3bc Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 7 Jun 2023 17:16:48 +0300 Subject: [PATCH 234/257] Update some descriptions --- cvat/apps/quality_control/serializers.py | 28 ++++++++--------- cvat/schema.yml | 40 +++++++++++++----------- 2 files changed, 36 insertions(+), 32 deletions(-) diff --git a/cvat/apps/quality_control/serializers.py b/cvat/apps/quality_control/serializers.py index 8fbf9f097027..6ba022233b4c 100644 --- a/cvat/apps/quality_control/serializers.py +++ b/cvat/apps/quality_control/serializers.py @@ -98,9 +98,9 @@ class Meta: for field_name, help_text in { "iou_threshold": "Used for distinction between matched / unmatched shapes", - "low_overlap_threshold": ( - "Used for distinction between strong / weak (low_overlap) matches" - ), + "low_overlap_threshold": """ + Used for distinction between strong / weak (low_overlap) matches + """, "oks_sigma": """ Like IoU threshold, but for points. The percent of the bbox area, used as the radius of the circle around the GT point, @@ -115,24 +115,24 @@ class Meta: "oriented_lines": "Indicates that polylines have direction", "line_orientation_threshold": """ The minimal gain in the GT IoU between the given and reversed line directions - to consider the line inverted. Only useful with the 'oriented_lines' parameter + to consider the line inverted. Only used when the 'oriented_lines' parameter is true """, "compare_groups": "Enables or disables annotation group checks", "group_match_threshold": """ - Minimal IoU for groups to be considered matching, - used when the 'compare_groups' is enabled + Minimal IoU for groups to be considered matching. + Only used when the 'compare_groups' parameter is true + """, + "check_covered_annotations": """ + Check for partially-covered annotations, useful in segmentation tasks """, - "check_covered_annotations": ( - "Check for partially-covered annotations, useful in segmentation tasks" - ), "object_visibility_threshold": """ Minimal visible area percent of the spatial annotations (polygons, masks) - for reporting covered annotations, - useful with the 'check_covered_annotations' option + for reporting covered annotations. + Only used when the 'object_visibility_threshold' parameter is true + """, + "panoptic_comparison": """ + Use only the visible part of the masks and polygons in comparisons """, - "panoptic_comparison": ( - "Use only the visible part of the masks and polygons in comparisons" - ), "compare_attributes": "Enables or disables annotation attribute comparison", }.items(): extra_kwargs.setdefault(field_name, {}).setdefault( diff --git a/cvat/schema.yml b/cvat/schema.yml index f0c153a255f8..fd1713f2c579 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -7847,7 +7847,8 @@ components: low_overlap_threshold: type: number format: double - description: Used for distinction between strong / weak (low_overlap) matches + description: | + Used for distinction between strong / weak (low_overlap) matches oriented_lines: type: boolean description: Indicates that polylines have direction @@ -7856,7 +7857,7 @@ components: format: double description: | The minimal gain in the GT IoU between the given and reversed line directions - to consider the line inverted. Only useful with the 'oriented_lines' parameter + to consider the line inverted. Only used when the 'oriented_lines' parameter is true compare_groups: type: boolean description: Enables or disables annotation group checks @@ -7864,22 +7865,23 @@ components: type: number format: double description: | - Minimal IoU for groups to be considered matching, - used when the 'compare_groups' is enabled + Minimal IoU for groups to be considered matching. + Only used when the 'compare_groups' parameter is true check_covered_annotations: type: boolean - description: Check for partially-covered annotations, useful in segmentation - tasks + description: | + Check for partially-covered annotations, useful in segmentation tasks object_visibility_threshold: type: number format: double description: | Minimal visible area percent of the spatial annotations (polygons, masks) - for reporting covered annotations, - useful with the 'check_covered_annotations' option + for reporting covered annotations. + Only used when the 'object_visibility_threshold' parameter is true panoptic_comparison: type: boolean - description: Use only the visible part of the masks and polygons in comparisons + description: | + Use only the visible part of the masks and polygons in comparisons compare_attributes: type: boolean description: Enables or disables annotation attribute comparison @@ -8257,7 +8259,8 @@ components: low_overlap_threshold: type: number format: double - description: Used for distinction between strong / weak (low_overlap) matches + description: | + Used for distinction between strong / weak (low_overlap) matches oriented_lines: type: boolean description: Indicates that polylines have direction @@ -8266,7 +8269,7 @@ components: format: double description: | The minimal gain in the GT IoU between the given and reversed line directions - to consider the line inverted. Only useful with the 'oriented_lines' parameter + to consider the line inverted. Only used when the 'oriented_lines' parameter is true compare_groups: type: boolean description: Enables or disables annotation group checks @@ -8274,22 +8277,23 @@ components: type: number format: double description: | - Minimal IoU for groups to be considered matching, - used when the 'compare_groups' is enabled + Minimal IoU for groups to be considered matching. + Only used when the 'compare_groups' parameter is true check_covered_annotations: type: boolean - description: Check for partially-covered annotations, useful in segmentation - tasks + description: | + Check for partially-covered annotations, useful in segmentation tasks object_visibility_threshold: type: number format: double description: | Minimal visible area percent of the spatial annotations (polygons, masks) - for reporting covered annotations, - useful with the 'check_covered_annotations' option + for reporting covered annotations. + Only used when the 'object_visibility_threshold' parameter is true panoptic_comparison: type: boolean - description: Use only the visible part of the masks and polygons in comparisons + description: | + Use only the visible part of the masks and polygons in comparisons compare_attributes: type: boolean description: Enables or disables annotation attribute comparison From 732bb18d75c32dd3afbc8b6c1a445673a13d29c7 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 7 Jun 2023 17:23:15 +0300 Subject: [PATCH 235/257] Update tests --- tests/python/rest_api/test_jobs.py | 20 +++++++++---------- tests/python/rest_api/test_quality_control.py | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/tests/python/rest_api/test_jobs.py b/tests/python/rest_api/test_jobs.py index 9177a5e37793..2df0ca5841aa 100644 --- a/tests/python/rest_api/test_jobs.py +++ b/tests/python/rest_api/test_jobs.py @@ -133,7 +133,7 @@ def test_can_create_gt_job_with_random_frames(self, admin_user, tasks, task_mode "task_id": task_id, "type": "ground_truth", "frame_selection_method": "random_uniform", - "count": job_frame_count, + "frame_count": job_frame_count, } response = self._test_create_job_ok(user, job_spec) @@ -160,7 +160,7 @@ def test_can_create_gt_job_with_random_frames_and_seed(self, admin_user, task_id "task_id": task_id, "type": "ground_truth", "frame_selection_method": "random_uniform", - "count": 3, + "frame_count": 3, "seed": 42, } @@ -180,7 +180,7 @@ def test_can_create_no_more_than_1_gt_job(self, admin_user, jobs): "task_id": task_id, "type": "ground_truth", "frame_selection_method": "random_uniform", - "count": 1, + "frame_count": 1, } response = self._test_create_job_fails( @@ -202,7 +202,7 @@ def test_can_create_gt_job_in_sandbox_task(self, tasks, jobs, users): "task_id": task["id"], "type": "ground_truth", "frame_selection_method": "random_uniform", - "count": 1, + "frame_count": 1, } self._test_create_job_ok(user, job_spec) @@ -247,7 +247,7 @@ def test_create_gt_job_in_org_task( "task_id": task["id"], "type": "ground_truth", "frame_selection_method": "random_uniform", - "count": 1, + "frame_count": 1, } if allow: @@ -271,7 +271,7 @@ def test_create_response_matches_get(self, tasks, jobs, users): "task_id": task["id"], "type": "ground_truth", "frame_selection_method": "random_uniform", - "count": 1, + "frame_count": 1, } response = self._test_create_job_ok(user, spec) @@ -323,7 +323,7 @@ def test_can_destroy_gt_job_in_sandbox_task(self, tasks, jobs, users, admin_user "task_id": task["id"], "type": "ground_truth", "frame_selection_method": "random_uniform", - "count": 1, + "frame_count": 1, } with make_api_client(admin_user) as api_client: @@ -377,7 +377,7 @@ def test_destroy_gt_job_in_org_task( "task_id": task["id"], "type": "ground_truth", "frame_selection_method": "random_uniform", - "count": 1, + "frame_count": 1, } with make_api_client(admin_user) as api_client: @@ -471,7 +471,7 @@ def test_can_get_gt_job_in_sandbox_task(self, tasks, jobs, users, admin_user): "task_id": task["id"], "type": "ground_truth", "frame_selection_method": "random_uniform", - "count": 1, + "frame_count": 1, } with make_api_client(admin_user) as api_client: @@ -526,7 +526,7 @@ def test_get_gt_job_in_org_task( "task_id": task["id"], "type": "ground_truth", "frame_selection_method": "random_uniform", - "count": 1, + "frame_count": 1, } with make_api_client(admin_user) as api_client: diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py index be8376a77cf0..4a94220f1fa8 100644 --- a/tests/python/rest_api/test_quality_control.py +++ b/tests/python/rest_api/test_quality_control.py @@ -26,7 +26,7 @@ def create_quality_report(self, user: str, task_id: int): _parse_response=False, ) assert response.status == HTTPStatus.ACCEPTED - rq_id = response.data.decode() + rq_id = json.loads(response.data)["rq_id"] while True: (_, response) = api_client.quality_api.create_report( From 1d309d7c17bb7aa8c5f7457b0824aca424c55c1d Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 7 Jun 2023 17:40:34 +0300 Subject: [PATCH 236/257] Update tests --- cvat/apps/quality_control/quality_reports.py | 20 ++++---------------- cvat/apps/quality_control/views.py | 8 ++++++-- 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/cvat/apps/quality_control/quality_reports.py b/cvat/apps/quality_control/quality_reports.py index bb84e0d2999a..41b90c5c8368 100644 --- a/cvat/apps/quality_control/quality_reports.py +++ b/cvat/apps/quality_control/quality_reports.py @@ -443,15 +443,11 @@ def conflict_count(self) -> int: @cached_property def warning_count(self) -> int: - return len( - [c for c in self.conflicts if c.severity == AnnotationConflictSeverity.WARNING] - ) + return len([c for c in self.conflicts if c.severity == AnnotationConflictSeverity.WARNING]) @cached_property def error_count(self) -> int: - return len( - [c for c in self.conflicts if c.severity == AnnotationConflictSeverity.ERROR] - ) + return len([c for c in self.conflicts if c.severity == AnnotationConflictSeverity.ERROR]) @cached_property def conflicts_by_type(self) -> Dict[AnnotationConflictType, int]: @@ -2393,18 +2389,10 @@ def _compute_task_report( frames=sorted(task_intersection_frames), conflict_count=len(task_conflicts), warning_count=len( - [ - c - for c in task_conflicts - if c.severity == AnnotationConflictSeverity.WARNING - ] + [c for c in task_conflicts if c.severity == AnnotationConflictSeverity.WARNING] ), error_count=len( - [ - c - for c in task_conflicts - if c.severity == AnnotationConflictSeverity.ERROR - ] + [c for c in task_conflicts if c.severity == AnnotationConflictSeverity.ERROR] ), conflicts_by_type=Counter(c.type for c in task_conflicts), annotations=task_annotations_summary, diff --git a/cvat/apps/quality_control/views.py b/cvat/apps/quality_control/views.py index 17a20a79d47c..56e2dcac4fce 100644 --- a/cvat/apps/quality_control/views.py +++ b/cvat/apps/quality_control/views.py @@ -275,12 +275,16 @@ def create(self, request, *args, **kwargs): rq_id = qc.QualityReportUpdateManager().schedule_quality_check_job( task, user_id=request.user.id ) - serializer = RqIdSerializer(data={"rq_id": rq_id}) - return HttpResponse(serializer.data, status=status.HTTP_202_ACCEPTED) + serializer = RqIdSerializer({"rq_id": rq_id}) + return Response(serializer.data, status=status.HTTP_202_ACCEPTED) except qc.QualityReportUpdateManager.QualityReportsNotAvailable as ex: raise ValidationError(str(ex)) else: + serializer = RqIdSerializer(data={"rq_id": rq_id}) + serializer.is_valid(raise_exception=True) + rq_id = serializer.validated_data["rq_id"] + report_manager = qc.QualityReportUpdateManager() rq_job = report_manager.get_quality_check_job(rq_id) if ( From 2fc2c27498029c1fd35488608bfff14c240bf4f1 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 7 Jun 2023 17:45:43 +0300 Subject: [PATCH 237/257] Update changelog --- CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ff29394d6bd7..927eea1bfa94 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## \[2.5.0] - Unreleased ### Added -- TBD +- \[API\] Support for Ground Truth job creation and removal () +- \[API\] Task quality estimation endpoints () ### Changed - Replaced Apache mod_wsgi with Uvicorn ASGI server for backend use() @@ -25,6 +26,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Deletion of uploaded files, including annotations and backups, after they have been uploaded to the server using the TUS protocol but before an RQ job has been initiated. () - Simultaneous creation of tasks or projects with identical names from backups by multiple users.() +- Dataset export error with `outside` property of tracks () ### Security - TDB From bd23e226172b29a7fd9b4598b7e1cba6f341bc3d Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 7 Jun 2023 18:03:34 +0300 Subject: [PATCH 238/257] Rename line orientation parameter --- .../migrations/0001_initial.py | 2 +- cvat/apps/quality_control/models.py | 2 +- cvat/apps/quality_control/quality_reports.py | 12 +++--- cvat/apps/quality_control/serializers.py | 7 ++-- cvat/schema.yml | 14 ++++--- tests/python/rest_api/test_quality_control.py | 2 +- tests/python/shared/assets/cvat_db/data.json | 38 +++++++++---------- .../shared/assets/quality_settings.json | 34 ++++++++--------- 8 files changed, 57 insertions(+), 54 deletions(-) diff --git a/cvat/apps/quality_control/migrations/0001_initial.py b/cvat/apps/quality_control/migrations/0001_initial.py index 4ca79e292c53..6af7244eadc8 100644 --- a/cvat/apps/quality_control/migrations/0001_initial.py +++ b/cvat/apps/quality_control/migrations/0001_initial.py @@ -59,7 +59,7 @@ class Migration(migrations.Migration): ("oks_sigma", models.FloatField()), ("line_thickness", models.FloatField()), ("low_overlap_threshold", models.FloatField()), - ("oriented_lines", models.BooleanField()), + ("compare_line_orientation", models.BooleanField()), ("line_orientation_threshold", models.FloatField()), ("compare_groups", models.BooleanField()), ("group_match_threshold", models.FloatField()), diff --git a/cvat/apps/quality_control/models.py b/cvat/apps/quality_control/models.py index 2e7003f8e88a..4dec9161d768 100644 --- a/cvat/apps/quality_control/models.py +++ b/cvat/apps/quality_control/models.py @@ -186,7 +186,7 @@ class QualitySettings(models.Model): low_overlap_threshold = models.FloatField() - oriented_lines = models.BooleanField() + compare_line_orientation = models.BooleanField() line_orientation_threshold = models.FloatField() compare_groups = models.BooleanField() diff --git a/cvat/apps/quality_control/quality_reports.py b/cvat/apps/quality_control/quality_reports.py index 41b90c5c8368..7dca10a9de19 100644 --- a/cvat/apps/quality_control/quality_reports.py +++ b/cvat/apps/quality_control/quality_reports.py @@ -173,7 +173,7 @@ class ComparisonParameters(_Serializable): line_thickness: float = 0.01 "Thickness of polylines, relatively to the (image area) ^ 0.5" - oriented_lines: bool = True + compare_line_orientation: bool = True "Indicates that polylines have direction" line_orientation_threshold: float = 0.1 @@ -918,7 +918,7 @@ def __init__( # https://cocodataset.org/#keypoints-eval # https://github.com/cocodataset/cocoapi/blob/8c9bcc3cf640524c4c20a9c40e89cb6a2f2fa0e9/PythonAPI/pycocotools/cocoeval.py#L523 oks_sigma: float = 0.09, - oriented_lines: bool = False, + compare_line_orientation: bool = False, line_torso_radius: float = 0.01, panoptic_comparison: bool = False, ): @@ -931,7 +931,7 @@ def __init__( self.oks_sigma = oks_sigma "% of the shape area" - self.oriented_lines = oriented_lines + self.compare_line_orientation = compare_line_orientation "Whether lines are oriented or not" # Here we use a % of image size in pixels, using the image size as the scale @@ -1198,7 +1198,7 @@ def _label_matcher(a_inst_id: int, b_inst_id: int) -> bool: def match_lines(self, item_a, item_b): matcher = _LineMatcher( - oriented=self.oriented_lines, + oriented=self.compare_line_orientation, torso_r=self.line_torso_radius, scale=np.prod(item_a.image.size), ) @@ -1468,7 +1468,7 @@ def __init__(self, categories: dm.CategoriesInfo, *, settings: ComparisonParamet iou_threshold=settings.iou_threshold, oks_sigma=settings.oks_sigma, line_torso_radius=settings.line_thickness, - oriented_lines=False, # should not be taken from outside, handled differently + compare_line_orientation=False, # should not be taken from outside, handled differently ) self.coverage_threshold = settings.object_visibility_threshold self.group_match_threshold = settings.group_match_threshold @@ -1749,7 +1749,7 @@ def _find_closest_unmatched_shape(shape: dm.Annotation): mean_iou = np.mean(resulting_distances) if resulting_distances else 0 if ( - self.settings.oriented_lines + self.settings.compare_line_orientation and dm.AnnotationType.polyline in self.comparator.included_ann_types ): # Check line directions diff --git a/cvat/apps/quality_control/serializers.py b/cvat/apps/quality_control/serializers.py index 6ba022233b4c..31d365984315 100644 --- a/cvat/apps/quality_control/serializers.py +++ b/cvat/apps/quality_control/serializers.py @@ -80,7 +80,7 @@ class Meta: "oks_sigma", "line_thickness", "low_overlap_threshold", - "oriented_lines", + "compare_line_orientation", "line_orientation_threshold", "compare_groups", "group_match_threshold", @@ -112,10 +112,11 @@ class Meta: The distance to the boundary around the GT line, inside of which the checked line points should be """, - "oriented_lines": "Indicates that polylines have direction", + "compare_line_orientation": "Enables or disables polyline orientation comparison", "line_orientation_threshold": """ The minimal gain in the GT IoU between the given and reversed line directions - to consider the line inverted. Only used when the 'oriented_lines' parameter is true + to consider the line inverted. + Only used when the 'compare_line_orientation' parameter is true """, "compare_groups": "Enables or disables annotation group checks", "group_match_threshold": """ diff --git a/cvat/schema.yml b/cvat/schema.yml index fd1713f2c579..279c1e3ec969 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -7849,15 +7849,16 @@ components: format: double description: | Used for distinction between strong / weak (low_overlap) matches - oriented_lines: + compare_line_orientation: type: boolean - description: Indicates that polylines have direction + description: Enables or disables polyline orientation comparison line_orientation_threshold: type: number format: double description: | The minimal gain in the GT IoU between the given and reversed line directions - to consider the line inverted. Only used when the 'oriented_lines' parameter is true + to consider the line inverted. + Only used when the 'compare_line_orientation' parameter is true compare_groups: type: boolean description: Enables or disables annotation group checks @@ -8261,15 +8262,16 @@ components: format: double description: | Used for distinction between strong / weak (low_overlap) matches - oriented_lines: + compare_line_orientation: type: boolean - description: Indicates that polylines have direction + description: Enables or disables polyline orientation comparison line_orientation_threshold: type: number format: double description: | The minimal gain in the GT IoU between the given and reversed line directions - to consider the line inverted. Only used when the 'oriented_lines' parameter is true + to consider the line inverted. + Only used when the 'compare_line_orientation' parameter is true compare_groups: type: boolean description: Enables or disables annotation group checks diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py index 4a94220f1fa8..7e427d1b5828 100644 --- a/tests/python/rest_api/test_quality_control.py +++ b/tests/python/rest_api/test_quality_control.py @@ -1164,7 +1164,7 @@ def test_modified_task_produces_different_metrics( "low_overlap_threshold", "object_visibility_threshold", "oks_sigma", - "oriented_lines", + "compare_line_orientation", "panoptic_comparison", ], ) diff --git a/tests/python/shared/assets/cvat_db/data.json b/tests/python/shared/assets/cvat_db/data.json index c0523ed4406a..8204d1ac143f 100644 --- a/tests/python/shared/assets/cvat_db/data.json +++ b/tests/python/shared/assets/cvat_db/data.json @@ -10255,7 +10255,7 @@ "created_date": "2023-05-26T16:25:36.613Z", "target_last_updated": "2023-05-26T16:17:02.635Z", "gt_last_updated": "2023-05-26T16:16:50.630Z", - "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"oriented_lines\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share_percent\": 27.27272727272727,\n \"frames\": [\n 0,\n 1,\n 2\n ],\n \"conflict_count\": 37,\n \"warning_count\": 15,\n \"error_count\": 22,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 9,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n },\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 8,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.6774193548387096,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.5384615384615384,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.4883720930232558,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.6363636363636364\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"mean_iou\": 0.1773115335759765,\n \"accuracy\": 0.5581395348837209\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"frame_count\": 3,\n \"mean_conflict_count\": 12.333333333333334\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 91,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 118,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 88,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 102,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 68,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 98,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 107,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 121,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 122,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 70,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 76,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 93,\n \"job_id\": 27,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 74,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 95,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 73,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 96,\n \"job_id\": 27,\n \"type\": \"ellipse\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 64,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 66,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 94,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 89,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 123,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 97,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_attributes\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 82,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 103,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 81,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 104,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 83,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 105,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 87,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 106,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 80,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 111,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 77,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 114,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 2,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.84,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.6363636363636364,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5675675675675675,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.7777777777777778\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"mean_iou\": 0.5319346007279295,\n \"accuracy\": 0.6486486486486487\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"conflict_count\": 31,\n \"warning_count\": 15,\n \"error_count\": 16,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 3,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 130,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 128,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 124,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 125,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 127,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 129,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 6,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" + "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"compare_line_orientation\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share_percent\": 27.27272727272727,\n \"frames\": [\n 0,\n 1,\n 2\n ],\n \"conflict_count\": 37,\n \"warning_count\": 15,\n \"error_count\": 22,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 9,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n },\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 8,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.6774193548387096,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.5384615384615384,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.4883720930232558,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.6363636363636364\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"mean_iou\": 0.1773115335759765,\n \"accuracy\": 0.5581395348837209\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"frame_count\": 3,\n \"mean_conflict_count\": 12.333333333333334\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 91,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 118,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 88,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 102,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 68,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 98,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 107,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 121,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 122,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 70,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 76,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 93,\n \"job_id\": 27,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 74,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 95,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 73,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 96,\n \"job_id\": 27,\n \"type\": \"ellipse\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 64,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 66,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 94,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 89,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 123,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 97,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_attributes\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 82,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 103,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 81,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 104,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 83,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 105,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 87,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 106,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 80,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 111,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 77,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 114,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 2,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.84,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.6363636363636364,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5675675675675675,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.7777777777777778\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"mean_iou\": 0.5319346007279295,\n \"accuracy\": 0.6486486486486487\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"conflict_count\": 31,\n \"warning_count\": 15,\n \"error_count\": 16,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 3,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 130,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 128,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 124,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 125,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 127,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 129,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 6,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" } }, { @@ -10268,7 +10268,7 @@ "created_date": "2023-05-26T16:25:36.616Z", "target_last_updated": "2023-05-26T16:11:24.294Z", "gt_last_updated": "2023-05-26T16:16:50.630Z", - "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"oriented_lines\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share_percent\": 27.27272727272727,\n \"frames\": [\n 0,\n 1,\n 2\n ],\n \"conflict_count\": 37,\n \"warning_count\": 15,\n \"error_count\": 22,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 9,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n },\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 8,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.6774193548387096,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.5384615384615384,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.4883720930232558,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.6363636363636364\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"mean_iou\": 0.1773115335759765,\n \"accuracy\": 0.5581395348837209\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"frame_count\": 3,\n \"mean_conflict_count\": 12.333333333333334\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 91,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 118,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 88,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 102,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 68,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 98,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 107,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 121,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 122,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 70,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 76,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 93,\n \"job_id\": 27,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 74,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 95,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 73,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 96,\n \"job_id\": 27,\n \"type\": \"ellipse\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 64,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 66,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 94,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 89,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 123,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 97,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_attributes\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 82,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 103,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 81,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 104,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 83,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 105,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 87,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 106,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 80,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 111,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 77,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 114,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 2,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.84,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.6363636363636364,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5675675675675675,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.7777777777777778\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"mean_iou\": 0.5319346007279295,\n \"accuracy\": 0.6486486486486487\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"conflict_count\": 31,\n \"warning_count\": 15,\n \"error_count\": 16,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 3,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 130,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 128,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 124,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 125,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 127,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 129,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 6,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" + "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"compare_line_orientation\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share_percent\": 27.27272727272727,\n \"frames\": [\n 0,\n 1,\n 2\n ],\n \"conflict_count\": 37,\n \"warning_count\": 15,\n \"error_count\": 22,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 9,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n },\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 8,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.6774193548387096,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.5384615384615384,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.4883720930232558,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.6363636363636364\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"mean_iou\": 0.1773115335759765,\n \"accuracy\": 0.5581395348837209\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"frame_count\": 3,\n \"mean_conflict_count\": 12.333333333333334\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 91,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 118,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 88,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 102,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 68,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 98,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 107,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 121,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 122,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 70,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 76,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 93,\n \"job_id\": 27,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 74,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 95,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 73,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 96,\n \"job_id\": 27,\n \"type\": \"ellipse\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 64,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 66,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 94,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 89,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 123,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 97,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_attributes\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 82,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 103,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 81,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 104,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 83,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 105,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 87,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 106,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 80,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 111,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 77,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 114,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 2,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.84,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.6363636363636364,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5675675675675675,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.7777777777777778\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"mean_iou\": 0.5319346007279295,\n \"accuracy\": 0.6486486486486487\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"conflict_count\": 31,\n \"warning_count\": 15,\n \"error_count\": 16,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 3,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 130,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 128,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 124,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 125,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 127,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 129,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 6,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" } }, { @@ -11190,7 +11190,7 @@ "oks_sigma": 0.09, "line_thickness": 0.01, "low_overlap_threshold": 0.8, - "oriented_lines": true, + "compare_line_orientation": true, "line_orientation_threshold": 0.1, "compare_groups": true, "group_match_threshold": 0.5, @@ -11209,7 +11209,7 @@ "oks_sigma": 0.09, "line_thickness": 0.01, "low_overlap_threshold": 0.8, - "oriented_lines": true, + "compare_line_orientation": true, "line_orientation_threshold": 0.1, "compare_groups": true, "group_match_threshold": 0.5, @@ -11228,7 +11228,7 @@ "oks_sigma": 0.09, "line_thickness": 0.01, "low_overlap_threshold": 0.8, - "oriented_lines": true, + "compare_line_orientation": true, "line_orientation_threshold": 0.1, "compare_groups": true, "group_match_threshold": 0.5, @@ -11247,7 +11247,7 @@ "oks_sigma": 0.09, "line_thickness": 0.01, "low_overlap_threshold": 0.8, - "oriented_lines": true, + "compare_line_orientation": true, "line_orientation_threshold": 0.1, "compare_groups": true, "group_match_threshold": 0.5, @@ -11266,7 +11266,7 @@ "oks_sigma": 0.09, "line_thickness": 0.01, "low_overlap_threshold": 0.8, - "oriented_lines": true, + "compare_line_orientation": true, "line_orientation_threshold": 0.1, "compare_groups": true, "group_match_threshold": 0.5, @@ -11285,7 +11285,7 @@ "oks_sigma": 0.09, "line_thickness": 0.01, "low_overlap_threshold": 0.8, - "oriented_lines": true, + "compare_line_orientation": true, "line_orientation_threshold": 0.1, "compare_groups": true, "group_match_threshold": 0.5, @@ -11304,7 +11304,7 @@ "oks_sigma": 0.09, "line_thickness": 0.01, "low_overlap_threshold": 0.8, - "oriented_lines": true, + "compare_line_orientation": true, "line_orientation_threshold": 0.1, "compare_groups": true, "group_match_threshold": 0.5, @@ -11323,7 +11323,7 @@ "oks_sigma": 0.09, "line_thickness": 0.01, "low_overlap_threshold": 0.8, - "oriented_lines": true, + "compare_line_orientation": true, "line_orientation_threshold": 0.1, "compare_groups": true, "group_match_threshold": 0.5, @@ -11342,7 +11342,7 @@ "oks_sigma": 0.09, "line_thickness": 0.01, "low_overlap_threshold": 0.8, - "oriented_lines": true, + "compare_line_orientation": true, "line_orientation_threshold": 0.1, "compare_groups": true, "group_match_threshold": 0.5, @@ -11361,7 +11361,7 @@ "oks_sigma": 0.09, "line_thickness": 0.01, "low_overlap_threshold": 0.8, - "oriented_lines": true, + "compare_line_orientation": true, "line_orientation_threshold": 0.1, "compare_groups": true, "group_match_threshold": 0.5, @@ -11380,7 +11380,7 @@ "oks_sigma": 0.09, "line_thickness": 0.01, "low_overlap_threshold": 0.8, - "oriented_lines": true, + "compare_line_orientation": true, "line_orientation_threshold": 0.1, "compare_groups": true, "group_match_threshold": 0.5, @@ -11399,7 +11399,7 @@ "oks_sigma": 0.09, "line_thickness": 0.01, "low_overlap_threshold": 0.8, - "oriented_lines": true, + "compare_line_orientation": true, "line_orientation_threshold": 0.1, "compare_groups": true, "group_match_threshold": 0.5, @@ -11418,7 +11418,7 @@ "oks_sigma": 0.09, "line_thickness": 0.01, "low_overlap_threshold": 0.8, - "oriented_lines": true, + "compare_line_orientation": true, "line_orientation_threshold": 0.1, "compare_groups": true, "group_match_threshold": 0.5, @@ -11437,7 +11437,7 @@ "oks_sigma": 0.09, "line_thickness": 0.01, "low_overlap_threshold": 0.8, - "oriented_lines": true, + "compare_line_orientation": true, "line_orientation_threshold": 0.1, "compare_groups": true, "group_match_threshold": 0.5, @@ -11456,7 +11456,7 @@ "oks_sigma": 0.09, "line_thickness": 0.01, "low_overlap_threshold": 0.8, - "oriented_lines": true, + "compare_line_orientation": true, "line_orientation_threshold": 0.1, "compare_groups": true, "group_match_threshold": 0.5, @@ -11475,7 +11475,7 @@ "oks_sigma": 0.09, "line_thickness": 0.01, "low_overlap_threshold": 0.8, - "oriented_lines": true, + "compare_line_orientation": true, "line_orientation_threshold": 0.1, "compare_groups": true, "group_match_threshold": 0.5, @@ -11494,7 +11494,7 @@ "oks_sigma": 0.09, "line_thickness": 0.01, "low_overlap_threshold": 0.8, - "oriented_lines": true, + "compare_line_orientation": true, "line_orientation_threshold": 0.1, "compare_groups": true, "group_match_threshold": 0.5, diff --git a/tests/python/shared/assets/quality_settings.json b/tests/python/shared/assets/quality_settings.json index b543186d9f84..f429587a1a80 100644 --- a/tests/python/shared/assets/quality_settings.json +++ b/tests/python/shared/assets/quality_settings.json @@ -15,7 +15,7 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "oriented_lines": true, + "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 2 }, @@ -31,7 +31,7 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "oriented_lines": true, + "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 5 }, @@ -47,7 +47,7 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "oriented_lines": true, + "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 6 }, @@ -63,7 +63,7 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "oriented_lines": true, + "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 7 }, @@ -79,7 +79,7 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "oriented_lines": true, + "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 8 }, @@ -95,7 +95,7 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "oriented_lines": true, + "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 9 }, @@ -111,7 +111,7 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "oriented_lines": true, + "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 11 }, @@ -127,7 +127,7 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "oriented_lines": true, + "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 12 }, @@ -143,7 +143,7 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "oriented_lines": true, + "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 13 }, @@ -159,7 +159,7 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "oriented_lines": true, + "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 14 }, @@ -175,7 +175,7 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "oriented_lines": true, + "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 15 }, @@ -191,7 +191,7 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "oriented_lines": true, + "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 17 }, @@ -207,7 +207,7 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "oriented_lines": true, + "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 18 }, @@ -223,7 +223,7 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "oriented_lines": true, + "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 19 }, @@ -239,7 +239,7 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "oriented_lines": true, + "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 20 }, @@ -255,7 +255,7 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "oriented_lines": true, + "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 21 }, @@ -271,7 +271,7 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "oriented_lines": true, + "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 22 } From 6bd00c648a2c6fccbf42464dfd69cb57974ccffa Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 7 Jun 2023 18:13:44 +0300 Subject: [PATCH 239/257] Update frame share percent --- cvat/apps/quality_control/quality_reports.py | 20 ++++++++++++------- cvat/apps/quality_control/serializers.py | 2 +- cvat/schema.yml | 4 ++-- tests/python/rest_api/test_quality_control.py | 2 +- tests/python/shared/assets/cvat_db/data.json | 4 ++-- .../python/shared/assets/quality_reports.json | 4 ++-- 6 files changed, 21 insertions(+), 15 deletions(-) diff --git a/cvat/apps/quality_control/quality_reports.py b/cvat/apps/quality_control/quality_reports.py index 7dca10a9de19..9c6d4e36141f 100644 --- a/cvat/apps/quality_control/quality_reports.py +++ b/cvat/apps/quality_control/quality_reports.py @@ -378,7 +378,7 @@ def from_dict(cls, d: dict): @define(kw_only=True) class ComparisonReportComparisonSummary(_Serializable): - frame_share_percent: float + frame_share: float frames: List[str] @property @@ -418,7 +418,7 @@ def _fields_dict(self, *, include_properties: Optional[List[str]] = None) -> dic @classmethod def from_dict(cls, d: dict): return cls( - frame_share_percent=d["frame_share_percent"], + frame_share=d["frame_share"], frames=list(d["frames"]), conflict_count=d["conflict_count"], warning_count=d.get("warning_count", 0), @@ -2016,8 +2016,7 @@ def generate_report(self) -> ComparisonReport: return ComparisonReport( parameters=self.settings, comparison_summary=ComparisonReportComparisonSummary( - frame_share_percent=100 - * ( + frame_share=( len(intersection_frames) / (len(self._ds_data_provider.job_data.rel_range) or 1) ), frames=intersection_frames, @@ -2385,7 +2384,7 @@ def _compute_task_report( task_report_data = ComparisonReport( parameters=next(iter(job_reports.values())).parameters, comparison_summary=ComparisonReportComparisonSummary( - frame_share_percent=len(task_intersection_frames) / (task.data.size or 1) * 100, + frame_share=len(task_intersection_frames) / (task.data.size or 1), frames=sorted(task_intersection_frames), conflict_count=len(task_conflicts), warning_count=len( @@ -2469,9 +2468,12 @@ def _get_task_quality_params(self, task: Task) -> Optional[ComparisonParameters] def prepare_report_for_downloading(db_report: models.QualityReport, *, host: str) -> str: - # Decorate the report with conflicting annotation links like: + # Decorate the report for better usability and readability: + # - add conflicting annotation links like: # /tasks/62/jobs/82?frame=250&type=shape&serverID=33741 - # And other useful information + # - covert some fractions to percents + # - add common report info + task_id = db_report.get_task().id serialized_data = dict( job_id=db_report.job.id if db_report.job is not None else None, @@ -2500,6 +2502,10 @@ def prepare_report_for_downloading(db_report: models.QualityReport, *, host: str f"&serverID={ann_id['obj_id']}" ) + serialized_data["comparison_summary"]["frame_share_percent"] = ( + serialized_data["comparison_summary"].pop("frame_share") * 100 + ) + # String keys are needed for json dumping serialized_data["frame_results"] = { str(k): v for k, v in serialized_data["frame_results"].items() diff --git a/cvat/apps/quality_control/serializers.py b/cvat/apps/quality_control/serializers.py index 31d365984315..65cf4ed4833f 100644 --- a/cvat/apps/quality_control/serializers.py +++ b/cvat/apps/quality_control/serializers.py @@ -27,7 +27,7 @@ class Meta: class QualityReportSummarySerializer(serializers.Serializer): frame_count = serializers.IntegerField() - frame_share_percent = serializers.FloatField() + frame_share = serializers.FloatField() conflict_count = serializers.IntegerField() warning_count = serializers.IntegerField() error_count = serializers.IntegerField() diff --git a/cvat/schema.yml b/cvat/schema.yml index 279c1e3ec969..d614828a31f1 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -8192,7 +8192,7 @@ components: properties: frame_count: type: integer - frame_share_percent: + frame_share: type: number format: double conflict_count: @@ -8217,7 +8217,7 @@ components: - ds_count - error_count - frame_count - - frame_share_percent + - frame_share - gt_count - valid_count - warning_count diff --git a/tests/python/rest_api/test_quality_control.py b/tests/python/rest_api/test_quality_control.py index 7e427d1b5828..320f7f9ea574 100644 --- a/tests/python/rest_api/test_quality_control.py +++ b/tests/python/rest_api/test_quality_control.py @@ -1085,7 +1085,7 @@ def test_report_summary(self, task_id, tasks, jobs, quality_reports): assert summary["valid_count"] < summary["ds_count"] assert summary["valid_count"] < summary["gt_count"] assert summary["frame_count"] == gt_job["frame_count"] - assert summary["frame_share_percent"] == summary["frame_count"] / task["size"] * 100 + assert summary["frame_share"] == summary["frame_count"] / task["size"] def test_unmodified_task_produces_the_same_metrics(self, admin_user, quality_reports): old_report = next(r for r in quality_reports if r["task_id"]) diff --git a/tests/python/shared/assets/cvat_db/data.json b/tests/python/shared/assets/cvat_db/data.json index 8204d1ac143f..5dd665b4ed0b 100644 --- a/tests/python/shared/assets/cvat_db/data.json +++ b/tests/python/shared/assets/cvat_db/data.json @@ -10255,7 +10255,7 @@ "created_date": "2023-05-26T16:25:36.613Z", "target_last_updated": "2023-05-26T16:17:02.635Z", "gt_last_updated": "2023-05-26T16:16:50.630Z", - "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"compare_line_orientation\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share_percent\": 27.27272727272727,\n \"frames\": [\n 0,\n 1,\n 2\n ],\n \"conflict_count\": 37,\n \"warning_count\": 15,\n \"error_count\": 22,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 9,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n },\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 8,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.6774193548387096,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.5384615384615384,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.4883720930232558,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.6363636363636364\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"mean_iou\": 0.1773115335759765,\n \"accuracy\": 0.5581395348837209\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"frame_count\": 3,\n \"mean_conflict_count\": 12.333333333333334\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 91,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 118,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 88,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 102,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 68,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 98,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 107,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 121,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 122,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 70,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 76,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 93,\n \"job_id\": 27,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 74,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 95,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 73,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 96,\n \"job_id\": 27,\n \"type\": \"ellipse\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 64,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 66,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 94,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 89,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 123,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 97,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_attributes\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 82,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 103,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 81,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 104,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 83,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 105,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 87,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 106,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 80,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 111,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 77,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 114,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 2,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.84,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.6363636363636364,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5675675675675675,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.7777777777777778\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"mean_iou\": 0.5319346007279295,\n \"accuracy\": 0.6486486486486487\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"conflict_count\": 31,\n \"warning_count\": 15,\n \"error_count\": 16,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 3,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 130,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 128,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 124,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 125,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 127,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 129,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 6,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" + "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"compare_line_orientation\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share\": 0.2727272727272727,\n \"frames\": [\n 0,\n 1,\n 2\n ],\n \"conflict_count\": 37,\n \"warning_count\": 15,\n \"error_count\": 22,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 9,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n },\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 8,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.6774193548387096,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.5384615384615384,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.4883720930232558,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.6363636363636364\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"mean_iou\": 0.1773115335759765,\n \"accuracy\": 0.5581395348837209\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"frame_count\": 3,\n \"mean_conflict_count\": 12.333333333333334\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 91,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 118,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 88,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 102,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 68,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 98,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 107,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 121,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 122,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 70,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 76,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 93,\n \"job_id\": 27,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 74,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 95,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 73,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 96,\n \"job_id\": 27,\n \"type\": \"ellipse\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 64,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 66,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 94,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 89,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 123,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 97,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_attributes\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 82,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 103,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 81,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 104,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 83,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 105,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 87,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 106,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 80,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 111,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 77,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 114,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 2,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.84,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.6363636363636364,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5675675675675675,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.7777777777777778\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"mean_iou\": 0.5319346007279295,\n \"accuracy\": 0.6486486486486487\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"conflict_count\": 31,\n \"warning_count\": 15,\n \"error_count\": 16,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 3,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 130,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 128,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 124,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 125,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 127,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 129,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 6,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" } }, { @@ -10268,7 +10268,7 @@ "created_date": "2023-05-26T16:25:36.616Z", "target_last_updated": "2023-05-26T16:11:24.294Z", "gt_last_updated": "2023-05-26T16:16:50.630Z", - "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"compare_line_orientation\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share_percent\": 27.27272727272727,\n \"frames\": [\n 0,\n 1,\n 2\n ],\n \"conflict_count\": 37,\n \"warning_count\": 15,\n \"error_count\": 22,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 9,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n },\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 8,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.6774193548387096,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.5384615384615384,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.4883720930232558,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.6363636363636364\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"mean_iou\": 0.1773115335759765,\n \"accuracy\": 0.5581395348837209\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"frame_count\": 3,\n \"mean_conflict_count\": 12.333333333333334\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 91,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 118,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 88,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 102,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 68,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 98,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 107,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 121,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 122,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 70,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 76,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 93,\n \"job_id\": 27,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 74,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 95,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 73,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 96,\n \"job_id\": 27,\n \"type\": \"ellipse\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 64,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 66,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 94,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 89,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 123,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 97,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_attributes\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 82,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 103,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 81,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 104,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 83,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 105,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 87,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 106,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 80,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 111,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 77,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 114,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 2,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.84,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.6363636363636364,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5675675675675675,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.7777777777777778\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"mean_iou\": 0.5319346007279295,\n \"accuracy\": 0.6486486486486487\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"conflict_count\": 31,\n \"warning_count\": 15,\n \"error_count\": 16,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 3,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 130,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 128,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 124,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 125,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 127,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 129,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 6,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" + "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"compare_line_orientation\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share\": 0.2727272727272727,\n \"frames\": [\n 0,\n 1,\n 2\n ],\n \"conflict_count\": 37,\n \"warning_count\": 15,\n \"error_count\": 22,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 9,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n },\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 8,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.6774193548387096,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.5384615384615384,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.4883720930232558,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.6363636363636364\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"mean_iou\": 0.1773115335759765,\n \"accuracy\": 0.5581395348837209\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"frame_count\": 3,\n \"mean_conflict_count\": 12.333333333333334\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 91,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 118,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 88,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 102,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 68,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 98,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 107,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 121,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 122,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 70,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 76,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 93,\n \"job_id\": 27,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 74,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 95,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 73,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 96,\n \"job_id\": 27,\n \"type\": \"ellipse\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 64,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 66,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 94,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 89,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 123,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 97,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_attributes\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 82,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 103,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 81,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 104,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 83,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 105,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 87,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 106,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 80,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 111,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 77,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 114,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 2,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.84,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.6363636363636364,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5675675675675675,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.7777777777777778\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"mean_iou\": 0.5319346007279295,\n \"accuracy\": 0.6486486486486487\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"conflict_count\": 31,\n \"warning_count\": 15,\n \"error_count\": 16,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 3,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 130,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 128,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 124,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 125,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 127,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 129,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 6,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" } }, { diff --git a/tests/python/shared/assets/quality_reports.json b/tests/python/shared/assets/quality_reports.json index 09095664d9a7..971faf9f5da9 100644 --- a/tests/python/shared/assets/quality_reports.json +++ b/tests/python/shared/assets/quality_reports.json @@ -27,7 +27,7 @@ "ds_count": 34, "error_count": 22, "frame_count": 3, - "frame_share_percent": 27.27272727272727, + "frame_share": 0.2727272727272727, "gt_count": 33, "valid_count": 21, "warning_count": 15 @@ -60,7 +60,7 @@ "ds_count": 34, "error_count": 22, "frame_count": 3, - "frame_share_percent": 27.27272727272727, + "frame_share": 0.2727272727272727, "gt_count": 33, "valid_count": 21, "warning_count": 15 From 71f7bfd884e089909e8b160497f49b30f9b7c5ed Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Wed, 7 Jun 2023 21:08:30 +0300 Subject: [PATCH 240/257] Fix schema --- cvat/apps/quality_control/views.py | 12 +++++++++++- cvat/schema.yml | 12 +++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/cvat/apps/quality_control/views.py b/cvat/apps/quality_control/views.py index 56e2dcac4fce..30cee54747e1 100644 --- a/cvat/apps/quality_control/views.py +++ b/cvat/apps/quality_control/views.py @@ -238,7 +238,7 @@ def get_queryset(self): responses={ "201": QualityReportSerializer, "202": OpenApiResponse( - OpenApiTypes.STR, + RqIdSerializer, description=textwrap.dedent( """\ A quality report request has been enqueued, the request id is returned. @@ -340,12 +340,22 @@ def data(self, request, pk): ), retrieve=extend_schema( summary="Method returns details of the quality settings instance", + parameters=[ + OpenApiParameter( + "id", type=OpenApiTypes.INT, description="An id of a quality settings instance" + ) + ], responses={ "200": QualitySettingsSerializer, }, ), partial_update=extend_schema( summary="Methods does a partial update of chosen fields in the quality settings instance", + parameters=[ + OpenApiParameter( + "id", type=OpenApiTypes.INT, description="An id of a quality settings instance" + ) + ], request=QualitySettingsSerializer(partial=True), responses={ "200": QualitySettingsSerializer, diff --git a/cvat/schema.yml b/cvat/schema.yml index d614828a31f1..163762bdf0dc 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -3647,7 +3647,7 @@ paths: content: application/vnd.cvat+json: schema: - type: string + $ref: '#/components/schemas/RqId' description: | A quality report request has been enqueued, the request id is returned. The request status can be checked at this endpoint by passing the rq_id @@ -3784,6 +3784,11 @@ paths: type: integer description: A unique integer value identifying this quality settings. required: true + - in: query + name: id + schema: + type: integer + description: An id of a quality settings instance tags: - quality security: @@ -3810,6 +3815,11 @@ paths: type: integer description: A unique integer value identifying this quality settings. required: true + - in: query + name: id + schema: + type: integer + description: An id of a quality settings instance tags: - quality requestBody: From 7147ed127b87d2a0a27d3aefa4094c81beec9f5a Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 8 Jun 2023 12:15:16 +0300 Subject: [PATCH 241/257] Don't remove frame_share from report data --- cvat/apps/quality_control/quality_reports.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cvat/apps/quality_control/quality_reports.py b/cvat/apps/quality_control/quality_reports.py index 9c6d4e36141f..404d6afeff42 100644 --- a/cvat/apps/quality_control/quality_reports.py +++ b/cvat/apps/quality_control/quality_reports.py @@ -2502,8 +2502,9 @@ def prepare_report_for_downloading(db_report: models.QualityReport, *, host: str f"&serverID={ann_id['obj_id']}" ) + # Add the percent representation for better human readability serialized_data["comparison_summary"]["frame_share_percent"] = ( - serialized_data["comparison_summary"].pop("frame_share") * 100 + serialized_data["comparison_summary"]["frame_share"] * 100 ) # String keys are needed for json dumping From 17fad17147dd48b163d68d12a9ad08bac38b5f66 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 8 Jun 2023 14:52:31 +0300 Subject: [PATCH 242/257] Remove parameters from reports list --- cvat/apps/quality_control/models.py | 5 ----- cvat/apps/quality_control/serializers.py | 6 ------ cvat/schema.yml | 11 ----------- tests/python/shared/assets/quality_reports.json | 6 ------ 4 files changed, 28 deletions(-) diff --git a/cvat/apps/quality_control/models.py b/cvat/apps/quality_control/models.py index 4dec9161d768..b1e5ae566d15 100644 --- a/cvat/apps/quality_control/models.py +++ b/cvat/apps/quality_control/models.py @@ -104,11 +104,6 @@ def _parse_report(self): return ComparisonReport.from_json(self.data) - @property - def parameters(self): - report = self._parse_report() - return report.parameters - @property def summary(self): report = self._parse_report() diff --git a/cvat/apps/quality_control/serializers.py b/cvat/apps/quality_control/serializers.py index 65cf4ed4833f..493bee11811d 100644 --- a/cvat/apps/quality_control/serializers.py +++ b/cvat/apps/quality_control/serializers.py @@ -40,14 +40,9 @@ class QualityReportSummarySerializer(serializers.Serializer): gt_count = serializers.IntegerField(source="annotations.gt_count") -class QualityReportParametersSerializer(serializers.Serializer): - iou_threshold = serializers.FloatField() - - class QualityReportSerializer(serializers.ModelSerializer): target = serializers.ChoiceField(models.QualityReportTarget.choices()) summary = QualityReportSummarySerializer() - parameters = QualityReportParametersSerializer() class Meta: model = models.QualityReport @@ -58,7 +53,6 @@ class Meta: "parent_id", "target", "summary", - "parameters", "created_date", "target_last_updated", "gt_last_updated", diff --git a/cvat/schema.yml b/cvat/schema.yml index 163762bdf0dc..862d923e9c1c 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -8163,8 +8163,6 @@ components: $ref: '#/components/schemas/QualityReportTarget' summary: $ref: '#/components/schemas/QualityReportSummary' - parameters: - $ref: '#/components/schemas/QualityReportParameters' created_date: type: string format: date-time @@ -8178,7 +8176,6 @@ components: format: date-time readOnly: true required: - - parameters - summary - target QualityReportCreateRequest: @@ -8189,14 +8186,6 @@ components: writeOnly: true required: - task_id - QualityReportParameters: - type: object - properties: - iou_threshold: - type: number - format: double - required: - - iou_threshold QualityReportSummary: type: object properties: diff --git a/tests/python/shared/assets/quality_reports.json b/tests/python/shared/assets/quality_reports.json index 971faf9f5da9..71fc86bff51a 100644 --- a/tests/python/shared/assets/quality_reports.json +++ b/tests/python/shared/assets/quality_reports.json @@ -8,9 +8,6 @@ "gt_last_updated": "2023-05-26T16:16:50.630000Z", "id": 1, "job_id": null, - "parameters": { - "iou_threshold": 0.4 - }, "parent_id": null, "summary": { "conflict_count": 37, @@ -41,9 +38,6 @@ "gt_last_updated": "2023-05-26T16:16:50.630000Z", "id": 2, "job_id": 27, - "parameters": { - "iou_threshold": 0.4 - }, "parent_id": 1, "summary": { "conflict_count": 37, From 27dcfd655459e4dc83ffd830b62ef8492e935658 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 8 Jun 2023 15:46:30 +0300 Subject: [PATCH 243/257] Use condensed db repr for report data, disjoint ann_id.type, --- .../migrations/0001_initial.py | 13 +- cvat/apps/quality_control/models.py | 24 +- cvat/apps/quality_control/quality_reports.py | 27 +- cvat/apps/quality_control/serializers.py | 2 +- cvat/schema.yml | 27 +- tests/python/shared/assets/cvat_db/data.json | 166 +++++++----- .../shared/assets/quality_conflicts.json | 236 +++++++++++------- .../shared/assets/quality_settings.json | 34 +-- 8 files changed, 325 insertions(+), 204 deletions(-) diff --git a/cvat/apps/quality_control/migrations/0001_initial.py b/cvat/apps/quality_control/migrations/0001_initial.py index 6af7244eadc8..1810850669ab 100644 --- a/cvat/apps/quality_control/migrations/0001_initial.py +++ b/cvat/apps/quality_control/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 3.2.18 on 2023-05-26 10:05 +# Generated by Django 4.2.1 on 2023-06-08 12:31 import django.db.models.deletion from django.db import migrations, models @@ -135,10 +135,15 @@ class Migration(migrations.Migration): ("job_id", models.PositiveIntegerField()), ( "type", + models.CharField( + choices=[("tag", "TAG"), ("shape", "SHAPE"), ("track", "TRACK")], + max_length=32, + ), + ), + ( + "shape_type", models.CharField( choices=[ - ("tag", "TAG"), - ("track", "TRACK"), ("rectangle", "RECTANGLE"), ("polygon", "POLYGON"), ("polyline", "POLYLINE"), @@ -148,7 +153,9 @@ class Migration(migrations.Migration): ("mask", "MASK"), ("skeleton", "SKELETON"), ], + default=None, max_length=32, + null=True, ), ), ( diff --git a/cvat/apps/quality_control/models.py b/cvat/apps/quality_control/models.py index b1e5ae566d15..e4e39f5fb922 100644 --- a/cvat/apps/quality_control/models.py +++ b/cvat/apps/quality_control/models.py @@ -12,7 +12,7 @@ from django.db import models from django.forms.models import model_to_dict -from cvat.apps.engine.models import Job, Task +from cvat.apps.engine.models import Job, ShapeType, Task class AnnotationConflictType(str, Enum): @@ -144,15 +144,8 @@ def organization_id(self): class AnnotationType(str, Enum): TAG = "tag" + SHAPE = "shape" TRACK = "track" - RECTANGLE = "rectangle" - POLYGON = "polygon" - POLYLINE = "polyline" - POINTS = "points" - ELLIPSE = "ellipse" - CUBOID = "cuboid" - MASK = "mask" - SKELETON = "skeleton" def __str__(self) -> str: return self.value @@ -170,6 +163,19 @@ class AnnotationId(models.Model): obj_id = models.PositiveIntegerField() job_id = models.PositiveIntegerField() type = models.CharField(max_length=32, choices=AnnotationType.choices()) + shape_type = models.CharField( + max_length=32, choices=ShapeType.choices(), null=True, default=None + ) + + def clean(self) -> None: + if self.type in [AnnotationType.SHAPE, AnnotationType.TRACK]: + if not self.shape_type: + raise ValidationError("Annotation kind must be specified") + elif self.type == AnnotationType.TAG: + if self.shape_type: + raise ValidationError("Annotation kind must be empty") + else: + raise ValidationError(f"Unexpected type value '{self.type}'") class QualitySettings(models.Model): diff --git a/cvat/apps/quality_control/quality_reports.py b/cvat/apps/quality_control/quality_reports.py index 404d6afeff42..78a6b09dec16 100644 --- a/cvat/apps/quality_control/quality_reports.py +++ b/cvat/apps/quality_control/quality_reports.py @@ -84,9 +84,10 @@ class AnnotationId(_Serializable): obj_id: int job_id: int type: AnnotationType + shape_type: Optional[ShapeType] def _value_serializer(self, v): - if isinstance(v, AnnotationType): + if isinstance(v, (AnnotationType, ShapeType)): return str(v) else: return super()._value_serializer(v) @@ -97,6 +98,7 @@ def from_dict(cls, d: dict): obj_id=d["obj_id"], job_id=d["job_id"], type=AnnotationType(d["type"]), + shape_type=ShapeType(d["shape_type"]) if d.get("shape_type") else None, ) @@ -523,7 +525,7 @@ def to_json(self) -> str: # String keys are needed for json dumping d["frame_results"] = {str(k): v for k, v in d["frame_results"].items()} - return dump_json(d, indent=True, append_newline=True).decode() + return dump_json(d).decode() @classmethod def from_json(cls, data: str) -> ComparisonReport: @@ -561,16 +563,23 @@ def dm_ann_to_ann_id(self, ann: dm.Annotation) -> AnnotationId: source_ann = self._annotation_memo.get_source_ann(ann) if "track_id" in ann.attributes: source_ann_id = source_ann.track_id - ann_type = "track" + ann_type = AnnotationType.TRACK + shape_type = source_ann.type else: if isinstance(source_ann, CommonData.LabeledShape): - ann_type = AnnotationType(source_ann.type) + ann_type = AnnotationType.SHAPE + shape_type = source_ann.type elif isinstance(source_ann, CommonData.Tag): ann_type = AnnotationType.TAG + shape_type = None + else: + assert False source_ann_id = source_ann.id - return AnnotationId(obj_id=source_ann_id, type=ann_type, job_id=self.job_id) + return AnnotationId( + obj_id=source_ann_id, type=ann_type, shape_type=shape_type, job_id=self.job_id + ) class _MemoizingAnnotationConverterFactory: @@ -2455,6 +2464,7 @@ def _save_reports(self, *, task_report: Dict, job_reports: List[Dict]) -> models job_id=ann_id["job_id"], obj_id=ann_id["obj_id"], type=ann_id["type"], + shape_type=ann_id["shape_type"], ) db_ann_ids.append(db_ann_id) @@ -2490,15 +2500,10 @@ def prepare_report_for_downloading(db_report: models.QualityReport, *, host: str for frame_result in serialized_data["frame_results"].values(): for conflict in frame_result["conflicts"]: for ann_id in conflict["annotation_ids"]: - if ann_id["type"] in ShapeType.__members__.values(): - ann_type = "shape" - else: - ann_type = ann_id["type"] - ann_id["url"] = ( f"{host}tasks/{task_id}/jobs/{ann_id['job_id']}" f"?frame={conflict['frame_id']}" - f"&type={ann_type}" + f"&type={ann_id['type']}" f"&serverID={ann_id['obj_id']}" ) diff --git a/cvat/apps/quality_control/serializers.py b/cvat/apps/quality_control/serializers.py index 493bee11811d..711799dcef61 100644 --- a/cvat/apps/quality_control/serializers.py +++ b/cvat/apps/quality_control/serializers.py @@ -12,7 +12,7 @@ class AnnotationIdSerializer(serializers.ModelSerializer): class Meta: model = models.AnnotationId - fields = ("obj_id", "job_id", "type") + fields = ("obj_id", "job_id", "type", "shape_type") read_only_fields = fields diff --git a/cvat/schema.yml b/cvat/schema.yml index 862d923e9c1c..05b68841c47d 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -5658,30 +5658,22 @@ components: allOf: - $ref: '#/components/schemas/AnnotationIdTypeEnum' readOnly: true + shape_type: + readOnly: true + nullable: true + oneOf: + - $ref: '#/components/schemas/ShapeType' + - $ref: '#/components/schemas/NullEnum' AnnotationIdTypeEnum: enum: - tag + - shape - track - - rectangle - - polygon - - polyline - - points - - ellipse - - cuboid - - mask - - skeleton type: string description: |- * `tag` - TAG + * `shape` - SHAPE * `track` - TRACK - * `rectangle` - RECTANGLE - * `polygon` - POLYGON - * `polyline` - POLYLINE - * `points` - POINTS - * `ellipse` - ELLIPSE - * `cuboid` - CUBOID - * `mask` - MASK - * `skeleton` - SKELETON AnnotationsRead: oneOf: - $ref: '#/components/schemas/LabeledData' @@ -7184,6 +7176,9 @@ components: anyOf: - $ref: '#/components/schemas/User' - $ref: '#/components/schemas/BasicUser' + NullEnum: + enum: + - null OnlineFunctionCallRequest: type: object properties: diff --git a/tests/python/shared/assets/cvat_db/data.json b/tests/python/shared/assets/cvat_db/data.json index 5dd665b4ed0b..2613dacdc831 100644 --- a/tests/python/shared/assets/cvat_db/data.json +++ b/tests/python/shared/assets/cvat_db/data.json @@ -10255,7 +10255,7 @@ "created_date": "2023-05-26T16:25:36.613Z", "target_last_updated": "2023-05-26T16:17:02.635Z", "gt_last_updated": "2023-05-26T16:16:50.630Z", - "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"compare_line_orientation\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share\": 0.2727272727272727,\n \"frames\": [\n 0,\n 1,\n 2\n ],\n \"conflict_count\": 37,\n \"warning_count\": 15,\n \"error_count\": 22,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 9,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n },\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 8,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.6774193548387096,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.5384615384615384,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.4883720930232558,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.6363636363636364\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"mean_iou\": 0.1773115335759765,\n \"accuracy\": 0.5581395348837209\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"frame_count\": 3,\n \"mean_conflict_count\": 12.333333333333334\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 91,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 118,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 88,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 102,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 68,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 98,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 107,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 121,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 122,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 70,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 76,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 93,\n \"job_id\": 27,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 74,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 95,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 73,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 96,\n \"job_id\": 27,\n \"type\": \"ellipse\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 64,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 66,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 94,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 89,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 123,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 97,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_attributes\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 82,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 103,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 81,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 104,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 83,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 105,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 87,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 106,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 80,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 111,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 77,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 114,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 2,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.84,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.6363636363636364,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5675675675675675,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.7777777777777778\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"mean_iou\": 0.5319346007279295,\n \"accuracy\": 0.6486486486486487\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"conflict_count\": 31,\n \"warning_count\": 15,\n \"error_count\": 16,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 3,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 130,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 128,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 124,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 125,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 127,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 129,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 6,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" + "data": "{\"parameters\":{\"included_annotation_types\":[\"bbox\",\"points\",\"mask\",\"polygon\",\"polyline\",\"skeleton\"],\"compare_attributes\":true,\"ignored_attributes\":[],\"iou_threshold\":0.4,\"low_overlap_threshold\":0.8,\"oks_sigma\":0.09,\"line_thickness\":0.01,\"compare_line_orientation\":true,\"line_orientation_threshold\":0.1,\"compare_groups\":true,\"group_match_threshold\":0.5,\"check_covered_annotations\":true,\"object_visibility_threshold\":0.05,\"panoptic_comparison\":true},\"comparison_summary\":{\"frame_share\":0.2727272727272727,\"frames\":[0,1,2],\"conflict_count\":37,\"warning_count\":15,\"error_count\":22,\"conflicts_by_type\":{\"low_overlap\":6,\"missing_annotation\":9,\"extra_annotation\":10,\"mismatching_label\":3,\"mismatching_direction\":1,\"covered_annotation\":1,\"mismatching_attributes\":1,\"mismatching_groups\":6},\"annotations\":{\"valid_count\":21,\"missing_count\":9,\"extra_count\":10,\"total_count\":43,\"ds_count\":34,\"gt_count\":33,\"confusion_matrix\":{\"labels\":[\"dog\",\"cat\",\"unmatched\"],\"rows\":[[0,2,3],[1,21,7],[1,8,0]],\"precision\":[0.0,0.7241379310344828,0.0],\"recall\":[0.0,0.6774193548387096,0.0],\"accuracy\":[0.0,0.5384615384615384,0.0],\"axes\":{\"cols\":\"gt\",\"rows\":\"ds\"}},\"accuracy\":0.4883720930232558,\"precision\":0.6176470588235294,\"recall\":0.6363636363636364},\"annotation_components\":{\"shape\":{\"valid_count\":24,\"missing_count\":9,\"extra_count\":10,\"total_count\":43,\"ds_count\":34,\"gt_count\":33,\"mean_iou\":0.1773115335759765,\"accuracy\":0.5581395348837209},\"label\":{\"valid_count\":21,\"invalid_count\":3,\"total_count\":24,\"accuracy\":0.875}},\"frame_count\":3,\"mean_conflict_count\":12.333333333333334},\"frame_results\":{\"0\":{\"conflicts\":[{\"frame_id\":0,\"type\":\"low_overlap\",\"annotation_ids\":[{\"obj_id\":65,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"rectangle\"},{\"obj_id\":101,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"low_overlap\",\"annotation_ids\":[{\"obj_id\":91,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"rectangle\"},{\"obj_id\":118,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"low_overlap\",\"annotation_ids\":[{\"obj_id\":88,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"points\"},{\"obj_id\":102,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"points\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"low_overlap\",\"annotation_ids\":[{\"obj_id\":68,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"polygon\"},{\"obj_id\":98,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"polygon\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"low_overlap\",\"annotation_ids\":[{\"obj_id\":67,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"polyline\"},{\"obj_id\":99,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"polyline\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"low_overlap\",\"annotation_ids\":[{\"obj_id\":92,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"points\"},{\"obj_id\":119,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"points\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"missing_annotation\",\"annotation_ids\":[{\"obj_id\":107,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"missing_annotation\",\"annotation_ids\":[{\"obj_id\":121,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"points\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"missing_annotation\",\"annotation_ids\":[{\"obj_id\":122,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"points\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"extra_annotation\",\"annotation_ids\":[{\"obj_id\":70,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"extra_annotation\",\"annotation_ids\":[{\"obj_id\":76,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"extra_annotation\",\"annotation_ids\":[{\"obj_id\":93,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"points\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"extra_annotation\",\"annotation_ids\":[{\"obj_id\":74,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"polygon\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"extra_annotation\",\"annotation_ids\":[{\"obj_id\":95,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"polygon\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"extra_annotation\",\"annotation_ids\":[{\"obj_id\":73,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"polygon\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"extra_annotation\",\"annotation_ids\":[{\"obj_id\":96,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"ellipse\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"extra_annotation\",\"annotation_ids\":[{\"obj_id\":64,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"polyline\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"extra_annotation\",\"annotation_ids\":[{\"obj_id\":66,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"polyline\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"extra_annotation\",\"annotation_ids\":[{\"obj_id\":94,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"polyline\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"mismatching_label\",\"annotation_ids\":[{\"obj_id\":89,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"points\"},{\"obj_id\":123,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"points\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"mismatching_label\",\"annotation_ids\":[{\"obj_id\":92,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"points\"},{\"obj_id\":119,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"points\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"mismatching_label\",\"annotation_ids\":[{\"obj_id\":69,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"mask\"},{\"obj_id\":97,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"polygon\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"mismatching_direction\",\"annotation_ids\":[{\"obj_id\":67,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"polyline\"},{\"obj_id\":99,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"polyline\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"covered_annotation\",\"annotation_ids\":[{\"obj_id\":69,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"mask\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"mismatching_attributes\",\"annotation_ids\":[{\"obj_id\":65,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"rectangle\"},{\"obj_id\":101,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"mismatching_groups\",\"annotation_ids\":[{\"obj_id\":82,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"rectangle\"},{\"obj_id\":103,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"mismatching_groups\",\"annotation_ids\":[{\"obj_id\":81,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"rectangle\"},{\"obj_id\":104,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"mismatching_groups\",\"annotation_ids\":[{\"obj_id\":83,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"rectangle\"},{\"obj_id\":105,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"mismatching_groups\",\"annotation_ids\":[{\"obj_id\":87,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"rectangle\"},{\"obj_id\":106,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"mismatching_groups\",\"annotation_ids\":[{\"obj_id\":80,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"rectangle\"},{\"obj_id\":111,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"mismatching_groups\",\"annotation_ids\":[{\"obj_id\":77,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"rectangle\"},{\"obj_id\":114,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"warning\"}],\"annotations\":{\"valid_count\":21,\"missing_count\":3,\"extra_count\":10,\"total_count\":37,\"ds_count\":34,\"gt_count\":27,\"confusion_matrix\":{\"labels\":[\"dog\",\"cat\",\"unmatched\"],\"rows\":[[0,2,3],[1,21,7],[1,2,0]],\"precision\":[0.0,0.7241379310344828,0.0],\"recall\":[0.0,0.84,0.0],\"accuracy\":[0.0,0.6363636363636364,0.0],\"axes\":{\"cols\":\"gt\",\"rows\":\"ds\"}},\"accuracy\":0.5675675675675675,\"precision\":0.6176470588235294,\"recall\":0.7777777777777778},\"annotation_components\":{\"shape\":{\"valid_count\":24,\"missing_count\":3,\"extra_count\":10,\"total_count\":37,\"ds_count\":34,\"gt_count\":27,\"mean_iou\":0.5319346007279295,\"accuracy\":0.6486486486486487},\"label\":{\"valid_count\":21,\"invalid_count\":3,\"total_count\":24,\"accuracy\":0.875}},\"conflict_count\":31,\"warning_count\":15,\"error_count\":16,\"conflicts_by_type\":{\"low_overlap\":6,\"missing_annotation\":3,\"extra_annotation\":10,\"mismatching_label\":3,\"mismatching_direction\":1,\"covered_annotation\":1,\"mismatching_attributes\":1,\"mismatching_groups\":6}},\"1\":{\"conflicts\":[{\"frame_id\":1,\"type\":\"missing_annotation\",\"annotation_ids\":[{\"obj_id\":130,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"error\"},{\"frame_id\":1,\"type\":\"missing_annotation\",\"annotation_ids\":[{\"obj_id\":128,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"points\"}],\"severity\":\"error\"},{\"frame_id\":1,\"type\":\"missing_annotation\",\"annotation_ids\":[{\"obj_id\":124,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"polygon\"}],\"severity\":\"error\"},{\"frame_id\":1,\"type\":\"missing_annotation\",\"annotation_ids\":[{\"obj_id\":125,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"ellipse\"}],\"severity\":\"error\"},{\"frame_id\":1,\"type\":\"missing_annotation\",\"annotation_ids\":[{\"obj_id\":127,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"mask\"}],\"severity\":\"error\"},{\"frame_id\":1,\"type\":\"missing_annotation\",\"annotation_ids\":[{\"obj_id\":129,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"polyline\"}],\"severity\":\"error\"}],\"annotations\":{\"valid_count\":0,\"missing_count\":6,\"extra_count\":0,\"total_count\":6,\"ds_count\":0,\"gt_count\":6,\"confusion_matrix\":{\"labels\":[\"dog\",\"cat\",\"unmatched\"],\"rows\":[[0,0,0],[0,0,0],[0,6,0]],\"precision\":[0.0,0.0,0.0],\"recall\":[0.0,0.0,0.0],\"accuracy\":[0.0,0.0,0.0],\"axes\":{\"cols\":\"gt\",\"rows\":\"ds\"}},\"accuracy\":0.0,\"precision\":0.0,\"recall\":0.0},\"annotation_components\":{\"shape\":{\"valid_count\":0,\"missing_count\":6,\"extra_count\":0,\"total_count\":6,\"ds_count\":0,\"gt_count\":6,\"mean_iou\":0.0,\"accuracy\":0.0},\"label\":{\"valid_count\":0,\"invalid_count\":0,\"total_count\":0,\"accuracy\":0.0}},\"conflict_count\":6,\"warning_count\":0,\"error_count\":6,\"conflicts_by_type\":{\"missing_annotation\":6}},\"2\":{\"conflicts\":[],\"annotations\":{\"valid_count\":0,\"missing_count\":0,\"extra_count\":0,\"total_count\":0,\"ds_count\":0,\"gt_count\":0,\"confusion_matrix\":{\"labels\":[\"dog\",\"cat\",\"unmatched\"],\"rows\":[[0,0,0],[0,0,0],[0,0,0]],\"precision\":[0.0,0.0,0.0],\"recall\":[0.0,0.0,0.0],\"accuracy\":[0.0,0.0,0.0],\"axes\":{\"cols\":\"gt\",\"rows\":\"ds\"}},\"accuracy\":0.0,\"precision\":0.0,\"recall\":0.0},\"annotation_components\":{\"shape\":{\"valid_count\":0,\"missing_count\":0,\"extra_count\":0,\"total_count\":0,\"ds_count\":0,\"gt_count\":0,\"mean_iou\":0,\"accuracy\":0.0},\"label\":{\"valid_count\":0,\"invalid_count\":0,\"total_count\":0,\"accuracy\":0.0}},\"conflict_count\":0,\"warning_count\":0,\"error_count\":0,\"conflicts_by_type\":{}}}}" } }, { @@ -10268,7 +10268,7 @@ "created_date": "2023-05-26T16:25:36.616Z", "target_last_updated": "2023-05-26T16:11:24.294Z", "gt_last_updated": "2023-05-26T16:16:50.630Z", - "data": "{\n \"parameters\": {\n \"included_annotation_types\": [\n \"bbox\",\n \"points\",\n \"mask\",\n \"polygon\",\n \"polyline\",\n \"skeleton\"\n ],\n \"compare_attributes\": true,\n \"ignored_attributes\": [],\n \"iou_threshold\": 0.4,\n \"low_overlap_threshold\": 0.8,\n \"oks_sigma\": 0.09,\n \"line_thickness\": 0.01,\n \"compare_line_orientation\": true,\n \"line_orientation_threshold\": 0.1,\n \"compare_groups\": true,\n \"group_match_threshold\": 0.5,\n \"check_covered_annotations\": true,\n \"object_visibility_threshold\": 0.05,\n \"panoptic_comparison\": true\n },\n \"comparison_summary\": {\n \"frame_share\": 0.2727272727272727,\n \"frames\": [\n 0,\n 1,\n 2\n ],\n \"conflict_count\": 37,\n \"warning_count\": 15,\n \"error_count\": 22,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 9,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n },\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 8,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.6774193548387096,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.5384615384615384,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.4883720930232558,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.6363636363636364\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 9,\n \"extra_count\": 10,\n \"total_count\": 43,\n \"ds_count\": 34,\n \"gt_count\": 33,\n \"mean_iou\": 0.1773115335759765,\n \"accuracy\": 0.5581395348837209\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"frame_count\": 3,\n \"mean_conflict_count\": 12.333333333333334\n },\n \"frame_results\": {\n \"0\": {\n \"conflicts\": [\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 91,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 118,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 88,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 102,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 68,\n \"job_id\": 27,\n \"type\": \"polygon\"\n },\n {\n \"obj_id\": 98,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"low_overlap\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 107,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 121,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 122,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 70,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 76,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 93,\n \"job_id\": 27,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 74,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 95,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 73,\n \"job_id\": 27,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 96,\n \"job_id\": 27,\n \"type\": \"ellipse\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 64,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 66,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"extra_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 94,\n \"job_id\": 27,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 89,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 123,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 92,\n \"job_id\": 27,\n \"type\": \"points\"\n },\n {\n \"obj_id\": 119,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_label\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n },\n {\n \"obj_id\": 97,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_direction\",\n \"annotation_ids\": [\n {\n \"obj_id\": 67,\n \"job_id\": 27,\n \"type\": \"polyline\"\n },\n {\n \"obj_id\": 99,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"covered_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 69,\n \"job_id\": 27,\n \"type\": \"mask\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_attributes\",\n \"annotation_ids\": [\n {\n \"obj_id\": 65,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 101,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 82,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 103,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 81,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 104,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 83,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 105,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 87,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 106,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 80,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 111,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n },\n {\n \"frame_id\": 0,\n \"type\": \"mismatching_groups\",\n \"annotation_ids\": [\n {\n \"obj_id\": 77,\n \"job_id\": 27,\n \"type\": \"rectangle\"\n },\n {\n \"obj_id\": 114,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"warning\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 21,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 2,\n 3\n ],\n [\n 1,\n 21,\n 7\n ],\n [\n 1,\n 2,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.7241379310344828,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.84,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.6363636363636364,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.5675675675675675,\n \"precision\": 0.6176470588235294,\n \"recall\": 0.7777777777777778\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 24,\n \"missing_count\": 3,\n \"extra_count\": 10,\n \"total_count\": 37,\n \"ds_count\": 34,\n \"gt_count\": 27,\n \"mean_iou\": 0.5319346007279295,\n \"accuracy\": 0.6486486486486487\n },\n \"label\": {\n \"valid_count\": 21,\n \"invalid_count\": 3,\n \"total_count\": 24,\n \"accuracy\": 0.875\n }\n },\n \"conflict_count\": 31,\n \"warning_count\": 15,\n \"error_count\": 16,\n \"conflicts_by_type\": {\n \"low_overlap\": 6,\n \"missing_annotation\": 3,\n \"extra_annotation\": 10,\n \"mismatching_label\": 3,\n \"mismatching_direction\": 1,\n \"covered_annotation\": 1,\n \"mismatching_attributes\": 1,\n \"mismatching_groups\": 6\n }\n },\n \"1\": {\n \"conflicts\": [\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 130,\n \"job_id\": 28,\n \"type\": \"rectangle\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 128,\n \"job_id\": 28,\n \"type\": \"points\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 124,\n \"job_id\": 28,\n \"type\": \"polygon\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 125,\n \"job_id\": 28,\n \"type\": \"ellipse\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 127,\n \"job_id\": 28,\n \"type\": \"mask\"\n }\n ],\n \"severity\": \"error\"\n },\n {\n \"frame_id\": 1,\n \"type\": \"missing_annotation\",\n \"annotation_ids\": [\n {\n \"obj_id\": 129,\n \"job_id\": 28,\n \"type\": \"polyline\"\n }\n ],\n \"severity\": \"error\"\n }\n ],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 6,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 6,\n \"extra_count\": 0,\n \"total_count\": 6,\n \"ds_count\": 0,\n \"gt_count\": 6,\n \"mean_iou\": 0.0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 6,\n \"warning_count\": 0,\n \"error_count\": 6,\n \"conflicts_by_type\": {\n \"missing_annotation\": 6\n }\n },\n \"2\": {\n \"conflicts\": [],\n \"annotations\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"confusion_matrix\": {\n \"labels\": [\n \"dog\",\n \"cat\",\n \"unmatched\"\n ],\n \"rows\": [\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0\n ]\n ],\n \"precision\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"recall\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"accuracy\": [\n 0.0,\n 0.0,\n 0.0\n ],\n \"axes\": {\n \"cols\": \"gt\",\n \"rows\": \"ds\"\n }\n },\n \"accuracy\": 0.0,\n \"precision\": 0.0,\n \"recall\": 0.0\n },\n \"annotation_components\": {\n \"shape\": {\n \"valid_count\": 0,\n \"missing_count\": 0,\n \"extra_count\": 0,\n \"total_count\": 0,\n \"ds_count\": 0,\n \"gt_count\": 0,\n \"mean_iou\": 0,\n \"accuracy\": 0.0\n },\n \"label\": {\n \"valid_count\": 0,\n \"invalid_count\": 0,\n \"total_count\": 0,\n \"accuracy\": 0.0\n }\n },\n \"conflict_count\": 0,\n \"warning_count\": 0,\n \"error_count\": 0,\n \"conflicts_by_type\": {}\n }\n }\n}\n" + "data": "{\"parameters\":{\"included_annotation_types\":[\"bbox\",\"points\",\"mask\",\"polygon\",\"polyline\",\"skeleton\"],\"compare_attributes\":true,\"ignored_attributes\":[],\"iou_threshold\":0.4,\"low_overlap_threshold\":0.8,\"oks_sigma\":0.09,\"line_thickness\":0.01,\"compare_line_orientation\":true,\"line_orientation_threshold\":0.1,\"compare_groups\":true,\"group_match_threshold\":0.5,\"check_covered_annotations\":true,\"object_visibility_threshold\":0.05,\"panoptic_comparison\":true},\"comparison_summary\":{\"frame_share\":0.2727272727272727,\"frames\":[0,1,2],\"conflict_count\":37,\"warning_count\":15,\"error_count\":22,\"conflicts_by_type\":{\"low_overlap\":6,\"missing_annotation\":9,\"extra_annotation\":10,\"mismatching_label\":3,\"mismatching_direction\":1,\"covered_annotation\":1,\"mismatching_attributes\":1,\"mismatching_groups\":6},\"annotations\":{\"valid_count\":21,\"missing_count\":9,\"extra_count\":10,\"total_count\":43,\"ds_count\":34,\"gt_count\":33,\"confusion_matrix\":{\"labels\":[\"dog\",\"cat\",\"unmatched\"],\"rows\":[[0,2,3],[1,21,7],[1,8,0]],\"precision\":[0.0,0.7241379310344828,0.0],\"recall\":[0.0,0.6774193548387096,0.0],\"accuracy\":[0.0,0.5384615384615384,0.0],\"axes\":{\"cols\":\"gt\",\"rows\":\"ds\"}},\"accuracy\":0.4883720930232558,\"precision\":0.6176470588235294,\"recall\":0.6363636363636364},\"annotation_components\":{\"shape\":{\"valid_count\":24,\"missing_count\":9,\"extra_count\":10,\"total_count\":43,\"ds_count\":34,\"gt_count\":33,\"mean_iou\":0.1773115335759765,\"accuracy\":0.5581395348837209},\"label\":{\"valid_count\":21,\"invalid_count\":3,\"total_count\":24,\"accuracy\":0.875}},\"frame_count\":3,\"mean_conflict_count\":12.333333333333334},\"frame_results\":{\"0\":{\"conflicts\":[{\"frame_id\":0,\"type\":\"low_overlap\",\"annotation_ids\":[{\"obj_id\":65,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"rectangle\"},{\"obj_id\":101,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"low_overlap\",\"annotation_ids\":[{\"obj_id\":91,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"rectangle\"},{\"obj_id\":118,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"low_overlap\",\"annotation_ids\":[{\"obj_id\":88,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"points\"},{\"obj_id\":102,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"points\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"low_overlap\",\"annotation_ids\":[{\"obj_id\":68,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"polygon\"},{\"obj_id\":98,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"polygon\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"low_overlap\",\"annotation_ids\":[{\"obj_id\":67,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"polyline\"},{\"obj_id\":99,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"polyline\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"low_overlap\",\"annotation_ids\":[{\"obj_id\":92,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"points\"},{\"obj_id\":119,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"points\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"missing_annotation\",\"annotation_ids\":[{\"obj_id\":107,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"missing_annotation\",\"annotation_ids\":[{\"obj_id\":121,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"points\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"missing_annotation\",\"annotation_ids\":[{\"obj_id\":122,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"points\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"extra_annotation\",\"annotation_ids\":[{\"obj_id\":70,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"extra_annotation\",\"annotation_ids\":[{\"obj_id\":76,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"extra_annotation\",\"annotation_ids\":[{\"obj_id\":93,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"points\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"extra_annotation\",\"annotation_ids\":[{\"obj_id\":74,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"polygon\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"extra_annotation\",\"annotation_ids\":[{\"obj_id\":95,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"polygon\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"extra_annotation\",\"annotation_ids\":[{\"obj_id\":73,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"polygon\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"extra_annotation\",\"annotation_ids\":[{\"obj_id\":96,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"ellipse\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"extra_annotation\",\"annotation_ids\":[{\"obj_id\":64,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"polyline\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"extra_annotation\",\"annotation_ids\":[{\"obj_id\":66,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"polyline\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"extra_annotation\",\"annotation_ids\":[{\"obj_id\":94,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"polyline\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"mismatching_label\",\"annotation_ids\":[{\"obj_id\":89,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"points\"},{\"obj_id\":123,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"points\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"mismatching_label\",\"annotation_ids\":[{\"obj_id\":92,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"points\"},{\"obj_id\":119,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"points\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"mismatching_label\",\"annotation_ids\":[{\"obj_id\":69,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"mask\"},{\"obj_id\":97,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"polygon\"}],\"severity\":\"error\"},{\"frame_id\":0,\"type\":\"mismatching_direction\",\"annotation_ids\":[{\"obj_id\":67,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"polyline\"},{\"obj_id\":99,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"polyline\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"covered_annotation\",\"annotation_ids\":[{\"obj_id\":69,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"mask\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"mismatching_attributes\",\"annotation_ids\":[{\"obj_id\":65,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"rectangle\"},{\"obj_id\":101,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"mismatching_groups\",\"annotation_ids\":[{\"obj_id\":82,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"rectangle\"},{\"obj_id\":103,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"mismatching_groups\",\"annotation_ids\":[{\"obj_id\":81,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"rectangle\"},{\"obj_id\":104,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"mismatching_groups\",\"annotation_ids\":[{\"obj_id\":83,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"rectangle\"},{\"obj_id\":105,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"mismatching_groups\",\"annotation_ids\":[{\"obj_id\":87,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"rectangle\"},{\"obj_id\":106,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"mismatching_groups\",\"annotation_ids\":[{\"obj_id\":80,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"rectangle\"},{\"obj_id\":111,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"warning\"},{\"frame_id\":0,\"type\":\"mismatching_groups\",\"annotation_ids\":[{\"obj_id\":77,\"job_id\":27,\"type\":\"shape\",\"shape_type\":\"rectangle\"},{\"obj_id\":114,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"warning\"}],\"annotations\":{\"valid_count\":21,\"missing_count\":3,\"extra_count\":10,\"total_count\":37,\"ds_count\":34,\"gt_count\":27,\"confusion_matrix\":{\"labels\":[\"dog\",\"cat\",\"unmatched\"],\"rows\":[[0,2,3],[1,21,7],[1,2,0]],\"precision\":[0.0,0.7241379310344828,0.0],\"recall\":[0.0,0.84,0.0],\"accuracy\":[0.0,0.6363636363636364,0.0],\"axes\":{\"cols\":\"gt\",\"rows\":\"ds\"}},\"accuracy\":0.5675675675675675,\"precision\":0.6176470588235294,\"recall\":0.7777777777777778},\"annotation_components\":{\"shape\":{\"valid_count\":24,\"missing_count\":3,\"extra_count\":10,\"total_count\":37,\"ds_count\":34,\"gt_count\":27,\"mean_iou\":0.5319346007279295,\"accuracy\":0.6486486486486487},\"label\":{\"valid_count\":21,\"invalid_count\":3,\"total_count\":24,\"accuracy\":0.875}},\"conflict_count\":31,\"warning_count\":15,\"error_count\":16,\"conflicts_by_type\":{\"low_overlap\":6,\"missing_annotation\":3,\"extra_annotation\":10,\"mismatching_label\":3,\"mismatching_direction\":1,\"covered_annotation\":1,\"mismatching_attributes\":1,\"mismatching_groups\":6}},\"1\":{\"conflicts\":[{\"frame_id\":1,\"type\":\"missing_annotation\",\"annotation_ids\":[{\"obj_id\":130,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"rectangle\"}],\"severity\":\"error\"},{\"frame_id\":1,\"type\":\"missing_annotation\",\"annotation_ids\":[{\"obj_id\":128,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"points\"}],\"severity\":\"error\"},{\"frame_id\":1,\"type\":\"missing_annotation\",\"annotation_ids\":[{\"obj_id\":124,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"polygon\"}],\"severity\":\"error\"},{\"frame_id\":1,\"type\":\"missing_annotation\",\"annotation_ids\":[{\"obj_id\":125,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"ellipse\"}],\"severity\":\"error\"},{\"frame_id\":1,\"type\":\"missing_annotation\",\"annotation_ids\":[{\"obj_id\":127,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"mask\"}],\"severity\":\"error\"},{\"frame_id\":1,\"type\":\"missing_annotation\",\"annotation_ids\":[{\"obj_id\":129,\"job_id\":28,\"type\":\"shape\",\"shape_type\":\"polyline\"}],\"severity\":\"error\"}],\"annotations\":{\"valid_count\":0,\"missing_count\":6,\"extra_count\":0,\"total_count\":6,\"ds_count\":0,\"gt_count\":6,\"confusion_matrix\":{\"labels\":[\"dog\",\"cat\",\"unmatched\"],\"rows\":[[0,0,0],[0,0,0],[0,6,0]],\"precision\":[0.0,0.0,0.0],\"recall\":[0.0,0.0,0.0],\"accuracy\":[0.0,0.0,0.0],\"axes\":{\"cols\":\"gt\",\"rows\":\"ds\"}},\"accuracy\":0.0,\"precision\":0.0,\"recall\":0.0},\"annotation_components\":{\"shape\":{\"valid_count\":0,\"missing_count\":6,\"extra_count\":0,\"total_count\":6,\"ds_count\":0,\"gt_count\":6,\"mean_iou\":0.0,\"accuracy\":0.0},\"label\":{\"valid_count\":0,\"invalid_count\":0,\"total_count\":0,\"accuracy\":0.0}},\"conflict_count\":6,\"warning_count\":0,\"error_count\":6,\"conflicts_by_type\":{\"missing_annotation\":6}},\"2\":{\"conflicts\":[],\"annotations\":{\"valid_count\":0,\"missing_count\":0,\"extra_count\":0,\"total_count\":0,\"ds_count\":0,\"gt_count\":0,\"confusion_matrix\":{\"labels\":[\"dog\",\"cat\",\"unmatched\"],\"rows\":[[0,0,0],[0,0,0],[0,0,0]],\"precision\":[0.0,0.0,0.0],\"recall\":[0.0,0.0,0.0],\"accuracy\":[0.0,0.0,0.0],\"axes\":{\"cols\":\"gt\",\"rows\":\"ds\"}},\"accuracy\":0.0,\"precision\":0.0,\"recall\":0.0},\"annotation_components\":{\"shape\":{\"valid_count\":0,\"missing_count\":0,\"extra_count\":0,\"total_count\":0,\"ds_count\":0,\"gt_count\":0,\"mean_iou\":0,\"accuracy\":0.0},\"label\":{\"valid_count\":0,\"invalid_count\":0,\"total_count\":0,\"accuracy\":0.0}},\"conflict_count\":0,\"warning_count\":0,\"error_count\":0,\"conflicts_by_type\":{}}}}" } }, { @@ -10648,7 +10648,8 @@ "conflict": 1, "obj_id": 65, "job_id": 27, - "type": "rectangle" + "type": "shape", + "shape_type": "rectangle" } }, { @@ -10658,7 +10659,8 @@ "conflict": 1, "obj_id": 101, "job_id": 28, - "type": "rectangle" + "type": "shape", + "shape_type": "rectangle" } }, { @@ -10668,7 +10670,8 @@ "conflict": 2, "obj_id": 91, "job_id": 27, - "type": "rectangle" + "type": "shape", + "shape_type": "rectangle" } }, { @@ -10678,7 +10681,8 @@ "conflict": 2, "obj_id": 118, "job_id": 28, - "type": "rectangle" + "type": "shape", + "shape_type": "rectangle" } }, { @@ -10688,7 +10692,8 @@ "conflict": 3, "obj_id": 88, "job_id": 27, - "type": "points" + "type": "shape", + "shape_type": "points" } }, { @@ -10698,7 +10703,8 @@ "conflict": 3, "obj_id": 102, "job_id": 28, - "type": "points" + "type": "shape", + "shape_type": "points" } }, { @@ -10708,7 +10714,8 @@ "conflict": 4, "obj_id": 68, "job_id": 27, - "type": "polygon" + "type": "shape", + "shape_type": "polygon" } }, { @@ -10718,7 +10725,8 @@ "conflict": 4, "obj_id": 98, "job_id": 28, - "type": "polygon" + "type": "shape", + "shape_type": "polygon" } }, { @@ -10728,7 +10736,8 @@ "conflict": 5, "obj_id": 67, "job_id": 27, - "type": "polyline" + "type": "shape", + "shape_type": "polyline" } }, { @@ -10738,7 +10747,8 @@ "conflict": 5, "obj_id": 99, "job_id": 28, - "type": "polyline" + "type": "shape", + "shape_type": "polyline" } }, { @@ -10748,7 +10758,8 @@ "conflict": 6, "obj_id": 92, "job_id": 27, - "type": "points" + "type": "shape", + "shape_type": "points" } }, { @@ -10758,7 +10769,8 @@ "conflict": 6, "obj_id": 119, "job_id": 28, - "type": "points" + "type": "shape", + "shape_type": "points" } }, { @@ -10768,7 +10780,8 @@ "conflict": 7, "obj_id": 107, "job_id": 28, - "type": "rectangle" + "type": "shape", + "shape_type": "rectangle" } }, { @@ -10778,7 +10791,8 @@ "conflict": 8, "obj_id": 121, "job_id": 28, - "type": "points" + "type": "shape", + "shape_type": "points" } }, { @@ -10788,7 +10802,8 @@ "conflict": 9, "obj_id": 122, "job_id": 28, - "type": "points" + "type": "shape", + "shape_type": "points" } }, { @@ -10798,7 +10813,8 @@ "conflict": 10, "obj_id": 70, "job_id": 27, - "type": "rectangle" + "type": "shape", + "shape_type": "rectangle" } }, { @@ -10808,7 +10824,8 @@ "conflict": 11, "obj_id": 76, "job_id": 27, - "type": "rectangle" + "type": "shape", + "shape_type": "rectangle" } }, { @@ -10818,7 +10835,8 @@ "conflict": 12, "obj_id": 93, "job_id": 27, - "type": "points" + "type": "shape", + "shape_type": "points" } }, { @@ -10828,7 +10846,8 @@ "conflict": 13, "obj_id": 74, "job_id": 27, - "type": "polygon" + "type": "shape", + "shape_type": "polygon" } }, { @@ -10838,7 +10857,8 @@ "conflict": 14, "obj_id": 95, "job_id": 27, - "type": "polygon" + "type": "shape", + "shape_type": "polygon" } }, { @@ -10848,7 +10868,8 @@ "conflict": 15, "obj_id": 73, "job_id": 27, - "type": "polygon" + "type": "shape", + "shape_type": "polygon" } }, { @@ -10858,7 +10879,8 @@ "conflict": 16, "obj_id": 96, "job_id": 27, - "type": "ellipse" + "type": "shape", + "shape_type": "ellipse" } }, { @@ -10868,7 +10890,8 @@ "conflict": 17, "obj_id": 64, "job_id": 27, - "type": "polyline" + "type": "shape", + "shape_type": "polyline" } }, { @@ -10878,7 +10901,8 @@ "conflict": 18, "obj_id": 66, "job_id": 27, - "type": "polyline" + "type": "shape", + "shape_type": "polyline" } }, { @@ -10888,7 +10912,8 @@ "conflict": 19, "obj_id": 94, "job_id": 27, - "type": "polyline" + "type": "shape", + "shape_type": "polyline" } }, { @@ -10898,7 +10923,8 @@ "conflict": 20, "obj_id": 89, "job_id": 27, - "type": "points" + "type": "shape", + "shape_type": "points" } }, { @@ -10908,7 +10934,8 @@ "conflict": 20, "obj_id": 123, "job_id": 28, - "type": "points" + "type": "shape", + "shape_type": "points" } }, { @@ -10918,7 +10945,8 @@ "conflict": 21, "obj_id": 92, "job_id": 27, - "type": "points" + "type": "shape", + "shape_type": "points" } }, { @@ -10928,7 +10956,8 @@ "conflict": 21, "obj_id": 119, "job_id": 28, - "type": "points" + "type": "shape", + "shape_type": "points" } }, { @@ -10938,7 +10967,8 @@ "conflict": 22, "obj_id": 69, "job_id": 27, - "type": "mask" + "type": "shape", + "shape_type": "mask" } }, { @@ -10948,7 +10978,8 @@ "conflict": 22, "obj_id": 97, "job_id": 28, - "type": "polygon" + "type": "shape", + "shape_type": "polygon" } }, { @@ -10958,7 +10989,8 @@ "conflict": 23, "obj_id": 67, "job_id": 27, - "type": "polyline" + "type": "shape", + "shape_type": "polyline" } }, { @@ -10968,7 +11000,8 @@ "conflict": 23, "obj_id": 99, "job_id": 28, - "type": "polyline" + "type": "shape", + "shape_type": "polyline" } }, { @@ -10978,7 +11011,8 @@ "conflict": 24, "obj_id": 69, "job_id": 27, - "type": "mask" + "type": "shape", + "shape_type": "mask" } }, { @@ -10988,7 +11022,8 @@ "conflict": 25, "obj_id": 65, "job_id": 27, - "type": "rectangle" + "type": "shape", + "shape_type": "rectangle" } }, { @@ -10998,7 +11033,8 @@ "conflict": 25, "obj_id": 101, "job_id": 28, - "type": "rectangle" + "type": "shape", + "shape_type": "rectangle" } }, { @@ -11008,7 +11044,8 @@ "conflict": 26, "obj_id": 82, "job_id": 27, - "type": "rectangle" + "type": "shape", + "shape_type": "rectangle" } }, { @@ -11018,7 +11055,8 @@ "conflict": 26, "obj_id": 103, "job_id": 28, - "type": "rectangle" + "type": "shape", + "shape_type": "rectangle" } }, { @@ -11028,7 +11066,8 @@ "conflict": 27, "obj_id": 81, "job_id": 27, - "type": "rectangle" + "type": "shape", + "shape_type": "rectangle" } }, { @@ -11038,7 +11077,8 @@ "conflict": 27, "obj_id": 104, "job_id": 28, - "type": "rectangle" + "type": "shape", + "shape_type": "rectangle" } }, { @@ -11048,7 +11088,8 @@ "conflict": 28, "obj_id": 83, "job_id": 27, - "type": "rectangle" + "type": "shape", + "shape_type": "rectangle" } }, { @@ -11058,7 +11099,8 @@ "conflict": 28, "obj_id": 105, "job_id": 28, - "type": "rectangle" + "type": "shape", + "shape_type": "rectangle" } }, { @@ -11068,7 +11110,8 @@ "conflict": 29, "obj_id": 87, "job_id": 27, - "type": "rectangle" + "type": "shape", + "shape_type": "rectangle" } }, { @@ -11078,7 +11121,8 @@ "conflict": 29, "obj_id": 106, "job_id": 28, - "type": "rectangle" + "type": "shape", + "shape_type": "rectangle" } }, { @@ -11088,7 +11132,8 @@ "conflict": 30, "obj_id": 80, "job_id": 27, - "type": "rectangle" + "type": "shape", + "shape_type": "rectangle" } }, { @@ -11098,7 +11143,8 @@ "conflict": 30, "obj_id": 111, "job_id": 28, - "type": "rectangle" + "type": "shape", + "shape_type": "rectangle" } }, { @@ -11108,7 +11154,8 @@ "conflict": 31, "obj_id": 77, "job_id": 27, - "type": "rectangle" + "type": "shape", + "shape_type": "rectangle" } }, { @@ -11118,7 +11165,8 @@ "conflict": 31, "obj_id": 114, "job_id": 28, - "type": "rectangle" + "type": "shape", + "shape_type": "rectangle" } }, { @@ -11128,7 +11176,8 @@ "conflict": 32, "obj_id": 130, "job_id": 28, - "type": "rectangle" + "type": "shape", + "shape_type": "rectangle" } }, { @@ -11138,7 +11187,8 @@ "conflict": 33, "obj_id": 128, "job_id": 28, - "type": "points" + "type": "shape", + "shape_type": "points" } }, { @@ -11148,7 +11198,8 @@ "conflict": 34, "obj_id": 124, "job_id": 28, - "type": "polygon" + "type": "shape", + "shape_type": "polygon" } }, { @@ -11158,7 +11209,8 @@ "conflict": 35, "obj_id": 125, "job_id": 28, - "type": "ellipse" + "type": "shape", + "shape_type": "ellipse" } }, { @@ -11168,7 +11220,8 @@ "conflict": 36, "obj_id": 127, "job_id": 28, - "type": "mask" + "type": "shape", + "shape_type": "mask" } }, { @@ -11178,7 +11231,8 @@ "conflict": 37, "obj_id": 129, "job_id": 28, - "type": "polyline" + "type": "shape", + "shape_type": "polyline" } }, { diff --git a/tests/python/shared/assets/quality_conflicts.json b/tests/python/shared/assets/quality_conflicts.json index 7244849f9c57..71e2001d1cb2 100644 --- a/tests/python/shared/assets/quality_conflicts.json +++ b/tests/python/shared/assets/quality_conflicts.json @@ -8,13 +8,14 @@ { "job_id": 28, "obj_id": 129, - "type": "polyline" + "shape_type": "polyline", + "type": "shape" } ], "frame": 1, "id": 37, - "severity": "error", "report_id": 2, + "severity": "error", "type": "missing_annotation" }, { @@ -22,13 +23,14 @@ { "job_id": 28, "obj_id": 127, - "type": "mask" + "shape_type": "mask", + "type": "shape" } ], "frame": 1, "id": 36, - "severity": "error", "report_id": 2, + "severity": "error", "type": "missing_annotation" }, { @@ -36,13 +38,14 @@ { "job_id": 28, "obj_id": 125, - "type": "ellipse" + "shape_type": "ellipse", + "type": "shape" } ], "frame": 1, "id": 35, - "severity": "error", "report_id": 2, + "severity": "error", "type": "missing_annotation" }, { @@ -50,13 +53,14 @@ { "job_id": 28, "obj_id": 124, - "type": "polygon" + "shape_type": "polygon", + "type": "shape" } ], "frame": 1, "id": 34, - "severity": "error", "report_id": 2, + "severity": "error", "type": "missing_annotation" }, { @@ -64,13 +68,14 @@ { "job_id": 28, "obj_id": 128, - "type": "points" + "shape_type": "points", + "type": "shape" } ], "frame": 1, "id": 33, - "severity": "error", "report_id": 2, + "severity": "error", "type": "missing_annotation" }, { @@ -78,13 +83,14 @@ { "job_id": 28, "obj_id": 130, - "type": "rectangle" + "shape_type": "rectangle", + "type": "shape" } ], "frame": 1, "id": 32, - "severity": "error", "report_id": 2, + "severity": "error", "type": "missing_annotation" }, { @@ -92,18 +98,20 @@ { "job_id": 27, "obj_id": 77, - "type": "rectangle" + "shape_type": "rectangle", + "type": "shape" }, { "job_id": 28, "obj_id": 114, - "type": "rectangle" + "shape_type": "rectangle", + "type": "shape" } ], "frame": 0, "id": 31, - "severity": "warning", "report_id": 2, + "severity": "warning", "type": "mismatching_groups" }, { @@ -111,18 +119,20 @@ { "job_id": 27, "obj_id": 80, - "type": "rectangle" + "shape_type": "rectangle", + "type": "shape" }, { "job_id": 28, "obj_id": 111, - "type": "rectangle" + "shape_type": "rectangle", + "type": "shape" } ], "frame": 0, "id": 30, - "severity": "warning", "report_id": 2, + "severity": "warning", "type": "mismatching_groups" }, { @@ -130,18 +140,20 @@ { "job_id": 27, "obj_id": 87, - "type": "rectangle" + "shape_type": "rectangle", + "type": "shape" }, { "job_id": 28, "obj_id": 106, - "type": "rectangle" + "shape_type": "rectangle", + "type": "shape" } ], "frame": 0, "id": 29, - "severity": "warning", "report_id": 2, + "severity": "warning", "type": "mismatching_groups" }, { @@ -149,18 +161,20 @@ { "job_id": 27, "obj_id": 83, - "type": "rectangle" + "shape_type": "rectangle", + "type": "shape" }, { "job_id": 28, "obj_id": 105, - "type": "rectangle" + "shape_type": "rectangle", + "type": "shape" } ], "frame": 0, "id": 28, - "severity": "warning", "report_id": 2, + "severity": "warning", "type": "mismatching_groups" }, { @@ -168,18 +182,20 @@ { "job_id": 27, "obj_id": 81, - "type": "rectangle" + "shape_type": "rectangle", + "type": "shape" }, { "job_id": 28, "obj_id": 104, - "type": "rectangle" + "shape_type": "rectangle", + "type": "shape" } ], "frame": 0, "id": 27, - "severity": "warning", "report_id": 2, + "severity": "warning", "type": "mismatching_groups" }, { @@ -187,18 +203,20 @@ { "job_id": 27, "obj_id": 82, - "type": "rectangle" + "shape_type": "rectangle", + "type": "shape" }, { "job_id": 28, "obj_id": 103, - "type": "rectangle" + "shape_type": "rectangle", + "type": "shape" } ], "frame": 0, "id": 26, - "severity": "warning", "report_id": 2, + "severity": "warning", "type": "mismatching_groups" }, { @@ -206,18 +224,20 @@ { "job_id": 27, "obj_id": 65, - "type": "rectangle" + "shape_type": "rectangle", + "type": "shape" }, { "job_id": 28, "obj_id": 101, - "type": "rectangle" + "shape_type": "rectangle", + "type": "shape" } ], "frame": 0, "id": 25, - "severity": "warning", "report_id": 2, + "severity": "warning", "type": "mismatching_attributes" }, { @@ -225,13 +245,14 @@ { "job_id": 27, "obj_id": 69, - "type": "mask" + "shape_type": "mask", + "type": "shape" } ], "frame": 0, "id": 24, - "severity": "warning", "report_id": 2, + "severity": "warning", "type": "covered_annotation" }, { @@ -239,18 +260,20 @@ { "job_id": 27, "obj_id": 67, - "type": "polyline" + "shape_type": "polyline", + "type": "shape" }, { "job_id": 28, "obj_id": 99, - "type": "polyline" + "shape_type": "polyline", + "type": "shape" } ], "frame": 0, "id": 23, - "severity": "warning", "report_id": 2, + "severity": "warning", "type": "mismatching_direction" }, { @@ -258,18 +281,20 @@ { "job_id": 27, "obj_id": 69, - "type": "mask" + "shape_type": "mask", + "type": "shape" }, { "job_id": 28, "obj_id": 97, - "type": "polygon" + "shape_type": "polygon", + "type": "shape" } ], "frame": 0, "id": 22, - "severity": "error", "report_id": 2, + "severity": "error", "type": "mismatching_label" }, { @@ -277,18 +302,20 @@ { "job_id": 27, "obj_id": 92, - "type": "points" + "shape_type": "points", + "type": "shape" }, { "job_id": 28, "obj_id": 119, - "type": "points" + "shape_type": "points", + "type": "shape" } ], "frame": 0, "id": 21, - "severity": "error", "report_id": 2, + "severity": "error", "type": "mismatching_label" }, { @@ -296,18 +323,20 @@ { "job_id": 27, "obj_id": 89, - "type": "points" + "shape_type": "points", + "type": "shape" }, { "job_id": 28, "obj_id": 123, - "type": "points" + "shape_type": "points", + "type": "shape" } ], "frame": 0, "id": 20, - "severity": "error", "report_id": 2, + "severity": "error", "type": "mismatching_label" }, { @@ -315,13 +344,14 @@ { "job_id": 27, "obj_id": 94, - "type": "polyline" + "shape_type": "polyline", + "type": "shape" } ], "frame": 0, "id": 19, - "severity": "error", "report_id": 2, + "severity": "error", "type": "extra_annotation" }, { @@ -329,13 +359,14 @@ { "job_id": 27, "obj_id": 66, - "type": "polyline" + "shape_type": "polyline", + "type": "shape" } ], "frame": 0, "id": 18, - "severity": "error", "report_id": 2, + "severity": "error", "type": "extra_annotation" }, { @@ -343,13 +374,14 @@ { "job_id": 27, "obj_id": 64, - "type": "polyline" + "shape_type": "polyline", + "type": "shape" } ], "frame": 0, "id": 17, - "severity": "error", "report_id": 2, + "severity": "error", "type": "extra_annotation" }, { @@ -357,13 +389,14 @@ { "job_id": 27, "obj_id": 96, - "type": "ellipse" + "shape_type": "ellipse", + "type": "shape" } ], "frame": 0, "id": 16, - "severity": "error", "report_id": 2, + "severity": "error", "type": "extra_annotation" }, { @@ -371,13 +404,14 @@ { "job_id": 27, "obj_id": 73, - "type": "polygon" + "shape_type": "polygon", + "type": "shape" } ], "frame": 0, "id": 15, - "severity": "error", "report_id": 2, + "severity": "error", "type": "extra_annotation" }, { @@ -385,13 +419,14 @@ { "job_id": 27, "obj_id": 95, - "type": "polygon" + "shape_type": "polygon", + "type": "shape" } ], "frame": 0, "id": 14, - "severity": "error", "report_id": 2, + "severity": "error", "type": "extra_annotation" }, { @@ -399,13 +434,14 @@ { "job_id": 27, "obj_id": 74, - "type": "polygon" + "shape_type": "polygon", + "type": "shape" } ], "frame": 0, "id": 13, - "severity": "error", "report_id": 2, + "severity": "error", "type": "extra_annotation" }, { @@ -413,13 +449,14 @@ { "job_id": 27, "obj_id": 93, - "type": "points" + "shape_type": "points", + "type": "shape" } ], "frame": 0, "id": 12, - "severity": "error", "report_id": 2, + "severity": "error", "type": "extra_annotation" }, { @@ -427,13 +464,14 @@ { "job_id": 27, "obj_id": 76, - "type": "rectangle" + "shape_type": "rectangle", + "type": "shape" } ], "frame": 0, "id": 11, - "severity": "error", "report_id": 2, + "severity": "error", "type": "extra_annotation" }, { @@ -441,13 +479,14 @@ { "job_id": 27, "obj_id": 70, - "type": "rectangle" + "shape_type": "rectangle", + "type": "shape" } ], "frame": 0, "id": 10, - "severity": "error", "report_id": 2, + "severity": "error", "type": "extra_annotation" }, { @@ -455,13 +494,14 @@ { "job_id": 28, "obj_id": 122, - "type": "points" + "shape_type": "points", + "type": "shape" } ], "frame": 0, "id": 9, - "severity": "error", "report_id": 2, + "severity": "error", "type": "missing_annotation" }, { @@ -469,13 +509,14 @@ { "job_id": 28, "obj_id": 121, - "type": "points" + "shape_type": "points", + "type": "shape" } ], "frame": 0, "id": 8, - "severity": "error", "report_id": 2, + "severity": "error", "type": "missing_annotation" }, { @@ -483,13 +524,14 @@ { "job_id": 28, "obj_id": 107, - "type": "rectangle" + "shape_type": "rectangle", + "type": "shape" } ], "frame": 0, "id": 7, - "severity": "error", "report_id": 2, + "severity": "error", "type": "missing_annotation" }, { @@ -497,18 +539,20 @@ { "job_id": 27, "obj_id": 92, - "type": "points" + "shape_type": "points", + "type": "shape" }, { "job_id": 28, "obj_id": 119, - "type": "points" + "shape_type": "points", + "type": "shape" } ], "frame": 0, "id": 6, - "severity": "warning", "report_id": 2, + "severity": "warning", "type": "low_overlap" }, { @@ -516,18 +560,20 @@ { "job_id": 27, "obj_id": 67, - "type": "polyline" + "shape_type": "polyline", + "type": "shape" }, { "job_id": 28, "obj_id": 99, - "type": "polyline" + "shape_type": "polyline", + "type": "shape" } ], "frame": 0, "id": 5, - "severity": "warning", "report_id": 2, + "severity": "warning", "type": "low_overlap" }, { @@ -535,18 +581,20 @@ { "job_id": 27, "obj_id": 68, - "type": "polygon" + "shape_type": "polygon", + "type": "shape" }, { "job_id": 28, "obj_id": 98, - "type": "polygon" + "shape_type": "polygon", + "type": "shape" } ], "frame": 0, "id": 4, - "severity": "warning", "report_id": 2, + "severity": "warning", "type": "low_overlap" }, { @@ -554,18 +602,20 @@ { "job_id": 27, "obj_id": 88, - "type": "points" + "shape_type": "points", + "type": "shape" }, { "job_id": 28, "obj_id": 102, - "type": "points" + "shape_type": "points", + "type": "shape" } ], "frame": 0, "id": 3, - "severity": "warning", "report_id": 2, + "severity": "warning", "type": "low_overlap" }, { @@ -573,18 +623,20 @@ { "job_id": 27, "obj_id": 91, - "type": "rectangle" + "shape_type": "rectangle", + "type": "shape" }, { "job_id": 28, "obj_id": 118, - "type": "rectangle" + "shape_type": "rectangle", + "type": "shape" } ], "frame": 0, "id": 2, - "severity": "warning", "report_id": 2, + "severity": "warning", "type": "low_overlap" }, { @@ -592,18 +644,20 @@ { "job_id": 27, "obj_id": 65, - "type": "rectangle" + "shape_type": "rectangle", + "type": "shape" }, { "job_id": 28, "obj_id": 101, - "type": "rectangle" + "shape_type": "rectangle", + "type": "shape" } ], "frame": 0, "id": 1, - "severity": "warning", "report_id": 2, + "severity": "warning", "type": "low_overlap" } ] diff --git a/tests/python/shared/assets/quality_settings.json b/tests/python/shared/assets/quality_settings.json index f429587a1a80..897ccd7793b4 100644 --- a/tests/python/shared/assets/quality_settings.json +++ b/tests/python/shared/assets/quality_settings.json @@ -7,6 +7,7 @@ "check_covered_annotations": true, "compare_attributes": true, "compare_groups": true, + "compare_line_orientation": true, "group_match_threshold": 0.5, "id": 1, "iou_threshold": 0.4, @@ -15,7 +16,6 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 2 }, @@ -23,6 +23,7 @@ "check_covered_annotations": true, "compare_attributes": true, "compare_groups": true, + "compare_line_orientation": true, "group_match_threshold": 0.5, "id": 2, "iou_threshold": 0.4, @@ -31,7 +32,6 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 5 }, @@ -39,6 +39,7 @@ "check_covered_annotations": true, "compare_attributes": true, "compare_groups": true, + "compare_line_orientation": true, "group_match_threshold": 0.5, "id": 3, "iou_threshold": 0.4, @@ -47,7 +48,6 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 6 }, @@ -55,6 +55,7 @@ "check_covered_annotations": true, "compare_attributes": true, "compare_groups": true, + "compare_line_orientation": true, "group_match_threshold": 0.5, "id": 4, "iou_threshold": 0.4, @@ -63,7 +64,6 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 7 }, @@ -71,6 +71,7 @@ "check_covered_annotations": true, "compare_attributes": true, "compare_groups": true, + "compare_line_orientation": true, "group_match_threshold": 0.5, "id": 5, "iou_threshold": 0.4, @@ -79,7 +80,6 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 8 }, @@ -87,6 +87,7 @@ "check_covered_annotations": true, "compare_attributes": true, "compare_groups": true, + "compare_line_orientation": true, "group_match_threshold": 0.5, "id": 6, "iou_threshold": 0.4, @@ -95,7 +96,6 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 9 }, @@ -103,6 +103,7 @@ "check_covered_annotations": true, "compare_attributes": true, "compare_groups": true, + "compare_line_orientation": true, "group_match_threshold": 0.5, "id": 7, "iou_threshold": 0.4, @@ -111,7 +112,6 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 11 }, @@ -119,6 +119,7 @@ "check_covered_annotations": true, "compare_attributes": true, "compare_groups": true, + "compare_line_orientation": true, "group_match_threshold": 0.5, "id": 8, "iou_threshold": 0.4, @@ -127,7 +128,6 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 12 }, @@ -135,6 +135,7 @@ "check_covered_annotations": true, "compare_attributes": true, "compare_groups": true, + "compare_line_orientation": true, "group_match_threshold": 0.5, "id": 9, "iou_threshold": 0.4, @@ -143,7 +144,6 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 13 }, @@ -151,6 +151,7 @@ "check_covered_annotations": true, "compare_attributes": true, "compare_groups": true, + "compare_line_orientation": true, "group_match_threshold": 0.5, "id": 10, "iou_threshold": 0.4, @@ -159,7 +160,6 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 14 }, @@ -167,6 +167,7 @@ "check_covered_annotations": true, "compare_attributes": true, "compare_groups": true, + "compare_line_orientation": true, "group_match_threshold": 0.5, "id": 11, "iou_threshold": 0.4, @@ -175,7 +176,6 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 15 }, @@ -183,6 +183,7 @@ "check_covered_annotations": true, "compare_attributes": true, "compare_groups": true, + "compare_line_orientation": true, "group_match_threshold": 0.5, "id": 12, "iou_threshold": 0.4, @@ -191,7 +192,6 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 17 }, @@ -199,6 +199,7 @@ "check_covered_annotations": true, "compare_attributes": true, "compare_groups": true, + "compare_line_orientation": true, "group_match_threshold": 0.5, "id": 13, "iou_threshold": 0.4, @@ -207,7 +208,6 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 18 }, @@ -215,6 +215,7 @@ "check_covered_annotations": true, "compare_attributes": true, "compare_groups": true, + "compare_line_orientation": true, "group_match_threshold": 0.5, "id": 14, "iou_threshold": 0.4, @@ -223,7 +224,6 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 19 }, @@ -231,6 +231,7 @@ "check_covered_annotations": true, "compare_attributes": true, "compare_groups": true, + "compare_line_orientation": true, "group_match_threshold": 0.5, "id": 15, "iou_threshold": 0.4, @@ -239,7 +240,6 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 20 }, @@ -247,6 +247,7 @@ "check_covered_annotations": true, "compare_attributes": true, "compare_groups": true, + "compare_line_orientation": true, "group_match_threshold": 0.5, "id": 16, "iou_threshold": 0.4, @@ -255,7 +256,6 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 21 }, @@ -263,6 +263,7 @@ "check_covered_annotations": true, "compare_attributes": true, "compare_groups": true, + "compare_line_orientation": true, "group_match_threshold": 0.5, "id": 17, "iou_threshold": 0.4, @@ -271,7 +272,6 @@ "low_overlap_threshold": 0.8, "object_visibility_threshold": 0.05, "oks_sigma": 0.09, - "compare_line_orientation": true, "panoptic_comparison": true, "task_id": 22 } From ea3cbc303311a02d1c0b2cf5f5333c057107f295 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 8 Jun 2023 16:20:29 +0300 Subject: [PATCH 244/257] Fix schema --- cvat/apps/quality_control/views.py | 10 ++++++++-- cvat/schema.yml | 14 ++------------ 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/cvat/apps/quality_control/views.py b/cvat/apps/quality_control/views.py index 30cee54747e1..fc136cfb91e4 100644 --- a/cvat/apps/quality_control/views.py +++ b/cvat/apps/quality_control/views.py @@ -342,7 +342,10 @@ def data(self, request, pk): summary="Method returns details of the quality settings instance", parameters=[ OpenApiParameter( - "id", type=OpenApiTypes.INT, description="An id of a quality settings instance" + "id", + type=OpenApiTypes.INT, + location="path", + description="An id of a quality settings instance", ) ], responses={ @@ -353,7 +356,10 @@ def data(self, request, pk): summary="Methods does a partial update of chosen fields in the quality settings instance", parameters=[ OpenApiParameter( - "id", type=OpenApiTypes.INT, description="An id of a quality settings instance" + "id", + type=OpenApiTypes.INT, + location="path", + description="An id of a quality settings instance", ) ], request=QualitySettingsSerializer(partial=True), diff --git a/cvat/schema.yml b/cvat/schema.yml index 05b68841c47d..6aa1fa15e902 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -3779,16 +3779,11 @@ paths: summary: Method returns details of the quality settings instance parameters: - in: path - name: id - schema: - type: integer - description: A unique integer value identifying this quality settings. - required: true - - in: query name: id schema: type: integer description: An id of a quality settings instance + required: true tags: - quality security: @@ -3810,16 +3805,11 @@ paths: instance parameters: - in: path - name: id - schema: - type: integer - description: A unique integer value identifying this quality settings. - required: true - - in: query name: id schema: type: integer description: An id of a quality settings instance + required: true tags: - quality requestBody: From 67b943b8c55cb11ec4b183c40101d4fb57eaa753 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Thu, 8 Jun 2023 16:28:36 +0300 Subject: [PATCH 245/257] Update migrations --- ...b_type_created_date.py => 0069_add_job_type_created_date.py} | 2 +- cvat/apps/quality_control/migrations/0001_initial.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename cvat/apps/engine/migrations/{0068_add_job_type_created_date.py => 0069_add_job_type_created_date.py} (96%) diff --git a/cvat/apps/engine/migrations/0068_add_job_type_created_date.py b/cvat/apps/engine/migrations/0069_add_job_type_created_date.py similarity index 96% rename from cvat/apps/engine/migrations/0068_add_job_type_created_date.py rename to cvat/apps/engine/migrations/0069_add_job_type_created_date.py index d275f92ac754..5b67720368b1 100644 --- a/cvat/apps/engine/migrations/0068_add_job_type_created_date.py +++ b/cvat/apps/engine/migrations/0069_add_job_type_created_date.py @@ -17,7 +17,7 @@ def add_created_date_to_existing_jobs(apps, schema_editor): class Migration(migrations.Migration): dependencies = [ - ('engine', '0067_alter_cloudstorage_credentials_type'), + ('engine', '0068_auto_20230418_0901'), ] operations = [ diff --git a/cvat/apps/quality_control/migrations/0001_initial.py b/cvat/apps/quality_control/migrations/0001_initial.py index 1810850669ab..e96e9a7d8b11 100644 --- a/cvat/apps/quality_control/migrations/0001_initial.py +++ b/cvat/apps/quality_control/migrations/0001_initial.py @@ -8,7 +8,7 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ("engine", "0068_add_job_type_created_date"), + ("engine", "0069_add_job_type_created_date"), ] operations = [ From 09994971ff73266054ee80c4e1ca128c481f915f Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 9 Jun 2023 12:22:33 +0300 Subject: [PATCH 246/257] Fix lambda function runs on job a frame --- cvat/apps/lambda_manager/tests/test_lambda.py | 234 +++++++++++++++--- cvat/apps/lambda_manager/views.py | 26 +- 2 files changed, 214 insertions(+), 46 deletions(-) diff --git a/cvat/apps/lambda_manager/tests/test_lambda.py b/cvat/apps/lambda_manager/tests/test_lambda.py index 0c4ff5633a0b..b162b9a5906d 100644 --- a/cvat/apps/lambda_manager/tests/test_lambda.py +++ b/cvat/apps/lambda_manager/tests/test_lambda.py @@ -3,11 +3,12 @@ # # SPDX-License-Identifier: MIT -import json from collections import OrderedDict +from itertools import groupby from io import BytesIO from typing import Dict, Optional from unittest import mock, skip +import json import os import requests @@ -78,15 +79,15 @@ class _LambdaTestCaseBase(APITestCase): def setUp(self): self.client = APIClient() - http_patcher = mock.patch('cvat.apps.lambda_manager.views.LambdaGateway._http', side_effect = self.__get_data_from_lambda_manager_http) + http_patcher = mock.patch('cvat.apps.lambda_manager.views.LambdaGateway._http', side_effect = self._get_data_from_lambda_manager_http) self.addCleanup(http_patcher.stop) http_patcher.start() - invoke_patcher = mock.patch('cvat.apps.lambda_manager.views.LambdaGateway.invoke', side_effect = self.__invoke_function) + invoke_patcher = mock.patch('cvat.apps.lambda_manager.views.LambdaGateway.invoke', side_effect = self._invoke_function) self.addCleanup(invoke_patcher.stop) invoke_patcher.start() - def __get_data_from_lambda_manager_http(self, **kwargs): + def _get_data_from_lambda_manager_http(self, **kwargs): url = kwargs["url"] if url == "/api/functions": return functions["positive"] @@ -104,7 +105,7 @@ def __get_data_from_lambda_manager_http(self, **kwargs): r.response = HttpResponseNotFound() raise r # raise 404 Not Found error - def __invoke_function(self, func, payload): + def _invoke_function(self, func, payload): data = [] func_id = func.id type_function = functions["positive"][func_id]["metadata"]["annotations"]["type"] @@ -170,15 +171,15 @@ def _create_db_users(cls): cls.user = user_dummy - def _create_task(self, data, image_data, *, owner=None, org_id=None): + def _create_task(self, task_spec, data, *, owner=None, org_id=None): with ForceLogin(owner or self.admin, self.client): - response = self.client.post('/api/tasks', data=data, format="json", + response = self.client.post('/api/tasks', data=task_spec, format="json", QUERY_STRING=f'org_id={org_id}' if org_id is not None else None) assert response.status_code == status.HTTP_201_CREATED, response.status_code tid = response.data["id"] response = self.client.post("/api/tasks/%s/data" % tid, - data=image_data, + data=data, QUERY_STRING=f'org_id={org_id}' if org_id is not None else None) assert response.status_code == status.HTTP_202_ACCEPTED, response.status_code @@ -1042,6 +1043,163 @@ def test_api_v2_lambda_functions_create_function_is_not_ready(self): self.assertEqual(response.status_code, status.HTTP_500_INTERNAL_SERVER_ERROR) +class TestComplexFrameSetupCases(_LambdaTestCaseBase): + def _invoke_function(self, func, payload): + data = [] + func_id = func.id + type_function = functions["positive"][func_id]["metadata"]["annotations"]["type"] + if type_function == "reid": + if func_id == id_function_reid_response_data: + data = [0, 1] + else: + data = [] + elif type_function == "tracker": + data = { + "shape": [12.34, 34.0, 35.01, 41.99], + "state": {"key": "value"}, + } + elif type_function == "interactor": + data = [ + [8, 12], + [34, 56], + [77, 77], + ] + elif type_function == "detector": + data = [ + { + "confidence": "0.9959098", + "label": "car", + "points": [3, 3, 15, 15], + "type": "rectangle", + }, + ] + + return data + + def setUp(self): + super().setUp() + + image_count = 50 + frame_step = 5 + start_frame = 3 + stop_frame = image_count - 4 + + data = self._generate_task_images(image_count) + data["frame_filter"] = f"step={frame_step}" + data["start_frame"] = start_frame + data["stop_frame"] = stop_frame + + self.task = self._create_task( + task_spec={ + 'name': 'test_task', + 'labels': [{'name': 'car'}], + 'segment_size': 2 + }, + data=data, + owner=self.user + ) + self.task_rel_frame_range = range(len(range(start_frame, stop_frame, frame_step))) + + self.jobs = get_paginated_collection(lambda page: + self._get_request( + f"/api/jobs?task_id={self.task['id']}&page={page}", + self.admin + ) + ) + + self.function_id = id_function_detector + self.common_request_data = { + "task": self.task['id'], + "cleanup": True, + } + + def _run_function(self, function_id, data, user): + data["function"] = function_id + response = self._post_request(LAMBDA_REQUESTS_PATH, user, data) + self.assertEqual(response.status_code, status.HTTP_200_OK, response.content) + request_id = response.json()["id"] + + request_status = self._wait_request(request_id) + self.assertEqual(request_status, "finished") + + def _wait_request(self, request_id: str) -> str: + request_status = "started" + while request_status != "finished" and request_status != "failed": + response = self._get_request(f'{LAMBDA_REQUESTS_PATH}/{request_id}', self.admin) + self.assertEqual(response.status_code, status.HTTP_200_OK) + request_status = response.json().get("status") + + return request_status + + def _run_interactor(self, function_id, data, user): + response = self._post_request(f'{LAMBDA_FUNCTIONS_PATH}/{function_id}', user, data) + return response + + def test_can_run_function_on_whole_task(self): + data = self.common_request_data.copy() + self._run_function(self.function_id, data, self.user) + + response = self._get_request(f'/api/tasks/{self.task["id"]}/annotations', self.admin) + self.assertEqual(response.status_code, status.HTTP_200_OK) + annotations = response.json() + + self.assertEqual(len(annotations["tags"]), 0) + self.assertEqual(len(annotations["tracks"]), 0) + + requested_frame_range = self.task_rel_frame_range + self.assertEqual( + { + frame: 1 for frame in requested_frame_range + }, + { + frame: len(list(group)) + for frame, group in groupby(annotations["shapes"], key=lambda a: a["frame"]) + } + ) + + def test_can_run_interactor_on_valid_task_frame(self): + data = self.common_request_data.copy() + requested_frame = self.task_rel_frame_range[4] + data["frame"] = requested_frame + + response = self._run_interactor(self.function_id, data, self.user) + self.assertEqual(response.status_code, status.HTTP_200_OK) + + annotations = response.json() + self.assertEqual(1, len(annotations)) + + def test_can_run_interactor_on_invalid_task_frame(self): + data = self.common_request_data.copy() + requested_frame = self.task_rel_frame_range[-1] + 1 + data["frame"] = requested_frame + + response = self._run_interactor(self.function_id, data, self.user) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + def test_can_run_interactor_on_valid_job_frame(self): + data = self.common_request_data.copy() + job = self.jobs[2] + requested_frame = job["start_frame"] + 1 + data["frame"] = requested_frame + data["job"] = job["id"] + + response = self._run_interactor(self.function_id, data, self.user) + self.assertEqual(response.status_code, status.HTTP_200_OK) + + annotations = response.json() + self.assertEqual(1, len(annotations)) + + def test_can_run_interactor_on_invalid_job_frame(self): + data = self.common_request_data.copy() + job = self.jobs[2] + requested_frame = job["stop_frame"] + 1 + data["frame"] = requested_frame + data["job"] = job["id"] + + response = self._run_interactor(self.function_id, data, self.user) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + class Issue4996_Cases(_LambdaTestCaseBase): # Check regressions for https://github.com/opencv/cvat/issues/4996#issuecomment-1266123032 # We need to check that job assignee can call functions in the assigned jobs @@ -1083,14 +1241,16 @@ def _set_job_assignee(self, job: int, assignee: Optional[int], *, assert response.status_code == status.HTTP_200_OK def setUp(self): + super().setUp() + self.org = self._create_org(owner=self.admin, members={self.user: 'worker'}) - task = self._create_task(data={ + task = self._create_task(task_spec={ 'name': 'test_task', 'labels': [{'name': 'cat'}], 'segment_size': 2 }, - image_data=self._generate_task_images(6), + data=self._generate_task_images(6), owner=self.admin, org_id=self.org['id'], ) @@ -1104,7 +1264,7 @@ def setUp(self): ) self.job = jobs[1] - self.common_data = { + self.common_request_data = { "task": self.task['id'], "frame": 0, "cleanup": True, @@ -1113,81 +1273,79 @@ def setUp(self): }, } - self.function_name = f"{LAMBDA_FUNCTIONS_PATH}/{id_function_detector}" - - return super().setUp() + self.function_url = f"{LAMBDA_FUNCTIONS_PATH}/{id_function_detector}" - def _get_valid_job_params(self): - return { + def _get_valid_job_request_data(self): + data = self.common_request_data.copy() + data.update({ "job": self.job['id'], "frame": 2 - } + }) + return data - def _get_invalid_job_params(self): - return { + def _get_invalid_job_request_data(self): + data = self.common_request_data.copy() + data.update({ "job": self.job['id'], "frame": 0 - } + }) + return data def test_can_call_function_for_job_worker_in_org__deny_unassigned_worker_with_task_request(self): - data = self.common_data.copy() + data = self.common_request_data.copy() with self.subTest(job=None, assignee=None): - response = self._post_request(self.function_name, self.user, data, + response = self._post_request(self.function_url, self.user, data, org_id=self.org['id']) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) def test_can_call_function_for_job_worker_in_org__deny_unassigned_worker_with_job_request(self): - data = self.common_data.copy() - data.update(self._get_valid_job_params()) + data = self._get_valid_job_request_data() with self.subTest(job='defined', assignee=None): - response = self._post_request(self.function_name, self.user, data, + response = self._post_request(self.function_url, self.user, data, org_id=self.org['id']) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) def test_can_call_function_for_job_worker_in_org__allow_task_assigned_worker_with_task_request(self): self._set_task_assignee(self.task['id'], self.user.id, org_id=self.org['id']) - data = self.common_data.copy() + data = self.common_request_data.copy() with self.subTest(job=None, assignee='task'): - response = self._post_request(self.function_name, self.user, data, + response = self._post_request(self.function_url, self.user, data, org_id=self.org['id']) self.assertEqual(response.status_code, status.HTTP_200_OK) def test_can_call_function_for_job_worker_in_org__deny_job_assigned_worker_with_task_request(self): self._set_job_assignee(self.job['id'], self.user.id, org_id=self.org['id']) - data = self.common_data.copy() + data = self.common_request_data.copy() with self.subTest(job=None, assignee='job'): - response = self._post_request(self.function_name, self.user, data, + response = self._post_request(self.function_url, self.user, data, org_id=self.org['id']) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) def test_can_call_function_for_job_worker_in_org__allow_job_assigned_worker_with_job_request(self): self._set_job_assignee(self.job['id'], self.user.id, org_id=self.org['id']) - data = self.common_data.copy() - data.update(self._get_valid_job_params()) + data = self._get_valid_job_request_data() with self.subTest(job='defined', assignee='job'): - response = self._post_request(self.function_name, self.user, data, + response = self._post_request(self.function_url, self.user, data, org_id=self.org['id']) self.assertEqual(response.status_code, status.HTTP_200_OK) def test_can_check_job_boundaries_in_function_call__fail_for_frame_outside_job(self): self._set_job_assignee(self.job['id'], self.user.id, org_id=self.org['id']) - data = self.common_data.copy() - data.update(self._get_invalid_job_params()) + data = self._get_invalid_job_request_data() with self.subTest(job='defined', frame='outside'): - response = self._post_request(self.function_name, self.user, data, + response = self._post_request(self.function_url, self.user, data, org_id=self.org['id']) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) def test_can_check_job_boundaries_in_function_call__ok_for_frame_inside_job(self): self._set_job_assignee(self.job['id'], self.user.id, org_id=self.org['id']) - data = self.common_data.copy() - data.update(self._get_valid_job_params()) + data = self._get_valid_job_request_data() with self.subTest(job='defined', frame='inside'): - response = self._post_request(self.function_name, self.user, data, + response = self._post_request(self.function_url, self.user, data, org_id=self.org['id']) self.assertEqual(response.status_code, status.HTTP_200_OK) diff --git a/cvat/apps/lambda_manager/views.py b/cvat/apps/lambda_manager/views.py index 2a14f8f23f4e..c31d61a8453e 100644 --- a/cvat/apps/lambda_manager/views.py +++ b/cvat/apps/lambda_manager/views.py @@ -250,14 +250,24 @@ def invoke(self, db_task: Task, data: Dict[str, Any], *, db_job: Optional[Job] = supported_attrs[func_label].update({ attr["name"]: task_attributes[mapped_label][mapped_attr] }) # Check job frame boundaries - for key, desc in ( - ('frame', 'frame'), - ('frame0', 'start frame'), - ('frame1', 'end frame'), - ): - if key in data and db_job and not db_job.segment.contains_frame(data[key]): - raise ValidationError(f"The {desc} is outside the job range", - code=status.HTTP_400_BAD_REQUEST) + if db_job: + task_data = db_task.data + data_start_frame = task_data.start_frame + step = task_data.get_frame_step() + + for key, desc in ( + ('frame', 'frame'), + ('frame0', 'start frame'), + ('frame1', 'end frame'), + ): + if key not in data: + continue + + abs_frame_id = data_start_frame + data[key] * step + if not db_job.segment.contains_frame(abs_frame_id): + raise ValidationError(f"The {desc} is outside the job range", + code=status.HTTP_400_BAD_REQUEST) + if self.kind == LambdaType.DETECTOR: payload.update({ From 080fa8ec3569c4eb6b890d463bd1fb8332bbce39 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 9 Jun 2023 13:36:26 +0300 Subject: [PATCH 247/257] Merge migrations --- ...b_type_created_date.py => 0070_add_job_type_created_date.py} | 2 +- cvat/apps/quality_control/migrations/0001_initial.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename cvat/apps/engine/migrations/{0069_add_job_type_created_date.py => 0070_add_job_type_created_date.py} (97%) diff --git a/cvat/apps/engine/migrations/0069_add_job_type_created_date.py b/cvat/apps/engine/migrations/0070_add_job_type_created_date.py similarity index 97% rename from cvat/apps/engine/migrations/0069_add_job_type_created_date.py rename to cvat/apps/engine/migrations/0070_add_job_type_created_date.py index 5b67720368b1..cd8230e04a51 100644 --- a/cvat/apps/engine/migrations/0069_add_job_type_created_date.py +++ b/cvat/apps/engine/migrations/0070_add_job_type_created_date.py @@ -17,7 +17,7 @@ def add_created_date_to_existing_jobs(apps, schema_editor): class Migration(migrations.Migration): dependencies = [ - ('engine', '0068_auto_20230418_0901'), + ('engine', '0069_auto_20230608_1915'), ] operations = [ diff --git a/cvat/apps/quality_control/migrations/0001_initial.py b/cvat/apps/quality_control/migrations/0001_initial.py index e96e9a7d8b11..492b237db487 100644 --- a/cvat/apps/quality_control/migrations/0001_initial.py +++ b/cvat/apps/quality_control/migrations/0001_initial.py @@ -8,7 +8,7 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ("engine", "0069_add_job_type_created_date"), + ("engine", "0070_add_job_type_created_date"), ] operations = [ From fbc8df2585ecc8467b3a21a1ea0d8db0fd845f25 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 9 Jun 2023 14:56:48 +0300 Subject: [PATCH 248/257] Implement support for job annotation in lambda --- cvat/apps/lambda_manager/serializers.py | 45 +++++ cvat/apps/lambda_manager/tests/test_lambda.py | 24 +++ cvat/apps/lambda_manager/views.py | 169 +++++++++++++----- 3 files changed, 191 insertions(+), 47 deletions(-) create mode 100644 cvat/apps/lambda_manager/serializers.py diff --git a/cvat/apps/lambda_manager/serializers.py b/cvat/apps/lambda_manager/serializers.py new file mode 100644 index 000000000000..06a8732a2eed --- /dev/null +++ b/cvat/apps/lambda_manager/serializers.py @@ -0,0 +1,45 @@ +# Copyright (C) 2023 CVAT.ai Corporation +# +# SPDX-License-Identifier: MIT + +from rest_framework import serializers + + +class LabelMappingEntrySerializer(serializers.DictField): + name = serializers.CharField() + +class FunctionCallRequestSerializer(serializers.Serializer): + function = serializers.CharField(help_text="The name of the function to execute") + + task = serializers.IntegerField(help_text="The id of the task to annotate") + job = serializers.IntegerField(required=False, help_text="The id of the job to annotate") + + quality = serializers.ChoiceField(choices=['compressed', 'original'], default="original", + help_text="The quality of the images to use in the model run" + ) + cleanup = serializers.BooleanField(default=False) + convMaskToPoly = serializers.BooleanField(default=False) # TODO: use lowercase naming + threshold = serializers.FloatField(required=False) + mapping = serializers.DictField(child=LabelMappingEntrySerializer(), required=False, + help_text="Label mapping from the model to the task labels" + ) + max_distance = serializers.IntegerField(required=False) + +class FunctionSerializer(serializers.Serializer): + id = serializers.CharField(help_text="The name of the function") + + task = serializers.IntegerField(help_text="The id of the task") + job = serializers.IntegerField(required=False, help_text="The id of the job") + + threshold = serializers.FloatField(required=False) + +class FunctionCallSerializer(serializers.Serializer): + id = serializers.CharField(help_text="Request id") + + function = FunctionSerializer() + status = serializers.CharField() + progress = serializers.IntegerField(default=0) + enqueued = serializers.DateTimeField() + started = serializers.DateTimeField() + ended = serializers.DateTimeField() + exc_info = serializers.CharField() diff --git a/cvat/apps/lambda_manager/tests/test_lambda.py b/cvat/apps/lambda_manager/tests/test_lambda.py index b162b9a5906d..026baf7548c8 100644 --- a/cvat/apps/lambda_manager/tests/test_lambda.py +++ b/cvat/apps/lambda_manager/tests/test_lambda.py @@ -1157,6 +1157,30 @@ def test_can_run_function_on_whole_task(self): } ) + def test_can_run_function_on_whole_job(self): + data = self.common_request_data.copy() + job = self.jobs[3] + data["job"] = job["id"] + self._run_function(self.function_id, data, self.user) + + response = self._get_request(f'/api/tasks/{self.task["id"]}/annotations', self.admin) + self.assertEqual(response.status_code, status.HTTP_200_OK) + annotations = response.json() + + self.assertEqual(len(annotations["tags"]), 0) + self.assertEqual(len(annotations["tracks"]), 0) + + requested_frame_range = range(job["start_frame"], job["stop_frame"] + 1) + self.assertEqual( + { + frame: 1 for frame in requested_frame_range + }, + { + frame: len(list(group)) + for frame, group in groupby(annotations["shapes"], key=lambda a: a["frame"]) + } + ) + def test_can_run_interactor_on_valid_task_frame(self): data = self.common_request_data.copy() requested_frame = self.task_rel_frame_range[4] diff --git a/cvat/apps/lambda_manager/views.py b/cvat/apps/lambda_manager/views.py index 4308cc3c2ea5..50523c3f49f1 100644 --- a/cvat/apps/lambda_manager/views.py +++ b/cvat/apps/lambda_manager/views.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: MIT +from __future__ import annotations + import base64 import json import os @@ -34,6 +36,7 @@ from cvat.apps.engine.frame_provider import FrameProvider from cvat.apps.engine.models import Job, ShapeType, SourceType, Task from cvat.apps.engine.serializers import LabeledDataSerializer +from cvat.apps.lambda_manager.serializers import FunctionCallRequestSerializer, FunctionCallSerializer from cvat.utils.http import make_requests_session from cvat.apps.iam.permissions import LambdaPermission from cvat.apps.iam.filters import ORGANIZATION_OPEN_API_PARAMETERS @@ -418,7 +421,11 @@ def get_jobs(self): return [LambdaJob(job) for job in jobs if job.meta.get("lambda")] - def enqueue(self, lambda_func, threshold, task, quality, mapping, cleanup, conv_mask_to_poly, max_distance): + def enqueue(self, + lambda_func, threshold, task, quality, mapping, cleanup, conv_mask_to_poly, max_distance, + *, + job: Optional[int] = None + ) -> LambdaJob: jobs = self.get_jobs() # It is still possible to run several concurrent jobs for the same task. # But the race isn't critical. The filtration is just a light-weight @@ -433,12 +440,13 @@ def enqueue(self, lambda_func, threshold, task, quality, mapping, cleanup, conv_ # with invocation of non-trivial functions. For example, it cannot run # staticmethod, it cannot run a callable class. Thus I provide an object # which has __call__ function. - job = queue.create_job(LambdaJob(None), + rq_job = queue.create_job(LambdaJob(None), meta = { "lambda": True }, kwargs = { "function": lambda_func, "threshold": threshold, "task": task, + "job": job, "quality": quality, "cleanup": cleanup, "conv_mask_to_poly": conv_mask_to_poly, @@ -446,18 +454,18 @@ def enqueue(self, lambda_func, threshold, task, quality, mapping, cleanup, conv_ "max_distance": max_distance }) - queue.enqueue_job(job) + queue.enqueue_job(rq_job) - return LambdaJob(job) + return LambdaJob(rq_job) def fetch_job(self, pk): queue = self._get_queue() - job = queue.fetch_job(pk) - if job is None or not job.meta.get("lambda"): + rq_job = queue.fetch_job(pk) + if rq_job is None or not rq_job.meta.get("lambda"): raise ValidationError("{} lambda job is not found".format(pk), code=status.HTTP_404_NOT_FOUND) - return LambdaJob(job) + return LambdaJob(rq_job) class LambdaJob: def __init__(self, job): @@ -513,8 +521,19 @@ def is_scheduled(self): def delete(self): self.job.delete() - @staticmethod - def _call_detector(function, db_task, labels, quality, threshold, mapping, conv_mask_to_poly): + @classmethod + def _call_detector( + cls, + function: LambdaFunction, + db_task: Task, + labels: Dict[str, Dict[str, Any]], + quality: str, + threshold: float, + mapping: Optional[Dict[str, str]], + conv_mask_to_poly: bool, + *, + db_job: Optional[Job] = None + ): class Results: def __init__(self, task_id): self.task_id = task_id @@ -543,14 +562,28 @@ def reset(self): results = Results(db_task.id) - for frame in range(db_task.data.size): + if db_job: + task_data = db_task.data + data_start_frame = task_data.start_frame + step = task_data.get_frame_step() + frame_set = [ + (abs_id - data_start_frame) // step + for abs_id in db_job.segment.frame_set + ] + else: + frame_set = range(db_task.data.size) + + for frame in frame_set: if frame in db_task.data.deleted_frames: continue - annotations = function.invoke(db_task, data={ + + annotations = function.invoke(db_task, db_job=db_job, data={ "frame": frame, "quality": quality, "mapping": mapping, - "threshold": threshold }) + "threshold": threshold + }) + progress = (frame + 1) / db_task.data.size - if not LambdaJob._update_progress(progress): + if not cls._update_progress(progress): break for anno in annotations: @@ -594,7 +627,7 @@ def reset(self): results.append_shape(shape) - # Accumulate data during 100 frames before sumbitting results. + # Accumulate data during 100 frames before submitting results. # It is optimization to make fewer calls to our server. Also # it isn't possible to keep all results in memory. if frame and frame % 100 == 0: @@ -613,9 +646,17 @@ def _update_progress(progress): return job.get_status() - - @staticmethod - def _call_reid(function, db_task, quality, threshold, max_distance): + @classmethod + def _call_reid( + cls, + function: LambdaFunction, + db_task: Task, + quality: str, + threshold: float, + max_distance: int, + *, + db_job: Optional[Job] = None + ): data = dm.task.get_task_data(db_task.id) boxes_by_frame = [[] for _ in range(db_task.data.size)] shapes_without_boxes = [] @@ -636,7 +677,7 @@ def _call_reid(function, db_task, quality, threshold, max_distance): boxes1 = boxes_by_frame[frame + 1] if boxes0 and boxes1: - matching = function.invoke(db_task, data={ + matching = function.invoke(db_task, db_job=db_job, data={ "frame0": frame, "frame1": frame + 1, "quality": quality, "boxes0": boxes0, "boxes1": boxes1, "threshold": threshold, "max_distance": max_distance}) @@ -694,12 +735,24 @@ def _call_reid(function, db_task, quality, threshold, max_distance): if serializer.is_valid(raise_exception=True): dm.task.put_task_data(db_task.id, serializer.data) - @staticmethod - def __call__(function, task, quality, cleanup, **kwargs): + @classmethod + def __call__(cls, function, task: int, quality: str, cleanup: bool, **kwargs): # TODO: need logging - db_task = Task.objects.get(pk=task) + db_job = None + if job := kwargs.get('job'): + db_job = Job.objects.select_related('segment', 'segment__task').get(pk=job) + db_task = db_job.segment.task + else: + db_task = Task.objects.get(pk=task) + if cleanup: - dm.task.delete_task_data(db_task.id) + if db_job: + dm.task.delete_job_data(db_job.id) + elif db_task: + dm.task.delete_task_data(db_task.id) + else: + assert False + db_labels = (db_task.project.label_set if db_task.project_id else db_task.label_set).prefetch_related("attributespec_set").all() labels = {} for label in db_labels: @@ -708,11 +761,12 @@ def __call__(function, task, quality, cleanup, **kwargs): labels[label.name]['attributes'][attr['name']] = attr['id'] if function.kind == LambdaType.DETECTOR: - LambdaJob._call_detector(function, db_task, labels, quality, - kwargs.get("threshold"), kwargs.get("mapping"), kwargs.get("conv_mask_to_poly")) + cls._call_detector(function, db_task, labels, quality, + kwargs.get("threshold"), kwargs.get("mapping"), kwargs.get("conv_mask_to_poly"), + db_job=db_job) elif function.kind == LambdaType.REID: - LambdaJob._call_reid(function, db_task, quality, - kwargs.get("threshold"), kwargs.get("max_distance")) + cls._call_reid(function, db_task, quality, + kwargs.get("threshold"), kwargs.get("max_distance"), db_job=db_job) def return_response(success_code=status.HTTP_200_OK): def wrap_response(func): @@ -823,14 +877,25 @@ def call(self, request, func_id): # specify correct type OpenApiParameter('id', location=OpenApiParameter.PATH, type=OpenApiTypes.INT, description='Request id'), - ]), + ], + responses={ + '200': FunctionCallSerializer + } + ), list=extend_schema( operation_id='lambda_list_requests', - summary='Method returns a list of requests'), - #TODO + summary='Method returns a list of requests', + responses={ + '200': FunctionCallSerializer(many=True) + } + ), create=extend_schema( parameters=ORGANIZATION_OPEN_API_PARAMETERS, - summary='Method calls the function' + summary='Method calls the function', + request=FunctionCallRequestSerializer, + responses={ + '200': FunctionCallSerializer + } ), delete=extend_schema(summary='Method cancels the request') ) @@ -855,47 +920,57 @@ def list(self, request): task_ids = set(queryset.values_list("id", flat=True)) queue = LambdaQueue() - return [job.to_dict() for job in queue.get_jobs() if job.get_task() in task_ids] + rq_jobs = [job.to_dict() for job in queue.get_jobs() if job.get_task() in task_ids] + + response_serializer = FunctionCallSerializer(rq_jobs, many=True) + return response_serializer.data @return_response() def create(self, request): + request_serializer = FunctionCallRequestSerializer(data=request.data) + request_serializer.is_valid(raise_exception=True) + request_data = request_serializer.validated_data + try: - function = request.data['function'] - threshold = request.data.get('threshold') - task = request.data['task'] - quality = request.data.get("quality") - cleanup = request.data.get('cleanup', False) - conv_mask_to_poly = request.data.get('convMaskToPoly', False) - mapping = request.data.get('mapping') - max_distance = request.data.get('max_distance') + function = request_data['function'] + threshold = request_data.get('threshold') + task = request_data['task'] + job = request_data.get('job', None) + quality = request_data.get("quality") + cleanup = request_data.get('cleanup', False) + conv_mask_to_poly = request_data.get('convMaskToPoly', False) + mapping = request_data.get('mapping') + max_distance = request_data.get('max_distance') except KeyError as err: raise ValidationError( - '`{}` lambda function was run '.format(request.data.get('function', 'undefined')) + + '`{}` lambda function was run '.format(request_data.get('function', 'undefined')) + 'with wrong arguments ({})'.format(str(err)), code=status.HTTP_400_BAD_REQUEST) gateway = LambdaGateway() queue = LambdaQueue() lambda_func = gateway.get(function) - job = queue.enqueue(lambda_func, threshold, task, quality, - mapping, cleanup, conv_mask_to_poly, max_distance) + rq_job = queue.enqueue(lambda_func, threshold, task, quality, + mapping, cleanup, conv_mask_to_poly, max_distance, job=job) - return job.to_dict() + response_serializer = FunctionCallSerializer(rq_job.to_dict()) + return response_serializer.data @return_response() def retrieve(self, request, pk): self.check_object_permissions(request, pk) queue = LambdaQueue() - job = queue.fetch_job(pk) + rq_job = queue.fetch_job(pk) - return job.to_dict() + response_serializer = FunctionCallSerializer(rq_job.to_dict()) + return response_serializer.data @return_response(status.HTTP_204_NO_CONTENT) def delete(self, request, pk): self.check_object_permissions(request, pk) queue = LambdaQueue() - job = queue.fetch_job(pk) - job.delete() + rq_job = queue.fetch_job(pk) + rq_job.delete() def ONNXDetector(request): dirname = os.path.join(settings.STATIC_ROOT, 'lambda_manager') From d69cb1898fc2945470842e158b50998e699696ba Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 9 Jun 2023 16:30:50 +0300 Subject: [PATCH 249/257] t --- cvat/apps/lambda_manager/tests/test_lambda.py | 41 +++++++++++++++++++ cvat/apps/lambda_manager/views.py | 23 +++++++---- 2 files changed, 56 insertions(+), 8 deletions(-) diff --git a/cvat/apps/lambda_manager/tests/test_lambda.py b/cvat/apps/lambda_manager/tests/test_lambda.py index 026baf7548c8..24da31c39453 100644 --- a/cvat/apps/lambda_manager/tests/test_lambda.py +++ b/cvat/apps/lambda_manager/tests/test_lambda.py @@ -1099,6 +1099,8 @@ def setUp(self): owner=self.user ) self.task_rel_frame_range = range(len(range(start_frame, stop_frame, frame_step))) + self.start_frame = start_frame + self.frame_step = frame_step self.jobs = get_paginated_collection(lambda page: self._get_request( @@ -1181,6 +1183,45 @@ def test_can_run_function_on_whole_job(self): } ) + def test_can_run_function_on_gt_job(self): + requested_frame_range = self.task_rel_frame_range[::3] + response = self._post_request("/api/jobs", self.admin, data={ + "type": "ground_truth", + "task_id": self.task["id"], + "frame_selection_method": "manual", + "frames": [ + self.start_frame + frame * self.frame_step for frame in requested_frame_range + ], + }) + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + job = response.json() + + data = self.common_request_data.copy() + data["job"] = job["id"] + self._run_function(self.function_id, data, self.user) + + response = self._get_request(f'/api/jobs/{job["id"]}/annotations', self.admin) + self.assertEqual(response.status_code, status.HTTP_200_OK) + annotations = response.json() + + self.assertEqual(len(annotations["tags"]), 0) + self.assertEqual(len(annotations["tracks"]), 0) + + self.assertEqual( + { + frame: 1 for frame in requested_frame_range + }, + { + frame: len(list(group)) + for frame, group in groupby(annotations["shapes"], key=lambda a: a["frame"]) + } + ) + + response = self._get_request(f'/api/tasks/{self.task["id"]}/annotations', self.admin) + self.assertEqual(response.status_code, status.HTTP_200_OK) + annotations = response.json() + self.assertEqual(annotations, {'version': 0, 'tags': [], 'shapes': [], 'tracks': []}) + def test_can_run_interactor_on_valid_task_frame(self): data = self.common_request_data.copy() requested_frame = self.task_rel_frame_range[4] diff --git a/cvat/apps/lambda_manager/views.py b/cvat/apps/lambda_manager/views.py index 50523c3f49f1..7064f9de00f5 100644 --- a/cvat/apps/lambda_manager/views.py +++ b/cvat/apps/lambda_manager/views.py @@ -535,8 +535,9 @@ def _call_detector( db_job: Optional[Job] = None ): class Results: - def __init__(self, task_id): + def __init__(self, task_id, job_id: Optional[int] = None): self.task_id = task_id + self.job_id = job_id self.reset() def append_shape(self, shape): @@ -546,11 +547,17 @@ def append_tag(self, tag): self.data["tags"].append(tag) def submit(self): - if not self.is_empty(): - serializer = LabeledDataSerializer(data=self.data) - if serializer.is_valid(raise_exception=True): + if self.is_empty(): + return + + serializer = LabeledDataSerializer(data=self.data) + if serializer.is_valid(raise_exception=True): + if self.job_id: + dm.task.patch_job_data(self.job_id, serializer.data, "create") + else: dm.task.patch_task_data(self.task_id, serializer.data, "create") - self.reset() + + self.reset() def is_empty(self): return not (self.data["tags"] or self.data["shapes"] or self.data["tracks"]) @@ -560,16 +567,16 @@ def reset(self): # FIXME: need to provide the correct version here self.data = {"version": 0, "tags": [], "shapes": [], "tracks": []} - results = Results(db_task.id) + results = Results(db_task.id, job_id=db_job.id if db_job else None) if db_job: task_data = db_task.data data_start_frame = task_data.start_frame step = task_data.get_frame_step() - frame_set = [ + frame_set = sorted( (abs_id - data_start_frame) // step for abs_id in db_job.segment.frame_set - ] + ) else: frame_set = range(db_task.data.size) From 8a4ed6c7a4b51a05645213e75a66ba541a329ddd Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 9 Jun 2023 17:25:03 +0300 Subject: [PATCH 250/257] Fix gt job frames in complex setups --- cvat/apps/engine/serializers.py | 4 +-- cvat/apps/engine/views.py | 2 +- tests/python/rest_api/test_jobs.py | 56 ++++++++++++++++++++++++++++-- 3 files changed, 57 insertions(+), 5 deletions(-) diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index 06f48f0eae23..1c4d0081cd7c 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -672,8 +672,8 @@ def create(self, validated_data): ) segment = models.Segment.objects.create( - start_frame=task.data.start_frame, - stop_frame=task.data.stop_frame, + start_frame=0, + stop_frame=task.data.size, frames=frames, task=task, type=models.SegmentType.SPECIFIC_FRAMES, diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index 520673d2bde3..e9d884e8b37e 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -1915,7 +1915,7 @@ def metadata(self, request, pk): stop_frame = db_job.segment.stop_frame frame_step = db_data.get_frame_step() data_start_frame = db_data.start_frame + start_frame * frame_step - data_stop_frame = db_data.start_frame + stop_frame * frame_step + data_stop_frame = min(db_data.stop_frame, db_data.start_frame + stop_frame * frame_step) frame_set = db_job.segment.frame_set if request.method == 'PATCH': diff --git a/tests/python/rest_api/test_jobs.py b/tests/python/rest_api/test_jobs.py index 2df0ca5841aa..264722852704 100644 --- a/tests/python/rest_api/test_jobs.py +++ b/tests/python/rest_api/test_jobs.py @@ -21,8 +21,9 @@ from PIL import Image from shared.utils.config import make_api_client +from shared.utils.helpers import generate_image_files -from .utils import CollectionSimpleFilterTestBase, compare_annotations, export_dataset +from .utils import CollectionSimpleFilterTestBase, compare_annotations, create_task, export_dataset def get_job_staff(job, tasks, projects): @@ -577,7 +578,9 @@ def test_can_get_gt_job_meta(self, admin_user, tasks, task_mode): assert job_frame_ids == gt_job_meta.included_frames # The frames themselves are the same as in the whole range - # this is required in UI implementation + # this is required by the UI implementation + assert task_meta.start_frame == gt_job_meta.start_frame + assert task_meta.stop_frame == gt_job_meta.stop_frame if task_mode == "annotation": assert ( len(gt_job_meta.frames) @@ -588,6 +591,52 @@ def test_can_get_gt_job_meta(self, admin_user, tasks, task_mode): else: assert False + @pytest.mark.usefixtures("restore_db_per_function") + def test_can_get_gt_job_meta_with_complex_frame_setup(self, admin_user): + image_count = 50 + start_frame = 3 + stop_frame = image_count - 4 + frame_step = 5 + + images = generate_image_files(image_count) + + task_id, _ = create_task( + admin_user, + spec={ + "name": "test complex frame setup", + "labels": [{"name": "cat"}], + }, + data={ + "image_quality": 75, + "start_frame": start_frame, + "stop_frame": stop_frame, + "frame_filter": f"step={frame_step}", + "client_files": images, + "sorting_method": "predefined", + }, + ) + + task_frame_ids = range(start_frame, stop_frame, frame_step) + job_frame_ids = list(task_frame_ids[::3]) + gt_job = self._get_or_create_gt_job(admin_user, task_id, job_frame_ids) + + with make_api_client(admin_user) as api_client: + (gt_job_meta, _) = api_client.jobs_api.retrieve_data_meta(gt_job.id) + + # The size is adjusted by the frame step and included frames + assert len(job_frame_ids) == gt_job_meta.size + assert job_frame_ids == gt_job_meta.included_frames + + # The frames themselves are the same as in the whole range + # with placeholders in the frames outside the job. + # This is required by the UI implementation + assert start_frame == gt_job_meta.start_frame + assert max(task_frame_ids) == gt_job_meta.stop_frame + assert [frame_info["name"] for frame_info in gt_job_meta.frames] == [ + images[frame].name if frame in job_frame_ids else "placeholder.jpg" + for frame in task_frame_ids + ] + @pytest.mark.parametrize("task_mode", ["annotation", "interpolation"]) @pytest.mark.parametrize("quality", ["compressed", "original"]) def test_can_get_gt_job_chunk(self, admin_user, tasks, task_mode, quality): @@ -622,6 +671,9 @@ def test_can_get_gt_job_chunk(self, admin_user, tasks, task_mode, quality): ) included_frames = job_frame_ids + # The frame count is the same as in the whole range + # with placeholders in the frames outside the job. + # This is required by the UI implementation with zipfile.ZipFile(chunk_file) as chunk: assert set(chunk.namelist()) == set("{:06d}.jpeg".format(i) for i in frame_range) From 3c423f4be2e94e97fa3014afb4744e5f47b256e6 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 9 Jun 2023 18:00:46 +0300 Subject: [PATCH 251/257] Update changelog --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ba14f1396d11..cb5a9409317c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,9 +8,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## \[2.5.0] - Unreleased ### Added - \[API\] An option to supply custom file ordering for task data uploads () -- New option ``semi-auto`` is available as annotations source () +- New option ``semi-auto`` is available as annotations source () - \[API\] Support for Ground Truth job creation and removal () - \[API\] Task quality estimation endpoints () +- \[API\] An option to run autoannotation on a job () ### Changed - Allowed to use dataset manifest for the `predefined` sorting method for task data () From 8023dfe08726ebbc0d450bbdb8b3c1e44c512156 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 9 Jun 2023 19:21:43 +0300 Subject: [PATCH 252/257] Fix stop_frame --- cvat/apps/engine/serializers.py | 2 +- tests/python/rest_api/test_jobs.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/cvat/apps/engine/serializers.py b/cvat/apps/engine/serializers.py index 1c4d0081cd7c..90d5ea8a4134 100644 --- a/cvat/apps/engine/serializers.py +++ b/cvat/apps/engine/serializers.py @@ -673,7 +673,7 @@ def create(self, validated_data): segment = models.Segment.objects.create( start_frame=0, - stop_frame=task.data.size, + stop_frame=task.data.size - 1, frames=frames, task=task, type=models.SegmentType.SPECIFIC_FRAMES, diff --git a/tests/python/rest_api/test_jobs.py b/tests/python/rest_api/test_jobs.py index 264722852704..27d6d1c4f11b 100644 --- a/tests/python/rest_api/test_jobs.py +++ b/tests/python/rest_api/test_jobs.py @@ -573,6 +573,10 @@ def test_can_get_gt_job_meta(self, admin_user, tasks, task_mode): with make_api_client(user) as api_client: (gt_job_meta, _) = api_client.jobs_api.retrieve_data_meta(gt_job.id) + # These values are relative to the resulting task frames, unlike meta values + assert 0 == gt_job.start_frame + assert task_meta.size - 1 == gt_job.stop_frame + # The size is adjusted by the frame step and included frames assert job_frame_count == gt_job_meta.size assert job_frame_ids == gt_job_meta.included_frames @@ -623,6 +627,10 @@ def test_can_get_gt_job_meta_with_complex_frame_setup(self, admin_user): with make_api_client(admin_user) as api_client: (gt_job_meta, _) = api_client.jobs_api.retrieve_data_meta(gt_job.id) + # These values are relative to the resulting task frames, unlike meta values + assert 0 == gt_job.start_frame + assert len(task_frame_ids) - 1 == gt_job.stop_frame + # The size is adjusted by the frame step and included frames assert len(job_frame_ids) == gt_job_meta.size assert job_frame_ids == gt_job_meta.included_frames From 70074e461d7598d24a8aed4fc7d2db0f2a1879b4 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 9 Jun 2023 19:22:09 +0300 Subject: [PATCH 253/257] Fix schema and add more tests --- cvat/apps/lambda_manager/tests/test_lambda.py | 38 +++++++++++++++++++ cvat/apps/lambda_manager/views.py | 12 ++++-- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/cvat/apps/lambda_manager/tests/test_lambda.py b/cvat/apps/lambda_manager/tests/test_lambda.py index 24da31c39453..81d014a78e02 100644 --- a/cvat/apps/lambda_manager/tests/test_lambda.py +++ b/cvat/apps/lambda_manager/tests/test_lambda.py @@ -1222,6 +1222,44 @@ def test_can_run_function_on_gt_job(self): annotations = response.json() self.assertEqual(annotations, {'version': 0, 'tags': [], 'shapes': [], 'tracks': []}) + def test_function_run_on_task_does_not_affect_gt_job(self): + requested_frame_range = self.task_rel_frame_range[::3] + response = self._post_request("/api/jobs", self.admin, data={ + "type": "ground_truth", + "task_id": self.task["id"], + "frame_selection_method": "manual", + "frames": [ + self.start_frame + frame * self.frame_step for frame in requested_frame_range + ], + }) + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + job = response.json() + + data = self.common_request_data.copy() + self._run_function(self.function_id, data, self.user) + + response = self._get_request(f'/api/tasks/{self.task["id"]}/annotations', self.admin) + self.assertEqual(response.status_code, status.HTTP_200_OK) + annotations = response.json() + + self.assertEqual(len(annotations["tags"]), 0) + self.assertEqual(len(annotations["tracks"]), 0) + + self.assertEqual( + { + frame: 1 for frame in requested_frame_range + }, + { + frame: len(list(group)) + for frame, group in groupby(annotations["shapes"], key=lambda a: a["frame"]) + } + ) + + response = self._get_request(f'/api/jobs/{job["id"]}/annotations', self.admin) + self.assertEqual(response.status_code, status.HTTP_200_OK) + annotations = response.json() + self.assertEqual(annotations, {'version': 0, 'tags': [], 'shapes': [], 'tracks': []}) + def test_can_run_interactor_on_valid_task_frame(self): data = self.common_request_data.copy() requested_frame = self.task_rel_frame_range[4] diff --git a/cvat/apps/lambda_manager/views.py b/cvat/apps/lambda_manager/views.py index 7064f9de00f5..bfa577aa3f6a 100644 --- a/cvat/apps/lambda_manager/views.py +++ b/cvat/apps/lambda_manager/views.py @@ -881,8 +881,7 @@ def call(self, request, func_id): operation_id='lambda_retrieve_requests', summary='Method returns the status of the request', parameters=[ - # specify correct type - OpenApiParameter('id', location=OpenApiParameter.PATH, type=OpenApiTypes.INT, + OpenApiParameter('id', location=OpenApiParameter.PATH, type=OpenApiTypes.STR, description='Request id'), ], responses={ @@ -904,7 +903,14 @@ def call(self, request, func_id): '200': FunctionCallSerializer } ), - delete=extend_schema(summary='Method cancels the request') + delete=extend_schema( + operation_id='lambda_delete_requests', + summary='Method cancels the request', + parameters=[ + OpenApiParameter('id', location=OpenApiParameter.PATH, type=OpenApiTypes.STR, + description='Request id'), + ] + ), ) class RequestViewSet(viewsets.ViewSet): iam_organization_field = None From 4b1221d118deb19afd79fffdb14fe20cf6cb32db Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 12 Jun 2023 17:58:00 +0300 Subject: [PATCH 254/257] Add support for reid, add tests --- cvat/apps/engine/tests/utils.py | 8 +- cvat/apps/lambda_manager/tests/test_lambda.py | 277 +++++++++++++++--- cvat/apps/lambda_manager/views.py | 60 ++-- 3 files changed, 288 insertions(+), 57 deletions(-) diff --git a/cvat/apps/engine/tests/utils.py b/cvat/apps/engine/tests/utils.py index 71ee4031877e..f0b71463a202 100644 --- a/cvat/apps/engine/tests/utils.py +++ b/cvat/apps/engine/tests/utils.py @@ -4,7 +4,7 @@ from contextlib import contextmanager from io import BytesIO -from typing import Callable, Iterator, TypeVar +from typing import Any, Callable, Dict, Iterator, Sequence, TypeVar import itertools import logging import os @@ -124,3 +124,9 @@ def get_paginated_collection( break return values + + +def filter_dict( + d: Dict[str, Any], *, keep: Sequence[str] = None, drop: Sequence[str] = None +) -> Dict[str, Any]: + return {k: v for k, v in d.items() if (not keep or k in keep) and (not drop or k not in drop)} diff --git a/cvat/apps/lambda_manager/tests/test_lambda.py b/cvat/apps/lambda_manager/tests/test_lambda.py index 81d014a78e02..1ad52c9c0e1f 100644 --- a/cvat/apps/lambda_manager/tests/test_lambda.py +++ b/cvat/apps/lambda_manager/tests/test_lambda.py @@ -18,15 +18,15 @@ from rest_framework import status from rest_framework.test import APIClient, APITestCase -from cvat.apps.engine.tests.utils import get_paginated_collection +from cvat.apps.engine.tests.utils import filter_dict, get_paginated_collection LAMBDA_ROOT_PATH = '/api/lambda' LAMBDA_FUNCTIONS_PATH = f'{LAMBDA_ROOT_PATH}/functions' LAMBDA_REQUESTS_PATH = f'{LAMBDA_ROOT_PATH}/requests' id_function_detector = "test-openvino-omz-public-yolo-v3-tf" -id_function_reid_response_data = "test-openvino-omz-intel-person-reidentification-retail-0300" -id_function_reid_response_no_data = "test-openvino-omz-intel-person-reidentification-retail-1234" +id_function_reid_with_response_data = "test-openvino-omz-intel-person-reidentification-retail-0300" +id_function_reid_with_no_response_data = "test-openvino-omz-intel-person-reidentification-retail-1234" id_function_interactor = "test-openvino-dextr" id_function_tracker = "test-pth-foolwood-siammask" id_function_non_type = "test-model-has-non-type" @@ -110,7 +110,7 @@ def _invoke_function(self, func, payload): func_id = func.id type_function = functions["positive"][func_id]["metadata"]["annotations"]["type"] if type_function == "reid": - if func_id == id_function_reid_response_data: + if func_id == id_function_reid_with_response_data: data = [0, 1] else: data = [] @@ -234,6 +234,14 @@ def _patch_request(self, path, user, data, *, org_id=None): return response + def _put_request(self, path, user, data, *, org_id=None): + data = json.dumps(data) + with ForceLogin(user, self.client): + response = self.client.put(path, data=data, content_type='application/json', + QUERY_STRING=f'org_id={org_id}' if org_id is not None else '') + return response + + def _check_expected_keys_in_response_function(self, data): kind = data["kind"] if kind == "interactor": @@ -295,7 +303,7 @@ def test_api_v2_lambda_functions_list_wrong(self, mock_http): def test_api_v2_lambda_functions_read(self): ids_functions = [id_function_detector, id_function_interactor,\ - id_function_tracker, id_function_reid_response_data, \ + id_function_tracker, id_function_reid_with_response_data, \ id_function_non_type, id_function_wrong_type, id_function_unknown_type] for id_func in ids_functions: @@ -438,7 +446,7 @@ def test_api_v2_lambda_requests_delete_not_finished_request(self): def test_api_v2_lambda_requests_create(self): ids_functions = [id_function_detector, id_function_interactor, id_function_tracker, \ - id_function_reid_response_data, id_function_detector, id_function_reid_response_no_data, \ + id_function_reid_with_response_data, id_function_detector, id_function_reid_with_no_response_data, \ id_function_non_type, id_function_wrong_type, id_function_unknown_type] for id_func in ids_functions: @@ -773,22 +781,22 @@ def test_api_v2_lambda_functions_create_reid(self): "quality": None, } - response = self._post_request(f"{LAMBDA_FUNCTIONS_PATH}/{id_function_reid_response_data}", self.admin, data_main_task) + response = self._post_request(f"{LAMBDA_FUNCTIONS_PATH}/{id_function_reid_with_response_data}", self.admin, data_main_task) self.assertEqual(response.status_code, status.HTTP_200_OK) - response = self._post_request(f"{LAMBDA_FUNCTIONS_PATH}/{id_function_reid_response_data}", self.user, data_assigneed_to_user_task) + response = self._post_request(f"{LAMBDA_FUNCTIONS_PATH}/{id_function_reid_with_response_data}", self.user, data_assigneed_to_user_task) self.assertEqual(response.status_code, status.HTTP_200_OK) - response = self._post_request(f"{LAMBDA_FUNCTIONS_PATH}/{id_function_reid_response_data}", None, data_main_task) + response = self._post_request(f"{LAMBDA_FUNCTIONS_PATH}/{id_function_reid_with_response_data}", None, data_main_task) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) - response = self._post_request(f"{LAMBDA_FUNCTIONS_PATH}/{id_function_reid_response_no_data}", self.admin, data_main_task) + response = self._post_request(f"{LAMBDA_FUNCTIONS_PATH}/{id_function_reid_with_no_response_data}", self.admin, data_main_task) self.assertEqual(response.status_code, status.HTTP_200_OK) - response = self._post_request(f"{LAMBDA_FUNCTIONS_PATH}/{id_function_reid_response_no_data}", self.user, data_assigneed_to_user_task) + response = self._post_request(f"{LAMBDA_FUNCTIONS_PATH}/{id_function_reid_with_no_response_data}", self.user, data_assigneed_to_user_task) self.assertEqual(response.status_code, status.HTTP_200_OK) - response = self._post_request(f"{LAMBDA_FUNCTIONS_PATH}/{id_function_reid_response_no_data}", None, data_main_task) + response = self._post_request(f"{LAMBDA_FUNCTIONS_PATH}/{id_function_reid_with_no_response_data}", None, data_main_task) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @@ -1049,8 +1057,8 @@ def _invoke_function(self, func, payload): func_id = func.id type_function = functions["positive"][func_id]["metadata"]["annotations"]["type"] if type_function == "reid": - if func_id == id_function_reid_response_data: - data = [0, 1] + if func_id == id_function_reid_with_response_data: + data = [0] else: data = [] elif type_function == "tracker": @@ -1083,6 +1091,7 @@ def setUp(self): frame_step = 5 start_frame = 3 stop_frame = image_count - 4 + segment_size = 2 data = self._generate_task_images(image_count) data["frame_filter"] = f"step={frame_step}" @@ -1093,7 +1102,7 @@ def setUp(self): task_spec={ 'name': 'test_task', 'labels': [{'name': 'car'}], - 'segment_size': 2 + 'segment_size': segment_size }, data=data, owner=self.user @@ -1101,6 +1110,14 @@ def setUp(self): self.task_rel_frame_range = range(len(range(start_frame, stop_frame, frame_step))) self.start_frame = start_frame self.frame_step = frame_step + self.segment_size = segment_size + + self.labels = get_paginated_collection(lambda page: + self._get_request( + f"/api/labels?task_id={self.task['id']}&page={page}&sort=id", + self.admin + ) + ) self.jobs = get_paginated_collection(lambda page: self._get_request( @@ -1109,13 +1126,15 @@ def setUp(self): ) ) - self.function_id = id_function_detector + self.detector_function_id = id_function_detector + self.reid_function_id = id_function_reid_with_response_data + self.common_request_data = { "task": self.task['id'], "cleanup": True, } - def _run_function(self, function_id, data, user): + def _run_offline_function(self, function_id, data, user): data["function"] = function_id response = self._post_request(LAMBDA_REQUESTS_PATH, user, data) self.assertEqual(response.status_code, status.HTTP_200_OK, response.content) @@ -1133,13 +1152,13 @@ def _wait_request(self, request_id: str) -> str: return request_status - def _run_interactor(self, function_id, data, user): + def _run_online_function(self, function_id, data, user): response = self._post_request(f'{LAMBDA_FUNCTIONS_PATH}/{function_id}', user, data) return response - def test_can_run_function_on_whole_task(self): + def test_can_run_offline_detector_function_on_whole_task(self): data = self.common_request_data.copy() - self._run_function(self.function_id, data, self.user) + self._run_offline_function(self.detector_function_id, data, self.user) response = self._get_request(f'/api/tasks/{self.task["id"]}/annotations', self.admin) self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -1159,11 +1178,69 @@ def test_can_run_function_on_whole_task(self): } ) - def test_can_run_function_on_whole_job(self): + def test_can_run_offline_reid_function_on_whole_task(self): + # Add starting shapes to be tracked on following frames + requested_frame_range = self.task_rel_frame_range + shape_template = { + 'attributes': [], + 'group': None, + 'label_id': self.labels[0]["id"], + 'occluded': False, + 'points': [0, 5, 5, 0], + 'source': 'manual', + 'type': 'rectangle', + 'z_order': 0, + } + response = self._put_request(f'/api/tasks/{self.task["id"]}/annotations', self.admin, data={ + 'tags': [], + 'shapes': [ + { 'frame': frame, **shape_template } + for frame in requested_frame_range + ], + 'tracks': [] + }) + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = self.common_request_data.copy() + data["cleanup"] = False # cleanup is not compatible with reid + self._run_offline_function(self.reid_function_id, data, self.user) + + response = self._get_request(f'/api/tasks/{self.task["id"]}/annotations', self.admin) + self.assertEqual(response.status_code, status.HTTP_200_OK) + annotations = response.json() + + self.assertEqual(len(annotations["tags"]), 0) + self.assertEqual(len(annotations["shapes"]), 0) + self.assertEqual( + [ + # The single track will be split by job segments + { + 'frame': job["start_frame"], + 'shapes': [ + { 'frame': frame, 'outside': frame > job["stop_frame"] } + for frame in requested_frame_range + if frame in range(job["start_frame"], job["stop_frame"] + self.segment_size) + ] + } + for job in sorted(self.jobs, key=lambda j: j["start_frame"]) + ], + [ + { + 'frame': track['frame'], + 'shapes': [ + filter_dict(shape, keep=['frame', 'outside']) + for shape in track["shapes"] + ] + } + for track in annotations['tracks'] + ] + ) + + def test_can_run_offline_detector_function_on_whole_job(self): data = self.common_request_data.copy() job = self.jobs[3] data["job"] = job["id"] - self._run_function(self.function_id, data, self.user) + self._run_offline_function(self.detector_function_id, data, self.user) response = self._get_request(f'/api/tasks/{self.task["id"]}/annotations', self.admin) self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -1183,7 +1260,66 @@ def test_can_run_function_on_whole_job(self): } ) - def test_can_run_function_on_gt_job(self): + def test_can_run_offline_reid_function_on_whole_job(self): + job = self.jobs[3] + requested_frame_range = range(job["start_frame"], job["stop_frame"] + 1) + + # Add starting shapes to be tracked on following frames + shape_template = { + 'attributes': [], + 'group': None, + 'label_id': self.labels[0]["id"], + 'occluded': False, + 'points': [0, 5, 5, 0], + 'source': 'manual', + 'type': 'rectangle', + 'z_order': 0, + } + response = self._put_request(f'/api/jobs/{job["id"]}/annotations', self.admin, data={ + 'tags': [], + 'shapes': [ + { 'frame': frame, **shape_template } + for frame in requested_frame_range + ], + 'tracks': [] + }) + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = self.common_request_data.copy() + data["cleanup"] = False # cleanup is not compatible with reid + data["job"] = job["id"] + self._run_offline_function(self.reid_function_id, data, self.user) + + response = self._get_request(f'/api/jobs/{job["id"]}/annotations', self.admin) + self.assertEqual(response.status_code, status.HTTP_200_OK) + annotations = response.json() + + self.assertEqual(len(annotations["tags"]), 0) + self.assertEqual(len(annotations["shapes"]), 0) + self.assertEqual( + [ + { + 'frame': job["start_frame"], + 'shapes': [ + { 'frame': frame, 'outside': frame > job["stop_frame"] } + for frame in requested_frame_range + if frame in range(job["start_frame"], job["stop_frame"] + self.segment_size) + ] + } + ], + [ + { + 'frame': track['frame'], + 'shapes': [ + filter_dict(shape, keep=['frame', 'outside']) + for shape in track["shapes"] + ] + } + for track in annotations['tracks'] + ] + ) + + def test_can_run_offline_detector_function_on_whole_gt_job(self): requested_frame_range = self.task_rel_frame_range[::3] response = self._post_request("/api/jobs", self.admin, data={ "type": "ground_truth", @@ -1198,7 +1334,7 @@ def test_can_run_function_on_gt_job(self): data = self.common_request_data.copy() data["job"] = job["id"] - self._run_function(self.function_id, data, self.user) + self._run_offline_function(self.detector_function_id, data, self.user) response = self._get_request(f'/api/jobs/{job["id"]}/annotations', self.admin) self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -1222,7 +1358,80 @@ def test_can_run_function_on_gt_job(self): annotations = response.json() self.assertEqual(annotations, {'version': 0, 'tags': [], 'shapes': [], 'tracks': []}) - def test_function_run_on_task_does_not_affect_gt_job(self): + def test_can_run_offline_reid_function_on_whole_gt_job(self): + requested_frame_range = self.task_rel_frame_range[::3] + response = self._post_request("/api/jobs", self.admin, data={ + "type": "ground_truth", + "task_id": self.task["id"], + "frame_selection_method": "manual", + "frames": [ + self.start_frame + frame * self.frame_step for frame in requested_frame_range + ], + }) + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + job = response.json() + + # Add starting shapes to be tracked on following frames + shape_template = { + 'attributes': [], + 'group': None, + 'label_id': self.labels[0]["id"], + 'occluded': False, + 'points': [0, 5, 5, 0], + 'source': 'manual', + 'type': 'rectangle', + 'z_order': 0, + } + response = self._put_request(f'/api/jobs/{job["id"]}/annotations', self.admin, data={ + 'tags': [], + 'shapes': [ + { 'frame': frame, **shape_template } + for frame in requested_frame_range + ], + 'tracks': [] + }) + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = self.common_request_data.copy() + data["cleanup"] = False # cleanup is not compatible with reid + data["job"] = job["id"] + self._run_offline_function(self.reid_function_id, data, self.user) + + response = self._get_request(f'/api/jobs/{job["id"]}/annotations', self.admin) + self.assertEqual(response.status_code, status.HTTP_200_OK) + annotations = response.json() + + self.assertEqual(len(annotations["tags"]), 0) + self.assertEqual(len(annotations["shapes"]), 0) + self.assertEqual( + [ + { + 'frame': job["start_frame"], + 'shapes': [ + { 'frame': frame, 'outside': frame > job["stop_frame"] } + for frame in requested_frame_range + if frame in range(job["start_frame"], job["stop_frame"] + self.segment_size) + ] + } + ], + [ + { + 'frame': track['frame'], + 'shapes': [ + filter_dict(shape, keep=['frame', 'outside']) + for shape in track["shapes"] + ] + } + for track in annotations['tracks'] + ] + ) + + response = self._get_request(f'/api/tasks/{self.task["id"]}/annotations', self.admin) + self.assertEqual(response.status_code, status.HTTP_200_OK) + annotations = response.json() + self.assertEqual(annotations, {'version': 0, 'tags': [], 'shapes': [], 'tracks': []}) + + def test_offline_function_run_on_task_does_not_affect_gt_job(self): requested_frame_range = self.task_rel_frame_range[::3] response = self._post_request("/api/jobs", self.admin, data={ "type": "ground_truth", @@ -1236,7 +1445,7 @@ def test_function_run_on_task_does_not_affect_gt_job(self): job = response.json() data = self.common_request_data.copy() - self._run_function(self.function_id, data, self.user) + self._run_offline_function(self.detector_function_id, data, self.user) response = self._get_request(f'/api/tasks/{self.task["id"]}/annotations', self.admin) self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -1260,46 +1469,46 @@ def test_function_run_on_task_does_not_affect_gt_job(self): annotations = response.json() self.assertEqual(annotations, {'version': 0, 'tags': [], 'shapes': [], 'tracks': []}) - def test_can_run_interactor_on_valid_task_frame(self): + def test_can_run_online_function_on_valid_task_frame(self): data = self.common_request_data.copy() requested_frame = self.task_rel_frame_range[4] data["frame"] = requested_frame - response = self._run_interactor(self.function_id, data, self.user) + response = self._run_online_function(self.detector_function_id, data, self.user) self.assertEqual(response.status_code, status.HTTP_200_OK) annotations = response.json() self.assertEqual(1, len(annotations)) - def test_can_run_interactor_on_invalid_task_frame(self): + def test_can_run_online_function_on_invalid_task_frame(self): data = self.common_request_data.copy() requested_frame = self.task_rel_frame_range[-1] + 1 data["frame"] = requested_frame - response = self._run_interactor(self.function_id, data, self.user) + response = self._run_online_function(self.detector_function_id, data, self.user) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - def test_can_run_interactor_on_valid_job_frame(self): + def test_can_run_online_function_on_valid_job_frame(self): data = self.common_request_data.copy() job = self.jobs[2] requested_frame = job["start_frame"] + 1 data["frame"] = requested_frame data["job"] = job["id"] - response = self._run_interactor(self.function_id, data, self.user) + response = self._run_online_function(self.detector_function_id, data, self.user) self.assertEqual(response.status_code, status.HTTP_200_OK) annotations = response.json() self.assertEqual(1, len(annotations)) - def test_can_run_interactor_on_invalid_job_frame(self): + def test_can_run_online_function_on_invalid_job_frame(self): data = self.common_request_data.copy() job = self.jobs[2] requested_frame = job["stop_frame"] + 1 data["frame"] = requested_frame data["job"] = job["id"] - response = self._run_interactor(self.function_id, data, self.user) + response = self._run_online_function(self.detector_function_id, data, self.user) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) diff --git a/cvat/apps/lambda_manager/views.py b/cvat/apps/lambda_manager/views.py index bfa577aa3f6a..4be1a19a68ac 100644 --- a/cvat/apps/lambda_manager/views.py +++ b/cvat/apps/lambda_manager/views.py @@ -36,7 +36,9 @@ from cvat.apps.engine.frame_provider import FrameProvider from cvat.apps.engine.models import Job, ShapeType, SourceType, Task from cvat.apps.engine.serializers import LabeledDataSerializer -from cvat.apps.lambda_manager.serializers import FunctionCallRequestSerializer, FunctionCallSerializer +from cvat.apps.lambda_manager.serializers import ( + FunctionCallRequestSerializer, FunctionCallSerializer +) from cvat.utils.http import make_requests_session from cvat.apps.iam.permissions import LambdaPermission from cvat.apps.iam.filters import ORGANIZATION_OPEN_API_PARAMETERS @@ -569,16 +571,7 @@ def reset(self): results = Results(db_task.id, job_id=db_job.id if db_job else None) - if db_job: - task_data = db_task.data - data_start_frame = task_data.start_frame - step = task_data.get_frame_step() - frame_set = sorted( - (abs_id - data_start_frame) // step - for abs_id in db_job.segment.frame_set - ) - else: - frame_set = range(db_task.data.size) + frame_set = cls._get_frame_set(db_task, db_job) for frame in frame_set: if frame in db_task.data.deleted_frames: @@ -653,6 +646,21 @@ def _update_progress(progress): return job.get_status() + @classmethod + def _get_frame_set(cls, db_task: Task, db_job: Optional[Job]): + if db_job: + task_data = db_task.data + data_start_frame = task_data.start_frame + step = task_data.get_frame_step() + frame_set = sorted( + (abs_id - data_start_frame) // step + for abs_id in db_job.segment.frame_set + ) + else: + frame_set = range(db_task.data.size) + + return frame_set + @classmethod def _call_reid( cls, @@ -664,8 +672,14 @@ def _call_reid( *, db_job: Optional[Job] = None ): - data = dm.task.get_task_data(db_task.id) - boxes_by_frame = [[] for _ in range(db_task.data.size)] + if db_job: + data = dm.task.get_job_data(db_job.id) + else: + data = dm.task.get_task_data(db_task.id) + + frame_set = cls._get_frame_set(db_task, db_job) + + boxes_by_frame = {frame: [] for frame in frame_set} shapes_without_boxes = [] for shape in data["shapes"]: if shape["type"] == str(ShapeType.RECTANGLE): @@ -674,18 +688,18 @@ def _call_reid( shapes_without_boxes.append(shape) paths = {} - for frame in range(db_task.data.size - 1): - boxes0 = boxes_by_frame[frame] + for i, (frame0, frame1) in enumerate(zip(frame_set[:-1], frame_set[1:])): + boxes0 = boxes_by_frame[frame0] for box in boxes0: if "path_id" not in box: path_id = len(paths) paths[path_id] = [box] box["path_id"] = path_id - boxes1 = boxes_by_frame[frame + 1] + boxes1 = boxes_by_frame[frame1] if boxes0 and boxes1: matching = function.invoke(db_task, db_job=db_job, data={ - "frame0": frame, "frame1": frame + 1, "quality": quality, + "frame0": frame0, "frame1": frame1, "quality": quality, "boxes0": boxes0, "boxes1": boxes1, "threshold": threshold, "max_distance": max_distance}) @@ -695,12 +709,11 @@ def _call_reid( boxes1[idx1]["path_id"] = path_id paths[path_id].append(boxes1[idx1]) - progress = (frame + 2) / db_task.data.size - if not LambdaJob._update_progress(progress): + if not LambdaJob._update_progress((i + 1) / len(frame_set)): break - for box in boxes_by_frame[db_task.data.size - 1]: + for box in boxes_by_frame[frame_set[-1]]: if "path_id" not in box: path_id = len(paths) paths[path_id] = [box] @@ -728,7 +741,7 @@ def _call_reid( box["attributes"] = [] for track in tracks: - if track["shapes"][-1]["frame"] != db_task.data.size - 1: + if track["shapes"][-1]["frame"] != frame_set[-1]: box = track["shapes"][-1].copy() box["outside"] = True box["frame"] += 1 @@ -740,7 +753,10 @@ def _call_reid( serializer = LabeledDataSerializer(data=data) if serializer.is_valid(raise_exception=True): - dm.task.put_task_data(db_task.id, serializer.data) + if db_job: + dm.task.put_job_data(db_job.id, serializer.data) + else: + dm.task.put_task_data(db_task.id, serializer.data) @classmethod def __call__(cls, function, task: int, quality: str, cleanup: bool, **kwargs): From 181af12094239e2ef60e831775a81d391c642dc7 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 12 Jun 2023 17:59:32 +0300 Subject: [PATCH 255/257] Update serializers --- cvat/apps/lambda_manager/serializers.py | 9 +- cvat/schema.yml | 130 +++++++++++++++++++++++- 2 files changed, 132 insertions(+), 7 deletions(-) diff --git a/cvat/apps/lambda_manager/serializers.py b/cvat/apps/lambda_manager/serializers.py index 06a8732a2eed..63c3c7b1429a 100644 --- a/cvat/apps/lambda_manager/serializers.py +++ b/cvat/apps/lambda_manager/serializers.py @@ -2,12 +2,17 @@ # # SPDX-License-Identifier: MIT +from drf_spectacular.utils import extend_schema_serializer from rest_framework import serializers class LabelMappingEntrySerializer(serializers.DictField): name = serializers.CharField() +@extend_schema_serializer( + # The "Request" suffix is added by drf-spectacular automatically + component_name='FunctionCall' +) class FunctionCallRequestSerializer(serializers.Serializer): function = serializers.CharField(help_text="The name of the function to execute") @@ -25,7 +30,7 @@ class FunctionCallRequestSerializer(serializers.Serializer): ) max_distance = serializers.IntegerField(required=False) -class FunctionSerializer(serializers.Serializer): +class FunctionCallParamsSerializer(serializers.Serializer): id = serializers.CharField(help_text="The name of the function") task = serializers.IntegerField(help_text="The id of the task") @@ -36,7 +41,7 @@ class FunctionSerializer(serializers.Serializer): class FunctionCallSerializer(serializers.Serializer): id = serializers.CharField(help_text="Request id") - function = FunctionSerializer() + function = FunctionCallParamsSerializer() status = serializers.CharField() progress = serializers.IntegerField(default=0) enqueued = serializers.DateTimeField() diff --git a/cvat/schema.yml b/cvat/schema.yml index 894bd933f6ba..272850b0c68b 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -2436,7 +2436,13 @@ paths: - basicAuth: [] responses: '200': - description: No response body + content: + application/vnd.cvat+json: + schema: + type: array + items: + $ref: '#/components/schemas/FunctionCall' + description: '' post: operationId: lambda_create_requests summary: Method calls the function @@ -2458,6 +2464,12 @@ paths: description: Organization identifier tags: - lambda + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/FunctionCallRequest' + required: true security: - sessionAuth: [] csrfAuth: [] @@ -2465,8 +2477,12 @@ paths: - signatureAuth: [] - basicAuth: [] responses: - '201': - description: No response body + '200': + content: + application/vnd.cvat+json: + schema: + $ref: '#/components/schemas/FunctionCall' + description: '' /api/lambda/requests/{id}: get: operationId: lambda_retrieve_requests @@ -2475,7 +2491,7 @@ paths: - in: path name: id schema: - type: integer + type: string description: Request id required: true tags: @@ -2488,7 +2504,11 @@ paths: - basicAuth: [] responses: '200': - description: No response body + content: + application/vnd.cvat+json: + schema: + $ref: '#/components/schemas/FunctionCall' + description: '' /api/memberships: get: operationId: memberships_list @@ -6540,6 +6560,98 @@ components: description: |- * `random_uniform` - RANDOM_UNIFORM * `manual` - MANUAL + FunctionCall: + type: object + properties: + id: + type: string + description: Request id + function: + $ref: '#/components/schemas/FunctionCallParams' + status: + type: string + progress: + type: integer + default: 0 + enqueued: + type: string + format: date-time + started: + type: string + format: date-time + ended: + type: string + format: date-time + exc_info: + type: string + required: + - ended + - enqueued + - exc_info + - function + - id + - started + - status + FunctionCallParams: + type: object + properties: + id: + type: string + description: The name of the function + task: + type: integer + description: The id of the task + job: + type: integer + description: The id of the job + threshold: + type: number + format: double + required: + - id + - task + FunctionCallRequest: + type: object + properties: + function: + type: string + minLength: 1 + description: The name of the function to execute + task: + type: integer + description: The id of the task to annotate + job: + type: integer + description: The id of the job to annotate + quality: + allOf: + - $ref: '#/components/schemas/QualityEnum' + default: original + description: |- + The quality of the images to use in the model run + + * `compressed` - compressed + * `original` - original + cleanup: + type: boolean + default: false + convMaskToPoly: + type: boolean + default: false + threshold: + type: number + format: double + mapping: + type: object + additionalProperties: + type: object + additionalProperties: {} + description: Label mapping from the model to the task labels + max_distance: + type: integer + required: + - function + - task InputTypeEnum: enum: - checkbox @@ -8193,6 +8305,14 @@ components: * `AZURE_CONTAINER` - AZURE_CONTAINER * `GOOGLE_DRIVE` - GOOGLE_DRIVE * `GOOGLE_CLOUD_STORAGE` - GOOGLE_CLOUD_STORAGE + QualityEnum: + enum: + - compressed + - original + type: string + description: |- + * `compressed` - compressed + * `original` - original QualityReport: type: object properties: From 000af8c75a7de2982635eba3b00b3a4e87f950b2 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Mon, 12 Jun 2023 18:02:43 +0300 Subject: [PATCH 256/257] Fix test --- cvat/apps/lambda_manager/tests/test_lambda.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cvat/apps/lambda_manager/tests/test_lambda.py b/cvat/apps/lambda_manager/tests/test_lambda.py index 1ad52c9c0e1f..e6d4e9a57af4 100644 --- a/cvat/apps/lambda_manager/tests/test_lambda.py +++ b/cvat/apps/lambda_manager/tests/test_lambda.py @@ -1432,13 +1432,13 @@ def test_can_run_offline_reid_function_on_whole_gt_job(self): self.assertEqual(annotations, {'version': 0, 'tags': [], 'shapes': [], 'tracks': []}) def test_offline_function_run_on_task_does_not_affect_gt_job(self): - requested_frame_range = self.task_rel_frame_range[::3] response = self._post_request("/api/jobs", self.admin, data={ "type": "ground_truth", "task_id": self.task["id"], "frame_selection_method": "manual", "frames": [ - self.start_frame + frame * self.frame_step for frame in requested_frame_range + self.start_frame + frame * self.frame_step + for frame in self.task_rel_frame_range[::3] ], }) self.assertEqual(response.status_code, status.HTTP_201_CREATED) @@ -1454,6 +1454,7 @@ def test_offline_function_run_on_task_does_not_affect_gt_job(self): self.assertEqual(len(annotations["tags"]), 0) self.assertEqual(len(annotations["tracks"]), 0) + requested_frame_range = self.task_rel_frame_range self.assertEqual( { frame: 1 for frame in requested_frame_range From 1b9a78ee4dca2f839009c24e9e0526c564023280 Mon Sep 17 00:00:00 2001 From: Maxim Zhiltsov Date: Fri, 16 Jun 2023 13:08:43 +0300 Subject: [PATCH 257/257] Update schema fields --- cvat/apps/lambda_manager/serializers.py | 18 +++++++++--------- cvat/apps/lambda_manager/views.py | 5 ++++- cvat/schema.yml | 11 ++++++++++- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/cvat/apps/lambda_manager/serializers.py b/cvat/apps/lambda_manager/serializers.py index 63c3c7b1429a..ff8435c28337 100644 --- a/cvat/apps/lambda_manager/serializers.py +++ b/cvat/apps/lambda_manager/serializers.py @@ -31,20 +31,20 @@ class FunctionCallRequestSerializer(serializers.Serializer): max_distance = serializers.IntegerField(required=False) class FunctionCallParamsSerializer(serializers.Serializer): - id = serializers.CharField(help_text="The name of the function") + id = serializers.CharField(allow_null=True, help_text="The name of the function") - task = serializers.IntegerField(help_text="The id of the task") + task = serializers.IntegerField(allow_null=True, help_text="The id of the task") job = serializers.IntegerField(required=False, help_text="The id of the job") - threshold = serializers.FloatField(required=False) + threshold = serializers.FloatField(allow_null=True) class FunctionCallSerializer(serializers.Serializer): id = serializers.CharField(help_text="Request id") function = FunctionCallParamsSerializer() - status = serializers.CharField() - progress = serializers.IntegerField(default=0) - enqueued = serializers.DateTimeField() - started = serializers.DateTimeField() - ended = serializers.DateTimeField() - exc_info = serializers.CharField() + status = serializers.CharField(allow_null=True) + progress = serializers.IntegerField(default=0, allow_null=True) + enqueued = serializers.DateTimeField(allow_null=True) + started = serializers.DateTimeField(allow_null=True) + ended = serializers.DateTimeField(allow_null=True) + exc_info = serializers.CharField(required=False, allow_null=True) diff --git a/cvat/apps/lambda_manager/views.py b/cvat/apps/lambda_manager/views.py index 4be1a19a68ac..5f154366bff9 100644 --- a/cvat/apps/lambda_manager/views.py +++ b/cvat/apps/lambda_manager/views.py @@ -480,7 +480,10 @@ def to_dict(self): "function": { "id": lambda_func.id if lambda_func else None, "threshold": self.job.kwargs.get("threshold"), - "task": self.job.kwargs.get("task") + "task": self.job.kwargs.get("task"), + **({ + "job": self.job.kwargs["job"], + } if self.job.kwargs.get("job") else {}) }, "status": self.job.get_status(), "progress": self.job.meta.get('progress', 0), diff --git a/cvat/schema.yml b/cvat/schema.yml index 272850b0c68b..20be33fa2ce9 100644 --- a/cvat/schema.yml +++ b/cvat/schema.yml @@ -6570,24 +6570,29 @@ components: $ref: '#/components/schemas/FunctionCallParams' status: type: string + nullable: true progress: type: integer + nullable: true default: 0 enqueued: type: string format: date-time + nullable: true started: type: string format: date-time + nullable: true ended: type: string format: date-time + nullable: true exc_info: type: string + nullable: true required: - ended - enqueued - - exc_info - function - id - started @@ -6597,9 +6602,11 @@ components: properties: id: type: string + nullable: true description: The name of the function task: type: integer + nullable: true description: The id of the task job: type: integer @@ -6607,9 +6614,11 @@ components: threshold: type: number format: double + nullable: true required: - id - task + - threshold FunctionCallRequest: type: object properties:

    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 swZ5)!b&tOb8Hot#u$V%T( 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%0A`M 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 z zI=oe|S=5xk5i+1RFgdiTe?pAG;mXCR!QLEQ$Nhb>uT-{j&N&l#Vy0JoBo$&OThvix z4=yLXNv+UclWxE+GpYZrLZ77wl4#mLE{Lg_^fgpjJl4miuS>WCsqpApsej%jUoG;J zv!;vUbY^v55W{M}teYs+T*6<>S(LzT=bby4uvt7V0-Mks-p}YfAWz#ZaJn8#*mT=R zYw|a+WZTi+b7o|XcD_}O_@?VW%IFSPQ=IsB5vO#TRj0^=Wqn7N;RP@Xen1!zPCwHJ zVC^=!6{U$?3&U`e-)^fRq+SS%0x^mrrG2S$k}N=`-+3yn&JG!9&DMRFk6CD`9o;v@ zY{z$=6(^^_p;zD`KXHY473rnF@KPg1_EMO_AOr}Sj49)>VjGWHkq8bKUNVAPCjmj0f4wYamTu8#) zQdd{8>rEe_R^cH8Yq$sp&#kZYX6o`ZjCkutt~Hth3fBE@67a?B`F7s zeE3K0-E2vp-aM-b*8kSwmdgkZ05F0wVnBp4(n19GXkh~f(v|-Yj{Sc@Q$Pzgp@Iph zWq`O4{>uz6P9rt3meHWU)8&7^ck2VD4V=8g{Q@1=_;zrC35nV)L(BMi_RzUaPDVv% z+enMdDi(J|+QFi!Gm(=rFNE%gt(u)@8&}M?inq_$jFOz45;0Mx5)RE}jmmY+uOk%{ zk{}@h$szD9gXO%9Kf+LygoA@6V`L{6Cw2@-*K*!+;ZAE6pV5b`$_~GSsGw}+-aQ7w zzZkUCs5PU0)`U-wP4B6I&4?f65HhqBIp|Q%peFf2VhjLlZrv|XXi z`T@@DV{my z@n-_y_-gUd=8b1)b#qv`g8Fk)96SJC+qk*T&=0e-W0TVu9mgmNnt)6dF4{q86zozH z85!jibI`JUOkb!hQ4{STRikhUmV~TetnG*~Bvv&s1)NSXEA|TBIj$x%mC+9EEi<>e zuAghjFZ8sY?b=v1(R?@laCbtMu$HJZZrpC2gF2h=?#>qawMEH7J&AiP=TpWR34Ju* zg+&0-ZS^e$d;ii?7yuiZUmBRrk-yc2Hy5jSlBxR=VyvTjLPbQ@F*DFJ->`^ zt8Y&8}*jJpB=uVm0M0p6@XUH2GIj#x1rrKjSYFIIM6;E(A#88Q(bzTp#ZNx_^hHV@dZ}ye&-4jG_${0*tKWHs8uGj}rE}+;@Yns7 zoOO$oa0c<$PK3zDQf8^!AWN$KTgpi8?|*px9nh-JxD~S(rE`gQ@HYwz>zwq-{WkHr zYWf%5?48?8iAzlw_3bk?S@U3>Fg02h{LJtf4Vv3rcU_0PBmV>~JP3Rt)`Q&7pEb)U zO~dK?1?*qt>hu>DU(sz}h+};P;7&TS#T)%GPyMKuPR@>=hL=kxrn0h#4}aa;@4dJ2 zzT1t?kV4UyfCXnUKF%9#IqER}4Y}XCMe0d+Ltydxa0K0zFCubkhaz7@!LZBNF7`pi zU6jD22WG7gUH&IVOEqbfG(g2)y`#<2uN3K8nM0M{Mht%PwNW=mx;qzJlFk>SD}?8? zxY)%Ne7U|y!4iDzDuGYl`EE7NSYbI@h#@I@yQ@wc{dhj`A{6^5__&GfJRt+Shn_O9Z=Lz?r_CJ(r$ zKu(j-S|m;x-w|T(4BMqC+uDYQT11WsHz)8oO4G+qnM8vI{oQQ9mrpmnSuK?yx{rs1Y3Nf zIm-9vnl#ZIe3g9mGa8oOo{>{@IPaqnoCAscC_Moe!t>;%Nkkm!e2}%A{Gc+#*krwu{W%}_-