From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 50DF9A0552; Wed, 1 Jun 2022 03:01:09 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0A85E40A84; Wed, 1 Jun 2022 03:01:09 +0200 (CEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2077.outbound.protection.outlook.com [40.107.21.77]) by mails.dpdk.org (Postfix) with ESMTP id AFD2740150 for ; Wed, 1 Jun 2022 03:01:07 +0200 (CEST) ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=L2BT+EgqCpevYJ3a4A8hjoC/2lSMe5YO8xJetJjUDKw8/NJIQ2yHeggHFVJPAubsX2Q3QIBioMG8/hLJvqNnydLGvYhKu2m+LYOUToYxKUl+J+KI+aoFt6Cv4Vkx+UaM6lXvlxXFtHkrW7xWlrdnypM/MvXTe8JGjzRw4VeLCzhSachw9voLuUrZy76g486zjfzkzjrACLPSkuXcFMP3tAEARVf/L/4/9WaKN6j2ORVUzxJm8NGRShhM+jj8P3RmWKK9nUQoLq0OGyLaCXAo3x+Qciew5m2NWeaT9Wlm4vS8FTsCHrfWTZRg2fBadXRMAyW8rt2Zfi45H619rLQ5sA== 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=8+TI3fsZc8ci4Z35tCI/obUVC/c5EHAibzlIRDOnIrQ=; b=lY0K+XMqEwTly85RhmCOP7kn5Ld4YZ0pw+Z+h6AWQKyR1JYxESQXjPcLqx4xEnT3FovHInaq4HM4zxU1ZlVpYqtlb22SqrT13qklxaEvFSo4A2S4ofuMnLFBcgZuQk6MNu+JDSIS4ND7BTJ6KrscG6cowQS/wSAqVlDSizaG9y3O062d4PW81pl9BuWaARNlVNziJzJ+eVTPL4SVjEtwtq4YHUYm0lG5C/CiUsiW+2CcIREPy6wi4HTKdnWeQcyNS+77sf8cqVaMrQqC6edJq7ZylDJdvmW25hwoxPlknlBcXFEiAfZRhYoz+YPOykjbhqlIfIUaWcsKMsybUnP5jA== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=dpdk.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]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8+TI3fsZc8ci4Z35tCI/obUVC/c5EHAibzlIRDOnIrQ=; b=jt0tlGG8ZBP9RF02qec1WB4MaB+pbAb+XKUDMkkSvGXwBuLw3h+B/SOLMMz23Gtphe04+cdjMZKFxHuUzUg7pQ2jhHiSq7WADFeC7+CHYZItEJAqbEVECcSL0nNvvdS/2Yrul3VnzGHvIX/gIY9Vn2gg5jmg6EdCR1qNWXWo5pA= Received: from DBBPR09CA0026.eurprd09.prod.outlook.com (2603:10a6:10:d4::14) by AM0PR08MB3732.eurprd08.prod.outlook.com (2603:10a6:208:109::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5293.13; Wed, 1 Jun 2022 01:01:05 +0000 Received: from DBAEUR03FT023.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:d4:cafe::96) by DBBPR09CA0026.outlook.office365.com (2603:10a6:10:d4::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5293.13 via Frontend Transport; Wed, 1 Jun 2022 01:01:05 +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 DBAEUR03FT023.mail.protection.outlook.com (100.127.142.253) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5314.12 via Frontend Transport; Wed, 1 Jun 2022 01:01:04 +0000 Received: ("Tessian outbound 4ab5a053767b:v120"); Wed, 01 Jun 2022 01:01:04 +0000 X-CR-MTA-TID: 64aa7808 Received: from d81e164dcbfc.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id E92B8DF9-8B3A-4871-B456-C874D2BFE985.1; Wed, 01 Jun 2022 01:00:53 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id d81e164dcbfc.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 01 Jun 2022 01:00:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=W1kIhGkAH8XqPvsDuehbvN2qb3WKODcSW7tHPfoHwMP7d/nBG4E2V8PMv9Sg4dTyv7ZKs/+hNFH3HPlKBfGHgZz9AaC09xAyGxP9o/4HcbffVA61Nz5578rOfL8fs11UqZdcUbYq7omBOeybqVCEiiR77dYgHzQL4syw5fgGZVLr+4jiHQizOiQ1KwXxKFMxFPCKU9KGzbUieNdamDqTaJgQb6RB7kdtb4Aj8yQQd23Bu0jx5hTR8vgsGRt5OPsMVYCXV3WXjnJDbqXFNMG7nAtnq96yWTaIEk7JKGp/iWLhkVF8XmNE1Euwl7GdFO0CwTBFRLF/57NeEuj/29I9+Q== 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=8+TI3fsZc8ci4Z35tCI/obUVC/c5EHAibzlIRDOnIrQ=; b=UVk2A7KvPqgZK9D3P0ZDUt26jdi2lWqji3FrLUu/bQVwCmXYT3xDqhRsTNzxDnh1jWqlTLlA3T9hSAkK4c9I/7g7msmU/MvONR+0mwhPbMzIJTdlIJYo3iB+kwP0FXHp9xLbIY2H/inJFnfwMNZSmhDrlDCk0JlNtOfoeNNo0KBLThkkcONHBri4250ox44eu9xX48XS1AXKuweG02rNnw09Va99YqymKQAMzuv/HTqVI++AtKOo44wXdjiDjLEEoInzvrz8sR3BYO6BOJelUg132WM94ZvEfPBwUSzjuBzziDaJ2cRj4vzgX0n6qpkjnYMpAh9RvRw5dsT9dIBmiA== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8+TI3fsZc8ci4Z35tCI/obUVC/c5EHAibzlIRDOnIrQ=; b=jt0tlGG8ZBP9RF02qec1WB4MaB+pbAb+XKUDMkkSvGXwBuLw3h+B/SOLMMz23Gtphe04+cdjMZKFxHuUzUg7pQ2jhHiSq7WADFeC7+CHYZItEJAqbEVECcSL0nNvvdS/2Yrul3VnzGHvIX/gIY9Vn2gg5jmg6EdCR1qNWXWo5pA= Received: from DBAPR08MB5814.eurprd08.prod.outlook.com (2603:10a6:10:1b1::6) by AM8PR08MB5796.eurprd08.prod.outlook.com (2603:10a6:20b:1d1::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5293.13; Wed, 1 Jun 2022 01:00:51 +0000 Received: from DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::f99f:a9c3:fe71:368a]) by DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::f99f:a9c3:fe71:368a%7]) with mapi id 15.20.5314.012; Wed, 1 Jun 2022 01:00:51 +0000 From: Honnappa Nagarahalli To: Konstantin Ananyev , Feifei Wang CC: nd , "dev@dpdk.org" , Ruifeng Wang , "honnappanagarahalli@gmail.com" , nd Subject: RE: [PATCH v1 0/5] Direct re-arming of buffers on receive side Thread-Topic: [PATCH v1 0/5] Direct re-arming of buffers on receive side Thread-Index: AQHYaOu4EddlA+nThkio6GVpTNxEK60tSI6AgAEaNPCABeakgIAFaLvA Date: Wed, 1 Jun 2022 01:00:51 +0000 Message-ID: References: <20220420081650.2043183-1-feifei.wang2@arm.com> <20220516061012.618787-1-feifei.wang2@arm.com> <5320c9dd-8f53-155e-7900-ff02bfa11b4d@yandex.ru> <48994ee9-74b4-7fcc-f61b-c8f45686a031@yandex.ru> In-Reply-To: <48994ee9-74b4-7fcc-f61b-c8f45686a031@yandex.ru> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 52CE85F9D16A1D4CA75F663EEC233DF3.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: 919e04fb-f19c-4f07-961e-08da436a3443 x-ms-traffictypediagnostic: AM8PR08MB5796:EE_|DBAEUR03FT023:EE_|AM0PR08MB3732: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: bcOfYXJe58yzH34vL7og2U5qFV9pl7r/c7UlhT9SAx1r7PGoRjgJ0vh6QGDgelW1fq6TKGwfYbUpV3MDHboj2nUx2aZ5tIGGKKd2tufXNb28CiGWSFe6Gs9EXC+nD2gQvU6nH6yslCJDjaj4dVSpclgOzFBxf7zN2X03xqj4QXcDRcaaGbWyHIrUZwWYo8eLarUGYwy2QJ/yitWJbgrDyTRsBudwYypNUyuJ7T5cvoXaS+4FgRmnTl3ql/YojHfSDQhHckolVk6cwclo9EwXUWtbXKZXaRzIXxpCNKM4kJTg41oG61Krgp3NoknAmu5jppQURs6kptkdmsoVxMwZwvebQ3hOfd29AwJTT1UQh2WZev4GRGfXe5qKNcQh2KJBOTqy1hRtFF5QaMxDCVbjhWOrVm+GEcBFyQ3Fwc3nMWbXbK2LTLv0sy+R12ZXku2hsBPZVhea3XKQ39xvn4B2Jso3R0vDsN4yOeE8/m1Voxdl/OmMGNL/dRJWZCDXqMyprgoIW0rpf/UbUMfjSDh/z5rlpfjDK4MXVOS3EX3rYM8dnUcZSBToeuG8YTJ8KFPgqnLYlpUF/fQCEHWp5oUe7aDYjKd8qE7gnJNUbUGr0x9MK0/IwuLUwyNDxVcVttg+JQH2ZRfxy7S3t/Mn/vYx9ZMYwdDg0dqw82ndna1sxuxmFOeLHmrlPnFbLjGieeeURecvKwRja8JYlyQ0SGuYUFEZ0T2KQGRTT5YgwnIYs8ZIS+NRCmQRDoLKbWNDNzCZ X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBAPR08MB5814.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(9686003)(38100700002)(66446008)(6636002)(8936002)(54906003)(316002)(64756008)(7696005)(66476007)(6506007)(110136005)(76116006)(4326008)(66946007)(8676002)(33656002)(122000001)(26005)(66556008)(38070700005)(2906002)(30864003)(71200400001)(52536014)(508600001)(186003)(5660300002)(966005)(86362001)(55016003)(83380400001)(23180200003); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB5796 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: DBAEUR03FT023.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: fbb94f37-7bc7-425b-e7eb-08da436a2c75 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: X59HK4WmnW628h4X/CGKL7NLzrsdJ6eBRULQlwf59dnW98WFBDvL3YYK0itfPEv2EWX7OnV1K/Fyodzbbv1rTywJj5NtLddUym5NhJB0rEz+O93f3WiXaqHFeAAqya5YmN+hZYF02VhXNpkulaDUd4IDqKN1Dd9E3g3BrTQpUEe0VJVhY63iq4MfSdmW3YbUGE/YBlO8IdGyG5Cd2aq0fZHtOk8F/fuSXCRBCR9E4HEe/U71iLi6TYpK/P66kjUKz8L61H7nGOQT5UnqxbS7KOb1buSqcBVuDwz4/SAW0jAWG+w+5RzzD/bF9ELjXBejF4YffiotwgyHMMhiqhc8daIHHMbmMKYaQ4PUxDC4G09BMiUuZQrUfQr6iuC5pm2Cm5DZDj+zT0D0nYkpN+sgNH91xARwcedy9LNlIXjq/rbT1jeYpprmUecSoPua6ro13v5OhHvLNCQCI+d7CcWE81e29aIaqTOetDcL4rdOcqv6Wo8odgqEa6ZTu4z5+rvzd2U0YVYOmxYgq/mEz+EsrqlOfBIaR9bnhDD+ThuNC5WMa18U1ZdwaM/OoIaBJhjznxC5EK/DT+e904rSAiNhLWY6jkW2MZNJMQI7cXIFGbz4blfx1M18hFsS8WBBPepCfB9FW1P0qzn7bqdqbKWL91l3W1eGMdt2TArxLVtH1/Qwu4dqCqX0T/5p+49N5UDWW/W/suWMZF6JSQSKjAb/vg== 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:(13230001)(4636009)(36840700001)(40470700004)(46966006)(40460700003)(6636002)(47076005)(30864003)(5660300002)(33656002)(36860700001)(83380400001)(110136005)(54906003)(336012)(316002)(966005)(2906002)(70586007)(4326008)(70206006)(55016003)(82310400005)(8936002)(86362001)(356005)(9686003)(26005)(81166007)(52536014)(8676002)(508600001)(7696005)(186003)(6506007)(23180200003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2022 01:01:04.8629 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 919e04fb-f19c-4f07-961e-08da436a3443 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: DBAEUR03FT023.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB3732 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org PHNuaXA+DQo+ID4NCj4gPj4NCj4gPj4gW2tvbnN0YW50aW4udi5hbmFueWV2QHlhbmRleC5ydSBh cHBlYXJzIHNpbWlsYXIgdG8gc29tZW9uZSB3aG8NCj4gPj4gcHJldmlvdXNseSBzZW50IHlvdSBl bWFpbCwgYnV0IG1heSBub3QgYmUgdGhhdCBwZXJzb24uIExlYXJuIHdoeSB0aGlzDQo+ID4+IGNv dWxkIGJlIGEgcmlzayBhdCBodHRwczovL2FrYS5tcy9MZWFybkFib3V0U2VuZGVySWRlbnRpZmlj YXRpb24uXQ0KPiA+Pg0KPiA+PiAxNi8wNS8yMDIyIDA3OjEwLCBGZWlmZWkgV2FuZyDQv9C40YjQ tdGCOg0KPiA+Pj4NCj4gPj4+Pj4gQ3VycmVudGx5LCB0aGUgdHJhbnNtaXQgc2lkZSBmcmVlcyB0 aGUgYnVmZmVycyBpbnRvIHRoZSBsY29yZQ0KPiA+Pj4+PiBjYWNoZSBhbmQgdGhlIHJlY2VpdmUg c2lkZSBhbGxvY2F0ZXMgYnVmZmVycyBmcm9tIHRoZSBsY29yZSBjYWNoZS4NCj4gPj4+Pj4gVGhl IHRyYW5zbWl0IHNpZGUgdHlwaWNhbGx5IGZyZWVzIDMyIGJ1ZmZlcnMgcmVzdWx0aW5nIGluDQo+ ID4+Pj4+IDMyKjg9MjU2QiBvZiBzdG9yZXMgdG8gbGNvcmUgY2FjaGUuIFRoZSByZWNlaXZlIHNp ZGUgYWxsb2NhdGVzIDMyDQo+ID4+Pj4+IGJ1ZmZlcnMgYW5kIHN0b3JlcyB0aGVtIGluIHRoZSBy ZWNlaXZlIHNpZGUgc29mdHdhcmUgcmluZywNCj4gPj4+Pj4gcmVzdWx0aW5nIGluIDMyKjg9MjU2 QiBvZiBzdG9yZXMgYW5kIDI1NkIgb2YgbG9hZCBmcm9tIHRoZSBsY29yZSBjYWNoZS4NCj4gPj4+ Pj4NCj4gPj4+Pj4gVGhpcyBwYXRjaCBwcm9wb3NlcyBhIG1lY2hhbmlzbSB0byBhdm9pZCBmcmVl aW5nIHRvL2FsbG9jYXRpbmcNCj4gPj4+Pj4gZnJvbSB0aGUgbGNvcmUgY2FjaGUuIGkuZS4gdGhl IHJlY2VpdmUgc2lkZSB3aWxsIGZyZWUgdGhlIGJ1ZmZlcnMNCj4gPj4+Pj4gZnJvbSB0cmFuc21p dCBzaWRlIGRpcmVjdGx5IGludG8gaXQncyBzb2Z0d2FyZSByaW5nLiBUaGlzIHdpbGwNCj4gPj4+ Pj4gYXZvaWQgdGhlIDI1NkIgb2YgbG9hZHMgYW5kIHN0b3JlcyBpbnRyb2R1Y2VkIGJ5IHRoZSBs Y29yZSBjYWNoZS4NCj4gPj4+Pj4gSXQgYWxzbyBmcmVlcyB1cCB0aGUgY2FjaGUgbGluZXMgdXNl ZCBieSB0aGUgbGNvcmUgY2FjaGUuDQo+ID4+Pj4+DQo+ID4+Pj4+IEhvd2V2ZXIsIHRoaXMgc29s dXRpb24gcG9zZXMgc2V2ZXJhbCBjb25zdHJhaW50czoNCj4gPj4+Pj4NCj4gPj4+Pj4gMSlUaGUg cmVjZWl2ZSBxdWV1ZSBuZWVkcyB0byBrbm93IHdoaWNoIHRyYW5zbWl0IHF1ZXVlIGl0IHNob3Vs ZA0KPiA+Pj4+PiB0YWtlIHRoZSBidWZmZXJzIGZyb20uIFRoZSBhcHBsaWNhdGlvbiBsb2dpYyBk ZWNpZGVzIHdoaWNoDQo+ID4+Pj4+IHRyYW5zbWl0IHBvcnQgdG8gdXNlIHRvIHNlbmQgb3V0IHRo ZSBwYWNrZXRzLiBJbiBtYW55IHVzZSBjYXNlcw0KPiA+Pj4+PiB0aGUgTklDIG1pZ2h0IGhhdmUg YSBzaW5nbGUgcG9ydCAoWzFdLCBbMl0sIFszXSksIGluIHdoaWNoIGNhc2UgYQ0KPiA+Pj4+PiBn aXZlbiB0cmFuc21pdCBxdWV1ZSBpcyBhbHdheXMgbWFwcGVkIHRvIGEgc2luZ2xlIHJlY2VpdmUg cXVldWUNCj4gPj4+Pj4gKDE6MSBSeCBxdWV1ZTogVHggcXVldWUpLiBUaGlzIGlzIGVhc3kgdG8g Y29uZmlndXJlLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBJZiB0aGUgTklDIGhhcyAyIHBvcnRzICh0aGVy ZSBhcmUgc2V2ZXJhbCByZWZlcmVuY2VzKSwgdGhlbiB3ZQ0KPiA+Pj4+PiB3aWxsIGhhdmUNCj4g Pj4+Pj4gMToyIChSWCBxdWV1ZTogVFggcXVldWUpIG1hcHBpbmcgd2hpY2ggaXMgc3RpbGwgZWFz eSB0byBjb25maWd1cmUuDQo+ID4+Pj4+IEhvd2V2ZXIsIGlmIHRoaXMgaXMgZ2VuZXJhbGl6ZWQg dG8gJ04nIHBvcnRzLCB0aGUgY29uZmlndXJhdGlvbg0KPiA+Pj4+PiBjYW4gYmUgbG9uZy4gTW9y ZSBvdmVyIHRoZSBQTUQgd291bGQgaGF2ZSB0byBzY2FuIGEgbGlzdCBvZg0KPiA+Pj4+PiB0cmFu c21pdCBxdWV1ZXMgdG8gcHVsbCB0aGUgYnVmZmVycyBmcm9tLg0KPiA+Pj4NCj4gPj4+PiBKdXN0 IHRvIHJlLWl0ZXJhdGUgc29tZSBnZW5lcmljIGNvbmNlcm5zIGFib3V0IHRoaXMgcHJvcG9zYWw6 DQo+ID4+Pj4gICAgLSBXZSBlZmZlY3RpdmVseSBsaW5rIFJYIGFuZCBUWCBxdWV1ZXMgLSB3aGVu IHRoaXMgZmVhdHVyZSBpcyBlbmFibGVkLA0KPiA+Pj4+ICAgICAgdXNlciBjYW4ndCBzdG9wIFRY IHF1ZXVlIHdpdGhvdXQgc3RvcHBpbmcgbGlua2VkIFJYIHF1ZXVlIGZpcnN0Lg0KPiA+Pj4+ICAg ICAgUmlnaHQgbm93IHVzZXIgaXMgZnJlZSB0byBzdGFydC9zdG9wIGFueSBxdWV1ZXMgYXQgaGlz IHdpbGwuDQo+ID4+Pj4gICAgICBJZiB0aGF0IGZlYXR1cmUgd2lsbCBhbGxvdyB0byBsaW5rIHF1 ZXVlcyBmcm9tIGRpZmZlcmVudCBwb3J0cywNCj4gPj4+PiAgICAgIHRoZW4gZXZlbiBwb3J0cyB3 aWxsIGJlY29tZSBkZXBlbmRlbnQgYW5kIHVzZXIgd2lsbCBoYXZlIHRvIHBheSBleHRyYQ0KPiA+ Pj4+ICAgICAgY2FyZSB3aGVuIG1hbmFnaW5nIHN1Y2ggcG9ydHMuDQo+ID4+Pg0KPiA+Pj4gW0Zl aWZlaV0gV2hlbiBkaXJlY3QgcmVhcm0gZW5hYmxlZCwgdGhlcmUgYXJlIHR3byBwYXRoIGZvciB0 aHJlYWQgdG8NCj4gPj4+IGNob29zZS4gSWYgdGhlcmUgYXJlIGVub3VnaCBUeCBmcmVlZCBidWZm ZXJzLCBSeCBjYW4gcHV0IGJ1ZmZlcnMNCj4gPj4+IGZyb20gVHguDQo+ID4+PiBPdGhlcndpc2Us IFJ4IHdpbGwgcHV0IGJ1ZmZlcnMgZnJvbSBtZW1wb29sIGFzIHVzdWFsLiBUaHVzLCB1c2VycyBk bw0KPiA+Pj4gbm90IG5lZWQgdG8gcGF5IG11Y2ggYXR0ZW50aW9uIG1hbmFnaW5nIHBvcnRzLg0K PiA+Pg0KPiA+PiBXaGF0IEkgYW0gdGFsa2luZyBhYm91dDogcmlnaHQgbm93IGRpZmZlcmVudCBw b3J0IG9yIGRpZmZlcmVudCBxdWV1ZXMNCj4gPj4gb2YgdGhlIHNhbWUgcG9ydCBjYW4gYmUgdHJl YXRlZCBhcyBpbmRlcGVuZGVudCBlbnRpdGllczoNCj4gPj4gaW4gZ2VuZXJhbCB1c2VyIGlzIGZy ZWUgdG8gc3RhcnQvc3RvcCAoYW5kIGV2ZW4gcmVjb25maWd1cmUgaW4gc29tZQ0KPiA+PiBjYXNl cykgb25lIGVudGl0eSB3aXRob3V0IG5lZWQgdG8gc3RvcCBvdGhlciBlbnRpdHkuDQo+ID4+IEku RSB1c2VyIGNhbiBzdG9wIGFuZCByZS1jb25maWd1cmUgVFggcXVldWUgd2hpbGUga2VlcCByZWNl aXZpbmcNCj4gPj4gcGFja2V0cyBmcm9tIFJYIHF1ZXVlLg0KPiA+PiBXaXRoIGRpcmVjdCByZS1h cm0gZW5hYmxlZCwgSSB0aGluayBpdCB3b3VsZG4ndCBiZSBwb3NzaWJsZSBhbnkgbW9yZToNCj4g Pj4gYmVmb3JlIHN0b3BwaW5nL3JlY29uZmlndXJpbmcgVFggcXVldWUgdXNlciB3b3VsZCBoYXZl IG1ha2Ugc3VyZSB0aGF0DQo+ID4+IGNvcnJlc3BvbmRpbmcgUlggcXVldWUgd291bGRuJ3QgYmUg dXNlZCBieSBkYXRhcGF0aC4NCj4gPiBJIGFtIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSBwcm9i bGVtIGJldHRlci4gRm9yIHRoZSBUWCBxdWV1ZSB0byBiZSBzdG9wcGVkLA0KPiB0aGUgdXNlciBt dXN0IGhhdmUgYmxvY2tlZCB0aGUgZGF0YSBwbGFuZSBmcm9tIGFjY2Vzc2luZyB0aGUgVFggcXVl dWUuDQo+IA0KPiBTdXJlbHkgaXQgaXMgdXNlciByZXNwb25zaWJpbGl0eSB0bm90IHRvIGNhbGwg dHhfYnVyc3QoKSBmb3Igc3RvcHBlZC9yZWxlYXNlZCBxdWV1ZS4NCj4gVGhlIHByb2JsZW0gaXMg dGhhdCB3aGlsZSBUWCBmb3IgdGhhdCBxdWV1ZSBpcyBzdG9wcGVkLCBSWCBmb3IgcmVsYXRlZCBx dWV1ZSBzdGlsbA0KPiBjYW4gY29udGludWUuDQo+IFNvIHJ4X2J1cnN0KCkgd2lsbCB0cnkgdG8g cmVhZC9tb2RpZnkgVFggcXVldWUgZGF0YSwgdGhhdCBtaWdodCBiZSBhbHJlYWR5IGZyZWVkLA0K PiBvciBzaW11bHRhbmVvdXNseSBtb2RpZmllZCBieSBjb250cm9sIHBhdGguDQpVbmRlcnN0b29k LCBhZ3JlZSBvbiB0aGUgaXNzdWUNCg0KPiANCj4gQWdhaW4sIGl0IGFsbCBjYW4gYmUgbWl0aWdh dGVkIGJ5IGNhcmVmdWxseSByZS1kZXNpZ25pbmcgYW5kIG1vZGlmeWluZyBjb250cm9sIGFuZA0K PiBkYXRhLXBhdGggaW5zaWRlIHVzZXIgYXBwIC0gYnkgZG9pbmcgZXh0cmEgY2hlY2tzIGFuZCBz eW5jaHJvbml6YXRpb25zLCBldGMuDQo+IEJ1dCBmcm9tIHByYWN0aWNhbCBwb2ludCAtIEkgcHJl c3VtZSBtb3N0IG9mIHVzZXJzIHNpbXBseSB3b3VsZCBhdm9pZCB1c2luZyB0aGlzDQo+IGZlYXR1 cmUgZHVlIGFsbCBwb3RlbnRpYWwgcHJvYmxlbXMgaXQgbWlnaHQgY2F1c2UuDQpUaGF0IGlzIHN1 YmplY3RpdmUsIGl0IGFsbCBkZXBlbmRzIG9uIHRoZSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMg dXNlcnMgc2VlIGluIHRoZWlyIGFwcGxpY2F0aW9uLg0KSU1PLCB0aGUgcGVyZm9ybWFuY2UgaW1w cm92ZW1lbnQgc2VlbiB3aXRoIHRoaXMgcGF0Y2ggaXMgd29ydGggZmV3IGNoYW5nZXMuDQoNCj4g DQo+ID4gTGlrZSBGZWlmZWkgc2F5cywgdGhlIFJYIHNpZGUgaGFzIHRoZSBub3JtYWwgcGFja2V0 IGFsbG9jYXRpb24gcGF0aCBzdGlsbCBhdmFpbGFibGUuDQo+ID4gQWxzbyB0aGlzIHNvdW5kcyBs aWtlIGEgY29ybmVyIGNhc2UgdG8gbWUsIHdlIGNhbiBoYW5kbGUgdGhpcyB0aHJvdWdoIGNoZWNr cyBpbg0KPiB0aGUgcXVldWVfc3RvcCBBUEkuDQo+IA0KPiBEZXBlbmRzLg0KPiBpZiBpdCB3b3Vs ZCBiZSBhbGxvd2VkIHRvIGxpbmsgcXVldWVzIG9ubHkgZnJvbSB0aGUgc2FtZSBwb3J0LCB0aGVu IHllcywgZXh0cmENCj4gY2hlY2tzIGZvciBxdWV1ZS1zdG9wIG1pZ2h0IGJlIGVub3VnaC4NCj4g QXMgcmlnaHQgbm93IERQREsgZG9lc24ndCBhbGxvdyB1c2VyIHRvIGNoYW5nZSBudW1iZXIgb2Yg cXVldWVzIHdpdGhvdXQNCj4gZGV2X3N0b3AoKSBmaXJzdC4NCj4gVGhvdWdoIGlmIGl0IHdvdWxk IGJlIGFsbG93ZWQgdG8gbGluayBxdWV1ZXMgZnJvbSBkaWZmZXJlbnQgcG9ydHMsIHRoZW4gc2l0 dWF0aW9uDQo+IHdpbGwgYmUgbXVjaCB3b3JzZS4NCj4gUmlnaHQgbm93IHBvcnRzIGFyZSB0b3Rh bGx5IGluZGVwZW5kZW50IGVudGl0aWVzIChleGNlcHQgc29tZSBzcGVjaWFsIGNhc2VzIGxpa2UN Cj4gbGluay1ib25kaW5nLCBldGMuKS4NCj4gQXMgb25lIHBvcnQgY2FuIGtlZXAgZG9pbmcgUlgv VFgsIHNlY29uZCBvbmUgY2FuIGJlIHN0b3BwZWQsIHJlLWNvbmZndXJlZCwNCj4gZXZlbiBkZXRh Y2hlZCwgYW5kIG5ld2x5IGF0dGFjaGVkIGRldmljZSBtaWdodCByZS11c2Ugc2FtZSBwb3J0IG51 bWJlci4NCkkgc2VlIHRoaXMgYXMgYSBzaW1pbGFyIHJlc3RyaWN0aW9uIHRvIHRoZSBvbmUgZGlz Y3Vzc2VkIGFib3ZlLiBEbyB5b3Ugc2VlIGFueSBpc3N1ZXMgaWYgd2UgZW5mb3JjZSB0aGlzIHdp dGggY2hlY2tzPw0KDQo+IA0KPiANCj4gPj4NCj4gPj4+DQo+ID4+Pj4gLSB2ZXJ5IGxpbWl0ZWQg dXNhZ2Ugc2NlbmFyaW8gLSBpdCB3aWxsIGhhdmUgYSBwb3NpdGl2ZSBlZmZlY3Qgb25seQ0KPiA+ Pj4+ICAgICB3aGVuIHdlIGhhdmUgYSBmaXhlZCBmb3J3YXJkaW5nIG1hcHBpbmc6IGFsbCAob3Ig bmVhcmx5IGFsbCkgcGFja2V0cw0KPiA+Pj4+ICAgICBmcm9tIHRoZSBSWCBxdWV1ZSBhcmUgZm9y d2FyZGVkIGludG8gdGhlIHNhbWUgVFggcXVldWUuDQo+ID4+Pg0KPiA+Pj4gW0ZlaWZlaV0gQWx0 aG91Z2ggdGhlIHVzYWdlIHNjZW5hcmlvIGlzIGxpbWl0ZWQsIHRoaXMgdXNhZ2Ugc2NlbmFyaW8N Cj4gPj4+IGhhcyBhIHdpZGUgcmFuZ2Ugb2YgYXBwbGljYXRpb25zLCBzdWNoIGFzIE5JQyB3aXRo IG9uZSBwb3J0Lg0KPiA+Pg0KPiA+PiB5ZXMsIHRoZXJlIGFyZSBOSUNzIHdpdGggb25lIHBvcnQs IGJ1dCBubyBndWFyYW50ZWUgdGhlcmUgd291bGRuJ3QgYmUNCj4gPj4gc2V2ZXJhbCBzdWNoIE5J Q3Mgd2l0aGluIHRoZSBzeXN0ZW0uDQo+ID4gV2hhdCBJIHNlZSBpbiBteSBpbnRlcmFjdGlvbnMg aXMsIGEgc2luZ2xlIE5JQy9EUFUgaXMgdW5kZXIgdXRpbGl6ZWQgZm9yIGEgMg0KPiBzb2NrZXQg c3lzdGVtLiBTb21lIGFyZSBhZGRpbmcgbW9yZSBzb2NrZXRzIHRvIHRoZSBzeXN0ZW0gdG8gYmV0 dGVyIHV0aWxpemUgdGhlDQo+IERQVS4gVGhlIE5JQyBiYW5kd2lkdGggY29udGludWVzIHRvIGdy b3cgc2lnbmlmaWNhbnRseS4gSSBkbyBub3QgdGhpbmsgdGhlcmUgd2lsbA0KPiBiZSBhIG11bHRp LURQVSBwZXIgc2VydmVyIHNjZW5hcmlvLg0KPiANCj4gDQo+IEludGVyZXN0aW5nLi4uIGZyb20g bXkgZXhwZXJpZW5jZSBpdCBpcyB2aXNhLXZlcnNhOg0KPiBpbiBtYW55IGNhc2VzIDIwMEdiL3Mg aXMgbm90IHRoYXQgbXVjaCB0aGVzZSBkYXlzIHRvIHNhdHVyYXRlIG1vZGVybiAyIHNvY2tldA0K PiB4ODYgc2VydmVyLg0KPiBUaG91Z2ggSSBzdXBwb3NlIGEgbG90IGRlcGVuZHMgb24gcGFydGlj dWxhciBIVyBhbmQgYWN0dWFsIHdvcmtsb2FkLg0KPiANCj4gPg0KPiA+Pg0KPiA+Pj4gRnVydHJo ZXJtb3JlLCBJIHRoaW5rIHRoaXMgaXMgYSB0cmFkZW9mZiBiZXR3ZWVuIHBlcmZvcm1hbmNlIGFu ZA0KPiA+Pj4gZmxleGliaWxpdHkuDQo+ID4+PiBPdXIgZ29hbCBpcyB0byBhY2hpZXZlIGJlc3Qg cGVyZm9ybWFuY2UsIHRoaXMgbWVhbnMgd2UgbmVlZCB0byBnaXZlDQo+ID4+PiB1cCBzb21lIGZs ZXhpYmlsaXR5IGRlY2lzaXZlbHkuIEZvciBleGFtcGxlIG9mICdGQVNUX0ZSRUUgTW9kZScsIGl0 DQo+ID4+PiBkZWxldGVzIG1vc3Qgb2YgdGhlIGJ1ZmZlciBjaGVjayAocmVmY250ID4gMSwgZXh0 ZXJuYWwgYnVmZmVyLCBjaGFpbg0KPiA+Pj4gYnVmZmVyKSwgY2hvb3NlcyBhIHNob3Jlc3QgcGF0 aCwgYW5kIHRoZW4gYWNoaWV2ZSBzaWduaWZpY2FudA0KPiA+Pj4gcGVyZm9ybWFuY2UNCj4gPj4g aW1wcm92ZW1lbnQuDQo+ID4+Pj4gV29uZGVyIGRpZCB5b3UgaGFkIGEgY2hhbmNlIHRvIGNvbnNp ZGVyIG1lbXBvb2wtY2FjaGUgWkMgQVBJLA0KPiA+Pj4+IHNpbWlsYXIgdG8gb25lIHdlIGhhdmUg Zm9yIHRoZSByaW5nPw0KPiA+Pj4+IEl0IHdvdWxkIGFsbG93IHVzIG9uIFRYIGZyZWUgcGF0aCB0 byBhdm9pZCBjb3B5aW5nIG1idWZzIHRvDQo+ID4+Pj4gdGVtcG9yYXJ5IGFycmF5IG9uIHRoZSBz dGFjay4NCj4gPj4+PiBJbnN0ZWFkIHdlIGNhbiBwdXQgdGhlbSBzdHJhaWdodCBmcm9tIFRYIFNX IHJpbmcgdG8gdGhlIG1lbXBvb2wgY2FjaGUuDQo+ID4+Pj4gVGhhdCBzaG91bGQgc2F2ZSBleHRy YSBzdG9yZS9sb2FkIGZvciBtYnVmIGFuZCBtaWdodCBoZWxwIHRvDQo+ID4+Pj4gYWNoaWV2ZSBz b21lIHBlcmZvcm1hbmNlIGdhaW4gd2l0aG91dCBieS1wYXNzaW5nIG1lbXBvb2wuDQo+ID4+Pj4g SXQgcHJvYmFibHkgd291bGRuJ3QgYmUgYXMgZmFzdCBhcyB3aGF0IHlvdSBwcm9wb3NpbmcsIGJ1 dCBtaWdodCBiZQ0KPiA+Pj4+IGZhc3QgZW5vdWdoIHRvIGNvbnNpZGVyIGFzIGFsdGVybmF0aXZl Lg0KPiA+Pj4+IEFnYWluLCBpdCB3b3VsZCBiZSBhIGdlbmVyaWMgb25lLCBzbyB3ZSBjYW4gYXZv aWQgYWxsIHRoZXNlDQo+ID4+Pj4gaW1wbGljYXRpb25zIGFuZCBsaW1pdGF0aW9ucy4NCj4gPj4+ DQo+ID4+PiBbRmVpZmVpXSBJIHRoaW5rIHRoaXMgaXMgYSBnb29kIHRyeS4gSG93ZXZlciwgdGhl IG1vc3QgaW1wb3J0YW50DQo+ID4+PiB0aGluZyBpcyB0aGF0IGlmIHdlIGNhbiBieXBhc3MgdGhl IG1lbXBvb2wgZGVjaXNpdmVseSB0byBwdXJzdWUgdGhlDQo+ID4+PiBzaWduaWZpY2FudCBwZXJm b3JtYW5jZSBnYWlucy4NCj4gPj4NCj4gPj4gSSB1bmRlcnN0YW5kIHRoZSBpbnRlbnRpb24sIGFu ZCBJIHBlcnNvbmFsbHkgdGhpbmsgdGhpcyBpcyB3cm9uZyBhbmQNCj4gPj4gZGFuZ2Vyb3VzIGF0 dGl0dWRlLg0KPiA+PiBXZSBoYXZlIG1lbXBvb2wgYWJzdHJhY3Rpb24gaW4gcGxhY2UgZm9yIHZl cnkgZ29vZCByZWFzb24uDQo+ID4+IFNvIHdlIG5lZWQgdG8gdHJ5IHRvIGltcHJvdmUgbWVtcG9v bCBwZXJmb3JtYW5jZSAoYW5kIEFQSSBpZg0KPiA+PiBuZWNlc3NhcnkpIGF0IGZpcnN0IHBsYWNl LCBub3QgdG8gYXZvaWQgaXQgYW5kIGJyZWFrIG91ciBvd24gcnVsZXMgYW5kDQo+IHJlY29tbWVu ZGF0aW9ucy4NCj4gPiBUaGUgYWJzdHJhY3Rpb24gY2FuIGJlIHRob3VnaHQgb2YgYXQgYSBoaWdo ZXIgbGV2ZWwuIGkuZS4gdGhlIGRyaXZlciBtYW5hZ2VzIHRoZQ0KPiBidWZmZXIgYWxsb2NhdGlv bi9mcmVlIGFuZCBpcyBoaWRkZW4gZnJvbSB0aGUgYXBwbGljYXRpb24uIFRoZSBhcHBsaWNhdGlv biBkb2VzDQo+IG5vdCBuZWVkIHRvIGJlIGF3YXJlIG9mIGhvdyB0aGVzZSBjaGFuZ2VzIGFyZSBp bXBsZW1lbnRlZC4NCj4gPg0KPiA+Pg0KPiA+Pg0KPiA+Pj4gRm9yIFpDLCB0aGVyZSBtYXliZSBh IHByb2JsZW0gZm9yIGl0IGluIGk0MGUuIFRoZSByZWFzb24gZm9yIHRoYXQNCj4gPj4+IHB1dCBU eCBidWZmZXJzIGludG8gdGVtcG9yYXJ5IGlzIHRoYXQgaTQwZV90eF9lbnRyeSBpbmNsdWRlcyBi dWZmZXINCj4gPj4+IHBvaW50ZXIgYW5kIGluZGV4Lg0KPiA+Pj4gVGh1cyB3ZSBjYW5ub3QgcHV0 IFR4IFNXX3JpbmcgZW50cnkgaW50byBtZW1wb29sIGRpcmVjdGx5LCB3ZSBuZWVkDQo+ID4+PiB0 byBmaXJzdGx0IGV4dHJhY3QgbWJ1ZiBwb2ludGVyLiBGaW5hbGx5LCB0aG91Z2ggd2UgdXNlIFpD LCB3ZSBzdGlsbA0KPiA+Pj4gY2FuJ3QgYXZvaWQgdXNpbmcgYSB0ZW1wb3Jhcnkgc3RhY2sgdG8g ZXh0cmFjdCBUeCBidWZmZXIgcG9pbnRlcnMuDQo+ID4+DQo+ID4+IFdoZW4gdGFsa2luZyBhYm91 dCBaQyBBUEkgZm9yIG1lbXBvb2wgY2FjaGUgSSBtZWFudCBzb21ldGhpbmcgbGlrZToNCj4gPj4g dm9pZCAqKiBtZW1wb29sX2NhY2hlX3B1dF96Y19zdGFydChzdHJ1Y3QgcnRlX21lbXBvb2xfY2Fj aGUgKm1jLA0KPiA+PiB1aW50MzJfdCAqbmJfZWxlbSwgdWludDMyX3QgZmxhZ3MpOyB2b2lkDQo+ ID4+IG1lbXBvb2xfY2FjaGVfcHV0X3pjX2ZpbmlzaChzdHJ1Y3QNCj4gPj4gcnRlX21lbXBvb2xf Y2FjaGUgKm1jLCB1aW50MzJfdCBuYl9lbGVtKTsgaS5lLiBfc3RhcnRfIHdpbGwgcmV0dXJuDQo+ ID4+IHVzZXIgYSBwb2ludGVyIGluc2lkZSBtcC1jYWNoZSB3aGVyZSB0byBwdXQgZnJlZSBlbGVt cyBhbmQgbWF4IG51bWJlcg0KPiA+PiBvZiBzbG90cyB0aGF0IGNhbiBiZSBzYWZlbHkgZmlsbGVk Lg0KPiA+PiBfZmluaXNoXyB3aWxsIHVwZGF0ZSBtYy0+bGVuLg0KPiA+PiBBcyBhbiBleGFtcGxl Og0KPiA+Pg0KPiA+PiAvKiBleHBlY3QgdG8gZnJlZSBOIG1idWZzICovDQo+ID4+IHVpbnQzMl90 IG4gPSBOOw0KPiA+PiB2b2lkICoqcCA9IG1lbXBvb2xfY2FjaGVfcHV0X3pjX3N0YXJ0KG1jLCAm biwgLi4uKTsNCj4gPj4NCj4gPj4gLyogZnJlZSB1cCB0byBuIGVsZW1zICovDQo+ID4+IGZvciAo aSA9IDA7IGkgIT0gbjsgaSsrKSB7DQo+ID4+DQo+ID4+ICAgICAvKiBnZXQgbmV4dCBmcmVlIG1i dWYgZnJvbSBzb21ld2hlcmUgKi8NCj4gPj4gICAgIG1iID0gZXh0cmFjdF9hbmRfcHJlZnJlZV9t YnVmKC4uLik7DQo+ID4+DQo+ID4+ICAgICAvKiBubyBtb3JlIGZyZWUgbWJ1ZnMgZm9yIG5vdyAq Lw0KPiA+PiAgICAgaWYgKG1iID09IE5VTEwpDQo+ID4+ICAgICAgICBicmVhazsNCj4gPj4NCj4g Pj4gICAgIHBbaV0gPSBtYjsNCj4gPj4gfQ0KPiA+Pg0KPiA+PiAvKiBmaW5hbGl6ZSBaQyBwdXQs IHdpdGggX2lfIGZyZWVkIGVsZW1zICovDQo+ID4+IG1lbXBvb2xfY2FjaGVfcHV0X3pjX2Zpbmlz aChtYywgaSk7DQo+ID4+DQo+ID4+IFRoYXQgd2F5LCBJIHRoaW5rIHdlIGNhbiBvdmVyY29tZSB0 aGUgaXNzdWUgd2l0aCBpNDBlX3R4X2VudHJ5IHlvdQ0KPiA+PiBtZW50aW9uZWQgYWJvdmUuIFBs dXMgaXQgbWlnaHQgYmUgdXNlZnVsIGluIG90aGVyIHNpbWlsYXIgcGxhY2VzLg0KPiA+Pg0KPiA+ PiBBbm90aGVyIGFsdGVybmF0aXZlIGlzIG9idmlvdXNseSB0byBzcGxpdCBpNDBlX3R4X2VudHJ5 IGludG8gdHdvDQo+ID4+IHN0cnVjdHMgKG9uZSBmb3IgbWJ1Ziwgc2Vjb25kIGZvciBpdHMgbWV0 YWRhdGEpIGFuZCBoYXZlIGEgc2VwYXJhdGUNCj4gPj4gYXJyYXkgZm9yIGVhY2ggb2YgdGhlbS4N Cj4gPj4gVGhvdWdoIHdpdGggdGhhdCBhcHByb2FjaCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBubyBw ZXJmIGRyb3BzIHdpbGwgYmUNCj4gPj4gaW50cm9kdWNlZCwgcGx1cyBwcm9iYWJseSBtb3JlIGNv ZGUgY2hhbmdlcyB3aWxsIGJlIHJlcXVpcmVkLg0KPiA+IENvbW1pdCAnNTE3MWI0ZWU2YjYiIGFs cmVhZHkgZG9lcyB0aGlzIChpbiBhIGRpZmZlcmVudCB3YXkpLCBidXQganVzdCBmb3INCj4gQVZY NTEyLiBVbmZvcnR1bmF0ZWx5LCBpdCBkb2VzIG5vdCByZWNvcmQgYW55IHBlcmZvcm1hbmNlIGlt cHJvdmVtZW50cy4gV2UNCj4gY291bGQgcG9ydCB0aGlzIHRvIEFybSBORU9OIGFuZCBsb29rIGF0 IHRoZSBwZXJmb3JtYW5jZS4NCg0K