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 26CA8A0542; Sat, 8 Oct 2022 16:30:43 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C62634021F; Sat, 8 Oct 2022 16:30:42 +0200 (CEST) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mails.dpdk.org (Postfix) with ESMTP id 4987A4021E for ; Sat, 8 Oct 2022 16:30:39 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1665239440; x=1696775440; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=IvbBQHQ4PpdGrY+SLRSh/dh2PRFWa5INMVb8+5AwdB8=; b=TaLzO2U4MHL2SLAoZkP1peiT0HYxqOJGw/II5TLIl/S41ZWUBslXsFa8 CizRRbYor7Uf/DgiibvVf9lUb5oq1mLduKJAYvFBJhp3Ul/80zeddWcA7 K/exlIewzg1DEOcS7A2U7pPscyACXdxhgByJdOC8wh8EzQhUcrF2Hr2c5 YcLj86RiJpob7wdttiSP2Z4kNy7VV2mNCuqRoBkwee8MBTChySu9vKrtc MrcpgGl6hT4M8jaqrRkzH13wBuUJGEoBtPXHJIMb0Fczaip0OGeXaLW7D BmeooFRXF9OLUymElUMvMrqA5LZpKErKewHfRlK9vTg2ywqX0FtrZzzRR g==; X-IronPort-AV: E=McAfee;i="6500,9779,10494"; a="368080751" X-IronPort-AV: E=Sophos;i="5.95,169,1661842800"; d="scan'208";a="368080751" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Oct 2022 07:30:36 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10494"; a="620566338" X-IronPort-AV: E=Sophos;i="5.95,169,1661842800"; d="scan'208";a="620566338" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga007.jf.intel.com with ESMTP; 08 Oct 2022 07:30:36 -0700 Received: from fmsmsx602.amr.corp.intel.com (10.18.126.82) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Sat, 8 Oct 2022 07:30:35 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Sat, 8 Oct 2022 07:30:35 -0700 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (104.47.73.174) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Sat, 8 Oct 2022 07:30:35 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=l1VNSv8PKWGbcLfyZQt2VSXnirYBv8VuWzdED7zeEYDm3oVSPmqrD4wlpEKlaDG+6NkYCgk6sH3dJSRBWFwc+HKOirih3xW/HZUZV1pnjQzCS11YjRC4DJLnr5SWKjt3bP2/fFXTSFfcm/8dOlkkog0Kx7UmnAxWrIiKBKieCUdbRx8SGqaPrdumh8sAVLuLpCRRBk/vESO0g5n6oMHEseMB0lovjmU98nHj07u9or55ugpQu1sRPU5emkuuj0fadwkwR2LrJOlE1RvrT6ROSzj0/6ZdZ12ve2E7FBWtMCoJ1mAW4ms668IzGHrrGWZyTn2zPIdydRqdUeDfqzRgzQ== 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=IvbBQHQ4PpdGrY+SLRSh/dh2PRFWa5INMVb8+5AwdB8=; b=OLa/AFrfh3XE3iDt2wN6Qpfn6tqwvSe1W/4nTemVPM5qLAPlTy2IA7INDZqM8pj8UCpVWkX4RjpeU8g946GopB5hQJi3V6MPUWrDFscAw962+52XtRHzowG3mF5IvPtAbZxN5mJh9Zt2KIwn1qL9WBQ7WTr4vmxppPgVCvy0G7sqoo73BHC+vP2D+dDKZ0YqghskUoDVqmYaCNooIAFtwQzXifYc1jTSY+ZIQl2u9RR98hy93OO1fUYXGjgxcJJZV/gY48GMrqR6dgBwOxZPfzmSr4Y1iyVLdhGxFsmkhandL4RDlbLSsUllWUeI3A4okbVsCbjviYJx+INMYc7MoQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from BN9PR11MB5513.namprd11.prod.outlook.com (2603:10b6:408:102::11) by PH8PR11MB7070.namprd11.prod.outlook.com (2603:10b6:510:216::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.19; Sat, 8 Oct 2022 14:30:32 +0000 Received: from BN9PR11MB5513.namprd11.prod.outlook.com ([fe80::817f:155b:4885:ccc3]) by BN9PR11MB5513.namprd11.prod.outlook.com ([fe80::817f:155b:4885:ccc3%4]) with mapi id 15.20.5709.015; Sat, 8 Oct 2022 14:30:32 +0000 From: "Ding, Xuan" To: Andrew Rybchenko , "Wang, YuanX" , "dev@dpdk.org" , Thomas Monjalon , Ferruh Yigit CC: "ferruh.yigit@xilinx.com" , "mdr@ashroe.eu" , "Li, Xiaoyun" , "Singh, Aman Deep" , "Zhang, Yuying" , "Zhang, Qi Z" , "Yang, Qiming" , "jerinjacobk@gmail.com" , "viacheslavo@nvidia.com" , "stephen@networkplumber.org" , "hpothula@marvell.com" , "Tang, Yaqi" , Wenxuan Wu Subject: RE: [PATCH v8 2/4] ethdev: introduce protocol hdr based buffer split Thread-Topic: [PATCH v8 2/4] ethdev: introduce protocol hdr based buffer split Thread-Index: AQHY2M+gjVESEDgq7UyBa/BaW9CRAK4BJnwAgANQPrA= Date: Sat, 8 Oct 2022 14:30:32 +0000 Message-ID: References: <20220812181552.2908067-1-yuanx.wang@intel.com> <20221005231836.215112-1-yuanx.wang@intel.com> <20221005231836.215112-3-yuanx.wang@intel.com> <2e121e35-0f42-beb4-2896-9d1d81b5fff1@oktetlabs.ru> In-Reply-To: <2e121e35-0f42-beb4-2896-9d1d81b5fff1@oktetlabs.ru> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.500.17 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BN9PR11MB5513:EE_|PH8PR11MB7070:EE_ x-ms-office365-filtering-correlation-id: af7a15ef-3b68-4538-58d0-08daa939a81c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: MUt+Nf3FnhL56Bu0MAibsnhhLzfEpql5uTO3jDzfVTA6CDg89Y5MuY8W+RzEVBqAUnTcxzpHBVlhXEzPGAuUNHHDa0550IHVFRyysgM8nz2inc7JgWwS6qN2pv7EHopX3CfCe1mPFhtFTStK1QXqLgGS+J6EaAMb419j4V2fBQzOjxItSbAVckYYjMRC7DrKdh8WofekqTKHVzYlZnn/7EsZ9gtjb8dDwotVNIM7SNo7ZNxEXDp4N/Mn3Dc7/bm3JQHSYnw1iod5IRgHUr/0YePJ7lV0o8sF4Kou3KueJIYH0nFfIUXGgl0jfM/U5q/U6Jdj3ILS7pp8IHj5vVrtvc3rPx/jnzjUJNuugEEMASNpWVEaNk2znkAy6f1SpL/rc7Fn1D/ll49ZgGEtr9PPkDE9YVZBx7DxNTrWHJO9s72v+FjKJI1N2k1L9ycn9m3r7qUNUFlYCs9TeP/0fhej8mle5JGwwH6KL9XopoTGh5MZIlrxoKOv1lEzrxK0B34VhlW+gWAmopYJVSkz31eDIv4ncqKVHBRBU2ui2HsNecVbBQJqQSB+Zf0pxwn44xHB5Vpb9wRks4PIlxS58zhSgZEAxnClH2/t5YBnl0C+ohFP2J7xNomYN1CwDsWIHYcF28olxDaHPOav4lQSFs5Ul6KBP2hwOO/zEAnHJEguE82YOI7IkLmK+wUCjY52MIRHzcWUZEdy++5kWM9li6dvnq5L9JXb/HANL3w0HWy8CfdWnD2/ok8yVEd1Tm0eGWd+tf6qiVStFt+55fypgC3epQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN9PR11MB5513.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(366004)(136003)(376002)(346002)(396003)(39860400002)(451199015)(7696005)(316002)(33656002)(110136005)(54906003)(86362001)(41300700001)(26005)(30864003)(82960400001)(7416002)(9686003)(83380400001)(38100700002)(38070700005)(122000001)(8676002)(52536014)(107886003)(76116006)(64756008)(66446008)(4326008)(66556008)(53546011)(186003)(66476007)(478600001)(55016003)(66946007)(5660300002)(71200400001)(8936002)(6506007)(2906002)(579004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?R2JXMm1jODFqYi9tUlBDbWFON2I2WERMdnRNK0dMUVVVaXdtTG52YkhrTkVy?= =?utf-8?B?YVFoL1lhSks1VHBRMGVZaXlIeFhUN3RDdTkrUlMyY3RtRGJ1TXJPZnU4M2Q1?= =?utf-8?B?SlNGd3NmbFZtbFM3OFJ6SDRzVFhLWjZBODFVZ1ZPZXZCaEw2RThjVWljYXpz?= =?utf-8?B?Qkd1RzhoWUppVnFFNDdQeVZZMjFKdzZIR2sxcFJ6MmpiQTJVWGNNdi9Jbnlp?= =?utf-8?B?dWtHcnRNcmhBVVo0Q29FSFhucDhwenA1ajBKM2toNjZodU0rU0lJV2JVblFw?= =?utf-8?B?cktaeGlUZ2pvdGVrK2M0SHl4UkM0dytrR3VvcUl1UkRqVjFxYUI1N2lpZ2lI?= =?utf-8?B?cjFmL1Q1Rk9UUnV3MVFWL2Z1TGRnVVZCSXlWVUc5d21BV2kzdzRPUDF6elpE?= =?utf-8?B?NGpkV0NlQXNtYm94b2VnRFRuOWRYOVdlT0h6N3lodWtrbzFqRTBlOUw1ckxY?= =?utf-8?B?ZC9GVFlLR3JtMGJ5V1FDM2VMK2NWWkVXaHhrcUNRVE85KzA0aEVwQThnbEth?= =?utf-8?B?V2d2UnA0Y0dMaDBZVmJhLzQvb0tyNDNKaG9TNDBpWUVkSlNVL1IvMEJwb0c3?= =?utf-8?B?Zkp0aDJiMFRLdkxEa251WHBoTWNyNjdZQ1lQSENZQVVaT0xuMjdNV0F2SUhE?= =?utf-8?B?ZDl0Y2xoaFZTaEp2bmhLVUJudVNCbklkTWsycS9ObmY2RytnTnVwODJvVVdH?= =?utf-8?B?c015QXBLdVZrZ29lZjJ0dGp5UGFvR21YVHNBd1UwUWloT0ZoMDhmdzVrQzlP?= =?utf-8?B?Ymp1Z2puYkVUN1pIUGQ2Rmg4eldWVDJ6N1FxNzBLRENDVXNBenM0bTF1VU9q?= =?utf-8?B?dTdsa01zM1JPUDloVVVid2lJRTRmYkRqOGdJdFR2by82MmZBT1RCWnl4Ukd3?= =?utf-8?B?Vm1oMHl6dmFjc2xCWUdkdjM5MCtNdWUyVU1yQW1ISi9rSW5tbGZIc0QrUG1s?= =?utf-8?B?MTE1SDlDemtaYm5TOW5nd0l0MUdBcHdnd3NrVFBZSDIyM2ZOOTRCNDV0azBw?= =?utf-8?B?QzlwUzNJcEdnR0NRSVFFN2dNRnJVZ0ZmYm4vbE1JSEpnUC80eGg4NVRjRktn?= =?utf-8?B?WXc3V3dwZE5MblF5SGowOEcrUHJocGU3UVhTWUp1ZzRJcWNPSEJhS0tjeE1X?= =?utf-8?B?VGZtcXlocnpoVWlyZml0QjVWTFhERlFIa1dzVzlmdzNVazBTUmhPM2JucjNx?= =?utf-8?B?d0svN2REc1ZoT1Q0V3MzSnRZdlREbVlMRjZncTZvSE1uWHlOSXFCWEJ1STMw?= =?utf-8?B?SmZUTmwzU2thZkRCejF1c1BYMnAxVWtnTlpRa0dEM1Z2YVNlbDZseUU1OStU?= =?utf-8?B?SWFQRWxxUEg2eXR0MmlCSm9idmRrT0dLV1BRRmFYcE9WS1V4cC9lY2hXdUhJ?= =?utf-8?B?OWhKamFVU3J1L2h5NDlocjNuUXBBbEE0N1czMVlqcHpEOFRkTkpQc0dNYUgy?= =?utf-8?B?TFkzYktkeU1nWXQyeWMxWGExa2V3Qm4raU1GQy9sQ2t3NTd2MkV4VHhXb2RE?= =?utf-8?B?TlNGVm5NU2RicUFITlFwMFJTVnRkSTEwYU1MWWJpVkxKRXZ1RWxWaFdFYUF4?= =?utf-8?B?eFFXZmt3NE5YYUFuVXdNNGtzenc2Nk0rUnVrK2FEdHpaM1hkb3dpUlQrZzVh?= =?utf-8?B?SDNPSDd0cDZtYkpRK3ZnUHRaUDFQQzFUV2l5MEZ3Nmd5WjYrb1ZGMDUzNGNS?= =?utf-8?B?UElBa0hlaEY4UVdsbjF4dHNKWmZiUWJxMjY0VXA3Rnd5SXdZcFltN0NSSnN0?= =?utf-8?B?VGdyYWpTbGUzQThyWmRmY1NOZlB6d2JhUlBEeU9PVDQ1aDdrdG1KYlg5V1l0?= =?utf-8?B?V2xPMXBSMW81TUh0LzFhOHlSVUxWdmJ6ZkRFWnJ1NytMaStSMXBPWGp3bXRR?= =?utf-8?B?d3QwRUVsY2xYL1FtdU5TRUkzKzFNZmprNGtNZDRuM0JrWWJXdXhTYzlneGdh?= =?utf-8?B?OTUvSnZMNy9TQldKU1Z4VVVxd0ZRamkvQmYvSStGUFBmdGFQeXpIcnh6M3VY?= =?utf-8?B?dklGTExKS0JoMTN4eXdnWDhnZmRORUVWWFV3TVhaR0w0NHBSa1dEN1A4RmhD?= =?utf-8?B?RGoxbzFIOVBIQ3Yrdm00eTVwZko4S0I3RDAxVWViZTM3ejRhYTJoMlhUU0xj?= =?utf-8?Q?QfX9bCLYJTIpYSlSoPIrwalf3?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR11MB5513.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: af7a15ef-3b68-4538-58d0-08daa939a81c X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Oct 2022 14:30:32.4694 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: n+ZpFoYZbeHgYqtaWpZN40osjai0EmJTuDdBhzbYvSDG4duRlTaB8IsTlJBunA6QnsjGvW0UbDjAju/j1kUzvw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR11MB7070 X-OriginatorOrg: intel.com 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 SGkgQW5kcmV3LA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEFuZHJl dyBSeWJjaGVua28gPGFuZHJldy5yeWJjaGVua29Ab2t0ZXRsYWJzLnJ1Pg0KPiBTZW50OiBUaHVy c2RheSwgT2N0b2JlciA2LCAyMDIyIDY6MTIgUE0NCj4gVG86IFdhbmcsIFl1YW5YIDx5dWFueC53 YW5nQGludGVsLmNvbT47IGRldkBkcGRrLm9yZzsgVGhvbWFzDQo+IE1vbmphbG9uIDx0aG9tYXNA bW9uamFsb24ubmV0PjsgRmVycnVoIFlpZ2l0IDxmZXJydWgueWlnaXRAYW1kLmNvbT4NCj4gQ2M6 IGZlcnJ1aC55aWdpdEB4aWxpbnguY29tOyBtZHJAYXNocm9lLmV1OyBMaSwgWGlhb3l1bg0KPiA8 eGlhb3l1bi5saUBpbnRlbC5jb20+OyBTaW5naCwgQW1hbiBEZWVwIDxhbWFuLmRlZXAuc2luZ2hA aW50ZWwuY29tPjsNCj4gWmhhbmcsIFl1eWluZyA8eXV5aW5nLnpoYW5nQGludGVsLmNvbT47IFpo YW5nLCBRaSBaDQo+IDxxaS56LnpoYW5nQGludGVsLmNvbT47IFlhbmcsIFFpbWluZyA8cWltaW5n LnlhbmdAaW50ZWwuY29tPjsNCj4gamVyaW5qYWNvYmtAZ21haWwuY29tOyB2aWFjaGVzbGF2b0Bu dmlkaWEuY29tOw0KPiBzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZzsgRGluZywgWHVhbiA8eHVh bi5kaW5nQGludGVsLmNvbT47DQo+IGhwb3RodWxhQG1hcnZlbGwuY29tOyBUYW5nLCBZYXFpIDx5 YXFpLnRhbmdAaW50ZWwuY29tPjsgV2VueHVhbiBXdQ0KPiA8d2VueHVhbngud3VAaW50ZWwuY29t Pg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHY4IDIvNF0gZXRoZGV2OiBpbnRyb2R1Y2UgcHJvdG9j b2wgaGRyIGJhc2VkIGJ1ZmZlciBzcGxpdA0KPiANCj4gT24gMTAvNi8yMiAwMjoxOCwgWXVhbiBX YW5nIHdyb3RlOg0KPiA+IEN1cnJlbnRseSwgUnggYnVmZmVyIHNwbGl0IHN1cHBvcnRzIGxlbmd0 aCBiYXNlZCBzcGxpdC4gV2l0aCBSeCBxdWV1ZQ0KPiA+IG9mZmxvYWQgUlRFX0VUSF9SWF9PRkZM T0FEX0JVRkZFUl9TUExJVCBlbmFibGVkIGFuZCBSeCBwYWNrZXQNCj4gc2VnbWVudA0KPiA+IGNv bmZpZ3VyZWQsIFBNRCB3aWxsIGJlIGFibGUgdG8gc3BsaXQgdGhlIHJlY2VpdmVkIHBhY2tldHMg aW50bw0KPiA+IG11bHRpcGxlIHNlZ21lbnRzLg0KPiA+DQo+ID4gSG93ZXZlciwgbGVuZ3RoIGJh c2VkIGJ1ZmZlciBzcGxpdCBpcyBub3Qgc3VpdGFibGUgZm9yIE5JQ3MgdGhhdCBkbw0KPiA+IHNw bGl0IGJhc2VkIG9uIHByb3RvY29sIGhlYWRlcnMuIEdpdmVuIGFuIGFyYml0cmFyaWx5IHZhcmlh YmxlIGxlbmd0aA0KPiA+IGluIFJ4IHBhY2tldCBzZWdtZW50LCBpdCBpcyBhbG1vc3QgaW1wb3Nz aWJsZSB0byBwYXNzIGEgZml4ZWQgcHJvdG9jb2wNCj4gPiBoZWFkZXIgdG8gZHJpdmVyLiBCZXNp ZGVzLCB0aGUgZXhpc3RlbmNlIG9mIHR1bm5lbGluZyByZXN1bHRzIGluIHRoZQ0KPiA+IGNvbXBv c2l0aW9uIG9mIGEgcGFja2V0IGlzIHZhcmlvdXMsIHdoaWNoIG1ha2VzIHRoZSBzaXR1YXRpb24g ZXZlbiB3b3JzZS4NCj4gPg0KPiA+IFRoaXMgcGF0Y2ggZXh0ZW5kcyBjdXJyZW50IGJ1ZmZlciBz cGxpdCB0byBzdXBwb3J0IHByb3RvY29sIGhlYWRlcg0KPiA+IGJhc2VkIGJ1ZmZlciBzcGxpdC4g QSBuZXcgcHJvdG9faGRyIGZpZWxkIGlzIGludHJvZHVjZWQgaW4gdGhlDQo+ID4gcmVzZXJ2ZWQg ZmllbGQgb2YgcnRlX2V0aF9yeHNlZ19zcGxpdCBzdHJ1Y3R1cmUgdG8gc3BlY2lmeSBwcm90b2Nv bA0KPiA+IGhlYWRlci4gVGhlIHByb3RvX2hkciBmaWVsZCBkZWZpbmVzIHRoZSBzcGxpdCBwb3Np dGlvbiBvZiBwYWNrZXQsDQo+ID4gc3BsaXR0aW5nIHdpbGwgYWx3YXlzIGhhcHBlbiBhZnRlciB0 aGUgcHJvdG9jb2wgaGVhZGVyIGRlZmluZWQgaW4gdGhlDQo+ID4gUnggcGFja2V0IHNlZ21lbnQu IFdoZW4gUnggcXVldWUgb2ZmbG9hZA0KPiA+IFJURV9FVEhfUlhfT0ZGTE9BRF9CVUZGRVJfU1BM SVQgaXMgZW5hYmxlZCBhbmQgY29ycmVzcG9uZGluZw0KPiBwcm90b2NvbA0KPiA+IGhlYWRlciBp cyBjb25maWd1cmVkLCBkcml2ZXIgd2lsbCBzcGxpdCB0aGUgaW5ncmVzcyBwYWNrZXRzIGludG8g bXVsdGlwbGUNCj4gc2VnbWVudHMuDQo+ID4NCj4gPiBFeGFtcGxlcyBmb3IgcHJvdG9faGRyIGZp ZWxkIGRlZmluZXM6DQo+ID4gVG8gc3BsaXQgYWZ0ZXIgRVRILUlQVjQtVURQLCBpdCBzaG91bGQg YmUgZGVmaW5lZCBhcyBwcm90b19oZHIgPQ0KPiA+IFJURV9QVFlQRV9MMl9FVEhFUiB8IFJURV9Q VFlQRV9MM19JUFY0X0VYVF9VTktOT1dOIHwNCj4gPiAgICAgICAgICAgICAgUlRFX1BUWVBFX0w0 X1VEUA0KPiA+DQo+ID4gRm9yIGlubmVyIEVUSC1JUFY0LVVEUCwgaXQgc2hvdWxkIGJlIGRlZmlu ZWQgYXMgcHJvdG9faGRyID0NCj4gPiBSVEVfUFRZUEVfVFVOTkVMX0dSRU5BVCB8IFJURV9QVFlQ RV9JTk5FUl9MMl9FVEhFUiB8DQo+ID4gICAgICAgICAgICAgIFJURV9QVFlQRV9JTk5FUl9MM19J UFY0X0VYVF9VTktOT1dOIHwNCj4gPiBSVEVfUFRZUEVfSU5ORVJfTDRfVURQDQo+ID4NCj4gPiBJ ZiB0aGUgcHJvdG9jb2wgaGVhZGVyIGlzIHJlcGVhdGVkIHdpdGggdGhlIHByZXZpb3VzbHkgZGVm aW5lZCBvbmUsDQo+ID4gdGhlIHJlcGVhdGVkIHBhcnQgY2FuIGJlIG9taXR0ZWQuIEZvciBleGFt cGxlLCBzcGxpdCBhZnRlciBFVEgsDQo+ID4gRVRILUlQVjQgYW5kIEVUSC1JUFY0LVVEUCwgaXQg c2hvdWxkIGJlIGRlZmluZWQgYXMNCj4gPiBwcm90b19oZHIwID0gUlRFX1BUWVBFX0wyX0VUSEVS DQo+ID4gcHJvdG9faGRyMSA9IFJURV9QVFlQRV9MM19JUFY0X0VYVF9VTktOT1dODQo+ID4gcHJv dG9faGRyMiA9IFJURV9QVFlQRV9MNF9VRFANCj4gDQo+IEFjaw0KPiANCj4gPg0KPiA+IHN0cnVj dCBydGVfZXRoX3J4c2VnX3NwbGl0IHsNCj4gPiAgICAgICAgICBzdHJ1Y3QgcnRlX21lbXBvb2wg Km1wOyAvKiBtZW1vcnkgcG9vbHMgdG8gYWxsb2NhdGUgc2VnbWVudCBmcm9tDQo+ICovDQo+ID4g ICAgICAgICAgdWludDE2X3QgbGVuZ3RoOyAvKiBzZWdtZW50IG1heGltYWwgZGF0YSBsZW5ndGgs DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmVzIHNwbGl0IHBvaW50 ICovDQo+ID4gICAgICAgICAgdWludDE2X3Qgb2Zmc2V0OyAvKiBkYXRhIG9mZnNldCBmcm9tIGJl Z2lubmluZw0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgbWJ1ZiBkYXRhIGJ1 ZmZlciAqLw0KPiA+ICAgICAgICAgIC8qKg0KPiA+IAkgKiBQcm90b19oZHIgZGVmaW5lcyBhIGJp dCBtYXNrIG9mIHRoZSBwcm90b2NvbCBzZXF1ZW5jZSBhcw0KPiA+ICAgICAgICAgICAqIFJURV9Q VFlQRV8qLCBjb25maWd1cmVzIHNwbGl0IHBvaW50LiBUaGUgbGFzdCBSVEVfUFRZUEUqDQo+ID4g ICAgICAgICAgICogaW4gdGhlIG1hc2sgaW5kaWNhdGVzIHRoZSBzcGxpdCBwb3NpdGlvbi4NCj4g PiAgICAgICAgICAgKiBJZiBvbmUgcHJvdG9jb2wgaGVhZGVyIGlzIGRlZmluZWQgdG8gc3BsaXQg cGFja2V0cyBpbnRvIHR3bw0KPiA+ICAgICAgICAgICAqIHNlZ21lbnRzLCBmb3Igbm9uLXR1bm5l bGluZyBwYWNrZXRzLCB0aGUgY29tcGxldGUgcHJvdG9jb2wNCj4gPiAgICAgICAgICAgKiBzZXF1 ZW5jZSBzaG91bGQgYmUgZGVmaW5lZC4NCj4gPiAgICAgICAgICAgKiBGb3IgdHVubmVsaW5nIHBh Y2tldHMsIGZvciBzaW1wbGljaXR5LA0KPiA+ICAgICAgICAgICAqIG9ubHkgdGhlIHR1bm5lbCBh bmQgaW5uZXIgcGFydCBvZiBjb21wbGUgcHJvdG9jb2wgc2VxdWVuY2UNCj4gPiAgICAgICAgICAg KiBpcyByZXF1aXJlZC4NCj4gPiAgICAgICAgICAgKiBJZiBzZXZlcmFsIHByb3RvY29sIGhlYWRl cnMgYXJlIGRlZmluZWQgdG8gc3BsaXQgcGFja2V0cyBpbnRvDQo+ID4gICAgICAgICAgICogbXVs dGktc2VnbWVudHMsIHRoZSByZXBlYXRlZCBwYXJ0cyBvZiBhZGphY2VudCBzZWdtZW50cw0KPiA+ ICAgICAgICAgICAqIHNob3VsZCBiZSBvbWl0dGVkLg0KPiA+IAkgKi8NCj4gPiAgICAgICAgICB1 aW50MzJfdCBwcm90b19oZHI7DQo+ID4gfTsNCj4gDQo+IFNvcnJ5LCBidXQgSSBzZWUgbm8gcmVh c29uIHRvIHJlcGVhdCBpbiB0aGUgZGVzY3J0aW9uLg0KPiBXaGF0IGlzIHRoZSBwdXJwb3NlIG9m IHRoZSBkdXBsaWNhdGlvbj8NCg0KVGhlIGludGVuc2lvbiBmb3IgcmVwZWF0aW5nIGhlcmUgaXMg dG8gbWFrZSB0aGUgY29tbWl0IGxvZyBtb3JlIGNvbXByZWhlbnNpdmUuDQpXZSBjYW4gcmVtb3Zl IHRoZXNlIGxpbmVzIHRvIG1ha2UgbG9nIGNsZWFuZXIuDQoNCj4gDQo+ID4NCj4gPiBJZiBwcm90 b2NvbCBoZWFkZXIgc3BsaXQgY2FuIGJlIHN1cHBvcnRlZCBieSBhIFBNRCwgdGhlDQo+ID4gcnRl X2V0aF9idWZmZXJfc3BsaXRfZ2V0X3N1cHBvcnRlZF9oZHJfcHR5cGVzIGZ1bmN0aW9uIGNhbiBi ZSB1c2UgdG8NCj4gPiBvYnRhaW4gYSBsaXN0IG9mIHRoZXNlIHByb3RvY29sIGhlYWRlcnMuDQo+ ID4NCj4gPiBGb3IgZXhhbXBsZSwgbGV0J3Mgc3VwcG9zZSB3ZSBjb25maWd1cmVkIHRoZSBSeCBx dWV1ZSB3aXRoIHRoZQ0KPiA+IGZvbGxvd2luZyBzZWdtZW50czoNCj4gPiAgICAgICAgICBzZWcw IC0gcG9vbDAsIHByb3RvX2hkcjA9UlRFX1BUWVBFX0wyX0VUSEVSIHwgUlRFX1BUWVBFX0wzX0lQ VjQsDQo+ID4gICAgICAgICAgICAgICAgIG9mZjA9MkINCj4gPiAgICAgICAgICBzZWcxIC0gcG9v bDEsIHByb3RvX2hkcjE9UlRFX1BUWVBFX0w0X1VEUCwgb2ZmMT0xMjhCDQo+ID4gICAgICAgICAg c2VnMiAtIHBvb2wyLCBvZmYxPTBCDQo+ID4NCj4gPiBUaGUgcGFja2V0IGNvbnNpc3RzIG9mIEVU SF9JUFY0X1VEUF9QQVlMT0FEIHdpbGwgYmUgc3BsaXQgbGlrZQ0KPiA+IGZvbGxvd2luZzoNCj4g PiAgICAgICAgICBzZWcwIC0gaXB2NCBoZWFkZXIgQCBSVEVfUEtUTUJVRl9IRUFEUk9PTSArIDIg aW4gbWJ1ZiBmcm9tDQo+IHBvb2wwDQo+ID4gICAgICAgICAgc2VnMSAtIHVkcCBoZWFkZXIgQCAx MjggaW4gbWJ1ZiBmcm9tIHBvb2wxDQo+ID4gICAgICAgICAgc2VnMiAtIHBheWxvYWQgQCAwIGlu IG1idWYgZnJvbSBwb29sMg0KPiA+DQo+ID4gTm90ZTogTklDIHdpbGwgb25seSBkbyBzcGxpdCB3 aGVuIHRoZSBwYWNrZXRzIGV4YWN0bHkgbWF0Y2ggYWxsIHRoZQ0KPiA+IHByb3RvY29sIGhlYWRl cnMgaW4gdGhlIHNlZ21lbnRzLiBGb3IgZXhhbXBsZSwgaWYgQVJQIHBhY2tldHMgcmVjZWl2ZWQN Cj4gPiB3aXRoIGFib3ZlIGNvbmZpZywgdGhlIE5JQyB3b24ndCBkbyBzcGxpdCBmb3IgQVJQIHBh Y2tldHMgc2luY2UgaXQNCj4gPiBkb2VzIG5vdCBjb250YWlucyBpcHY0IGhlYWRlciBhbmQgdWRw IGhlYWRlci4gVGhlc2UgcGFja2V0cyB3aWxsIGJlDQo+ID4gcHV0DQo+IA0KPiBpcHY0IC0+IElQ djQsIHVkcCAtPiBVRFAuDQo+IA0KPiA+IGludG8gdGhlIGxhc3QgdmFsaWQgbWVtcG9vbCwgd2l0 aCB6ZXJvIG9mZnNldC4NCj4gDQo+IFdoYXQgc2hvdWxkIGhhcHBlbiBpZiB3ZSBoYXZlIHNlZzEg LT4gRVRILCBzZWcyIC0+IElQdjQsIHNlZzMgLSByZW1haW5pbmcNCj4gYW5kIHJlY2VpdmUgQVJQ PyBXaWxsIHdlIHNlZSBFVEggaGVhZGVyIHNwbGl0IGluIHNlZzEgYW5kIGV2ZXJ5dGhpbmcgZWxz ZSBpbg0KPiB0aGUgc2VnMz8gSSB3b3VsZCBzYXkgeWVzLg0KPiANCj4gTWF5IGJlIHdlIHNob3Vs ZCBkZWZpbmUgaW50ZW5kZWQgYmVoYXZpb3IgdXNpbmcgcHNldWRvLWNvZGU/DQoNCldoZW4gTklD IHJlY2VpdmVzIHRoZXNlIHBhY2tldHMgKGxpa2UgQVJQKSwgd2UgdGhpbmsgdGhlIGV4cGVjdGVk IHNwbGl0IGJlaGF2aW9yIGlzIG5vdCBkZWNpZGVkIGJ5IGxpYnJhcnksIGJ1dCB0aGUgZHJpdmVy IGl0c2VsZi4NCkl0IGlzIHBvc3NpYmxlIGZvciBOSUMgdG8gZG8gc3BsaXQgaW4gZXhhY3QgbWF0 Y2ggYW5kIGxvbmdlc3QgbWF0Y2ggY2FzZXMuDQoNClRoZSBleGFjdCBtYXRjaCBtZWFucyBOSUMg b25seSBkbyBzcGxpdCB3aGVuIHRoZSBwYWNrZXRzIGV4YWN0bHkgbWF0Y2ggYWxsIHRoZSBwcm90 b2NvbCBoZWFkZXJzIGluIHRoZSBzZWdtZW50cy4NCk90aGVyd2lzZSwgdGhlc2UgcGFja2V0cyB3 b24ndCBiZSBzcGxpdCBhbmQgdGhlIHdob2xlIHBhY2tldCB3aWxsIGJlIHB1dCBpbnRvIHRoZSBs YXN0IHZhbGlkIG1lbXBvb2wsIHRoYXQncyB3aGF0IHdlIGRlZmluZWQuDQpUaGUgbG9uZ2VzdCBt YXRjaCBtZWFucyBOSUMgd2lsbCBzcGxpdCBhcyBsb25nIGFzIHRoZSBwYWNrZXRzIG1lZXQgc29t ZSBvZiB0aGUgcHJvdG9jb2wgaGVhZGVycy4NCg0KU2luY2UgYm90aCBjYXNlcyBhcmUgcG9zc2li bGUsIHNvIElNTyB0aGUgdHdvIHNjZW5hcmlvcyBzaG91bGQgYmUgYm90aCBkZWZpbmVkLiBUaGUg ZmluYWwgcmVzdWx0IG9mIHNwbGl0IHdpbGwgYWx3YXlzIGJlIG9uZSBvZiB0aGVtLg0KSG9wZSB0 byBnZXQgeW91ciBpbnNpZ2h0cy4NCg0KQXR0YWNoZWQgcHNldWRvLWNvZGUgZm9yIHR3byBjYXNl cyBiZWxvdzoNCkV4YWN0IG1hdGNoOg0KRk9SIGVhY2ggc2VnIGluIHNlZ3MgZXhjZXB0IGxhc3Qg b25lDQogICAgSUYgcHJvdG9faGRyIGlzIG5vdCBtYXRjaGVkIFRIRU4NCiAgICAgICAgQlJFQUsN CiAgICBFTkQgSUYNCkVORCBGT1INCklGIGxvb3AgYnJlYWtlZCBUSEVODQogICAgcHV0IHdob2xl IHBrdCBpbiBsYXN0IHNlZw0KRUxTRQ0KICAgIHB1dCBwcm90b2NvbCBoZWFkZXIgaW4gZWFjaCBz ZWcNCiAgICBwdXQgZXZlcnl0aGluZyBlbHNlIGluIGxhc3Qgc2VnDQpFTkQgSUYNCg0KTG9uZ2Vz dCBtYXRjaDoNCkZPUiBlYWNoIHNlZyBpbiBzZWdzIGV4Y2VwdCBsYXN0IG9uZQ0KICAgIElGIHBy b3RvX2hkciBpcyBtYXRjaGVkIFRIRU4NCiAgICAgICAgcHV0IHByb3RvY29sIGhlYWRlciBpbiBz ZWcNCiAgICBFTFNFDQogICAgICAgIEJSRUFLDQogICAgRU5EIElGDQpFTkQgRk9SDQpwdXQgZXZl cnl0aGluZyBlbHNlIGluIGxhc3Qgc2VnDQoNCj4gDQo+ID4NCj4gPiBOb3cgYnVmZmVyIHNwbGl0 IGNhbiBiZSBjb25maWd1cmVkIGluIHR3byBtb2Rlcy4gRm9yIGxlbmd0aCBiYXNlZA0KPiA+IGJ1 ZmZlciBzcGxpdCwgdGhlIG1wLCBsZW5ndGgsIG9mZnNldCBmaWVsZCBpbiBSeCBwYWNrZXQgc2Vn bWVudCBzaG91bGQNCj4gPiBiZSBjb25maWd1cmVkLCB3aGlsZSB0aGUgcHJvdG9faGRyIGZpZWxk IHdpbGwgYmUgaWdub3JlZC4NCj4gPiBGb3IgcHJvdG9jb2wgaGVhZGVyIGJhc2VkIGJ1ZmZlciBz cGxpdCwgdGhlIG1wLCBvZmZzZXQsIHByb3RvX2hkcg0KPiA+IGZpZWxkIGluIFJ4IHBhY2tldCBz ZWdtZW50IHNob3VsZCBiZSBjb25maWd1cmVkLCB3aGlsZSB0aGUgbGVuZ3RoDQo+ID4gZmllbGQg d2lsbCBiZSBpZ25vcmVkLg0KPiA+DQo+ID4gVGhlIHNwbGl0IGxpbWl0YXRpb25zIGltcG9zZWQg YnkgdW5kZXJseWluZyBkcml2ZXIgaXMgcmVwb3J0ZWQgaW4gdGhlDQo+ID4gcnRlX2V0aF9kZXZf aW5mby0+cnhfc2VnX2NhcGEgZmllbGQuIFRoZSBtZW1vcnkgYXR0cmlidXRlcyBmb3IgdGhlDQo+ ID4gc3BsaXQgcGFydHMgbWF5IGRpZmZlciBlaXRoZXIsIGRwZGsgbWVtb3J5IGFuZCBleHRlcm5h bCBtZW1vcnksDQo+IHJlc3BlY3RpdmVseS4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFl1YW4g V2FuZyA8eXVhbngud2FuZ0BpbnRlbC5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogWHVhbiBEaW5n IDx4dWFuLmRpbmdAaW50ZWwuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFdlbnh1YW4gV3UgPHdl bnh1YW54Lnd1QGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiAgIGRvYy9ndWlkZXMvcmVsX25vdGVz L3JlbGVhc2VfMjJfMTEucnN0IHwgIDQgKysNCj4gPiAgIGxpYi9ldGhkZXYvcnRlX2V0aGRldi5j ICAgICAgICAgICAgICAgIHwgODkgKysrKysrKysrKysrKysrKysrKysrKy0tLS0NCj4gPiAgIGxp Yi9ldGhkZXYvcnRlX2V0aGRldi5oICAgICAgICAgICAgICAgIHwgMzQgKysrKysrKysrLQ0KPiA+ ICAgMyBmaWxlcyBjaGFuZ2VkLCAxMTUgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pDQo+ ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yMl8xMS5y c3QNCj4gPiBiL2RvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjJfMTEucnN0DQo+ID4gaW5k ZXggMTQxZmQ5NDQyYi4uNGMzYTdmOGI4YiAxMDA2NDQNCj4gPiAtLS0gYS9kb2MvZ3VpZGVzL3Jl bF9ub3Rlcy9yZWxlYXNlXzIyXzExLnJzdA0KPiA+ICsrKyBiL2RvYy9ndWlkZXMvcmVsX25vdGVz L3JlbGVhc2VfMjJfMTEucnN0DQo+ID4gQEAgLTEyNyw2ICsxMjcsMTAgQEAgTmV3IEZlYXR1cmVz DQo+ID4NCj4gPiAgICAgKiBBZGRlZCBgYHJ0ZV9ldGhfYnVmZmVyX3NwbGl0X2dldF9zdXBwb3J0 ZWRfaGRyX3B0eXBlcygpYGAsIHRvIGdldA0KPiBzdXBwb3J0ZWQNCj4gPiAgICAgICBoZWFkZXIg cHJvdG9jb2xzIG9mIGEgUE1EIHRvIHNwbGl0Lg0KPiA+ICsgICogRXRoZGV2OiBUaGUgYGByZXNl cnZlZGBgIGZpZWxkIGluIHRoZSBgYHJ0ZV9ldGhfcnhzZWdfc3BsaXRgYCBzdHJ1Y3R1cmUgaXMN Cj4gPiArICAgIHJlcGxhY2VkIHdpdGggYGBwcm90b19oZHJgYCB0byBzdXBwb3J0IHByb3RvY29s IGhlYWRlciBiYXNlZCBidWZmZXINCj4gc3BsaXQuDQo+ID4gKyAgICBVc2VyIGNhbiBjaG9vc2Ug bGVuZ3RoIG9yIHByb3RvY29sIGhlYWRlciB0byBjb25maWd1cmUgYnVmZmVyIHNwbGl0DQo+ID4g KyAgICBhY2NvcmRpbmcgdG8gTklDJ3MgY2FwYWJpbGl0eS4NCj4gDQo+IEl0IHNvdW5kcyBsaWtl IGl0IHNob3VsZCBiZSBtZW50aW9uZWQgaW4gQVBJIGNoYW5nZSBzZWN0aW9uIGFzIHdlbGwuIEhl cmUgSSdkDQo+IGNvbmNlbnRyYXRlIG9uIHRvcCBsZXZlbCBmZWF0dXJlIG92ZXJ2aWV3IG9ubHku DQo+IEkuZS4gU3VwcG9ydGVkIHByb3RvY29sLWJhc2VkIGJ1ZmZlciBzcGxpdCB1c2luZyBhZGRl ZCBgYHByb3RvX2hkcmBgIGluDQo+IHN0cnVjdHVyZSBgYHJ0ZV9ldGhfcnhzZWdfc3BsaXRgYC4N Cg0KVGhhbmtzIGZvciB5b3VyIHN1Z2dlc3Rpb24sIHBsZWFzZSBzZWUgbmV4dCB2ZXJzaW9uLg0K DQo+IA0KPiA+DQo+ID4NCj4gPiAgIFJlbW92ZWQgSXRlbXMNCj4gPiBkaWZmIC0tZ2l0IGEvbGli L2V0aGRldi9ydGVfZXRoZGV2LmMgYi9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuYyBpbmRleA0KPiA+ IGVlM2I0OTA4ODkuLjYwZmU2ZWIyYmQgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2V0aGRldi9ydGVf ZXRoZGV2LmMNCj4gPiArKysgYi9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuYw0KPiA+IEBAIC0xNjUw LDE0ICsxNjUwLDE4IEBAIHJ0ZV9ldGhfZGV2X2lzX3JlbW92ZWQodWludDE2X3QgcG9ydF9pZCkN Cj4gPiAgIH0NCj4gPg0KPiA+ICAgc3RhdGljIGludA0KPiA+IC1ydGVfZXRoX3J4X3F1ZXVlX2No ZWNrX3NwbGl0KGNvbnN0IHN0cnVjdCBydGVfZXRoX3J4c2VnX3NwbGl0ICpyeF9zZWcsDQo+ID4g LQkJCSAgICAgdWludDE2X3Qgbl9zZWcsIHVpbnQzMl90ICptYnBfYnVmX3NpemUsDQo+ID4gLQkJ CSAgICAgY29uc3Qgc3RydWN0IHJ0ZV9ldGhfZGV2X2luZm8gKmRldl9pbmZvKQ0KPiA+ICtydGVf ZXRoX3J4X3F1ZXVlX2NoZWNrX3NwbGl0KHVpbnQxNl90IHBvcnRfaWQsDQo+ID4gKwkJCWNvbnN0 IHN0cnVjdCBydGVfZXRoX3J4c2VnX3NwbGl0ICpyeF9zZWcsDQo+ID4gKwkJCXVpbnQxNl90IG5f c2VnLCB1aW50MzJfdCAqbWJwX2J1Zl9zaXplLA0KPiA+ICsJCQljb25zdCBzdHJ1Y3QgcnRlX2V0 aF9kZXZfaW5mbyAqZGV2X2luZm8pDQo+ID4gICB7DQo+ID4gICAJY29uc3Qgc3RydWN0IHJ0ZV9l dGhfcnhzZWdfY2FwYSAqc2VnX2NhcGEgPSAmZGV2X2luZm8tDQo+ID5yeF9zZWdfY2FwYTsNCj4g PiAgIAlzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wX2ZpcnN0Ow0KPiA+ICAgCXVpbnQzMl90IG9mZnNl dF9tYXNrOw0KPiA+ICAgCXVpbnQxNl90IHNlZ19pZHg7DQo+ID4gKwlpbnQgcHR5cGVfY250Ow0K PiA+ICsJdWludDMyX3QgKnB0eXBlczsNCj4gPiArCWludCBpOw0KPiA+DQo+ID4gICAJaWYgKG5f c2VnID4gc2VnX2NhcGEtPm1heF9uc2VnKSB7DQo+ID4gICAJCVJURV9FVEhERVZfTE9HKEVSUiwN Cj4gPiBAQCAtMTY3NSw2ICsxNjc5LDcgQEAgcnRlX2V0aF9yeF9xdWV1ZV9jaGVja19zcGxpdChj b25zdCBzdHJ1Y3QNCj4gcnRlX2V0aF9yeHNlZ19zcGxpdCAqcnhfc2VnLA0KPiA+ICAgCQlzdHJ1 Y3QgcnRlX21lbXBvb2wgKm1wbCA9IHJ4X3NlZ1tzZWdfaWR4XS5tcDsNCj4gPiAgIAkJdWludDMy X3QgbGVuZ3RoID0gcnhfc2VnW3NlZ19pZHhdLmxlbmd0aDsNCj4gPiAgIAkJdWludDMyX3Qgb2Zm c2V0ID0gcnhfc2VnW3NlZ19pZHhdLm9mZnNldDsNCj4gPiArCQl1aW50MzJfdCBwcm90b19oZHIg PSByeF9zZWdbc2VnX2lkeF0ucHJvdG9faGRyOw0KPiA+DQo+ID4gICAJCWlmIChtcGwgPT0gTlVM TCkgew0KPiA+ICAgCQkJUlRFX0VUSERFVl9MT0coRVJSLCAibnVsbCBtZW1wb29sIHBvaW50ZXJc biIpOw0KPiBAQCAtMTcwOCwxMw0KPiA+ICsxNzEzLDc1IEBAIHJ0ZV9ldGhfcnhfcXVldWVfY2hl Y2tfc3BsaXQoY29uc3Qgc3RydWN0DQo+IHJ0ZV9ldGhfcnhzZWdfc3BsaXQgKnJ4X3NlZywNCj4g PiAgIAkJfQ0KPiA+ICAgCQlvZmZzZXQgKz0gc2VnX2lkeCAhPSAwID8gMCA6IFJURV9QS1RNQlVG X0hFQURST09NOw0KPiA+ICAgCQkqbWJwX2J1Zl9zaXplID0gcnRlX3BrdG1idWZfZGF0YV9yb29t X3NpemUobXBsKTsNCj4gPiAtCQlsZW5ndGggPSBsZW5ndGggIT0gMCA/IGxlbmd0aCA6ICptYnBf YnVmX3NpemU7DQo+ID4gLQkJaWYgKCptYnBfYnVmX3NpemUgPCBsZW5ndGggKyBvZmZzZXQpIHsN Cj4gPiAtCQkJUlRFX0VUSERFVl9MT0coRVJSLA0KPiA+IC0JCQkJICAgICAgICIlcyBtYnVmX2Rh dGFfcm9vbV9zaXplICV1IDwgJXUNCj4gKHNlZ21lbnQgbGVuZ3RoPSV1ICsgc2VnbWVudCBvZmZz ZXQ9JXUpXG4iLA0KPiA+IC0JCQkJICAgICAgIG1wbC0+bmFtZSwgKm1icF9idWZfc2l6ZSwNCj4g PiAtCQkJCSAgICAgICBsZW5ndGggKyBvZmZzZXQsIGxlbmd0aCwgb2Zmc2V0KTsNCj4gPiAtCQkJ cmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJCWlmIChwcm90b19oZHIgPiAwKSB7DQo+IA0K PiBwcm90b19oZHIgIT0gMCwgcGxlYXNlLiBJIGtub3cgdGhhdCBpdCBpcyB0aGUgc2FtZSwgYnV0 ICE9IDAgcmFpc2VzIGEgYml0IGxlc3MNCj4gcXVlc3Rpb24gaWYgdGhlIGZpZWxkIGlzIHNpZ25l ZCBvciB1bnNpZ25lZC4NCg0KR2V0IGl0Lg0KDQo+IA0KPiBBcyB0aGUgZmlyc3QgY29uZGl0aW9u IGhlcmUgd2Ugc2hvdWxkIGNoZWNrIGlmIHByb3RvY29sLWJhc2VkIHNwbGl0IGlzDQo+IHN1cHBv cnRlZCBhdCBhbGwgKHNlZSBub3RlIGFib3V0IHNlcGFyYXRlIGhlbHBlciBmdW5jdGlvbiBiZWxv dykuDQo+IA0KPiA+ICsJCQkvKiBTcGxpdCBiYXNlZCBvbiBwcm90b2NvbCBoZWFkZXJzLiAqLw0K PiA+ICsJCQlpZiAobGVuZ3RoICE9IDApIHsNCj4gPiArCQkJCVJURV9FVEhERVZfTE9HKEVSUiwN Cj4gPiArCQkJCQkiRG8gbm90IHNldCBsZW5ndGggc3BsaXQgYW5kIHByb3RvY29sDQo+IHNwbGl0 IHdpdGhpbiBhIHNlZ21lbnRcbiINCj4gPiArCQkJCQkpOw0KPiA+ICsJCQkJcmV0dXJuIC1FSU5W QUw7DQo+ID4gKwkJCX0NCj4gPiArDQo+ID4gKwkJCWlmIChzZWdfaWR4ID09IG5fc2VnIC0gMSkg ew0KPiA+ICsJCQkJUlRFX0VUSERFVl9MT0coRVJSLA0KPiA+ICsJCQkJCSJUaGUgcHJvdG9faGRy IGluIHRoZSBsYXN0IHNlZ21lbnQNCj4gc2hvdWxkIGJlIDBcbiINCj4gPiArCQkJCQkpOw0KPiA+ ICsJCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwkJCX0NCj4gDQo+IEkgdGhpbmsgaGVyZSB3ZSBz aG91bGQgY2hlY2sgaWYgd2UgaGF2ZSBzZWVuIGFueSBzZWdtZW50IHdpdGggcHJvdG9faGRyID09 DQo+IDAgYmVmb3JlLiBJZiBzbywgd2UgY2FuJ3QgZG8gcHJvdG9jb2wgYmFzZWQgc3BsaXQgYW55 IG1vcmUuIFNpbmNlIHdlIG5lZWQgdG8NCj4gY29sbGVjdCBhbHJlYWR5IHNwbGl0IHByb3Rjb2xz IChwcmV2X3Byb3RvX2hkcnMpLCBJIHdvdWxkIHVzZSB0aGUgdmFyaWFibGUgYXMgYQ0KPiBtYXJr ZXIgYW5kIHNldCBpdCB0byBhbGwgMSdzIE1BU0sgYXMgc29vbiBhcw0KPiBwcm90b19oZHI9PTAg bWV0Lg0KPiANCj4gU28sIHRoZSBjb25kaXRpb24gd2lsbCBiZQ0KPiBpZiAoKHByb3RvX2hkciAm IHByZXZfcHJvdG9faGRycykgIT0gMCkNCj4gDQo+IFNvLCBpdCB3aWxsIGNoZWNrIHR3byBzaW5j ZSBubyByZXBlYXQgb2YgcHJldmlvdSBwcm90b2NvbCBoZWFkZXJzIHdoaWNoIGFyZQ0KPiBhbHJl YWR5IHNwbGl0IGFuZCBubyBwdG90by1zcGxpdCBhZnRlciBsZW5ndGgtYmFzZWQgc3BsaXQuDQoN ClRoYW5rcyBmb3IgeW91ciBzdWdnZXN0aW9uLg0KVGhlIGludHJvZHVjdGlvbiBvZiBwcmV2X3By b3RvX2hkcnMgaXMgYSBnb29kIGlkZWEsIHdoaWNoIGhlbHBzIHRvIHNvbHZlIHRoZSB0d28gaXNz dWVzIGFib3ZlLg0KV2Ugd2lsbCBhZG9wdCB0aGlzIGltcGxlbWVudGF0aW9uLCBwbGVhc2Ugc2Vl IG5leHQgdmVyc2lvbi4NCg0KPiANCj4gPiArDQo+ID4gKwkJCWlmICgqbWJwX2J1Zl9zaXplIDwg b2Zmc2V0KSB7DQo+ID4gKwkJCQlSVEVfRVRIREVWX0xPRyhFUlIsDQo+ID4gKwkJCQkJCSIlcw0K PiBtYnVmX2RhdGFfcm9vbV9zaXplICV1IDwgJXUgc2VnbWVudCBvZmZzZXQpXG4iLA0KPiA+ICsJ CQkJCQltcGwtPm5hbWUsICptYnBfYnVmX3NpemUsDQo+ID4gKwkJCQkJCW9mZnNldCk7DQo+ID4g KwkJCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCQkJfQ0KPiA+ICsNCj4gDQo+IChzZXBhcmF0ZSBo ZWxwZXIgZnVuY3Rpb24gc3RhcnRzIGhlcmUpDQo+IA0KPiA+ICsJCQlwdHlwZV9jbnQgPQ0KPiBy dGVfZXRoX2J1ZmZlcl9zcGxpdF9nZXRfc3VwcG9ydGVkX2hkcl9wdHlwZXMocG9ydF9pZCwNCj4g PiArTlVMTCwgMCk7DQo+IA0KPiBUaHJlZSBpcyBubyBwb2ludCB0byBkbyBpdCBpbiBhIGxvb3Au IEl0IHNob3VsZCBiZSBkb25lIG91dHNpZGUuIE1vcmVvdmVyLCBpdA0KPiBzaG91bGQgYmUgYSBo ZWxwZXIgZnVuY3Rpb24gd2hpY2ggZG9lcyBpdCB0byBtYWtlIHRoaXMgZnVuY3Rpb25zaG9ydC4N Cg0KQSBuZXcgaGVscGVyIGZ1bmN0aW9uIGV0aF9kZXZfYnVmZmVyX3NwbGl0X2dldF9zdXBwb3J0 ZWRfaGRyc19oZWxwZXIoKSB3aWxsIGJlIGFkZGVkIGluIG5leHQgdmVyc2lvbi4NCg0KPiANCj4g PiArCQkJaWYgKHB0eXBlX2NudCA8PSAwKSB7DQo+ID4gKwkJCQlSVEVfRVRIREVWX0xPRyhFUlIs DQo+ID4gKwkJCQkJIlBvcnQgJXUgZmFpbGVkIHRvIHN1cHBvcnRlZCBidWZmZXINCj4gc3BsaXQg aGVhZGVyIHByb3RvY29sc1xuIiwNCj4gPiArCQkJCQlwb3J0X2lkKTsNCj4gPiArCQkJCXJldHVy biAtRUlOVkFMOw0KPiA+ICsJCQl9DQo+ID4gKw0KPiA+ICsJCQlwdHlwZXMgPSBtYWxsb2Moc2l6 ZW9mKHVpbnQzMl90KSAqIHB0eXBlX2NudCk7DQo+ID4gKwkJCWlmIChwdHlwZXMgPT0gTlVMTCkN Cj4gPiArCQkJCXJldHVybiAtRU5PTUVNOw0KPiA+ICsNCj4gPiArCQkJcHR5cGVfY250ID0NCj4g cnRlX2V0aF9idWZmZXJfc3BsaXRfZ2V0X3N1cHBvcnRlZF9oZHJfcHR5cGVzKHBvcnRfaWQsDQo+ ID4gKw0KPiAJcHR5cGVzLCBwdHlwZV9jbnQpOw0KPiA+ICsJCQlpZiAocHR5cGVfY250IDwgMCkg ew0KPiA+ICsJCQkJUlRFX0VUSERFVl9MT0coRVJSLA0KPiA+ICsJCQkJCSJQb3J0ICV1IGZhaWxl ZCB0byBzdXBwb3J0ZWQgYnVmZmVyDQo+IHNwbGl0IGhlYWRlciBwcm90b2NvbHNcbiIsDQo+ID4g KwkJCQkJcG9ydF9pZCk7DQo+ID4gKwkJCQlmcmVlKHB0eXBlcyk7DQo+ID4gKwkJCQlyZXR1cm4g LUVJTlZBTDsNCj4gPiArCQkJfQ0KPiANCj4gKHNlcGFyYXRlIGhlbHBlciBmdW5jdGlvbiBlbmRz IGhlcmUpDQo+IA0KPiA+ICsNCj4gPiArCQkJZm9yIChpID0gMDsgaSA8IHB0eXBlX2NudDsgaSsr KQ0KPiA+ICsJCQkJaWYgKHB0eXBlc1tpXSA9PSBwcm90b19oZHIpDQo+IA0KPiBJdCBzaG91bGQg YmUgaWYgKChwcmV2X3Byb3RvX2hkcnMgfCBwcm90b19oZHIpID09IHB0eXBlc1tpXSkNCj4gDQo+ ID4gKwkJCQkJYnJlYWs7DQo+ID4gKw0KPiA+ICsJCQlmcmVlKHB0eXBlcyk7DQo+ID4gKw0KPiA+ ICsJCQlpZiAoaSA9PSBwdHlwZV9jbnQpIHsNCj4gPiArCQkJCVJURV9FVEhERVZfTE9HKEVSUiwN Cj4gPiArCQkJCQkiUmVxdWVzdGVkIFJ4IHNwbGl0IGhlYWRlciBwcm90b2NvbHMNCj4gMHgleCBp cyBub3Qgc3VwcG9ydGVkLlxuIiwNCj4gPiArCQkJCQlwcm90b19oZHIpOw0KPiA+ICsJCQkJcmV0 dXJuIC1FSU5WQUw7DQo+ID4gKwkJCX0NCj4gDQo+IHByZXZfcHJvdG9faGRycyB8PSBwcm90b19o ZHI7DQo+IA0KPiA+ICsJCX0gZWxzZSB7DQo+IA0KPiBOT1RFIElmIGRyaXZlciBkb2VzIG5vdCBz dXBwb3J0IGxlbmd0aC1iYXNlZCBzcGxpdCwgaXQgc2hvdWxkIHJlamVjdCBzdWNoDQo+IGNvbmZp Z3VyYXRpb24gaXRzZWxmLg0KDQpIZXJlIHdlIGhhdmUgYSBxdWVzdGlvbi4gRnJvbSB0aGUgY29k ZSBwZXJzcGVjdGl2ZSwgaG93IHRvIGtub3cNCndoZXRoZXIgbGVuZ3RoLWJhc2VkIHNwbGl0IGlz IHN1cHBvcnRlZCBieSBkcml2ZXIsIHRodXMgdG8gcmVqZWN0IHN1Y2ggY29uZmlndXJhdGlvbi4N CkJlY2F1c2Ugd2UgaGF2ZSBnZXRfc3VwcG9ydF9wdHlwZXMoKSBBUEkgZm9yIGRyaXZlciB0byBr bm93IHByb3RvLWJhc2VkIHNwbGl0LCBidXQgbm8gQVBJIGZvciBsZW5ndGgtYmFzZWQgc3BsaXQu DQpPciBhcmUgeW91IHJlZmVycmluZyB0byBhIGRvYyB1cGRhdGU/DQoNClRoYW5rcywNClh1YW4N Cg0KPiANCj4gPiArCQkJLyogU3BsaXQgYXQgZml4ZWQgbGVuZ3RoLiAqLw0KPiA+ICsJCQlsZW5n dGggPSBsZW5ndGggIT0gMCA/IGxlbmd0aCA6ICptYnBfYnVmX3NpemU7DQo+ID4gKwkJCWlmICgq bWJwX2J1Zl9zaXplIDwgbGVuZ3RoICsgb2Zmc2V0KSB7DQo+ID4gKwkJCQlSVEVfRVRIREVWX0xP RyhFUlIsDQo+ID4gKwkJCQkJIiVzIG1idWZfZGF0YV9yb29tX3NpemUgJXUgPCAldQ0KPiAoc2Vn bWVudCBsZW5ndGg9JXUgKyBzZWdtZW50IG9mZnNldD0ldSlcbiIsDQo+ID4gKwkJCQkJbXBsLT5u YW1lLCAqbWJwX2J1Zl9zaXplLA0KPiA+ICsJCQkJCWxlbmd0aCArIG9mZnNldCwgbGVuZ3RoLCBv ZmZzZXQpOw0KPiA+ICsJCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwkJCX0NCj4gDQo+IHByZXZf cHJvdG9faGRycyA9IFJURV9QVFlQRV9BTExfTUFTSzsNCj4gDQo+ID4gICAJCX0NCj4gPiAgIAl9 DQo+ID4gICAJcmV0dXJuIDA7DQo+ID4gQEAgLTE3OTQsNyArMTg2MSw3IEBAIHJ0ZV9ldGhfcnhf cXVldWVfc2V0dXAodWludDE2X3QgcG9ydF9pZCwNCj4gdWludDE2X3QgcnhfcXVldWVfaWQsDQo+ ID4gICAJCW5fc2VnID0gcnhfY29uZi0+cnhfbnNlZzsNCj4gPg0KPiA+ICAgCQlpZiAocnhfY29u Zi0+b2ZmbG9hZHMgJg0KPiBSVEVfRVRIX1JYX09GRkxPQURfQlVGRkVSX1NQTElUKSB7DQo+ID4g LQkJCXJldCA9IHJ0ZV9ldGhfcnhfcXVldWVfY2hlY2tfc3BsaXQocnhfc2VnLCBuX3NlZywNCj4g PiArCQkJcmV0ID0gcnRlX2V0aF9yeF9xdWV1ZV9jaGVja19zcGxpdChwb3J0X2lkLCByeF9zZWcs DQo+IG5fc2VnLA0KPiA+ICAgCQkJCQkJCSAgICZtYnBfYnVmX3NpemUsDQo+ID4gICAJCQkJCQkJ ICAgJmRldl9pbmZvKTsNCj4gPiAgIAkJCWlmIChyZXQgIT0gMCkNCj4gPiBkaWZmIC0tZ2l0IGEv bGliL2V0aGRldi9ydGVfZXRoZGV2LmggYi9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuaCBpbmRleA0K PiA+IGM1MWMxZjNmYTAuLjRjOWIxMjEzNTUgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2V0aGRldi9y dGVfZXRoZGV2LmgNCj4gPiArKysgYi9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuaA0KPiA+IEBAIC05 OTQsNiArOTk0LDkgQEAgc3RydWN0IHJ0ZV9ldGhfdHhtb2RlIHsNCj4gPiAgICAqICAgc3BlY2lm aWVkIGluIHRoZSBmaXJzdCBhcnJheSBlbGVtZW50LCB0aGUgc2Vjb25kIGJ1ZmZlciwgZnJvbSB0 aGUNCj4gPiAgICAqICAgcG9vbCBpbiB0aGUgc2Vjb25kIGVsZW1lbnQsIGFuZCBzbyBvbi4NCj4g PiAgICAqDQo+ID4gKyAqIC0gVGhlIHByb3RvX2hkcnMgaW4gdGhlIGVsZW1lbnRzIGRlZmluZSB0 aGUgc3BsaXQgcG9zaXRpb24gb2YNCj4gPiArICogICByZWNlaXZlZCBwYWNrZXRzLg0KPiA+ICsg Kg0KPiA+ICAgICogLSBUaGUgb2Zmc2V0cyBmcm9tIHRoZSBzZWdtZW50IGRlc2NyaXB0aW9uIGVs ZW1lbnRzIHNwZWNpZnkNCj4gPiAgICAqICAgdGhlIGRhdGEgb2Zmc2V0IGZyb20gdGhlIGJ1ZmZl ciBiZWdpbm5pbmcgZXhjZXB0IHRoZSBmaXJzdCBtYnVmLg0KPiA+ICAgICogICBUaGUgZmlyc3Qg c2VnbWVudCBvZmZzZXQgaXMgYWRkZWQgd2l0aCBSVEVfUEtUTUJVRl9IRUFEUk9PTS4NCj4gPiBA QCAtMTAxNSwxMiArMTAxOCw0MSBAQCBzdHJ1Y3QgcnRlX2V0aF90eG1vZGUgew0KPiA+ICAgICog ICAgIC0gcG9vbCBmcm9tIHRoZSBsYXN0IHZhbGlkIGVsZW1lbnQNCj4gPiAgICAqICAgICAtIHRo ZSBidWZmZXIgc2l6ZSBmcm9tIHRoaXMgcG9vbA0KPiA+ICAgICogICAgIC0gemVybyBvZmZzZXQN Cj4gPiArICoNCj4gPiArICogLSBMZW5ndGggYmFzZWQgYnVmZmVyIHNwbGl0Og0KPiA+ICsgKiAg ICAgLSBtcCwgbGVuZ3RoLCBvZmZzZXQgc2hvdWxkIGJlIGNvbmZpZ3VyZWQuDQo+ID4gKyAqICAg ICAtIFRoZSBwcm90b19oZHIgZmllbGQgbXVzdCBiZSAwLg0KPiA+ICsgKg0KPiA+ICsgKiAtIFBy b3RvY29sIGhlYWRlciBiYXNlZCBidWZmZXIgc3BsaXQ6DQo+ID4gKyAqICAgICAtIG1wLCBvZmZz ZXQsIHByb3RvX2hkciBzaG91bGQgYmUgY29uZmlndXJlZC4NCj4gPiArICogICAgIC0gVGhlIGxl bmd0aCBmaWVsZCBtdXN0IGJlIDAuDQo+ID4gKyAqICAgICAtIFRoZSBwcm90b19oZHIgZmllbGQg aW4gdGhlIGxhc3Qgc2VnbWVudCBzaG91bGQgYmUgMC4NCj4gPiArICoNCj4gPiArICogLSBGb3Ig UHJvdG9jb2wgaGVhZGVyIGJhc2VkIGJ1ZmZlciBzcGxpdCwgaWYgdGhlIHJlY2VpdmVkIHBhY2tl dHMNCj4gPiArICogICBkb24ndCBleGFjdGx5IG1hdGNoIGFsbCBwcm90b2NvbCBoZWFkZXJzIGlu IHRoZSBlbGVtZW50cywgcGFja2V0cw0KPiA+ICsgKiAgIHdpbGwgbm90IGJlIHNwbGl0Lg0KPiA+ ICsgKiAgIFRoZXNlIHBhY2tldHMgd2lsbCBiZSBwdXQgaW50bzoNCj4gPiArICogICAgIC0gcG9v bCBmcm9tIHRoZSBsYXN0IHZhbGlkIGVsZW1lbnQNCj4gPiArICogICAgIC0gdGhlIGJ1ZmZlciBz aXplIGZyb20gdGhpcyBwb29sDQo+ID4gKyAqICAgICAtIHplcm8gb2Zmc2V0DQo+ID4gICAgKi8N Cj4gPiAgIHN0cnVjdCBydGVfZXRoX3J4c2VnX3NwbGl0IHsNCj4gPiAgIAlzdHJ1Y3QgcnRlX21l bXBvb2wgKm1wOyAvKio8IE1lbW9yeSBwb29sIHRvIGFsbG9jYXRlIHNlZ21lbnQNCj4gZnJvbS4g Ki8NCj4gPiAgIAl1aW50MTZfdCBsZW5ndGg7IC8qKjwgU2VnbWVudCBkYXRhIGxlbmd0aCwgY29u ZmlndXJlcyBzcGxpdCBwb2ludC4gKi8NCj4gPiAgIAl1aW50MTZfdCBvZmZzZXQ7IC8qKjwgRGF0 YSBvZmZzZXQgZnJvbSBiZWdpbm5pbmcgb2YgbWJ1ZiBkYXRhIGJ1ZmZlci4NCj4gKi8NCj4gPiAt CXVpbnQzMl90IHJlc2VydmVkOyAvKio8IFJlc2VydmVkIGZpZWxkLiAqLw0KPiA+ICsJLyoqDQo+ ID4gKwkgKiBQcm90b19oZHIgZGVmaW5lcyBhIGJpdCBtYXNrIG9mIHRoZSBwcm90b2NvbCBzZXF1 ZW5jZSBhcw0KPiBSVEVfUFRZUEVfKiwNCj4gPiArCSAqIGNvbmZpZ3VyZXMgc3BsaXQgcG9pbnQu IFRoZSBsYXN0IFJURV9QVFlQRSogaW4gdGhlIG1hc2sgaW5kaWNhdGVzDQo+IHRoZQ0KPiA+ICsJ ICogc3BsaXQgcG9zaXRpb24uDQo+ID4gKwkgKg0KPiA+ICsJICogSWYgb25lIHByb3RvY29sIGhl YWRlciBpcyBkZWZpbmVkIHRvIHNwbGl0IHBhY2tldHMgaW50byB0d28NCj4gc2VnbWVudHMsDQo+ ID4gKwkgKiBmb3Igbm9uLXR1bm5lbGluZyBwYWNrZXRzLCB0aGUgY29tcGxldGUgcHJvdG9jb2wg c2VxdWVuY2Ugc2hvdWxkDQo+IGJlIGRlZmluZWQuDQo+ID4gKwkgKiBGb3IgdHVubmVsaW5nIHBh Y2tldHMsIGZvciBzaW1wbGljaXR5LCBvbmx5IHRoZSB0dW5uZWwgYW5kIGlubmVyIHBhcnQNCj4g b2YNCj4gPiArCSAqIGNvbXBsZSBwcm90b2NvbCBzZXF1ZW5jZSBpcyByZXF1aXJlZC4NCj4gPiAr CSAqIElmIHNldmVyYWwgcHJvdG9jb2wgaGVhZGVycyBhcmUgZGVmaW5lZCB0byBzcGxpdCBwYWNr ZXRzIGludG8gbXVsdGktDQo+IHNlZ21lbnRzLA0KPiA+ICsJICogdGhlIHJlcGVhdGVkIHBhcnRz IG9mIGFkamFjZW50IHNlZ21lbnRzIHNob3VsZCBiZSBvbWl0dGVkLg0KPiA+ICsJICovDQo+ID4g Kwl1aW50MzJfdCBwcm90b19oZHI7DQo+ID4gICB9Ow0KPiA+DQo+ID4gICAvKioNCg0K