From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10043.outbound.protection.outlook.com [40.107.1.43]) by sourceware.org (Postfix) with ESMTPS id 68B7B3858C51 for ; Mon, 20 Jun 2022 12:05:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 68B7B3858C51 ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=dcreGn0pEMnM980N//82JIArZxBB0l9vgsmhktKpHoK6B5VmplRFbZUyGyLWyDBpn46zONm/k4nvZi3nMqmh/AtXtD22YKgMt8m0BhOqXDkt7lTLM3c3vsJfMVvap58FXw5rkO3WmffrkOWcafsVOrK7k6YZLrLRYGZE1KB7lsVj2cdr3z5C2GJ5Ssu+rAqykFOuMwmSrAClwiTX95fEgh8wNc4g5cg4kKzOf+4e3ab478YnQso7zyHtMJoUBovydDvkXUfTXiEdQT5S0A7qyTitNtMx/dQPHqlrvJs8QORz8cg2dHtsQIVzmrFNpHrRStoeA8nRglI3vJePjsM6hg== 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=eAhWJOz/rlZTu88Ssvng9GkojlecOYQyBOsr+6v08gA=; b=LlmdcrY/8sd+j48fJkZhBToHu28ZPfG6xeJ1uN5RlqM9jvG6Wa8XrLhpXMbFElUGgpGq2enYvVerdSEpBbQ8CfYsG5I0VRnVJofTByky8nu6xB7HSlqWvcdSP9tir/T9vzpyibmvz/nF7ESEIggKufPAZg2OYCFS6+UZ9jApK3HqggzCDq9N+6dQeRIHryWKCdHJKTvxjCLxrcG25sQLtRMfc/glnOWtDnUN8dmOAR+uV6RH6Ydcz4HISyOZ8VzkukTytQlwWB4H06RulRNKSDXiy0hBefSkTqbSvmtcszZk1aDJGNjVceamFPYeDaFr7x/jaShM4FhvyJtncOO4EQ== 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 DBBPR09CA0008.eurprd09.prod.outlook.com (2603:10a6:10:c0::20) by VI1PR08MB5437.eurprd08.prod.outlook.com (2603:10a6:803:13d::7) 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 12:05:17 +0000 Received: from DBAEUR03FT024.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:c0:cafe::85) by DBBPR09CA0008.outlook.office365.com (2603:10a6:10:c0::20) 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 12:05:16 +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 DBAEUR03FT024.mail.protection.outlook.com (100.127.142.163) 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 12:05:16 +0000 Received: ("Tessian outbound e40990bc24d7:v120"); Mon, 20 Jun 2022 12:05:16 +0000 X-CR-MTA-TID: 64aa7808 Received: from 25f793a007d7.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id C989A41C-3CF6-4E89-A878-629D7FBBD9E9.1; Mon, 20 Jun 2022 12:05:09 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 25f793a007d7.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 20 Jun 2022 12:05:09 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=X1jOGH4vuDumnjYY0lerP09gyB7JlQ+8+nHp7oSD2tXqwNk2bAbvbVhBlbHG3Pom3X5BoarjBpAHdmmkqTkK8kBAY8vMms3TskvDXn1YMbnSXuhIf28IAesAeTY8tF++L4KzTdpRVlxr2BvW5a4f8eKS78spAuhpJKNnem7evz37BogTl2RVjuN7CARx9vrmA8+zpYNDosITPiqOS/7AxaqxGU5Q47zFuxhp1EXJMfgFdSkk0LAskJAu+GohLEuOF90Au3HCX/egm9M7XY6jtgah2msF+wvSMD85tZzKZvNF2hiRR679Fe6xQFDkAEV9/+FHbn/vhVuFgT5KuyhY+g== 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=eAhWJOz/rlZTu88Ssvng9GkojlecOYQyBOsr+6v08gA=; b=Jm6itbv8CnrUavtmTcmdBzyaqr0tpOb615Zgv91y8+KBBV4tNUoOAFqfIy8jqaxy1mH4DUWv+KJOKyWK9/Q4YFmYbVZKJ2puoZGgoCB+GHrRcn0qlMwwfmvvyi0P073RVMUok0xb5FIFfiBCSjpY5k2NpyBH53VSlA+Ok7IcFppAo6BzM6k/GMKUiYtYJAzWWm8g3xCGv+yguq7VKhn7O6JHVm7FAg+kVRHZ3RmgPYn1raFKVxRPpdn5cRt9OFn/o9PXOsLQjWloAHjmb27Vhc5/m17Zhb4IL4Dp+Dpu/CZcDA+ZV9fMyd6F/Q+wX3Y0qMqNiIhGulWvE4MLOD/HDQ== 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 DBBPR08MB5881.eurprd08.prod.outlook.com (2603:10a6:10:208::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.16; Mon, 20 Jun 2022 12:05:07 +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 12:05:07 +0000 From: Tamar Christina To: Richard Biener CC: Andrew Pinski via Gcc-patches , 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/gCAAwfuwIAAL3eAgAABWoA= Date: Mon, 20 Jun 2022 12:05:07 +0000 Message-ID: References: <1C4185AB-6EE6-4B8B-838C-465098DAFD3B@suse.de> <997q6no-qsqp-1oro-52sp-899sr075p4po@fhfr.qr> In-Reply-To: <997q6no-qsqp-1oro-52sp-899sr075p4po@fhfr.qr> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 8BE4307B5179814A8EC844F750FA3E49.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: 5a022bec-51c3-412b-b20c-08da52b52346 x-ms-traffictypediagnostic: DBBPR08MB5881:EE_|DBAEUR03FT024:EE_|VI1PR08MB5437: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: SjVtIcyYmk2N4SFRIoPQGDNpAMdUl8jOQvWXaaswFxuAFfuEXilGAHbShxuryFgL7E6foMfcuYpXDf87mDYITyPmO+J0t0w7N4JBeSWKoFkP/NQf4CjjE35zshKKUJ86JsbBQgs1+cE6II6JFrmz61bE+fxBiuvRPD0VFIIK29TQD6mY9ODDPbXiOhZfv+hai7lWfwlk296slB1vuwnlUJPtpezo1SRchag3vNxTsF0Xc4AsIl2OU4txOe4teCb96fQSpa9ABYgRJa5LsCqpvq58FFoYuE0F9uGTpoPXB4GkKQC+/WmmZYdlnbl+dcyMyMQvvDoJ+d9KIJ9z8Og6+5sZ9J8IKFGPgIoT19Q7Mj68u1MpM3D47pvuflssY6XraSS53MjFl3GjZJd54oAHFIGQuLY//riXRZAKbypWNeVFOo03ghN0ISa8cWACT3Y1VQALvze+jsI9VkqwCZ3FQzhP+JeuiyWdE8h4hqdvKmJznxamrm0/HQnCtCpb+/dtyUGnKI7hvRXxLFOR4VfxQN6Z2BLbrd25QXio/9DXUmom6Xq3T+yQ36c3AvnJq5aZM74PbKH6GFYo0GNuIR2Tcwzj66zGUaAlgInZ1Jv7pSOOhRNL90K2UBTzrWCYnR6Vr81TuA5I63LrercZOvaL3ELGo4Cwn/B0fTK31ksvHJ1WyVztoeLIi0z37WVTZ0R1cY426GGEB4JuRTsO9AiWyQN6/P44wckV/SkqVjmWuPivKAPuRPhtis4gtoMC7sHaYuthXIrsFZfKHW213n7h+KMG73hnuX60pkE3PgKjyjDsh7oj43uSTqFbbeY6KsNAJbzsKmS9w8FP5L9hgIDSiQ== 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)(39860400002)(366004)(396003)(346002)(376002)(33656002)(9686003)(38100700002)(54906003)(7696005)(6506007)(53546011)(26005)(66574015)(55016003)(2906002)(52536014)(5660300002)(30864003)(8936002)(41300700001)(76116006)(66556008)(6916009)(66946007)(64756008)(8676002)(83380400001)(4326008)(38070700005)(71200400001)(66446008)(86362001)(186003)(122000001)(66476007)(316002)(84970400001)(478600001); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB5881 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: DBAEUR03FT024.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 304cc3a2-09c0-498b-16db-08da52b51def X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GtUicl9mYAHMi4D9fPBan+TIqOE8IUg+0stB8C8vqOgZZ88PkNg08M/QCuGTCLwhfmnLExqsLkiHSLGXdmxOvwR8EwwIsDt4sVIkWXBqRkhQ+cdGBkWN+1rp2cZvUS8Q7DgXKN6hta9hXX6exVif4iMWQ0kwm8TQOtOqSwErYubpBT0ObqkZwdbmXipkTlvfDX3zqkpMvY+4Ytq6OBymZpZQP5IpFGz/eaZwpP3Tm1NTMN+dRxJ81VxbZ8nWyhh452HAizLY9TAkkl+p7nl1FYici18RcYoSZs4jV9vXJV+cx99+dQ4yA1HCeAgtyQF5UNSr+GkL+Dh4FdExMq8h42Fumjv0GpHj7GvTvRx/G13n1vCaUcNNPSKtO1jNAybnh2Tv3i/iNDVSjWUlgPXiI0bN1EapduZAumpPetwtRH1cWrPzlBUXN95uyDYMS3U7SEi4gjZVd6PHimvw3KinjR7uYYFXuA5wZJ95JDTDbcftekEtFFy/9UbsY0tgZ4HuCC9RJIAy5yXT0SHgNgPostJtMZDYcHEaHMQwH1Oxu2259PMrGX/py0vZGCdTW5Cta63j2dPMS2IIxaJnP4xeGPzAqwGMNIglc81P9awte1feytLUri+6PmedQsTIMrAgYOhj3avlce6l2XlKBRTaUlDkIqfPlaSX42cmj928ZKDin6dKDXmc7zr5PDKJ6T0j974rITzKodC4JvrdJ6nKZXCBTLk9lFA53+t8eY7DB46OmavR0LBaSGBuyaFoqksVwn7ppCJB7K0pRISSIaC8Gr28k03L/7F59NLdWLn+as7M9U+/nflyg2ENiBZN9N0i2KYagEvIsK1OBip7+rrtWQ== 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)(136003)(39860400002)(396003)(346002)(376002)(40470700004)(36840700001)(46966006)(6506007)(53546011)(7696005)(4326008)(8676002)(9686003)(33656002)(26005)(83380400001)(356005)(40460700003)(8936002)(47076005)(6862004)(478600001)(70206006)(2906002)(81166007)(52536014)(30864003)(82740400003)(86362001)(36860700001)(186003)(336012)(40480700001)(70586007)(84970400001)(82310400005)(316002)(54906003)(55016003)(66574015)(41300700001)(5660300002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jun 2022 12:05:16.0584 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5a022bec-51c3-412b-b20c-08da52b52346 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: DBAEUR03FT024.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB5437 X-Spam-Status: No, score=-12.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, 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 12:05:24 -0000 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSaWNoYXJkIEJpZW5lciA8cmd1 ZW50aGVyQHN1c2UuZGU+DQo+IFNlbnQ6IE1vbmRheSwgSnVuZSAyMCwgMjAyMiAxMjo1NiBQTQ0K PiBUbzogVGFtYXIgQ2hyaXN0aW5hIDxUYW1hci5DaHJpc3RpbmFAYXJtLmNvbT4NCj4gQ2M6IEFu ZHJldyBQaW5za2kgdmlhIEdjYy1wYXRjaGVzIDxnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZz47IG5k DQo+IDxuZEBhcm0uY29tPg0KPiBTdWJqZWN0OiBSRTogW1BBVENIXW1pZGRsZS1lbmQgQWRkIG9w dGltaXplZCBmbG9hdCBhZGRzdWIgd2l0aG91dA0KPiBuZWVkaW5nIFZFQ19QRVJNX0VYUFIuDQo+ IA0KPiBPbiBNb24sIDIwIEp1biAyMDIyLCBUYW1hciBDaHJpc3RpbmEgd3JvdGU6DQo+IA0KPiA+ ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IFJpY2hhcmQgQmllbmVy IDxyZ3VlbnRoZXJAc3VzZS5kZT4NCj4gPiA+IFNlbnQ6IFNhdHVyZGF5LCBKdW5lIDE4LCAyMDIy IDExOjQ5IEFNDQo+ID4gPiBUbzogQW5kcmV3IFBpbnNraSB2aWEgR2NjLXBhdGNoZXMgPGdjYy1w YXRjaGVzQGdjYy5nbnUub3JnPg0KPiA+ID4gQ2M6IFRhbWFyIENocmlzdGluYSA8VGFtYXIuQ2hy aXN0aW5hQGFybS5jb20+OyBuZCA8bmRAYXJtLmNvbT4NCj4gPiA+IFN1YmplY3Q6IFJlOiBbUEFU Q0hdbWlkZGxlLWVuZCBBZGQgb3B0aW1pemVkIGZsb2F0IGFkZHN1YiB3aXRob3V0DQo+ID4gPiBu ZWVkaW5nIFZFQ19QRVJNX0VYUFIuDQo+ID4gPg0KPiA+ID4NCj4gPiA+DQo+ID4gPiA+IEFtIDE3 LjA2LjIwMjIgdW0gMjI6MzQgc2NocmllYiBBbmRyZXcgUGluc2tpIHZpYSBHY2MtcGF0Y2hlcyA8 Z2NjLQ0KPiA+ID4gcGF0Y2hlc0BnY2MuZ251Lm9yZz46DQo+ID4gPiA+DQo+ID4gPiA+IO+7v09u IFRodSwgSnVuIDE2LCAyMDIyIGF0IDM6NTkgQU0gVGFtYXIgQ2hyaXN0aW5hIHZpYSBHY2MtcGF0 Y2hlcw0KPiA+ID4gPiA8Z2NjLXBhdGNoZXNAZ2NjLmdudS5vcmc+IHdyb3RlOg0KPiA+ID4gPj4N Cj4gPiA+ID4+IEhpIEFsbCwNCj4gPiA+ID4+DQo+ID4gPiA+PiBGb3IgSUVFRSA3NTQgZmxvYXRp bmcgcG9pbnQgZm9ybWF0cyB3ZSBjYW4gcmVwbGFjZSBhIHNlcXVlbmNlIG9mDQo+ID4gPiA+PiBh bHRlcm5hdGl2ZQ0KPiA+ID4gPj4gKy8tIHdpdGggZm5lZyBvZiBhIHdpZGVyIHR5cGUgZm9sbG93 ZWQgYnkgYW4gZmFkZC4gIFRoaXMNCj4gPiA+ID4+ICtlbGltaW5hdGVkIHRoZSBuZWVkIGZvcg0K PiA+ID4gPj4gdXNpbmcgYSBwZXJtdXRhdGlvbi4gIFRoaXMgcGF0Y2ggYWRkcyBhIG1hdGgucGQg cnVsZSB0byByZWNvZ25pemUNCj4gPiA+ID4+IGFuZCBkbyB0aGlzIHJld3JpdGluZy4NCj4gPiA+ ID4NCj4gPiA+ID4gSSBkb24ndCB0aGluayB0aGlzIGlzIGNvcnJlY3QuIFlvdSBkb24ndCBjaGVj ayB0aGUgZm9ybWF0IG9mIHRoZQ0KPiA+ID4gPiBmbG9hdGluZyBwb2ludCB0byBtYWtlIHN1cmUg dGhpcyBpcyB2YWxpZCAoZS5nLiBSRUFMX01PREVfRk9STUFUJ3MNCj4gPiA+ID4gc2lnbmJpdF9y dy9zaWduYml0X3JvIGZpZWxkKS4NCj4gPg0KPiA+IFllcyBJIG9yaWdpbmFsbHkgaGFkIHRoaXMg Y2hlY2ssIGJ1dCBJIHdvbmRlcmVkIHdoZXRoZXIgaXQgd291bGQgYmUgbmVlZGVkLg0KPiA+IEkn bSBub3QgYXdhcmUgb2YgYW55IHZlY3RvciBJU0Egd2hlcmUgdGhlIDMyLWJpdCBhbmQgMTYtYml0 IGZsb2F0cw0KPiA+IGRvbid0IGZvbGxvdyB0aGUgSUVFRSBkYXRhIGxheW91dCBhbmQgc2VtYW50 aWNzIGhlcmUuDQo+ID4NCj4gPiBNeSBwcmVmZXJlbmNlIHdvdWxkIGJlIHRvIGFzayB0aGUgdGFy Z2V0IGFib3V0IHRoZSBkYXRhIGZvcm1hdCBvZiBpdHMNCj4gPiB2ZWN0b3IgRmxvYXRpbmcgcG9p bnRzIGJlY2F1c2UgSSBkb24ndCB0aGluayB0aGVyZSBuZWVkcyB0byBiZSBhIGRpcmVjdA0KPiBj b3JyZWxhdGlvbiBiZXR3ZWVuDQo+ID4gVGhlIHNjYWxhciBhbmQgdmVjdG9yIGZvcm1hdHMgc3Ry aWN0bHkgc3BlYWtpbmcuICAgQnV0IEkga25vdyBSaWNoaSB3b24ndCBsaWtlDQo+IHRoYXQgc28N Cj4gPiB0aGUgY2hlY2sgaXMgcHJvYmFibHkgbW9zdCBsaWtlbHkuDQo+ID4NCj4gPiA+ID4gQWxz byB3b3VsZCBqdXN0IGJlIGJldHRlciBpZiB5b3UgZG8gdGhlIHhvciBpbiBpbnRlZ2VyIG1vZGUg KHVzaW5nDQo+ID4gPiA+IHNpZ25iaXRfcncgZmllbGQgZm9yIHRoZSBjb3JyZWN0IGJpdCk/DQo+ ID4gPiA+IEFuZCB0aGVuIG1ha2luZyBzdXJlIHRoZSB0YXJnZXQgb3B0aW1pemVzIHRoZSB4b3Ig dG8gdGhlIG5lZw0KPiA+ID4gPiBpbnN0cnVjdGlvbiB3aGVuIG5lZWRlZD8NCj4gPg0KPiA+IEkg ZG9uJ3QgcmVhbGx5IHNlZSB0aGUgYWR2YW50YWdlIG9mIHRoaXMgb25lLiBJdCdzIG5vdCByZW1v dmluZyBhbg0KPiA+IGluc3RydWN0aW9uIGFuZCBpdCdzIGFzc3VtaW5nIHRoZSB2ZWN0b3IgSVNB IGNhbiBkbyBpbnRlZ2VyIG9wcyBvbiBhDQo+ID4gZmxvYXRpbmcgcG9pbnQgdmVjdG9yIGNoZWFw bHkuICBTaW5jZSBtYXRjaC5wZCBkb2Vzbid0IGhhdmUgdGhlDQo+ID4gYWJpbGl0eSB0byBkbyBj b3N0aW5nIEknZCByYXRoZXIgbm90IGRvIHRoaXMuDQo+ID4NCj4gPiA+IEnigJltIGFsc28gd29y cmllZCBhYm91dCB1c2luZyBGUCBvcGVyYXRpb25zIGZvciB0aGUgbmVnYXRlIGhlcmUuDQo+ID4g PiBXaGVuIEAxIGlzIGNvbnN0YW50IGRvIHdlIHN0aWxsIGNvbnN0YW50IGZvbGQgdGhpcyBjb3Jy ZWN0bHk/DQo+ID4NCj4gPiBXZSBuZXZlciBkaWQgY29uc3RhbnQgZm9sZGluZyBmb3IgdGhpcyBj YXNlLCB0aGUgZm9sZGluZw0KPiA+IGluZnJhc3RydWN0dXJlIGRvZXNuJ3Qga25vdyBob3cgdG8g Zm9sZCB0aGUgVkVDX1BFUk1fRVhQUi4gIFNvIGV2ZW4NCj4gPiB3aXRoIEAwIGFuZCBAMSBjb25z dGFudCBubyBmb2xkaW5nIHRha2VzIHBsYWNlIGV2ZW4gdG9kYXkgaWYgd2UgdmVjdG9yaXplLg0K PiA+DQo+ID4gPg0KPiA+ID4gRm9yIGNvc3RpbmcgcHVycG9zZXMgaXQgd291bGQgYmUgbmljZSB0 byBtYWtlIHRoaXMgdmlzaWJsZSB0byB0aGUNCj4gdmVjdG9yaXplci4NCj4gPiA+DQo+ID4NCj4g PiBJIGluaXRpYWxseSB3YW50ZWQgdG8gdXNlIFZFQ19BRERTVUIgZm9yIHRoaXMsIGJ1dCBub3Rp Y2VkIGl0IGRpZG4ndA0KPiA+IHRyaWdnZXIgaW4gYSBudW1iZXIgb2YgcGxhY2UgSSBoYWQgZXhw ZWN0ZWQgaXQgdG8uIFdoaWxlIGxvb2tpbmcgaW50bw0KPiA+IGl0IEkgbm90aWNlZCBpdCdzIGJl Y2F1c2UgdGhpcyBmb2xsb3dzIHRoZSB4ODYgaW5zdHJ1Y3Rpb24gc2VtYW50aWNzIHNvIGxlZnQg aXQNCj4gYWxvbmUuDQo+ID4NCj4gPiBJdCBmZWx0IGxpa2UgYWRkaW5nIGEgdGhpcmQgcGF0dGVy biBoZXJlIG1pZ2h0IGJlIGNvbmZ1c2luZy4gSG93ZXZlciBJDQo+ID4gY2FuIGFsc28gdXNlIHRo ZSBTTFAgcGF0dGVybiBtYXRjaGVyIHRvIHJld3JpdGUgaXQgd2l0aG91dCBhbiBvcHRhYiBpZiB5 b3UNCj4gcHJlZmVyIHRoYXQ/DQo+ID4NCj4gPiBUaGUgb3BlcmF0aW9ucyB3aWxsIHRoZW4gYmUg Y29zdGVkIG5vcm1hbGx5Lg0KPiA+DQo+ID4gPiBBbHNvIGlzIHRoaXMgcmVhbGx5IGdvb2QgZm9y IGFsbCB0YXJnZXRzPyAgQ2FuIHRoZXJlIGJlIGlzc3VlcyB3aXRoDQo+ID4gPiByZWZvcm1hdHRp bmcgd2hlbiB1c2luZyBGUCBvcHMgYXMgaW4geW91ciBwYXRjaCBvciB3aXRoIHVzaW5nDQo+ID4g PiBpbnRlZ2VyIFhPUiBhcyBzdWdnZXN0ZWQgbWFraW5nIHRoaXMgbW9yZSBleHBlbnNpdmUgdGhh biB0aGUgYmxlbmQ/DQo+ID4NCj4gPiBJIGRvbid0IHRoaW5rIHdpdGggdGhlIGZwIG9wcyBhbG9u ZSwgIHNpbmNlIGl0J3MgdXNpbmcgdHdvIGZwIG9wcyBhbHJlYWR5IGFuZA0KPiBhZnRlciB0aGUg Y2hhbmdlIDIgZnAgb3BzLg0KPiA+IGFuZCBJIGNhbid0IGltYWdlIHRoYXQgYSB0YXJnZXQgd291 bGQgaGF2ZSBhIHNsb3cgLWEuDQo+IA0KPiBXb3VsZG4ndCBhIHRhcmdldCBuZWVkIHRvIHJlLWNo ZWNrIGlmIGxhbmVzIGFyZSBOYU4gb3IgZGVub3JtYWwgaWYgYWZ0ZXIgYQ0KPiBTRm1vZGUgbGFu ZSBvcGVyYXRpb24gYSBERm1vZGUgbGFuZSBvcGVyYXRpb24gZm9sbG93cz8gIElJUkMgdGhhdCBp cyB3aGF0DQo+IHVzdWFsbHkgbWFrZXMgcHVubmluZyAiaW50ZWdlciIgdmVjdG9ycyBhcyBGUCB2 ZWN0b3JzIGNvc3RseS4NCg0KSSBndWVzcyB0aGlzIHJlYWxseSBkZXBlbmRzIG9uIHRoZSB0YXJn ZXQuDQoNCj4gDQo+IE5vdGUgb25lIG9wdGlvbiB3b3VsZCBiZSB0byBlbWl0IGEgbXVsdGlwbHkg d2l0aCB7IDEsIC0xLCAxLCAtMSB9IG9uIEdJTVBMRQ0KPiB3aGVyZSB0aGVuIHRhcmdldHMgY291 bGQgb3B0LWluIHRvIGhhbmRsZSB0aGlzIHZpYSBhIERGbW9kZSBuZWdhdGUgdmlhIGENCj4gY29t YmluZSBwYXR0ZXJuPyAgTm90IHN1cmUgaWYgdGhpcyBjYW4gYmUgZXZlbiBkb25lIHN0YXJ0aW5n IGZyb20gdGhlIHZlYy0NCj4gcGVybSBSVEwgSUwuDQo+DQoNCkJ1dCBtdWx0aXBsaWVzIGNhbiBi ZSBzbyBleHBlbnNpdmUgdGhhdCB0aGUgVkVDX1BFUk1fRVhQUiB3b3VsZCBzdGlsbCBiZQ0KYmV0 dGVyLiAgQXQgbGVhc3QgYXMgeW91IHNheSwgdGhlIHRhcmdldCBjb3N0ZWQgZm9yIHRoYXQuIA0K DQo+IEkgZmVhciB3aGV0aGVyIChuZWc6VjJERiAoc3VicmVnOlYyREYgKHJlZzpWNFNGKSkpIGlz IGEgZ29vZCBpZGVhIHdpbGwNCj4gaGVhdmlseSBkZXBlbmQgb24gdGhlIHRhcmdldCBDUFUgKG5v dCBvbmx5IHRoZSBJU0EpLiAgRm9yIFJJU0MtViBmb3IgZXhhbXBsZQ0KPiBJIHRoaW5rIHRoZSBE RiBsYW5lcyBkbyBub3Qgb3ZlcmxhcCB3aXRoIHR3byBTRiBsYW5lcyAoc28gc2FtZSB3aXRoIGdj biBJDQo+IHRoaW5rKS4NCg0KUmlnaHQsIHNvIEkgdGhpbmsgdGhlIGNvbmNsdXNpb24gaXMgSSBu ZWVkIHRvIG1vdmUgdGhpcyB0byB0aGUgYmFja2VuZC4NCg0KVGhhbmtzLA0KVGFtYXINCg0KPiAN Cj4gUmljaGFyZC4NCj4gDQo+ID4gVGhlIFhPUiBvbmUgSSB3b3VsZG4ndCBkbywgYXMgdGhlIHZl Y3RvciBpbnQgYW5kIHZlY3RvciBmbG9hdCBjb3VsZA0KPiA+IGZvciBpbnN0YW5jZSBiZSBpbiBk aWZmZXJlbnQgcmVnaXN0ZXIgZmlsZXMgb3IgRlAgYmUgYSBjby1wcm9jZXNzb3INCj4gPiBldGMu ICBNaXhpbmcgRlAgYW5kIEludGVnZXIgb3BzIGluIHRoaXMgY2FzZSBJIGNhbiBpbWFnZSBjYW4g bGVhZCB0bw0KPiA+IHNvbWV0aGluZyBzdWJvcHRpbWFsLiAgQWxzbyBmb3IgdGFyZ2V0cyB3aXRo IG1hc2tpbmcvcHJlZGljYXRpb24gdGhlDQo+IFZFQ19QRVJNX0VYUCBjb3VsZCBwb3RlbnRpYWxs eSBiZSBsb3dlcmVkIHRvIGEgbWFzay9wcmVkaWNhdGUgaW4gdGhlDQo+IGJhY2tlbmQuIFdoZXJl YXMgdGhlIFhPUiBhcHByb2FjaCBpcyBmYXIgbGVzcyBsaWtlbHkuDQo+ID4NCj4gPiBUaGFua3Ms DQo+ID4gVGFtYXINCj4gPg0KPiA+ID4NCj4gPiA+IFJpY2hhcmQuDQo+ID4gPg0KPiA+ID4gPiBU aGFua3MsDQo+ID4gPiA+IEFuZHJldyBQaW5za2kNCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4N Cj4gPiA+ID4+DQo+ID4gPiA+PiBGb3INCj4gPiA+ID4+DQo+ID4gPiA+PiB2b2lkIGYgKGZsb2F0 ICpyZXN0cmljdCBhLCBmbG9hdCAqcmVzdHJpY3QgYiwgZmxvYXQgKnJlcywgaW50IG4pIHsNCj4g PiA+ID4+ICAgZm9yIChpbnQgaSA9IDA7IGkgPCAobiAmIC00KTsgaSs9MikNCj4gPiA+ID4+ICAg IHsNCj4gPiA+ID4+ICAgICAgcmVzW2krMF0gPSBhW2krMF0gKyBiW2krMF07DQo+ID4gPiA+PiAg ICAgIHJlc1tpKzFdID0gYVtpKzFdIC0gYltpKzFdOw0KPiA+ID4gPj4gICAgfQ0KPiA+ID4gPj4g fQ0KPiA+ID4gPj4NCj4gPiA+ID4+IHdlIGdlbmVyYXRlOg0KPiA+ID4gPj4NCj4gPiA+ID4+IC5M MzoNCj4gPiA+ID4+ICAgICAgICBsZHIgICAgIHExLCBbeDEsIHgzXQ0KPiA+ID4gPj4gICAgICAg IGxkciAgICAgcTAsIFt4MCwgeDNdDQo+ID4gPiA+PiAgICAgICAgZm5lZyAgICB2MS4yZCwgdjEu MmQNCj4gPiA+ID4+ICAgICAgICBmYWRkICAgIHYwLjRzLCB2MC40cywgdjEuNHMNCj4gPiA+ID4+ ICAgICAgICBzdHIgICAgIHEwLCBbeDIsIHgzXQ0KPiA+ID4gPj4gICAgICAgIGFkZCAgICAgeDMs IHgzLCAxNg0KPiA+ID4gPj4gICAgICAgIGNtcCAgICAgeDMsIHg0DQo+ID4gPiA+PiAgICAgICAg Ym5lICAgICAuTDMNCj4gPiA+ID4+DQo+ID4gPiA+PiBub3cgaW5zdGVhZCBvZjoNCj4gPiA+ID4+ DQo+ID4gPiA+PiAuTDM6DQo+ID4gPiA+PiAgICAgICAgbGRyICAgICBxMSwgW3gwLCB4M10NCj4g PiA+ID4+ICAgICAgICBsZHIgICAgIHEyLCBbeDEsIHgzXQ0KPiA+ID4gPj4gICAgICAgIGZhZGQg ICAgdjAuNHMsIHYxLjRzLCB2Mi40cw0KPiA+ID4gPj4gICAgICAgIGZzdWIgICAgdjEuNHMsIHYx LjRzLCB2Mi40cw0KPiA+ID4gPj4gICAgICAgIHRibCAgICAgdjAuMTZiLCB7djAuMTZiIC0gdjEu MTZifSwgdjMuMTZiDQo+ID4gPiA+PiAgICAgICAgc3RyICAgICBxMCwgW3gyLCB4M10NCj4gPiA+ ID4+ICAgICAgICBhZGQgICAgIHgzLCB4MywgMTYNCj4gPiA+ID4+ICAgICAgICBjbXAgICAgIHgz LCB4NA0KPiA+ID4gPj4gICAgICAgIGJuZSAgICAgLkwzDQo+ID4gPiA+Pg0KPiA+ID4gPj4gQm9v dHN0cmFwcGVkIFJlZ3Rlc3RlZCBvbiBhYXJjaDY0LW5vbmUtbGludXgtZ251IGFuZCBubyBpc3N1 ZXMuDQo+ID4gPiA+Pg0KPiA+ID4gPj4gVGhhbmtzIHRvIEdlb3JnZSBTdGVlZCBmb3IgdGhlIGlk ZWEuDQo+ID4gPiA+Pg0KPiA+ID4gPj4gT2sgZm9yIG1hc3Rlcj8NCj4gPiA+ID4+DQo+ID4gPiA+ PiBUaGFua3MsDQo+ID4gPiA+PiBUYW1hcg0KPiA+ID4gPj4NCj4gPiA+ID4+IGdjYy9DaGFuZ2VM b2c6DQo+ID4gPiA+Pg0KPiA+ID4gPj4gICAgICAgICogbWF0Y2gucGQ6IEFkZCBmbmVnL2ZhZGQg cnVsZS4NCj4gPiA+ID4+DQo+ID4gPiA+PiBnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoNCj4gPiA+ ID4+DQo+ID4gPiA+PiAgICAgICAgKiBnY2MudGFyZ2V0L2FhcmNoNjQvc2ltZC9hZGRzdWJfMS5j OiBOZXcgdGVzdC4NCj4gPiA+ID4+ICAgICAgICAqIGdjYy50YXJnZXQvYWFyY2g2NC9zdmUvYWRk c3ViXzEuYzogTmV3IHRlc3QuDQo+ID4gPiA+Pg0KPiA+ID4gPj4gLS0tIGlubGluZSBjb3B5IG9m IHBhdGNoIC0tDQo+ID4gPiA+PiBkaWZmIC0tZ2l0IGEvZ2NjL21hdGNoLnBkIGIvZ2NjL21hdGNo LnBkIGluZGV4DQo+ID4gPiA+Pg0KPiA+ID4NCj4gNTFiMGExYjU2MjQwOWFmNTM1ZTUzODI4YTEw YzMwYjhhM2UxYWUyZS4uYWYxYzk4ZDRhMjgzMWYzODI1OGQ2ZmMxYmINCj4gPiA+IGUNCj4gPiA+ ID4+IDgxMWM4ZWU2YzdjNmUgMTAwNjQ0DQo+ID4gPiA+PiAtLS0gYS9nY2MvbWF0Y2gucGQNCj4g PiA+ID4+ICsrKyBiL2djYy9tYXRjaC5wZA0KPiA+ID4gPj4gQEAgLTc2MTIsNiArNzYxMiw0OSBA QCBhbmQsDQo+ID4gPiA+PiAgIChzaW1wbGlmeSAocmVkdWMgKG9wIEAwIFZFQ1RPUl9DU1RAMSkp DQo+ID4gPiA+PiAgICAgKG9wIChyZWR1Yzp0eXBlIEAwKSAocmVkdWM6dHlwZSBAMSkpKSkNCj4g PiA+ID4+DQo+ID4gPiA+PiArLyogU2ltcGxpZnkgdmVjdG9yIGZsb2F0aW5nIHBvaW50IG9wZXJh dGlvbnMgb2YgYWx0ZXJuYXRpbmcgc3ViL2FkZA0KPiBwYWlycw0KPiA+ID4gPj4gKyAgIGludG8g dXNpbmcgYW4gZm5lZyBvZiBhIHdpZGVyIGVsZW1lbnQgdHlwZSBmb2xsb3dlZCBieSBhIG5vcm1h bA0KPiBhZGQuDQo+ID4gPiA+PiArICAgdW5kZXIgSUVFRSA3NTQgdGhlIGZuZWcgb2YgdGhlIHdp ZGVyIHR5cGUgd2lsbCBuZWdhdGUgZXZlcnkgZXZlbg0KPiBlbnRyeQ0KPiA+ID4gPj4gKyAgIGFu ZCB3aGVuIGRvaW5nIGFuIGFkZCB3ZSBnZXQgYSBzdWIgb2YgdGhlIGV2ZW4gYW5kIGFkZCBvZiBl dmVyeQ0KPiBvZGQNCj4gPiA+ID4+ICsgICBlbGVtZW50cy4gICovDQo+ID4gPiA+PiArKHNpbXBs aWZ5DQo+ID4gPiA+PiArICh2ZWNfcGVybSAocGx1czpjIEAwIEAxKSAobWludXMgQDAgQDEpIFZF Q1RPUl9DU1RAMikgIChpZg0KPiA+ID4gPj4gKyghVkVDVE9SX0lOVEVHRVJfVFlQRV9QICh0eXBl KSAmJiAhQllURVNfQklHX0VORElBTikNCj4gPiA+ID4+ICsgICh3aXRoDQo+ID4gPiA+PiArICAg ew0KPiA+ID4gPj4gKyAgICAgLyogQnVpbGQgYSB2ZWN0b3Igb2YgaW50ZWdlcnMgZnJvbSB0aGUg dHJlZSBtYXNrLiAgKi8NCj4gPiA+ID4+ICsgICAgIHZlY19wZXJtX2J1aWxkZXIgYnVpbGRlcjsN Cj4gPiA+ID4+ICsgICAgIGlmICghdHJlZV90b192ZWNfcGVybV9idWlsZGVyICgmYnVpbGRlciwg QDIpKQ0KPiA+ID4gPj4gKyAgICAgICByZXR1cm4gTlVMTF9UUkVFOw0KPiA+ID4gPj4gKw0KPiA+ ID4gPj4gKyAgICAgLyogQ3JlYXRlIGEgdmVjX3Blcm1faW5kaWNlcyBmb3IgdGhlIGludGVnZXIg dmVjdG9yLiAgKi8NCj4gPiA+ID4+ICsgICAgIHBvbHlfdWludDY0IG5lbHRzID0gVFlQRV9WRUNU T1JfU1VCUEFSVFMgKHR5cGUpOw0KPiA+ID4gPj4gKyAgICAgdmVjX3Blcm1faW5kaWNlcyBzZWwg KGJ1aWxkZXIsIDIsIG5lbHRzKTsNCj4gPiA+ID4+ICsgICB9DQo+ID4gPiA+PiArICAgKGlmIChz ZWwuc2VyaWVzX3AgKDAsIDIsIDAsIDIpKQ0KPiA+ID4gPj4gKyAgICAod2l0aA0KPiA+ID4gPj4g KyAgICAgew0KPiA+ID4gPj4gKyAgICAgICBtYWNoaW5lX21vZGUgdmVjX21vZGUgPSBUWVBFX01P REUgKHR5cGUpOw0KPiA+ID4gPj4gKyAgICAgICBhdXRvIGVsZW1fbW9kZSA9IEdFVF9NT0RFX0lO TkVSICh2ZWNfbW9kZSk7DQo+ID4gPiA+PiArICAgICAgIGF1dG8gbnVuaXRzID0gZXhhY3RfZGl2 IChHRVRfTU9ERV9OVU5JVFMgKHZlY19tb2RlKSwgMik7DQo+ID4gPiA+PiArICAgICAgIHRyZWUg c3R5cGU7DQo+ID4gPiA+PiArICAgICAgIHN3aXRjaCAoZWxlbV9tb2RlKQ0KPiA+ID4gPj4gKyAg ICAgICAgew0KPiA+ID4gPj4gKyAgICAgICAgY2FzZSBFX0hGbW9kZToNCj4gPiA+ID4+ICsgICAg ICAgICAgc3R5cGUgPSBmbG9hdF90eXBlX25vZGU7DQo+ID4gPiA+PiArICAgICAgICAgIGJyZWFr Ow0KPiA+ID4gPj4gKyAgICAgICAgY2FzZSBFX1NGbW9kZToNCj4gPiA+ID4+ICsgICAgICAgICAg c3R5cGUgPSBkb3VibGVfdHlwZV9ub2RlOw0KPiA+ID4gPj4gKyAgICAgICAgICBicmVhazsNCj4g PiA+ID4+ICsgICAgICAgIGRlZmF1bHQ6DQo+ID4gPiA+PiArICAgICAgICAgIHJldHVybiBOVUxM X1RSRUU7DQo+ID4gPiA+PiArICAgICAgICB9DQo+ID4gPiA+PiArICAgICAgIHRyZWUgbnR5cGUg PSBidWlsZF92ZWN0b3JfdHlwZSAoc3R5cGUsIG51bml0cyk7DQo+ID4gPiA+PiArICAgICAgIGlm ICghbnR5cGUpDQo+ID4gPiA+PiArICAgICAgICByZXR1cm4gTlVMTF9UUkVFOw0KPiA+ID4gPj4g KyAgICAgfQ0KPiA+ID4gPj4gKyAgICAgKHBsdXMgKHZpZXdfY29udmVydDp0eXBlIChuZWdhdGUg KHZpZXdfY29udmVydDpudHlwZSBAMSkpKQ0KPiA+ID4gPj4gKyBAMCkpKSkpKQ0KPiA+ID4gPj4g Kw0KPiA+ID4gPj4gKHNpbXBsaWZ5DQo+ID4gPiA+PiAgKHZlY19wZXJtIEAwIEAxIFZFQ1RPUl9D U1RAMikNCj4gPiA+ID4+ICAod2l0aA0KPiA+ID4gPj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hYXJjaDY0L3NpbWQvYWRkc3ViXzEuYw0KPiA+ID4gPj4gYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zaW1kL2FkZHN1Yl8xLmMNCj4gPiA+ID4+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+PiBpbmRleA0KPiA+ID4gPj4NCj4gPiA+DQo+IDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmYjkxYTM0YzQyMWJiZDI4OTRm YWEwZGINCj4gPiA+IGJmDQo+ID4gPiA+PiAxYjQ3YWQ0MzMxMGM0DQo+ID4gPiA+PiAtLS0gL2Rl di9udWxsDQo+ID4gPiA+PiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9z aW1kL2FkZHN1Yl8xLmMNCj4gPiA+ID4+IEBAIC0wLDAgKzEsNTYgQEANCj4gPiA+ID4+ICsvKiB7 IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiA+ID4gPj4gKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUt dGFyZ2V0IGFybV92OF8yYV9mcDE2X25lb25fb2sgfSAqLw0KPiA+ID4gPj4gKy8qIHsgZGctb3B0 aW9ucyAiLU9mYXN0IiB9ICovDQo+ID4gPiA+PiArLyogeyBkZy1hZGQtb3B0aW9ucyBhcm1fdjhf MmFfZnAxNl9uZW9uIH0gKi8NCj4gPiA+ID4+ICsvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rp b24tYm9kaWVzICIqKiIgIiIgIiIgeyB0YXJnZXQgeyBsZSB9DQo+ID4gPiA+PiArfSB9IH0gKi8N Cj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsjcHJhZ21hIEdDQyB0YXJnZXQgIitub3N2ZSINCj4gPiA+ ID4+ICsNCj4gPiA+ID4+ICsvKg0KPiA+ID4gPj4gKyoqIGYxOg0KPiA+ID4gPj4gKyoqIC4uLg0K PiA+ID4gPj4gKyoqICAgICBmbmVnICAgIHZbMC05XSsuMmQsIHZbMC05XSsuMmQNCj4gPiA+ID4+ ICsqKiAgICAgZmFkZCAgICB2WzAtOV0rLjRzLCB2WzAtOV0rLjRzLCB2WzAtOV0rLjRzDQo+ID4g PiA+PiArKiogLi4uDQo+ID4gPiA+PiArKi8NCj4gPiA+ID4+ICt2b2lkIGYxIChmbG9hdCAqcmVz dHJpY3QgYSwgZmxvYXQgKnJlc3RyaWN0IGIsIGZsb2F0ICpyZXMsIGludCBuKSB7DQo+ID4gPiA+ PiArICAgZm9yIChpbnQgaSA9IDA7IGkgPCAobiAmIC00KTsgaSs9MikNCj4gPiA+ID4+ICsgICAg ew0KPiA+ID4gPj4gKyAgICAgIHJlc1tpKzBdID0gYVtpKzBdICsgYltpKzBdOw0KPiA+ID4gPj4g KyAgICAgIHJlc1tpKzFdID0gYVtpKzFdIC0gYltpKzFdOw0KPiA+ID4gPj4gKyAgICB9DQo+ID4g PiA+PiArfQ0KPiA+ID4gPj4gKw0KPiA+ID4gPj4gKy8qDQo+ID4gPiA+PiArKiogZDE6DQo+ID4g PiA+PiArKiogLi4uDQo+ID4gPiA+PiArKiogICAgIGZuZWcgICAgdlswLTldKy40cywgdlswLTld Ky40cw0KPiA+ID4gPj4gKyoqICAgICBmYWRkICAgIHZbMC05XSsuOGgsIHZbMC05XSsuOGgsIHZb MC05XSsuOGgNCj4gPiA+ID4+ICsqKiAuLi4NCj4gPiA+ID4+ICsqLw0KPiA+ID4gPj4gK3ZvaWQg ZDEgKF9GbG9hdDE2ICpyZXN0cmljdCBhLCBfRmxvYXQxNiAqcmVzdHJpY3QgYiwgX0Zsb2F0MTYN Cj4gPiA+ID4+ICsqcmVzLCBpbnQgbikgew0KPiA+ID4gPj4gKyAgIGZvciAoaW50IGkgPSAwOyBp IDwgKG4gJiAtOCk7IGkrPTIpDQo+ID4gPiA+PiArICAgIHsNCj4gPiA+ID4+ICsgICAgICByZXNb aSswXSA9IGFbaSswXSArIGJbaSswXTsNCj4gPiA+ID4+ICsgICAgICByZXNbaSsxXSA9IGFbaSsx XSAtIGJbaSsxXTsNCj4gPiA+ID4+ICsgICAgfQ0KPiA+ID4gPj4gK30NCj4gPiA+ID4+ICsNCj4g PiA+ID4+ICsvKg0KPiA+ID4gPj4gKyoqIGUxOg0KPiA+ID4gPj4gKyoqIC4uLg0KPiA+ID4gPj4g KyoqICAgICBmYWRkICAgIHZbMC05XSsuMmQsIHZbMC05XSsuMmQsIHZbMC05XSsuMmQNCj4gPiA+ ID4+ICsqKiAgICAgZnN1YiAgICB2WzAtOV0rLjJkLCB2WzAtOV0rLjJkLCB2WzAtOV0rLjJkDQo+ ID4gPiA+PiArKiogICAgIGlucyAgICAgdlswLTldKy5kXFsxXF0sIHZbMC05XSsuZFxbMVxdDQo+ ID4gPiA+PiArKiogLi4uDQo+ID4gPiA+PiArKi8NCj4gPiA+ID4+ICt2b2lkIGUxIChkb3VibGUg KnJlc3RyaWN0IGEsIGRvdWJsZSAqcmVzdHJpY3QgYiwgZG91YmxlICpyZXMsDQo+ID4gPiA+PiAr aW50IG4pIHsNCj4gPiA+ID4+ICsgICBmb3IgKGludCBpID0gMDsgaSA8IChuICYgLTQpOyBpKz0y KQ0KPiA+ID4gPj4gKyAgICB7DQo+ID4gPiA+PiArICAgICAgcmVzW2krMF0gPSBhW2krMF0gKyBi W2krMF07DQo+ID4gPiA+PiArICAgICAgcmVzW2krMV0gPSBhW2krMV0gLSBiW2krMV07DQo+ID4g PiA+PiArICAgIH0NCj4gPiA+ID4+ICt9DQo+ID4gPiA+PiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FkZHN1Yl8xLmMNCj4gPiA+ID4+IGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2FkZHN1Yl8xLmMNCj4gPiA+ID4+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+PiBpbmRleA0KPiA+ID4gPj4NCj4gPiA+DQo+IDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhN2Y5ZDlkYjJjOGM5YTNlZmU1 Yzc5NTFhDQo+ID4gPiAzDQo+ID4gPiA+PiAxNGEyOWI3YTdhOTIyDQo+ID4gPiA+PiAtLS0gL2Rl di9udWxsDQo+ID4gPiA+PiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9z dmUvYWRkc3ViXzEuYw0KPiA+ID4gPj4gQEAgLTAsMCArMSw1MiBAQA0KPiA+ID4gPj4gKy8qIHsg ZGctZG8gY29tcGlsZSB9ICovDQo+ID4gPiA+PiArLyogeyBkZy1vcHRpb25zICItT2Zhc3QiIH0g Ki8NCj4gPiA+ID4+ICsvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIg IiIgIiIgeyB0YXJnZXQgeyBsZSB9DQo+ID4gPiA+PiArfSB9IH0gKi8NCj4gPiA+ID4+ICsNCj4g PiA+ID4+ICsvKg0KPiA+ID4gPj4gKyoqIGYxOg0KPiA+ID4gPj4gKyoqIC4uLg0KPiA+ID4gPj4g KyoqICAgICBmbmVnICAgIHpbMC05XSsuZCwgcFswLTldKy9tLCB6WzAtOV0rLmQNCj4gPiA+ID4+ ICsqKiAgICAgZmFkZCAgICB6WzAtOV0rLnMsIHpbMC05XSsucywgelswLTldKy5zDQo+ID4gPiA+ PiArKiogLi4uDQo+ID4gPiA+PiArKi8NCj4gPiA+ID4+ICt2b2lkIGYxIChmbG9hdCAqcmVzdHJp Y3QgYSwgZmxvYXQgKnJlc3RyaWN0IGIsIGZsb2F0ICpyZXMsIGludCBuKSB7DQo+ID4gPiA+PiAr ICAgZm9yIChpbnQgaSA9IDA7IGkgPCAobiAmIC00KTsgaSs9MikNCj4gPiA+ID4+ICsgICAgew0K PiA+ID4gPj4gKyAgICAgIHJlc1tpKzBdID0gYVtpKzBdICsgYltpKzBdOw0KPiA+ID4gPj4gKyAg ICAgIHJlc1tpKzFdID0gYVtpKzFdIC0gYltpKzFdOw0KPiA+ID4gPj4gKyAgICB9DQo+ID4gPiA+ PiArfQ0KPiA+ID4gPj4gKw0KPiA+ID4gPj4gKy8qDQo+ID4gPiA+PiArKiogZDE6DQo+ID4gPiA+ PiArKiogLi4uDQo+ID4gPiA+PiArKiogICAgIGZuZWcgICAgelswLTldKy5zLCBwWzAtOV0rL20s IHpbMC05XSsucw0KPiA+ID4gPj4gKyoqICAgICBmYWRkICAgIHpbMC05XSsuaCwgelswLTldKy5o LCB6WzAtOV0rLmgNCj4gPiA+ID4+ICsqKiAuLi4NCj4gPiA+ID4+ICsqLw0KPiA+ID4gPj4gK3Zv aWQgZDEgKF9GbG9hdDE2ICpyZXN0cmljdCBhLCBfRmxvYXQxNiAqcmVzdHJpY3QgYiwgX0Zsb2F0 MTYNCj4gPiA+ID4+ICsqcmVzLCBpbnQgbikgew0KPiA+ID4gPj4gKyAgIGZvciAoaW50IGkgPSAw OyBpIDwgKG4gJiAtOCk7IGkrPTIpDQo+ID4gPiA+PiArICAgIHsNCj4gPiA+ID4+ICsgICAgICBy ZXNbaSswXSA9IGFbaSswXSArIGJbaSswXTsNCj4gPiA+ID4+ICsgICAgICByZXNbaSsxXSA9IGFb aSsxXSAtIGJbaSsxXTsNCj4gPiA+ID4+ICsgICAgfQ0KPiA+ID4gPj4gK30NCj4gPiA+ID4+ICsN Cj4gPiA+ID4+ICsvKg0KPiA+ID4gPj4gKyoqIGUxOg0KPiA+ID4gPj4gKyoqIC4uLg0KPiA+ID4g Pj4gKyoqICAgICBmc3ViICAgIHpbMC05XSsuZCwgelswLTldKy5kLCB6WzAtOV0rLmQNCj4gPiA+ ID4+ICsqKiAgICAgbW92cHJmeCB6WzAtOV0rLmQsIHBbMC05XSsvbSwgelswLTldKy5kDQo+ID4g PiA+PiArKiogICAgIGZhZGQgICAgelswLTldKy5kLCBwWzAtOV0rL20sIHpbMC05XSsuZCwgelsw LTldKy5kDQo+ID4gPiA+PiArKiogLi4uDQo+ID4gPiA+PiArKi8NCj4gPiA+ID4+ICt2b2lkIGUx IChkb3VibGUgKnJlc3RyaWN0IGEsIGRvdWJsZSAqcmVzdHJpY3QgYiwgZG91YmxlICpyZXMsDQo+ ID4gPiA+PiAraW50IG4pIHsNCj4gPiA+ID4+ICsgICBmb3IgKGludCBpID0gMDsgaSA8IChuICYg LTQpOyBpKz0yKQ0KPiA+ID4gPj4gKyAgICB7DQo+ID4gPiA+PiArICAgICAgcmVzW2krMF0gPSBh W2krMF0gKyBiW2krMF07DQo+ID4gPiA+PiArICAgICAgcmVzW2krMV0gPSBhW2krMV0gLSBiW2kr MV07DQo+ID4gPiA+PiArICAgIH0NCj4gPiA+ID4+ICt9DQo+ID4gPiA+Pg0KPiA+ID4gPj4NCj4g PiA+ID4+DQo+ID4gPiA+Pg0KPiA+ID4gPj4gLS0NCj4gPg0KPiANCj4gLS0NCj4gUmljaGFyZCBC aWVuZXIgPHJndWVudGhlckBzdXNlLmRlPg0KPiBTVVNFIFNvZnR3YXJlIFNvbHV0aW9ucyBHZXJt YW55IEdtYkgsIEZyYW5rZW5zdHJhw59lIDE0NiwgOTA0NjENCj4gTnVlcm5iZXJnLCBHZXJtYW55 OyBHRjogSXZvIFRvdGV2LCBBbmRyZXcgTXllcnMsIEFuZHJldyBNY0RvbmFsZCwNCj4gQm91ZGll biBNb2VybWFuOyBIUkIgMzY4MDkgKEFHIE51ZXJuYmVyZykNCg==