From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mx.groups.io with SMTP id smtpd.web11.27204.1679434670854844375 for ; Tue, 21 Mar 2023 14:37:51 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=GMn4kwMj; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: michael.d.kinney@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679434670; x=1710970670; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=9/u72iPdh8wysTRA/TpFgHGy+kuDeDX4hOv/HDWV/qI=; b=GMn4kwMje30NSSe5MyNYejWrZErc0y1/RrbTK284D6Hli0QsQ3SyCRuM m0jSBoSbqsklHnvpKC3lcJPLrYjwku+0edosxhnryCuPJMyI6wxkIxa+m JW/TR9TEc6dXF37aeRGJSBr3NoDqkuQQwgkLTSbM0dJpxFLbRBG9XSpmy w4oQbToTvuF4DY4SvVkHchkcZzMG/U2WYDfpf3bgDo5+SK3Ieeq0OiLRl oCDRAOkwBFVch1yR3coH9EqKbXCFEsPeZaedO+jeAQLehZK++Lne8dqyJ sfewzN/XXiveADoq7PVUoRYPDwQI+qbUk5Qz0+qWEeYMBKeatCXOha77g A==; X-IronPort-AV: E=McAfee;i="6600,9927,10656"; a="336570338" X-IronPort-AV: E=Sophos;i="5.98,279,1673942400"; d="scan'208";a="336570338" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Mar 2023 14:37:35 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10656"; a="805574363" X-IronPort-AV: E=Sophos;i="5.98,279,1673942400"; d="scan'208";a="805574363" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga004.jf.intel.com with ESMTP; 21 Mar 2023 14:37:35 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) 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.2507.21; Tue, 21 Mar 2023 14:37:34 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Tue, 21 Mar 2023 14:37:34 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.176) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.21; Tue, 21 Mar 2023 14:37:30 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mR7FyknW0zT4cGB330glnr0aE3jQxhFgXVDPUbZQbeh/VSvQSPF6rC8DKvErwFm+Xv5xfnSzENhcuDjwlYKHET/KLAIjdvgi4muI4jEJlnH6mP4eO/SJa4L/cIuEBsKgOl2AZQzFmv/Tq7buf2ZtUgy0zuATR+1lcy9NYORmY2VU2gJfYVoNs645Hh3IBlzOwooyMZ67cyUYwxfviDNM8nch07HYlsZ3yWVMLGlb30x3NQ1zz5u8b/yXgFfRjIKr2qEraNdYL1KjpzixZ91m98cjj2R1MBCXpmDR511Sq0TemxlVrktdb3RVwYQ+ZzI81pZ8zcIEmaE43eM63+VfRw== 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=9/u72iPdh8wysTRA/TpFgHGy+kuDeDX4hOv/HDWV/qI=; b=ZHZuj0siQDrDf1OMLFjEfu2CtGN76Z8hvOn1ilXS30dddjrG9jGOtCi9odhp5FN+pSCoMuthLBFU9GmPrrfxLKh7qNk2n0k6WDPVwUagvp1ZEy9+25uXtRpneszfZoXjnp25/Oz4Bj092lGI+RS3pmxkKnW3ya67OZm5AVhW0m+nBK7yXrJh8fLKJMz4IrywfJOg6BIrv7zemHBtb8WEAkV43UJ+4sEMCiTkvTAjRrPVNwLJqQeavndCP6E+9eFvNrt5NRpjmtlU2Q8/qloHjjbFIv3e0KPBNcRa22REsrnFtMzdT5V6EmvjrL4dbF62g8Lm6H2UEz3b4F9LJgSvkQ== 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 CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by DM4PR11MB6190.namprd11.prod.outlook.com (2603:10b6:8:ad::13) 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 21:37:23 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::76be:1164:2c1f:90a5]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::76be:1164:2c1f:90a5%8]) with mapi id 15.20.6178.037; Tue, 21 Mar 2023 21:37:23 +0000 From: "Michael D Kinney" To: Gerd Hoffmann , "devel@edk2.groups.io" CC: Ard Biesheuvel , "Wang, Jian J" , "Yao, Jiewen" , =?utf-8?B?TWFydmluIEjDpHVzZXI=?= , James Bottomley , Michael Roth , "Wu, Hao A" , Oliver Steffen , "Xu, Min M" , "Gao, Liming" , "Ni, Ray" , Tom Lendacky , "Aktas, Erdem" , "Liu, Zhiguang" , "Pawel Polawski" , "Justen, Jordan L" , Vitaly Cheptsov , "Kinney, Michael D" Subject: Re: [PATCH 3/5] MdePkg/Base.h: Introduce various alignment-related macros Thread-Topic: [PATCH 3/5] MdePkg/Base.h: Introduce various alignment-related macros Thread-Index: AQHZTZyfP4i7EvexAUuJWm0gj4NvqK8F11Og Date: Tue, 21 Mar 2023 21:37:23 +0000 Message-ID: References: <20230303065115.406020-1-kraxel@redhat.com> <20230303065115.406020-4-kraxel@redhat.com> In-Reply-To: <20230303065115.406020-4-kraxel@redhat.com> Accept-Language: en-US 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: CO1PR11MB4929:EE_|DM4PR11MB6190:EE_ x-ms-office365-filtering-correlation-id: ba3e807b-dc77-4ac1-1fe7-08db2a5474fa 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: 0GPRETy/yH+URimeLcPLNGjRRN1HvN60Voj8Onn0PMiFW9+s35aon1r73235VJgfFhVlSyWDw06joQZoxdqOsrlzPudzFxOokq0WYY5r1WKH0qM3m6bR7WL8xGHOzvqzDC9zktuiQuuc5g94iZdNgMEnQXF5I1l6Z+8HwAMeHf59rSbCq+Pmq56rorCvgNfnT6/iF021wY4C7el5sjIbersWLO4HzeRqBaCjcQQO6ooivWFLRTIrGbtdRCI6veLxyyRjSRIowOEyRHjQA0q31UyVLuIJNt/Q5NWCAPj/MRMmRHlbMM7YF44sm8/K51CUKATC9np89g9SLGdlRZdHYpil+qY3GyLNgmT8QEeCL1rlXaQmpeTZh88ae4PqG1KioPSikA+8nIA8n1VQuMYgfhvWG5YO0UOP54NMIEIWAoty/vqFriFtA6+NWIMPCtooXjJd5pK9ZFwUME1BhTbSaCOVkUTawEtVJ/FarED5ihufdJx0A6CMGYaejh9Tm/0Eu9ZF4nZ9ljoLPg0PvMF5YPDaVRwxnNK4oYfjfUM6pY1yk7zMCONkZOwf5LNjigTqJXHjM0aBBarv46MmC6dy7OTxuyZvxxnwuRzz4YtU4I4gm1nTUm/le4mHYtHJadcqoLUM5QANPLnT3+pvX4UXhav2Szd9pqm72VInTeNGo95rm2WEqwhqJmdNHSMcOdCED36pUPXymJLNioeasCimBA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4929.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(366004)(39860400002)(376002)(396003)(346002)(136003)(451199018)(66574015)(7696005)(53546011)(33656002)(26005)(107886003)(5660300002)(6506007)(86362001)(71200400001)(316002)(478600001)(83380400001)(9686003)(7416002)(110136005)(186003)(54906003)(66946007)(66556008)(66476007)(64756008)(8676002)(66446008)(4326008)(38070700005)(41300700001)(8936002)(76116006)(52536014)(38100700002)(82960400001)(122000001)(2906002)(55016003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VGpFdWZrQXBWR0FDcjhkYkV5SVkvb2xrdGZkS1BvUkxlV29mU2FnVGNaNzI4?= =?utf-8?B?R05waEZHQkxHc2pzMC9LanJoMk5xb1E5UHJ0V3pnSmRpTmc5SWZINkZkTEpB?= =?utf-8?B?L1BUVWlxUnQ2VkF1cWJWelRub2dWMWxybmEzaU55R1hmL2N1Y0Vqa09ZT0Vy?= =?utf-8?B?ZWl6VnRyNTA0cnNIMG9zc1JnUFp0dE1XcDVUVjZ3T0NmUXNienZCQXh3VjRI?= =?utf-8?B?emQyd01sOHQyaTVuMDNqckVZM0IyT0NJRzZ1N2R6V1hRU3RHZVdpbHBsK01E?= =?utf-8?B?eGI1T0FQZHYrMjgxQjRrbGgzVldyWmpwUFZydmRRMURRNHZIWHpvTHBYZllW?= =?utf-8?B?M1JuOGhOemFRYlBLNHIraS9YaTJsRHZVbFFyYkhHN3pxMDc2VjY4SEZjK3Vt?= =?utf-8?B?OVVyR3J2ZFY4K1k5dkpsWndySEI0YzRwTWJQTTRIZDFzd25Ma3RMdTd0Ukpx?= =?utf-8?B?b0VUd0hRblhTVWdXdEZpbVIvUFg5TWc0dTFNOExmMG5PY1RLUEVsTEdoT1BI?= =?utf-8?B?UFhVcFZPMHJibjFxVGo3Snp3aGFBYzlXeE5wdWpHSmJycE16SzNWcFlad01o?= =?utf-8?B?bStLSUhzb2hxeUJyU08rbTFQYW9IaU5NdlQ1NTVjV0o2aVRueVV3cUR4OHhE?= =?utf-8?B?YkpFVGxxZTBXYWtVTzBtakxiS2JmdFR2dWpQWmZONkxPMWE1K1VGUnVGNjBv?= =?utf-8?B?VGJjRkozUUJTeTAxMFdDN3pGZVRYVGV5U2VORm9KNUdzRkFFMHRNS0h0UDBK?= =?utf-8?B?dkZxL1g2QTNlQzRva0YwWnF2ZzRxZmhkZVVodWNlSzF2TU9PUkFCbVR4eWJm?= =?utf-8?B?dC94NkFRUDBrWWVFUi80aXlZYVYvT3NqeHJFaG1VeG4zMEMrUkw2aHRLbC9F?= =?utf-8?B?S0VwNGhkSkg2V1NiSzJXY2h0N3RzRWQ2ZG5jTVBGdFgrZ093Q3lBa0F2YUlJ?= =?utf-8?B?THNNWGZHalp6ZGpXVi9xc0Jwa0xCWnlld3d6L1VrWW9RU0ZBR2M4OUN3YUZn?= =?utf-8?B?cnhodnZLL1hSSmNuekhJc1NRREg3NHl2V24zM2dkaE9iWlgwQ2pOOUNwb25I?= =?utf-8?B?Tmc3dWdEMW5KeDlXVkl0b1FwVE4zTFM5NWJGYzlZWFl1aDZHNFdmRG1tVmZH?= =?utf-8?B?Z0M5TGVXSmZMallPNnEwMjJrVUJkZUg1QVVYbVVyRE9GeXBiWnhyNXBjYTNn?= =?utf-8?B?NjMrNWRMN28vQlQxZnJzbGN0UnZhU2JlLzlNU0tDM3ZUajRtSlBKeHd6ODBn?= =?utf-8?B?SFhhRmtxWnRqMWpDbWdTendsczdSdHlDU3NJaERIdCtrMlF0TzJMSFFPMlhG?= =?utf-8?B?Q1VkQTBWLzkxREg2WXprQVlHSEtKTGpVZ2xLUDVVMTBqRlMrYmV3cVlsUHFG?= =?utf-8?B?clptUG5lYzVablZ6ZUdUOGtUeUg2aXpWZ2tNUUpUWVBtNTRzNENTMGhFV3dL?= =?utf-8?B?eEMvQU5udWJqVFhlS0pjQUZXeXFvZEpuYldOSUhwbWIwSHBudjJUMEZCaWNt?= =?utf-8?B?djFrTFROemJCZzNEUUREdFhLSXVVZ1JucDFrWWkreWdYT1dUWWNGR1FDMnJM?= =?utf-8?B?eG5EOUgyL3hRYUIyY0RiamJCVngvVlpXYzlQZFNxdE9uTnI3ZDJhblV5Vzha?= =?utf-8?B?dkpsM1dCWi9pTk5CSGpQV1dnTVJ3NEIzUEZjSE50ZjJQZVJYazRFQlVQNnhJ?= =?utf-8?B?bHU2VkczbTI1cHZsTXErMERXVWFzcFNQRHJURjZJdkUzWkhuelRBZXpwYzNM?= =?utf-8?B?azJ6MTlud2E1NytZKzdlQndiWm83d210ZXQ1ajA2T1ZFMkJzeGNUWEFQcEtV?= =?utf-8?B?a1VYeFZkUGFVaUdpRlBsNFBnbnNJY0ZETEc5MEU4dHV3SlZxNGU1N1lsd3RM?= =?utf-8?B?VzQ0NHVsY3pjV2Q3cTNaSTZ0SVZGTWRKVzJleG1FUlZ5NkFwL3hBVXZFM1FV?= =?utf-8?B?SnJrY3V2Yms0Y0VwSDJaTDNkR3RhTzlWTWJDVG9MOEk3VHJRVEdSdVIyWXph?= =?utf-8?B?cnF5d1o4VE1pRHRjWFJXV0hMODJoQlZLMUo1SVVMUlBvYmVCZkVROUppdEw3?= =?utf-8?B?TzFTQ0VJZDNZQXVnQlFlRGZ2SEp2QnNIUFVKZDRlbkttdHNXWC9YTXZKaVlp?= =?utf-8?B?Njhuem1PWlorU3BwWk9zRXJiV1dRRGMwZ0xZdkxWU1NVWXlUNWMraEV1L2xx?= =?utf-8?B?a3c9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ba3e807b-dc77-4ac1-1fe7-08db2a5474fa X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Mar 2023 21:37:23.0757 (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: AhxbatUn43zmj+U1H1wdwyjhsf/YPXTnirBQgeaPxOaesTbsoKdPb3nVhTts+tGfclCmplRfFWVNjt2Z4TwCkRdyHjjzAkrsB8IRueHNDso= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB6190 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgR2VyZCwNCg0KQSBmZXcgY29tbWVudHMgaW5jbHVkZWQgYmVsb3cuDQoNClRoYW5rcywNCg0K TWlrZQ0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEdlcmQgSG9mZm1h bm4gPGtyYXhlbEByZWRoYXQuY29tPg0KPiBTZW50OiBUaHVyc2RheSwgTWFyY2ggMiwgMjAyMyAx MDo1MSBQTQ0KPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gQ2M6IEFyZCBCaWVzaGV1dmVs IDxhcmRiK3RpYW5vY29yZUBrZXJuZWwub3JnPjsgR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhh dC5jb20+OyBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT47IFlhbywNCj4gSmll d2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IE1hcnZpbiBIw6R1c2VyIDxtaGFldXNlckBwb3N0 ZW8uZGU+OyBKYW1lcyBCb3R0b21sZXkgPGplamJAbGludXguaWJtLmNvbT47IE1pY2hhZWwgUm90 aA0KPiA8bWljaGFlbC5yb3RoQGFtZC5jb20+OyBXdSwgSGFvIEEgPGhhby5hLnd1QGludGVsLmNv bT47IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IE9saXZl ciBTdGVmZmVuDQo+IDxvc3RlZmZlbkByZWRoYXQuY29tPjsgWHUsIE1pbiBNIDxtaW4ubS54dUBp bnRlbC5jb20+OyBHYW8sIExpbWluZyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPjsgTmksIFJh eSA8cmF5Lm5pQGludGVsLmNvbT47IFRvbQ0KPiBMZW5kYWNreSA8dGhvbWFzLmxlbmRhY2t5QGFt ZC5jb20+OyBBa3RhcywgRXJkZW0gPGVyZGVtYWt0YXNAZ29vZ2xlLmNvbT47IExpdSwgWmhpZ3Vh bmcgPHpoaWd1YW5nLmxpdUBpbnRlbC5jb20+OyBQYXdlbCBQb2xhd3NraQ0KPiA8cHBvbGF3c2tA cmVkaGF0LmNvbT47IEp1c3RlbiwgSm9yZGFuIEwgPGpvcmRhbi5sLmp1c3RlbkBpbnRlbC5jb20+ OyBWaXRhbHkgQ2hlcHRzb3YgPHZpdDk2OTZAcHJvdG9ubWFpbC5jb20+DQo+IFN1YmplY3Q6IFtQ QVRDSCAzLzVdIE1kZVBrZy9CYXNlLmg6IEludHJvZHVjZSB2YXJpb3VzIGFsaWdubWVudC1yZWxh dGVkIG1hY3Jvcw0KPiANCj4gRnJvbTogTWFydmluIEjDpHVzZXIgPG1oYWV1c2VyQHBvc3Rlby5k ZT4NCj4gDQo+IEFMSUdOT0Y6IERldGVybWluaW5nIHRoZSBhbGlnbm1lbnQgcmVxdWlyZW1lbnQg b2YgZGF0YSB0eXBlcyBpcw0KPiBjcnVjaWFsIHRvIGVuc3VyZSBzYWZlIG1lbW9yeSBhY2Nlc3Nl cyB3aGVuIHBhcnNpbmcgdW50cnVzdGVkIGRhdGEuDQo+IA0KPiBJU19QT1cyOiBEZXRlcm1pbmlu ZyB3aGV0aGVyIGEgdmFsdWUgaXMgYSBwb3dlciBvZiB0d28gaXMgaW1wb3J0YW50DQo+IHRvIHZl cmlmeSB3aGV0aGVyIHVudHJ1c3RlZCB2YWx1ZXMgYXJlIHZhbGlkIGFsaWdubWVudCB2YWx1ZXMu DQo+IA0KPiBJU19BTElHTkVEOiBJbiBjb21iaW5hdGlvbiB3aXRoIEFMSUdOT0YgZGF0YSBvZmZz ZXRzIGNhbiBiZSB2ZXJpZmllZC4NCj4gQSBtb3JlIGdlbmVyYWwgdmVyc2lvbiBvZiB0aGUgSVNf QUxJR05FRCBtYWNybyBwcmV2aW91c2x5IGRlZmluZWQgYnkgc2V2ZXJhbCBtb2R1bGVzLg0KPiAN Cj4gQUREUkVTU19JU19BTElHTkVEOiBWYXJpYW50IG9mIElTX0FMSUdORUQgZm9yIHBvaW50ZXJz IGFuZCBhZGRyZXNzZXMuDQo+IFJlcGxhY2VzIG1vZHVsZS1zcGVjaWZpYyBkZWZpbml0aW9ucyB0 aHJvdWdob3V0IHRoZSBjb2RlYmFzZS4NCj4gDQo+IEFMSUdOX1ZBTFVFX0FEREVORDogVGhlIGFk ZGVuZCB0byBhbGlnbiB1cCBjYW4gYmUgdXNlZCB0byBkaXJlY3RseQ0KPiBkZXRlcm1pbmUgdGhl IHJlcXVpcmVkIG9mZnNldCBmb3IgZGF0YSBhbGlnbm1lbnQuDQo+IA0KPiBDYzogTWljaGFlbCBE IEtpbm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+IENjOiBMaW1pbmcgR2FvIDxn YW9saW1pbmdAYnlvc29mdC5jb20uY24+DQo+IENjOiBaaGlndWFuZyBMaXUgPHpoaWd1YW5nLmxp dUBpbnRlbC5jb20+DQo+IENjOiBWaXRhbHkgQ2hlcHRzb3YgPHZpdDk2OTZAcHJvdG9ubWFpbC5j b20+DQo+IFNpZ25lZC1vZmYtYnk6IE1hcnZpbiBIw6R1c2VyIDxtaGFldXNlckBwb3N0ZW8uZGU+ DQo+IC0tLQ0KPiAgTWRlUGtnL0luY2x1ZGUvQmFzZS5oIHwgOTUgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLQ0KPiAgMSBmaWxlIGNoYW5nZWQsIDk0IGluc2VydGlv bnMoKyksIDEgZGVsZXRpb24oLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9NZGVQa2cvSW5jbHVkZS9C YXNlLmggYi9NZGVQa2cvSW5jbHVkZS9CYXNlLmgNCj4gaW5kZXggZDIwOWU2ZGUyODBhLi4yMDUz MzE0YjUwZDEgMTAwNjQ0DQo+IC0tLSBhL01kZVBrZy9JbmNsdWRlL0Jhc2UuaA0KPiArKysgYi9N ZGVQa2cvSW5jbHVkZS9CYXNlLmgNCj4gQEAgLTc1OCw2ICs3NTgsNDAgQEAgdHlwZWRlZiBVSU5U TiAqQkFTRV9MSVNUOw0KPiAgI2RlZmluZSBPRkZTRVRfT0YoVFlQRSwgRmllbGQpICAoKFVJTlRO KSAmKCgoVFlQRSAqKTApLT5GaWVsZCkpDQo+ICAjZW5kaWYNCj4gDQo+ICsvKioNCj4gKyAgUmV0 dXJucyB0aGUgYWxpZ25tZW50IHJlcXVpcmVtZW50IG9mIGEgdHlwZS4NCj4gKw0KPiArICBAcGFy YW0gICBUWVBFICBUaGUgbmFtZSBvZiB0aGUgdHlwZSB0byByZXRyaWV2ZSB0aGUgYWxpZ25tZW50 IHJlcXVpcmVtZW50IG9mLg0KPiArDQo+ICsgIEByZXR1cm4gIEFsaWdubWVudCByZXF1aXJlbWVu dCwgaW4gQnl0ZXMsIG9mIFRZUEUuDQo+ICsqKi8NCj4gKyNpZiBkZWZpbmVkIChfX2NwbHVzcGx1 cykNCj4gKy8vDQo+ICsvLyBTdGFuZGFyZCBDKysgb3BlcmF0b3IuDQo+ICsvLw0KPiArI2RlZmlu ZSBBTElHTk9GKFRZUEUpICBhbGlnbm9mIChUWVBFKQ0KPiArI2VsaWYgZGVmaW5lZCAoX19HTlVD X18pIHx8IGRlZmluZWQgKF9fY2xhbmdfXykgfHwgKGRlZmluZWQgKF9NU0NfVkVSKSAmJiBfTVND X1ZFUiA+PSAxOTAwKQ0KPiArLy8NCj4gKy8vIEFsbCBzdXBwb3J0ZWQgdmVyc2lvbnMgb2YgR0ND IGFuZCBDbGFuZywgYXMgd2VsbCBhcyBNU1ZDIDIwMTUgYW5kIGxhdGVyLA0KPiArLy8gc3VwcG9y dCB0aGUgc3RhbmRhcmQgb3BlcmF0b3IgX0FsaWdub2YuDQo+ICsvLw0KPiArI2RlZmluZSBBTElH Tk9GKFRZUEUpICBfQWxpZ25vZiAoVFlQRSkNCj4gKyNlbGlmIGRlZmluZWQgKF9NU0NfRVhURU5T SU9OUykNCj4gKy8vDQo+ICsvLyBFYXJsaWVyIHZlcnNpb25zIG9mIE1TVkMsIGF0IGxlYXN0IE1T VkMgMjAwOCBhbmQgbGF0ZXIsIHN1cHBvcnQgdGhlIHZlbmRvcg0KPiArLy8gZXh0ZW5zaW9uIF9f YWxpZ25vZi4NCj4gKy8vDQo+ICsjZGVmaW5lIEFMSUdOT0YoVFlQRSkgIF9fYWxpZ25vZiAoVFlQ RSkNCj4gKyNlbHNlDQo+ICsvLw0KPiArLy8gRm9yIGNvbXBpbGVycyB0aGF0IGRvIG5vdCBzdXBw b3J0IGluYnVpbHQgYWxpZ25vZiBvcGVyYXRvcnMsIHVzZSBPRkZTRVRfT0YuDQo+ICsvLyBDSEFS OCBpcyBrbm93biB0byBoYXZlIGJvdGggYSBzaXplIGFuZCBhbiBhbGlnbm1lbnQgcmVxdWlyZW1l bnQgb2YgMSBCeXRlLg0KPiArLy8gQXMgc3VjaCwgQSBtdXN0IGJlIGxvY2F0ZWQgZXhhY3RseSBh dCB0aGUgb2Zmc2V0IGVxdWFsIHRvIGl0cyBhbGlnbm1lbnQNCj4gKy8vIHJlcXVpcmVtZW50Lg0K PiArLy8NCj4gKyNkZWZpbmUgQUxJR05PRihUWVBFKSAgT0ZGU0VUX09GIChzdHJ1Y3QgeyBDSEFS OCBDOyBUWVBFIEE7IH0sIEEpDQo+ICsjZW5kaWYNCj4gKw0KPiAgLyoqDQo+ICAgIFBvcnRhYmxl IGRlZmluaXRpb24gZm9yIGNvbXBpbGUgdGltZSBhc3NlcnRpb25zLg0KPiAgICBFcXVpdmFsZW50 IHRvIEMxMSBzdGF0aWNfYXNzZXJ0IG1hY3JvIGZyb20gYXNzZXJ0LmguDQo+IEBAIC03OTMsNiAr ODI3LDIxIEBAIFNUQVRJQ19BU1NFUlQgKHNpemVvZiAoQ0hBUjE2KSAgPT0gMiwgInNpemVvZiAo Q0hBUjE2KSBkb2VzIG5vdCBtZWV0IFVFRkkgU3BlY2lmDQo+ICBTVEFUSUNfQVNTRVJUIChzaXpl b2YgKEwnQScpICAgID09IDIsICJzaXplb2YgKEwnQScpIGRvZXMgbm90IG1lZXQgVUVGSSBTcGVj aWZpY2F0aW9uIERhdGEgVHlwZSByZXF1aXJlbWVudHMiKTsNCj4gIFNUQVRJQ19BU1NFUlQgKHNp emVvZiAoTCJBIikgICAgPT0gNCwgInNpemVvZiAoTFwiQVwiKSBkb2VzIG5vdCBtZWV0IFVFRkkg U3BlY2lmaWNhdGlvbiBEYXRhIFR5cGUgcmVxdWlyZW1lbnRzIik7DQo+IA0KPiArU1RBVElDX0FT U0VSVCAoQUxJR05PRiAoQk9PTEVBTikgPT0gc2l6ZW9mIChCT09MRUFOKSwgIkFsaWdubWVudCBv ZiBCT09MRUFOIGRvZXMgbm90IG1lZXQgVUVGSSBTcGVjaWZpY2F0aW9uIERhdGEgVHlwZQ0KPiBy ZXF1aXJlbWVudHMiKTsNCj4gK1NUQVRJQ19BU1NFUlQgKEFMSUdOT0YgKElOVDgpICAgID09IHNp emVvZiAoSU5UOCksICJBbGlnbm1lbnQgb2YgSU5UOCBkb2VzIG5vdCBtZWV0IFVFRkkgU3BlY2lm aWNhdGlvbiBEYXRhIFR5cGUgcmVxdWlyZW1lbnRzIik7DQo+ICtTVEFUSUNfQVNTRVJUIChBTElH Tk9GIChVSU5UOCkgICA9PSBzaXplb2YgKFVJTlQ4KSwgIkFsaWdubWVudCBvZiBJTlQxNiBkb2Vz IG5vdCBtZWV0IFVFRkkgU3BlY2lmaWNhdGlvbiBEYXRhIFR5cGUNCj4gcmVxdWlyZW1lbnRzIik7 DQo+ICtTVEFUSUNfQVNTRVJUIChBTElHTk9GIChJTlQxNikgICA9PSBzaXplb2YgKElOVDE2KSwg IkFsaWdubWVudCBvZiBJTlQxNiBkb2VzIG5vdCBtZWV0IFVFRkkgU3BlY2lmaWNhdGlvbiBEYXRh IFR5cGUNCj4gcmVxdWlyZW1lbnRzIik7DQo+ICtTVEFUSUNfQVNTRVJUIChBTElHTk9GIChVSU5U MTYpICA9PSBzaXplb2YgKFVJTlQxNiksICJBbGlnbm1lbnQgb2YgVUlOVDE2IGRvZXMgbm90IG1l ZXQgVUVGSSBTcGVjaWZpY2F0aW9uIERhdGEgVHlwZQ0KPiByZXF1aXJlbWVudHMiKTsNCj4gK1NU QVRJQ19BU1NFUlQgKEFMSUdOT0YgKElOVDMyKSAgID09IHNpemVvZiAoSU5UMzIpLCAiQWxpZ25t ZW50IG9mIElOVDMyIGRvZXMgbm90IG1lZXQgVUVGSSBTcGVjaWZpY2F0aW9uIERhdGEgVHlwZQ0K PiByZXF1aXJlbWVudHMiKTsNCj4gK1NUQVRJQ19BU1NFUlQgKEFMSUdOT0YgKFVJTlQzMikgID09 IHNpemVvZiAoVUlOVDMyKSwgIkFsaWdubWVudCBvZiBVSU5UMzIgZG9lcyBub3QgbWVldCBVRUZJ IFNwZWNpZmljYXRpb24gRGF0YSBUeXBlDQo+IHJlcXVpcmVtZW50cyIpOw0KPiArU1RBVElDX0FT U0VSVCAoQUxJR05PRiAoSU5UNjQpICAgPT0gc2l6ZW9mIChJTlQ2NCksICJBbGlnbm1lbnQgb2Yg SU5UNjQgZG9lcyBub3QgbWVldCBVRUZJIFNwZWNpZmljYXRpb24gRGF0YSBUeXBlDQo+IHJlcXVp cmVtZW50cyIpOw0KPiArU1RBVElDX0FTU0VSVCAoQUxJR05PRiAoVUlOVDY0KSAgPT0gc2l6ZW9m IChVSU5UNjQpLCAiQWxpZ25tZW50IG9mIFVJTlQ2NCBkb2VzIG5vdCBtZWV0IFVFRkkgU3BlY2lm aWNhdGlvbiBEYXRhIFR5cGUNCj4gcmVxdWlyZW1lbnRzIik7DQo+ICtTVEFUSUNfQVNTRVJUIChB TElHTk9GIChDSEFSOCkgICA9PSBzaXplb2YgKENIQVI4KSwgIkFsaWdubWVudCBvZiBDSEFSOCBk b2VzIG5vdCBtZWV0IFVFRkkgU3BlY2lmaWNhdGlvbiBEYXRhIFR5cGUNCj4gcmVxdWlyZW1lbnRz Iik7DQo+ICtTVEFUSUNfQVNTRVJUIChBTElHTk9GIChDSEFSMTYpICA9PSBzaXplb2YgKENIQVIx NiksICJBbGlnbm1lbnQgb2YgQ0hBUjE2IGRvZXMgbm90IG1lZXQgVUVGSSBTcGVjaWZpY2F0aW9u IERhdGEgVHlwZQ0KPiByZXF1aXJlbWVudHMiKTsNCj4gK1NUQVRJQ19BU1NFUlQgKEFMSUdOT0Yg KElOVE4pICAgID09IHNpemVvZiAoSU5UTiksICJBbGlnbm1lbnQgb2YgSU5UTiBkb2VzIG5vdCBt ZWV0IFVFRkkgU3BlY2lmaWNhdGlvbiBEYXRhIFR5cGUgcmVxdWlyZW1lbnRzIik7DQo+ICtTVEFU SUNfQVNTRVJUIChBTElHTk9GIChVSU5UTikgICA9PSBzaXplb2YgKFVJTlROKSwgIkFsaWdubWVu dCBvZiBVSU5UTiBkb2VzIG5vdCBtZWV0IFVFRkkgU3BlY2lmaWNhdGlvbiBEYXRhIFR5cGUNCj4g cmVxdWlyZW1lbnRzIik7DQo+ICtTVEFUSUNfQVNTRVJUIChBTElHTk9GIChWT0lEICopICA9PSBz aXplb2YgKFZPSUQgKiksICJBbGlnbm1lbnQgb2YgVk9JRCAqIGRvZXMgbm90IG1lZXQgVUVGSSBT cGVjaWZpY2F0aW9uIERhdGEgVHlwZQ0KPiByZXF1aXJlbWVudHMiKTsNCj4gKw0KPiAgLy8NCj4g IC8vIFRoZSBmb2xsb3dpbmcgdGhyZWUgZW51bSB0eXBlcyBhcmUgdXNlZCB0byB2ZXJpZnkgdGhh dCB0aGUgY29tcGlsZXINCj4gIC8vIGNvbmZpZ3VyYXRpb24gZm9yIGVudW0gdHlwZXMgaXMgY29t cGxpYW50IHdpdGggU2VjdGlvbiAyLjMuMSBvZiB0aGUNCj4gQEAgLTgxNiw2ICs4NjUsMTAgQEAg U1RBVElDX0FTU0VSVCAoc2l6ZW9mIChfX1ZFUklGWV9VSU5UOF9FTlVNX1NJWkUpID09IDQsICJT aXplIG9mIGVudW0gZG9lcyBub3QgbWUNCj4gIFNUQVRJQ19BU1NFUlQgKHNpemVvZiAoX19WRVJJ RllfVUlOVDE2X0VOVU1fU0laRSkgPT0gNCwgIlNpemUgb2YgZW51bSBkb2VzIG5vdCBtZWV0IFVF RkkgU3BlY2lmaWNhdGlvbiBEYXRhIFR5cGUgcmVxdWlyZW1lbnRzIik7DQo+ICBTVEFUSUNfQVNT RVJUIChzaXplb2YgKF9fVkVSSUZZX1VJTlQzMl9FTlVNX1NJWkUpID09IDQsICJTaXplIG9mIGVu dW0gZG9lcyBub3QgbWVldCBVRUZJIFNwZWNpZmljYXRpb24gRGF0YSBUeXBlIHJlcXVpcmVtZW50 cyIpOw0KPiANCj4gK1NUQVRJQ19BU1NFUlQgKEFMSUdOT0YgKF9fVkVSSUZZX1VJTlQ4X0VOVU1f U0laRSkgID09IHNpemVvZiAoX19WRVJJRllfVUlOVDhfRU5VTV9TSVpFKSwgIkFsaWdubWVudCBv ZiBlbnVtIGRvZXMgbm90IG1lZXQgVUVGSQ0KPiBTcGVjaWZpY2F0aW9uIERhdGEgVHlwZSByZXF1 aXJlbWVudHMiKTsNCj4gK1NUQVRJQ19BU1NFUlQgKEFMSUdOT0YgKF9fVkVSSUZZX1VJTlQxNl9F TlVNX1NJWkUpID09IHNpemVvZiAoX19WRVJJRllfVUlOVDE2X0VOVU1fU0laRSksICJBbGlnbm1l bnQgb2YgZW51bSBkb2VzIG5vdCBtZWV0IFVFRkkNCj4gU3BlY2lmaWNhdGlvbiBEYXRhIFR5cGUg cmVxdWlyZW1lbnRzIik7DQo+ICtTVEFUSUNfQVNTRVJUIChBTElHTk9GIChfX1ZFUklGWV9VSU5U MzJfRU5VTV9TSVpFKSA9PSBzaXplb2YgKF9fVkVSSUZZX1VJTlQzMl9FTlVNX1NJWkUpLCAiQWxp Z25tZW50IG9mIGVudW0gZG9lcyBub3QgbWVldCBVRUZJDQo+IFNwZWNpZmljYXRpb24gRGF0YSBU eXBlIHJlcXVpcmVtZW50cyIpOw0KDQpUaGlzIHdpbGwgbmVlZCB0byBiZSBtZXJnZWQgd2l0aCBs YXRlc3QgZWRrMiBiZWNhdXNlIG9mIGNoYW5nZSBmcm9tIFVJTlQzMiB0byBJTlQzMiBmb3IgdGhl IDMyLWJpdCBzaXplIGNoZWNrcw0KDQo+ICsNCj4gIC8qKg0KPiAgICBNYWNybyB0aGF0IHJldHVy bnMgYSBwb2ludGVyIHRvIHRoZSBkYXRhIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zIGEgc3BlY2lm aWVkIGZpZWxkIG9mDQo+ICAgIHRoYXQgZGF0YSBzdHJ1Y3R1cmUuICBUaGlzIGlzIGEgbGlnaHR3 ZWlnaHQgbWV0aG9kIHRvIGhpZGUgaW5mb3JtYXRpb24gYnkgcGxhY2luZyBhDQo+IEBAIC04Mzcs NiArODkwLDQ2IEBAIFNUQVRJQ19BU1NFUlQgKHNpemVvZiAoX19WRVJJRllfVUlOVDMyX0VOVU1f U0laRSkgPT0gNCwgIlNpemUgb2YgZW51bSBkb2VzIG5vdCBtDQo+ICAqKi8NCj4gICNkZWZpbmUg QkFTRV9DUihSZWNvcmQsIFRZUEUsIEZpZWxkKSAgKChUWVBFICopICgoQ0hBUjggKikgKFJlY29y ZCkgLSBPRkZTRVRfT0YgKFRZUEUsIEZpZWxkKSkpDQo+IA0KPiArLyoqDQo+ICsgIENoZWNrcyB3 aGV0aGVyIGEgdmFsdWUgaXMgYSBwb3dlciBvZiB0d28uDQo+ICsNCj4gKyAgQHBhcmFtICAgVmFs dWUgIFRoZSB2YWx1ZSB0byBjaGVjay4NCj4gKw0KPiArICBAcmV0dXJuICBXaGV0aGVyIFZhbHVl IGlzIGEgcG93ZXIgb2YgdHdvLg0KDQpDaGFuZ2UgdG8gQHJldHZhbCBUUlVFIGFuZCBAcmV0dmFs IEZBTFNFIGRlc2NyaXB0aW9ucw0KDQoNCg0KPiArKiovDQo+ICsjZGVmaW5lIElTX1BPVzIoVmFs dWUpICAoKFZhbHVlKSAhPSAwVSAmJiAoKFZhbHVlKSAmICgoVmFsdWUpIC0gMVUpKSA9PSAwVSkN Cj4gKw0KPiArLyoqDQo+ICsgIENoZWNrcyB3aGV0aGVyIGEgdmFsdWUgaXMgYWxpZ25lZCBieSBh IHNwZWNpZmllZCBhbGlnbm1lbnQuDQo+ICsNCj4gKyAgQHBhcmFtICAgVmFsdWUgICAgICBUaGUg dmFsdWUgdG8gY2hlY2suDQo+ICsgIEBwYXJhbSAgIEFsaWdubWVudCAgVGhlIGFsaWdubWVudCBi b3VuZGFyeSB1c2VkIHRvIGNoZWNrIGFnYWluc3QuDQo+ICsNCj4gKyAgQHJldHVybiAgV2hldGhl ciBWYWx1ZSBpcyBhbGlnbmVkIGJ5IEFsaWdubWVudC4NCg0KQ2hhbmdlIHRvIEByZXR2YWwgVFJV RSBhbmQgQHJldHZhbCBGQUxTRSBkZXNjcmlwdGlvbnMNCg0KPiArKiovDQo+ICsjZGVmaW5lIElT X0FMSUdORUQoVmFsdWUsIEFsaWdubWVudCkgICgoKFZhbHVlKSAmICgoQWxpZ25tZW50KSAtIDFV KSkgPT0gMFUpDQo+ICsNCj4gKy8qKg0KPiArICBDaGVja3Mgd2hldGhlciBhIHBvaW50ZXIgb3Ig YWRkcmVzcyBpcyBhbGlnbmVkIGJ5IGEgc3BlY2lmaWVkIGFsaWdubWVudC4NCj4gKw0KPiArICBA cGFyYW0gICBBZGRyZXNzICAgIFRoZSBwb2ludGVyIG9yIGFkZHJlc3MgdG8gY2hlY2suDQo+ICsg IEBwYXJhbSAgIEFsaWdubWVudCAgVGhlIGFsaWdubWVudCBib3VuZGFyeSB1c2VkIHRvIGNoZWNr IGFnYWluc3QuDQo+ICsNCj4gKyAgQHJldHVybiAgV2hldGhlciBBZGRyZXNzIGlzIGFsaWduZWQg YnkgQWxpZ25tZW50Lg0KDQoNCkNoYW5nZSB0byBAcmV0dmFsIFRSVUUgYW5kIEByZXR2YWwgRkFM U0UgZGVzY3JpcHRpb25zDQoNCj4gKyoqLw0KPiArI2RlZmluZSBBRERSRVNTX0lTX0FMSUdORUQo QWRkcmVzcywgQWxpZ25tZW50KSAgSVNfQUxJR05FRCAoKFVJTlROKSAoQWRkcmVzcyksIEFsaWdu bWVudCkNCj4gKw0KPiArLyoqDQo+ICsgIERldGVybWluZXMgdGhlIGFkZGVuZCB0byBhZGQgdG8g YSB2YWx1ZSB0byByb3VuZCBpdCB1cCB0byB0aGUgbmV4dCBib3VuZGFyeSBvZg0KPiArICBhIHNw ZWNpZmllZCBhbGlnbm1lbnQuDQoNCkRldGVybWluZXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGJ5 dGVzIHRvIGFkZCB0byBhIHZhbHVlIHRvIHJvdW5kIGl0IHVwIHRvIHRoZSBuZXh0IGJvdW5kYXJ5 IG9mIGEgc3BlY2lmaWVkIGFsaWdubWVudC4NCg0KPiArDQo+ICsgIEBwYXJhbSAgIFZhbHVlICAg ICAgVGhlIHZhbHVlIHRvIHJvdW5kIHVwLg0KPiArICBAcGFyYW0gICBBbGlnbm1lbnQgIFRoZSBh bGlnbm1lbnQgYm91bmRhcnkgdXNlZCB0byByZXR1cm4gdGhlIGFkZGVuZC4NCj4gKw0KPiArICBA cmV0dXJuICBBZGRlbmQgdG8gcm91bmQgVmFsdWUgdXAgdG8gYWxpZ25tZW50IGJvdW5kYXJ5IEFs aWdubWVudC4NCg0KTWluaW11bSBudW1iZXIgb2YgYnl0ZXMgdG8gYWRkIHRvIFZhbHVlIHRvIHJl YWNoIHRoZSBuZXh0IGFsaWdubWVudCBib3VuZGFyeSBzcGVjaWZpZWQgYnkgQWxpZ25tZW50Lg0K DQo+ICsqKi8NCj4gKyNkZWZpbmUgQUxJR05fVkFMVUVfQURERU5EKFZhbHVlLCBBbGlnbm1lbnQp ICAoKChBbGlnbm1lbnQpIC0gKFZhbHVlKSkgJiAoKEFsaWdubWVudCkgLSAxVSkpDQo+ICsNCj4g IC8qKg0KPiAgICBSb3VuZHMgYSB2YWx1ZSB1cCB0byB0aGUgbmV4dCBib3VuZGFyeSB1c2luZyBh IHNwZWNpZmllZCBhbGlnbm1lbnQuDQo+IA0KPiBAQCAtODQ5LDcgKzk0Miw3IEBAIFNUQVRJQ19B U1NFUlQgKHNpemVvZiAoX19WRVJJRllfVUlOVDMyX0VOVU1fU0laRSkgPT0gNCwgIlNpemUgb2Yg ZW51bSBkb2VzIG5vdCBtDQo+ICAgIEByZXR1cm4gIEEgdmFsdWUgdXAgdG8gdGhlIG5leHQgYm91 bmRhcnkuDQo+IA0KPiAgKiovDQo+IC0jZGVmaW5lIEFMSUdOX1ZBTFVFKFZhbHVlLCBBbGlnbm1l bnQpICAoKFZhbHVlKSArICgoKEFsaWdubWVudCkgLSAoVmFsdWUpKSAmICgoQWxpZ25tZW50KSAt IDEpKSkNCj4gKyNkZWZpbmUgQUxJR05fVkFMVUUoVmFsdWUsIEFsaWdubWVudCkgICgoVmFsdWUp ICsgQUxJR05fVkFMVUVfQURERU5EIChWYWx1ZSwgQWxpZ25tZW50KSkNCj4gDQo+ICAvKioNCj4g ICAgQWRqdXN0IGEgcG9pbnRlciBieSBhZGRpbmcgdGhlIG1pbmltdW0gb2Zmc2V0IHJlcXVpcmVk IGZvciBpdCB0byBiZSBhbGlnbmVkIG9uDQo+IC0tDQo+IDIuMzkuMg0KDQo=