From patchwork Mon Feb 12 21:27:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dodji Seketeli X-Patchwork-Id: 85639 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8FBBC3858C2C for ; Mon, 12 Feb 2024 22:13:36 +0000 (GMT) X-Original-To: libabigail@sourceware.org Delivered-To: libabigail@sourceware.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id CE0833858C52 for ; Mon, 12 Feb 2024 21:27:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org CE0833858C52 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org CE0833858C52 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707773281; cv=none; b=E0uURl8BgPT2Te4Cl+Fw7IW4m7BJX/p5P1y0TkB3ZYCJoWX9vSGPGxBml+NPoSgMTSeEBb8l1fq6yK7o0NLz/fVqMUV/GM/g65ULTUKRwHQm5uzihqtPXC+1lnvVJz92fuxlx+HDzl+1yqHmxCfU1UlSC/Ws9VNjuv5C32iKdeY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707773281; c=relaxed/simple; bh=/mlFa8EgD9kj4xzoaFWaRX4ImPkj8VASSyG5Tjfj+dA=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=K44IOaBtE1DAm4bDez/P0Px7Kv0Ju7uLEfN4v5z/WEhKJG/DwIrBaHcH+Bk+G6D7Fl6jSaddciGv4MO9HuWoC+fXMdm5Bhlpq2LRSbr+DNfb4zna/5b5rvC8rCqEiGb0keOpbsO0noPz7LuZggSSlsc5+vKEedbOs63zTpr1FN0= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1707773277; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type; bh=JTL8Axz3yzU5Xt2+D+tuCJYRk9fMhyZnhIc8nDEhh5E=; b=E2OHcP2xSsbeMs4ce7JFbxv5RpQkVQRu2PzdPWUyCdrus72/US3ZKezA9Vvq6zrk9aP0UO Qf3IQl3d1CiP4ufrdhllj87Yx0c7XNtkDy/z4JKz4ABYc59RkiWlmYEcg0uuy3e1Guy4x/ 8AJjIi2ZaCPmhEkQ1WrrYNFXQfYrS/c= Received: from mail-oa1-f70.google.com (mail-oa1-f70.google.com [209.85.160.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-161-r-giB6UKO7ihX9scJOetHQ-1; Mon, 12 Feb 2024 16:27:33 -0500 X-MC-Unique: r-giB6UKO7ihX9scJOetHQ-1 Received: by mail-oa1-f70.google.com with SMTP id 586e51a60fabf-21a708d3dcaso857016fac.3 for ; Mon, 12 Feb 2024 13:27:33 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707773253; x=1708378053; h=mime-version:user-agent:message-id:date:organization:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=JTL8Axz3yzU5Xt2+D+tuCJYRk9fMhyZnhIc8nDEhh5E=; b=gyFeHRiWbeceocc+nDcH/ADQBMbz34w7A0+c9+CQcvg+7rW1NoOVConih5GGjNcCwy TxNTwBjVg69qRZKQdD+7U3Gf+1ilD1IfGnPFWzZXdwmZJDkyx+Bz9vwVRPab9kpBeeFG E3i6OrF0x1RdBVQqgrVN4Whksx2G6PHw9FDqZ99kuCe6X53ebUVBE3oAb73dH2sD+8tH Ol7cjiNbeoNzD5YM9SMMrpaWM+OSoVloNwwOmP33CQSPDPS/ZvT+VC41kGP8mCzN0nrf RgIXvUiymbrH/rvOJBp5yb/Hb/ujxvAJvC2VmQtgodCFN8QhW4vNTwII6zL/uyL78TSD 2rCA== X-Gm-Message-State: AOJu0YzOo1Qi3TdaIljXLFE4S48K/EFLqn2ygHg9n33MRAhooQqCj0CM d0VFV5fD2jhDAe7o+jHGv+k1ZtzmrFi0Wz1Xk/dJ4jf2WmwasOdB/fMnCpMACfSXgEgwpoRascs 48ThhZgE37pT/u+v1oi3slMVWjGNGbgaEHBX/52uBVWoKlwxJgVyhjCuQ+iBaRMNnig== X-Received: by 2002:a05:6870:e253:b0:218:d0e5:4800 with SMTP id d19-20020a056870e25300b00218d0e54800mr6950132oac.48.1707773251676; Mon, 12 Feb 2024 13:27:31 -0800 (PST) X-Google-Smtp-Source: AGHT+IHLMiJxBSxxXj9VMFCitlbLHcblxwLGmK5cQzWgdsMPN8CAW1DW6etC+y12ieTdK5NlYHe0pA== X-Received: by 2002:a05:6870:e253:b0:218:d0e5:4800 with SMTP id d19-20020a056870e25300b00218d0e54800mr6950023oac.48.1707773248754; Mon, 12 Feb 2024 13:27:28 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCXT1wQWHEodhi1RdYVv9Y7wdIF+Yq2xNLO6k4BxeHTlrs7XWNRYVy1lSjvdvPjrEOiXyhqv1a5Wa2b+SU/2Huaa Received: from localhost (88-120-130-27.subs.proxad.net. [88.120.130.27]) by smtp.gmail.com with ESMTPSA id l21-20020ac87255000000b0042c7b9abef7sm503642qtp.96.2024.02.12.13.27.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Feb 2024 13:27:27 -0800 (PST) Received: by localhost (Postfix, from userid 1000) id 14384B4FCA; Mon, 12 Feb 2024 22:27:24 +0100 (CET) From: Dodji Seketeli To: libabigail@sourceware.org Subject: [PATCH, applying to mainline] writer: Avoid emitting a canonical type twice Organization: Red Hat / France X-Operating-System: CentOS Stream release 9 X-URL: http://www.redhat.com Date: Mon, 12 Feb 2024 22:27:23 +0100 Message-ID: <87zfw5xtj8.fsf@redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Mailman-Approved-At: Mon, 12 Feb 2024 22:12:01 +0000 X-BeenThere: libabigail@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Mailing list of the Libabigail project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libabigail-bounces+patchwork=sourceware.org@sourceware.org Hello, I noticed while looking at ABIXML files that sometimes, a (canonical) type would be emitted twice. This patch fixes it. Let's hope it doesn't impact ABIXML emitting performance too much. * src/abg-writer.cc (write_canonical_types_of_scope): Don't emit a canonical type if it's already been emitted. * tests/data/test-annotate/test13-pr18894.so.abi: Adjust. * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. Signed-off-by: Dodji Seketeli Applying to the master branch. --- src/abg-writer.cc | 2 + .../data/test-annotate/test13-pr18894.so.abi | 284 - .../data/test-annotate/test14-pr18893.so.abi | 20112 +++++------- .../data/test-annotate/test15-pr18892.so.abi | 1427 - .../data/test-annotate/test17-pr19027.so.abi | 792 +- ...st18-pr19037-libvtkRenderingLIC-6.1.so.abi | 1984 -- ...19-pr19023-libtcmalloc_and_profiler.so.abi | 1088 +- ...st20-pr19025-libvtkParallelCore-6.1.so.abi | 1490 +- .../data/test-annotate/test21-pr19092.so.abi | 224 - .../test-read-dwarf/PR22122-libftdc.so.abi | 1 - .../test-read-dwarf/test-libandroid.so.abi | 807 - .../test-read-dwarf/test12-pr18844.so.abi | 111 - .../test-read-dwarf/test13-pr18894.so.abi | 212 - .../test-read-dwarf/test14-pr18893.so.abi | 6416 ++-- .../test-read-dwarf/test15-pr18892.so.abi | 1254 +- .../test-read-dwarf/test16-pr18904.so.abi | 367 - .../test-read-dwarf/test17-pr19027.so.abi | 449 - ...st18-pr19037-libvtkRenderingLIC-6.1.so.abi | 1311 - ...19-pr19023-libtcmalloc_and_profiler.so.abi | 880 +- ...st20-pr19025-libvtkParallelCore-6.1.so.abi | 714 +- .../test-read-dwarf/test21-pr19092.so.abi | 167 - .../test22-pr19097-libstdc++.so.6.0.17.so.abi | 26183 +++++----------- 22 files changed, 19208 insertions(+), 47067 deletions(-) diff --git a/src/abg-writer.cc b/src/abg-writer.cc index 0f2d2bdf..a6b8d6f7 100644 --- a/src/abg-writer.cc +++ b/src/abg-writer.cc @@ -2276,6 +2276,8 @@ write_canonical_types_of_scope(const scope_decl &scope, i != canonical_types.end(); ++i) { + if (ctxt.type_is_emitted(*i)) + continue; if (is_member_type) write_member_type(*i, ctxt, indent); else diff --git a/tests/data/test-annotate/test13-pr18894.so.abi b/tests/data/test-annotate/test13-pr18894.so.abi index 5ca7521f..d76b7f9f 100644 --- a/tests/data/test-annotate/test13-pr18894.so.abi +++ b/tests/data/test-annotate/test13-pr18894.so.abi @@ -1012,169 +1012,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -3192,49 +3029,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -4048,41 +3842,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -4157,49 +3916,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/data/test-annotate/test14-pr18893.so.abi b/tests/data/test-annotate/test14-pr18893.so.abi index 2eda9a97..5f180f4d 100644 --- a/tests/data/test-annotate/test14-pr18893.so.abi +++ b/tests/data/test-annotate/test14-pr18893.so.abi @@ -2086,172 +2086,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2850,377 +2684,337 @@ - - - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + + + + - - - + + + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + @@ -3229,11 +3023,17 @@ - - - - - + + + + + + + + + + + @@ -3242,11 +3042,13 @@ - - - - - + + + + + + + @@ -3255,11 +3057,11 @@ - - - - - + + + + + @@ -3268,356 +3070,172 @@ - - - - - - - - - - - - - - - - - - + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - + + + + + - - - - - - - + + + + + - - - - - - - + + + + + - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - + + + + + - - - - - - - - - + + + + + - - - - - + + + + + - - - - - - - + + + + + - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - + + + + @@ -3631,10 +3249,10 @@ - - - - + + + + @@ -3648,10 +3266,10 @@ - - - - + + + + @@ -3665,10 +3283,10 @@ - - - - + + + + @@ -3676,10 +3294,10 @@ - - - - + + + + @@ -3687,3289 +3305,552 @@ - - - - - + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + + + + + - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + + + + + - - - - - - - + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + + + + + - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + - - - - - - - - - + + + + + - - - - - - - - - + + + + + + + + + + + - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + + + + + - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + + + + + - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + + + + + - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + + + + + - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + + + + + - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + + + + + - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - + + + + + + + - - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - - - + + + + @@ -6977,2118 +3858,2017 @@ - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - + + + + + + - - + + + + - - + + - - + + + + + + - - - - + + + + - - - - - - - + + + + + + + + + - - - - + + + + + + + + + + - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + - - - - - - - + + + + + + + + + - - - - - + + + + + + + + + + + - - - - + + + + - - - - - - - + + + + + + + + + - - - - + + + + + + + + + + - - - - - - - + + + + + - - - - + + + + + + + + - - - - - - - + + + + + + + + + + + - - - - + + + + - - - - - - - + + + + + + + + + - - - - - - - + + + + + + + + + + + - - - - + + + + - - - - - - - + + + + + + + + + - - - - + + + + + + + + + + - - - - - - - + + + + + - - - - + + + + + + + + - - - - - - - + + + + + + + + + + + - - - - + + + + - - - - - - - + + + + + + + + + - - - - + + + + + + + + + + - - - - - - - + + + + + - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - - - - - - + + + + + - - - - + + + + + + + + - - - - - - - + + + + + + + + + + + - - - - + + + + - - - - - - - + + + + + + + + + - - - - - - - + + + + + + + + + + + - - - - - - - - - + + + + + - - - - - + + + + + - - - - - - - - - + + - - - - + + + + + + + + + + - - - - - - - + + + + + - - - - + + + + + + + + - - - - - - - + + + + + + + + + + + - - - - + + + + - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - - - - - - + + + + + - - - - - - - - + + + + + + + + - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - + + - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - + + + + + + - - - - - - - - - - - + + + + + + + - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - + + + + - - - - - - - + + + + + + + + + - - - - - - - + + + + + + + + + - - - - - + + + + + - - - - - - - - + + + + + + + + - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - + + + + + - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + - - - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + - - - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + - - - - - + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - + + + + + - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - + + + + + + + + + - - - - - + + + + + + + + + - - - - - + + + + + + + + + - - - - - + + + + + + + + + - - - - - + + + + + + + + + - - - - - - - + + + + + + + + + - - - - - + + + + + + + + + - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - + + + + + - - - - - - - + + + + + - - - - - - - + + + + + + + + + - - - - - - - + + + + + + + + + - - - - - - - + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - - - + + + + + + + + + - - - - - + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - - - - - + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - - - - - - + + + + + + + + + - - - - + + + + + + + + - - - - - - - + + + + + + + + + - - - - + + + + + + + + - - - - - - - + + + + + + + + + - - + + - - + + - - - + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + - - - - + + + + @@ -9097,11 +5877,11 @@ - - - - - + + + + + @@ -9110,11 +5890,11 @@ - - - - - + + + + + @@ -9126,181 +5906,104 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - - - - - - + + + + + + + @@ -9308,147 +6011,107 @@ - - - - - - - - + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + + + + - - - - + + + + + + @@ -9462,37 +6125,12 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + @@ -9506,329 +6144,457 @@ - - - - - - - - - - + + + + + + - - + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + - - - - + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - + + + + + + - - - - - - - + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + - - - - - - - + + + + + + + - - - - - - - - - + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + - - - - - + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + - - - - - - - + + + + + - - - - - - - + + + + + + + - - - - - + + + + + - - - - - - - - - - - + + + + + + + - - - - + + + + + + - - - - + + + + @@ -9838,275 +6604,285 @@ - - - - - - - - - - + + + + - - - - - - - - - - - - - - + + + + - - - - - - - - - + + + + + - - - - - - - + + + + + + + - - - - - + + + + + - - - - - + + + + + + + - - - - - + + + + + - - - - - - - - - + + + + + + + - - + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - + + + - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - - - + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + - - - - + + + + + + + + + + @@ -10114,76 +6890,75 @@ - - - - + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + - - - - + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - + + + + + + + + - - - - + + + + @@ -10191,174 +6966,71 @@ - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + @@ -10366,214 +7038,291 @@ - - - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + - - - - + + + + + + + + + + + + - - - - + + + + + + + + + + + + - - - - + + + + + + + + + + + + - - - - + + + + + + + + + + + + - - - - + + + + + + + + + + + + - - - - + + + + + + - - - - - - - - + + - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + - - - - - - - + + + + + + + - - - - - - + + + + @@ -10581,326 +7330,316 @@ - - - - - - + + + + + + - - - - - - + + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - - + + + + - - - - - - + + + + - - - - - + + + + + + + + + - - - - - - - - - - - + + + + + + + - - - - + + + + + + + + - - - - - - - - - - + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - + + + + + + + + + + + + - - - - + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + - - - - - + + + + + + + + + - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - + + + + - - - - - - + + + + - - - - - - - - + + + + - - - - - + + + + + + + - - - - - + + + + + - - - - - - + + + + + + + + - - - - + + + + + + + + + + @@ -10909,694 +7648,852 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - + + + + + + + - - - - - + + + + + + + - - - - - + + + + + + + - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + - - - - - + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + - - - - - + + + + + + + + + + + - - - - - - - - - + + + + + + + - - - - - + + + + + - - - - - - - - - + + + + + + + + + - - - - - + + + + + + + - - - - - - - + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + - - - - - + + + + + + + - - - - - - - - + + + + - - - - - + + + + + + + - - - - - - - - + + + + - - - - - + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + - - - - - - - - - + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + - - - - - + + + + + + + - - - - - + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + - - - - - - - + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + - - - - - - - + + + + + - - - - + + + + + + + + + - - + + - - - - - + + + + + + + + + + + + + + + - - @@ -11605,45 +8502,36 @@ - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - + + + + + + + + + @@ -11652,704 +8540,787 @@ - - - - - + + + + + - - - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + - - - - - + + + + + + + - - - - - + + + + + + + - - - - - + + + + + + + - - - - - + + + + + + + - - - - - + + + + + + + - - - - - + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - + + + + + - - - - - - - + + + + + - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - + + + + + - - - - - + + + + + + + + + - - - - - + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - + + + + + + + - - - - - - + + + + - - - - - - + + + + - - - - - - + + + + - - - - - + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + - - - - - + + + + + + + - - - - - - + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + - - - - - + + + + + + + - - - - - - + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + - - - - - - + + + + + + - - - - - - - - - - - + + + + + + + + + + + - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + + + + + + + + + + - - - - + + + + - - - - - + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - - - - + + + + + - - - - - - + + + + + + + + + + + + + @@ -12359,2995 +9330,3060 @@ - - - - + + + + - - - - - - - + + + + + - - - - - - - - - + + + + + - - - - - + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + - - - - - - - + + + + + - - - - - - - - - + + + + + + + + + + + + + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - + + + + + + - - - - - + + + + + - - - - - - - + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - + + + + + - - - - - - - + + + + + + + + + - - - - - + + + + + - - - - - - - + + + + + + + + + - - - - - + + + + + - - - - - + + + + + + + + + - - - - - - - + + + + + - - - - - + + + + + + + + + - - - - - + + + + + - - - - - - - + + + + + + + + + - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - + + + + + - - - - - + + + + + + + - - - - - + + + + + + + + + + + + + + - - - - - - - - - + + + + + - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + + - - - - + + + + + + + + + + - - - - + + + + + + - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - - - - - - - - - - - + + + + + - - - - + + + + - - - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - - - - - - - + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + - - - - - + + + + + - - - - - - - - - - - + + + + + - - - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + - - - - - - - + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - + + +