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 D5C6AA0032; Fri, 15 Jul 2022 23:52:33 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 76B8140A87; Fri, 15 Jul 2022 23:52:33 +0200 (CEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80085.outbound.protection.outlook.com [40.107.8.85]) by mails.dpdk.org (Postfix) with ESMTP id 7FAA140141 for ; Fri, 15 Jul 2022 23:52:31 +0200 (CEST) ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=VnIwgSykJ0OpK/si8yKPlEfKIVKOPsVkVjtrpfOBevXURpEnNkF/phlmnrL/hiYnpc6bWv4uYMQCsXk2JMTlmxXr8eLo0xsJj+2TXCMVHOctZowLj3AH15/gz8eoW0vhku8BfwjeISfS6YlW12DKMy61O8uTlGnNckDbERvDgktgBMclSXWj/o3/7UwVBraNRRi4wXzkLzItLoQ5xUHjmAYtD0wA0Y1rggqK4mkmhyHSN/Iyxs098Hm51WBH+liSz4VtXZ/yG/qqzC7xX73RP+cKuYAKKaNz0imBE3rf+l221mCGEdW9Gons9grEKFHpYVeVuIny3VcdM8uNZFb/RQ== 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=RIjotT9CczNTRw+ZJstmPRdFzTjGg5EDAF9L+2dU9DE=; b=P+LGepxbUd+SzfYIqjn9ZRT9ZWObX8I6+iRvOJslk9+soRP9Y9LXKfKvRBYWTP/R2LoGRd/uhyW5IpwOwSO6AIbGlwXCo0xYHc5sdysdMolQ1EjhapB7oftO2oBHx6od0SkAGV6dsPgGt5i/fwCqxwYmGOuMnTyqWphu15OimrOtDW/v2W6VCP5Gu+TOaq0odTWHll+iN7osFMW9takDMp9vBGfY7j4o1PgoIlWWStuYNT1HI83OArw69zsRVmV+SMcuy0HL+uQZo9b71HOeHnVO4Fdcfzf5dBUe66vMSt3sZp1jSAEOAUJJ5wSwHsrYEHyli1erpiR2/zu0VD/cLQ== 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=RIjotT9CczNTRw+ZJstmPRdFzTjGg5EDAF9L+2dU9DE=; b=jjwRdss5Z/RBx3bg6W2xcabues3F0bwbVZ3mQa7UYzXeEIOIrd1SMTLTZBqwZCu9qoT/7jM0qzOpL3zmxo83EbqSqJfcpTdAy0/PK1l8XP66Y2sWQ6zRQseGwMkad+StsYerbR5/TczRTQeAxSRmsdzPHqajBHnKdBUJtO5YZFg= Received: from AM6P191CA0064.EURP191.PROD.OUTLOOK.COM (2603:10a6:209:7f::41) by AS8PR08MB6165.eurprd08.prod.outlook.com (2603:10a6:20b:29a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5438.12; Fri, 15 Jul 2022 21:52:24 +0000 Received: from VE1EUR03FT015.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:7f:cafe::76) by AM6P191CA0064.outlook.office365.com (2603:10a6:209:7f::41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5438.11 via Frontend Transport; Fri, 15 Jul 2022 21:52:24 +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 VE1EUR03FT015.mail.protection.outlook.com (10.152.18.176) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5438.12 via Frontend Transport; Fri, 15 Jul 2022 21:52:23 +0000 Received: ("Tessian outbound 2af316122c7a:v123"); Fri, 15 Jul 2022 21:52:23 +0000 X-CR-MTA-TID: 64aa7808 Received: from 37cc2e33909a.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id D705E8DD-DE0E-4D5D-93E2-2CD73F21AF27.1; Fri, 15 Jul 2022 21:52:13 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 37cc2e33909a.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 15 Jul 2022 21:52:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=G/BL3rPzVg43ryJaI+BNqcYaPOBIdxbYb4xzV86Z0lOUPkAmiHQBHga4pdHwG7inJAN5RiCOwxK9JOA0PSZQATfR1/ayspz0i0x1jKuNgbO+FYWJsArxEbKMHuLwkJ9vWZkMnXBZPGidtWOgepkr3/xTOoxSVnIaUfKZ+ytPxQhhf3AGFDGijAfb4Tlc7S72/sAlUEY1YTkDvxHw07pV3WhQcbY5XR3m0xG0Dl27UqjSMU/V624kako3Y+U8oGQlCCspi8gBYM0/F/t96EyvjXKY+QB1H2id8bkOrqAlU5HUieetHGDzibyCCDPG1bIG5mEqrEDeQY0+rsnnE7Yw4w== 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=RIjotT9CczNTRw+ZJstmPRdFzTjGg5EDAF9L+2dU9DE=; b=eJWGupxsiekzgMSvTOrfyQHp2AhrpRyWs+aHJgTSQtg+ZMlFqWm57m7BcLxpW1w+4OpjAK+sbppV3Ov52QdJp7VzxHEz/puOYZTsve3wA2QCyVZh5WD4Hs9Hf+kLah2oit5yPoWSNrpF0iZIDygTu2Uif7EZ0frsZ3RbWGIKo0Psn8184lyaxxVEZFKjqeu75oXdugcQBZnngMiblweP+l1AjYhnUiMbNqaCAHZPn8i3+nWSOS95f1P2HnIUaCjSFNok3SVC87rwrKtcZr3RuOC9a//deWM8UgNukQclSzyfeD3mYTM3/0ZI4Xu6cqR7HB5qYNc4WajLPpMha4CORw== 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=RIjotT9CczNTRw+ZJstmPRdFzTjGg5EDAF9L+2dU9DE=; b=jjwRdss5Z/RBx3bg6W2xcabues3F0bwbVZ3mQa7UYzXeEIOIrd1SMTLTZBqwZCu9qoT/7jM0qzOpL3zmxo83EbqSqJfcpTdAy0/PK1l8XP66Y2sWQ6zRQseGwMkad+StsYerbR5/TczRTQeAxSRmsdzPHqajBHnKdBUJtO5YZFg= Received: from DBAPR08MB5814.eurprd08.prod.outlook.com (2603:10a6:10:1b1::6) by AM6PR08MB3430.eurprd08.prod.outlook.com (2603:10a6:20b:43::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5438.15; Fri, 15 Jul 2022 21:52:11 +0000 Received: from DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::1c7f:6a8d:b518:f972]) by DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::1c7f:6a8d:b518:f972%3]) with mapi id 15.20.5438.014; Fri, 15 Jul 2022 21:52:11 +0000 From: Honnappa Nagarahalli To: Konstantin Ananyev , Feifei Wang , Yuying Zhang , Beilei Xing , Ruifeng Wang CC: "dev@dpdk.org" , nd , nd Subject: RE: [RFC PATCH v1] net/i40e: put mempool cache out of API Thread-Topic: [RFC PATCH v1] net/i40e: put mempool cache out of API Thread-Index: AQHYjtc+tPMXKGzonUaIMAaGXlCMya14pLPwgAQQAACAAZB2wA== Date: Fri, 15 Jul 2022 21:52:10 +0000 Message-ID: References: <20220613055136.1949784-1-feifei.wang2@arm.com> <1e082bfe-9b52-86f0-e7fa-279ef8feaf1a@yandex.ru> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 0C85CD164345FE43B4BD737AC56D8E27.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: 4fed0038-1f7e-483e-17ef-08da66ac4d07 x-ms-traffictypediagnostic: AM6PR08MB3430:EE_|VE1EUR03FT015:EE_|AS8PR08MB6165:EE_ 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: e9nQ5izThq41AdL2ym1ZdS6nltRhYrokM1x4r87yB+lM8n9YccFXkU/bEjjPT5YBrm1Npc7sSoWlmIVuUwrx/xKqYEgnKbdMGKjucCjPu0qAj/8xLG4ERX2+XT/6j1rmIr1WGD1ccjwiSkCL5bv0aMepgyFt+5ux/PAGY6PSrI9gPERpFFgb47EoY3hX3IPJJCpqIUVDKrr+DgcmydNXiUohNJclh4e60sYJbEr4XIQn3ivUKJDhzei8MdNqeCk6GIY/nEkBHvbw5QVRdoF06saWcAYRubJaX0kHwQH123IrPxuNsNmex3xRYP75BvAc1HxFv0Oq1qN+cQI7zC00UdWsQwhlgMGHwIFEXTOgE4IXDZPe/Pujig4C7g8CTJFcKnijLC4aixPjsIoyZvx+r6+X7HfPIVpEx4aqDIpIEDU0pohTESvkbpVf90o3mi4eqRZhgZTNDz3vtNVptNevOREoAqpXKMdCpGg9s9O0/qetDA7GT63KsHFhygtNZUxD/u5U32eFHKIkPRYUwjOcVkzWzdopAEfj14arAui7shwX2Su2WFwOgWpPznd1OfRgcI8N0gMmUcF9VwTDdMvgmGUY7TMui5PztgLaYmQNe+5MqfuK2ufoquIuIEKP0OEO+QU0IZKPSgswtuzof8tSuZHxaZ0BH2DVMahU/5STqDOwaqKj0r8k2Isn94wNJZuGwAt5KFDskTFHUl1MSByWWHC6U90AK4I7l46LTkh6bw01Wa5mIEO1+RK3N5GVqbw/D4m3Tgv2qNSmlnd5vXL4aoqJsUAvlxurRc3HlQcW71y/yJecswf2r/2hkkpu49bz0EFUiPk2vSDp9MkSwwkqkVfoTa6WLVQmSVCrfWeem/7QPkOvWpyJGWQOuXIJBz3o 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:(13230016)(4636009)(376002)(346002)(396003)(366004)(136003)(39860400002)(26005)(52536014)(5660300002)(55016003)(478600001)(6506007)(33656002)(8936002)(86362001)(41300700001)(7696005)(186003)(83380400001)(9686003)(2906002)(4326008)(316002)(66946007)(76116006)(110136005)(8676002)(66556008)(64756008)(66476007)(54906003)(66446008)(38100700002)(6636002)(122000001)(38070700005)(71200400001)(414714003)(473944003); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3430 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: VE1EUR03FT015.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 09cd2894-9736-4fca-1fbc-08da66ac454e X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wKB8HbF/UTVxZ/oOi2HB/ywls1FqIUYv/EaF5mKFVnanORT7243p9uMvgE9puxnrONPlHjso7lAhLNYmxmk6CPh+wjkzqOTbC4szXqX580C/Hug5rFs//3s0meUfGhivqafcD8c6Kbk6tEbIGiEKIt8jHn7GaJ37u+SSaT1G6CHOC2SAfEZ/kX5wive8nalopIgL3SDiGTFujSG3x5zgTyheAyC+LV9WNpOFv16+LDo8u+4ofyACLL544wEFgS9TJGjEVqWeBd1v+w4Rw1O2U0P3bbU2DqNZNw5CJ3AM1JEHUlcwHkvJNO9ygo8lpdoZyIj8SwosuoE+tJ6Wo6gqw27dzTxYmXOZfgPabonjndBtm+3f323qt51Re54ggcZTDJmo303rH5M+SZpkWZtub0NbiWkTfMnyZQYWILta8BwCkCJE7Sl7j3bbvRX3L89wnxBPxvurgPMEqIGd17xIbLKLc/OfkQJgnAjyZsl6UOXH+NdRucBXpScCLHMxs75fel7oyt8xYeCFlSsZlHTkNuxNWPRiMWMFDNb4j2az+8c0QQ14UpawMlyDJDMvqLihVRYdB0lTg49Tirw8HsxGejWTQFMqybvS2QRfR5apiS6poiYxII6t6JNubWsifl0AsKVn/2B2HW1osBFNuva1dAR5lcDd4BD7ZeMmgKGxANzmtL9Wdjx5Oedy/G29jO+vMgzL4J+rVkuJN7GHN+9NvtiBx9BBkotloQfc3Yml7BjoLUFH3ZajxUtugWZS8jdFXYtqkMw1OjzuCYeY4Em2zQCa+98NNHLDqjT10g5MVNxObSChJ9Pb8DRs1kQY03F/3LNR3Ut2YioXST8bCnne/A9+tqoo1Hnoytz5PuyZspIZ/orxv3XEP9d5mI5fGJmU 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)(346002)(396003)(39860400002)(376002)(46966006)(36840700001)(40470700004)(8936002)(70206006)(36860700001)(5660300002)(70586007)(356005)(83380400001)(336012)(186003)(82740400003)(2906002)(47076005)(33656002)(4326008)(8676002)(52536014)(316002)(54906003)(82310400005)(41300700001)(40460700003)(7696005)(40480700001)(110136005)(81166007)(26005)(9686003)(6636002)(86362001)(55016003)(478600001)(6506007)(473944003)(414714003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jul 2022 21:52:23.7815 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4fed0038-1f7e-483e-17ef-08da66ac4d07 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: VE1EUR03FT015.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6165 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+ID4+DQo+ID4+DQo+ID4+PiBSZWZlciB0byAiaTQwZV90eF9mcmVlX2J1ZnNfYXZ4 NTEyIiwgdGhpcyBwYXRjaCBwdXRzIG1lbXBvb2wgY2FjaGUNCj4gPj4+IG91dCBvZiBBUEkgdG8g ZnJlZSBidWZmZXJzIGRpcmVjdGx5LiBUaGVyZSBhcmUgdHdvIGNoYW5nZXMgZGlmZmVyZW50DQo+ ID4+PiB3aXRoIHByZXZpb3VzIHZlcnNpb246DQo+ID4+PiAxLiBjaGFuZ2UgdHhlcCBmcm9tICJp NDBlX2VudHJ5IiB0byAiaTQwZV92ZWNfZW50cnkiDQo+ID4+PiAyLiBwdXQgY2FjaGUgb3V0IG9m ICJtZW1wb29sX2J1bGsiIEFQSSB0byBjb3B5IGJ1ZmZlcnMgaW50byBpdA0KPiA+Pj4gZGlyZWN0 bHkNCj4gPj4+DQo+ID4+PiBQZXJmb3JtYW5jZSBUZXN0IHdpdGggbDNmd2QgbmVvbiBwYXRoOg0K PiA+Pj4gCQl3aXRoIHRoaXMgcGF0Y2gNCj4gPj4+IG4xc2RwOgkJbm8gcGVyZm9yYW1uY2UgY2hh bmdlDQo+ID4+PiBhbXBlci1hbHRyYToJKzQuMCUNCj4gPj4+DQo+ID4+DQo+ID4+DQo+ID4+IFRo YW5rcyBmb3IgUkZDLCBhcHByZWNpYXRlIHlvdXIgZWZmb3J0Lg0KPiA+PiBTbywgYXMgSSB1bmRl cnN0YW5kIC0gYnlwYXNzaW5nIG1lbXBvb2wgcHV0L2dldCBpdHNlbGYgZ2l2ZXMgYWJvdXQNCj4g Pj4gNy0xMCUgc3BlZWR1cCBmb3IgUlgvVFggb24gQVJNIHBsYXRmb3JtcywgY29ycmVjdD8NCj4g PiBJdCBpcyA3JSB0byAxNCUgb24gTjFTRFAsIDE0JSB0byAxNyUgb24gQW1wZXJlIG1hY2hpbmVz IFRoZSBjdXJyZW50DQo+ID4gUkZDIG5lZWRzIHRvIGJlIGNvbnZlcnRlZCB0byBhIHBhdGNoIChh bGJlaXQgd2l0aCB6ZXJvLWNvcHkgbWVtcG9vbCBBUElzKSBhcw0KPiBpdCBhcHBsaWVzIGZvciBh IG1vcmUgZ2VuZXJpYyB1c2UgY2FzZS4NCj4gPg0KPiA+Pg0KPiA+PiBBYm91dCBkaXJlY3QtcmVh cm0gUlggYXBwcm9hY2ggeW91IHByb3Bvc2U6DQo+ID4+IEFmdGVyIGFub3RoZXIgdGhvdWdodCwg cHJvYmFibHkgaXQgaXMgcG9zc2libGUgdG8gcmUtYXJyYW5nZSBpdCBpbiBhDQo+ID4+IHdheSB0 aGF0IHdvdWxkIGhlbHAgYXZvaWQgcmVsYXRlZCBuZWdhdGl2ZXMuDQo+ID4gVGhhbmtzIGZvciB0 aGUgaWRlYS4NCj4gPg0KPiA+PiBUaGUgYmFzaWMgaWRlYSBhcyBmb2xsb3dzOg0KPiA+Pg0KPiA+ PiAxLiBNYWtlIFJYUSBzd19yaW5nIHZpc2libGUgYW5kIGFjY2Vzc2libGUgYnkgJ2F0dGFjaGVk JyBUWCBxdWV1ZXMuDQo+ID4+ICAgICAgQWxzbyBtYWtlIHN3X3JpbmcgZGUtY291cGxlZCBmcm9t IFJYUSBpdHNlbGYsIGkuZToNCj4gPj4gICAgICB3aGVuIFJYUSBpcyBzdG9wcGVkIG9yIGV2ZW4g ZGVzdHJveWVkLCByZWxhdGVkIHN3X3JpbmcgbWF5IHN0aWxsDQo+ID4+ICAgICAgZXhpc3QgKHBy b2JhYmx5IHJlZi1jb3VudGVyIG9yIFJDVSB3b3VsZCBiZSBzdWZmaWNpZW50IGhlcmUpLg0KPiA+ PiAgICAgIEFsbCB0aGF0IG1lYW5zIHdlIG5lZWQgYSBjb21tb24gbGF5b3V0L2FwaSBmb3Igcnhx X3N3X3JpbmcNCj4gPj4gICAgICBhbmQgUE1EcyB0aGF0IHdvdWxkIGxpa2UgdG8gc3VwcG9ydCBk aXJlY3QtcmVhcm1pbmcgd2lsbCBoYXZlIHRvDQo+ID4+ICAgICAgdXNlL29iZXkgaXQuDQo+ID4g VGhpcyB3b3VsZCBtZWFuLCB3ZSB3aWxsIGhhdmUgYWRkaXRpb25hbCBmb3IgbG9vcCB0byBmaWxs IHRoZSBkZXNjcmlwdG9ycyBvbiB0aGUNCj4gUlggc2lkZS4NCj4gDQo+IFllcywgcnggd2lsbCBn byB0aG91Z2ggYXZhaWFibGUgZW50cmllcyBpbiBzd19yaW5nIGFuZCBmaWxsIGFjdHVhbCBIVyBk ZXNjcmlwdG9ycy4NCj4gDQo+ID4gTWF5IGJlIHdlIGNvdWxkIGtlZXAgdGhlIHF1ZXVlIHdoZW4g dGhlIFJYUSBpcyBzdG9wcGVkLCBhbmQgZnJlZSBpdCBvbmx5DQo+IHdoZW4gUlhRIGlzIGRlc3Ry b3llZC4gRG9uJ3QgaGF2ZSB0byBhbGxvY2F0ZSBvbmUgbW9yZSBpZiB0aGUgUlhRIGlzIHN0YXJ0 ZWQNCj4gYmFjayBhZ2Fpbj8gVGhpcyBtZWFucywgdGhlIG1idWZzIHdpbGwgYmUgaW4gdGhlIHN3 X3JpbmcgaWYgdGhlIFJYUSBpcyBzdG9wcGVkDQo+IGJ1dCBub3QgZGVzdHJveWVkIChzYW1lIGFz IHdoYXQgeW91IGhhdmUgbWVudGlvbmVkIGJlbG93KS4NCj4gDQo+IE15IHRob3VnaHQgaGVyZSB3 YXMgLSB5ZXMgc3dfcmluZyBjYW4gc3RheSBhdCBxdWV1ZSBzdG9wIChldmVuIHByb2JhYmx5IGF0 DQo+IGRlc3Ryb3kpIHRvIGF2b2lkIHJlbGF0ZWQgVFhRIG9wZXJhdGlvbiBhYm9ydGlvbi4NClVu ZGVyc3Rvb2QNCg0KPiBUaG91Z2ggYWN0dWFsIEhXIGRlc2MgcmluZyB3aWxsIGJlIGRlLWluaXQv ZGVzdHJveWVkIGFzIHVzdWFsLg0KSSBkbyBub3QgdW5kZXJzdGFuZCB3aGF0IHlvdSBtZWFuIGJ5 IHRoaXMuDQpJIGxvb2tlZCBhdCB0aGUgZnVuY3Rpb24gJyBpNDBlX2Rldl90eF9xdWV1ZV9zdG9w Jy4gSSBzZWUgdGhhdCBpdCBkaXNhYmxlcyB0aGUgcXVldWUgYnkgY2FsbGluZyAnIGk0MGVfc3dp dGNoX3R4X3F1ZXVlJy4gVGhlIHJlc3Qgb2YgdGhlIGZ1bmN0aW9uYWxpdHksIGZyZWVzIHRoZSBt YnVmcyBpbiB0aGUgc3dfcmluZyBhbmQgcmVzZXRzIHRoZSBkZXNjcmlwdG9ycyAoYW5kIHRoZSBh c3NvY2lhdGVkIGluZGljZXMpIGluIHRoZSBob3N0IG1lbW9yeS4gSSBndWVzcyB0aGlzIGlzIHdo YXQgeW91IGFyZSByZWZlcnJpbmcgdG8/DQoNCj4gVGhhdCdzIHdoeSBJIHRoaW5rIHdlIG5lZWQg dG8gZGVjb3VwbGUgc3dfcmluZyBmcm9tIHF1ZXVlIGFuZCBpdCdzIEhXIHJpbmcuDQpJIGhhdmUg bm90IGxvb2tlZCBhdCBvdGhlciBQTURzLiBCdXQsIGJhc2VkIG9uIHdoYXQgSSBzZWUgaW4gaTQw ZSBQTUQsIHRoaXMgaXMgYSBzeW5jaHJvbml6YXRpb24gcHJvYmxlbSBiZXR3ZWVuIGNvbnRyb2wg cGxhbmUgYW5kIGRhdGEgcGxhbmUuIEFzIGxvbmcgYXMgdGhlIGRhdGEgcGxhbmUgaXMgbm90IGFj Y2Vzc2luZyB0aGUgVFggcXVldWUgd2hpbGUgdHhfcXVldWVfc3RvcCBpcyBjYWxsZWQsIHdlIHNo b3VsZCBiZSBmaW5lIHRvIGFjY2VzcyB0aGUgZGVzY3JpcHRvcnMgYXMgd2VsbC4gVGhlIHN5bmNo cm9uaXphdGlvbiByZXF1aXJlbWVudCBhcHBsaWVzIGZvciB0aGUgdHhfcXVldWVfc3RvcCBBUEkg YWxyZWFkeSBhbmQgd2UgY2FuIGFkZCB0aGUgZGlyZWN0LXJlYXJtIHJlcXVpcmVtZW50IHVuZGVy IHRoZSBzYW1lIHN5bmNocm9uaXphdGlvbi4gaS5lLiB3aGVuIHRoZSBkYXRhIHBsYW5lIHNheXMg aXQgaXMgbm90IGFjY2Vzc2luZyB0aGUgVFggcG9ydCwgaXQgaGFzIHN0b3BwZWQgdXNpbmcgdGhl IGRpcmVjdC1yZWFybSBmZWF0dXJlIGFzIHdlbGwuDQoNCkJUVywgdGhlIHJ0ZV9ldGhfZGV2X3R4 X3F1ZXVlX3N0b3AgQVBJIGRvZXMgbm90IGNhbGwgb3V0IHRoZSBzeW5jaHJvbml6YXRpb24gcmVx dWlyZW1lbnQgYW5kIGRvZXMgbm90IG1lbnRpb24gdGhlIG5lZWQgZm9yIHRoZSBkYXRhIHBsYW5l IHRvIHN0b3AgYWNjZXNzaW5nIHRoZSBxdWV1ZS4gSSB0aGluayBpdCBzaG91bGQgYmUgZG9jdW1l bnRlZC4NCg0KPiANCj4gPg0KPiA+Pg0KPiA+PiAyLiBNYWtlIFJYUSBzd19yaW5nICdkaXJlY3Qn IHJlYXJtaW5nIGRyaXZlbiBieSBUWFEgaXRzZWxmLCBpLmU6DQo+ID4+ICAgICAgYXQgdHhxX2Zy ZWVfYnVmcygpIHRyeSB0byBzdG9yZSByZWxlYXNlZCBtYnVmcyBpbnNpZGUgYXR0YWNoZWQNCj4g Pj4gICAgICBzd19yaW5nIGRpcmVjdGx5LiBJZiB0aGVyZSBpcyBubyBhdHRhY2hlZCBzd19yaW5n LCBvciBub3QgZW5vdWdoDQo+ID4+ICAgICAgZnJlZSBzcGFjZSBpbiBpdCAtIGNvbnRpbnVlIHdp dGggbWVtcG9vbF9wdXQoKSBhcyB1c3VhbC4NCj4gPj4gICAgICBOb3RlIHRoYXQgYWN0dWFsIGFy bWluZyBvZiBIVyBSWERzIHN0aWxsIHJlbWFpbnMgcmVzcG9uc2liaWxpdHkNCj4gPiBXaGF0IHBy b2JsZW1zIGRvIHlvdSBzZWUgaWYgd2UgYXJtIHRoZSBIVyBSWERzIChhc3N1bWluZyB0aGF0IHdl IGRvIG5vdA0KPiBoYXZlIHRvIHN1cHBvcnQgdGhpcyBhY3Jvc3MgbXVsdGlwbGUgZGV2aWNlcyk/ DQo+IA0KPiBTYW1lIGFzIHZpc2EtdmVyc2Egc2NlbmFyaW86DQo+IC0gUlhRIG1pZ2h0IGJlIGFs cmVhZHkgc3RvcHBlZCwgd2hpbGUgVFhRIHN0aWxsIHJ1bm5pbmcuDQpUaGlzIGlzIGFnYWluIGEg Y29udHJvbCBwbGFuZSAtIGRhdGEgcGxhbmUgc3luY2hyb25pemF0aW9uIHByb2JsZW0uIGkuZS4g aWYgUlhRIGlzIHRvIGJlIHN0b3BwZWQgKHdoaWNoIHJlcXVpcmVzIHN5bmNocm9uaXphdGlvbiks IHRoZSBkYXRhIHBsYW5lIHNob3VsZCBzdG9wIHVzaW5nIHRoZSBkaXJlY3QtcmVhcm0uDQoNCj4g LSBBbHNvIGl0IGRvZXNuJ3Qgc291bmQgcmlnaHQgZnJvbSBkZXNpZ24gcG9pbnQgb2YgdmlldyB0 byBhbGxvdw0KPiAgICBUWCBjb2RlIHRvIG1hbmlwdWxhdGUgUlggSFcgcXVldWUgZGlyZWN0bHkg YW5kIHZpc2EtdmVyc2EuDQpPaywgdGhlcmUgaXMgbm8gaGFyZCB0ZWNobmljYWwgaXNzdWUgdGhh dCBzdG9wcyB1cyBmcm9tIGRvaW5nIHRoaXMsIGNvcnJlY3Q/DQoNCj4gDQo+ID4NCj4gPj4gICAg ICBvZiBSWCBjb2RlLXBhdGg6DQo+ID4+ICAgICAgcnhxX3JlYXJtKHJ4cSkgew0KPiA+PiAgICAg ICAgLi4uDQo+ID4+ICAgICAgICAtIGNoZWNrIGFyZSB0aGVyZSBhcmUgTiBhbHJlYWR5IGZpbGxl ZCBlbnRyaWVzIGluc2lkZSByeHFfc3dfcmluZy4NCj4gPj4gICAgICAgICAgaWYgbm90LCBwb3B1 bGF0ZSB0aGVtIGZyb20gbWVtcG9vbCAodXN1YWwgbWVtcG9vbF9nZXQoKSkuDQo+ID4+ICAgICAg ICAtIGFybSByZWxhdGVkIFJYRHMgYW5kIG1hcmsgdGhlc2Ugc3dfcmluZyBlbnRyaWVzIGFzIG1h bmFnZWQgYnkgSFcuDQo+ID4+ICAgICAgICAuLi4NCj4gPj4gICAgICB9DQo+ID4+DQo+ID4+DQo+ ID4+IFNvIHJ4cV9zd19yaW5nIHdpbGwgc2VydmUgdHdvIHB1cnBvc2VzOg0KPiA+PiAtIHRyYWNr IG1idWZzIHRoYXQgYXJlIG1hbmFnZWQgYnkgSFcgKHRoYXQgd2hhdCBpdCBkb2VzIG5vdykNCj4g Pj4gLSBwcml2YXRlIChwZXIgUlhRKSBtYnVmIGNhY2hlDQo+ID4+DQo+ID4+IE5vdywgaWYgVFhR IGlzIHN0b3BwZWQgd2hpbGUgUlhRIGlzIHJ1bm5pbmcgLSBubyBleHRyYQ0KPiA+PiBzeW5jaHJv bml6YXRpb24gaXMgcmVxdWlyZWQsIFJYUSB3b3VsZCBqdXN0IHVzZQ0KPiA+PiBtZW1wb29sX2dl dCgpIHRvIHJlYXJtIGl0cyBzd19yaW5nIGl0c2VsZi4NCj4gPiBUaGVyZSB3b3VsZCBiZSBzb21l IHN5bmNocm9uaXphdGlvbiByZXF1aXJlZCB3aGljaCB0ZWxscyB0aGUgZGF0YSBwbGFuZQ0KPiB0 aHJlYWRzIG5vdCB0byBhY2Nlc3MgdGhlIFRYUSBiZWZvcmUgdGhlIFRYUSBpcyBzdG9wcGVkLiBP dGhlciB0aGFuIHRoaXMsIG5vDQo+IGV4dHJhIHN5bmNocm9uaXphdGlvbiBpcyByZXF1aXJlZC4N Cj4gPg0KPiA+IEZvciB0aGUgY3VycmVudCBwYXRjaCwgd2UgY291bGQgdXNlIGEgc2ltaWxhciBh cHByb2FjaC4gaS5lLiB3aGVuIFRYUSBpcw0KPiBzdG9wcGVkLCBpdCBkb2VzIG5vdCBmcmVlIHRo ZSBtYnVmcyBmcm9tIHN3X3JpbmcsIHdlIGp1c3QgbGV0IHRoZSBSWFEgY29uc3VtZQ0KPiBhbGwg dGhlIG1idWZzIGZyb20gVFggc2lkZSBzd19yaW5nIHRpbGwgaXQgaXMgZW1wdHkuDQo+ID4NCj4g Pj4NCj4gPj4gSWYgUlhRIGlzIHN0b3BwZWQgd2hpbGUgVFhRIGlzIHN0aWxsIHJ1bm5pbmcgLSBU WFEgY2FuIHN0aWxsIGNvbnRpbnVlDQo+ID4+IHRvIHBvcHVsYXRlIHJlbGF0ZWQgc3dfcmluZyB0 aWxsIGl0IGdldHMgZnVsbC4NCj4gPj4gVGhlbiBpdCB3aWxsIGNvbnRpbnVlIHdpdGggbWVtcG9v bF9wdXQoKSBhcyB1c3VhbC4NCj4gPj4gT2YtY291cnNlIGl0IG1lYW5zIHRoYXQgdXNlciB3aG8g d2FudHMgdG8gdXNlIHRoaXMgZmVhdHVyZSBzaG91bGQNCj4gPj4gcHJvYmFibHkgYWNjb3VudCBz b21lIGV4dHJhIG1idWZzIGZvciBzdWNoIGNhc2UsIG9yIG1pZ2h0IGJlDQo+ID4+IHJ4cV9zd19y aW5nIGNhbiBoYXZlIGVuYWJsZS9kaXNhYmxlIGZsYWcgdG8gbWl0aWdhdGUgc3VjaCBzaXR1YXRp b24uDQo+ID4+DQo+ID4+IEFzIGFub3RoZXIgYmVuZWZpdCBoZXJlIC0gc3VjaCBhcHByb2FjaCBt YWtlcyBwb3NzaWJsZSB0byB1c2Ugc2V2ZXJhbA0KPiA+PiBUWFFzIChldmVuIGZyb20gZGlmZmVy ZW50IGRldmljZXMpIHRvIHJlYXJtIHNhbWUgUlhRLg0KPiA+IEJlaW5nIGFibGUgdG8gdXNlIHNl dmVyYWwgVFhRcyBpcyBhIHByYWN0aWNhbCB1c2UgY2FzZS4gQnV0LCBJIGFtIG5vdCBzdXJlIGlm DQo+IGRpZmZlcmVudCBkZXZpY2VzIGluIHRoZSBzYW1lIHNlcnZlciBpcyBhIHByYWN0aWNhbCBz Y2VuYXJpbyB0aGF0IHdlIG5lZWQgdG8NCj4gYWRkcmVzcy4NCj4gPg0KPiA+Pg0KPiA+PiBIYXZl IHRvIHNheSwgdGhhdCBJIGFtIHN0aWxsIG5vdCBzdXJlIHRoYXQgMTAlIFJYL1RYIGltcHJvdmVt ZW50IGlzDQo+ID4+IHdvcnRoIGJ5cGFzc2luZyBtZW1wb29sIGNvbXBsZXRlbHkgYW5kIGludHJv ZHVjaW5nIGFsbCB0aGlzIGV4dHJhDQo+ID4+IGNvbXBsZXhpdHkgaW4gUlgvVFggcGF0aC4NCj4g PiBJdCBpcyBtb3JlLCBjbGFyaWZpZWQgYWJvdmUuDQo+ID4NCj4gPj4gQnV0LCBpZiB3ZSdsbCBz dGlsbCBkZWNpZGUgdG8gZ28gYWhlYWQgd2l0aCBkaXJlY3QtcmVhcm1pbmcsIHRoaXMNCj4gPj4g cmUtYXJyYW5nZW1lbnQsIEkgdGhpbmssIHNob3VsZCBoZWxwIHRvIGtlZXAgdGhpbmdzIGNsZWFy IGFuZCBhdm9pZA0KPiA+PiBpbnRyb2R1Y2luZyBuZXcgbGltaXRhdGlvbnMgaW4gZXhpc3Rpbmcg ZnVuY3Rpb25hbGl0eS4NCj4gPj4NCj4gPj4gV0RZVD8NCj4gPiBJIGhhZCBhbm90aGVyIGlkZWEu IFRoaXMgcmVxdWlyZXMgdGhlIGFwcGxpY2F0aW9uIHRvIGNoYW5nZSwgd2hpY2ggbWlnaHQgYmUg b2sNCj4gZ2l2ZW4gdGhhdCBpdCBpcyBuZXcgZmVhdHVyZS9vcHRpbWl6YXRpb24uDQo+ID4NCj4g PiBXZSBjb3VsZCBleHBvc2UgYSBuZXcgQVBJIHRvIHRoZSBhcHBsaWNhdGlvbiB3aGljaCBhbGxv d3MgUlggc2lkZSB0byB0YWtlDQo+IGJ1ZmZlcnMgZnJvbSBUWCBzaWRlLiBUaGUgYXBwbGljYXRp b24gd291bGQgY2FsbCB0aGlzIGFkZGl0aW9uYWwgQVBJIGp1c3QgYmVmb3JlDQo+IGNhbGxpbmcg dGhlIGV0aF9yeF9idXJzdCBBUEkuDQo+ID4NCj4gPiBUaGUgYWR2YW50YWdlcyBJIHNlZSB3aXRo IHRoaXMgYXBwcm9hY2ggaXM6DQo+ID4gMSkgVGhlIHN0YXRpYyBtYXBwaW5nIG9mIHRoZSBwb3J0 cyBpcyBub3QgcmVxdWlyZWQuIFRoZSBtYXBwaW5nIGlzIGR5bmFtaWMuDQo+IFRoaXMgYWxsb3dz IGZvciB0aGUgYXBwbGljYXRpb24gdG8gbWFrZSBkZWNpc2lvbnMgYmFzZWQgb24gY3VycmVudCBj b25kaXRpb25zIGluDQo+IHRoZSBkYXRhIHBsYW5lLg0KPiA+IDIpIENvZGUgaXMgc2ltcGxlLCBi ZWNhdXNlIGl0IGRvZXMgbm90IGhhdmUgdG8gY2hlY2sgZm9yIG1hbnkgY29uZGl0aW9ucy4gVGhl DQo+IGFwcGxpY2F0aW9uIGNhbiBtYWtlIGJldHRlciBkZWNpc2lvbnMgYXMgaXQga25vd3MgdGhl IHNjZW5hcmlvIHdlbGwuIE5vdCBhbGwNCj4gYXBwbGljYXRpb25zIGhhdmUgdG8gdGFrZSB0aGUg aGl0IG9mIGNvbmRpdGlvbmFscy4NCj4gPiAyKSBUaGUgZXhpc3Rpbmcgc3luY2hyb25pemF0aW9u IHVzZWQgYnkgdGhlIGFwcGxpY2F0aW9ucyAodG8gc3RvcCBSWFEvVFhRKSBpcw0KPiBzdWZmaWNp ZW50LiBObyBuZXcgc3luY2hyb25pemF0aW9uIHJlcXVpcmVkLg0KPiANCj4gDQo+IFRoYXQgc291 bmRzIGxpa2UgYSB2ZXJ5IGdvb2QgaWRlYSB0byBtZS4NCj4gSSB0aGluayBpdCB3aWxsIGFsbG93 IHRvIGF2b2lkIGFsbCBzaG9ydC1jb21pbmdzIHRoYXQgYXJlIHByZXNlbnQgaW4gb3JpZ2luYWwN Cj4gYXBwcm9hY2guDQo+IEFnYWluLCBpZiB3ZSBsaWtlIHdlIGNhbiBldmVuIGFsbG93IHVzZXIg dG8gZmVlZCBSWFEgZnJvbSBzb21lIG90aGVyIHNvdXJjZXMNCj4gKGRyb3BwZWQgcGFja2V0cyku DQpHb29kIHBvaW50DQoNCj4gSnVzdCB0byBjb25maXJtIHRoYXQgd2UgYXJlIHRhbGtpbmcgYWJv dXQgdGhlIHNhbWUgdGhpbmc6DQo+IA0KPiAxLiBydGVfZXRoZGV2IHdpbGwgaGF2ZSBhbiBBUEkg Zm9yIHRoZSB1c2VyIHRvIGdldCBzd19yaW5nIGhhbmRsZSBmcm9tIHRoZSBSWFEsDQo+IHNvbWV0 aGluZyBsaWtlOg0KPiBzdHJ1Y3QgcnhxX3N3X3JpbmcgKg0KPiBydGVfZXRoX3J4cV9nZXRfc3df cmluZyh1aW50MTZfdCBwb3J0X2lkLCB1aW50MTZfdCByeHFfaWQpOw0KPiANCj4gV2UgcHJvYmJs eSBjYW4gZXZlbiBrZWVwICdzdHJ1Y3QgcnhxX3N3X3JpbmcnIGFzIGludGVybmFsIG9uZSwgYW5k IHVzZSBpdCBhcyBhDQo+IGhhbmRsZS4NCkRvIHdlIG5lZWQgdG8gZXhwb3NlIHRoZSBTVyByaW5n IHRvIHRoZSBhcHBsaWNhdGlvbiBsZXZlbD8gSU1PLCBpdCB3b3VsZCBiZSBnb29kIGZvciB0aGUg YXBwbGljYXRpb24gdG8gcmVmZXIgdG8gcG9ydCBJRCBhbmQgcXVldWUgSUQuDQoNCj4gDQo+IDIu IHJ0ZV9ldGhkZXYgd2lsbCBoYXZlIGFuIEFQSSB0aGF0IHdpbGwgYXNrIFRYUSB0byBmcmVlIG1i dWZzIGFuZCBmaWxsIGdpdmVuDQo+IHJ4cV9zd19yaW5nOg0KPiBpbnQNCj4gcnRlX2V0aF90eHFf ZmlsbF9zd19yaW5nKHVpbnQxNl90IHBvcnRfaWQsIHVpbnQxNl90IHR4cV9pZCwgc3RydWN0ICoN Cj4gcnhxX3N3X3JpbmcpOw0KSXQgaXMgZ29vZCB0byBmaWxsIHRoZSBkZXNjcmlwdG9ycyAoYnV0 IG5vdCB1cGRhdGUgdGhlIGhlYWQgYW5kIHRhaWwgcG9pbnRlcnMpIHdoaWNoIGtlZXBzIHRoZSBj b2RlIGxpZ2h0IGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuDQoNCj4gDQo+IA0KPiBTbyB0aGUgYXBw IGNvZGUgd2lsbCBsb29rIHNvbWV0aGluZyBsaWtlOg0KPiANCj4gcnhxX3N3X3JpbmcgPSByeHFf Z2V0X3N3X3JpbmcocnhfcG9ydCwgcnhxKTsNCj4gLi4uDQo+IHdoaWxlICguLi4pIHsNCj4gDQo+ IAluID0gZXRoX3R4X2J1cnN0KHR4X3BvcnQsIHR4cSwgcGt0cywgTik7DQo+IAkuLi4NCj4gCWV0 aF90eHFfZmlsbF9zd19yaW5nKHR4X3BvcnQsIHR4cSwgcnhxX3N3X3JpbmcpOw0KPiAJbiA9IGV0 aF9yeF9idXJzdChyeF9wb3J0LCByeHEsIHBrdHMsIE4pOw0KPiAJLi4uDQo+IH0NCj4gDQo+IA0K PiBEaWQgSSBnZXQgeW91ciBpZGVhIHJpZ2h0Pw0KT3ZlcmFsbCB5b3VyIHVuZGVyc3RhbmRpbmcg aXMgY29ycmVjdCwgYnV0IHRoZSBpZGVhIEkgaGFkIGRpZmZlcnMgc2xpZ2h0bHkgKG1haW5seSBr ZWVwaW5nIHBlcmZvcm1hbmNlIGluIG1pbmQgYW5kIHN0aWNraW5nIHRvIHRoZSBleHBlcmltZW50 cyB3ZSBoYXZlIGRvbmUpLg0KMSkgZXRoX3J4cV9maWxsKHJ4X3BvcnQsIHJ4cSwgdHhfcG9ydCwg dHhxKTsNClRoaXMgd2lsbCB0YWtlIHRoZSBidWZmZXJzIGZyb20gVFhRIGFuZCBmaWxsIHRoZSBS WFEgc3dfcmluZyBhcyB3ZWxsIGFzIHRoZSBoYXJkd2FyZSBidWZmZXJzLiANCg0KMikgVGhlIGxv b3Agd291bGQgYmUgYXMgZm9sbG93czoNCndoaWxlICguLi4pIHsNCiANCglldGhfcnhxX2ZpbGwo KHJ4X3BvcnQsIHJ4cSwgdHhfcG9ydCwgdHhxKTsNCgluID0gZXRoX3J4X2J1cnN0KHJ4X3BvcnQs IHJ4cSwgcGt0cywgTik7DQogCS4uLg0KCW4gPSBldGhfdHhfYnVyc3QodHhfcG9ydCwgdHhxLCBw a3RzLCBOKTsNCn0NCg0KDQo+IA0KPiA+DQo+ID4gVGhlIGRpc2FkdmFudGFnZSBpcyB0aGF0IGl0 IGlzIGFub3RoZXIgZnVuY3Rpb24gcG9pbnRlciBjYWxsIHdoaWNoIHdpbGwgcmVkdWNlDQo+IHNv bWUgcGVyZm9ybWFuY2UuDQo+ID4NCj4gPj4NCj4gPj4gS29uc3RhbnRpbg0KPiA+Pg0KPiA+Pg0K PiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+DQoNCg==