From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00085.outbound.protection.outlook.com [40.107.0.85]) by sourceware.org (Postfix) with ESMTPS id 158C83858C60 for ; Tue, 9 Nov 2021 15:04:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 158C83858C60 Received: from AS9PR06CA0173.eurprd06.prod.outlook.com (2603:10a6:20b:45c::7) by DB6PR08MB2646.eurprd08.prod.outlook.com (2603:10a6:6:20::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.15; Tue, 9 Nov 2021 15:04:47 +0000 Received: from VE1EUR03FT032.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:45c:cafe::d3) by AS9PR06CA0173.outlook.office365.com (2603:10a6:20b:45c::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.11 via Frontend Transport; Tue, 9 Nov 2021 15:04:47 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT032.mail.protection.outlook.com (10.152.18.121) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.14 via Frontend Transport; Tue, 9 Nov 2021 15:04:46 +0000 Received: ("Tessian outbound c71e1a752bff:v108"); Tue, 09 Nov 2021 15:04:46 +0000 X-CR-MTA-TID: 64aa7808 Received: from e9533b9bce9b.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 09C20ADC-3FDA-423A-A06B-F72962AFE238.1; Tue, 09 Nov 2021 15:04:40 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id e9533b9bce9b.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 09 Nov 2021 15:04:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WSuf7moOfN2FCt6m6ORAKPQ450HTaRxqo58sdDC4/si/WdYQo+yYlaA8QncG7Z97Hi0sVobz7TmJv5UU5p4wSjHsnvbp+9OF6WqNdMOG0p+6MB91EJcxbk/MOs9NNBdwa5yH2+1wnq1KmfP2EYHupkIscAu4JSQdSzWgZPhqq2j+miJsDmgYqWM7G2noGyVCH4PpAIp1Mk6x9noH2SkmWLaARdtLqqXUFRTuhhKar/oqgD87uDiq166J58O+3cciLCsdUT4sHnkAB5IUxdhA97iIH5lPMqF/m3/28c59bldIlI8UFizeIFeRSfvnlBPjpzpuBYhw6zhXgy/Ingn74A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=0z82pe7onfXNLgbHcg/3rqSDahMf6feRS+Fk5N7IzdU=; b=A8XfGzeltzGSwyoYhV5TOxl7wku+/k3snzuQ614MSBdLm6OZdbybx2DuN/EotQMTR8sqzKkZGoGCemE5Yi8SvT6PRnjuEUCj5A0ApJla8iJemKUWCfSJA2PdZWIhdDlKwTIvjy6iWfOyBOAXOh8XhsBRqBQoLiIhuImgJOIfoo4C7OCOOAzqGQUttNFbs8Wcp/2d1PLj0FmH+OUxAI2NkDFT7yvNdYlXDcmhjDuqfVBSIVSPZCiODoG6eiA620b4W0+Orj0TNLDgNixobiMEhVkBJHLxbn5YLE8OHOQeRuGN17Pgsj4o02c3JQ+6xuPYLQcuWX3mget0cEom9FwVOA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by VI1PR08MB3998.eurprd08.prod.outlook.com (2603:10a6:803:e5::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.11; Tue, 9 Nov 2021 15:04:36 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::31cf:ea55:2234:c50b]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::31cf:ea55:2234:c50b%8]) with mapi id 15.20.4690.015; Tue, 9 Nov 2021 15:04:36 +0000 From: Tamar Christina To: Richard Biener CC: Richard Sandiford , Richard Biener via Gcc-patches , nd Subject: RE: [PATCH]middle-end Add an RPO pass after successful vectorization Thread-Topic: [PATCH]middle-end Add an RPO pass after successful vectorization Thread-Index: AQHXz/CMBQinBHoVLE+bQuMv+Yr2xavwSpoAgAAAZYCAABHXAIAAG0VpgAAVFgCABEccoIAADAcAgAZ0UgA= Date: Tue, 9 Nov 2021 15:04:36 +0000 Message-ID: References: <9nnp8so9-p3nq-r26-3098-s96334191030@fhfr.qr> <045975-5o48-87ns-70pr-39r47q12o3p6@fhfr.qr> <33781on-6390-o5np-43s6-9n473q10oq57@fhfr.qr> In-Reply-To: <33781on-6390-o5np-43s6-9n473q10oq57@fhfr.qr> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ts-tracking-id: 9CCC3F2B97E31D41BE228546F8B68132.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: e895dc8a-2a90-4b53-7500-08d9a3924516 x-ms-traffictypediagnostic: VI1PR08MB3998:|DB6PR08MB2646: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:10000;OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: necVSD5rx4bINpWAjBq9+X2sTOhcKsXtvwL+cFByj3jmYcEvBK0fza9GdEnG9B8N+zBKLy1IKm+LLI/8tk6b2eFNFHq1BzkiMQEVijzDP85KrHLM2/dUXUN+v6zJ0iFzC6N9XTqhjL+XWi11ccwN7XLLG56cVYpaDGYUQqZ4ZCrZn++mPdhi73AiHISJqyqFrb/b+ecQ8w71i79MWMyj+XJ9WaBaGm43IpH2qvVuOwEi3dTv4M+iYkMVlG6/6YGr4r3HdkCIysP7w7qApJ0TZlflhbjUikRgETuaAPKc93PRf00TN7uAjTBw8tGYbDFkOkAW3FIrIoMGUsOzXCYYQA3lXhkx5CwR/13kk6YPA24QYZa9VDWiI0aGAkfvv7cb7q+/3kTLPGa+5qp5I7jnEgyF6+CtQapLjx/x93T/CyiaHhLBfu55BETztfkDLcdA9T/ceMVeF1CX25ZmDFAoi8OZV/ii3P7QYNp3DGfyiwwjO4gRkYuJSsRL3zt5Lx2yAlwD/uxBzb2QOe0Pr47xMYUdNxdF7VOpSGobct9/ij/zr3gv0KRwkzgqtHx1HVAFoPIwuKOYITS2N9t5k5uLykuPkMpm8KZzaRQ3akyO37HPUXZFs0ubU2jEblYjL47V2WoBlkVD3q4uMSPER85lazQKY88fEKWmrEjChO77p4dQRlPTDMTd7xtR+eADqvBLrScUPpz3LrwSnzYi1UUd4A== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR08MB5325.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(86362001)(6506007)(508600001)(8676002)(64756008)(9686003)(83380400001)(8936002)(66476007)(7696005)(38100700002)(38070700005)(122000001)(55016002)(26005)(71200400001)(99936003)(5660300002)(6916009)(52536014)(54906003)(186003)(4326008)(2906002)(316002)(66556008)(33656002)(66446008)(66946007)(76116006); DIR:OUT; SFP:1101; Content-Type: multipart/mixed; boundary="_002_VI1PR08MB53255AA365A9156803B219A3FF929VI1PR08MB5325eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB3998 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT032.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: eded0618-01aa-4b1d-de23-08d9a3923ebd X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: QXF9uynkGkBpw5H6fsrm4V9mCiPhDSyvII1EjSPtqxODLQ21Y5Onj/0h5SUJwBK/FTt5z5B2OA0WbxdYF79r7AP6WFXnjv+HmdPbt1g6kDeOmZFVnD0ZwwEoF8uLmDp54cTJOVqowFBH/YaWzRmCKaZRNfaiBlRXhIu3DHgstsemvjuX3QT+fRapDGqRA0SZOylDea6BdFKY2OnyUGnI2gdjHdF8igbSBdxje/0Ds/kklXmN8kZ9Dx9M3bITW9w/LlSJKZ2ic19yHYOt8ijKJAAc/iNevz2FGbTt8vIm29PvIxEqAGTnzi7B9ACRj8o9g8RUksxjy1Rv0winv5gZE/V+28YjYTsdWjA8Fa/OTFacBL2I1H0IwsSSaycxIJP7K1frifCy+FUPPKjMyBVCcCO7TCRtc29wR9MBAxtw+Tgj0hpV+UXAu5wJqOgFGuJMyfyTTy3zOQXFfuzziRX3ORD+gwt49RGnM+RkDO5sE4+ouJ1HE0uyyfW1OQ84c6RhbPKmQlxlaGsBXBhwOVYlXxaYDm3mM3T1oXz+vo3/vHyc0TFRpUSlhir7feXnN08s1Ow5vPh+RgM+1j3R2AFfUJnOb/DGmcPCp1OTNPlk0h4lyozWDUbT/PE+eil+bcZKldDa8v+DHxNqR4pVzim4c++g9SdhpXdcpPLA3ubCz7NQ4s2u9852qToysftVE5kHUJP6b+mUe5Hxh7Cqn99tKQ== X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(46966006)(36840700001)(336012)(86362001)(52536014)(33656002)(6862004)(26005)(36860700001)(82310400003)(6506007)(55016002)(186003)(54906003)(9686003)(356005)(8936002)(316002)(83380400001)(47076005)(2906002)(508600001)(4326008)(70206006)(70586007)(7696005)(8676002)(81166007)(5660300002)(235185007)(99936003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2021 15:04:46.7918 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e895dc8a-2a90-4b53-7500-08d9a3924516 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR03FT032.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR08MB2646 X-Spam-Status: No, score=-13.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 09 Nov 2021 15:04:54 -0000 --_002_VI1PR08MB53255AA365A9156803B219A3FF929VI1PR08MB5325eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable > > + bitmap_set_bit (exit_bbs, single_exit (loop)->dest->index); > > + bitmap_set_bit (exit_bbs, loop->latch->index); >=20 > treating the latch as exit is probably premature optimization (yes, it's = empty). >=20 > > + > > + do_rpo_vn (cfun, loop_preheader_edge (loop), exit_bbs); > > + > > + BITMAP_FREE (exit_bbs); >=20 > ... deallocation can go. Note I wonder whether, if we are already spinni= ng up > VN, we should include the preheader in the operation? > We regularly end up emitting redundant vector initializers that could be > cleaned up earlier this way. I've change it to include the preheader but it looks like this breaks boots= trap on both x86 and AArch64. On x86 the following testcase double matmul_c8_vanilla_bbase_0; double *matmul_c8_vanilla_dest; matmul_c8_vanilla_x; matmul_c8_vanilla() { for (; matmul_c8_vanilla_x; matmul_c8_vanilla_x++) matmul_c8_vanilla_dest[matmul_c8_vanilla_x] +=3D matmul_c8_vanilla_bbas= e_0; } ICEs with -std=3Dgnu11 -ffast-math -ftree-vectorize -O2 with: internal compiler error: tree check: expected ssa_name, have var_decl in SS= A_VAL, at tree-ssa-sccvn.c:535 0x80731c tree_check_failed(tree_node const*, char const*, int, char const*,= ...) ../gcc-dsg/gcc/tree.c:8689 0x7ebda2 tree_check(tree_node*, char const*, int, char const*, tree_code) ../gcc-dsg/gcc/tree.h:3433 0x7ebda2 SSA_VAL(tree_node*, bool*) ../gcc-dsg/gcc/tree-ssa-sccvn.c:535 0x7ebda2 vuse_ssa_val ../gcc-dsg/gcc/tree-ssa-sccvn.c:553 0x7ebda2 vn_reference_lookup(tree_node*, tree_node*, vn_lookup_kind, vn_ref= erence_s**, bool, tree_node**, tree_node*) ../gcc-dsg/gcc/tree-ssa-sccvn.c:3664 0x10d8ca5 visit_reference_op_load ../gcc-dsg/gcc/tree-ssa-sccvn.c:5166 0x10d8ca5 visit_stmt ../gcc-dsg/gcc/tree-ssa-sccvn.c:5615 0x10d976c process_bb ../gcc-dsg/gcc/tree-ssa-sccvn.c:7344 0x10dafe5 do_rpo_vn ../gcc-dsg/gcc/tree-ssa-sccvn.c:7942 0x10dc828 do_rpo_vn(function*, edge_def*, bitmap_head*) ../gcc-dsg/gcc/tree-ssa-sccvn.c:8039 0x119c39c vectorize_loops() ../gcc-dsg/gcc/tree-vectorizer.c:1304 on AArch64 this one ICEs with -ffast-math -ftree-vectorize -O2 _Complex *a; _Complex b; c, d; fn1() { _Complex e; for (; c; ++c) e =3D d * a[c]; b =3D e; } With the message=20 internal compiler error: tree check: expected ssa_name, have var_decl in VN= _INFO, at tree-ssa-sccvn.c:451 0x734073 tree_check_failed(tree_node const*, char const*, int, char const*,= ...) ../../gcc-fsf/gcc/tree.c:8691 0x10e2e2f tree_check(tree_node*, char const*, int, char const*, tree_code) ../../gcc-fsf/gcc/tree.h:3433 0x10e2e2f VN_INFO(tree_node*) ../../gcc-fsf/gcc/tree-ssa-sccvn.c:451 0x10ed223 process_bb ../../gcc-fsf/gcc/tree-ssa-sccvn.c:7331 0x10eea43 do_rpo_vn ../../gcc-fsf/gcc/tree-ssa-sccvn.c:7944 0x10efe2b do_rpo_vn(function*, edge_def*, bitmap_head*) ../../gcc-fsf/gcc/tree-ssa-sccvn.c:8039 0x11c436b vectorize_loops() ../../gcc-fsf/gcc/tree-vectorizer.c:1304 Any ideas? Thanks, Tamar >=20 > Otherwise the change looks OK. >=20 --- inline copy of patch --- diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c index edb7538a67f00cd80a608ee82510cf437fe88083..029d59016c9652f87d80fc5500f= 89532c79a66d0 100644 --- a/gcc/tree-vectorizer.c +++ b/gcc/tree-vectorizer.c @@ -81,7 +81,7 @@ along with GCC; see the file COPYING3. If not see #include "gimple-pretty-print.h" #include "opt-problem.h" #include "internal-fn.h" - +#include "tree-ssa-sccvn.h" =20 /* Loop or bb location, with hotness information. */ dump_user_location_t vect_location; @@ -1298,6 +1298,17 @@ vectorize_loops (void) if (has_mask_store && targetm.vectorize.empty_mask_is_expensive (IFN_MASK_STORE)) optimize_mask_stores (loop); + + auto_bitmap exit_bbs; + /* Perform local CSE, this esp. helps because we emit code for + predicates that need to be shared for optimal predicate usage. + However reassoc will re-order them and prevent CSE from working + as it should. CSE only the loop body, not the entry. */ + bitmap_set_bit (exit_bbs, single_exit (loop)->dest->index); + + edge entry =3D EDGE_PRED (loop_preheader_edge (loop)->src, 0); + do_rpo_vn (cfun, entry, exit_bbs); + loop->aux =3D NULL; } --_002_VI1PR08MB53255AA365A9156803B219A3FF929VI1PR08MB5325eurp_ Content-Type: application/octet-stream; name="rb15007 (2).patch" Content-Description: rb15007 (2).patch Content-Disposition: attachment; filename="rb15007 (2).patch"; size=1171; creation-date="Tue, 09 Nov 2021 14:58:38 GMT"; modification-date="Tue, 09 Nov 2021 14:58:15 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3Rvcml6ZXIuYyBiL2djYy90cmVlLXZlY3Rvcml6ZXIu YwppbmRleCBlZGI3NTM4YTY3ZjAwY2Q4MGE2MDhlZTgyNTEwY2Y0MzdmZTg4MDgzLi4wMjlkNTkw MTZjOTY1MmY4N2Q4MGZjNTUwMGY4OTUzMmM3OWE2NmQwIDEwMDY0NAotLS0gYS9nY2MvdHJlZS12 ZWN0b3JpemVyLmMKKysrIGIvZ2NjL3RyZWUtdmVjdG9yaXplci5jCkBAIC04MSw3ICs4MSw3IEBA IGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCiAjaW5j bHVkZSAiZ2ltcGxlLXByZXR0eS1wcmludC5oIgogI2luY2x1ZGUgIm9wdC1wcm9ibGVtLmgiCiAj aW5jbHVkZSAiaW50ZXJuYWwtZm4uaCIKLQorI2luY2x1ZGUgInRyZWUtc3NhLXNjY3ZuLmgiCiAK IC8qIExvb3Agb3IgYmIgbG9jYXRpb24sIHdpdGggaG90bmVzcyBpbmZvcm1hdGlvbi4gICovCiBk dW1wX3VzZXJfbG9jYXRpb25fdCB2ZWN0X2xvY2F0aW9uOwpAQCAtMTI5OCw2ICsxMjk4LDE3IEBA IHZlY3Rvcml6ZV9sb29wcyAodm9pZCkKICAgICAgIGlmIChoYXNfbWFza19zdG9yZQogCSAgJiYg dGFyZ2V0bS52ZWN0b3JpemUuZW1wdHlfbWFza19pc19leHBlbnNpdmUgKElGTl9NQVNLX1NUT1JF KSkKIAlvcHRpbWl6ZV9tYXNrX3N0b3JlcyAobG9vcCk7CisKKyAgICAgIGF1dG9fYml0bWFwIGV4 aXRfYmJzOworICAgICAgLyogUGVyZm9ybSBsb2NhbCBDU0UsIHRoaXMgZXNwLiBoZWxwcyBiZWNh dXNlIHdlIGVtaXQgY29kZSBmb3IKKwkgcHJlZGljYXRlcyB0aGF0IG5lZWQgdG8gYmUgc2hhcmVk IGZvciBvcHRpbWFsIHByZWRpY2F0ZSB1c2FnZS4KKwkgSG93ZXZlciByZWFzc29jIHdpbGwgcmUt b3JkZXIgdGhlbSBhbmQgcHJldmVudCBDU0UgZnJvbSB3b3JraW5nCisJIGFzIGl0IHNob3VsZC4g IENTRSBvbmx5IHRoZSBsb29wIGJvZHksIG5vdCB0aGUgZW50cnkuICAqLworICAgICAgYml0bWFw X3NldF9iaXQgKGV4aXRfYmJzLCBzaW5nbGVfZXhpdCAobG9vcCktPmRlc3QtPmluZGV4KTsKKwor ICAgICAgZWRnZSBlbnRyeSA9IEVER0VfUFJFRCAobG9vcF9wcmVoZWFkZXJfZWRnZSAobG9vcCkt PnNyYywgMCk7CisgICAgICBkb19ycG9fdm4gKGNmdW4sIGVudHJ5LCBleGl0X2Jicyk7CisKICAg ICAgIGxvb3AtPmF1eCA9IE5VTEw7CiAgICAgfQogCg== --_002_VI1PR08MB53255AA365A9156803B219A3FF929VI1PR08MB5325eurp_--