From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2077.outbound.protection.outlook.com [40.107.104.77]) by sourceware.org (Postfix) with ESMTPS id 1C3133858C51 for ; Mon, 20 Jun 2022 10:00:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 1C3133858C51 ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=DQEVNju9Ix90PGU7oOeyJh+4V+X2E+6eEyyLBxSXZ5iaDOyDSlVMvK79r/WqVBXyTP835eNdWR+cfTqhLJTkZcFbWRyBAHiu6/PWg5e6Whe4RJjZy/8lzxAb1mkt3Po4nwffFhAjO7x6QwBIrlu0LDN/Wht3Y/gy6fWbaupHY2zA9PwoFzrBybAczNzWB9ogl+nj+/uJFqKA6gKUZh6fAebqkMWqRWTMTsI1K1wsMnWayteG76DqQM9o8verX9wHfcqyM8roAongiGofevs1ewJIQl664aIw2A//aXQNYXg/HKDIgluKDW4QaAf0QCrn8HnxEeXwcu8YGYPKZxtIlQ== ARC-Message-Signature: i=2; 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=mvVHb9XpjPvLlSiBri1bHEsMlQpHZOElNWrkz9S+QXw=; b=dG+F+cDW8OhZVfYBHXUiPwQClDN1zrc/wuWdfy9mpWrlkeR/pcihuGwgG1kQhF9+FBMtq91txGqRhltZQjcZkzAy67kXDCWvtsOJTpZ+w5RwYy6fm7w5g7J5mCku5I55V+RfP/OEcdLD9ROE9eLjey9uHF5KGRjAqOod4ahCZPwWRojfkcyvR6pGF7O54/ntRRahcrbZqMTNKq/jkY+5VBxD0c8UnC38p4TjdjlTWPxKJV2pXMWhju1/2UtRUvXIMvdjRVpI39LWi8pvE+dS/4teD5Vq+bJkQ9UnJFneAHzF4CuECgO0OHvrbZYv0yzNWFkbgmdo5OkPeIFkaYa0mg== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) Received: from AM6PR01CA0055.eurprd01.prod.exchangelabs.com (2603:10a6:20b:e0::32) by AM9PR08MB6708.eurprd08.prod.outlook.com (2603:10a6:20b:30e::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.13; Mon, 20 Jun 2022 10:00:10 +0000 Received: from AM5EUR03FT021.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:e0:cafe::a0) by AM6PR01CA0055.outlook.office365.com (2603:10a6:20b:e0::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.15 via Frontend Transport; Mon, 20 Jun 2022 10:00:10 +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; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT021.mail.protection.outlook.com (10.152.16.105) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.14 via Frontend Transport; Mon, 20 Jun 2022 10:00:09 +0000 Received: ("Tessian outbound 01afcf8ccfad:v120"); Mon, 20 Jun 2022 10:00:09 +0000 X-CR-MTA-TID: 64aa7808 Received: from f6b1b2f8a7a9.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id B82226FD-AA7B-408E-89BB-9F78E8D7754A.1; Mon, 20 Jun 2022 10:00:03 +0000 Received: from EUR02-AM5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id f6b1b2f8a7a9.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 20 Jun 2022 10:00:03 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cSngeG+4aO2VQWY+SbrKcP9q/Bo6F/caaUxLIYICeFTfLrwZ/je/dD8AM7YLcNACJwxANjAECDYOxCVk+Xo7yaXaPCsl8OhZfy8YMBNASY3PtgWRQ2fdMdGceGr09jWbW3wXr39O9+Uf/2oBc1Ukz7tMDkApqJszLVkDgrLNl80WGXCEt9ZNx41obJ+3G9jT4w6xA4hYh/nhH+mvXOjbu4yGXGneX5gxEy3rkc7iFPnZi/NdP8FQMgVx2DAt0foORKxmAHczlVABR75zC142DSLqG+SZlomOFWGMg4SoQBAvOrjzxwlhBek1uNhSPBuGcPJlKMgiDvGgcM2A+KzHCg== 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=mvVHb9XpjPvLlSiBri1bHEsMlQpHZOElNWrkz9S+QXw=; b=ae0u2pO6BSPG/AphfTpCEWTWTLtmlT3AaHQcVWJB7u8w4mFdWRgP4a+GdgJKJT9++wY7om6IKYUlxPMVOoqIPHZWgerMja2xIigQs1mlDoLizLC1EFW8vPwtQYccybeXwP5cvTM6p4dqpqmCrrFgcV6gPbfQHZqxV6Z4xyEvUtZfoRV3m6DqzWp3aD83E1PFiP1pQkg4CwuRzqU3O1/akuW1XyjIu9zA6mr1GwMY4baO1wo+7nMl2PsoWe+DFd2d+352DY+gn9ZXk21We5+WJckILWvBalI/5g9bPdPZoSPIsqnSgYM1Ly3BL1xS02F0zU6uzNpJ7Z30l/vjEfeMvQ== 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 AM0PR08MB4210.eurprd08.prod.outlook.com (2603:10a6:208:108::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.15; Mon, 20 Jun 2022 10:00:01 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::54e5:594b:e5fd:a9b4]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::54e5:594b:e5fd:a9b4%8]) with mapi id 15.20.5353.022; Mon, 20 Jun 2022 10:00:01 +0000 From: Tamar Christina To: Richard Biener , Andrew Pinski via Gcc-patches CC: nd Subject: RE: [PATCH]middle-end Add optimized float addsub without needing VEC_PERM_EXPR. Thread-Topic: [PATCH]middle-end Add optimized float addsub without needing VEC_PERM_EXPR. Thread-Index: AQHYgXABctzsum1rOEqzkjE/pN3Irq1UEC2AgADu/gCAAwfuwA== Date: Mon, 20 Jun 2022 10:00:00 +0000 Message-ID: References: <1C4185AB-6EE6-4B8B-838C-465098DAFD3B@suse.de> In-Reply-To: <1C4185AB-6EE6-4B8B-838C-465098DAFD3B@suse.de> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 6F1D97BF23A7444FB59F4ED1AA64F71F.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-Office365-Filtering-Correlation-Id: 0d17fbc6-c30a-44fe-95ae-08da52a3a900 x-ms-traffictypediagnostic: AM0PR08MB4210:EE_|AM5EUR03FT021:EE_|AM9PR08MB6708:EE_ X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 1hbCl3+on/GJ536pUGb8DlVuHoBw2Qstn5DgE/FqB9LZorusP5mOWcvbbx2FkYhcDShD8ieTJnqfzfCqVKuAzw2TbGk0wpIY7mVqji+E0UWeCHnz/1fy8jP/GwpUsc6xonRtkmS1B80JcD5j6sKq8CtAykeGLlFYZE8VJ1z+JFag2fWoK24R32bZW2BVhgyqXwX/lVVczbRA0HEMrSPrvWRfwmFWT7BXpOCIvDu5TNqtzFt7gCnEBGlQh5zUZPVGHwgP9Xv8k47Mwl9TMQip2shj6PuwdyhKBESn2ywOnqMYL1u+GJRUFg9eC7SDqUXpxvirNP8WLbp/zIPP+vFpWcVVE84j7ZpfxQskBLqvMWctpPUaSThD7K0S1ny2WQwdzFUyXtvKM7WonDQI7rpjxlzt6HhKIMv6YN5XGtnZPn0QgHZSX1KXUKnAkeUc77gfx7TQhVZsWl7Q6p8K9mjJHiZDNgcpkTP4+zT8rhjlLzlaFY9Pj/t5yY35/Wyf7S16W1VITV1BcEXrwoo3Ll5h3t1rRdZJ/rQLJFlRPMJlLsd2zb6WGShV6rIYyJlijIpLshZI34m52sOrwAV7++FWBqM2Y8iF7gzoEMKJqBRTWPiGgIXkFfRYsyzCwSsT9MIqdTXJxwfnIoVUDqqFjLSjYEMBegEqLLPKQAnoFpPnpyxBOrKWytQSZTVI6QNHPmDF0uEqt6KLNs+jVZmW+BJp6X9+tZPbGCn6PS4LdvCFI8UeORhSEmxIt6Q0As2bua0Ise+szg5UAP3YjepZJe7nxXQjz3ZIy+s6e4YyN2nJwIgkMOSIYUCuf3Vd5GG8XTkBiMEkZbKkfuSjgsQatmu8KQ== 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:(13230016)(4636009)(136003)(346002)(376002)(366004)(396003)(39860400002)(66446008)(64756008)(66476007)(478600001)(84970400001)(122000001)(4326008)(110136005)(66556008)(8676002)(71200400001)(38070700005)(186003)(76116006)(66946007)(86362001)(316002)(38100700002)(83380400001)(26005)(9686003)(7696005)(6506007)(55016003)(53546011)(30864003)(5660300002)(4743002)(33656002)(8936002)(41300700001)(2906002)(52536014); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB4210 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: AM5EUR03FT021.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 2e5ca056-4487-443f-c002-08da52a3a3ec X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vG2eOEY/3sH1KUPhYioete00A9gMq/FEUmYqQBzDDQIQYcmeTDEIZjwpftf3IkqWkrJAt2Bci8w01DKhI8BF+2rf9MiX+Ug0474HQf082y40dxxEtFcW2OhrtwC9xBreZbn9WOoICMNiNJpg0YQohwazD4AC3PcGRmijOQNbdX0bVfUKdXw2Akq7HJALfojIPBZXfHRu396EEHaPhq+eNftTOOBwlpG4z3cwBLqVvWYuMWpZUjtkoDUO0YwulwobywsOI/9KIGcWSUoPBojzY6pKW3Lkhz6HQPwuTZCGQLGAtUBGvxpP8JTFcRlcsB1klF+kzViB9WFW2D00BmF12avQtZMwrRWdplHHcgaDq+/MRGS3Vk8OmF4IaZjzM85tnd6YX7dzjBX81+hJQGFvYM3shK5zbU5Tvv/q6rrZRehrh1YCxUy8sI9RJz5h35MrwCXB6zvNAm2s0huaudSGH8SJJMapq067ZSa19uPlF/UwS5eGbbs9zB4l+M5qW9ftP4kcPYrCxMQw4f7GIGNEbIBek0SQadi6YD2R+QF+FFVuEHpsglwcV9AQgGFQxk4bd0JHvuQOYGkn2tNtTGcR20pzHsaRJyD799UwdLFzyn+Y2jzbHWrdP9XNjE/ktznVCw0vnFWNBOcp0vRd+2bMJ/V0qRwRUFHXiEcMw7+F66RUluJBz37I2eH+pwSUfq5R15eD6BRiDES+1psVeZZ6udafdYjV1Ey3EOb2CuuM5od+JMXl190BpJFWCzrmZ+v6OZCPJrxcuRU/joSlyDstCDElf0YDJjc3J6g9eiC8xA32Ndjx3Dy3THgBWMieq1MI 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:(13230016)(4636009)(36840700001)(46966006)(40470700004)(4326008)(30864003)(84970400001)(8936002)(82310400005)(52536014)(86362001)(5660300002)(36860700001)(2906002)(40460700003)(81166007)(83380400001)(186003)(8676002)(70586007)(336012)(55016003)(33656002)(356005)(70206006)(316002)(53546011)(6506007)(498600001)(7696005)(9686003)(4743002)(47076005)(26005)(110136005); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jun 2022 10:00:09.4067 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0d17fbc6-c30a-44fe-95ae-08da52a3a900 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: AM5EUR03FT021.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB6708 X-Spam-Status: No, score=-13.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_DMARC_NONE, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) 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: Mon, 20 Jun 2022 10:00:17 -0000 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSaWNoYXJkIEJpZW5lciA8cmd1 ZW50aGVyQHN1c2UuZGU+DQo+IFNlbnQ6IFNhdHVyZGF5LCBKdW5lIDE4LCAyMDIyIDExOjQ5IEFN DQo+IFRvOiBBbmRyZXcgUGluc2tpIHZpYSBHY2MtcGF0Y2hlcyA8Z2NjLXBhdGNoZXNAZ2NjLmdu dS5vcmc+DQo+IENjOiBUYW1hciBDaHJpc3RpbmEgPFRhbWFyLkNocmlzdGluYUBhcm0uY29tPjsg bmQgPG5kQGFybS5jb20+DQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0hdbWlkZGxlLWVuZCBBZGQgb3B0 aW1pemVkIGZsb2F0IGFkZHN1YiB3aXRob3V0DQo+IG5lZWRpbmcgVkVDX1BFUk1fRVhQUi4NCj4g DQo+IA0KPiANCj4gPiBBbSAxNy4wNi4yMDIyIHVtIDIyOjM0IHNjaHJpZWIgQW5kcmV3IFBpbnNr aSB2aWEgR2NjLXBhdGNoZXMgPGdjYy0NCj4gcGF0Y2hlc0BnY2MuZ251Lm9yZz46DQo+ID4NCj4g PiDvu79PbiBUaHUsIEp1biAxNiwgMjAyMiBhdCAzOjU5IEFNIFRhbWFyIENocmlzdGluYSB2aWEg R2NjLXBhdGNoZXMNCj4gPiA8Z2NjLXBhdGNoZXNAZ2NjLmdudS5vcmc+IHdyb3RlOg0KPiA+Pg0K PiA+PiBIaSBBbGwsDQo+ID4+DQo+ID4+IEZvciBJRUVFIDc1NCBmbG9hdGluZyBwb2ludCBmb3Jt YXRzIHdlIGNhbiByZXBsYWNlIGEgc2VxdWVuY2Ugb2YNCj4gPj4gYWx0ZXJuYXRpdmUNCj4gPj4g Ky8tIHdpdGggZm5lZyBvZiBhIHdpZGVyIHR5cGUgZm9sbG93ZWQgYnkgYW4gZmFkZC4gIFRoaXMg ZWxpbWluYXRlZA0KPiA+PiArdGhlIG5lZWQgZm9yDQo+ID4+IHVzaW5nIGEgcGVybXV0YXRpb24u ICBUaGlzIHBhdGNoIGFkZHMgYSBtYXRoLnBkIHJ1bGUgdG8gcmVjb2duaXplIGFuZA0KPiA+PiBk byB0aGlzIHJld3JpdGluZy4NCj4gPg0KPiA+IEkgZG9uJ3QgdGhpbmsgdGhpcyBpcyBjb3JyZWN0 LiBZb3UgZG9uJ3QgY2hlY2sgdGhlIGZvcm1hdCBvZiB0aGUNCj4gPiBmbG9hdGluZyBwb2ludCB0 byBtYWtlIHN1cmUgdGhpcyBpcyB2YWxpZCAoZS5nLiBSRUFMX01PREVfRk9STUFUJ3MNCj4gPiBz aWduYml0X3J3L3NpZ25iaXRfcm8gZmllbGQpLg0KDQpZZXMgSSBvcmlnaW5hbGx5IGhhZCB0aGlz IGNoZWNrLCBidXQgSSB3b25kZXJlZCB3aGV0aGVyIGl0IHdvdWxkIGJlIG5lZWRlZC4NCkknbSBu b3QgYXdhcmUgb2YgYW55IHZlY3RvciBJU0Egd2hlcmUgdGhlIDMyLWJpdCBhbmQgMTYtYml0IGZs b2F0cyBkb24ndCBmb2xsb3cNCnRoZSBJRUVFIGRhdGEgbGF5b3V0IGFuZCBzZW1hbnRpY3MgaGVy ZS4NCg0KTXkgcHJlZmVyZW5jZSB3b3VsZCBiZSB0byBhc2sgdGhlIHRhcmdldCBhYm91dCB0aGUg ZGF0YSBmb3JtYXQgb2YgaXRzIHZlY3Rvcg0KRmxvYXRpbmcgcG9pbnRzIGJlY2F1c2UgSSBkb24n dCB0aGluayB0aGVyZSBuZWVkcyB0byBiZSBhIGRpcmVjdCBjb3JyZWxhdGlvbiBiZXR3ZWVuDQpU aGUgc2NhbGFyIGFuZCB2ZWN0b3IgZm9ybWF0cyBzdHJpY3RseSBzcGVha2luZy4gICBCdXQgSSBr bm93IFJpY2hpIHdvbid0IGxpa2UgdGhhdCBzbw0KdGhlIGNoZWNrIGlzIHByb2JhYmx5IG1vc3Qg bGlrZWx5Lg0KDQo+ID4gQWxzbyB3b3VsZCBqdXN0IGJlIGJldHRlciBpZiB5b3UgZG8gdGhlIHhv ciBpbiBpbnRlZ2VyIG1vZGUgKHVzaW5nDQo+ID4gc2lnbmJpdF9ydyBmaWVsZCBmb3IgdGhlIGNv cnJlY3QgYml0KT8NCj4gPiBBbmQgdGhlbiBtYWtpbmcgc3VyZSB0aGUgdGFyZ2V0IG9wdGltaXpl cyB0aGUgeG9yIHRvIHRoZSBuZWcNCj4gPiBpbnN0cnVjdGlvbiB3aGVuIG5lZWRlZD8NCg0KSSBk b24ndCByZWFsbHkgc2VlIHRoZSBhZHZhbnRhZ2Ugb2YgdGhpcyBvbmUuIEl0J3Mgbm90IHJlbW92 aW5nIGFuIGluc3RydWN0aW9uDQphbmQgaXQncyBhc3N1bWluZyB0aGUgdmVjdG9yIElTQSBjYW4g ZG8gaW50ZWdlciBvcHMgb24gYSBmbG9hdGluZyBwb2ludCB2ZWN0b3INCmNoZWFwbHkuICBTaW5j ZSBtYXRjaC5wZCBkb2Vzbid0IGhhdmUgdGhlIGFiaWxpdHkgdG8gZG8gY29zdGluZyBJJ2QgcmF0 aGVyIG5vdA0KZG8gdGhpcy4NCg0KPiBJ4oCZbSBhbHNvIHdvcnJpZWQgYWJvdXQgdXNpbmcgRlAg b3BlcmF0aW9ucyBmb3IgdGhlIG5lZ2F0ZSBoZXJlLiAgV2hlbiBAMSBpcw0KPiBjb25zdGFudCBk byB3ZSBzdGlsbCBjb25zdGFudCBmb2xkIHRoaXMgY29ycmVjdGx5Pw0KDQpXZSBuZXZlciBkaWQg Y29uc3RhbnQgZm9sZGluZyBmb3IgdGhpcyBjYXNlLCB0aGUgZm9sZGluZyBpbmZyYXN0cnVjdHVy ZSBkb2Vzbid0DQprbm93IGhvdyB0byBmb2xkIHRoZSBWRUNfUEVSTV9FWFBSLiAgU28gZXZlbiB3 aXRoIEAwIGFuZCBAMSBjb25zdGFudCBubw0KZm9sZGluZyB0YWtlcyBwbGFjZSBldmVuIHRvZGF5 IGlmIHdlIHZlY3Rvcml6ZS4NCg0KPiANCj4gRm9yIGNvc3RpbmcgcHVycG9zZXMgaXQgd291bGQg YmUgbmljZSB0byBtYWtlIHRoaXMgdmlzaWJsZSB0byB0aGUgdmVjdG9yaXplci4NCj4gDQoNCkkg aW5pdGlhbGx5IHdhbnRlZCB0byB1c2UgVkVDX0FERFNVQiBmb3IgdGhpcywgYnV0IG5vdGljZWQg aXQgZGlkbid0IHRyaWdnZXIgaW4gYSBudW1iZXIgb2YNCnBsYWNlIEkgaGFkIGV4cGVjdGVkIGl0 IHRvLiBXaGlsZSBsb29raW5nIGludG8gaXQgSSBub3RpY2VkIGl0J3MgYmVjYXVzZSB0aGlzIGZv bGxvd3MgdGhlIHg4Ng0KaW5zdHJ1Y3Rpb24gc2VtYW50aWNzIHNvIGxlZnQgaXQgYWxvbmUuDQoN Ckl0IGZlbHQgbGlrZSBhZGRpbmcgYSB0aGlyZCBwYXR0ZXJuIGhlcmUgbWlnaHQgYmUgY29uZnVz aW5nLiBIb3dldmVyIEkgY2FuIGFsc28gdXNlIHRoZSBTTFANCnBhdHRlcm4gbWF0Y2hlciB0byBy ZXdyaXRlIGl0IHdpdGhvdXQgYW4gb3B0YWIgaWYgeW91IHByZWZlciB0aGF0Pw0KDQpUaGUgb3Bl cmF0aW9ucyB3aWxsIHRoZW4gYmUgY29zdGVkIG5vcm1hbGx5Lg0KDQo+IEFsc28gaXMgdGhpcyBy ZWFsbHkgZ29vZCBmb3IgYWxsIHRhcmdldHM/ICBDYW4gdGhlcmUgYmUgaXNzdWVzIHdpdGggcmVm b3JtYXR0aW5nDQo+IHdoZW4gdXNpbmcgRlAgb3BzIGFzIGluIHlvdXIgcGF0Y2ggb3Igd2l0aCB1 c2luZyBpbnRlZ2VyIFhPUiBhcyBzdWdnZXN0ZWQNCj4gbWFraW5nIHRoaXMgbW9yZSBleHBlbnNp dmUgdGhhbiB0aGUgYmxlbmQ/DQoNCkkgZG9uJ3QgdGhpbmsgd2l0aCB0aGUgZnAgb3BzIGFsb25l LCAgc2luY2UgaXQncyB1c2luZyB0d28gZnAgb3BzIGFscmVhZHkgYW5kIGFmdGVyIHRoZSBjaGFu Z2UgMiBmcCBvcHMuDQphbmQgSSBjYW4ndCBpbWFnZSB0aGF0IGEgdGFyZ2V0IHdvdWxkIGhhdmUg YSBzbG93IC1hLg0KDQpUaGUgWE9SIG9uZSBJIHdvdWxkbid0IGRvLCBhcyB0aGUgdmVjdG9yIGlu dCBhbmQgdmVjdG9yIGZsb2F0IGNvdWxkIGZvciBpbnN0YW5jZSBiZSBpbiBkaWZmZXJlbnQgcmVn aXN0ZXINCmZpbGVzIG9yIEZQIGJlIGEgY28tcHJvY2Vzc29yIGV0Yy4gIE1peGluZyBGUCBhbmQg SW50ZWdlciBvcHMgaW4gdGhpcyBjYXNlIEkgY2FuIGltYWdlIGNhbiBsZWFkIHRvIHNvbWV0aGlu Zw0Kc3Vib3B0aW1hbC4gIEFsc28gZm9yIHRhcmdldHMgd2l0aCBtYXNraW5nL3ByZWRpY2F0aW9u IHRoZSBWRUNfUEVSTV9FWFAgY291bGQgcG90ZW50aWFsbHkgYmUgbG93ZXJlZCB0bw0KYSBtYXNr L3ByZWRpY2F0ZSBpbiB0aGUgYmFja2VuZC4gV2hlcmVhcyB0aGUgWE9SIGFwcHJvYWNoIGlzIGZh ciBsZXNzIGxpa2VseS4NCg0KVGhhbmtzLA0KVGFtYXINCg0KPiANCj4gUmljaGFyZC4NCj4gDQo+ ID4gVGhhbmtzLA0KPiA+IEFuZHJldyBQaW5za2kNCj4gPg0KPiA+DQo+ID4NCj4gPj4NCj4gPj4g Rm9yDQo+ID4+DQo+ID4+IHZvaWQgZiAoZmxvYXQgKnJlc3RyaWN0IGEsIGZsb2F0ICpyZXN0cmlj dCBiLCBmbG9hdCAqcmVzLCBpbnQgbikgew0KPiA+PiAgIGZvciAoaW50IGkgPSAwOyBpIDwgKG4g JiAtNCk7IGkrPTIpDQo+ID4+ICAgIHsNCj4gPj4gICAgICByZXNbaSswXSA9IGFbaSswXSArIGJb aSswXTsNCj4gPj4gICAgICByZXNbaSsxXSA9IGFbaSsxXSAtIGJbaSsxXTsNCj4gPj4gICAgfQ0K PiA+PiB9DQo+ID4+DQo+ID4+IHdlIGdlbmVyYXRlOg0KPiA+Pg0KPiA+PiAuTDM6DQo+ID4+ICAg ICAgICBsZHIgICAgIHExLCBbeDEsIHgzXQ0KPiA+PiAgICAgICAgbGRyICAgICBxMCwgW3gwLCB4 M10NCj4gPj4gICAgICAgIGZuZWcgICAgdjEuMmQsIHYxLjJkDQo+ID4+ICAgICAgICBmYWRkICAg IHYwLjRzLCB2MC40cywgdjEuNHMNCj4gPj4gICAgICAgIHN0ciAgICAgcTAsIFt4MiwgeDNdDQo+ ID4+ICAgICAgICBhZGQgICAgIHgzLCB4MywgMTYNCj4gPj4gICAgICAgIGNtcCAgICAgeDMsIHg0 DQo+ID4+ICAgICAgICBibmUgICAgIC5MMw0KPiA+Pg0KPiA+PiBub3cgaW5zdGVhZCBvZjoNCj4g Pj4NCj4gPj4gLkwzOg0KPiA+PiAgICAgICAgbGRyICAgICBxMSwgW3gwLCB4M10NCj4gPj4gICAg ICAgIGxkciAgICAgcTIsIFt4MSwgeDNdDQo+ID4+ICAgICAgICBmYWRkICAgIHYwLjRzLCB2MS40 cywgdjIuNHMNCj4gPj4gICAgICAgIGZzdWIgICAgdjEuNHMsIHYxLjRzLCB2Mi40cw0KPiA+PiAg ICAgICAgdGJsICAgICB2MC4xNmIsIHt2MC4xNmIgLSB2MS4xNmJ9LCB2My4xNmINCj4gPj4gICAg ICAgIHN0ciAgICAgcTAsIFt4MiwgeDNdDQo+ID4+ICAgICAgICBhZGQgICAgIHgzLCB4MywgMTYN Cj4gPj4gICAgICAgIGNtcCAgICAgeDMsIHg0DQo+ID4+ICAgICAgICBibmUgICAgIC5MMw0KPiA+ Pg0KPiA+PiBCb290c3RyYXBwZWQgUmVndGVzdGVkIG9uIGFhcmNoNjQtbm9uZS1saW51eC1nbnUg YW5kIG5vIGlzc3Vlcy4NCj4gPj4NCj4gPj4gVGhhbmtzIHRvIEdlb3JnZSBTdGVlZCBmb3IgdGhl IGlkZWEuDQo+ID4+DQo+ID4+IE9rIGZvciBtYXN0ZXI/DQo+ID4+DQo+ID4+IFRoYW5rcywNCj4g Pj4gVGFtYXINCj4gPj4NCj4gPj4gZ2NjL0NoYW5nZUxvZzoNCj4gPj4NCj4gPj4gICAgICAgICog bWF0Y2gucGQ6IEFkZCBmbmVnL2ZhZGQgcnVsZS4NCj4gPj4NCj4gPj4gZ2NjL3Rlc3RzdWl0ZS9D aGFuZ2VMb2c6DQo+ID4+DQo+ID4+ICAgICAgICAqIGdjYy50YXJnZXQvYWFyY2g2NC9zaW1kL2Fk ZHN1Yl8xLmM6IE5ldyB0ZXN0Lg0KPiA+PiAgICAgICAgKiBnY2MudGFyZ2V0L2FhcmNoNjQvc3Zl L2FkZHN1Yl8xLmM6IE5ldyB0ZXN0Lg0KPiA+Pg0KPiA+PiAtLS0gaW5saW5lIGNvcHkgb2YgcGF0 Y2ggLS0NCj4gPj4gZGlmZiAtLWdpdCBhL2djYy9tYXRjaC5wZCBiL2djYy9tYXRjaC5wZCBpbmRl eA0KPiA+Pg0KPiA1MWIwYTFiNTYyNDA5YWY1MzVlNTM4MjhhMTBjMzBiOGEzZTFhZTJlLi5hZjFj OThkNGEyODMxZjM4MjU4ZDZmYzFiYg0KPiBlDQo+ID4+IDgxMWM4ZWU2YzdjNmUgMTAwNjQ0DQo+ ID4+IC0tLSBhL2djYy9tYXRjaC5wZA0KPiA+PiArKysgYi9nY2MvbWF0Y2gucGQNCj4gPj4gQEAg LTc2MTIsNiArNzYxMiw0OSBAQCBhbmQsDQo+ID4+ICAgKHNpbXBsaWZ5IChyZWR1YyAob3AgQDAg VkVDVE9SX0NTVEAxKSkNCj4gPj4gICAgIChvcCAocmVkdWM6dHlwZSBAMCkgKHJlZHVjOnR5cGUg QDEpKSkpDQo+ID4+DQo+ID4+ICsvKiBTaW1wbGlmeSB2ZWN0b3IgZmxvYXRpbmcgcG9pbnQgb3Bl cmF0aW9ucyBvZiBhbHRlcm5hdGluZyBzdWIvYWRkIHBhaXJzDQo+ID4+ICsgICBpbnRvIHVzaW5n IGFuIGZuZWcgb2YgYSB3aWRlciBlbGVtZW50IHR5cGUgZm9sbG93ZWQgYnkgYSBub3JtYWwgYWRk Lg0KPiA+PiArICAgdW5kZXIgSUVFRSA3NTQgdGhlIGZuZWcgb2YgdGhlIHdpZGVyIHR5cGUgd2ls bCBuZWdhdGUgZXZlcnkgZXZlbiBlbnRyeQ0KPiA+PiArICAgYW5kIHdoZW4gZG9pbmcgYW4gYWRk IHdlIGdldCBhIHN1YiBvZiB0aGUgZXZlbiBhbmQgYWRkIG9mIGV2ZXJ5IG9kZA0KPiA+PiArICAg ZWxlbWVudHMuICAqLw0KPiA+PiArKHNpbXBsaWZ5DQo+ID4+ICsgKHZlY19wZXJtIChwbHVzOmMg QDAgQDEpIChtaW51cyBAMCBAMSkgVkVDVE9SX0NTVEAyKSAgKGlmDQo+ID4+ICsoIVZFQ1RPUl9J TlRFR0VSX1RZUEVfUCAodHlwZSkgJiYgIUJZVEVTX0JJR19FTkRJQU4pDQo+ID4+ICsgICh3aXRo DQo+ID4+ICsgICB7DQo+ID4+ICsgICAgIC8qIEJ1aWxkIGEgdmVjdG9yIG9mIGludGVnZXJzIGZy b20gdGhlIHRyZWUgbWFzay4gICovDQo+ID4+ICsgICAgIHZlY19wZXJtX2J1aWxkZXIgYnVpbGRl cjsNCj4gPj4gKyAgICAgaWYgKCF0cmVlX3RvX3ZlY19wZXJtX2J1aWxkZXIgKCZidWlsZGVyLCBA MikpDQo+ID4+ICsgICAgICAgcmV0dXJuIE5VTExfVFJFRTsNCj4gPj4gKw0KPiA+PiArICAgICAv KiBDcmVhdGUgYSB2ZWNfcGVybV9pbmRpY2VzIGZvciB0aGUgaW50ZWdlciB2ZWN0b3IuICAqLw0K PiA+PiArICAgICBwb2x5X3VpbnQ2NCBuZWx0cyA9IFRZUEVfVkVDVE9SX1NVQlBBUlRTICh0eXBl KTsNCj4gPj4gKyAgICAgdmVjX3Blcm1faW5kaWNlcyBzZWwgKGJ1aWxkZXIsIDIsIG5lbHRzKTsN Cj4gPj4gKyAgIH0NCj4gPj4gKyAgIChpZiAoc2VsLnNlcmllc19wICgwLCAyLCAwLCAyKSkNCj4g Pj4gKyAgICAod2l0aA0KPiA+PiArICAgICB7DQo+ID4+ICsgICAgICAgbWFjaGluZV9tb2RlIHZl Y19tb2RlID0gVFlQRV9NT0RFICh0eXBlKTsNCj4gPj4gKyAgICAgICBhdXRvIGVsZW1fbW9kZSA9 IEdFVF9NT0RFX0lOTkVSICh2ZWNfbW9kZSk7DQo+ID4+ICsgICAgICAgYXV0byBudW5pdHMgPSBl eGFjdF9kaXYgKEdFVF9NT0RFX05VTklUUyAodmVjX21vZGUpLCAyKTsNCj4gPj4gKyAgICAgICB0 cmVlIHN0eXBlOw0KPiA+PiArICAgICAgIHN3aXRjaCAoZWxlbV9tb2RlKQ0KPiA+PiArICAgICAg ICB7DQo+ID4+ICsgICAgICAgIGNhc2UgRV9IRm1vZGU6DQo+ID4+ICsgICAgICAgICAgc3R5cGUg PSBmbG9hdF90eXBlX25vZGU7DQo+ID4+ICsgICAgICAgICAgYnJlYWs7DQo+ID4+ICsgICAgICAg IGNhc2UgRV9TRm1vZGU6DQo+ID4+ICsgICAgICAgICAgc3R5cGUgPSBkb3VibGVfdHlwZV9ub2Rl Ow0KPiA+PiArICAgICAgICAgIGJyZWFrOw0KPiA+PiArICAgICAgICBkZWZhdWx0Og0KPiA+PiAr ICAgICAgICAgIHJldHVybiBOVUxMX1RSRUU7DQo+ID4+ICsgICAgICAgIH0NCj4gPj4gKyAgICAg ICB0cmVlIG50eXBlID0gYnVpbGRfdmVjdG9yX3R5cGUgKHN0eXBlLCBudW5pdHMpOw0KPiA+PiAr ICAgICAgIGlmICghbnR5cGUpDQo+ID4+ICsgICAgICAgIHJldHVybiBOVUxMX1RSRUU7DQo+ID4+ ICsgICAgIH0NCj4gPj4gKyAgICAgKHBsdXMgKHZpZXdfY29udmVydDp0eXBlIChuZWdhdGUgKHZp ZXdfY29udmVydDpudHlwZSBAMSkpKQ0KPiA+PiArIEAwKSkpKSkpDQo+ID4+ICsNCj4gPj4gKHNp bXBsaWZ5DQo+ID4+ICAodmVjX3Blcm0gQDAgQDEgVkVDVE9SX0NTVEAyKQ0KPiA+PiAgKHdpdGgN Cj4gPj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3NpbWQv YWRkc3ViXzEuYw0KPiA+PiBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3NpbWQv YWRkc3ViXzEuYw0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRleA0KPiA+Pg0K PiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZmI5MWEzNGM0MjFi YmQyODk0ZmFhMGRiDQo+IGJmDQo+ID4+IDFiNDdhZDQzMzEwYzQNCj4gPj4gLS0tIC9kZXYvbnVs bA0KPiA+PiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zaW1kL2FkZHN1 Yl8xLmMNCj4gPj4gQEAgLTAsMCArMSw1NiBAQA0KPiA+PiArLyogeyBkZy1kbyBjb21waWxlIH0g Ki8NCj4gPj4gKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGFybV92OF8yYV9mcDE2 X25lb25fb2sgfSAqLw0KPiA+PiArLyogeyBkZy1vcHRpb25zICItT2Zhc3QiIH0gKi8NCj4gPj4g Ky8qIHsgZGctYWRkLW9wdGlvbnMgYXJtX3Y4XzJhX2ZwMTZfbmVvbiB9ICovDQo+ID4+ICsvKiB7 IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgIiIgeyB0YXJnZXQgeyBs ZSB9IH0gfQ0KPiA+PiArfSAqLw0KPiA+PiArDQo+ID4+ICsjcHJhZ21hIEdDQyB0YXJnZXQgIitu b3N2ZSINCj4gPj4gKw0KPiA+PiArLyoNCj4gPj4gKyoqIGYxOg0KPiA+PiArKiogLi4uDQo+ID4+ ICsqKiAgICAgZm5lZyAgICB2WzAtOV0rLjJkLCB2WzAtOV0rLjJkDQo+ID4+ICsqKiAgICAgZmFk ZCAgICB2WzAtOV0rLjRzLCB2WzAtOV0rLjRzLCB2WzAtOV0rLjRzDQo+ID4+ICsqKiAuLi4NCj4g Pj4gKyovDQo+ID4+ICt2b2lkIGYxIChmbG9hdCAqcmVzdHJpY3QgYSwgZmxvYXQgKnJlc3RyaWN0 IGIsIGZsb2F0ICpyZXMsIGludCBuKSB7DQo+ID4+ICsgICBmb3IgKGludCBpID0gMDsgaSA8IChu ICYgLTQpOyBpKz0yKQ0KPiA+PiArICAgIHsNCj4gPj4gKyAgICAgIHJlc1tpKzBdID0gYVtpKzBd ICsgYltpKzBdOw0KPiA+PiArICAgICAgcmVzW2krMV0gPSBhW2krMV0gLSBiW2krMV07DQo+ID4+ ICsgICAgfQ0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKg0KPiA+PiArKiogZDE6DQo+ID4+ICsq KiAuLi4NCj4gPj4gKyoqICAgICBmbmVnICAgIHZbMC05XSsuNHMsIHZbMC05XSsuNHMNCj4gPj4g KyoqICAgICBmYWRkICAgIHZbMC05XSsuOGgsIHZbMC05XSsuOGgsIHZbMC05XSsuOGgNCj4gPj4g KyoqIC4uLg0KPiA+PiArKi8NCj4gPj4gK3ZvaWQgZDEgKF9GbG9hdDE2ICpyZXN0cmljdCBhLCBf RmxvYXQxNiAqcmVzdHJpY3QgYiwgX0Zsb2F0MTYgKnJlcywNCj4gPj4gK2ludCBuKSB7DQo+ID4+ ICsgICBmb3IgKGludCBpID0gMDsgaSA8IChuICYgLTgpOyBpKz0yKQ0KPiA+PiArICAgIHsNCj4g Pj4gKyAgICAgIHJlc1tpKzBdID0gYVtpKzBdICsgYltpKzBdOw0KPiA+PiArICAgICAgcmVzW2kr MV0gPSBhW2krMV0gLSBiW2krMV07DQo+ID4+ICsgICAgfQ0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ ICsvKg0KPiA+PiArKiogZTE6DQo+ID4+ICsqKiAuLi4NCj4gPj4gKyoqICAgICBmYWRkICAgIHZb MC05XSsuMmQsIHZbMC05XSsuMmQsIHZbMC05XSsuMmQNCj4gPj4gKyoqICAgICBmc3ViICAgIHZb MC05XSsuMmQsIHZbMC05XSsuMmQsIHZbMC05XSsuMmQNCj4gPj4gKyoqICAgICBpbnMgICAgIHZb MC05XSsuZFxbMVxdLCB2WzAtOV0rLmRcWzFcXQ0KPiA+PiArKiogLi4uDQo+ID4+ICsqLw0KPiA+ PiArdm9pZCBlMSAoZG91YmxlICpyZXN0cmljdCBhLCBkb3VibGUgKnJlc3RyaWN0IGIsIGRvdWJs ZSAqcmVzLCBpbnQgbikNCj4gPj4gK3sNCj4gPj4gKyAgIGZvciAoaW50IGkgPSAwOyBpIDwgKG4g JiAtNCk7IGkrPTIpDQo+ID4+ICsgICAgew0KPiA+PiArICAgICAgcmVzW2krMF0gPSBhW2krMF0g KyBiW2krMF07DQo+ID4+ICsgICAgICByZXNbaSsxXSA9IGFbaSsxXSAtIGJbaSsxXTsNCj4gPj4g KyAgICB9DQo+ID4+ICt9DQo+ID4+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvYWFyY2g2NC9zdmUvYWRkc3ViXzEuYw0KPiA+PiBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9hYXJjaDY0L3N2ZS9hZGRzdWJfMS5jDQo+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+ IGluZGV4DQo+ID4+DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu LmVhN2Y5ZDlkYjJjOGM5YTNlZmU1Yzc5NTFhDQo+IDMNCj4gPj4gMTRhMjliN2E3YTkyMg0KPiA+ PiAtLS0gL2Rldi9udWxsDQo+ID4+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJj aDY0L3N2ZS9hZGRzdWJfMS5jDQo+ID4+IEBAIC0wLDAgKzEsNTIgQEANCj4gPj4gKy8qIHsgZGct ZG8gY29tcGlsZSB9ICovDQo+ID4+ICsvKiB7IGRnLW9wdGlvbnMgIi1PZmFzdCIgfSAqLw0KPiA+ PiArLyogeyBkZy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiICIiIHsgdGFy Z2V0IHsgbGUgfSB9IH0NCj4gPj4gK30gKi8NCj4gPj4gKw0KPiA+PiArLyoNCj4gPj4gKyoqIGYx Og0KPiA+PiArKiogLi4uDQo+ID4+ICsqKiAgICAgZm5lZyAgICB6WzAtOV0rLmQsIHBbMC05XSsv bSwgelswLTldKy5kDQo+ID4+ICsqKiAgICAgZmFkZCAgICB6WzAtOV0rLnMsIHpbMC05XSsucywg elswLTldKy5zDQo+ID4+ICsqKiAuLi4NCj4gPj4gKyovDQo+ID4+ICt2b2lkIGYxIChmbG9hdCAq cmVzdHJpY3QgYSwgZmxvYXQgKnJlc3RyaWN0IGIsIGZsb2F0ICpyZXMsIGludCBuKSB7DQo+ID4+ ICsgICBmb3IgKGludCBpID0gMDsgaSA8IChuICYgLTQpOyBpKz0yKQ0KPiA+PiArICAgIHsNCj4g Pj4gKyAgICAgIHJlc1tpKzBdID0gYVtpKzBdICsgYltpKzBdOw0KPiA+PiArICAgICAgcmVzW2kr MV0gPSBhW2krMV0gLSBiW2krMV07DQo+ID4+ICsgICAgfQ0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ ICsvKg0KPiA+PiArKiogZDE6DQo+ID4+ICsqKiAuLi4NCj4gPj4gKyoqICAgICBmbmVnICAgIHpb MC05XSsucywgcFswLTldKy9tLCB6WzAtOV0rLnMNCj4gPj4gKyoqICAgICBmYWRkICAgIHpbMC05 XSsuaCwgelswLTldKy5oLCB6WzAtOV0rLmgNCj4gPj4gKyoqIC4uLg0KPiA+PiArKi8NCj4gPj4g K3ZvaWQgZDEgKF9GbG9hdDE2ICpyZXN0cmljdCBhLCBfRmxvYXQxNiAqcmVzdHJpY3QgYiwgX0Zs b2F0MTYgKnJlcywNCj4gPj4gK2ludCBuKSB7DQo+ID4+ICsgICBmb3IgKGludCBpID0gMDsgaSA8 IChuICYgLTgpOyBpKz0yKQ0KPiA+PiArICAgIHsNCj4gPj4gKyAgICAgIHJlc1tpKzBdID0gYVtp KzBdICsgYltpKzBdOw0KPiA+PiArICAgICAgcmVzW2krMV0gPSBhW2krMV0gLSBiW2krMV07DQo+ ID4+ICsgICAgfQ0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKg0KPiA+PiArKiogZTE6DQo+ID4+ ICsqKiAuLi4NCj4gPj4gKyoqICAgICBmc3ViICAgIHpbMC05XSsuZCwgelswLTldKy5kLCB6WzAt OV0rLmQNCj4gPj4gKyoqICAgICBtb3ZwcmZ4IHpbMC05XSsuZCwgcFswLTldKy9tLCB6WzAtOV0r LmQNCj4gPj4gKyoqICAgICBmYWRkICAgIHpbMC05XSsuZCwgcFswLTldKy9tLCB6WzAtOV0rLmQs IHpbMC05XSsuZA0KPiA+PiArKiogLi4uDQo+ID4+ICsqLw0KPiA+PiArdm9pZCBlMSAoZG91Ymxl ICpyZXN0cmljdCBhLCBkb3VibGUgKnJlc3RyaWN0IGIsIGRvdWJsZSAqcmVzLCBpbnQgbikNCj4g Pj4gK3sNCj4gPj4gKyAgIGZvciAoaW50IGkgPSAwOyBpIDwgKG4gJiAtNCk7IGkrPTIpDQo+ID4+ ICsgICAgew0KPiA+PiArICAgICAgcmVzW2krMF0gPSBhW2krMF0gKyBiW2krMF07DQo+ID4+ICsg ICAgICByZXNbaSsxXSA9IGFbaSsxXSAtIGJbaSsxXTsNCj4gPj4gKyAgICB9DQo+ID4+ICt9DQo+ ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+IC0tDQo=