From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mx.groups.io with SMTP id smtpd.web10.7658.1623121844019686131 for ; Mon, 07 Jun 2021 20:10:44 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=qi6OWWcN; spf=pass (domain: intel.com, ip: 192.55.52.120, mailfrom: ray.ni@intel.com) IronPort-SDR: j1uFmuhBiZDirBOBReTYhggTBfT+MTbBcilz3JgOLbJI3MDQphjuvahQz5gR+t9ZxdoypFFyIS +J/C0L2djCuQ== X-IronPort-AV: E=McAfee;i="6200,9189,10008"; a="202903445" X-IronPort-AV: E=Sophos;i="5.83,256,1616482800"; d="scan'208";a="202903445" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jun 2021 20:10:43 -0700 IronPort-SDR: 28r0qrx1rT7fLZXcCXPcF2MdffcoMFs0j+2ZinOi/I6irbr4EQXF0hkIhoHZuP6Rw3hk4TBMHR HoBqpms6ssmA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,256,1616482800"; d="scan'208";a="485044911" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by fmsmga002.fm.intel.com with ESMTP; 07 Jun 2021 20:10:40 -0700 Received: from fmsmsx609.amr.corp.intel.com (10.18.126.89) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Mon, 7 Jun 2021 20:10:40 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx609.amr.corp.intel.com (10.18.126.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4 via Frontend Transport; Mon, 7 Jun 2021 20:10:40 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.169) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.4; Mon, 7 Jun 2021 20:10:39 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NsWSw43b79p5maoThxAcsjzdUtB2XL+i7Oe+bRyiSN1PvnYG4QXryULrQEgOrlNh40g+CGa5qI+W9eEOPJUj3Im8GEl7EInJwYS/phLLSpdYA7R2xRYiCv3ohTTvIiBHJRtDS+Zncfq6qcxaILiBAG3gHGa/SWJ49tdr3AEPsSwO+kFu0UDc8H0KuHYV+JAePXRze2J2z9Hnh8aJE19G1Ca+2IHPLREnB0bvXTQZF/1lRYRcL8P+WF5eR2J/xQqaArOykBSm6v0dCSLDIbKoaINaEVQlADSIEYDEa9+4pCaTSUph6CxLVtSncflTYfx36BL/8enEerudVCCoU0pwwA== 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-SenderADCheck; bh=13W10YAYZ6U+MSRmdUyWLjazBKDiLsL5R9dRK2UT4Fc=; b=MJEt2bYi1ccizrUF8aqxXwvSsZIVHGZyJJmb1ZWFZxr1ry6uMsjwSZnHy5gjIDdpQI7Pqdvc7q0W1tqhg2aZra1VZMMSRqJkeqqHwgErxorPV75dgJtu7pFvWzHVdba6nnwRgTHD7GcYIeinnI9A59DriLICdyp7z1n7Ia6UMQNTxaYk27i9AyCh88XDeG5CH0N7fLxUtEqgUQvWtKUMUSGQV9muo8E7A4hNqF3GLuIb/fRnk0vTACtTmMODSZ72o7ZuRpj8MGtVA7v6UHVZpvhfC6SP7YhoAnhuWQ08Cj1+4jEgugQCzv9QTb2wOImUbVBjeAZwp3MFQSUbeGhfoA== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=13W10YAYZ6U+MSRmdUyWLjazBKDiLsL5R9dRK2UT4Fc=; b=qi6OWWcNtL0alv1P0JtD/QtrIKekdC+DNJPeW05igrR4vMWaOsUX1M+TTFYVUIHdKNoGoAVIsehcahk1eQefJmZJ8rEMbsI67GYGtQG67+TQSv8nA+IUQKbsqbAVFcdHHExyqo1wZ6ca53d9yrOmeqYU1Zf84OpdHZsSFAixhQY= Received: from CO1PR11MB4930.namprd11.prod.outlook.com (2603:10b6:303:9b::11) by MWHPR1101MB2224.namprd11.prod.outlook.com (2603:10b6:301:52::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.24; Tue, 8 Jun 2021 03:10:38 +0000 Received: from CO1PR11MB4930.namprd11.prod.outlook.com ([fe80::a439:f8ae:4699:718f]) by CO1PR11MB4930.namprd11.prod.outlook.com ([fe80::a439:f8ae:4699:718f%6]) with mapi id 15.20.4195.030; Tue, 8 Jun 2021 03:10:38 +0000 From: "Ni, Ray" To: "devel@edk2.groups.io" , "mhaeuser@posteo.de" CC: "Ma, Maurice" , "Dong, Guo" , "You, Benjamin" Subject: Re: [edk2-devel] [PATCH v2 2/3] UefiPayloadPkg: Add PayloadLoaderPeim which can load ELF payload Thread-Topic: [edk2-devel] [PATCH v2 2/3] UefiPayloadPkg: Add PayloadLoaderPeim which can load ELF payload Thread-Index: AQHXW+d9ZDq2f23CBEuC3j7NuTt8fqsJXgVQ Date: Tue, 8 Jun 2021 03:10:38 +0000 Message-ID: References: <20210603062259.1390-1-ray.ni@intel.com> <20210603062259.1390-3-ray.ni@intel.com> <812b8f13-e951-5d27-9bd1-61711e6dd840@posteo.de> In-Reply-To: <812b8f13-e951-5d27-9bd1-61711e6dd840@posteo.de> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.6.100.41 dlp-reaction: no-action dlp-product: dlpe-windows authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-originating-ip: [124.77.195.36] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 53de2377-8d27-40c1-7e5f-08d92a2afda8 x-ms-traffictypediagnostic: MWHPR1101MB2224: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: oYfWzLrlXVOzB7d0awka6OnuzEt3HJfKKxORxQURXmSm/qLlIotpSw12xGn6QfQrW88G/r2XRHE0gfIObqX5NPgdttG6Rn1LTrWfmk/uBSVTsjBkF8eWFNJvwLbFyahxQQ4PWJ7htZVqrypEedM38qm2iXNkgCKZtxyALZvNpF1VehpwLjQgMHw/SQcc2tu64mnSpIVrSvIOmKteE5EYOIFDP7Fx+L8fN1TXP3fSa20qLYTZQLHoz34Vu8140/0ORANYK8qJPKTPTRjlY71teC82rIfl0uG7APoOMYDjCy3xnHeJGx04YthfZ2IWH7hBkzQRa80KqoW7LJq7sr1FV1i6/uLOz05ye5pmV3V0BFAVSkbiX/Bus9gqEwLqE9cY8lDLau/lLlwO4S+nj/9GrSeJFxHzoGmdEqqouFQNBGZUDqGRYgYv+jMcP5qNDKioRdpLA+7PyTG2GbaWaZM5Hg0EhAv/rhrH/94/XcCpWZ9Gk0Roq8jQsrnPR8W3mL5NnaPpj+3qIv6MH9JTX9qIFjzDBgNWkKAvO0sbo3XZ+4Z9KkjL01D63FvhXWHSoFpFPAiNNw1dyuAfOw4A701ces+Yg8EqAWSJyuRC9LUCTBQ= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4930.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(346002)(39860400002)(376002)(366004)(396003)(136003)(8676002)(107886003)(8936002)(4326008)(110136005)(54906003)(316002)(6506007)(2906002)(478600001)(26005)(186003)(76116006)(64756008)(19627235002)(71200400001)(86362001)(55016002)(38100700002)(122000001)(5660300002)(9686003)(66946007)(33656002)(83380400001)(52536014)(7696005)(66556008)(66446008)(66476007);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dmhwTU1zMXFBcXRJNWFIb3dQT01VYkIvNU8vUmRVK0h0aFYySG9UZHFFK1hZ?= =?utf-8?B?TnNXQUcyWXdYZWxneGRhQWxvQ3IzRGFUQTBKV2oyNjg1eTBXYlpOUjluUnZS?= =?utf-8?B?NWpVcUFvbHNibERnb3d3cjQzNmJ4MThORXRnWHhpYVBQVDFkV3E0YzdGdWpL?= =?utf-8?B?YnFnVmhwd0dpelZ3M2FkODQyM3d4cGtpTjg5bE8xUHMxNGREM3dVMUVkTzQ5?= =?utf-8?B?cWUvK2tnN0Y5eGJnSDltRmZ2b29ROENkc0czSVJ6S28wZDZlalNDRkFITU92?= =?utf-8?B?bmVEejdTOW80L0FMcEdsQi90dGpBYk5UMHR4UFppWldrTm44cVBMU1VhWkIz?= =?utf-8?B?MmxOYi9XVGtwNXJzRkFTYUxibWwydXQwNlNod0pTQ2hqeXBhbmRWa1c3eUJT?= =?utf-8?B?WkZrSXBMNmxKNnM5UThEaXM3bmhaU2ZSS2VrYTdnMlJSbUJ5S1FnTllOL3RO?= =?utf-8?B?bW4zemVRMkNPeVhlVGhxbFlmWXR5VldSRE51b01sVEVrbHpIcG9wSXJseGlT?= =?utf-8?B?VHN4SjZuUjYySzg5M01saXFzZWM0b0NuM3Z4QURxK0ZGZllLelVnTHlBYXNa?= =?utf-8?B?NEthbXJzQ0FLYWFzYnhva0VCYjFMRkhnOGU5SS91OUw1T1F2YWw5cUhrY2Nh?= =?utf-8?B?MXhzZFdCcSswdXZHSDhqZWgwV3AwdzBPbWhlZGxlWnhZZEhxQXpFajVlL1RB?= =?utf-8?B?aXFpT0NDYzlTem56U0huNFAyYnJ4emdSejR0cXRQZjJmVCtxd0k0MFlLVG5E?= =?utf-8?B?VUl6V3FYdHNiZSt4VE5vZ2VoOFZqUC9ldkRaYnhlZkZVR2k1ak1EaDdraHAv?= =?utf-8?B?N09pQk9zVUJoaWJ4bjNqMzlaRHJENEJwdGxSWjVoT3Zkd1IzQjB1d2dWb3RO?= =?utf-8?B?ZStjaXlscjNOZ0M2em40NVFtZmtGVWFCakswb0FkNm1XdjhXVWpjdUZSZFRI?= =?utf-8?B?ZVFMQXcxNGptSzdTWHF6OVB4TjB1c0xMQ0VmVisvTnB0STdlREFRS2VsaE1B?= =?utf-8?B?Qy9wTnlqbmFCRmlGcU9idkM2MXlxZmpPbWpPOWdXY0grYmg5NVEyTU9ONHht?= =?utf-8?B?dXNFS3l0TnBoRHZkZWdXcGZuMUM3S3lwVWtJUzlvZG8vTksyK214RkZCMlNm?= =?utf-8?B?R2VhaDdrdzRVK0NMYUcvZmU0SW01VTZBVjFqNkdkRTBrYkxqeENXYXcyWVBZ?= =?utf-8?B?K01sVzZtRklPR2RHSHEwVWlnL3RlS3J0YmJXK0xDUlJyTDdyWVRPWHNVd1lO?= =?utf-8?B?NjdpM0dTSDJmcTJ5TnZjU3BjRlBDY1NxK05ja09CaHJNMWgyK0xXbDN0VzFL?= =?utf-8?B?RGp6WURUdDZBajJPb29JQ250UnN6bnNNdFB2UXh5NU9IWlpQTjNXWVlYNHVK?= =?utf-8?B?ekFQdEhNTWQvYUZvMVhsRVN4WXVRenN3WHFJdnJ1a1FMVk5MNWh3eE5pT1Mz?= =?utf-8?B?MHBlNkRFWU9EYUlrSmx1K21UYUZCSzRFd3RSL3ZLUDN1N3JyY2RxUFc5Wjc2?= =?utf-8?B?TFBVbU5UMnZMejNYVm9rVGtDOUEzaFpCY1c5TnNicU1aRHlCR3FmWERGTEtx?= =?utf-8?B?cmVHZ3FHK3pkNy9rdWllVnJkL2JLOFZKNjFvWFMyQXYwWlovclVESzJPYUZm?= =?utf-8?B?dkF6Ui9EY0o0KzZPeDBRNW1Nb0V0amNKU29nNEkyQXNlcXR6VmJWY3poeU12?= =?utf-8?B?aXZ0R0xJN2QwM0VyZUFRUUVSbE5EcWpLQjJSNG1yaVRjRDZKbG4waldSWHUz?= =?utf-8?Q?+Xv224baNBFZa532Echm34QQsqP2s2N7NJMD6GB?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4930.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 53de2377-8d27-40c1-7e5f-08d92a2afda8 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jun 2021 03:10:38.1679 (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: vBD+nFH3aXCPzw9WD9EUOk4DIkdcxOzS3YjBRw52N0onqP5cvkyk8ZET3/u4zDZGB7lNj0JtbRIo0diIBdYBjw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR1101MB2224 Return-Path: ray.ni@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TWFydmluLA0KQ29tbWVudHMgYmVsb3cuIA0KDQoNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtQcm9j ZXNzUmVsb2NhdGlvbjMyICgNCj4gPiArICBJTiAgRWxmMzJfUmVsYSAgICAgICAgICAgICpSZWxh LA0KPiA+ICsgIElOICBVSU5UMzIgICAgICAgICAgICAgICAgUmVsYVNpemUsDQo+ID4gKyAgSU4g IFVJTlQzMiAgICAgICAgICAgICAgICBSZWxhRW50cnlTaXplLA0KPiA+ICsgIElOICBVSU5UMzIg ICAgICAgICAgICAgICAgUmVsYVR5cGUsDQo+ID4gKyAgSU4gIElOVE4gICAgICAgICAgICAgICAg ICBEZWx0YSwNCj4gPiArICBJTiAgQk9PTEVBTiAgICAgICAgICAgICAgIER5bmFtaWNMaW5raW5n DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBJbmRl eDsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICpQdHI7DQo+ID4gKyAgVUlOVDMy ICAgICAgICAgICAgICAgICAgICBUeXBlOw0KPiA+ICsNCj4gPiArICBmb3IgKCBJbmRleCA9IDAN Cj4gPiArICAgICAgOyBSZWxhRW50cnlTaXplICogSW5kZXggPCBSZWxhU2l6ZQ0KPiANCj4gT3Zl cmZsb3c/DQo+IA0KDQpXaWxsIGNoYW5nZSBmcm9tOg0KICBSZWxhRW50cnlTaXplICogSW5kZXgg PCBSZWxhU2l6ZQ0KdG86DQogIEluZGV4IDwgUmVsYVNpemUgLyBSZWxhRW50cnlTaXplDQoNCg0K PiA+ICsgICAgICA7IEluZGV4KyssIFJlbGEgPSBFTEZfTkVYVF9FTlRSWSAoRWxmMzJfUmVsYSwg UmVsYSwgUmVsYUVudHJ5U2l6ZSkNCj4gPiArICAgICAgKSB7DQo+ID4gKyAgICAvLw0KPiA+ICsg ICAgLy8gcl9vZmZzZXQgaXMgdGhlIHZpcnR1YWwgYWRkcmVzcyBvZiB0aGUgc3RvcmFnZSB1bml0 IGFmZmVjdGVkIGJ5IHRoZSByZWxvY2F0aW9uLg0KPiA+ICsgICAgLy8NCj4gPiArICAgIFB0ciA9 IChVSU5UMzIgKikoVUlOVE4pKFJlbGEtPnJfb2Zmc2V0ICsgRGVsdGEpOw0KPiANCj4gQWxpZ25t ZW50Pw0KPiANCg0KSSBkb24ndCB1bmRlcnN0YW5kLiBDYW4geW91IGV4cGxhaW4gYSBiaXQgbW9y ZT8NCg0KDQo+ID4gKyAgICAgICAgaWYgKER5bmFtaWNMaW5raW5nKSB7DQo+ID4gKyAgICAgICAg ICAvLw0KPiA+ICsgICAgICAgICAgLy8gQTogUmVwcmVzZW50cyB0aGUgYWRkZW5kIHVzZWQgdG8g Y29tcHV0ZSB0aGUgdmFsdWUgb2YgdGhlIHJlbG9jYXRhYmxlIGZpZWxkLg0KPiA+ICsgICAgICAg ICAgLy8gQjogUmVwcmVzZW50cyB0aGUgYmFzZSBhZGRyZXNzIGF0IHdoaWNoIGEgc2hhcmVkIG9i amVjdCBoYXMgYmVlbiBsb2FkZWQgaW50byBtZW1vcnkgZHVyaW5nIGV4ZWN1dGlvbi4NCj4gPiAr ICAgICAgICAgIC8vICAgIEdlbmVyYWxseSwgYSBzaGFyZWQgb2JqZWN0IGlzIGJ1aWx0IHdpdGgg YSAwIGJhc2UgdmlydHVhbCBhZGRyZXNzLCBidXQgdGhlIGV4ZWN1dGlvbiBhZGRyZXNzIHdpbGwg YmUgZGlmZmVyZW50Lg0KPiA+ICsgICAgICAgICAgLy8NCj4gPiArICAgICAgICAgIC8vIEIgKEJh c2UgQWRkcmVzcykgaW4gRUxGIHNwZWMgaXMgc2xpZ2h0bHkgZGlmZmVyZW50Og0KPiA+ICsgICAg ICAgICAgLy8gICBBbiBleGVjdXRhYmxlIG9yIHNoYXJlZCBvYmplY3QgZmlsZSdzIGJhc2UgYWRk cmVzcyAob24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCB0aGUgY29uY2VwdCkgaXMgY2FsY3VsYXRl ZCBkdXJpbmcNCj4gPiArICAgICAgICAgIC8vICAgZXhlY3V0aW9uIGZyb20gdGhyZWUgdmFsdWVz OiB0aGUgdmlydHVhbCBtZW1vcnkgbG9hZCBhZGRyZXNzLCB0aGUgbWF4aW11bSBwYWdlIHNpemUs IGFuZCB0aGUgbG93ZXN0IHZpcnR1YWwNCj4gYWRkcmVzcw0KPiA+ICsgICAgICAgICAgLy8gICBv ZiBhIHByb2dyYW0ncyBsb2FkYWJsZSBzZWdtZW50LiBUbyBjb21wdXRlIHRoZSBiYXNlIGFkZHJl c3MsIG9uZSBkZXRlcm1pbmVzIHRoZSBtZW1vcnkgYWRkcmVzcyBhc3NvY2lhdGVkDQo+IHdpdGgg dGhlDQo+ID4gKyAgICAgICAgICAvLyAgIGxvd2VzdCBwX3ZhZGRyIHZhbHVlIGZvciBhIFBUX0xP QUQgc2VnbWVudC4gVGhpcyBhZGRyZXNzIGlzIHRydW5jYXRlZCB0byB0aGUgbmVhcmVzdCBtdWx0 aXBsZSBvZiB0aGUgbWF4aW11bQ0KPiBwYWdlIHNpemUuDQo+ID4gKyAgICAgICAgICAvLyAgIFRo ZSBjb3JyZXNwb25kaW5nIHBfdmFkZHIgdmFsdWUgaXRzZWxmIGlzIGFsc28gdHJ1bmNhdGVkIHRv IHRoZSBuZWFyZXN0IG11bHRpcGxlIG9mIHRoZSBtYXhpbXVtIHBhZ2Ugc2l6ZS4NCj4gPiArICAg ICAgICAgIC8vDQo+ID4gKyAgICAgICAgICAvLyAgICoqKiBUaGUgYmFzZSBhZGRyZXNzIGlzIHRo ZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHRydW5jYXRlZCBtZW1vcnkgYWRkcmVzcyBhbmQgdGhl IHRydW5jYXRlZCBwX3ZhZGRyIHZhbHVlLg0KPiAqKioNCj4gPiArICAgICAgICAgIC8vDQo+ID4g KyAgICAgICAgICAvLyBEZWx0YSBpbiB0aGlzIGZ1bmN0aW9uIGlzIEIuDQo+ID4gKyAgICAgICAg ICAvLw0KPiA+ICsgICAgICAgICAgLy8gQ2FsY3VsYXRpb246IEIgKyBBDQo+ID4gKyAgICAgICAg ICAvLw0KPiA+ICsgICAgICAgICAgaWYgKFJlbGFUeXBlID09IFNIVF9SRUxBKSB7DQo+ID4gKyAg ICAgICAgICAgIEFTU0VSVCAoKlB0ciA9PSAwKTsNCj4gPiArICAgICAgICAgICAgKlB0ciA9IChV SU5UMzIpIERlbHRhICsgUmVsYS0+cl9hZGRlbmQ7DQo+ID4gKyAgICAgICAgICB9IGVsc2Ugew0K PiA+ICsgICAgICAgICAgICAvLw0KPiA+ICsgICAgICAgICAgICAvLyBBIGlzIHN0b3JlZCBpbiB0 aGUgZmllbGQgb2YgcmVsb2NhdGlvbiBmb3IgUkVMIHR5cGUuDQo+ID4gKyAgICAgICAgICAgIC8v DQo+ID4gKyAgICAgICAgICAgICpQdHIgPSAoVUlOVDMyKSBEZWx0YSArICpQdHI7DQo+ID4gKyAg ICAgICAgICB9DQo+ID4gKyAgICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAgIC8vDQo+ID4g KyAgICAgICAgICAvLyBub24tRHluYW1pYyBzZWN0aW9uIGRvZXNuJ3QgY29udGFpbiBlbnRyaWVz IG9mIHRoaXMgdHlwZS4NCj4gPiArICAgICAgICAgIC8vDQo+ID4gKyAgICAgICAgICBERUJVRyAo KERFQlVHX0lORk8sICJVbnN1cHBvcnRlZCByZWxvY2F0aW9uIHR5cGUgJTAyWFxuIiwgVHlwZSkp Ow0KPiA+ICsgICAgICAgICAgQVNTRVJUIChGQUxTRSk7DQo+ID4gKyAgICAgICAgfQ0KPiA+ICsg ICAgICAgIGJyZWFrOw0KPiA+ICsNCj4gPiArICAgICAgZGVmYXVsdDoNCj4gPiArICAgICAgICBE RUJVRyAoKERFQlVHX0lORk8sICJVbnN1cHBvcnRlZCByZWxvY2F0aW9uIHR5cGUgJTAyWFxuIiwg VHlwZSkpOw0KPiA+ICsgICAgfQ0KPiA+ICsgIH0NCj4gDQo+IE91dCBvZiBwdXJlIGludGVyZXN0 LCBpZiBwZXJmb3JtYW5jZSBpcyBhIGNvbmNlcm4sIGhhdmUgeW91IHByb2ZpbGVkDQo+IHRoaXMg Y29kZSB2cyBvbmUgd2l0aCB0d28gbG9vcHMgYW5kICJEeW5hbWljTGlua2luZyIgcHVsbGVkIG91 dD8NCj4gDQoNCkkgZG9uJ3QgdGhpbmsgdGhlIHBlcmZvcm1hbmNlIGlzIGEgY29uY2VybiBoZXJl Lg0KDQo+ID4gKyAgLy8NCj4gPiArICAvLyBJdCdzIGFibm9ybWFsIGEgRFlOIEVMRiBkb2Vzbid0 IGNvbnRhaW4gYSBkeW5hbWljIHNlY3Rpb24uDQo+ID4gKyAgLy8NCj4gPiArICBBU1NFUlQgKER5 blNoZHIgIT0gTlVMTCk7DQo+ID4gKyAgaWYgKER5blNoZHIgPT0gTlVMTCkgew0KPiA+ICsgICAg cmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gPiArICB9DQo+ID4gKyAgQVNTRVJUIChEeW5TaGRy LT5zaF90eXBlID09IFNIVF9EWU5BTUlDKTsNCj4gPiArICBBU1NFUlQgKER5blNoZHItPnNoX2Vu dHNpemUgPj0gc2l6ZW9mICgqRHluKSk7DQo+IA0KPiBBYm5vcm1hbGl0aWVzIGluIHVua25vd24v dW50cnVzdGVkIGRhdGEgbXVzdCBiZSBmaWx0ZXJlZCB3aXRoIGEgcnVudGltZQ0KPiBjaGVjaywg bm90IHdpdGggYW4gQVNTRVJULg0KPiANCg0KU3VyZS4gSSB3aWxsIGFkZCBpZi1jaGVjayBiZWxv dyB0aGUgYXNzZXJ0aW9uIHNvIGFzc2VydGlvbi1lbmFibGVkIGJ1aWxkIGNhbg0KcmVwb3J0IHRo ZSBlcnJvcnMgZWFybGllci4NCg0KDQo+ID4gKyAgZm9yICggSW5kZXggPSAwLCBEeW4gPSAoRWxm MzJfRHluICopIChFbGZDdC0+RmlsZUJhc2UgKyBEeW5TaGRyLT5zaF9vZmZzZXQpDQo+ID4gKyAg ICAgIDsgSW5kZXggPCBEeW5TaGRyLT5zaF9zaXplIC8gRHluU2hkci0+c2hfZW50c2l6ZQ0KPiAN Cj4gSXMgInNoX2VudHNpemUiIGNoZWNrZWQgZm9yIDA/DQo+IA0KDQpObyBuZWVkLiBCZWNhdXNl IGNvZGUgYWJvdmUgbWFrZXMgc3VyZSBzaF9lbnRzaXplID49IHNpemVvZiAoKkR5bikuDQoNCg0K PiA+ICsgIEFTU0VSVCAoUmVsU2hkci0+c2hfdHlwZSA9PSBSZWxhVHlwZSk7DQo+ID4gKyAgQVNT RVJUIChSZWxTaGRyLT5zaF9lbnRzaXplID09IFJlbGFFbnRyeVNpemUpOw0KPiANCj4gU2VlIGFi b3ZlLg0KPg0KQWdyZWUuIFdpbGwgYWRkIGlmLWNoZWNrcy4NCg0KDQo+ID4gKyAgICBERUJVRyAo KERFQlVHX0lORk8sICJEWU4gRUxGOiBSZWxvY2F0ZSB1c2luZyBkeW5hbWljIHNlY3Rpb25zLi4u XG4iKSk7DQo+ID4gKyAgICBTdGF0dXMgPSBSZWxvY2F0ZUVsZjMyRHluYW1pYyAoRWxmQ3QpOw0K PiA+ICsgICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gDQo+IFdoeSBjYW5ub3QgdGhp cyBmYWlsPw0KPiANCg0KQSBEWU4gdHlwZSBFTEYgaW1hZ2Ugc2hvdWxkIGNvbnRhaW4gZHluYW1p YyBzZWN0aW9uLiBTbyBvbmx5IGFuIGFibm9ybWFsIEVMRiBpbWFnZSBjYW4gZmFpbC4NCg0KDQo+ ID4gKyAgcmV0dXJuIChFbGY2NF9QaGRyICopKEltYWdlQmFzZSArIEVoZHItPmVfcGhvZmYgKyBJ bmRleCAqIEVoZHItPmVfcGhlbnRzaXplKTsNCj4gDQo+IEFsaWdubWVudCBjaGVja3M/IEJvdW5k cyBjaGVja3M/DQo+IA0KDQpGb3IgdGhlIGFsaWdubWVudCBjaGVja3MsIGRvIHlvdSBzdWdnZXN0 IHRoYXQgSSBzaG91bGQgbWFrZSBzdXJlIHRoZSBzZWdtZW50IHNob3VsZCBiZSBwbGFjZWQNCmlu IHRoZSBhZGRyZXNzIHRoYXQgbWVldHMgdGhlIGFsaWdubWVudCByZXF1aXJlbWVudD8NCkVMRiBz cGVjIGp1c3QgcmVxdWlyZXMgYmVsb3cgZm9yIEVsZjY0X1BoZHIucF9hbGlnbjoNCiAgbG9hZGFi bGUgcHJvY2VzcyBzZWdtZW50cyBtdXN0IGhhdmUgY29uZ3J1ZW50IHZhbHVlcyBmb3IgcF92YWRk ciBhbmQgcF9vZmZzZXQsIG1vZHVsbyB0aGUgcGFnZSBzaXplLg0KDQpJIGNhbiBhZGQgc3VjaCBj aGVjayBpbiBQYXJzZUVsZkltYWdlKCkuDQoNCj4gPiArICBQcm9jZXNzUmVsb2NhdGlvbjY0ICgN Cj4gPiArICAgIChFbGY2NF9SZWxhICopIChFbGZDdC0+RmlsZUJhc2UgKyBSZWxTaGRyLT5zaF9v ZmZzZXQpLA0KPiANCj4gQWxpZ25tZW50PyA6KSBJIGtub3cgdGhlcmUgaXMgbm8gcmVhbCBjb25j ZXB0IGluIEVESyBJSSB5ZXQsIGJ1dCBpdA0KPiByZWFsbHkgaXMgbmVlZGVkLg0KPiANCg0KQ2Fu IHlvdSBleHBsYWluIGEgYml0IG1vcmUgb24gdGhlIGFsaWdubWVudD8NCg0KDQo+ID4gKw0KPiA+ ICsvKioNCj4gPiArICBDaGVjayBpZiB0aGUgRUxGIGltYWdlIGlzIHZhbGlkLg0KPiA+ICsNCj4g PiArICBAcGFyYW1baW5dICBJbWFnZUJhc2UgICAgICAgTWVtb3J5IGFkZHJlc3Mgb2YgYW4gaW1h Z2UuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgICAgIFRSVUUgaWYgdmFsaWQuDQo+ID4gKw0KPiA+ ICsqKi8NCj4gPiArQk9PTEVBTg0KPiA+ICtJc0VsZkZvcm1hdCAoDQo+ID4gKyAgSU4gIENPTlNU IFVJTlQ4ICAgICAgICAgICAgICpJbWFnZUJhc2UNCj4gDQo+IFlvdSBjYW5ub3Qgc2FmZWx5IGlu c3BlY3QgdW50cnVzdGVkL3Vua25vd24gZGF0YSB3aXRob3V0IGEgc2l6ZSBmaWVsZCwNCj4gYWxz byBuZWVkcyBjaGVja3MgYmVsb3cuDQo+IA0KDQpBZ3JlZS4gT3JpZ2luYWwgaWRlYSB3YXMgdG8g YWRkIGEgRUxGIGxvYWRlciB0aGF0IGNhbiBsb2FkIHRoZSBFTEYgYXNzdW1pbmcNCnRoZSBFTEYg aW1hZ2UgaXMgd2VsbC1mb3JtYXR0ZWQuDQoNCkJ1dCB3aXRoIHlvdXIgaGVscCwgSSBhbSBnbGFk IHRvIGVuaGFuY2UgdGhlIGxvZ2ljIGEgYml0IG1vcmUgdG8gZXhwYW5kDQp0aGUgc3VwcG9ydCBv ZiBleHRlcm5hbCBFTEYgaW1hZ2VzLg0KDQpXaWxsIGFkZCBhICJVSU5UTiBJbWFnZVNpemUiIHBh cmFtZXRlci4NCg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVsZjMyX0VoZHIgICAgICAgICAg ICAgICAgICAqRWxmMzJIZHI7DQo+ID4gKyAgRWxmNjRfRWhkciAgICAgICAgICAgICAgICAgICpF bGY2NEhkcjsNCj4gPiArDQo+ID4gKyAgQVNTRVJUIChJbWFnZUJhc2UgIT0gTlVMTCk7DQo+ID4g Kw0KPiA+ICsgIEVsZjMySGRyID0gKEVsZjMyX0VoZHIgKilJbWFnZUJhc2U7DQo+ID4gKw0KPiA+ ICsgIC8vDQo+ID4gKyAgLy8gU3RhcnQgd2l0aCBjb3JyZWN0IHNpZ25hdHVyZSAiXDdmRUxGIg0K PiA+ICsgIC8vDQo+ID4gKyAgaWYgKChFbGYzMkhkci0+ZV9pZGVudFtFSV9NQUcwXSAhPSBFTEZN QUcwKSB8fA0KPiA+ICsgICAgICAoRWxmMzJIZHItPmVfaWRlbnRbRUlfTUFHMV0gIT0gRUxGTUFH MSkgfHwNCj4gPiArICAgICAgKEVsZjMySGRyLT5lX2lkZW50W0VJX01BRzFdICE9IEVMRk1BRzEp IHx8DQo+ID4gKyAgICAgIChFbGYzMkhkci0+ZV9pZGVudFtFSV9NQUcyXSAhPSBFTEZNQUcyKQ0K PiA+ICsgICAgICkgew0KPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ICsgIH0NCj4gPiArDQo+ ID4gKyAgLy8NCj4gPiArICAvLyBTdXBwb3J0IGxpdHRsZS1lbmRpYW4gb25seQ0KPiA+ICsgIC8v DQo+ID4gKyAgaWYgKEVsZjMySGRyLT5lX2lkZW50W0VJX0RBVEFdICE9IEVMRkRBVEEyTFNCKSB7 DQo+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ ICsgIC8vIENoZWNrIDMyLzY0LWJpdCBhcmNoaXRlY3R1cmUNCj4gPiArICAvLw0KPiA+ICsgIGlm IChFbGYzMkhkci0+ZV9pZGVudFtFSV9DTEFTU10gPT0gRUxGQ0xBU1M2NCkgew0KPiA+ICsgICAg RWxmNjRIZHIgPSAoRWxmNjRfRWhkciAqKUVsZjMySGRyOw0KPiA+ICsgICAgRWxmMzJIZHIgPSBO VUxMOw0KPiA+ICsgIH0gZWxzZSBpZiAoRWxmMzJIZHItPmVfaWRlbnRbRUlfQ0xBU1NdID09IEVM RkNMQVNTMzIpIHsNCj4gPiArICAgIEVsZjY0SGRyID0gTlVMTDsNCj4gPiArICB9IGVsc2Ugew0K PiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ICsgIH0NCj4gDQo+IFdoeSBhcmUgdGhlIGJyYW5j aGVzIGFib3ZlIGFuZCBiZWxvdyBzZXBhcmF0ZWQgd2hlbiB0aGV5IG1hcCBiYXNpY2FsbHkgMTox Pw0KPiANCg0KSW5kZWVkLiBUaGFua3MgZm9yIGNhdGNoaW5nIHRoaXMuDQpXaWxsIG1lcmdlIHRo ZSBzZXBhcmF0ZSAiaWYiIHRvZ2V0aGVyLg0KDQo+ID4gKw0KPiA+ICsgIGlmIChFbGY2NEhkciAh PSBOVUxMKSB7DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gU3VwcG9ydCBpbnRlbCBhcmNoaXRl Y3R1cmUgb25seSBmb3Igbm93DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgaWYgKEVsZjY0SGRyLT5l X21hY2hpbmUgIT0gRU1fWDg2XzY0KSB7DQo+ID4gKyAgICAgIHJldHVybiBGQUxTRTsNCj4gPiAr ICAgIH0NCj4gPiArDQoNCg0KPiA+ICsgIC8vIFVzZSBsYXN0IHNlY3Rpb24gYXMgZW5kIG9mIGZp bGUNCj4gPiArICBTdGF0dXMgPSBHZXRFbGZTZWN0aW9uUG9zIChFbGZDdCwgRWxmQ3QtPlNoTnVt IC0gMSwgJk9mZnNldCwgJlNpemUpOw0KPiANCj4gV2hhdCBpZiBTaE51bSBpcyAwPw0KPiANCg0K QWdyZWUuIFRoZSBsb2dpYyB0byBjYWxjdWxhdGUgZmlsZSBzaXplIG1pZ2h0IG5vdCBiZSBuZWVk ZWQuDQpMZXQgbWUgY29uZmlybSBhbmQgdHJ5IHRvIHJlbW92ZSB0aGUgZW50aXJlIGZ1bmN0aW9u Lg0KDQoNCj4gPiArICBpZiAoRWxmQ3QtPkVpQ2xhc3MgPT0gRUxGQ0xBU1MzMikgew0KPiA+ICsg ICAgRWxmMzJIZHIgICA9IChFbGYzMl9FaGRyICopRWxmQ3QtPkZpbGVCYXNlOw0KPiA+ICsgICAg RmlsZVNpemUyID0gRWxmMzJIZHItPmVfc2hvZmYgKyBFbGYzMkhkci0+ZV9zaGVudHNpemUgKiBF bGYzMkhkci0+ZV9zaG51bTsNCj4gPiArICB9IGVsc2UgaWYgKEVsZkN0LT5FaUNsYXNzID09IEVM RkNMQVNTNjQpIHsNCj4gPiArICAgIEVsZjY0SGRyICAgPSAoRWxmNjRfRWhkciAqKUVsZkN0LT5G aWxlQmFzZTsNCj4gPiArICAgIEZpbGVTaXplMiA9IChVSU5UTikoRWxmNjRIZHItPmVfc2hvZmYg KyBFbGY2NEhkci0+ZV9zaGVudHNpemUgKiBFbGY2NEhkci0+ZV9zaG51bSk7DQo+ID4gKyAgfQ0K PiANCj4gT3ZlcmZsb3dzPw0KPiANCg0KSW50ZWdlciBvdmVyZmxvdz8NCldpbGwgYWRkIGludGVn ZXIgb3ZlcmZsb3cgY2hlY2sgaWYgdGhpcyBmaWxlIHNpemUgY2FsY3VsYXRpb24gbG9naWMgaXMg c3RpbGwgbmVlZGVkLg0KDQoNCj4gPiArDQo+ID4gKyAgaWYgKEVsZkN0ID09IE5VTEwpIHsNCj4g PiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gKyAgfQ0KPiANCj4gQXMg dGhpcyBpcyBmdW5jdGlvbiBjb250cmFjdCwgSSdkIHJlcGxhY2UgdGhpcyB3aXRoIGFuIEFTU0VS VCwgb3IgYXQNCj4gbGVhc3QgaGF2ZSBib3RoLg0KPiANCg0KSSB3aWxsIHB1dCAiQVNTRVJUIChF bGZDdCAhPSBOVUxMKSIgYWJvdmUgdGhlIGlmLg0KDQoNCj4gPiArICBaZXJvTWVtIChFbGZDdCwg c2l6ZW9mKEVMRl9JTUFHRV9DT05URVhUKSk7DQo+ID4gKw0KPiA+ICsgIGlmIChJbWFnZUJhc2Ug PT0gTlVMTCkgew0KPiA+ICsgICAgcmV0dXJuIChFbGZDdC0+UGFyc2VTdGF0dXMgPSBFRklfSU5W QUxJRF9QQVJBTUVURVIpOw0KPiANCj4gSWYgSSBzZWUgaXQgY29ycmVjdGx5LCBhbGwgaW5zdGFu Y2VzIHRoYXQgY2FuIGFzc2lnbiBQYXJzZVN0YXR1cyBhbHNvDQo+IHJldHVybiBpdC4gV2h5IGlz IHRoZSBtZW1iZXIgbmVlZGVkIGF0IGFsbD8NCj4gDQoNCkkgZXhwZWN0IHRoYXQgY2FsbGVyIG5l ZWRzIHRvIGNhbGwgUGFyc2VFbGZJbWFnZSgpIHRvIGdldCB0aGUgUGFyc2VTdGF0dXMNCnByb3Bl cmx5IGFzc2lnbmVkIGJlZm9yZSBjYWxsaW5nIExvYWRFbGZJbWFnZSgpLg0KDQpUaGUgbWVtYmVy IFBhcnNlU3RhdHVzIGlzIGNoZWNrZWQgaW4gTG9hZEVsZkltYWdlKCkgbGF0ZXIuDQpUb2RheSBp dCdzIGp1c3QgUGF5bG9hZExvYWRlclBlaW0gdGhhdCBjYWxscyB0aGUgRWxmTGliIGZ1bmN0aW9u cy4NCkJ1dCBJIGV4cGVjdCB0aGF0IHRoZSBFbGZMaWIgZnVuY3Rpb25zIGNhbiBiZSBwdWJsaWMg bGliIEFQSXMgaW4gZnV0dXJlDQppZiBuZWVkcyBhcHBlYXIuDQoNCg0KPiA+ICsgICAgICBOYW1l ID0gKENIQVI4ICopKEVsZkN0LT5GaWxlQmFzZSArIEVsZkN0LT5TaFN0ck9mZiArIEVsZjY0U2hk ci0+c2hfbmFtZSk7DQo+IA0KPiAwLXRlcm1pbmF0aW9uIGNoZWNrcywgb3IgcmV0dXJuIHNpemU/ DQo+IA0KDQpJIHdpbGwgdmFsaWRhdGUgdGhlIHN0cmluZyBzZWN0aW9uIGluIFBhcnNlRWxmSW1h Z2UoKS4gVGhlIHZhbGlkYXRpb24gbG9naWMgd2lsbDoNCjEuIFZlcmlmeSB0aGF0IGVhY2ggc2Vj dGlvbiBuYW1lIGlzIHBvaW50ZWQgZnJvbSB0aGUgZV9zaHN0cm5keA0KMi4gVmVyaWZ5IHRoYXQg c2VjdGlvbiBuYW1lIHN0cmluZ3MgZG9uJ3Qgb2NjdXB5IHNwYWNlcyBvdXRzaWRlIG9mIHRoZSBz dHJpbmcgc2VjdGlvbi4NCg0KDQo+ID4gKw0KPiA+ICsgICAgWmVyb01lbSAoJkNvbnRleHQsIHNp emVvZiAoQ29udGV4dCkpOw0KPiANCj4gVGhpcyBpcyBkb25lIGJ5IHRoZSBjYWxsZWUgYWxyZWFk eS4NCj4gDQoNCkluZGVlZC4gV2lsbCByZW1vdmUgdGhpcy4NCg0KDQo+ID4gKyAgICBTdGF0dXMg PSBQYXJzZUVsZkltYWdlIChFbGYsICZDb250ZXh0KTsNCj4gPiArICB9IHdoaWxlIChFRklfRVJS T1IgKFN0YXR1cykpOw0K