From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web11.536.1596002803635937748 for ; Tue, 28 Jul 2020 23:06:43 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=DUrc4mWO; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: shenglei.zhang@intel.com) IronPort-SDR: sf3u2VUBj3cri5PfCoahgTKG78HaHi2CgTABvwP/q8Zd5SdJSPgWidvdpl8sq6ps/6FF+2sirn h5V+QKoQZ1YQ== X-IronPort-AV: E=McAfee;i="6000,8403,9696"; a="131431019" X-IronPort-AV: E=Sophos;i="5.75,409,1589266800"; d="scan'208";a="131431019" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jul 2020 23:06:42 -0700 IronPort-SDR: iIAiQX1Ls7ZBUSbpaRpmCMZpwtPNATweI8WJ/DPc5y2GyipjQudT/7EaRKx/yqhUbxata2x9b7 u25OjlJVuyXQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,409,1589266800"; d="scan'208";a="330298982" Received: from orsmsx604.amr.corp.intel.com ([10.22.229.17]) by orsmga007.jf.intel.com with ESMTP; 28 Jul 2020 23:06:42 -0700 Received: from orsmsx604.amr.corp.intel.com (10.22.229.17) by ORSMSX604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 28 Jul 2020 23:06:42 -0700 Received: from ORSEDG002.ED.cps.intel.com (10.7.248.5) by orsmsx604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Tue, 28 Jul 2020 23:06:42 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.168) by edgegateway.intel.com (134.134.137.101) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 28 Jul 2020 23:06:35 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MSnEv0turn1CsXVPAQ3/XqsvsTRHz7VyR4akgHSEBstSkKhUlElIhjhafMYlV7QSsbok/tO5oBaRGakDIlhSQLE/3ul1i0WbTLR8e03pe7g731Bl2OSpWatdPhbEez5cikQMsVy1jlFN0sXzyaG4O7HxYcGaXgdyprbfRfnPYyFFOF4q9QzWkz+jh9szUNALtgvyPnb5GcpmpMgAfup7GsIUg4OPEfAeMRD2qqwF/MoM7lyHLkitAav0XZP7I3HIt92rmitrecPyoJruUoI4A5hfmJTXKJUMiJqFicBtHZQlFj3Jk+k3yvvIJqmq9mbKPGo1gHFSJVScykROVnZPdw== 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=5aRAuVboywulQCAB/2n6WcZs1gRPqHT+CLM5jBlx7i4=; b=k7kTZDkLfmju9dnSFJYeR4XPHLrcmKFmQKGCG1pHhP+BaDMwiS6JoMBvi9OFvveP1VSIngCmnYAW3JTWxZekYT0zVQlY0QEmgEU9EpEU1/KsdCWmI+bOdhUXUJd5kfWSdc/qhE4dONmKFzB+HEbyEEAr0KmZ7TydCLs3ZGaJKDdOVlz67WAZDPA4FgjhRFP1kuTBK8vuQWI0rga35GruPlktsEki84EvBAgFo8VkZxJBRdLkDRJusX1DDb360ftGiUnzk3EljYC5KazYUPokUrbc8Mtw95BE/0tRcJQ1Pa4Uvgvvqc+4pUOrRY/P2XTovBRQ+hR/hqCgoNpuycdTKQ== 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=5aRAuVboywulQCAB/2n6WcZs1gRPqHT+CLM5jBlx7i4=; b=DUrc4mWOIpI2qhe/K3KzSXXpp33TS782sdR5qwyKlM7tpTKP6iMHw5OZke7dIRltuwI9H51KC1UyuitMxNjonXkrfOP0OK5+RUQy/1DjFCgpaO/9utesYGtBI9OjoGT7FyiPllRF7DPHuOJKJfl2dr3o7F5e+BKGnsRM1Rd/Ovg= Received: from BL0PR11MB3506.namprd11.prod.outlook.com (2603:10b6:208:31::24) by MN2PR11MB4414.namprd11.prod.outlook.com (2603:10b6:208:17b::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.23; Wed, 29 Jul 2020 06:06:33 +0000 Received: from BL0PR11MB3506.namprd11.prod.outlook.com ([fe80::b805:cb86:230a:6a1]) by BL0PR11MB3506.namprd11.prod.outlook.com ([fe80::b805:cb86:230a:6a1%6]) with mapi id 15.20.3216.034; Wed, 29 Jul 2020 06:06:33 +0000 From: "Zhang, Shenglei" To: "Kinney, Michael D" , "devel@edk2.groups.io" CC: Sean Brogan , Bret Barkelew , "Gao, Liming" Subject: Re: [PATCH 01/15] .pytool/Plugin: Add a plugin LicenseCheck Thread-Topic: [PATCH 01/15] .pytool/Plugin: Add a plugin LicenseCheck Thread-Index: AQHWXnD/1LC9jrYekEa5ZlauZmtynqkdsGGAgABuRoA= Date: Wed, 29 Jul 2020 06:06:31 +0000 Message-ID: References: <20200720083709.17264-1-shenglei.zhang@intel.com> <20200720083709.17264-2-shenglei.zhang@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.102.204.38] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2f34d4a3-a821-4d4f-3f61-08d833858b94 x-ms-traffictypediagnostic: MN2PR11MB4414: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7219; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Szs9DIC3QUJfF9bZXPgzNshu+Z9udvLBqeVsLVTlm8q8TFKCYto58TeiOEYislTHdt3/UbuCRpVFjcktrCBUCJuBGUto44H10InM4m+/DqobW/VGvNZHKLQI+KA22oGSj6OPWgxH7FiPN3n4Ce1wQYqfR3OAEY6wK222JQus8a4kLxHACR6z0GHeJ6HuN4Wmg0sBbhNsxHW2+OfIX4k/e9UYya5NSm7BpNWzgnCWUfdLkHnfW+IJnCJyTe3g94vOYzjUrp4VGinG0Kvn+AztLkzlzYszWzRmBgk1ZOahLzgL+FjMN2o6jwR8nSl3Y9lvcafRG10wJ3jFBuOUnK6uKdGflgwp3aiJRBLuNk3TUdKW3BwXku5/9xuPZMrIT4J1WlL7oSexLawjtNm4Qu/kBQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR11MB3506.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(366004)(136003)(376002)(346002)(39850400004)(396003)(5660300002)(66946007)(66556008)(26005)(9686003)(64756008)(186003)(53546011)(55016002)(6506007)(83380400001)(4326008)(76116006)(107886003)(66446008)(66476007)(54906003)(33656002)(966005)(86362001)(52536014)(7696005)(45080400002)(8936002)(110136005)(316002)(2906002)(478600001)(71200400001)(8676002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: ir3VR17qzn/+jLyFEf51Btz25jpuxmIOtvJS9ZAxmKCngk5egjU2/sVhhajgyfH1alFP+yg40yP+2kCnWAqtMSGTbS127bxn+S9sV/Zg9GlmQwggpD3JQ2x6rGYv9LMFuetK+r60ws+DHA/sgiVTANDCqovxhBJ/1nijyLdME51QbyCXH7f7R1brGoBQu35M/dmOJ0k0GDwm3RrrCbnq2jscnGcxVRmXAXZhbBmaAW2hE9Gra8CvEaiUU6UDVVCqeFpinpBrRXl9z1F7R7dJlcuVxTb+pUbmZqMk6HGFzIZnun/6W9/Dqg9p26FfSh6tl15nS4rOE2KRUgin+7tSnXNkeN52eG9iiWhZxWvEXkf+9iKKhu4SK83OklWvvuKp4gOXjo2VSAw2H1A+K406iHSo0NYSDZMIyJ/n4f5CfkAeClhV6APgZ+BIpX0rzCo4QQYQHR+tAB0Whd3v9jpz0vNgRx2DGaBiIptWZ30vCVPpmUfm/UldfhDLqFY4WaZn MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BL0PR11MB3506.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2f34d4a3-a821-4d4f-3f61-08d833858b94 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jul 2020 06:06:33.6771 (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: GjsDEKYHc+i/BJ4ZUkaidxkk+u/Q+xMCcTl4OHr8X9vr6thEiHWcV22CYB9M2fbtQikeLx8IA9xdN6UMElgmk1VabSr1Q/yGUb7qrP0WJtE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4414 Return-Path: shenglei.zhang@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Rml2ZSBzb3J0cyBvZiBsaWNlbnNlIGFyZSBhY2NlcHRlZCBpbiBlZGsyKGRlc2NyaWJlZCBpbiBy ZWFkbWUpLiBUaGV5IGFyZSBCU0QgKDItY2xhdXNlKSwgQlNEICgzLWNsYXVzZSksIE1JVCwgUHl0 aG9uLTIuMCBhbmQgemxpYi4NCk1pbnVzIG5vbiBic2QgcGx1cyBwYXRlbnQgbGljZW5zZSwgdGhl eSBhcmUgQlNEICgyLWNsYXVzZSkgYW5kIEJTRCAoMy1jbGF1c2UpLg0KDQpUaGFua3MsDQpTaGVu Z2xlaQ0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEtpbm5leSwgTWlj aGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gU2VudDogV2VkbmVzZGF5LCBK dWx5IDI5LCAyMDIwIDc6MjkgQU0NCj4gVG86IFpoYW5nLCBTaGVuZ2xlaSA8c2hlbmdsZWkuemhh bmdAaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW87DQo+IEtpbm5leSwgTWljaGFlbCBE IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gQ2M6IFNlYW4gQnJvZ2FuIDxzZWFuLmJy b2dhbkBtaWNyb3NvZnQuY29tPjsgQnJldCBCYXJrZWxldw0KPiA8QnJldC5CYXJrZWxld0BtaWNy b3NvZnQuY29tPjsgR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPiBTdWJqZWN0 OiBSRTogW1BBVENIIDAxLzE1XSAucHl0b29sL1BsdWdpbjogQWRkIGEgcGx1Z2luIExpY2Vuc2VD aGVjaw0KPiANCj4gV2hlcmUgZGlkIHRoZSByZXF1aXJlbWVudCBmb3IgQlNELTMtQ2xhdXNlLVBh dGVudCBjb21lIGZyb20/DQo+IA0KPiBUaGFua3MsDQo+IA0KPiBNaWtlDQo+IA0KPiA+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogWmhhbmcsIFNoZW5nbGVpIDxzaGVuZ2xl aS56aGFuZ0BpbnRlbC5jb20+DQo+ID4gU2VudDogTW9uZGF5LCBKdWx5IDIwLCAyMDIwIDE6Mzcg QU0NCj4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiBDYzogU2VhbiBCcm9nYW4gPHNl YW4uYnJvZ2FuQG1pY3Jvc29mdC5jb20+OyBCcmV0DQo+ID4gQmFya2VsZXcgPEJyZXQuQmFya2Vs ZXdAbWljcm9zb2Z0LmNvbT47IEtpbm5leSwgTWljaGFlbA0KPiA+IEQgPG1pY2hhZWwuZC5raW5u ZXlAaW50ZWwuY29tPjsgR2FvLCBMaW1pbmcNCj4gPiA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+ ID4gU3ViamVjdDogW1BBVENIIDAxLzE1XSAucHl0b29sL1BsdWdpbjogQWRkIGEgcGx1Z2luDQo+ ID4gTGljZW5zZUNoZWNrDQo+ID4NCj4gPiBSRUY6IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3Jl Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MQ0KPiA+IFJFRjogaHR0cHM6Ly9idWd6aWxsYS50aWFu b2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0yODMzDQo+ID4gQWRkIGEgcGx1Z2luIHRvIGNoZWNr IGxpY2Vuc2UgY29uZmxpY3QgZm9yIG5ldyBhZGRlZA0KPiA+IGZpbGVzIGluIGEgcGF0Y2guIEl0 IHdpbGwgcmVwb3J0IG91dCBlcnJvcnMgd2hlbiBtZWV0aW5nDQo+ID4gZmlsZXMgd2hpY2ggYXJl IG5vdyBjb250cmlidXRlZCB1bmRlciBCU0QtMi1DbGF1c2UtDQo+ID4gUGF0ZW50DQo+ID4gb3Ig QlNELTMtQ2xhdXNlLVBhdGVudC4NCj4gPg0KPiA+IENjOiBTZWFuIEJyb2dhbiA8c2Vhbi5icm9n YW5AbWljcm9zb2Z0LmNvbT4NCj4gPiBDYzogQnJldCBCYXJrZWxldyA8QnJldC5CYXJrZWxld0Bt aWNyb3NvZnQuY29tPg0KPiA+IENjOiBNaWNoYWVsIEQgS2lubmV5IDxtaWNoYWVsLmQua2lubmV5 QGludGVsLmNvbT4NCj4gPiBDYzogTGltaW5nIEdhbyA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+ ID4gU2lnbmVkLW9mZi1ieTogU2hlbmdsZWkgWmhhbmcgPHNoZW5nbGVpLnpoYW5nQGludGVsLmNv bT4NCj4gPiAtLS0NCj4gPiAgLnB5dG9vbC9QbHVnaW4vTGljZW5zZUNoZWNrL0xpY2Vuc2VDaGVj ay5weSAgIHwgMTE4DQo+ID4gKysrKysrKysrKysrKysrKysrDQo+ID4gIC4uLi9MaWNlbnNlQ2hl Y2svTGljZW5zZUNoZWNrX3BsdWdfaW4ueWFtbCAgICB8ICAxMSArKw0KPiA+ICAucHl0b29sL1Bs dWdpbi9MaWNlbnNlQ2hlY2svUmVhZG1lLm1kICAgICAgICAgfCAgMTcgKysrDQo+ID4gIDMgZmls ZXMgY2hhbmdlZCwgMTQ2IGluc2VydGlvbnMoKykNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ ID4gLnB5dG9vbC9QbHVnaW4vTGljZW5zZUNoZWNrL0xpY2Vuc2VDaGVjay5weQ0KPiA+ICBjcmVh dGUgbW9kZSAxMDA2NDQNCj4gPiAucHl0b29sL1BsdWdpbi9MaWNlbnNlQ2hlY2svTGljZW5zZUNo ZWNrX3BsdWdfaW4ueWFtbA0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiAucHl0b29sL1Bs dWdpbi9MaWNlbnNlQ2hlY2svUmVhZG1lLm1kDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvLnB5dG9v bC9QbHVnaW4vTGljZW5zZUNoZWNrL0xpY2Vuc2VDaGVjay5weQ0KPiA+IGIvLnB5dG9vbC9QbHVn aW4vTGljZW5zZUNoZWNrL0xpY2Vuc2VDaGVjay5weQ0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi45ODk0MWRkZGE3NTgNCj4gPiAtLS0gL2Rldi9udWxs DQo+ID4gKysrIGIvLnB5dG9vbC9QbHVnaW4vTGljZW5zZUNoZWNrL0xpY2Vuc2VDaGVjay5weQ0K PiA+IEBAIC0wLDAgKzEsMTE4IEBADQo+ID4gKyMgQGZpbGUgTGljZW5zZUNoZWNrLnB5DQo+ID4g KyMNCj4gPiArIyBDb3B5cmlnaHQgKGMpIDIwMjAsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln aHRzDQo+ID4gcmVzZXJ2ZWQuPEJSPg0KPiA+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC U0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKyMjDQo+ID4gKw0KPiA+ICtpbXBvcnQgb3MNCj4gPiAr aW1wb3J0IGxvZ2dpbmcNCj4gPiAraW1wb3J0IHJlDQo+ID4gK2Zyb20gaW8gaW1wb3J0IFN0cmlu Z0lPDQo+ID4gK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0LCBUdXBsZQ0KPiA+ICtmcm9tDQo+ID4g ZWRrMnRvb2xleHQuZW52aXJvbm1lbnQucGx1Z2ludHlwZXMuY2lfYnVpbGRfcGx1Z2luDQo+ID4g aW1wb3J0IElDaUJ1aWxkUGx1Z2luDQo+ID4gK2Zyb20gZWRrMnRvb2xleHQuZW52aXJvbm1lbnQu dmFyX2RpY3QgaW1wb3J0IFZhckRpY3QNCj4gPiArZnJvbSBlZGsydG9vbGxpYi51dGlsaXR5X2Z1 bmN0aW9ucyBpbXBvcnQgUnVuQ21kDQo+ID4gKw0KPiA+ICsNCj4gPiArY2xhc3MgTGljZW5zZUNo ZWNrKElDaUJ1aWxkUGx1Z2luKToNCj4gPiArDQo+ID4gKyAgICAiIiINCj4gPiArICAgIEEgQ2lC dWlsZFBsdWdpbiB0byBjaGVjayB0aGUgbGljZW5zZSBmb3IgbmV3IGFkZGVkDQo+ID4gZmlsZXMu DQo+ID4gKw0KPiA+ICsgICAgQ29uZmlndXJhdGlvbiBvcHRpb25zOg0KPiA+ICsgICAgIkxpY2Vu c2VDaGVjayI6IHsNCj4gPiArICAgICAgICAiSWdub3JlRmlsZXMiOiBbXQ0KPiA+ICsgICAgfSwN Cj4gPiArICAgICIiIg0KPiA+ICsNCj4gPiArICAgIGxpY2Vuc2VfZm9ybWF0X3ByZWZsaXggPSAn U1BEWC1MaWNlbnNlLUlkZW50aWZpZXInDQo+ID4gKw0KPiA+ICsgICAgYnNkMl9wYXRlbnQgPSAn QlNELTItQ2xhdXNlLVBhdGVudCcNCj4gPiArDQo+ID4gKyAgICBic2QzX3BhdGVudCA9ICdCU0Qt My1DbGF1c2UtUGF0ZW50Jw0KPiA+ICsNCj4gPiArICAgIFJlYWRkZWRmaWxlZm9ybWF0ID0gcmUu Y29tcGlsZShyJ1wrXCtcKyBiXC8oLiopJykNCj4gPiArDQo+ID4gKyAgICBmaWxlX2V4dGVuc2lv bl9saXN0ID0gWyIuYyIsICIuaCIsICIuaW5mIiwgIi5kc2MiLA0KPiA+ICIuZGVjIiwgIi5weSIs ICIuYmF0IiwgIi5zaCIsICIudW5pIiwgIi55YW1sIiwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIi5mZGYiLCAiLmluYyIsICJ5bWwiLA0KPiA+ICIuYXNtIiwgIi5hc20xNiIsICIu YXNsIiwgIi52ZnIiLCAiLnMiLCAiLlMiLCAiLmFzbGMiLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAiLm5hc20iLCAiLm5hc21iIiwgIi5pZGYiLA0KPiA+ICIuVmZyIiwgIi5IIl0N Cj4gPiArDQo+ID4gKyAgICBkZWYgR2V0VGVzdE5hbWUoc2VsZiwgcGFja2FnZW5hbWU6IHN0ciwN Cj4gPiBlbnZpcm9ubWVudDogVmFyRGljdCkgLT4gdHVwbGU6DQo+ID4gKyAgICAgICAgIiIiIFBy b3ZpZGUgdGhlIHRlc3RjYXNlIG5hbWUgYW5kIGNsYXNzbmFtZSBmb3INCj4gPiB1c2UgaW4gcmVw b3J0aW5nDQo+ID4gKyAgICAgICAgICAgIHRlc3RjbGFzc25hbWU6IGEgZGVzY3JpcHRpdmUgc3Ry aW5nIGZvciB0aGUNCj4gPiB0ZXN0Y2FzZSBjYW4gaW5jbHVkZSB3aGl0ZXNwYWNlDQo+ID4gKyAg ICAgICAgICAgIGNsYXNzbmFtZTogc2hvdWxkIGJlIHBhdHRlcm5lZA0KPiA+IDxwYWNrYWdlbmFt ZT4uPHBsdWdpbj4uPG9wdGlvbmFsbHkgYW55IHVuaXF1ZSBjb25kaXRpb24+DQo+ID4gKw0KPiA+ ICsgICAgICAgICAgICBBcmdzOg0KPiA+ICsgICAgICAgICAgICAgIHBhY2thZ2VuYW1lOiBzdHJp bmcgY29udGFpbmluZyBuYW1lIG9mDQo+ID4gcGFja2FnZSB0byBidWlsZA0KPiA+ICsgICAgICAg ICAgICAgIGVudmlyb25tZW50OiBUaGUgVmFyRGljdCBmb3IgdGhlIHRlc3QgdG8NCj4gPiBydW4g aW4NCj4gPiArICAgICAgICAgICAgUmV0dXJuczoNCj4gPiArICAgICAgICAgICAgICAgIGEgdHVw bGUgY29udGFpbmluZyB0aGUgdGVzdGNhc2UgbmFtZQ0KPiA+IGFuZCB0aGUgY2xhc3NuYW1lDQo+ ID4gKyAgICAgICAgICAgICAgICAodGVzdGNhc2VuYW1lLCBjbGFzc25hbWUpDQo+ID4gKyAgICAg ICAgIiIiDQo+ID4gKyAgICAgICAgcmV0dXJuICgiQ2hlY2sgZm9yIGxpY2Vuc2UgZm9yICIgKyBw YWNrYWdlbmFtZSwNCj4gPiBwYWNrYWdlbmFtZSArICIuTGljZW5zZUNoZWNrIikNCj4gPiArDQo+ ID4gKyAgICAjIw0KPiA+ICsgICAgIyBFeHRlcm5hbCBmdW5jdGlvbiBvZiBwbHVnaW4uICBUaGlz IGZ1bmN0aW9uIGlzDQo+ID4gdXNlZCB0byBwZXJmb3JtIHRoZSB0YXNrIG9mIHRoZSBjaV9idWls ZF9wbHVnaW4gUGx1Z2luDQo+ID4gKyAgICAjDQo+ID4gKyAgICAjICAgLSBwYWNrYWdlIGlzIHRo ZSBlZGsyIHBhdGggdG8gcGFja2FnZS4gIFRoaXMNCj4gPiBtZWFucyB3b3Jrc3BhY2UvcGFja2Fn ZXBhdGggcmVsYXRpdmUuDQo+ID4gKyAgICAjICAgLSBlZGsycGF0aCBvYmplY3QgY29uZmlndXJl ZCB3aXRoIHdvcmtzcGFjZSBhbmQNCj4gPiBwYWNrYWdlcyBwYXRoDQo+ID4gKyAgICAjICAgLSBQ a2dDb25maWcgT2JqZWN0IChkaWN0KSBmb3IgdGhlIHBrZw0KPiA+ICsgICAgIyAgIC0gRW52Q29u ZmlnIE9iamVjdA0KPiA+ICsgICAgIyAgIC0gUGx1Z2luIE1hbmFnZXIgSW5zdGFuY2UNCj4gPiAr ICAgICMgICAtIFBsdWdpbiBIZWxwZXIgT2JqIEluc3RhbmNlDQo+ID4gKyAgICAjICAgLSBKdW5p dCBMb2dnZXINCj4gPiArICAgICMgICAtIG91dHB1dF9zdHJlYW0gdGhlIFN0cmluZ0lPIG91dHB1 dCBzdHJlYW0gZnJvbQ0KPiA+IHRoaXMgcGx1Z2luIHZpYSBsb2dnaW5nDQo+ID4gKyAgICBkZWYg UnVuQnVpbGRQbHVnaW4oc2VsZiwgcGFja2FnZW5hbWUsIEVkazJwYXRoT2JqLA0KPiA+IHBrZ2Nv bmZpZywgZW52aXJvbm1lbnQsIFBMTSwgUExNSGVscGVyLCB0YywNCj4gPiBvdXRwdXRfc3RyZWFt PU5vbmUpOg0KPiA+ICsgICAgICAgIHJldHVybl9idWZmZXIgPSBTdHJpbmdJTygpDQo+ID4gKyAg ICAgICAgcGFyYW1zID0gImRpZmYgLS11bmlmaWVkPTAgb3JpZ2luL21hc3RlciBIRUFEIg0KPiA+ ICsgICAgICAgIFJ1bkNtZCgiZ2l0IiwgcGFyYW1zLCBvdXRzdHJlYW09cmV0dXJuX2J1ZmZlcikN Cj4gPiArICAgICAgICBwID0gcmV0dXJuX2J1ZmZlci5nZXR2YWx1ZSgpLnN0cmlwKCkNCj4gPiAr ICAgICAgICBwYXRjaCA9IHAuc3BsaXQoIlxuIikNCj4gPiArICAgICAgICByZXR1cm5fYnVmZmVy LmNsb3NlKCkNCj4gPiArDQo+ID4gKyAgICAgICAgaWdub3JlX2ZpbGVzID0gW10NCj4gPiArICAg ICAgICBpZiAiSWdub3JlRmlsZXMiIGluIHBrZ2NvbmZpZzoNCj4gPiArICAgICAgICAgICAgaWdu b3JlX2ZpbGVzID0gcGtnY29uZmlnWyJJZ25vcmVGaWxlcyJdDQo+ID4gKw0KPiA+ICsgICAgICAg IHNlbGYub2sgPSBUcnVlDQo+ID4gKyAgICAgICAgc2VsZi5zdGFydGNoZWNrID0gRmFsc2UNCj4g PiArICAgICAgICBzZWxmLmxpY2Vuc2UgPSBUcnVlDQo+ID4gKyAgICAgICAgc2VsZi5hbGxfZmls ZV9wYXNzID0gVHJ1ZQ0KPiA+ICsgICAgICAgIGNvdW50ID0gbGVuKHBhdGNoKQ0KPiA+ICsgICAg ICAgIGxpbmVfaW5kZXggPSAwDQo+ID4gKyAgICAgICAgZm9yIGxpbmUgaW4gcGF0Y2g6DQo+ID4g KyAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnLS0tIC9kZXYvbnVsbCcpOg0KPiA+ICsg ICAgICAgICAgICAgICAgbmV4dGxpbmUgPSBwYXRjaFtsaW5lX2luZGV4ICsgMV0NCj4gPiArICAg ICAgICAgICAgICAgIGFkZGVkX2ZpbGUgPQ0KPiA+IHNlbGYuUmVhZGRlZGZpbGVmb3JtYXQuc2Vh cmNoKG5leHRsaW5lKS5ncm91cCgxKQ0KPiA+ICsgICAgICAgICAgICAgICAgYWRkZWRfZmlsZV9l eHRlbnNpb24gPQ0KPiA+IG9zLnBhdGguc3BsaXRleHQoYWRkZWRfZmlsZSlbMV0NCj4gPiArICAg ICAgICAgICAgICAgIGlmIGFkZGVkX2ZpbGVfZXh0ZW5zaW9uIGluDQo+ID4gc2VsZi5maWxlX2V4 dGVuc2lvbl9saXN0IGFuZCBwYWNrYWdlbmFtZSBpbiBhZGRlZF9maWxlOg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIGlmIChzZWxmLklzSWdub3JlRmlsZShhZGRlZF9maWxlLA0KPiA+IGlnbm9y ZV9maWxlcykpOg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX2luZGV4ID0gbGlu ZV9pbmRleCArIDENCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUNCj4gPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0Y2hlY2sgPSBUcnVlDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5saWNlbnNlID0gRmFsc2UNCj4gPiArICAgICAgICAgICAgaWYgc2Vs Zi5zdGFydGNoZWNrIGFuZA0KPiA+IHNlbGYubGljZW5zZV9mb3JtYXRfcHJlZmxpeCBpbiBsaW5l Og0KPiA+ICsgICAgICAgICAgICAgICAgaWYgc2VsZi5ic2QyX3BhdGVudCBpbiBsaW5lIG9yDQo+ ID4gc2VsZi5ic2QzX3BhdGVudCBpbiBsaW5lOg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYubGljZW5zZSA9IFRydWUNCj4gPiArICAgICAgICAgICAgaWYgbGluZV9pbmRleCArIDEgPT0g Y291bnQgb3INCj4gPiBwYXRjaFtsaW5lX2luZGV4ICsgMV0uc3RhcnRzd2l0aCgnZGlmZiAtLScp IGFuZA0KPiA+IHNlbGYuc3RhcnRjaGVjazoNCj4gPiArICAgICAgICAgICAgICAgIGlmIG5vdCBz ZWxmLmxpY2Vuc2U6DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hbGxfZmlsZV9wYXNz ID0gRmFsc2UNCj4gPiArICAgICAgICAgICAgICAgICAgICBlcnJvcl9tZXNzYWdlID0gIkludmFs aWQgbGljZW5zZQ0KPiA+IGluOiAiICsgYWRkZWRfZmlsZSArICIgSGludDogT25seSBCU0QtMi1D bGF1c2UtUGF0ZW50DQo+ID4gYW5kIiArIFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIiBCU0QtMy1DbGF1c2UtDQo+ID4gUGF0ZW50IGFyZSBhY2NlcHRlZC4iDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgbG9nZ2luZy5lcnJvcihlcnJvcl9tZXNzYWdlKQ0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGFydGNoZWNrID0gRmFsc2UNCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubGljZW5zZSA9IFRydWUNCj4gPiArICAgICAgICAgICAgbGluZV9pbmRleCA9 IGxpbmVfaW5kZXggKyAxDQo+ID4gKw0KPiA+ICsgICAgICAgIGlmIHNlbGYuYWxsX2ZpbGVfcGFz czoNCj4gPiArICAgICAgICAgICAgdGMuU2V0U3VjY2VzcygpDQo+ID4gKyAgICAgICAgICAgIHJl dHVybiAwDQo+ID4gKyAgICAgICAgZWxzZToNCj4gPiArICAgICAgICAgICAgdGMuU2V0RmFpbGVk KCJMaWNlbnNlIENoZWNrIHswfSBGYWlsZWQuDQo+ID4gIi5mb3JtYXQocGFja2FnZW5hbWUpLCAi TElDRU5TRV9DSEVDS19GQUlMRUQiKQ0KPiA+ICsgICAgICAgICAgICByZXR1cm4gMQ0KPiA+ICsN Cj4gPiArICAgIGRlZiBJc0lnbm9yZUZpbGUoc2VsZiwgZmlsZTogc3RyLCBpZ25vcmVfZmlsZXM6 DQo+ID4gTGlzdFtzdHJdKSAtPiBib29sOg0KPiA+ICsgICAgICAgIGZvciBmIGluIGlnbm9yZV9m aWxlczoNCj4gPiArICAgICAgICAgICAgaWYgZiBpbiBmaWxlOg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIFRydWUNCj4gPiArICAgICAgICByZXR1cm4gRmFsc2UNCj4gPiBkaWZmIC0tZ2l0 DQo+ID4gYS8ucHl0b29sL1BsdWdpbi9MaWNlbnNlQ2hlY2svTGljZW5zZUNoZWNrX3BsdWdfaW4u eWFtbA0KPiA+IGIvLnB5dG9vbC9QbHVnaW4vTGljZW5zZUNoZWNrL0xpY2Vuc2VDaGVja19wbHVn X2luLnlhbWwNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAw MC4uMWQwMmY2ZGE1YTY5DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKw0KPiA+IGIvLnB5dG9v bC9QbHVnaW4vTGljZW5zZUNoZWNrL0xpY2Vuc2VDaGVja19wbHVnX2luLnlhbWwNCj4gPiBAQCAt MCwwICsxLDExIEBADQo+ID4gKyMjIEBmaWxlDQo+ID4gKyMgQ2lCdWlsZFBsdWdpbiB1c2VkIHRv IGNoZWNrIGxpY2Vuc2UgaXNzdWVzIGZvciBuZXcNCj4gPiBhZGRlZCBmaWxlcw0KPiA+ICsjDQo+ ID4gKyMgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uDQo+ID4gKyMgU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArIyMNCj4gPiArew0K PiA+ICsgICJzY29wZSI6ICJjaWJ1aWxkIiwNCj4gPiArICAibmFtZSI6ICJMaWNlbnNlIENoZWNr IFRlc3QiLA0KPiA+ICsgICJtb2R1bGUiOiAiTGljZW5zZUNoZWNrIg0KPiA+ICt9DQo+ID4gZGlm ZiAtLWdpdCBhLy5weXRvb2wvUGx1Z2luL0xpY2Vuc2VDaGVjay9SZWFkbWUubWQNCj4gPiBiLy5w eXRvb2wvUGx1Z2luL0xpY2Vuc2VDaGVjay9SZWFkbWUubWQNCj4gPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uNTdkOWRiNjc2OWZhDQo+ID4gLS0tIC9kZXYv bnVsbA0KPiA+ICsrKyBiLy5weXRvb2wvUGx1Z2luL0xpY2Vuc2VDaGVjay9SZWFkbWUubWQNCj4g PiBAQCAtMCwwICsxLDE3IEBADQo+ID4gKyMgTGljZW5zZSBDaGVjayBQbHVnaW4NCj4gPiArDQo+ ID4gK1RoaXMgQ2lCdWlsZFBsdWdpbiBzY2FucyBhbGwgbmV3IGFkZGVkIGZpbGVzIGluIGENCj4g PiBwYWNrYWdlIHRvIG1ha2Ugc3VyZSBjb2RlDQo+ID4gK2lzIGNvbnRyaWJ1dGVkIHVuZGVyIEJT RC0yLUNsYXVzZS1QYXRlbnQgb3IgQlNELTMtDQo+ID4gQ2xhdXNlLVBhdGVudC4NCj4gPiArDQo+ ID4gKyMjIENvbmZpZ3VyYXRpb24NCj4gPiArDQo+ID4gK1RoZSBwbHVnaW4gY2FuIGJlIGNvbmZp Z3VyZWQgdG8gaWdub3JlIGNlcnRhaW4gZmlsZXMuDQo+ID4gKw0KPiA+ICtgYGAgeWFtbA0KPiA+ ICsiTGljZW5zZUNoZWNrIjogew0KPiA+ICsgICAgIklnbm9yZUZpbGVzIjogW10NCj4gPiArfQ0K PiA+ICtgYGANCj4gPiArIyMjIElnbm9yZUZpbGVzDQo+ID4gKw0KPiA+ICtPUFRJT05BTCBMaXN0 IG9mIGZpbGUgdG8gaWdub3JlLg0KPiA+IC0tDQo+ID4gMi4xOC4wLndpbmRvd3MuMQ0KDQo=