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.web12.6383.1635519338558799828 for ; Fri, 29 Oct 2021 07:55:39 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=NOFbbsSq; spf=pass (domain: intel.com, ip: 134.134.136.65, mailfrom: bob.c.feng@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10151"; a="230631227" X-IronPort-AV: E=Sophos;i="5.87,193,1631602800"; d="scan'208";a="230631227" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Oct 2021 07:55:37 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,193,1631602800"; d="scan'208";a="574707305" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by FMSMGA003.fm.intel.com with ESMTP; 29 Oct 2021 07:55:34 -0700 Received: from orsmsx606.amr.corp.intel.com (10.22.229.19) 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.2242.12; Fri, 29 Oct 2021 07:55:33 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Fri, 29 Oct 2021 07:55:33 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.46) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Fri, 29 Oct 2021 07:55:32 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Bs4YTA36LvZaVLFFYb5dHOwAW94rIURIEE+AgzF/LHc2mrLNbJE13zsNOcec6dkhoLCXXeF6ma3DEYMO8X/uq5fg+IJ5PjYt/rLAqAuRWn3tSNHNJAk2+mIi/LTo6kJZuWDRvTYYfunZqDexRWU1dAtKSQH1skFYoBp8mNkY5X+zMDSawtFEgnfYPqZJFTnIE6KKg5A97MJE47LBlqPjUpSiuWhMmZxQ/0EmL3wkGLKhT0mC3TcZI/IJr2Oy+p3yU9G9epV/UdAmYkC5ilQyYGLRS/AAkXWqOv0G/tuK5QE14peDPJ9ZPwftUZAQ7iu5Xi2FOpeCVQAJEmUBwye3pg== 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=X25usJltPVLUDLRwHcwXdUeoQl3VhwpBx/O0f3T9Zno=; b=NbJiUhyIbBuzTCK7rCxASeB1Z2TIxxwNZgb1qM4k7lTqUo7WhMKJg5+q3E7NO/EUH5S7f8TdUOz4iB2isxBXvOrRX0Xf9lnUc4/F84wSCo2m34fb6sNwCWpTvJRxCnEyWbl/m/AZ9nnnF8QudMzwZKWyxLKAstM2rUwI2S1ls8NIuJLvKf59/VNZSvALe80qpgzoWa9g4XcV5Crb0BObZ8NXyCf8QBEHSr0T2SHvMz8DNWvm8ade600LmKuVX30xGT5gkJcEapc41SXvBF+4Rxpz40/7RTjIpQsCf79bFEph8grbHMFgGvyGSnKn8+hjwXZ/nD1wcc6UeSa3208PsQ== 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=X25usJltPVLUDLRwHcwXdUeoQl3VhwpBx/O0f3T9Zno=; b=NOFbbsSqcrxKEBq1XZUii5rJQaOtsOJGBtVZaAWga8XAls46jh9G8rJfvnwb287KAzkI8pQfINPpE1Xgl0PuTOvorqopVxO7y06Q046bBaKiOg75rsTqYXAzcSupj5dhBYrZAfOm3R6k14fTDEFS6bRs69pLS76NVfuC/G5t6Wg= Received: from DM6PR11MB4073.namprd11.prod.outlook.com (2603:10b6:5:19f::22) by DM6PR11MB3146.namprd11.prod.outlook.com (2603:10b6:5:67::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4628.20; Fri, 29 Oct 2021 14:55:30 +0000 Received: from DM6PR11MB4073.namprd11.prod.outlook.com ([fe80::85d4:9d42:234a:6b4b]) by DM6PR11MB4073.namprd11.prod.outlook.com ([fe80::85d4:9d42:234a:6b4b%6]) with mapi id 15.20.4628.020; Fri, 29 Oct 2021 14:55:30 +0000 From: "Bob Feng" To: "rfc@edk2.groups.io" , "mhaeuser@posteo.de" , "devel@edk2.groups.io" , "gaoliming@byosoft.com.cn" , "Chen, Christine" CC: "Kinney, Michael D" Subject: Re: [edk2-rfc] [edk2-devel] RFC: Replace FMMT Tool from C to Python Version Thread-Topic: [edk2-rfc] [edk2-devel] RFC: Replace FMMT Tool from C to Python Version Thread-Index: AdfMW7Xj4XLRJiqJQ72Vv/OofEDxaAADzbIAABGC/EAABe3cgAACI/cw Date: Fri, 29 Oct 2021 14:55:30 +0000 Message-ID: References: <00b601d7cc6a$ed2dcb40$c78961c0$@byosoft.com.cn> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.6.200.16 dlp-product: dlpe-windows dlp-reaction: no-action 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-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a91a8f97-477e-40ad-8a4d-08d99aec26e4 x-ms-traffictypediagnostic: DM6PR11MB3146: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: sfrQz3cG8s3POyuYkq5qt3q0dnCT9SleVhEZz8KGkqNh4uY2sMm+9PV/3EvXbGl6zwxmuBhkKk3VZlnK0D3orsOf1Zofz6KD6uViSoEyNTadZSAJGI9FjWRid9sBTdDR8v25X9yneJsykVnwwjVNHUrlv3ysE1n3/bPCFv04kZWceA3NOI8lJcHvRo1ARNz3D5JUKkytxOb9UIBvoO1+2zkU5Uja6yZCupZyGvqTkbipjxlhtYD9C+gMC3yCd5n1hMjhD7pGBALmgEtOFf2+G5W14w2Qd3+Khnx/EzP+qhMzLE8NGlr46LocRMegsyD+We6yvTmFmLH/tdSb3priubYFAHupn0Bi+0No8SKLIadLayENjppeeEgyg0sVKRAbwJDzORwa3MeDoVhuptE++SAoL1oxvEteFhmTnHJ0i6XyJmUMBUZg0+0/FiDRSKLQdmpP8ILXD+b60Yjp+xLaGGXLS0RyxozmfPp1TcKbmCk43YL16H4OjsrbYgXal3RBM+qL9j5Sqvri44HPgnrUvYGKkq36nAyOg5eT8DFwv3j7Ljr5nDAGIhGfqcjtcREQM1XJPqZxJn9IWlM3tsjzZEzFlajnXRTbCOmT/ZYLcrr/fNbdCGuAb0hrUuUelJlijkkYiHdHdaUw+ec5I21YD/ANieGN/1JUWUaBpNmb9VBgx5M5ShDjARHoAmTz/L8H5H7lKz2opYuco5FQaXjqtrcUgaWkgj/Vj4yGFFROFI+EAoH/3CSed0T34K1wFXQe2XgFxuAeWpaI/eon+nQsaTyryUhWsQcshCtIA5XMOtBgI6GZCaqEbn1oG799eQe78HjWbUxVvBell3GpZghT9Q== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR11MB4073.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(5660300002)(316002)(107886003)(86362001)(71200400001)(52536014)(110136005)(76116006)(66946007)(122000001)(33656002)(6636002)(38070700005)(82960400001)(186003)(8676002)(9686003)(26005)(508600001)(38100700002)(83380400001)(966005)(2906002)(6506007)(4326008)(7696005)(66476007)(64756008)(66574015)(53546011)(55016002)(8936002)(66446008)(66556008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?eUtOU1o0eEt6eVl0OTRzT2hzMmQwU00zYm1lYWZ5MUFyR3YrN1ZMbWdVZllm?= =?utf-8?B?eWlaMFh3dXdmbHF3R3ArbXBVb1FtQzM3UUdObFU3MUNsK1E4ZDlJTGZYZnQr?= =?utf-8?B?aEpHTXJyeWROZXhVbXc3WGNPOG54aWd6d3RPbUZiOVRZM2xUSFNlSXU4NmVL?= =?utf-8?B?UklrSzJLUStoVTRTMXhYSEphUWhJYnNBWE8vK1FLSU1Bd0hjbGdBdHBuN25L?= =?utf-8?B?c1ZxT1FRTnh1YkpaMHFCam0zMTBOZGhmbVNTVWZRcmxGQ2RDUkxJTEUzQmxu?= =?utf-8?B?VkJ0SUpaMXJoaTgrdk1DSVpnbGRxVXQ2TFBQVFFDckFJNjUxTWlxbERaM0Fh?= =?utf-8?B?aWVNb1NDUzIzVmhkYTA5QnppVWFiSmxXbUFyWUphVGd1aXMrYXlPSkdIdkE5?= =?utf-8?B?V1FLWS9Qa3B4aGVrQUpqd2pTaEJva3Yrb3N3aVBWYlR3ZlNZSWNRL1hvUDRY?= =?utf-8?B?TDVzaWhET2ZzUE9LYUUxZVRCVGphUG9Bd2NEMldzdUQ4emMzYjZCUzVnUmZu?= =?utf-8?B?VHFEZENYWWpJekxyclJPQWF0M0JCbSswaURvN2RlOHQ2QmhZMEszdVVSa3RH?= =?utf-8?B?UlJCUkY2Sk5ZZ1FyclRYKzZHamlMdXdwTWJQVTNvbW91M0lpclp6MXY4YlhR?= =?utf-8?B?WjMxVXdiUThsMlNRYkFTeFBBeFhXSkF6L0diOXNvaFZUMXRXUVpFY1BPblpm?= =?utf-8?B?U3REM2xBb1h2bkRvM2hkL2FBejVSQ2w2clFjVUdUUWNmMDA2L3d2TUFvVms1?= =?utf-8?B?U3RaVFJ5eHJjM3IwRDBhbDlJbHdXazhDbnNXOWgyUUFQYnR2NithK2MzV3kz?= =?utf-8?B?NXQrVWZhait0c0wzZkcrdytMOWF1VmJncUs2TWxlcXloM3dqTmY4REkzbjIw?= =?utf-8?B?Z1puWXhoRjBHcEIzZE9wYS83MXhBSE42RTRDV0hBMCs5RGhlR2Y0RnJRT3Ey?= =?utf-8?B?N0RjL080b1hucTRISC9QZGpOZDI1bURMVDhwSlU4K2FzcWFPb05udUV3cVd5?= =?utf-8?B?M0I4ajZ6bWlrTTZMSlVVV1RHOE9wR1FKZHZHS0tJeHZ2Qkc1dlJLaDlCK01D?= =?utf-8?B?T2RqOUJ4dFFJWFh3WmxreC9SUlBaU0xxc25CbHpZZjNaSE9JYlFJL0F0RThS?= =?utf-8?B?RzVHeFMwRjdVSnhuZnVGNHprbzJ4UE1mdmNCL0dKWVMwaFN4L1ZSV1ZNZXI1?= =?utf-8?B?S3RNNWVtOXFXWmNCNE5BamxkeWsrUUpTYituUVNKZ0dUUXpoL2FNZUZRTFc4?= =?utf-8?B?aGU1NmwzdWVXM0pSd0lPWml4K2N5M2pMTzlzK3JOZUtYS1liQ0hvZFZuUFlK?= =?utf-8?B?ZlVydlVhODVoM1ZJdHdEYlJsd3ppRkNDcExvOC9LYlBNbkRpUjF4cVlPLytn?= =?utf-8?B?L1BEdUhRYkI2SUkycXIzdkY3d1VXMEhqMVhHcERJbzdEK09WNHRPdko4NkFR?= =?utf-8?B?YnJ1V0h3VHNiNG5mRTFKcDJDR2xpRGZ2SjdTUDZIYVArM2NMNTR2eXpVeS9Q?= =?utf-8?B?RUZEYlR0VUNEWVlOTUhoY2dSVCtpNmZkOUo5OHl3UFFtQTdhRStrdEx3Yy9L?= =?utf-8?B?KzRvUTl1Uzg1MGRVSjF4Z05Zd0RUY0JVUUpweU1HdnBOMC8yNXF6d3Vyd29m?= =?utf-8?B?WVQrM09LNElIcHlOZW16eUVsNmJjRThFWExUK0ljL05sTXpWZGVKNE80TERk?= =?utf-8?B?YXErc3VHMlJodUM5eE15eTVqa0hJaG1RbGM5enNHdFk3Tm1MVy91VTQrYk5S?= =?utf-8?B?Um8rcUN2c29HbUg5eXJiZnNsbmZrMzdPTldTVnNRYmNDb21PWU93WXpXck5S?= =?utf-8?B?cE42Smh3bXlra1pKeDJZQzU4bC8xQlFZSktmUkNHUlY3UTA4UnA1bmVlMm1m?= =?utf-8?B?OU4wYXh6VW9mK1QrRE9LSTlMYnViTE1YQ1hYdmMyQXFMUmhFdE1YZCtnQWpN?= =?utf-8?B?UUk5VjdrQlZnRUF2ZHJKUDN6ZUdYM2NzbjZ1UFhsNHNua0owd0hnLzBqeFdH?= =?utf-8?B?TE5yVGJGbHY1VWZmYU9YTHVpQmpTdkxLeTFteDR3bFJEeUQrL2VSSzdicFhz?= =?utf-8?B?VTFwMFloZ1lUYXJKUXJGWGx0am1BZnFhMERCVzE5QnNMN1FVNG5waHd6OWMy?= =?utf-8?B?M1IvWjBkQ0krc3Y5bFo2M0FuLzdZYUZPaHYrTHJ3bW9iK0hjc3IvTllSU0J2?= =?utf-8?Q?pbgc2Kaasm9SGv0CrYsIe3E=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB4073.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a91a8f97-477e-40ad-8a4d-08d99aec26e4 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Oct 2021 14:55:30.4047 (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: 2yvwmayxjvhegH8lHk/XzBGgyeGBVHsmn3lzIanxIakRN5DZLJpEkJCVmLbqVGaSMmhwwEyYZGF1kRPDyXShVw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB3146 Return-Path: bob.c.feng@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TWFydmluLA0KDQpUaGUgUHlHZW4qKiogdG9vbHMgSSBtZW50aW9uZWQgYmVsb3cgYXJlIG5vdCBp bXBsZW1lbnRlZCB5ZXQuIEJ1dCB3ZSB3YW50IHRvIGNvbnZlcnQgdGhlIEJhc2VUb29scyBDIHRv b2xzIHRvIHB5dGhvbiB0b29scyBzbyB3ZSBjYW4gbW92ZSBhbGwgYmFzZXRvb2xzIGZyb20gZWRr MiByZXBvIHRvIGVkazItYmFzZXRvb2xzIHJlcG8uIA0KDQpGb3IgdGhlIGVkazItYmFzZXRvb2xz IHJlcG8sIHBsZWFzZSByZWZlciB0byB0aGUgZGlzY3Vzc2lvbiBodHRwczovL2VkazIuZ3JvdXBz LmlvL2cvZGV2ZWwvdG9waWMvNzMwNjkxMzQjNTc0ODINCg0KVGhhbmtzLA0KQm9iDQoNCi0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiByZmNAZWRrMi5ncm91cHMuaW8gPHJmY0BlZGsy Lmdyb3Vwcy5pbz4gT24gQmVoYWxmIE9mIE1hcnZpbiBIw6R1c2VyDQpTZW50OiBGcmlkYXksIE9j dG9iZXIgMjksIDIwMjEgOToyNyBQTQ0KVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBGZW5nLCBC b2IgQyA8Ym9iLmMuZmVuZ0BpbnRlbC5jb20+OyBnYW9saW1pbmdAYnlvc29mdC5jb20uY247IENo ZW4sIENocmlzdGluZSA8eXV3ZWkuY2hlbkBpbnRlbC5jb20+OyByZmNAZWRrMi5ncm91cHMuaW8N CkNjOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQpTdWJq ZWN0OiBSZTogW2VkazItcmZjXSBbZWRrMi1kZXZlbF0gUkZDOiBSZXBsYWNlIEZNTVQgVG9vbCBm cm9tIEMgdG8gUHl0aG9uIFZlcnNpb24NCg0KR29vZCBkYXksDQoNCklzIHRoZXJlIGFueSBpbmZv cm1hdGlvbiBhdmFpbGFibGUgb24gUHlHZW5Gdj8gSXQgYWxzbyBoYW5kbGVzIEVMRiB0byBQRSBj b252ZXJzaW9uICh3aG8ga25vd3Mgd2h5Li4uKSwgaXMgdGhhdCBwbGFubmVkIHRvIGJlIHBvcnRl ZCB0byBQeXRob24gYXMgd2VsbD8gRm9yIFByb2plY3QgQW1hcmFudGgsIHdlIGFyZSBjdXJyZW50 bHkgaW1wbGVtZW50aW5nIGEgdG9vbCB0byByZXBsYWNlIHRoZSBFTEYgdG8gUEUgY29udmVyc2lv biAoYW1vbmcgb3RoZXIgdGhpbmdzKSBhbmQgZGVjaWRlZCB0byB3cml0ZSBpdCBpbiBDIHRvIGxl dmVyYWdlIHRoZSBleGlzdGluZyBFREsgSUkgbGlicmFyaWVzIGZvciBQRSBhbmQgRUxGIHBhcnNp bmcsIHJhdGhlciB0aGFuIHJlLWltcGxlbWVudGluZyBwYXJzaW5nIGluIGEgZGlmZmVyZW50IGxh bmd1YWdlLiANCldlJ2QgbGlrZSB0byBzdGF5IGNvbXBhdGlibGUgd2l0aCB1cHN0cmVhbSBFREsg SUkgZm9yIGFzIGxvbmcgYXMgcG9zc2libGUsIGFuZCBwbGFuIHRvIHNlbmQgcGF0Y2hlcyBmb3Ig YSB0b29sIHByb3Bvc2FsIHdoZW5ldmVyIGl0IGlzIHJlYWR5IChkbyBub3QgZXhwZWN0IGl0IGJl Zm9yZSBtaWQgbmV4dCB5ZWFyLCBpZiBhdCBhbGwpLg0KDQpCZXN0IHJlZ2FyZHMsDQpNYXJ2aW4N Cg0KT24gMjkuMTAuMjEgMTI6NDMsIEJvYiBGZW5nIHdyb3RlOg0KPg0KPiBMaW1pbmcsDQo+DQo+ IENvcnJlY3QuIFB5Rk1NVCBkb2VzIG5vdCBkZXBlbmQgb24gR2VuU2VjLCBHZW5GZnMgYW5kIEdl bkZ2LiDCoFllcy4gdGhlIA0KPiBmdXR1cmUgUHlHZW5TZWMsIFB5R2VuRmZzIGFuZCBQeUdlbkZ2 IGNhbiByZXVzZSBjb2RlIGZyb20gUHlGTU1ULg0KPg0KPiBUaGFua3MsDQo+DQo+IEJvYg0KPg0K PiAqRnJvbToqIGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4gKk9u IEJlaGFsZiBPZiANCj4gKmdhb2xpbWluZw0KPiAqU2VudDoqIEZyaWRheSwgT2N0b2JlciAyOSwg MjAyMSAxMDoxNiBBTQ0KPiAqVG86KiBDaGVuLCBDaHJpc3RpbmUgPHl1d2VpLmNoZW5AaW50ZWwu Y29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW87IA0KPiByZmNAZWRrMi5ncm91cHMuaW8NCj4gKkNj OiogRmVuZywgQm9iIEMgPGJvYi5jLmZlbmdAaW50ZWwuY29tPjsgS2lubmV5LCBNaWNoYWVsIEQg DQo+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gKlN1YmplY3Q6KiDlm57lpI06IFtl ZGsyLWRldmVsXSBSRkM6IFJlcGxhY2UgRk1NVCBUb29sIGZyb20gQyB0byBQeXRob24gDQo+IFZl cnNpb24NCj4NCj4gQ2hyaXN0aW5lOg0KPg0KPiDCoFRoaXMgaXMgYSBnb29kIG5ld3MuIFRoYW5r cyBmb3IgeW91ciBncmVhdCB3b3JrLiBXaXRoIHRoaXMgY2hhbmdlLCANCj4gRk1NVCBkb2VzbuKA mXQgZGVwZW5kIG9uIEdlblNlYywgR2VuRmZzIGFuZCBHZW5GdiBDIHRvb2wuIFJpZ2h0PyBJZiB5 ZXMsIA0KPiBjYW4gdGhvc2UgbG9naWMgYmUgcmV1c2VkIHRvIHJlcGxhY2UgR2VuU2VjLCBHZW5G ZnMgYW5kIEdlbkZ2IEMgdG9vbHM/DQo+DQo+IFRoYW5rcw0KPg0KPiBMaW1pbmcNCj4NCj4gKuWP keS7tuS6uioqOipDaGVuLCBDaHJpc3RpbmUgPHl1d2VpLmNoZW5AaW50ZWwuY29tPg0KPiAq5Y+R 6YCB5pe26Ze0OiogMjAyMeW5tDEw5pyIMjnml6UgODozMw0KPiAq5pS25Lu25Lq6OiogZGV2ZWxA ZWRrMi5ncm91cHMuaW87IHJmY0BlZGsyLmdyb3Vwcy5pbw0KPiAq5oqE6YCBOiogRmVuZywgQm9i IEMgPGJvYi5jLmZlbmdAaW50ZWwuY29tPjsgS2lubmV5LCBNaWNoYWVsIEQgDQo+IDxtaWNoYWVs LmQua2lubmV5QGludGVsLmNvbT47IExpbWluZyBHYW8gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5j bj4NCj4gKuS4u+mimDoqIFtlZGsyLWRldmVsXSBSRkM6IFJlcGxhY2UgRk1NVCBUb29sIGZyb20g QyB0byBQeXRob24gVmVyc2lvbg0KPg0KPiBIaSBldmVyeW9uZSwNCj4NCj4gSSB3b3VsZCBsaWtl IHRvIHByb3Bvc2UgdGhlIG5ldyBGTU1UIFB5dGhvbiB0b29sLCB3aGljaCBpcyB1c2VkIHRvIA0K PiByZXBsYWNlIHRoZSBvcmlnaW4gQyB2ZXJzaW9uIHRvb2wuDQo+DQo+IEN1cnJlbnRseSB0aGUg Rk1NVCBDIHRvb2wgaXMgc2F2ZWQgaW4gZWRrMi1zdGFnaW5nIHJlcG8sIGJ1dCBpdHMgDQo+IHF1 YWxpdHkgYW5kIGNvZGluZyBzdHlsZSBjYW7igJl0IG1lZXQgdGhlIEVkazIgcXVhbGl0eSwgd2hp Y2ggaXMgaGFyZCB0byANCj4gbWFpbnRhaW4gKEhhcmQvRHVwbGljYXRlIENvZGU7IFJlZ3Jlc3Np b24gYnVnczsgUmVzdHJpY3QgdXNhZ2UpLg0KPg0KPiBUaGUgbmV3IFB5dGhvbiB2ZXJzaW9uIGtl ZXBzIHNhbWUgZnVuY3Rpb25zIHdpdGggb3JpZ2luIEMgdmVyc2lvbi4gSXQgDQo+IGhhcyBoaWdo ZXIgcXVhbGl0eSBhbmQgYmV0dGVyIGNvZGluZyBzdHlsZSwgYW5kIGl0IGlzIG11Y2ggZWFzaWVy IHRvIA0KPiBleHRlbmQgbmV3IGZ1bmN0aW9ucyBhbmQgdG8gbWFpbnRhaW4uDQo+DQo+IFlvdSBj YW4gZ2V0IHRoZSBGTU1UIFB5dGhvbiB0b29sIHRocm91Z2ggYmVsb3cgbGluay4NCj4NCj4gaHR0 cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyLXN0YWdpbmcvdHJlZS9QeUZNTVQNCj4gPGh0 dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi1zdGFnaW5nL3RyZWUvUHlGTU1UPg0KPg0K PiBJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gdGhhdCwgcGxzIGhhdmUgYSB0cnkuDQo+DQo+IExv b2tpbmcgZm9yd2FyZCB0byB5b3VyIGZlZWRiYWNrfg0KPg0KPiBUaGFua3MsDQo+DQo+IENocmlz dGluZSAoWXV3ZWkpDQo+DQo+IA0KDQoNCg0KDQoNCg0K