From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mx.groups.io with SMTP id smtpd.web12.76.1668107995231786180 for ; Thu, 10 Nov 2022 11:19:56 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=PdKei5N5; spf=pass (domain: intel.com, ip: 134.134.136.126, 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=1668107995; x=1699643995; h=from:to:subject:date:message-id:references:in-reply-to: content-transfer-encoding:mime-version; bh=PQNnzBYUPgj0J9Gk35HySiueaI8bhpX5KtBVQB5dfn4=; b=PdKei5N5nGTqb/ZaxP8VrHfAbdwVwqjyfgO84lUWpljnWbF00uvVwBYn zeYDfxkTa+bL/uq3OyXfRoxb0KyuS/tNfoF27veFqWXChAd0kQ6GFbVH/ Ni17NU0NvwWymFLwAZ1XZOHJfzRnW0Kaod0CaSI8mXm0TFQ80D3NY3enV UwAbdxt9POMojIBqu7Zzh2m9sIsoKyIt4yqPtCzkfKvuYAT3tDnB6CXro iBn2c30bbR5qX1GwpHGp+zjniwk5HAVyG34M2rVD4+GFzRMlgJfJ8U4aB no20zPWXrZ1xa2Lj3DG0CDfcykrDp4UaBYjOo/1dxFagB2iG7VwCCO2zC A==; X-IronPort-AV: E=McAfee;i="6500,9779,10527"; a="294769772" X-IronPort-AV: E=Sophos;i="5.96,154,1665471600"; d="scan'208";a="294769772" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Nov 2022 11:12:01 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10527"; a="588292898" X-IronPort-AV: E=Sophos;i="5.96,154,1665471600"; d="scan'208";a="588292898" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orsmga003.jf.intel.com with ESMTP; 10 Nov 2022 11:12:00 -0800 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.2375.31; Thu, 10 Nov 2022 11:12:00 -0800 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) 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.2375.31 via Frontend Transport; Thu, 10 Nov 2022 11:12:00 -0800 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.168) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Thu, 10 Nov 2022 11:12:00 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ew7UtT0Ab1YZG+1m8GpaoLlj7v3bhtuvdEt3Lfu7e9v83nQrVOuLLGKQXfA5ltFoV/OrZjNhjUpQjKpjhUqfSRsvktW7h3YNEMswl53Gevyaa7YUUUatomNUEQUFBc6pe27H5XmbI4ZmUz8Vq1I7tjAAxopTnbu4i6fon42Cff9Xy/UToq1XtrXrBmATVe01F5mncxa/fqzmQ5IbkadNfiFNXX+L8z4lLTPiYKigTswr6xtSZGs769mZOxuxykeqxkFlFpcp6EKeziDRkhz3G47RxhNYZAkwAs240jFB0AEvcvc6fp7zKHDihy3fyGIospkPbYF5AOQcXeZp++zB1g== 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=PQNnzBYUPgj0J9Gk35HySiueaI8bhpX5KtBVQB5dfn4=; b=H30gvI+1gCfmzvQt0ZHBcPyBfphWbTrawZ1s+xDrd8RkTfPSz6o1rY86s48QGDEKQT+o9Ill3SC7I0JN9+xXkD7oHb7GijcrYitqWU3EVtNiFU4Mdfzg1Zn2hZprDJfAjLVrg2SE6Zk6hUMEA14RUQZTqMdLXJOKtC3O3FMNz9NUm2l1zMRjQJj1xV1g3o5Jcu/jwLWFaIGl9K4px8p6s/qppTGIuUbGUhgwIELroaNtcYsLdKcrYxpuU7NGMHMDXBHsgsiudWprD4QvtB54YiiFUZ3TrjyAhmb2oBVGs9ih3YZKTLjQIb1MkV/2xgcrnlSTKvRoCMHr2tJQ9S/9jA== 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 PH0PR11MB5063.namprd11.prod.outlook.com (2603:10b6:510:3d::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.27; Thu, 10 Nov 2022 19:11:57 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::d936:6054:442a:9dde]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::d936:6054:442a:9dde%6]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 19:11:57 +0000 From: "Michael D Kinney" To: Rebecca Cran , "devel@edk2.groups.io" , "Gao, Liming" , "Liu, Zhiguang" , Andrew Fish , "Kinney, Michael D" Subject: Re: [PATCH v4 1/1] MdePkg: Use ANSI colors to indicate debug message severity Thread-Topic: [PATCH v4 1/1] MdePkg: Use ANSI colors to indicate debug message severity Thread-Index: AQHY6jU9gBlkaH4MY0CmJekZl7EPla44mSvw Date: Thu, 10 Nov 2022 19:11:57 +0000 Message-ID: References: <20221027185117.758157-1-rebecca@quicinc.com> In-Reply-To: <20221027185117.758157-1-rebecca@quicinc.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.500.17 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_|PH0PR11MB5063:EE_ x-ms-office365-filtering-correlation-id: 17ecb6c1-9ec8-40e3-0348-08dac34f6fca 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: Z/cELR5lpCQ4CGk+DB8L1O/FzCkeDMKexz8SCL5EMSa0PrbO5MLT/M4hEEaGyLAOMKlGxCNaoE/pO+gpLGpZwFi9r5cHfjk+BtNbJog8ziOAGCAEp5g2RNjYs2jQjXQZll+JVogZGJ2lKB8/3gYW2qQIshf7PIeQXP8pVS1ZrKFasuB8N/fXDGT6nSEyKNp2Pkl6MziOlVEzR6IyvNniqz8uiKn4sWnWSkIgA4oCft/VqNXgfUFfEp4KwJROrHLawORZyHA62aGXfTyJcd9nppJDSNGup8wGuMXqg3bCOCNZ77JXrDk9ciqqLlHkkGRBdQN21SECBzl9bp6iAUCvh1w7pykt6YuU/cWwGoDaBZABOhyy0lkXUZDEDNnfeu7weVgNb0d8Lsw4CMnl2hst6LcxfQYz+CIfGoYZWQhTmDPBDi3UhzLX1Ie6Zd0vC1IdNuu+xvxyNNvl3aLtvojdeCgzrtUKLtsiWntWkgk0N2NeNcNTjrtQV2osQS1tnPkZfE/p2i61uClJ85X2rTwH7wD6/Ad/sLnoT0qRA3H/UKnAo9iQOu7QRqzrLrBPf6LbDH7+oF76RW56eHSKNmvboemm0wCbqtjosK86avAoSqJnXuo6gbseFqpCFZV6ELAodDsAOWchgJKo4gjRvlOR4MWyZWmOywRUxKG40NKkypyPwLpzLHoJq4ZADDf0AQUjSvEiDg+IWbhOYG2imsacPIACkiLCIKq/4Htyeq7T/uyWljUZlqVskBWGTREY8Vbo2cHS1+PT0N4XdD40Ww9IKw== 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:(13230022)(396003)(376002)(39860400002)(136003)(346002)(366004)(451199015)(7696005)(9686003)(83380400001)(26005)(6506007)(186003)(82960400001)(38100700002)(53546011)(30864003)(15650500001)(2906002)(5660300002)(110136005)(478600001)(316002)(55016003)(8676002)(71200400001)(41300700001)(66556008)(66476007)(122000001)(66446008)(52536014)(8936002)(76116006)(66946007)(64756008)(86362001)(33656002)(38070700005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?L283alEwQ2FvdnVXNmU2SFo3eGJnOENmZlVOSFhXNzlFOCtTdlZUcXhFWU9i?= =?utf-8?B?NkMwcEVSdUcrMElQMEVvcWQxNUpHb3UzRXFkWS9xYzZQbFd4Z3dmbmVoSHFL?= =?utf-8?B?cTNKOWNLdjZ0cVEwcGlPbWtmTjRPRFNoMFhJQWhyTXg3b05NSjA2VUR4MUU4?= =?utf-8?B?N2J2T0VzVVVKbTlTaUhPUVhUSVN6ODZOVVVXaUprYktGSDV0MnloK0lzV2FZ?= =?utf-8?B?UFQ0bFZZbEQ2aFl2V0xWS1NlRnpjV2RpVXpJWGNvQm5RYTZuamxBU2puVmJH?= =?utf-8?B?VUtSQzU1Z1krSURocVZYY2FVVTM2Y3BEcnNQeTZqVmswaldjMGxSaWRydzV6?= =?utf-8?B?RHRaS0RMbmxWYU81anRUS0k3bURENUl5RCtFNU0xSmJ1bGZQcG1MOTlvMVc3?= =?utf-8?B?SzV4clFBSVhqamp6ZUMyc2RnZUZqeUtpUytKRXdFcGEvUEZ6ZmdtajRpWldO?= =?utf-8?B?RzRTTVJUeU40Rk1Gc0xiSkxKZEhPWXlZK0FvQm5vYXRzUTAySjFpWkQ1ZWpH?= =?utf-8?B?SDhVTTViYjIvS01ZU3JVc2lWMGJDZUFSVVNIV0dzSms5ckdhSi9LRVVkdjI4?= =?utf-8?B?Z0JFUGU5NS9weFkxS3B6L2V1akZ1blFBUEhCS0lud3JraUs5ODRtZG43MWdk?= =?utf-8?B?bUU4ZXMvN2RBUmtBend5NWYzOC9hOXhBdU5aYThIZElPc09CMmJyVDJCV1Y0?= =?utf-8?B?UXpEQ1YyRm40ZG5pYWZIVjczYTJyRzhidExzTXBNaUE5eEhWSEJiaFpadXVy?= =?utf-8?B?TjEvdHNyQ2l3c0VOTFFKYXkzeVViZVhsYTdJdGZnZUxvMjRZL2VOWG9HaURu?= =?utf-8?B?VWRZaGxoQW5JM0pjZHBiSW1yNDdFb01MTHdXak9WeTVwSndZMjdYVjJZWE9q?= =?utf-8?B?VjU2c0E5MWhuN3BrNnJEUDRMWGZjRERPbitjUW9BRytSRUZ0YjcxZlhwaE5I?= =?utf-8?B?OVZ2Mk9Vc0lISXZWVk90cW11SXg5S0dPbVZDdDNGeXFUMXlCQmNKOUNFMWtv?= =?utf-8?B?STFpV2dOc2M4UXRuZ1BJY2tQaDArdU0xWmpOYW92ci9YYzkzUmZ4VlFVQVdp?= =?utf-8?B?YVJneEl5Qm1TektVTjlxT2FUMWhUYzdtck1reDNBS3hvWHRQM0tvZ1YyeHBY?= =?utf-8?B?NUpTRFlqdWRVMS9laXBPRTZTTDIxdHpaelBJUWZWeHpQbVZUMUtiQlM3QzBG?= =?utf-8?B?akVqK3lKK29VRHNkVWdveExZSGpGNDVnVVpsNVl2ZzREcGZsVHEzOWpISC90?= =?utf-8?B?U0MwMHVOZ1pvQm1uRWVNV21SZkVlMjltVTNVeUtySTRaSFBFNzNKSFYvMjlk?= =?utf-8?B?czI1MmJ3WThpWDErV3RqOGRxVmlRbmxLZEZ3cHZkR1lYZkFFczhjOXQ4OTRK?= =?utf-8?B?c0VScVNzcEpyZ1ZJVHNUdVlqVDlPU0I2aCswYVVhcHdXa0k1czkxTStnTVYz?= =?utf-8?B?UDRSL2xjbnYrbm5CY0xRQWt4NDlYUGFBY0dBc3FBMFZGUlkxdTc3amJ0ZW9T?= =?utf-8?B?UDVYZWFTdkVONERld2l3SVRtL2YrM0VyUkYwSmtzaGhnMGNHK05ZZ3orVktq?= =?utf-8?B?Sk9YQUFTVjJpMlZWN1M1TnJqNHE2cERqYXR5d3VsQmpidnh3ck1TblN6RXp3?= =?utf-8?B?SitCdTVDZWdLNDB6R1NaVkRJOTVTaDljWHdxQ2t5cExrMUxFMUl4Nk9rVmlp?= =?utf-8?B?QlMrS2xuQmRiNWRnUnhXMWlRWmFHNGk2Qk1qSzloV3NVVEtVYkNOSkhkbi9p?= =?utf-8?B?RmZ6cTdsWi81ZTJLYTM4VTBqU2QrSVRubWpreHZkc3JTWmRuWmo0ZldldlA4?= =?utf-8?B?UDhJbFNodFExMmViLzRKZUE5ZzZFbzZnZnFiNTZKTjczdVNFR21HUkFibU1I?= =?utf-8?B?Vncxci9Hc2U5MFVxV1B5SnYyRVJSS1BQVmtlZWZrVWdtZXFNMWwzRDFWSjFw?= =?utf-8?B?MnpWaGpkaTQvT3REM09OWDNtazBPWnBNSnJWWFdkeURzbGhlbVA5NkNqS2Uw?= =?utf-8?B?RDZmUElRR2R0QXQ0Q2FZWGxIQktRV1NmdUlpT29XMlRKNGlMNHUya3FRYisy?= =?utf-8?B?cXAzUk4vWWtlRHRTWXNPTXZtd2NRb1JQbmZ5N3FURVR2MEQ2NTE4YlA5ZXB6?= =?utf-8?B?UU1LeEFNYUFlTERjekdkVURmVzJrY08veE9YcExqLys5dTlZcjE4SkhJVHJa?= =?utf-8?B?UEE9PQ==?= 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: 17ecb6c1-9ec8-40e3-0348-08dac34f6fca X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Nov 2022 19:11:57.1533 (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: I33D+/JOaZZfikTDllIEb08OSd994U9vCTJDSDXMj4SBDXayH8/ajWu1c++4Wef4ETox+75uMIMxqzXFngfKdigooKBAl/5dGu3nUfC1k/w= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5063 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 SGkgUmViZWNjYSwNCg0KSW4gdGhlIGVkazIgcmVwbywgSSBzZWUgdGhlIGZvbGxvd2luZyBpbnN0 YW5jZXMgb2YgdGhlIERlYnVnUHJpbnRNYXJrZXIoKSBBUEkNCndoZXJlIHlvdSBhcmUgY3VycmVu dGx5IGFkZGluZyBoZSBBTlNJIGNvbG9yIHNlcXVlbmNlcy4gIFNob3VsZCBhbGwgb2YgdGhlc2UN CmJlIHVwZGF0ZWQ/ICBJIGRpZCBub3QgcmV2aWV3IHRoZSBlZGsyLXBsYXRmb3JtcyByZXBvLiAg QW5kIHRoZXJlIG1heSBiZQ0KZG93bnN0cmVhbSBjdXN0b20gRGVidWdMaWIgaW5zdGFuY2VzLiAg SXQgd291bGQgYmV0dGVyIGlmIHRoaXMgZmVhdHVyZSBjb3VsZCANCmJlIGVuYWJsZWQgZm9yIGFs bCBleGlzdGluZyBEZWJ1Z0xpYiBpbnN0YW5jZXMsIGJ1dCB0aGUgb25seSBjb21tb24gbG9jYXRp b24NCmlzIHRoZSBERUJVRygpIG1hY3JvIGRlZmluaXRpb24gaW4gTWRlUGtnL0luY2x1ZGUvTGli cmFyeS9EZWJ1Z0xpYi5oIGFuZCANCmFkZGluZyBjb2RlIHRvIHRoYXQgbWFjcm8gYWRkcyBzdGF0 ZW1lbnRzIHRvIHRoZSBtb2R1bGUgY2FsbGluZyB0aGUgRGVidWdMaWINCnNlcnZpY2VzLCB3aGlj aCBjYW4gaW5jcmVhc2UgY29kZSBzaXplLg0KDQpBcm1Qa2dcTGlicmFyeVxTZW1pSG9zdGluZ0Rl YnVnTGliXERlYnVnTGliLmM6DQogICA3NSAgVk9JRA0KICAgNzY6IERlYnVnUHJpbnRNYXJrZXIg KA0KICAgNzcgICAgSU4gIFVJTlROICAgICAgICBFcnJvckxldmVsLA0KDQpJbnRlbEZzcDJQa2dc TGlicmFyeVxCYXNlRnNwRGVidWdMaWJTZXJpYWxQb3J0XERlYnVnTGliLmM6DQogICA4OSAgVk9J RA0KICAgOTA6IERlYnVnUHJpbnRNYXJrZXIgKA0KICAgOTEgICAgSU4gIFVJTlROICAgICAgICBF cnJvckxldmVsLA0KDQpNZGVNb2R1bGVQa2dcTGlicmFyeVxQZWlEeGVEZWJ1Z0xpYlJlcG9ydFN0 YXR1c0NvZGVcRGVidWdMaWIuYzoNCiAgIDg1ICBWT0lEDQogICA4NjogRGVidWdQcmludE1hcmtl ciAoDQogICA4NyAgICBJTiAgVUlOVE4gICAgICAgIEVycm9yTGV2ZWwsDQoNCk1kZVBrZ1xMaWJy YXJ5XEJhc2VEZWJ1Z0xpYlNlcmlhbFBvcnRcRGVidWdMaWIuYzoNCiAgIDk3ICBWT0lEDQogICA5 ODogRGVidWdQcmludE1hcmtlciAoDQogICA5OSAgICBJTiAgVUlOVE4gICAgICAgIEVycm9yTGV2 ZWwsDQoNCk1kZVBrZ1xMaWJyYXJ5XER4ZVJ1bnRpbWVEZWJ1Z0xpYlNlcmlhbFBvcnRcRGVidWdM aWIuYzoNCiAgMTU2ICBWT0lEDQogIDE1NzogRGVidWdQcmludE1hcmtlciAoDQogIDE1OCAgICBJ TiAgVUlOVE4gICAgICAgIEVycm9yTGV2ZWwsDQoNCk1kZVBrZ1xMaWJyYXJ5XFVlZmlEZWJ1Z0xp YkNvbk91dFxEZWJ1Z0xpYi5jOg0KICAgNzkgIFZPSUQNCiAgIDgwOiBEZWJ1Z1ByaW50TWFya2Vy ICgNCiAgIDgxICAgIElOICBVSU5UTiAgICAgICAgRXJyb3JMZXZlbCwNCg0KTWRlUGtnXExpYnJh cnlcVWVmaURlYnVnTGliRGVidWdQb3J0UHJvdG9jb2xcRGVidWdMaWIuYzoNCiAgMTM3ICBWT0lE DQogIDEzODogRGVidWdQcmludE1hcmtlciAoDQogIDEzOSAgICBJTiAgVUlOVE4gICAgICAgIEVy cm9yTGV2ZWwsDQoNCk1kZVBrZ1xMaWJyYXJ5XFVlZmlEZWJ1Z0xpYlN0ZEVyclxEZWJ1Z0xpYi5j Og0KICAgNzkgIFZPSUQNCiAgIDgwOiBEZWJ1Z1ByaW50TWFya2VyICgNCiAgIDgxICAgIElOICBV SU5UTiAgICAgICAgRXJyb3JMZXZlbCwNCg0KT3ZtZlBrZ1xMaWJyYXJ5XFBsYXRmb3JtRGVidWdM aWJJb1BvcnRcRGVidWdMaWIuYzoNCiAgIDc5ICBWT0lEDQogICA4MDogRGVidWdQcmludE1hcmtl ciAoDQogICA4MSAgICBJTiAgVUlOVE4gICAgICAgIEVycm9yTGV2ZWwsDQoNCkFsc28sIHRoZSBF cnJvckxldmVsIHBhcmFtZXRlciBpcyBhIGJpdG1hc2suICBJdCBjYW5ub3QgYmUgdXNlZCBpbg0K YSBzd2l0Y2gvY2FzZSBzdGF0ZW1lbnQgZm9yIG9ubHkgMSBiaXQgYmVpbmcgc2V0LiAgVG8gdGVz dCBmb3IgYSANCmRlYnVnIG1lc3NhZ2Ugb2YgdHlwZSBFUlJPUiBvciBXQVJOLCBhIGNoZWNrIG11 c3QgYmUgZG9uZSBmb3IgdGhhdA0Kb25lIGJpdCBiZWluZyBzZXQgaW4gRXJyb3JMZXZlbC4NCg0K VGhlIERlYnVnTGliIGFsc28gcHJvdmlkZXMgc3VwcG9ydCBmb3IgQVNTRVJUKCkgbWFjcm9zLiAg U2hvdWxkIA0KQVNTRVJUKCkgbWVzc2FnZXMgaGF2ZSB0aGUgc2FtZSBjb2xvciBhcyBhbiBFUlJP UiBtZXNzYWdlPyAgT3INCml0cyBvd24gY29sb3I/DQoNClRoZSBsb2dpYyBiZWxvdyBjaGFuZ2Vz IHRoZSBjb2xvciBmb3IgdGhlIG1lc3NhZ2UgYmFzZWQgb24gbWVzc2FnZQ0KdHlwZS4gIEJ1dCBp cyBkb2VzIG5vdCBzYXZlL3Jlc3RvcmUgdGhlIGN1cnJlbnQgQU5TSSBjb2xvciBzZXR0aW5nLg0K SXQgc2VlIGl0IHVzaW5nIHRoZSBFTkRfRVNDX1NFUS4gIERvZXMgdGhhdCBwdXQgdGhlIGNvbG9y IHNldHRpbmdzDQpiYWNrIHRvIHRoZSBwcmV2aW91cyBzZXR0aW5nPw0KDQpUaGFua3MsDQoNCk1p a2UNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSZWJlY2NhIENyYW4g PHJlYmVjY2FAcXVpY2luYy5jb20+DQo+IFNlbnQ6IFRodXJzZGF5LCBPY3RvYmVyIDI3LCAyMDIy IDExOjUxIEFNDQo+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgS2lubmV5LCBNaWNoYWVsIEQg PG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgR2FvLCBMaW1pbmcgPGdhb2xpbWluZ0BieW9z b2Z0LmNvbS5jbj47IExpdSwgWmhpZ3VhbmcNCj4gPHpoaWd1YW5nLmxpdUBpbnRlbC5jb20+OyBB bmRyZXcgRmlzaCA8YWZpc2hAYXBwbGUuY29tPg0KPiBDYzogUmViZWNjYSBDcmFuIDxyZWJlY2Nh QHF1aWNpbmMuY29tPg0KPiBTdWJqZWN0OiBbUEFUQ0ggdjQgMS8xXSBNZGVQa2c6IFVzZSBBTlNJ IGNvbG9ycyB0byBpbmRpY2F0ZSBkZWJ1ZyBtZXNzYWdlIHNldmVyaXR5DQo+IA0KPiBUaGVyZSBj dXJyZW50bHkgaXNuJ3QgYSB3YXkgdG8gZGlmZmVyZW50aWF0ZSB0aGUgZGlmZmVyZW50DQo+IGxl dmVscyBvZiBERUJVRyBvdXRwdXQ6IERFQlVHX0VSUk9SLCBERUJVR19XQVJOLCBERUJVR19JTkZP DQo+IGV0Yy4NCj4gDQo+IFRvIGltcHJvdmUgdGhpcywgd3JhcCBERUJVR19FUlJPUiBhbmQgREVC VUdfV0FSTiBsZXZlbA0KPiBtZXNzYWdlcyBpbiBBTlNJIGNvbG9yIGNvZGUgZXNjYXBlIHNlcXVl bmNlcy4gREVCVUdfRVJST1INCj4gbWVzc2FnZXMgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gcmVkIHRl eHQsIGFuZCBERUJVR19XQVJODQo+IGluIHllbGxvdy4NCj4gDQo+IE9ubHkgZW5hYmxlIHRoaXMg bmV3IGZ1bmN0aW9uYWxpdHkgaWYgdGhlIEZlYXR1cmVGbGFnDQo+IGdFZmlNZGVQa2dUb2tlblNw YWNlR3VpZC5QY2REZWJ1Z0Fuc2lTZXFTdXBwb3J0DQo+IGlzIHNldCB0byBUUlVFLiBCeSBkZWZh dWx0IGl0J3MgRkFMU0UuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBSZWJlY2NhIENyYW4gPHJlYmVj Y2FAcXVpY2luYy5jb20+DQo+IC0tLQ0KPiAgTWRlUGtnL01kZVBrZy5kZWMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2ICsrDQo+ICBNZGVQa2cvTGli cmFyeS9CYXNlRGVidWdMaWJTZXJpYWxQb3J0L0Jhc2VEZWJ1Z0xpYlNlcmlhbFBvcnQuaW5mIHwg IDIgKy0NCj4gIE1kZVBrZy9MaWJyYXJ5L1VlZmlEZWJ1Z0xpYkNvbk91dC9VZWZpRGVidWdMaWJD b25PdXQuaW5mICAgICAgICAgfCAgMiArLQ0KPiAgTWRlUGtnL0xpYnJhcnkvQmFzZURlYnVnTGli U2VyaWFsUG9ydC9EZWJ1Z0xpYi5jICAgICAgICAgICAgICAgICB8IDY0ICsrKysrKysrKysrKysr KysrKysrDQo+ICBNZGVQa2cvTGlicmFyeS9VZWZpRGVidWdMaWJDb25PdXQvRGVidWdMaWIuYyAg ICAgICAgICAgICAgICAgICAgIHwgNjQgKysrKysrKysrKysrKysrKysrKysNCj4gIDUgZmlsZXMg Y2hhbmdlZCwgMTM2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0t Z2l0IGEvTWRlUGtnL01kZVBrZy5kZWMgYi9NZGVQa2cvTWRlUGtnLmRlYw0KPiBpbmRleCA0Yzgx Y2JkNzVhYjIuLjhkZGM0NmI2MmU3ZCAxMDA2NDQNCj4gLS0tIGEvTWRlUGtnL01kZVBrZy5kZWMN Cj4gKysrIGIvTWRlUGtnL01kZVBrZy5kZWMNCj4gQEAgLTQsNiArNCw3IEBADQo+ICAjIEl0IGFs c28gcHJvdmlkZXMgdGhlIGRlZmluaXRpb25zKGluY2x1ZGluZyBQUElzL1BST1RPQ09Mcy9HVUlE cykgb2YNCj4gICMgRUZJMS4xMC9VRUZJMi43L1BJMS43IGFuZCBzb21lIEluZHVzdHJ5IFN0YW5k YXJkcy4NCj4gICMNCj4gKyMgQ29weXJpZ2h0IChjKSAyMDIyLCBRdWFsY29tbSBJbm5vdmF0aW9u IENlbnRlciwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gICMgQ29weXJpZ2h0IChj KSAyMDA3IC0gMjAyMiwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJS Pg0KPiAgIyBQb3J0aW9ucyBjb3B5cmlnaHQgKGMpIDIwMDggLSAyMDA5LCBBcHBsZSBJbmMuIEFs bCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiAgIyAoQykgQ29weXJpZ2h0IDIwMTYgLSAyMDIxIEhl d2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQPEJSPg0KPiBAQCAtMTk3Nyw2 ICsxOTc4LDExIEBAIFtQY2RzRmVhdHVyZUZsYWddDQo+ICAgICMgQFByb21wdCBWYWxpZGF0ZSBP UkRFUkVEX0NPTExFQ1RJT04gc3RydWN0dXJlDQo+ICAgIGdFZmlNZGVQa2dUb2tlblNwYWNlR3Vp ZC5QY2RWYWxpZGF0ZU9yZGVyZWRDb2xsZWN0aW9ufEZBTFNFfEJPT0xFQU58MHgwMDAwMDAyYQ0K PiANCj4gKyAgIyMgSW5kaWNhdGVzIGlmIERFQlVHIG91dHB1dCBzaG91bGQgdXNlIEFOU0kgc2Vx dWVuY2VzLjxCUj48QlI+DQo+ICsgICMgICBUUlVFICAtIFdpbGwgdXNlIEFOU0kgc2VxdWVuY2Vz IGluIERFQlVHIG91dHB1dC48QlI+DQo+ICsgICMgICBGQUxTRSAtIFdpbGwgbm90IHVzZSBBTlNJ IHNlcXVlbmNlcyBpbiBERUJVRyBvdXRwdXQuPEJSPg0KPiArICBnRWZpTWRlUGtnVG9rZW5TcGFj ZUd1aWQuUGNkRGVidWdBbnNpU2VxU3VwcG9ydHxGQUxTRXxCT09MRUFOfDB4MDAwMDAwMmYNCj4g Kw0KPiAgW1BjZHNGaXhlZEF0QnVpbGRdDQo+ICAgICMjIFN0YXR1cyBjb2RlIHZhbHVlIGZvciBp bmRpY2F0aW5nIGEgd2F0Y2hkb2cgdGltZXIgaGFzIGV4cGlyZWQuDQo+ICAgICMgRUZJX0NPTVBV VElOR19VTklUX0hPU1RfUFJPQ0VTU09SIHwgRUZJX0NVX0hQX0VDX1RJTUVSX0VYUElSRUQNCj4g ZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VEZWJ1Z0xpYlNlcmlhbFBvcnQvQmFzZURl YnVnTGliU2VyaWFsUG9ydC5pbmYNCj4gYi9NZGVQa2cvTGlicmFyeS9CYXNlRGVidWdMaWJTZXJp YWxQb3J0L0Jhc2VEZWJ1Z0xpYlNlcmlhbFBvcnQuaW5mDQo+IGluZGV4IDc1MDRmYWVlNjdmMC4u OGQ2ZWQ3NTllOTc0IDEwMDY0NA0KPiAtLS0gYS9NZGVQa2cvTGlicmFyeS9CYXNlRGVidWdMaWJT ZXJpYWxQb3J0L0Jhc2VEZWJ1Z0xpYlNlcmlhbFBvcnQuaW5mDQo+ICsrKyBiL01kZVBrZy9MaWJy YXJ5L0Jhc2VEZWJ1Z0xpYlNlcmlhbFBvcnQvQmFzZURlYnVnTGliU2VyaWFsUG9ydC5pbmYNCj4g QEAgLTQxLDQgKzQxLDQgQEAgW1BjZF0NCj4gICAgZ0VmaU1kZVBrZ1Rva2VuU3BhY2VHdWlkLlBj ZERlYnVnQ2xlYXJNZW1vcnlWYWx1ZSAgIyMgU09NRVRJTUVTX0NPTlNVTUVTDQo+ICAgIGdFZmlN ZGVQa2dUb2tlblNwYWNlR3VpZC5QY2REZWJ1Z1Byb3BlcnR5TWFzayAgICAgICMjIENPTlNVTUVT DQo+ICAgIGdFZmlNZGVQa2dUb2tlblNwYWNlR3VpZC5QY2RGaXhlZERlYnVnUHJpbnRFcnJvckxl dmVsICMjIENPTlNVTUVTDQo+IC0NCj4gKyAgZ0VmaU1kZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZERl YnVnQW5zaVNlcVN1cHBvcnQgICAgICAgIyMgQ09OU1VNRVMNCj4gZGlmZiAtLWdpdCBhL01kZVBr Zy9MaWJyYXJ5L1VlZmlEZWJ1Z0xpYkNvbk91dC9VZWZpRGVidWdMaWJDb25PdXQuaW5mIGIvTWRl UGtnL0xpYnJhcnkvVWVmaURlYnVnTGliQ29uT3V0L1VlZmlEZWJ1Z0xpYkNvbk91dC5pbmYNCj4g aW5kZXggNTNiYmM4Y2UzZjY1Li42OTQ0OTRmZmM3YTMgMTAwNjQ0DQo+IC0tLSBhL01kZVBrZy9M aWJyYXJ5L1VlZmlEZWJ1Z0xpYkNvbk91dC9VZWZpRGVidWdMaWJDb25PdXQuaW5mDQo+ICsrKyBi L01kZVBrZy9MaWJyYXJ5L1VlZmlEZWJ1Z0xpYkNvbk91dC9VZWZpRGVidWdMaWJDb25PdXQuaW5m DQo+IEBAIC01MCw0ICs1MCw0IEBAIFtQY2RdDQo+ICAgIGdFZmlNZGVQa2dUb2tlblNwYWNlR3Vp ZC5QY2REZWJ1Z0NsZWFyTWVtb3J5VmFsdWUgICAgICAgICMjIFNPTUVUSU1FU19DT05TVU1FUw0K PiAgICBnRWZpTWRlUGtnVG9rZW5TcGFjZUd1aWQuUGNkRGVidWdQcm9wZXJ0eU1hc2sgICAgICAg ICAgICAjIyBDT05TVU1FUw0KPiAgICBnRWZpTWRlUGtnVG9rZW5TcGFjZUd1aWQuUGNkRml4ZWRE ZWJ1Z1ByaW50RXJyb3JMZXZlbCAgICAjIyBDT05TVU1FUw0KPiAtDQo+ICsgIGdFZmlNZGVQa2dU b2tlblNwYWNlR3VpZC5QY2REZWJ1Z0Fuc2lTZXFTdXBwb3J0ICAgICAgICAgICMjIENPTlNVTUVT DQo+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9CYXNlRGVidWdMaWJTZXJpYWxQb3J0L0Rl YnVnTGliLmMgYi9NZGVQa2cvTGlicmFyeS9CYXNlRGVidWdMaWJTZXJpYWxQb3J0L0RlYnVnTGli LmMNCj4gaW5kZXggYmQ1Njg2OTQ3NzEyLi5kZjMxYmQxZmZiOWYgMTAwNjQ0DQo+IC0tLSBhL01k ZVBrZy9MaWJyYXJ5L0Jhc2VEZWJ1Z0xpYlNlcmlhbFBvcnQvRGVidWdMaWIuYw0KPiArKysgYi9N ZGVQa2cvTGlicmFyeS9CYXNlRGVidWdMaWJTZXJpYWxQb3J0L0RlYnVnTGliLmMNCj4gQEAgLTI2 LDYgKzI2LDEwIEBADQo+ICAvLw0KPiAgI2RlZmluZSBNQVhfREVCVUdfTUVTU0FHRV9MRU5HVEgg IDB4MTAwDQo+IA0KPiArI2RlZmluZSBSRURfRVNDX1NFUSAgICAgIlwwMzNbMzFtIg0KPiArI2Rl ZmluZSBZRUxMT1dfRVNDX1NFUSAgIlwwMzNbMzNtIg0KPiArI2RlZmluZSBFTkRfRVNDX1NFUSAg ICAgIlwwMzNbMG0iDQo+ICsNCj4gIC8vDQo+ICAvLyBWQV9MSVNUIGNhbiBub3QgaW5pdGlhbGl6 ZSB0byBOVUxMIGZvciBhbGwgY29tcGlsZXIsIHNvIHdlIHVzZSB0aGlzIHRvDQo+ICAvLyBpbmRp Y2F0ZSBhIG51bGwgVkFfTElTVA0KPiBAQCAtNzcsNiArODEsNjIgQEAgRGVidWdQcmludCAoDQo+ ICAgIFZBX0VORCAoTWFya2VyKTsNCj4gIH0NCj4gDQo+ICsvKioNCj4gKyAgV3JhcHMgYSBtZXNz YWdlIHdpdGggQU5TSSBjb2xvciBlc2NhcGUgY29kZXMuDQo+ICsNCj4gKyAgQHBhcmFtIFN0cmlu ZyAgICAgVGhlIHN0cmluZyB0byB3cmFwLg0KPiArICBAcGFyYW0gU3RyaW5nTGVuICBUaGUgc2l6 ZSBvZiB0aGUgU3RyaW5nIGJ1ZmZlciBpbiBjaGFyYWN0ZXJzLg0KPiArICBAcGFyYW0gRXJyb3JM ZXZlbCBUaGUgZXJyb3IgbGV2ZWwuDQo+ICsNCj4gKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyAg ICAgICAgICBUaGUgc3RyaW5nIHdhcyBzdWNjZXNzZnVsbHkgdXBkYXRlZC4NCj4gKyAgQHJldHZh bCBSRVRVUk5fQlVGRkVSX1RPT19TTUFMTCBUaGUgYnVmZmVyIGlzIHRvbyBzbWFsbC4NCj4gKw0K PiArKiovDQo+ICtTVEFUSUMNCj4gK1JFVFVSTl9TVEFUVVMNCj4gK0FzY2lpRGVidWdHZXRDb2xv clN0cmluZyAoDQo+ICsgIElOIE9VVCBDSEFSOCAgKlN0cmluZywNCj4gKyAgSU4gVUlOVE4gICAg ICBTdHJpbmdMZW4sDQo+ICsgIElOIFVJTlROICAgICAgRXJyb3JMZXZlbA0KPiArICApDQo+ICt7 DQo+ICsgIENIQVI4ICBCdWZmZXJbTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RIXTsNCj4gKyAgVUlO VE4gIFJlcUJ1ZmZlckxlbjsNCj4gKw0KPiArICBSZXFCdWZmZXJMZW4gPSBBc2NpaVN0ckxlbiAo U3RyaW5nKSArDQo+ICsgICAgICAgICAgICAgICAgIEFzY2lpU3RyTGVuIChSRURfRVNDX1NFUSkg Kw0KPiArICAgICAgICAgICAgICAgICBBc2NpaVN0ckxlbiAoRU5EX0VTQ19TRVEpICsNCj4gKyAg ICAgICAgICAgICAgICAgMTsNCj4gKw0KPiArICBpZiAoU3RyaW5nTGVuIDwgUmVxQnVmZmVyTGVu KSB7DQo+ICsgICAgcmV0dXJuIFJFVFVSTl9CVUZGRVJfVE9PX1NNQUxMOw0KPiArICB9DQo+ICsN Cj4gKyAgWmVyb01lbSAoQnVmZmVyLCBzaXplb2YgKEJ1ZmZlcikpOw0KPiArDQo+ICsgIHN3aXRj aCAoRXJyb3JMZXZlbCkgew0KPiArICAgIGNhc2UgREVCVUdfV0FSTjoNCj4gKyAgICAgIEFzY2lp U3RyQ3B5UyAoQnVmZmVyLCBNQVhfREVCVUdfTUVTU0FHRV9MRU5HVEgsIFlFTExPV19FU0NfU0VR KTsNCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIGNhc2UgREVCVUdfRVJST1I6DQo+ICsgICAgICBB c2NpaVN0ckNweVMgKEJ1ZmZlciwgTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RILCBSRURfRVNDX1NF USk7DQo+ICsgICAgICBicmVhazsNCj4gKyAgfQ0KPiArDQo+ICsgIEFzY2lpU3RyQ2F0UyAoQnVm ZmVyLCBNQVhfREVCVUdfTUVTU0FHRV9MRU5HVEgsIFN0cmluZyk7DQo+ICsNCj4gKyAgc3dpdGNo IChFcnJvckxldmVsKSB7DQo+ICsgICAgY2FzZSBERUJVR19XQVJOOg0KPiArICAgIGNhc2UgREVC VUdfRVJST1I6DQo+ICsgICAgICBBc2NpaVN0ckNhdFMgKEJ1ZmZlciwgTUFYX0RFQlVHX01FU1NB R0VfTEVOR1RILCBFTkRfRVNDX1NFUSk7DQo+ICsgICAgICBicmVhazsNCj4gKyAgfQ0KPiArDQo+ ICsgIEFzY2lpU3RyQ3B5UyAoU3RyaW5nLCBTdHJpbmdMZW4sIEJ1ZmZlcik7DQo+ICsNCj4gKyAg cmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0KPiArfQ0KPiArDQo+ICAvKioNCj4gICAgUHJpbnRzIGEg ZGVidWcgbWVzc2FnZSB0byB0aGUgZGVidWcgb3V0cHV0IGRldmljZSBpZiB0aGUgc3BlY2lmaWVk DQo+ICAgIGVycm9yIGxldmVsIGlzIGVuYWJsZWQgYmFzZSBvbiBOdWxsLXRlcm1pbmF0ZWQgZm9y bWF0IHN0cmluZyBhbmQgYQ0KPiBAQCAtMTI1LDYgKzE4NSwxMCBAQCBEZWJ1Z1ByaW50TWFya2Vy ICgNCj4gICAgICBBc2NpaUJTUHJpbnQgKEJ1ZmZlciwgc2l6ZW9mIChCdWZmZXIpLCBGb3JtYXQs IEJhc2VMaXN0TWFya2VyKTsNCj4gICAgfQ0KPiANCj4gKyAgaWYgKEZlYXR1cmVQY2RHZXQgKFBj ZERlYnVnQW5zaVNlcVN1cHBvcnQpKSB7DQo+ICsgICAgQXNjaWlEZWJ1Z0dldENvbG9yU3RyaW5n IChCdWZmZXIsIE1BWF9ERUJVR19NRVNTQUdFX0xFTkdUSCwgRXJyb3JMZXZlbCk7DQo+ICsgIH0N Cj4gKw0KPiAgICAvLw0KPiAgICAvLyBTZW5kIHRoZSBwcmludCBzdHJpbmcgdG8gYSBTZXJpYWwg UG9ydA0KPiAgICAvLw0KPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkvVWVmaURlYnVnTGli Q29uT3V0L0RlYnVnTGliLmMgYi9NZGVQa2cvTGlicmFyeS9VZWZpRGVidWdMaWJDb25PdXQvRGVi dWdMaWIuYw0KPiBpbmRleCA2NWM4ZGMyYjQ2NTQuLjUyMTI5OGE3YzhhNyAxMDA2NDQNCj4gLS0t IGEvTWRlUGtnL0xpYnJhcnkvVWVmaURlYnVnTGliQ29uT3V0L0RlYnVnTGliLmMNCj4gKysrIGIv TWRlUGtnL0xpYnJhcnkvVWVmaURlYnVnTGliQ29uT3V0L0RlYnVnTGliLmMNCj4gQEAgLTIwLDYg KzIwLDEwIEBADQo+ICAvLw0KPiAgI2RlZmluZSBNQVhfREVCVUdfTUVTU0FHRV9MRU5HVEggIDB4 MTAwDQo+IA0KPiArI2RlZmluZSBSRURfRVNDX1NFUSAgICAgTCJcMDMzWzMxbSINCj4gKyNkZWZp bmUgWUVMTE9XX0VTQ19TRVEgIEwiXDAzM1szM20iDQo+ICsjZGVmaW5lIEVORF9FU0NfU0VRICAg ICBMIlwwMzNbMG0iDQo+ICsNCj4gIC8vDQo+ICAvLyBWQV9MSVNUIGNhbiBub3QgaW5pdGlhbGl6 ZSB0byBOVUxMIGZvciBhbGwgY29tcGlsZXIsIHNvIHdlIHVzZSB0aGlzIHRvDQo+ICAvLyBpbmRp Y2F0ZSBhIG51bGwgVkFfTElTVA0KPiBAQCAtNTksNiArNjMsNjIgQEAgRGVidWdQcmludCAoDQo+ ICAgIFZBX0VORCAoTWFya2VyKTsNCj4gIH0NCj4gDQo+ICsvKioNCj4gKyAgV3JhcHMgYSBtZXNz YWdlIHdpdGggQU5TSSBjb2xvciBlc2NhcGUgY29kZXMuDQo+ICsNCj4gKyAgQHBhcmFtIFN0cmlu ZyAgICAgVGhlIHN0cmluZyB0byB3cmFwLg0KPiArICBAcGFyYW0gU3RyaW5nTGVuICBUaGUgc2l6 ZSBvZiB0aGUgU3RyaW5nIGJ1ZmZlciBpbiBVbmljb2RlIGNoYXJhY3RlcnMuDQo+ICsgIEBwYXJh bSBFcnJvckxldmVsIFRoZSBlcnJvciBsZXZlbC4NCj4gKw0KPiArICBAcmV0dmFsIFJFVFVSTl9T VUNDRVNTICAgICAgICAgIFRoZSBzdHJpbmcgd2FzIHN1Y2Nlc3NmdWxseSB1cGRhdGVkLg0KPiAr ICBAcmV0dmFsIFJFVFVSTl9CVUZGRVJfVE9PX1NNQUxMIFRoZSBidWZmZXIgaXMgdG9vIHNtYWxs Lg0KPiArDQo+ICsqKi8NCj4gK1NUQVRJQw0KPiArUkVUVVJOX1NUQVRVUw0KPiArVW5pY29kZURl YnVnR2V0Q29sb3JTdHJpbmcgKA0KPiArICBJTiBPVVQgQ0hBUjE2ICAqU3RyaW5nLA0KPiArICBJ TiBVSU5UTiAgICAgICBTdHJpbmdMZW4sDQo+ICsgIElOIFVJTlROICAgICAgIEVycm9yTGV2ZWwN Cj4gKyAgKQ0KPiArew0KPiArICBDSEFSMTYgIEJ1ZmZlcltNQVhfREVCVUdfTUVTU0FHRV9MRU5H VEhdOw0KPiArICBVSU5UTiAgIFJlcUJ1ZmZlckxlbjsNCj4gKw0KPiArICBSZXFCdWZmZXJMZW4g PSBTdHJMZW4gKFN0cmluZykgKw0KPiArICAgICAgICAgICAgICAgICBTdHJMZW4gKFJFRF9FU0Nf U0VRKSArDQo+ICsgICAgICAgICAgICAgICAgIFN0ckxlbiAoRU5EX0VTQ19TRVEpICsNCj4gKyAg ICAgICAgICAgICAgICAgMTsNCj4gKw0KPiArICBpZiAoU3RyaW5nTGVuIDwgUmVxQnVmZmVyTGVu KSB7DQo+ICsgICAgcmV0dXJuIFJFVFVSTl9CVUZGRVJfVE9PX1NNQUxMOw0KPiArICB9DQo+ICsN Cj4gKyAgWmVyb01lbSAoQnVmZmVyLCBzaXplb2YgKEJ1ZmZlcikpOw0KPiArDQo+ICsgIHN3aXRj aCAoRXJyb3JMZXZlbCkgew0KPiArICAgIGNhc2UgREVCVUdfV0FSTjoNCj4gKyAgICAgIFN0ckNw eVMgKEJ1ZmZlciwgTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RILCBZRUxMT1dfRVNDX1NFUSk7DQo+ ICsgICAgICBicmVhazsNCj4gKyAgICBjYXNlIERFQlVHX0VSUk9SOg0KPiArICAgICAgU3RyQ3B5 UyAoQnVmZmVyLCBNQVhfREVCVUdfTUVTU0FHRV9MRU5HVEgsIFJFRF9FU0NfU0VRKTsNCj4gKyAg ICAgIGJyZWFrOw0KPiArICB9DQo+ICsNCj4gKyAgU3RyQ2F0UyAoQnVmZmVyLCBNQVhfREVCVUdf TUVTU0FHRV9MRU5HVEgsIFN0cmluZyk7DQo+ICsNCj4gKyAgc3dpdGNoIChFcnJvckxldmVsKSB7 DQo+ICsgICAgY2FzZSBERUJVR19XQVJOOg0KPiArICAgIGNhc2UgREVCVUdfRVJST1I6DQo+ICsg ICAgICBTdHJDYXRTIChCdWZmZXIsIE1BWF9ERUJVR19NRVNTQUdFX0xFTkdUSCwgRU5EX0VTQ19T RVEpOw0KPiArICAgICAgYnJlYWs7DQo+ICsgIH0NCj4gKw0KPiArICBTdHJDcHlTIChTdHJpbmcs IFN0cmluZ0xlbiwgQnVmZmVyKTsNCj4gKw0KPiArICByZXR1cm4gUkVUVVJOX1NVQ0NFU1M7DQo+ ICt9DQo+ICsNCj4gIC8qKg0KPiAgICBQcmludHMgYSBkZWJ1ZyBtZXNzYWdlIHRvIHRoZSBkZWJ1 ZyBvdXRwdXQgZGV2aWNlIGlmIHRoZSBzcGVjaWZpZWQNCj4gICAgZXJyb3IgbGV2ZWwgaXMgZW5h YmxlZCBiYXNlIG9uIE51bGwtdGVybWluYXRlZCBmb3JtYXQgc3RyaW5nIGFuZCBhDQo+IEBAIC0x MDgsNiArMTY4LDEwIEBAIERlYnVnUHJpbnRNYXJrZXIgKA0KPiAgICAgICAgVW5pY29kZUJTUHJp bnRBc2NpaUZvcm1hdCAoQnVmZmVyLCBzaXplb2YgKEJ1ZmZlciksIEZvcm1hdCwgQmFzZUxpc3RN YXJrZXIpOw0KPiAgICAgIH0NCj4gDQo+ICsgICAgaWYgKEZlYXR1cmVQY2RHZXQgKFBjZERlYnVn QW5zaVNlcVN1cHBvcnQpKSB7DQo+ICsgICAgICBVbmljb2RlRGVidWdHZXRDb2xvclN0cmluZyAo QnVmZmVyLCBNQVhfREVCVUdfTUVTU0FHRV9MRU5HVEgsIEVycm9yTGV2ZWwpOw0KPiArICAgIH0N Cj4gKw0KPiAgICAgIC8vDQo+ICAgICAgLy8gU2VuZCB0aGUgcHJpbnQgc3RyaW5nIHRvIHRoZSBD b25zb2xlIE91dHB1dCBkZXZpY2UNCj4gICAgICAvLw0KPiAtLQ0KPiAyLjMwLjINCg0K