From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mx.groups.io with SMTP id smtpd.web11.3449.1679364096572735235 for ; Mon, 20 Mar 2023 19:01:36 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=PYt1KVSD; spf=pass (domain: intel.com, ip: 134.134.136.65, mailfrom: hao.a.wu@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679364096; x=1710900096; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=RiMUAHwMVNyZewa5IhIyUc/kbdoE/8TJqrrvLDaDP5A=; b=PYt1KVSDRX4Wd7SUE/003LA+QA5BAs5mRGyjOCCPfAdi7rSnoZk7+cVk JXe5dZ4mnHM/Q1s0eVvleOS1cEkElMkhtwlAYXjaBaNmSvCFN+jf0uGhh lIeCIl/3ISpRYHwg9Hz0TS2at+b/5ztDBSmi93/mVfbboFnrFq/7Ayy4D FHW7LJpW6TyW33w8di8D4ZejkxJKZvfQ24cfpW5wXi+/ChQYBm7sIhhE8 RjXAEkkdY50/SDp38p3uPI0DvVSpor0rLXlCX3LnfYfmVk9gFBkpbBXYz nCHo2pyhv0AQYEAnGJX8k+xx8cWsjfZiJ9W3EHtDQvjlNyMo8AxP+cl8q w==; X-IronPort-AV: E=McAfee;i="6600,9927,10655"; a="341184877" X-IronPort-AV: E=Sophos;i="5.98,277,1673942400"; d="scan'208";a="341184877" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Mar 2023 19:01:35 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10655"; a="681345158" X-IronPort-AV: E=Sophos;i="5.98,277,1673942400"; d="scan'208";a="681345158" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orsmga002.jf.intel.com with ESMTP; 20 Mar 2023 19:01:35 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Mon, 20 Mar 2023 19:01:35 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Mon, 20 Mar 2023 19:01:35 -0700 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (104.47.51.41) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.21; Mon, 20 Mar 2023 19:01:35 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FQ1Ncy4ACxf8j8c1ngOp7Ft/RpaCtxx1yCfnsXgv98EJSCpF8E/WP+0AepTpdxdbr23xts8Us4/Df9fin7aFq3l12yghEW66CIyn9/qRAySo82CUEEhaKHxaimjLIiti3PcfEMg7SGEAOL0AFZFfhGYwHiERMgu/X99k9ayRfwvFXJ0VjLlutkv2DVt2ojlYca3C1CwjXgTzIXMJ9jJlxwICqWRqfxGa59P5NDooSV2xv7J8dF4PH73T2NYukoampaMrgAfSTOKQ2J//S2SUoAREbP7pmkPQTPBmVOtKp2KAnpOou8ZGGpBlQoSdjWwhijVxwJnu9+NnXos220T5+w== 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=RiMUAHwMVNyZewa5IhIyUc/kbdoE/8TJqrrvLDaDP5A=; b=LUd18QFfGsKaoVHO2G93yBxcdUFndK+aBI+6jlH4B26yml9KZTCzm4gxZpOzOBaFhQOeiejCJNrxLUR2DpXrN6SwGjUfzLB57e6fx79MOXzYzJ81vg1pl+L5OqOU6rUWxbhtbWM8e6PR654CgEWoawx5xkpsANvC66dX7pcRORYAs4+YKuFB5b8i1qbTtyQ5FsvUWgjKXCyGKJ2m0L0lFQJC/TgGUwvIBbRmezUEPBu+lQwrF000PXq4tW0cPFUKuY3ZNE8K5q+Hae2qm9UotrGgWMKnAVl0hQnv5dR6EDjKGraBfQWsJRIlQO/7v91Kmi1GLE/mLUCCIC8Ls8RBpw== 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 DM6PR11MB4025.namprd11.prod.outlook.com (2603:10b6:5:197::31) by BL1PR11MB5349.namprd11.prod.outlook.com (2603:10b6:208:308::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.37; Tue, 21 Mar 2023 02:01:27 +0000 Received: from DM6PR11MB4025.namprd11.prod.outlook.com ([fe80::f1aa:69b5:fa2b:859d]) by DM6PR11MB4025.namprd11.prod.outlook.com ([fe80::f1aa:69b5:fa2b:859d%4]) with mapi id 15.20.6178.037; Tue, 21 Mar 2023 02:01:26 +0000 From: "Wu, Hao A" To: Gerd Hoffmann , "devel@edk2.groups.io" CC: Ard Biesheuvel , "Wang, Jian J" , "Yao, Jiewen" , =?utf-8?B?TWFydmluIEjDpHVzZXI=?= , James Bottomley , Michael Roth , "Kinney, Michael D" , Oliver Steffen , "Xu, Min M" , "Gao, Liming" , "Ni, Ray" , Tom Lendacky , "Aktas, Erdem" , "Liu, Zhiguang" , Pawel Polawski , "Justen, Jordan L" , Vitaly Cheptsov Subject: Re: [PATCH 4/5] MdeModulePkg: Consume new alignment-related macros Thread-Topic: [PATCH 4/5] MdeModulePkg: Consume new alignment-related macros Thread-Index: AQHZTZykJtf20PGwd0qbbe7MX01MOK8Eltdg Date: Tue, 21 Mar 2023 02:01:26 +0000 Message-ID: References: <20230303065115.406020-1-kraxel@redhat.com> <20230303065115.406020-5-kraxel@redhat.com> In-Reply-To: <20230303065115.406020-5-kraxel@redhat.com> Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: 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: DM6PR11MB4025:EE_|BL1PR11MB5349:EE_ x-ms-office365-filtering-correlation-id: 2f17c16e-b5fb-429d-5814-08db29b02e0a x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: /VlLNMh1+2go7XUoJnf9pdVMilV/5a8S3gV9TkPLADRBFy30Lm85oxVw99NOI8PwzWyGgiJazgI4Gt0wHzW2BdO4ejiid1HatDp3gtaazzGWAHdpOlkA4knF4HotuBCtXP+emki9KQhETVyHe9UXCznSQiNAjdLWxgHvisUqdkUbPNmwKUjfQd9Am98V7w95iTDjOrYyhHM0yLQZ9Wo8AIhDWCFsTdaOLd9FGWV6pd0cRID+4Z2O7rEuvv55maSumTd2Rpr/OJqp0GIrC77XtT24uriSJeXoIBfgHuly5OMRKVc7ImaKgxwmuji5N0sYYrKm2SErH8tLZIIb40714auK327WgzwHKdoex7MTYVc7bfe8D4zn5zilVu2biGUK7dxbuwwlnGj2znmv8rHXvLKJbSoFr+DPKfeWR+rMMCM0muuDBGWqSO72rqp/PKXRxkOc+MLpAstib8iq4t7dUJj5JLoiXS8xYyFwjOWG2pbliDYWY36pdiTze1pIFsNOu2VSJZbeTIxRhhypEnbZ5ybea5b4DU+2mpVajy6rV+yuUbF2Al6WkGLG/Fn4uzxh3VRu2x1wyEYGLgpz24XXx8yH9H8bM8HTlbZv2+p/DmIfr5nCw8EsyhQ/2OWFod32pYOa8DD5c1XuF0GwR7nDiDJrQ4NsGkYnlaZZuuIbMGY9FvqNUk9kXRnUDCuaI6j0W9mcoLycW2L05Bwt3v9q+ME38p0kMwTcT8vTo8u8JNYHtPHbtrjsbFk6FwqATQcV x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR11MB4025.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(376002)(39860400002)(136003)(366004)(396003)(346002)(451199018)(83380400001)(38100700002)(71200400001)(7696005)(6506007)(54906003)(30864003)(316002)(110136005)(55016003)(33656002)(8936002)(76116006)(66946007)(52536014)(66556008)(4326008)(8676002)(66446008)(64756008)(66476007)(5660300002)(7416002)(41300700001)(2906002)(478600001)(86362001)(122000001)(82960400001)(38070700005)(186003)(9686003)(53546011)(26005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Slp0ZURYcm5MQnpLVEFmUCtMTWh1Ylh2QXZkS2wyNjBUNlNvTk5Vb3hrcTd0?= =?utf-8?B?NzRkbzRVTjdxZTBQZ2x6UzUwbzNsSDczc1Bua29ZY08rZjd0d3BOT2ZxSmxx?= =?utf-8?B?ai9mQStCcHVWbmd3eXBSWk9oNHh6UWw3ZlV6NWZrcEltb3NPZ0dxSUdCTStG?= =?utf-8?B?S0ZHdnovWi9BSHVweVFpYjJkNlljYmNGVmtQd2I0RjRON2xIWElLaHRBZDRy?= =?utf-8?B?VTcvYVRMSjVqVHR3SldGUzNXQlV4aFREVTZmL3E3RXRBaGxOaWdqRmVSU09j?= =?utf-8?B?bGl1b2U1VUFQSjQ5NUFWdW9hUi80N0t3TDA1VHJsOC9NY1d1S0g4cVU1cUhQ?= =?utf-8?B?bXdjMFhXS2IvK3pxYUJwK2JXTlhxNDBYUEZ5UjlpdjVqOS9WUnFSMGFYNFRP?= =?utf-8?B?b0YxUG5nNFk3dHhiQ292M0I0ek1TWTBMK05aR3llZlhEdktuUVh5Y3dBUEsv?= =?utf-8?B?b3NHdHVsYUZSVEU4OVN2K3pNMCtHRnBtc1hwMUFDcE9yWGtkbEo4eExLMU5H?= =?utf-8?B?Vm9KcFZaZklEM0pSejVzZklVdmJpM0JqcnJibkJrVkpVL21iMUsraGlwOGZ1?= =?utf-8?B?Tmwvd2p1bGtmTlNPMCt6NzkwYXJXSytueUVPdkQrTjNrZnNMRW9zSk03MGVz?= =?utf-8?B?SDhYMGFHMTZTVkZzWWt2YURneDlUbFZRYVdueldpSlN0aWRQSUFyRytuLzAy?= =?utf-8?B?V1BnNDZ1YTkydFcvSmt5c3VHWmxLT3NCQ3lGaHdJSnEyQXN4WXhoK2JRY1Nn?= =?utf-8?B?VHo4OWg3ZWw0aDA4ZHJNVnRUK3MwWXZSRFNIQVN6aktVcmxSS1hGdDdqMHRP?= =?utf-8?B?Zk9rMTdXbG9PdEVJS2tmWTZQMnRMK3FYSCt3VXZCcXdZZjcvSGNMYW8zb1ow?= =?utf-8?B?clZlTGZuaFVmUCtFSFA5aFlsejUvWWtqcng4N1R6OEdMOHEycUJFSk1RaEY0?= =?utf-8?B?SzZ1aTZOZFREemYwUU5Ib2RWMHhXQ0pUY3NzMDRCMkhkVlRiSW9XNDZMZWdq?= =?utf-8?B?cGJ1M25HZEIrVlJCVllXbVJ5ckZFclBkZVNENlk3MEhmQStTdE5CYzFUL1Nn?= =?utf-8?B?azdJbW5KcWYwYjRHYm5wZTNyb21ENEhGMjhoR0FJanMxUXk5cnJRYjVRK1ll?= =?utf-8?B?SzQxQkw3MTZoUGRyYkxNdzBXb3VZWWF6NkdiVlZWUjgvdUpHRFA0Q2JZR1Ex?= =?utf-8?B?ZVdmRHBCbnBQZlE3bTBrWVovRVhTVlM3RVNIRy9oRUczb2tJZGxSVlFEU3dR?= =?utf-8?B?eUpRa3cwakxHblNLUnFlb1AzV3hwYUNRcDVZUlJid1hvTkhJTVFMS3M2dW9N?= =?utf-8?B?d2oyMllnNzFLQ2ZBaVl2RUE1aVNDazFxTWMyWTVzQk5XWlgvdzdnaW05MCtZ?= =?utf-8?B?SUNybW1TK2VuQnI2TE9vaEhTWlUyb1ZpREo0WktRU0NkckhFcHBkdmlscTBh?= =?utf-8?B?N1VXWlNRU2RTTWs1TENpQkpxaHFUbGcyMUNaNDhjRzkvQjlOd2xDY2grdzA3?= =?utf-8?B?YWcybVlmd1JvZFJCRXV5c2I0andKMDU0bzhsM21aYlc5bHM1aWUwYkpjcURC?= =?utf-8?B?MGJ1VW9ISWx1a0pJN2F3TktGRkRWYXFmMDdhSWZJaDRmUjZMbVFqNEkzZVhB?= =?utf-8?B?bDBZWDBhMndaOGRldzNWUnB1MFdidnJJM2pzT0E5bG9VWnV3SkJkeGpSbTZk?= =?utf-8?B?ZzBSQkhvRVZEQXBFWDlQL1VtTTZES1JrdUkzckFSSXFxME9KcUdtUzgvZHVK?= =?utf-8?B?OVhuNE1uNGlBM1dnelltZWJ4SytmYVdoZktCR0pYRlVaM1RTc1NIVjRTOW53?= =?utf-8?B?bktzdHhOM1NOMXFtS1lYRDRneFVjWlNYblQ3OVkxT0JwTitCZmdoL2lNODBO?= =?utf-8?B?NFlxdkpsUmlZaFVSWEtzVmNsMTRjOGtMRFVUSjNqT00vNWtNYlZQdWVnYlNP?= =?utf-8?B?ZjdNMll4ZzRremcySVQ5Vk53NzVVb0dJRTlqRmdaSnZabzh0ek5LeWRSUUNa?= =?utf-8?B?SFpXYzYvM3Bkd2lDNGVNYXFpMi8ydDk5bkM5RHFjSUg2akliOTJDQkluMDBs?= =?utf-8?B?Mm1pMmlwcEcwRW9yZWpjS2JtMDVIN2hFTy95aXZyTWVpL1NsanU5d29GVjVN?= =?utf-8?Q?U57gbm+XjFOFllZBIwskQmRyA?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB4025.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2f17c16e-b5fb-429d-5814-08db29b02e0a X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Mar 2023 02:01:26.6001 (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: 81gFnK6trBAakujS75yR5Y7kS8Ku//UGFYe2i+cAomBl1DYFskPgyn8GlJDJTfcyrJkb7NLN4P32nGFpRVixDQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR11MB5349 Return-Path: hao.a.wu@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UmV2aWV3ZWQtYnk6IEhhbyBBIFd1IDxoYW8uYS53dUBpbnRlbC5jb20+DQoNCkJlc3QgUmVnYXJk cywNCkhhbyBXdQ0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEdlcmQg SG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPg0KPiBTZW50OiBGcmlkYXksIE1hcmNoIDMsIDIw MjMgMjo1MSBQTQ0KPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gQ2M6IEFyZCBCaWVzaGV1 dmVsIDxhcmRiK3RpYW5vY29yZUBrZXJuZWwub3JnPjsgR2VyZCBIb2ZmbWFubg0KPiA8a3JheGVs QHJlZGhhdC5jb20+OyBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT47IFlhbywg Smlld2VuDQo+IDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IE1hcnZpbiBIw6R1c2VyIDxtaGFldXNl ckBwb3N0ZW8uZGU+OyBKYW1lcw0KPiBCb3R0b21sZXkgPGplamJAbGludXguaWJtLmNvbT47IE1p Y2hhZWwgUm90aCA8bWljaGFlbC5yb3RoQGFtZC5jb20+Ow0KPiBXdSwgSGFvIEEgPGhhby5hLnd1 QGludGVsLmNvbT47IEtpbm5leSwgTWljaGFlbCBEDQo+IDxtaWNoYWVsLmQua2lubmV5QGludGVs LmNvbT47IE9saXZlciBTdGVmZmVuIDxvc3RlZmZlbkByZWRoYXQuY29tPjsgWHUsIE1pbg0KPiBN IDxtaW4ubS54dUBpbnRlbC5jb20+OyBHYW8sIExpbWluZyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29t LmNuPjsgTmksIFJheQ0KPiA8cmF5Lm5pQGludGVsLmNvbT47IFRvbSBMZW5kYWNreSA8dGhvbWFz LmxlbmRhY2t5QGFtZC5jb20+OyBBa3RhcywNCj4gRXJkZW0gPGVyZGVtYWt0YXNAZ29vZ2xlLmNv bT47IExpdSwgWmhpZ3VhbmcgPHpoaWd1YW5nLmxpdUBpbnRlbC5jb20+Ow0KPiBQYXdlbCBQb2xh d3NraSA8cHBvbGF3c2tAcmVkaGF0LmNvbT47IEp1c3RlbiwgSm9yZGFuIEwNCj4gPGpvcmRhbi5s Lmp1c3RlbkBpbnRlbC5jb20+OyBWaXRhbHkgQ2hlcHRzb3YgPHZpdDk2OTZAcHJvdG9ubWFpbC5j b20+DQo+IFN1YmplY3Q6IFtQQVRDSCA0LzVdIE1kZU1vZHVsZVBrZzogQ29uc3VtZSBuZXcgYWxp Z25tZW50LXJlbGF0ZWQgbWFjcm9zDQo+IA0KPiBGcm9tOiBNYXJ2aW4gSMOkdXNlciA8bWhhZXVz ZXJAcG9zdGVvLmRlPg0KPiANCj4gVGhpcyBwYXRjaCBzdWJzdGl0dXRlcyB0aGUgbWFjcm9zIHRo YXQgd2VyZSByZW5hbWVkIGluIHRoZSBmaXJzdA0KPiBwYXRjaCB3aXRoIHRoZSBuZXcsIHNoYXJl ZCBhbGlnbm1lbnQgbWFjcm9zLg0KPiANCj4gQ2M6IEppYW4gSiBXYW5nIDxqaWFuLmoud2FuZ0Bp bnRlbC5jb20+DQo+IENjOiBIYW8gQSBXdSA8aGFvLmEud3VAaW50ZWwuY29tPg0KPiBDYzogUmF5 IE5pIDxyYXkubmlAaW50ZWwuY29tPg0KPiBDYzogVml0YWx5IENoZXB0c292IDx2aXQ5Njk2QHBy b3Rvbm1haWwuY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBNYXJ2aW4gSMOkdXNlciA8bWhhZXVzZXJA cG9zdGVvLmRlPg0KPiAtLS0NCj4gIE1kZU1vZHVsZVBrZy9CdXMvQXRhL0FoY2lQZWkvQWhjaVBl aS5oICAgICAgICB8ICAzICstDQo+ICAuLi4vQXRhL0F0YUF0YXBpUGFzc1RocnUvQXRhQXRhcGlQ YXNzVGhydS5oICAgfCAgMiAtLQ0KPiAgTWRlTW9kdWxlUGtnL0J1cy9BdGEvQXRhQnVzRHhlL0F0 YUJ1cy5oICAgICAgIHwgIDEgLQ0KPiAgTWRlTW9kdWxlUGtnL0J1cy9TY3NpL1Njc2lEaXNrRHhl L1Njc2lEaXNrLmggIHwgIDIgLS0NCj4gIC4uLi9CdXMvVWZzL1Vmc0Jsb2NrSW9QZWkvVWZzQmxv Y2tJb1BlaS5oICAgICB8ICAyIC0tDQo+ICAuLi4vQnVzL1Vmcy9VZnNQYXNzVGhydUR4ZS9VZnNQ YXNzVGhydS5oICAgICAgfCAgMiAtLQ0KPiAgTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9FYmNEeGUv RWJjRXhlY3V0ZS5oICAgIHwgIDMgKy0NCj4gIE1kZU1vZHVsZVBrZy9CdXMvQXRhL0FoY2lQZWkv QWhjaU1vZGUuYyAgICAgICB8ICAyICstDQo+ICAuLi4vQnVzL0F0YS9BaGNpUGVpL0FoY2lQZWlQ YXNzVGhydS5jICAgICAgICAgfCAgNiArKy0tDQo+ICAuLi4vQXRhL0F0YUF0YXBpUGFzc1RocnUv QXRhQXRhcGlQYXNzVGhydS5jICAgfCAxMiArKystLS0tDQo+ICAuLi4vQnVzL0F0YS9BdGFCdXNE eGUvQXRhUGFzc1RocnVFeGVjdXRlLmMgICAgfCAgMiArLQ0KPiAgTWRlTW9kdWxlUGtnL0J1cy9T Y3NpL1Njc2lEaXNrRHhlL1Njc2lEaXNrLmMgIHwgIDQgKy0tDQo+ICAuLi4vQnVzL1Vmcy9VZnNQ YXNzVGhydUR4ZS9VZnNQYXNzVGhydS5jICAgICAgfCAgNiArKy0tDQo+ICBNZGVNb2R1bGVQa2cv VW5pdmVyc2FsL0ViY0R4ZS9FYmNFeGVjdXRlLmMgICAgfCAzNiArKysrKysrKystLS0tLS0tLS0t DQo+ICAxNCBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCA0NyBkZWxldGlvbnMoLSkN Cj4gDQo+IGRpZmYgLS1naXQgYS9NZGVNb2R1bGVQa2cvQnVzL0F0YS9BaGNpUGVpL0FoY2lQZWku aA0KPiBiL01kZU1vZHVsZVBrZy9CdXMvQXRhL0FoY2lQZWkvQWhjaVBlaS5oDQo+IGluZGV4IDcx ZDM0Yzk2MmFkMS4uZTJlNGJhNDNlN2M0IDEwMDY0NA0KPiAtLS0gYS9NZGVNb2R1bGVQa2cvQnVz L0F0YS9BaGNpUGVpL0FoY2lQZWkuaA0KPiArKysgYi9NZGVNb2R1bGVQa2cvQnVzL0F0YS9BaGNp UGVpL0FoY2lQZWkuaA0KPiBAQCAtMTQ2LDggKzE0Niw3IEBAIHR5cGVkZWYgdW5pb24gew0KPiAg I2RlZmluZSBBSENJX1BPUlRfU0VSUiAgMHgwMDMwDQo+ICAjZGVmaW5lIEFIQ0lfUE9SVF9DSSAg ICAweDAwMzgNCj4gDQo+IC0jZGVmaW5lIEFERFJFU1NfSVNfQUxJR05FRF8oYWRkciwgc2l6ZSkg ICgoKFVJTlROKSAoYWRkcikgJiAoc2l6ZSAtIDEpKSA9PSAwKQ0KPiAtI2RlZmluZSBUSU1FUl9Q RVJJT0RfU0VDT05EUyhTZWNvbmRzKSAgICBNdWx0VTY0eDMyKChVSU5UNjQpKFNlY29uZHMpLA0K PiAxMDAwMDAwMCkNCj4gKyNkZWZpbmUgVElNRVJfUEVSSU9EX1NFQ09ORFMoU2Vjb25kcykgIE11 bHRVNjR4MzIoKFVJTlQ2NCkoU2Vjb25kcyksDQo+IDEwMDAwMDAwKQ0KPiANCj4gICNwcmFnbWEg cGFjaygxKQ0KPiANCj4gZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9CdXMvQXRhL0F0YUF0YXBp UGFzc1RocnUvQXRhQXRhcGlQYXNzVGhydS5oDQo+IGIvTWRlTW9kdWxlUGtnL0J1cy9BdGEvQXRh QXRhcGlQYXNzVGhydS9BdGFBdGFwaVBhc3NUaHJ1LmgNCj4gaW5kZXggNzkzNzg4NjYxNGUxLi4w MTZmYzY4OTBhZTkgMTAwNjQ0DQo+IC0tLSBhL01kZU1vZHVsZVBrZy9CdXMvQXRhL0F0YUF0YXBp UGFzc1RocnUvQXRhQXRhcGlQYXNzVGhydS5oDQo+ICsrKyBiL01kZU1vZHVsZVBrZy9CdXMvQXRh L0F0YUF0YXBpUGFzc1RocnUvQXRhQXRhcGlQYXNzVGhydS5oDQo+IEBAIC0xNDgsOCArMTQ4LDYg QEAgc3RydWN0IF9BVEFfTk9OQkxPQ0tfVEFTSyB7DQo+ICAjZGVmaW5lIEFUQV9BVEFQSV9USU1F T1VUICAgRUZJX1RJTUVSX1BFUklPRF9TRUNPTkRTKDMpDQo+ICAjZGVmaW5lIEFUQV9TUElOVVBf VElNRU9VVCAgRUZJX1RJTUVSX1BFUklPRF9TRUNPTkRTKDEwKQ0KPiANCj4gLSNkZWZpbmUgQURE UkVTU19JU19BTElHTkVEXyhhZGRyLCBzaXplKSAgKCgoVUlOVE4pIChhZGRyKSAmIChzaXplIC0g MSkpID09IDApDQo+IC0NCj4gICNkZWZpbmUgQVRBX1BBU1NfVEhSVV9QUklWQVRFX0RBVEFfRlJP TV9USElTKGEpIFwNCj4gICAgQ1IgKGEsIFwNCj4gICAgICAgIEFUQV9BVEFQSV9QQVNTX1RIUlVf SU5TVEFOQ0UsIFwNCj4gZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9CdXMvQXRhL0F0YUJ1c0R4 ZS9BdGFCdXMuaA0KPiBiL01kZU1vZHVsZVBrZy9CdXMvQXRhL0F0YUJ1c0R4ZS9BdGFCdXMuaA0K PiBpbmRleCA0NzM0NmU5MTFkNDcuLjZiYzM0NWY3ZTc3NyAxMDA2NDQNCj4gLS0tIGEvTWRlTW9k dWxlUGtnL0J1cy9BdGEvQXRhQnVzRHhlL0F0YUJ1cy5oDQo+ICsrKyBiL01kZU1vZHVsZVBrZy9C dXMvQXRhL0F0YUJ1c0R4ZS9BdGFCdXMuaA0KPiBAQCAtNzYsNyArNzYsNiBAQA0KPiAgI2RlZmlu ZSBBVEFfVEFTS19TSUdOQVRVUkUgICAgICBTSUdOQVRVUkVfMzIgKCdBJywgJ1QnLCAnUycsICdL JykNCj4gICNkZWZpbmUgQVRBX0RFVklDRV9TSUdOQVRVUkUgICAgU0lHTkFUVVJFXzMyICgnQScs ICdCJywgJ0knLCAnRCcpDQo+ICAjZGVmaW5lIEFUQV9TVUJfVEFTS19TSUdOQVRVUkUgIFNJR05B VFVSRV8zMiAoJ0EnLCAnUycsICdUJywgJ1MnKQ0KPiAtI2RlZmluZSBBRERSRVNTX0lTX0FMSUdO RURfKGFkZHIsIHNpemUpICAoKChVSU5UTikgKGFkZHIpICYgKHNpemUgLSAxKSkgPT0gMCkNCj4g DQo+ICAvLw0KPiAgLy8gQVRBIGJ1cyBkYXRhIHN0cnVjdHVyZSBmb3IgQVRBIGNvbnRyb2xsZXIN Cj4gZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9CdXMvU2NzaS9TY3NpRGlza0R4ZS9TY3NpRGlz ay5oDQo+IGIvTWRlTW9kdWxlUGtnL0J1cy9TY3NpL1Njc2lEaXNrRHhlL1Njc2lEaXNrLmgNCj4g aW5kZXggZWQzODRhZDUyMTgyLi41YTI1YjU1YzQ5NTIgMTAwNjQ0DQo+IC0tLSBhL01kZU1vZHVs ZVBrZy9CdXMvU2NzaS9TY3NpRGlza0R4ZS9TY3NpRGlzay5oDQo+ICsrKyBiL01kZU1vZHVsZVBr Zy9CdXMvU2NzaS9TY3NpRGlza0R4ZS9TY3NpRGlzay5oDQo+IEBAIC0zOCw4ICszOCw2IEBAIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+IA0KPiAgI2RlZmlu ZSBJU19ERVZJQ0VfRklYRUQoYSkgIChhKS0+Rml4ZWREZXZpY2UgPyAxIDogMA0KPiANCj4gLSNk ZWZpbmUgQUREUkVTU19JU19BTElHTkVEXyhhZGRyLCBzaXplKSAgKCgoVUlOVE4pIChhZGRyKSAm IChzaXplIC0gMSkpID09IDApDQo+IC0NCj4gICNkZWZpbmUgVUZTX1dMVU5fUlBNQiAgMHhDNA0K PiANCj4gIHR5cGVkZWYgc3RydWN0IHsNCj4gZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9CdXMv VWZzL1Vmc0Jsb2NrSW9QZWkvVWZzQmxvY2tJb1BlaS5oDQo+IGIvTWRlTW9kdWxlUGtnL0J1cy9V ZnMvVWZzQmxvY2tJb1BlaS9VZnNCbG9ja0lvUGVpLmgNCj4gaW5kZXggMWFkYjM4MmFhOGMzLi5l ZDQ3NzZmNTQ4ZTAgMTAwNjQ0DQo+IC0tLSBhL01kZU1vZHVsZVBrZy9CdXMvVWZzL1Vmc0Jsb2Nr SW9QZWkvVWZzQmxvY2tJb1BlaS5oDQo+ICsrKyBiL01kZU1vZHVsZVBrZy9CdXMvVWZzL1Vmc0Js b2NrSW9QZWkvVWZzQmxvY2tJb1BlaS5oDQo+IEBAIC0xMzMsOCArMTMzLDYgQEAgdHlwZWRlZiBz dHJ1Y3QgX1VGU19QRUlNX0hDX1BSSVZBVEVfREFUQSB7DQo+IA0KPiAgI2RlZmluZSBST1VORFVQ OCh4KSAgKCgoeCkgJSA4ID09IDApID8gKHgpIDogKCh4KSAvIDggKyAxKSAqIDgpDQo+IA0KPiAt I2RlZmluZSBBRERSRVNTX0lTX0FMSUdORURfKGFkZHIsIHNpemUpICAoKChVSU5UTikgKGFkZHIp ICYgKHNpemUgLSAxKSkgPT0gMCkNCj4gLQ0KPiAgI2RlZmluZSBHRVRfVUZTX1BFSU1fSENfUFJJ VkFURV9EQVRBX0ZST01fVEhJUyhhKSAgICAgICAgIENSIChhLA0KPiBVRlNfUEVJTV9IQ19QUklW QVRFX0RBVEEsIEJsa0lvUHBpLCBVRlNfUEVJTV9IQ19TSUcpDQo+ICAjZGVmaW5lIEdFVF9VRlNf UEVJTV9IQ19QUklWQVRFX0RBVEFfRlJPTV9USElTMihhKSAgICAgICAgQ1IgKGEsDQo+IFVGU19Q RUlNX0hDX1BSSVZBVEVfREFUQSwgQmxrSW8yUHBpLCBVRlNfUEVJTV9IQ19TSUcpDQo+ICAjZGVm aW5lIEdFVF9VRlNfUEVJTV9IQ19QUklWQVRFX0RBVEFfRlJPTV9USElTX05PVElGWShhKSAgQ1Ig KGEsDQo+IFVGU19QRUlNX0hDX1BSSVZBVEVfREFUQSwgRW5kT2ZQZWlOb3RpZnlMaXN0LCBVRlNf UEVJTV9IQ19TSUcpDQo+IGRpZmYgLS1naXQgYS9NZGVNb2R1bGVQa2cvQnVzL1Vmcy9VZnNQYXNz VGhydUR4ZS9VZnNQYXNzVGhydS5oDQo+IGIvTWRlTW9kdWxlUGtnL0J1cy9VZnMvVWZzUGFzc1Ro cnVEeGUvVWZzUGFzc1RocnUuaA0KPiBpbmRleCAwZWMzN2U1NjY1MmIuLmJjMTEzOWRhNmUzYiAx MDA2NDQNCj4gLS0tIGEvTWRlTW9kdWxlUGtnL0J1cy9VZnMvVWZzUGFzc1RocnVEeGUvVWZzUGFz c1RocnUuaA0KPiArKysgYi9NZGVNb2R1bGVQa2cvQnVzL1Vmcy9VZnNQYXNzVGhydUR4ZS9VZnNQ YXNzVGhydS5oDQo+IEBAIC0xMDUsOCArMTA1LDYgQEAgdHlwZWRlZiBzdHJ1Y3Qgew0KPiANCj4g ICNkZWZpbmUgUk9VTkRVUDgoeCkgICgoKHgpICUgOCA9PSAwKSA/ICh4KSA6ICgoeCkgLyA4ICsg MSkgKiA4KQ0KPiANCj4gLSNkZWZpbmUgQUREUkVTU19JU19BTElHTkVEXyhhZGRyLCBzaXplKSAg KCgoVUlOVE4pIChhZGRyKSAmIChzaXplIC0gMSkpID09IDApDQo+IC0NCj4gICNkZWZpbmUgVUZT X1BBU1NfVEhSVV9QUklWQVRFX0RBVEFfRlJPTV9USElTKGEpIFwNCj4gICAgQ1IgKGEsIFwNCj4g ICAgICAgIFVGU19QQVNTX1RIUlVfUFJJVkFURV9EQVRBLCBcDQo+IGRpZmYgLS1naXQgYS9NZGVN b2R1bGVQa2cvVW5pdmVyc2FsL0ViY0R4ZS9FYmNFeGVjdXRlLmgNCj4gYi9NZGVNb2R1bGVQa2cv VW5pdmVyc2FsL0ViY0R4ZS9FYmNFeGVjdXRlLmgNCj4gaW5kZXggNmRjNjczMGFiMDk1Li5mMzc2 OGU3OTUyOGUgMTAwNjQ0DQo+IC0tLSBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvRWJjRHhlL0Vi Y0V4ZWN1dGUuaA0KPiArKysgYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0ViY0R4ZS9FYmNFeGVj dXRlLmgNCj4gQEAgLTE0LDggKzE0LDcgQEAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0y LUNsYXVzZS1QYXRlbnQNCj4gIC8vDQo+ICAvLyBNYWNyb3MgdG8gY2hlY2sgYW5kIHNldCBhbGln bm1lbnQNCj4gIC8vDQo+IC0jZGVmaW5lIEFTU0VSVF9BTElHTkVEKGFkZHIsIHNpemUpICAgICAg IEFTU0VSVCAoISgoVUlOVDMyKSAoYWRkcikgJiAoc2l6ZSAtDQo+IDEpKSkNCj4gLSNkZWZpbmUg QUREUkVTU19JU19BTElHTkVEXyhhZGRyLCBzaXplKSAgISgoVUlOVDMyKSAoYWRkcikgJiAoc2l6 ZSAtIDEpKQ0KPiArI2RlZmluZSBBU1NFUlRfQUxJR05FRChhZGRyLCBzaXplKSAgQVNTRVJUIChB RERSRVNTX0lTX0FMSUdORUQgKGFkZHIsDQo+IHNpemUpKQ0KPiANCj4gIC8vDQo+ICAvLyBEZWJ1 ZyBtYWNybw0KPiBkaWZmIC0tZ2l0IGEvTWRlTW9kdWxlUGtnL0J1cy9BdGEvQWhjaVBlaS9BaGNp TW9kZS5jDQo+IGIvTWRlTW9kdWxlUGtnL0J1cy9BdGEvQWhjaVBlaS9BaGNpTW9kZS5jDQo+IGlu ZGV4IGQ5M2ZhNzhjODFmMy4uMGYwMTk4ZDMwODViIDEwMDY0NA0KPiAtLS0gYS9NZGVNb2R1bGVQ a2cvQnVzL0F0YS9BaGNpUGVpL0FoY2lNb2RlLmMNCj4gKysrIGIvTWRlTW9kdWxlUGtnL0J1cy9B dGEvQWhjaVBlaS9BaGNpTW9kZS5jDQo+IEBAIC0yMTI2LDcgKzIxMjYsNyBAQCBUcnVzdFRyYW5z ZmVyQXRhRGV2aWNlICgNCj4gICAgICAvLyBBVEEgUGFzc1RocnUgUFBJLg0KPiAgICAgIC8vDQo+ ICAgICAgaWYgKChBdGFQYXNzVGhydS0+TW9kZS0+SW9BbGlnbiA+IDEpICYmDQo+IC0gICAgICAg ICFBRERSRVNTX0lTX0FMSUdORURfIChCdWZmZXIsIEF0YVBhc3NUaHJ1LT5Nb2RlLT5Jb0FsaWdu KSkNCj4gKyAgICAgICAgIUFERFJFU1NfSVNfQUxJR05FRCAoQnVmZmVyLCBBdGFQYXNzVGhydS0+ TW9kZS0+SW9BbGlnbikpDQo+ICAgICAgew0KPiAgICAgICAgTmV3QnVmZmVyID0gQWxsb2NhdGVB bGlnbmVkUGFnZXMgKA0KPiAgICAgICAgICAgICAgICAgICAgICBFRklfU0laRV9UT19QQUdFUyAo VHJhbnNmZXJMZW5ndGgpLA0KPiBkaWZmIC0tZ2l0IGEvTWRlTW9kdWxlUGtnL0J1cy9BdGEvQWhj aVBlaS9BaGNpUGVpUGFzc1RocnUuYw0KPiBiL01kZU1vZHVsZVBrZy9CdXMvQXRhL0FoY2lQZWkv QWhjaVBlaVBhc3NUaHJ1LmMNCj4gaW5kZXggMGM0OTA1OWEwMGQ1Li5jZDU1MjcyYzk2Y2QgMTAw NjQ0DQo+IC0tLSBhL01kZU1vZHVsZVBrZy9CdXMvQXRhL0FoY2lQZWkvQWhjaVBlaVBhc3NUaHJ1 LmMNCj4gKysrIGIvTWRlTW9kdWxlUGtnL0J1cy9BdGEvQWhjaVBlaS9BaGNpUGVpUGFzc1RocnUu Yw0KPiBAQCAtMTk0LDE1ICsxOTQsMTUgQEAgQWhjaUF0YVBhc3NUaHJ1UGFzc1RocnUgKA0KPiAg ICB9DQo+IA0KPiAgICBJb0FsaWduID0gVGhpcy0+TW9kZS0+SW9BbGlnbjsNCj4gLSAgaWYgKChJ b0FsaWduID4gMSkgJiYgIUFERFJFU1NfSVNfQUxJR05FRF8gKFBhY2tldC0+SW5EYXRhQnVmZmVy LCBJb0FsaWduKSkgew0KPiArICBpZiAoKElvQWxpZ24gPiAxKSAmJiAhQUREUkVTU19JU19BTElH TkVEIChQYWNrZXQtPkluRGF0YUJ1ZmZlciwgSW9BbGlnbikpIHsNCj4gICAgICByZXR1cm4gRUZJ X0lOVkFMSURfUEFSQU1FVEVSOw0KPiAgICB9DQo+IA0KPiAtICBpZiAoKElvQWxpZ24gPiAxKSAm JiAhQUREUkVTU19JU19BTElHTkVEXyAoUGFja2V0LT5PdXREYXRhQnVmZmVyLCBJb0FsaWduKSkN Cj4gew0KPiArICBpZiAoKElvQWxpZ24gPiAxKSAmJiAhQUREUkVTU19JU19BTElHTkVEIChQYWNr ZXQtPk91dERhdGFCdWZmZXIsIElvQWxpZ24pKQ0KPiB7DQo+ICAgICAgcmV0dXJuIEVGSV9JTlZB TElEX1BBUkFNRVRFUjsNCj4gICAgfQ0KPiANCj4gLSAgaWYgKChJb0FsaWduID4gMSkgJiYgIUFE RFJFU1NfSVNfQUxJR05FRF8gKFBhY2tldC0+QXNiLCBJb0FsaWduKSkgew0KPiArICBpZiAoKElv QWxpZ24gPiAxKSAmJiAhQUREUkVTU19JU19BTElHTkVEIChQYWNrZXQtPkFzYiwgSW9BbGlnbikp IHsNCj4gICAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiAgICB9DQo+IA0KPiBk aWZmIC0tZ2l0IGEvTWRlTW9kdWxlUGtnL0J1cy9BdGEvQXRhQXRhcGlQYXNzVGhydS9BdGFBdGFw aVBhc3NUaHJ1LmMNCj4gYi9NZGVNb2R1bGVQa2cvQnVzL0F0YS9BdGFBdGFwaVBhc3NUaHJ1L0F0 YUF0YXBpUGFzc1RocnUuYw0KPiBpbmRleCAzMjRhYmFkZDAyZGQuLjUwNDA2ZmUwMjcwZCAxMDA2 NDQNCj4gLS0tIGEvTWRlTW9kdWxlUGtnL0J1cy9BdGEvQXRhQXRhcGlQYXNzVGhydS9BdGFBdGFw aVBhc3NUaHJ1LmMNCj4gKysrIGIvTWRlTW9kdWxlUGtnL0J1cy9BdGEvQXRhQXRhcGlQYXNzVGhy dS9BdGFBdGFwaVBhc3NUaHJ1LmMNCj4gQEAgLTEyOTksMTUgKzEyOTksMTUgQEAgQXRhUGFzc1Ro cnVQYXNzVGhydSAoDQo+IA0KPiAgICBJbnN0YW5jZSA9IEFUQV9QQVNTX1RIUlVfUFJJVkFURV9E QVRBX0ZST01fVEhJUyAoVGhpcyk7DQo+IA0KPiAtICBpZiAoKFRoaXMtPk1vZGUtPklvQWxpZ24g PiAxKSAmJiAhQUREUkVTU19JU19BTElHTkVEXyAoUGFja2V0LQ0KPiA+SW5EYXRhQnVmZmVyLCBU aGlzLT5Nb2RlLT5Jb0FsaWduKSkgew0KPiArICBpZiAoKFRoaXMtPk1vZGUtPklvQWxpZ24gPiAx KSAmJiAhQUREUkVTU19JU19BTElHTkVEIChQYWNrZXQtDQo+ID5JbkRhdGFCdWZmZXIsIFRoaXMt Pk1vZGUtPklvQWxpZ24pKSB7DQo+ICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsN Cj4gICAgfQ0KPiANCj4gLSAgaWYgKChUaGlzLT5Nb2RlLT5Jb0FsaWduID4gMSkgJiYgIUFERFJF U1NfSVNfQUxJR05FRF8gKFBhY2tldC0NCj4gPk91dERhdGFCdWZmZXIsIFRoaXMtPk1vZGUtPklv QWxpZ24pKSB7DQo+ICsgIGlmICgoVGhpcy0+TW9kZS0+SW9BbGlnbiA+IDEpICYmICFBRERSRVNT X0lTX0FMSUdORUQgKFBhY2tldC0NCj4gPk91dERhdGFCdWZmZXIsIFRoaXMtPk1vZGUtPklvQWxp Z24pKSB7DQo+ICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gICAgfQ0KPiAN Cj4gLSAgaWYgKChUaGlzLT5Nb2RlLT5Jb0FsaWduID4gMSkgJiYgIUFERFJFU1NfSVNfQUxJR05F RF8gKFBhY2tldC0+QXNiLCBUaGlzLQ0KPiA+TW9kZS0+SW9BbGlnbikpIHsNCj4gKyAgaWYgKChU aGlzLT5Nb2RlLT5Jb0FsaWduID4gMSkgJiYgIUFERFJFU1NfSVNfQUxJR05FRCAoUGFja2V0LT5B c2IsIFRoaXMtDQo+ID5Nb2RlLT5Jb0FsaWduKSkgew0KPiAgICAgIHJldHVybiBFRklfSU5WQUxJ RF9QQVJBTUVURVI7DQo+ICAgIH0NCj4gDQo+IEBAIC0yMDM5LDE1ICsyMDM5LDE1IEBAIEV4dFNj c2lQYXNzVGhydVBhc3NUaHJ1ICgNCj4gICAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVS Ow0KPiAgICB9DQo+IA0KPiAtICBpZiAoKFRoaXMtPk1vZGUtPklvQWxpZ24gPiAxKSAmJiAhQURE UkVTU19JU19BTElHTkVEXyAoUGFja2V0LQ0KPiA+SW5EYXRhQnVmZmVyLCBUaGlzLT5Nb2RlLT5J b0FsaWduKSkgew0KPiArICBpZiAoKFRoaXMtPk1vZGUtPklvQWxpZ24gPiAxKSAmJiAhQUREUkVT U19JU19BTElHTkVEIChQYWNrZXQtDQo+ID5JbkRhdGFCdWZmZXIsIFRoaXMtPk1vZGUtPklvQWxp Z24pKSB7DQo+ICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gICAgfQ0KPiAN Cj4gLSAgaWYgKChUaGlzLT5Nb2RlLT5Jb0FsaWduID4gMSkgJiYgIUFERFJFU1NfSVNfQUxJR05F RF8gKFBhY2tldC0NCj4gPk91dERhdGFCdWZmZXIsIFRoaXMtPk1vZGUtPklvQWxpZ24pKSB7DQo+ ICsgIGlmICgoVGhpcy0+TW9kZS0+SW9BbGlnbiA+IDEpICYmICFBRERSRVNTX0lTX0FMSUdORUQg KFBhY2tldC0NCj4gPk91dERhdGFCdWZmZXIsIFRoaXMtPk1vZGUtPklvQWxpZ24pKSB7DQo+ICAg ICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gICAgfQ0KPiANCj4gLSAgaWYgKChU aGlzLT5Nb2RlLT5Jb0FsaWduID4gMSkgJiYgIUFERFJFU1NfSVNfQUxJR05FRF8gKFBhY2tldC0N Cj4gPlNlbnNlRGF0YSwgVGhpcy0+TW9kZS0+SW9BbGlnbikpIHsNCj4gKyAgaWYgKChUaGlzLT5N b2RlLT5Jb0FsaWduID4gMSkgJiYgIUFERFJFU1NfSVNfQUxJR05FRCAoUGFja2V0LT5TZW5zZURh dGEsDQo+IFRoaXMtPk1vZGUtPklvQWxpZ24pKSB7DQo+ICAgICAgcmV0dXJuIEVGSV9JTlZBTElE X1BBUkFNRVRFUjsNCj4gICAgfQ0KPiANCj4gZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9CdXMv QXRhL0F0YUJ1c0R4ZS9BdGFQYXNzVGhydUV4ZWN1dGUuYw0KPiBiL01kZU1vZHVsZVBrZy9CdXMv QXRhL0F0YUJ1c0R4ZS9BdGFQYXNzVGhydUV4ZWN1dGUuYw0KPiBpbmRleCAxOGFhNGY5YmI2NjYu LmE3Nzg1MmJhZTA1NCAxMDA2NDQNCj4gLS0tIGEvTWRlTW9kdWxlUGtnL0J1cy9BdGEvQXRhQnVz RHhlL0F0YVBhc3NUaHJ1RXhlY3V0ZS5jDQo+ICsrKyBiL01kZU1vZHVsZVBrZy9CdXMvQXRhL0F0 YUJ1c0R4ZS9BdGFQYXNzVGhydUV4ZWN1dGUuYw0KPiBAQCAtMTA0MCw3ICsxMDQwLDcgQEAgVHJ1 c3RUcmFuc2ZlckF0YURldmljZSAoDQo+ICAgICAgLy8gQ2hlY2sgdGhlIGFsaWdubWVudCBvZiB0 aGUgaW5jb21pbmcgYnVmZmVyIHByaW9yIHRvIGludm9raW5nIHVuZGVybHlpbmcNCj4gQVRBIFBh c3NUaHJ1DQo+ICAgICAgLy8NCj4gICAgICBBdGFQYXNzVGhydSA9IEF0YURldmljZS0+QXRhQnVz RHJpdmVyRGF0YS0+QXRhUGFzc1RocnU7DQo+IC0gICAgaWYgKChBdGFQYXNzVGhydS0+TW9kZS0+ SW9BbGlnbiA+IDEpICYmICFBRERSRVNTX0lTX0FMSUdORURfIChCdWZmZXIsDQo+IEF0YVBhc3NU aHJ1LT5Nb2RlLT5Jb0FsaWduKSkgew0KPiArICAgIGlmICgoQXRhUGFzc1RocnUtPk1vZGUtPklv QWxpZ24gPiAxKSAmJiAhQUREUkVTU19JU19BTElHTkVEIChCdWZmZXIsDQo+IEF0YVBhc3NUaHJ1 LT5Nb2RlLT5Jb0FsaWduKSkgew0KPiAgICAgICAgTmV3QnVmZmVyID0gQWxsb2NhdGVBbGlnbmVk QnVmZmVyIChBdGFEZXZpY2UsIFRyYW5zZmVyTGVuZ3RoKTsNCj4gICAgICAgIGlmIChOZXdCdWZm ZXIgPT0gTlVMTCkgew0KPiAgICAgICAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ IGRpZmYgLS1naXQgYS9NZGVNb2R1bGVQa2cvQnVzL1Njc2kvU2NzaURpc2tEeGUvU2NzaURpc2su Yw0KPiBiL01kZU1vZHVsZVBrZy9CdXMvU2NzaS9TY3NpRGlza0R4ZS9TY3NpRGlzay5jDQo+IGlu ZGV4IGZhZjRhZTMzMmU0Ni4uODczNTgxZDgxN2NlIDEwMDY0NA0KPiAtLS0gYS9NZGVNb2R1bGVQ a2cvQnVzL1Njc2kvU2NzaURpc2tEeGUvU2NzaURpc2suYw0KPiArKysgYi9NZGVNb2R1bGVQa2cv QnVzL1Njc2kvU2NzaURpc2tEeGUvU2NzaURpc2suYw0KPiBAQCAtMjAyOSw3ICsyMDI5LDcgQEAg U2NzaURpc2tSZWNlaXZlRGF0YSAoDQo+ICAgICAgICBnb3RvIERvbmU7DQo+ICAgICAgfQ0KPiAN Cj4gLSAgICBpZiAoKFNjc2lEaXNrRGV2aWNlLT5TY3NpSW8tPklvQWxpZ24gPiAxKSAmJiAhQURE UkVTU19JU19BTElHTkVEXw0KPiAoUGF5bG9hZEJ1ZmZlciwgU2NzaURpc2tEZXZpY2UtPlNjc2lJ by0+SW9BbGlnbikpIHsNCj4gKyAgICBpZiAoKFNjc2lEaXNrRGV2aWNlLT5TY3NpSW8tPklvQWxp Z24gPiAxKSAmJiAhQUREUkVTU19JU19BTElHTkVEDQo+IChQYXlsb2FkQnVmZmVyLCBTY3NpRGlz a0RldmljZS0+U2NzaUlvLT5Jb0FsaWduKSkgew0KPiAgICAgICAgQWxpZ25lZEJ1ZmZlciA9IEFs bG9jYXRlQWxpZ25lZEJ1ZmZlciAoU2NzaURpc2tEZXZpY2UsIFBheWxvYWRCdWZmZXJTaXplKTsN Cj4gICAgICAgIGlmIChBbGlnbmVkQnVmZmVyID09IE5VTEwpIHsNCj4gICAgICAgICAgU3RhdHVz ID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+IEBAIC0yMjQ5LDcgKzIyNDksNyBAQCBTY3NpRGlz a1NlbmREYXRhICgNCj4gICAgICAgIGdvdG8gRG9uZTsNCj4gICAgICB9DQo+IA0KPiAtICAgIGlm ICgoU2NzaURpc2tEZXZpY2UtPlNjc2lJby0+SW9BbGlnbiA+IDEpICYmICFBRERSRVNTX0lTX0FM SUdORURfDQo+IChQYXlsb2FkQnVmZmVyLCBTY3NpRGlza0RldmljZS0+U2NzaUlvLT5Jb0FsaWdu KSkgew0KPiArICAgIGlmICgoU2NzaURpc2tEZXZpY2UtPlNjc2lJby0+SW9BbGlnbiA+IDEpICYm ICFBRERSRVNTX0lTX0FMSUdORUQNCj4gKFBheWxvYWRCdWZmZXIsIFNjc2lEaXNrRGV2aWNlLT5T Y3NpSW8tPklvQWxpZ24pKSB7DQo+ICAgICAgICBBbGlnbmVkQnVmZmVyID0gQWxsb2NhdGVBbGln bmVkQnVmZmVyIChTY3NpRGlza0RldmljZSwgUGF5bG9hZEJ1ZmZlclNpemUpOw0KPiAgICAgICAg aWYgKEFsaWduZWRCdWZmZXIgPT0gTlVMTCkgew0KPiAgICAgICAgICBTdGF0dXMgPSBFRklfT1VU X09GX1JFU09VUkNFUzsNCj4gZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9CdXMvVWZzL1Vmc1Bh c3NUaHJ1RHhlL1Vmc1Bhc3NUaHJ1LmMNCj4gYi9NZGVNb2R1bGVQa2cvQnVzL1Vmcy9VZnNQYXNz VGhydUR4ZS9VZnNQYXNzVGhydS5jDQo+IGluZGV4IDM5MmEyOTVjYWYwNC4uODgwZTdkODUxMTRl IDEwMDY0NA0KPiAtLS0gYS9NZGVNb2R1bGVQa2cvQnVzL1Vmcy9VZnNQYXNzVGhydUR4ZS9VZnNQ YXNzVGhydS5jDQo+ICsrKyBiL01kZU1vZHVsZVBrZy9CdXMvVWZzL1Vmc1Bhc3NUaHJ1RHhlL1Vm c1Bhc3NUaHJ1LmMNCj4gQEAgLTE3MSwxNSArMTcxLDE1IEBAIFVmc1Bhc3NUaHJ1UGFzc1RocnUg KA0KPiAgICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICAgIH0NCj4gDQo+IC0g IGlmICgoVGhpcy0+TW9kZS0+SW9BbGlnbiA+IDEpICYmICFBRERSRVNTX0lTX0FMSUdORURfIChQ YWNrZXQtDQo+ID5JbkRhdGFCdWZmZXIsIFRoaXMtPk1vZGUtPklvQWxpZ24pKSB7DQo+ICsgIGlm ICgoVGhpcy0+TW9kZS0+SW9BbGlnbiA+IDEpICYmICFBRERSRVNTX0lTX0FMSUdORUQgKFBhY2tl dC0NCj4gPkluRGF0YUJ1ZmZlciwgVGhpcy0+TW9kZS0+SW9BbGlnbikpIHsNCj4gICAgICByZXR1 cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiAgICB9DQo+IA0KPiAtICBpZiAoKFRoaXMtPk1v ZGUtPklvQWxpZ24gPiAxKSAmJiAhQUREUkVTU19JU19BTElHTkVEXyAoUGFja2V0LQ0KPiA+T3V0 RGF0YUJ1ZmZlciwgVGhpcy0+TW9kZS0+SW9BbGlnbikpIHsNCj4gKyAgaWYgKChUaGlzLT5Nb2Rl LT5Jb0FsaWduID4gMSkgJiYgIUFERFJFU1NfSVNfQUxJR05FRCAoUGFja2V0LQ0KPiA+T3V0RGF0 YUJ1ZmZlciwgVGhpcy0+TW9kZS0+SW9BbGlnbikpIHsNCj4gICAgICByZXR1cm4gRUZJX0lOVkFM SURfUEFSQU1FVEVSOw0KPiAgICB9DQo+IA0KPiAtICBpZiAoKFRoaXMtPk1vZGUtPklvQWxpZ24g PiAxKSAmJiAhQUREUkVTU19JU19BTElHTkVEXyAoUGFja2V0LQ0KPiA+U2Vuc2VEYXRhLCBUaGlz LT5Nb2RlLT5Jb0FsaWduKSkgew0KPiArICBpZiAoKFRoaXMtPk1vZGUtPklvQWxpZ24gPiAxKSAm JiAhQUREUkVTU19JU19BTElHTkVEIChQYWNrZXQtPlNlbnNlRGF0YSwNCj4gVGhpcy0+TW9kZS0+ SW9BbGlnbikpIHsNCj4gICAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiAgICB9 DQo+IA0KPiBkaWZmIC0tZ2l0IGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9FYmNEeGUvRWJjRXhl Y3V0ZS5jDQo+IGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9FYmNEeGUvRWJjRXhlY3V0ZS5jDQo+ IGluZGV4IDI4ZjEwOGM0NDg3My4uMzIyMWY5NWE3MzlmIDEwMDY0NA0KPiAtLS0gYS9NZGVNb2R1 bGVQa2cvVW5pdmVyc2FsL0ViY0R4ZS9FYmNFeGVjdXRlLmMNCj4gKysrIGIvTWRlTW9kdWxlUGtn L1VuaXZlcnNhbC9FYmNEeGUvRWJjRXhlY3V0ZS5jDQo+IEBAIC0yMDE1LDcgKzIwMTUsNyBAQCBF eGVjdXRlSk1QICgNCj4gICAgICAvLyBjaGVjayBmb3IgYWxpZ25tZW50LCBhbmQganVtcCBhYnNv bHV0ZS4NCj4gICAgICAvLw0KPiAgICAgIERhdGE2NCA9IChVSU5UNjQpVm1SZWFkSW1tZWQ2NCAo Vm1QdHIsIDIpOw0KPiAtICAgIGlmICghQUREUkVTU19JU19BTElHTkVEXyAoKFVJTlROKURhdGE2 NCwgc2l6ZW9mIChVSU5UMTYpKSkgew0KPiArICAgIGlmICghQUREUkVTU19JU19BTElHTkVEICgo VUlOVE4pRGF0YTY0LCBzaXplb2YgKFVJTlQxNikpKSB7DQo+ICAgICAgICBFYmNEZWJ1Z1NpZ25h bEV4Y2VwdGlvbiAoDQo+ICAgICAgICAgIEVYQ0VQVF9FQkNfQUxJR05NRU5UX0NIRUNLLA0KPiAg ICAgICAgICBFWENFUFRJT05fRkxBR19GQVRBTCwNCj4gQEAgLTIwNzQsNyArMjA3NCw3IEBAIEV4 ZWN1dGVKTVAgKA0KPiAgICAgIC8vIEZvcm06IEpNUDMyIEBSeCB7SW5kZXgzMn0NCj4gICAgICAv Lw0KPiAgICAgIEFkZHIgPSBWbVJlYWRNZW1OIChWbVB0ciwgKFVJTlROKURhdGE2NCArIEluZGV4 MzIpOw0KPiAtICAgIGlmICghQUREUkVTU19JU19BTElHTkVEXyAoKFVJTlROKUFkZHIsIHNpemVv ZiAoVUlOVDE2KSkpIHsNCj4gKyAgICBpZiAoIUFERFJFU1NfSVNfQUxJR05FRCAoKFVJTlROKUFk ZHIsIHNpemVvZiAoVUlOVDE2KSkpIHsNCj4gICAgICAgIEViY0RlYnVnU2lnbmFsRXhjZXB0aW9u ICgNCj4gICAgICAgICAgRVhDRVBUX0VCQ19BTElHTk1FTlRfQ0hFQ0ssDQo+ICAgICAgICAgIEVY Q0VQVElPTl9GTEFHX0ZBVEFMLA0KPiBAQCAtMjA5Nyw3ICsyMDk3LDcgQEAgRXhlY3V0ZUpNUCAo DQo+ICAgICAgLy8gRm9ybTogSk1QMzIgUngge0ltbWVkMzJ9DQo+ICAgICAgLy8NCj4gICAgICBB ZGRyID0gKFVJTlROKShEYXRhNjQgKyBJbmRleDMyKTsNCj4gLSAgICBpZiAoIUFERFJFU1NfSVNf QUxJR05FRF8gKChVSU5UTilBZGRyLCBzaXplb2YgKFVJTlQxNikpKSB7DQo+ICsgICAgaWYgKCFB RERSRVNTX0lTX0FMSUdORUQgKChVSU5UTilBZGRyLCBzaXplb2YgKFVJTlQxNikpKSB7DQo+ICAg ICAgICBFYmNEZWJ1Z1NpZ25hbEV4Y2VwdGlvbiAoDQo+ICAgICAgICAgIEVYQ0VQVF9FQkNfQUxJ R05NRU5UX0NIRUNLLA0KPiAgICAgICAgICBFWENFUFRJT05fRkxBR19GQVRBTCwNCj4gQEAgLTMx NTgsNyArMzE1OCw3IEBAIEV4ZWN1dGVSRVQgKA0KPiAgICAgIC8vIFB1bGwgdGhlIHJldHVybiBh ZGRyZXNzIG9mZiB0aGUgVk0gYXBwJ3Mgc3RhY2sgYW5kIHNldCB0aGUgSVANCj4gICAgICAvLyB0 byBpdA0KPiAgICAgIC8vDQo+IC0gICAgaWYgKCFBRERSRVNTX0lTX0FMSUdORURfICgoVUlOVE4p Vm1QdHItPkdwclswXSwgc2l6ZW9mIChVSU5UMTYpKSkgew0KPiArICAgIGlmICghQUREUkVTU19J U19BTElHTkVEICgoVUlOVE4pVm1QdHItPkdwclswXSwgc2l6ZW9mIChVSU5UMTYpKSkgew0KPiAg ICAgICAgRWJjRGVidWdTaWduYWxFeGNlcHRpb24gKA0KPiAgICAgICAgICBFWENFUFRfRUJDX0FM SUdOTUVOVF9DSEVDSywNCj4gICAgICAgICAgRVhDRVBUSU9OX0ZMQUdfRkFUQUwsDQo+IEBAIC00 NzMzLDcgKzQ3MzMsNyBAQCBWbVdyaXRlTWVtMTYgKA0KPiAgICAvLw0KPiAgICAvLyBEbyBhIHNp bXBsZSB3cml0ZSBpZiBhbGlnbmVkDQo+ICAgIC8vDQo+IC0gIGlmIChBRERSRVNTX0lTX0FMSUdO RURfIChBZGRyLCBzaXplb2YgKFVJTlQxNikpKSB7DQo+ICsgIGlmIChBRERSRVNTX0lTX0FMSUdO RUQgKEFkZHIsIHNpemVvZiAoVUlOVDE2KSkpIHsNCj4gICAgICAqKFVJTlQxNiAqKUFkZHIgPSBE YXRhOw0KPiAgICB9IGVsc2Ugew0KPiAgICAgIC8vDQo+IEBAIC00Nzk1LDcgKzQ3OTUsNyBAQCBW bVdyaXRlTWVtMzIgKA0KPiAgICAvLw0KPiAgICAvLyBEbyBhIHNpbXBsZSB3cml0ZSBpZiBhbGln bmVkDQo+ICAgIC8vDQo+IC0gIGlmIChBRERSRVNTX0lTX0FMSUdORURfIChBZGRyLCBzaXplb2Yg KFVJTlQzMikpKSB7DQo+ICsgIGlmIChBRERSRVNTX0lTX0FMSUdORUQgKEFkZHIsIHNpemVvZiAo VUlOVDMyKSkpIHsNCj4gICAgICAqKFVJTlQzMiAqKUFkZHIgPSBEYXRhOw0KPiAgICB9IGVsc2Ug ew0KPiAgICAgIC8vDQo+IEBAIC00ODU3LDcgKzQ4NTcsNyBAQCBWbVdyaXRlTWVtNjQgKA0KPiAg ICAvLw0KPiAgICAvLyBEbyBhIHNpbXBsZSB3cml0ZSBpZiBhbGlnbmVkDQo+ICAgIC8vDQo+IC0g IGlmIChBRERSRVNTX0lTX0FMSUdORURfIChBZGRyLCBzaXplb2YgKFVJTlQ2NCkpKSB7DQo+ICsg IGlmIChBRERSRVNTX0lTX0FMSUdORUQgKEFkZHIsIHNpemVvZiAoVUlOVDY0KSkpIHsNCj4gICAg ICAqKFVJTlQ2NCAqKUFkZHIgPSBEYXRhOw0KPiAgICB9IGVsc2Ugew0KPiAgICAgIC8vDQo+IEBA IC00OTIyLDcgKzQ5MjIsNyBAQCBWbVdyaXRlTWVtTiAoDQo+ICAgIC8vDQo+ICAgIC8vIERvIGEg c2ltcGxlIHdyaXRlIGlmIGFsaWduZWQNCj4gICAgLy8NCj4gLSAgaWYgKEFERFJFU1NfSVNfQUxJ R05FRF8gKEFkZHIsIHNpemVvZiAoVUlOVE4pKSkgew0KPiArICBpZiAoQUREUkVTU19JU19BTElH TkVEIChBZGRyLCBzaXplb2YgKFVJTlROKSkpIHsNCj4gICAgICAqKFVJTlROICopQWRkciA9IERh dGE7DQo+ICAgIH0gZWxzZSB7DQo+ICAgICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgc2l6ZW9m IChVSU5UTikgLyBzaXplb2YgKFVJTlQzMik7IEluZGV4KyspIHsNCj4gQEAgLTQ5ODUsNyArNDk4 NSw3IEBAIFZtUmVhZEltbWVkMTYgKA0KPiAgICAvLw0KPiAgICAvLyBSZWFkIGRpcmVjdCBpZiBh bGlnbmVkDQo+ICAgIC8vDQo+IC0gIGlmIChBRERSRVNTX0lTX0FMSUdORURfICgoVUlOVE4pVm1Q dHItPklwICsgT2Zmc2V0LCBzaXplb2YgKElOVDE2KSkpIHsNCj4gKyAgaWYgKEFERFJFU1NfSVNf QUxJR05FRCAoKFVJTlROKVZtUHRyLT5JcCArIE9mZnNldCwgc2l6ZW9mIChJTlQxNikpKSB7DQo+ ICAgICAgcmV0dXJuICooSU5UMTYgKikoVm1QdHItPklwICsgT2Zmc2V0KTsNCj4gICAgfSBlbHNl IHsNCj4gICAgICAvLw0KPiBAQCAtNTAyOSw3ICs1MDI5LDcgQEAgVm1SZWFkSW1tZWQzMiAoDQo+ ICAgIC8vDQo+ICAgIC8vIFJlYWQgZGlyZWN0IGlmIGFsaWduZWQNCj4gICAgLy8NCj4gLSAgaWYg KEFERFJFU1NfSVNfQUxJR05FRF8gKChVSU5UTilWbVB0ci0+SXAgKyBPZmZzZXQsIHNpemVvZiAo VUlOVDMyKSkpIHsNCj4gKyAgaWYgKEFERFJFU1NfSVNfQUxJR05FRCAoKFVJTlROKVZtUHRyLT5J cCArIE9mZnNldCwgc2l6ZW9mIChVSU5UMzIpKSkgew0KPiAgICAgIHJldHVybiAqKElOVDMyICop KFZtUHRyLT5JcCArIE9mZnNldCk7DQo+ICAgIH0NCj4gDQo+IEBAIC01MDY4LDcgKzUwNjgsNyBA QCBWbVJlYWRJbW1lZDY0ICgNCj4gICAgLy8NCj4gICAgLy8gUmVhZCBkaXJlY3QgaWYgYWxpZ25l ZA0KPiAgICAvLw0KPiAtICBpZiAoQUREUkVTU19JU19BTElHTkVEXyAoKFVJTlROKVZtUHRyLT5J cCArIE9mZnNldCwgc2l6ZW9mIChVSU5UNjQpKSkgew0KPiArICBpZiAoQUREUkVTU19JU19BTElH TkVEICgoVUlOVE4pVm1QdHItPklwICsgT2Zmc2V0LCBzaXplb2YgKFVJTlQ2NCkpKSB7DQo+ICAg ICAgcmV0dXJuICooVUlOVDY0ICopKFZtUHRyLT5JcCArIE9mZnNldCk7DQo+ICAgIH0NCj4gDQo+ IEBAIC01MTA1LDcgKzUxMDUsNyBAQCBWbVJlYWRDb2RlMTYgKA0KPiAgICAvLw0KPiAgICAvLyBS ZWFkIGRpcmVjdCBpZiBhbGlnbmVkDQo+ICAgIC8vDQo+IC0gIGlmIChBRERSRVNTX0lTX0FMSUdO RURfICgoVUlOVE4pVm1QdHItPklwICsgT2Zmc2V0LCBzaXplb2YgKFVJTlQxNikpKSB7DQo+ICsg IGlmIChBRERSRVNTX0lTX0FMSUdORUQgKChVSU5UTilWbVB0ci0+SXAgKyBPZmZzZXQsIHNpemVv ZiAoVUlOVDE2KSkpIHsNCj4gICAgICByZXR1cm4gKihVSU5UMTYgKikoVm1QdHItPklwICsgT2Zm c2V0KTsNCj4gICAgfSBlbHNlIHsNCj4gICAgICAvLw0KPiBAQCAtNTE0Nyw3ICs1MTQ3LDcgQEAg Vm1SZWFkQ29kZTMyICgNCj4gICAgLy8NCj4gICAgLy8gUmVhZCBkaXJlY3QgaWYgYWxpZ25lZA0K PiAgICAvLw0KPiAtICBpZiAoQUREUkVTU19JU19BTElHTkVEXyAoKFVJTlROKVZtUHRyLT5JcCAr IE9mZnNldCwgc2l6ZW9mIChVSU5UMzIpKSkgew0KPiArICBpZiAoQUREUkVTU19JU19BTElHTkVE ICgoVUlOVE4pVm1QdHItPklwICsgT2Zmc2V0LCBzaXplb2YgKFVJTlQzMikpKSB7DQo+ICAgICAg cmV0dXJuICooVUlOVDMyICopKFZtUHRyLT5JcCArIE9mZnNldCk7DQo+ICAgIH0NCj4gDQo+IEBA IC01MTg0LDcgKzUxODQsNyBAQCBWbVJlYWRDb2RlNjQgKA0KPiAgICAvLw0KPiAgICAvLyBSZWFk IGRpcmVjdCBpZiBhbGlnbmVkDQo+ICAgIC8vDQo+IC0gIGlmIChBRERSRVNTX0lTX0FMSUdORURf ICgoVUlOVE4pVm1QdHItPklwICsgT2Zmc2V0LCBzaXplb2YgKFVJTlQ2NCkpKSB7DQo+ICsgIGlm IChBRERSRVNTX0lTX0FMSUdORUQgKChVSU5UTilWbVB0ci0+SXAgKyBPZmZzZXQsIHNpemVvZiAo VUlOVDY0KSkpIHsNCj4gICAgICByZXR1cm4gKihVSU5UNjQgKikoVm1QdHItPklwICsgT2Zmc2V0 KTsNCj4gICAgfQ0KPiANCj4gQEAgLTUyNDcsNyArNTI0Nyw3IEBAIFZtUmVhZE1lbTE2ICgNCj4g ICAgLy8NCj4gICAgLy8gUmVhZCBkaXJlY3QgaWYgYWxpZ25lZA0KPiAgICAvLw0KPiAtICBpZiAo QUREUkVTU19JU19BTElHTkVEXyAoQWRkciwgc2l6ZW9mIChVSU5UMTYpKSkgew0KPiArICBpZiAo QUREUkVTU19JU19BTElHTkVEIChBZGRyLCBzaXplb2YgKFVJTlQxNikpKSB7DQo+ICAgICAgcmV0 dXJuICooVUlOVDE2ICopQWRkcjsNCj4gICAgfQ0KPiANCj4gQEAgLTUyODEsNyArNTI4MSw3IEBA IFZtUmVhZE1lbTMyICgNCj4gICAgLy8NCj4gICAgLy8gUmVhZCBkaXJlY3QgaWYgYWxpZ25lZA0K PiAgICAvLw0KPiAtICBpZiAoQUREUkVTU19JU19BTElHTkVEXyAoQWRkciwgc2l6ZW9mIChVSU5U MzIpKSkgew0KPiArICBpZiAoQUREUkVTU19JU19BTElHTkVEIChBZGRyLCBzaXplb2YgKFVJTlQz MikpKSB7DQo+ICAgICAgcmV0dXJuICooVUlOVDMyICopQWRkcjsNCj4gICAgfQ0KPiANCj4gQEAg LTUzMTksNyArNTMxOSw3IEBAIFZtUmVhZE1lbTY0ICgNCj4gICAgLy8NCj4gICAgLy8gUmVhZCBk aXJlY3QgaWYgYWxpZ25lZA0KPiAgICAvLw0KPiAtICBpZiAoQUREUkVTU19JU19BTElHTkVEXyAo QWRkciwgc2l6ZW9mIChVSU5UNjQpKSkgew0KPiArICBpZiAoQUREUkVTU19JU19BTElHTkVEIChB ZGRyLCBzaXplb2YgKFVJTlQ2NCkpKSB7DQo+ICAgICAgcmV0dXJuICooVUlOVDY0ICopQWRkcjsN Cj4gICAgfQ0KPiANCj4gQEAgLTUzODgsNyArNTM4OCw3IEBAIFZtUmVhZE1lbU4gKA0KPiAgICAv Lw0KPiAgICAvLyBSZWFkIGRpcmVjdCBpZiBhbGlnbmVkDQo+ICAgIC8vDQo+IC0gIGlmIChBRERS RVNTX0lTX0FMSUdORURfIChBZGRyLCBzaXplb2YgKFVJTlROKSkpIHsNCj4gKyAgaWYgKEFERFJF U1NfSVNfQUxJR05FRCAoQWRkciwgc2l6ZW9mIChVSU5UTikpKSB7DQo+ICAgICAgcmV0dXJuICoo VUlOVE4gKilBZGRyOw0KPiAgICB9DQo+IA0KPiAtLQ0KPiAyLjM5LjINCg0K