From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mx.groups.io with SMTP id smtpd.web10.3984.1615240630986872766 for ; Mon, 08 Mar 2021 13:57:11 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=Z13v2DoT; spf=pass (domain: intel.com, ip: 134.134.136.100, mailfrom: michael.d.kinney@intel.com) IronPort-SDR: BO84PsVjzGYuh2mKOs9kkCef4euBWqf+x4t4bCpKOuy+qilStEZNfa9UunLY/6aMqatlK+10iW 66YdeBNgjrGA== X-IronPort-AV: E=McAfee;i="6000,8403,9917"; a="252139904" X-IronPort-AV: E=Sophos;i="5.81,233,1610438400"; d="scan'208";a="252139904" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2021 13:57:08 -0800 IronPort-SDR: AeP4GjnpL9QACU8vywjAcfvKX83ThWNE+Rg3Bz3dAQxld6HG4F/y2a4Fp0WtpFYg0nWpWYEMlv F9SyAgD/W/Ag== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,233,1610438400"; d="scan'208";a="402974729" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmsmga008.fm.intel.com with ESMTP; 08 Mar 2021 13:57:08 -0800 Received: from orsmsx609.amr.corp.intel.com (10.22.229.22) 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.2106.2; Mon, 8 Mar 2021 13:57:07 -0800 Received: from orsmsx605.amr.corp.intel.com (10.22.229.18) by ORSMSX609.amr.corp.intel.com (10.22.229.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Mon, 8 Mar 2021 13:57:07 -0800 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Mon, 8 Mar 2021 13:57:07 -0800 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.109) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2106.2; Mon, 8 Mar 2021 13:55:52 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I84BJW5C5u7m5uiXENpSx50BSBVThogC0/59yFB6pJIiOns37HfsabgVV8R7L02rXTPfc36CY2HIN6kyAXL63wuGPHZEVgi/iEazymw77x3MuMIr0fibuQQCs1GhCzKt+sX49r5V0YRfRH+SAnLf0KOssVcTMxjBhkWtHrAIGUk+QgFbyv2JB7p5OkTf9RwuEyKW/U9QxR/MuwQ77KdWbtwIszXws9rQw1/V7ds1Yq9+4A2bSuhN4BCLDNGw4gjgvP8Qd6POFTilK85UPG/qRorfb69qpf48nPpqFvA6ZJDsup1cqmuHY8ioU1LG6Scs4qzh+oor3frNCqVRmjjYwg== 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=IkqX3/0UPwJy5UA8M0PxR68RPR7YAPTBkVi+gCRUWLA=; b=D5Ho28XHnRdU0J0zU11lOqFSkdFVO+9WWIOF/UducdP629aRLSSe3KmEAcd5W4qpjffIKofRVgWgfRqjYlPKwbfk1HC/CDTAptZ3lg3d4uPSgD0/rlr4vV0mM+t3/VkhnDoF/h+CgHacge5zKkh83EA1NI8nbc8MvGVrB63kMXuBk8eUx68M600e8UnBfNxKI/9c8weOWuZg0Ni1KgcNei6MWsbvxyldIHXKlsOOkURGaoBO8CadVdwbpwEaJL0uCj2i36tjSU6F9EWNmeO+ie2dY04zh6gx0lpAQjdpPhG6GAmMSGZlu5EYoFJGl/2G3r+xmJ1ikQYYHPI3OQYNvA== 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=IkqX3/0UPwJy5UA8M0PxR68RPR7YAPTBkVi+gCRUWLA=; b=Z13v2DoT9BBV4vs7Av2Hon6OsuoIU2YHj17CXjO2nCkenBU8AU1dkWeSRObxRHOS8fO7vuDIH5PehBFNVBBUHNZMdgr+qHVYKyHAoyWDEtZv1kMKTzzZ4HSLFdfJbLSouOPNJsyoWUaoI0Wbmz8MjNHBcgRKBSJpOjyoe5sbaIo= Received: from CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by MWHPR11MB1871.namprd11.prod.outlook.com (2603:10b6:300:111::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3912.17; Mon, 8 Mar 2021 21:55:51 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::ddb6:ec7f:2548:efdc]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::ddb6:ec7f:2548:efdc%4]) with mapi id 15.20.3912.027; Mon, 8 Mar 2021 21:55:51 +0000 From: "Michael D Kinney" To: Laszlo Ersek , "devel@edk2.groups.io" , "Bi, Dandan" , "Kinney, Michael D" CC: Liming Gao , "Liu, Zhiguang" Subject: Re: [edk2-devel] [RFC][patch] Add a new library class RegisterFilterLib in edk2 to filter/trace port IO/MMIO/MSR access Thread-Topic: [edk2-devel] [RFC][patch] Add a new library class RegisterFilterLib in edk2 to filter/trace port IO/MMIO/MSR access Thread-Index: AQHXE9oeYqdSL8jB9U26O1z5rWljTap6OkkAgABoIZA= Date: Mon, 8 Mar 2021 21:55:51 +0000 Message-ID: References: <20210308051532.13872-1-dandan.bi@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [24.19.191.44] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d276d6c1-9d04-48ba-4944-08d8e27cf0cd x-ms-traffictypediagnostic: MWHPR11MB1871: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6430; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: aa2cTf6ofDHwJ2rld8RvMGKgObe6BWtzqpx/JSbBr9lzPoZ46hwrhEqQV0mDjaRQZzcrvuAXi4gAVbitdPSjXn9gqcJK149yAN8IQacRP4S+ETZJx0JZG+rQTx0ptRSqizBsZW/zvtgMLE5sxodik7QOTy9msCZapwoQU/dET9tTCPbLGiz5CU9NR1rJFd/RHfM1ShPSidz6Q2wZK9BBYkSfKZtfFZoswMnsea6SMSrwsv/RVymqwgqqW5i7WE7/LUgDoCogJDrDIAN+mqQigcuoaNvok9Bli7oxT51Q2PcVN+AEGGr0RFyw5he+m29+DW4QNWhMdh4j9HlY3mqpikscxO0/OeEmIrj6JbnnKVhs9YwEz8I3ujjKwX/3cyNXkFUygnC0YxZ4JEgCHtuAzmRo9LBh445Ag83e/WIpRf3GIbfCxMpvsYPSzmWLaga3IBda9L3vMNI76uDvejf1U0wdKtHOo6rZ0cBr8ROppHU+lMJW35+nBA0s/z5auMw3Gmvs9NbXjYwzfdUE8I5as0ocYy4gqIhcgzgpOArGUuV9sRPboSBK7898xBuTqLtp1r4oe33aEo4cGTpAeIxvTeCTSMsUNkQ5ykU/Yd2sabs= 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:(376002)(396003)(39860400002)(136003)(366004)(346002)(5660300002)(76116006)(54906003)(110136005)(8936002)(7696005)(966005)(83380400001)(19627235002)(107886003)(30864003)(71200400001)(53546011)(478600001)(8676002)(6506007)(33656002)(186003)(26005)(55016002)(9686003)(316002)(64756008)(66556008)(66946007)(52536014)(66446008)(66476007)(4326008)(2906002)(86362001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?THBxNnhMbDFQNkdvTFAzOGJianJ3ZW9EVDhVays5UVV4b1RDWFA5Mmx5dXhK?= =?utf-8?B?dmNVZGUxRFdHNnNkcTNvRWFvZWFzcXJqVVZWdUE4U0o4b0h3KzRrSC96UDQx?= =?utf-8?B?R2NwdFdmY0xWSi9IczJWUEo4Vzg2YlE2K09lZWZKcU9VK05LVUJkaC8rRzRJ?= =?utf-8?B?K25jTzJtd2pXVGVLNzdKLzZvLzdjY0pndWQ0b1IyL2paUDFOalVZVzloNmFs?= =?utf-8?B?d25yZHZ6QWdoYi9xd0pTaWtDUmpVMUNOdXQ2SG1MZWlna3lPUXlpRFJMZkFT?= =?utf-8?B?YkhKcVV3NkJtRlhSSWRRUCtpTlBNTlJUWkZxeTN0U1BQZG5hY0oybDdMRW5l?= =?utf-8?B?c3IwT0JrWG9vdFB4L3VBb2N0UENTQ0RybEdSWjA3dFdNTmJ6bG1xdU9NY24w?= =?utf-8?B?Rm1ycURVWGh3WkQ3Y2Z5UE5YUDgvTVQvaTJhNTR1STFhbEp3VGFIVjdqM2Uw?= =?utf-8?B?bFFETlB3cGVvYUgxV1QyRlU4eEhMSG9hczdETlIyL0pJN0ttajJNb2VhMkdJ?= =?utf-8?B?MC83RUlPYWFSMWc2ZDRER1Z0T29OaDB6MXBjYkRvZjJNdXBBYkFCZldPcnly?= =?utf-8?B?cVBQTkRtZXF1QVRBVEdJTTlSSmRJWkVpUGpWR1VaakpMb0N5TkJDeTVINElN?= =?utf-8?B?Y0ZrOGxNUnhDQ1U1akZFWHZBVWd0TXlvL1BJQVdXdVlDVWZ4WmMwOUNNNzVt?= =?utf-8?B?dTdoVkFKdnNXNVR2VjRsOGIzNUlrNENJbU1mRlJZSmZ6WitxRlg3T1B5VHlJ?= =?utf-8?B?QzkrMHZ2My9Jd1lxdmtObG52UkUybW9tL1RPT0dnWHJDTmpBQldGc3ZXUkVC?= =?utf-8?B?Slo4SlN5LzVtU3hkcUU1bDZlS1l4ZFBRaDRmdlFEODl5SU43WlhLUTBDWHcr?= =?utf-8?B?RWIzdnN0RjNrSjdtNG1TM3A0b3crZFR1NjV2RGpNVWthSU0rd09SZERvMVlS?= =?utf-8?B?VnB2RmU4N0NzMWlCblJFUXBTbXhSU091OEIzSGFGY2VhTjc5REVZRFhEUERa?= =?utf-8?B?d0xHQ1hqMVhZMStCTWc2ZXdhalE5KzAvaWhkUEN6T1NiWmhoOGFSWmpVbkd2?= =?utf-8?B?VTN6TGQvb3hwaEZsY1RueGV1QjFqYm0rWThCekZJVkYxQmJ3TDJ5bHdsOWM5?= =?utf-8?B?ZWlvNnpHUURKdTJOalR5Sm0rMGgraXhUVU1ObkZBNkIxTC9VK2RNMlV1TnBy?= =?utf-8?B?K3ZEMFM3d2w5V1lsSTBnWHoyT3VEbWZ4cEY3aXE3YXB3TU5yQldtZHRjZWF5?= =?utf-8?B?Ynh6N25zMlIwYzBBU0gwZStNZHdqWnQwUlUxU3ZEUzRDUytuSVV4cm5jTHd5?= =?utf-8?B?VWt3MmprQ1J3OGFGcC95WW03eE5GTkNvczJITnZrWlRYT0U3ZUVQa0RKbStT?= =?utf-8?B?bHpZMi9jbmJGQmdXbEl3OFhpK2x1WWxQT2diNWg2VmpVZXJIUGg4UlFVdVNa?= =?utf-8?B?Q3JTSDNweDBEbzVEYlhCTDRabTdyRDltdnA3T2FuMSs0TEcxZGt4ZjFrd0dt?= =?utf-8?B?bVMvS0hxKzFiSm11bFRMRnZ5WXJwVUJPZHNZVjl5bUFydithNXVIbE9HczJJ?= =?utf-8?B?MkJrekhrdERIc3VRQmtpbXVpMzV5Qi9vWnZ2VEZvbnIxTlFNd3JkbTBmNWFl?= =?utf-8?B?Z2YvVnUrVGlIMVNYMEluc0dud0RRa3kzYW9waDRDZU9sdzVIYkJFeEdteVVt?= =?utf-8?B?VkZBUnZRZzlEbEN1WHFzY1d0UVByOENRS0tXWGZ1UEdqaUt0R3AvWnB4cTE4?= =?utf-8?Q?MwbXnHO31ndq7s7ujE=3D?= 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: d276d6c1-9d04-48ba-4944-08d8e27cf0cd X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Mar 2021 21:55:51.5776 (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: WHyKdD3TPLd0Oy9GPHlhPPZLYC7JZHpgQ4o22dw0tSY0BSLmQ3onePSDiyigSmIzff2qqN6EggtSEn2sRO9jQ4b4cPaO94xhNZqDwaRtCNk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB1871 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 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTGFzemxvIEVyc2VrIDxs ZXJzZWtAcmVkaGF0LmNvbT4NCj4gU2VudDogTW9uZGF5LCBNYXJjaCA4LCAyMDIxIDc6MzggQU0N Cj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBCaSwgRGFuZGFuIDxkYW5kYW4uYmlAaW50ZWwu Y29tPg0KPiBDYzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29t PjsgTGltaW5nIEdhbyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPjsgTGl1LCBaaGlndWFuZw0K PiA8emhpZ3VhbmcubGl1QGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBb UkZDXVtwYXRjaF0gQWRkIGEgbmV3IGxpYnJhcnkgY2xhc3MgUmVnaXN0ZXJGaWx0ZXJMaWIgaW4g ZWRrMiB0byBmaWx0ZXIvdHJhY2UgcG9ydCBJTy9NTUlPL01TUg0KPiBhY2Nlc3MNCj4gDQo+IE9u IDAzLzA4LzIxIDA2OjE1LCBEYW5kYW4gQmkgd3JvdGU6DQo+ID4gUkVGOiBodHRwczovL2J1Z3pp bGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTMyNDYNCj4gPg0KPiA+IDEuUHVycG9z ZToNCj4gPiAgIFNraXAgcG9ydCBJTy9NTUlPL01TUiBhY2Nlc3MgaW4gc29tZSBlbXVsYXRvaW9u IGVudi4NCj4gPiAgIFRyYWNlIHBvcnQgSU8vTU1JTy9NU1IgYWNjZXNzLg0KPiA+DQo+ID4gMi5Q bGFuIHRvIGRvIGluIEVkazI6DQo+ID4gICBGaWx0ZXIgYW5kIHRyYWNlIGluIGxvdyBsZXZlbCBB UElzIGluIEJhc2VJb0xpYkludHJpbnNpYyBhbmQgQmFzZUxpYi4NCj4gPiAgIEFkZCBhIG5ldyBs aWJyYXJ5IGNsYXNzIChSZWdpc3RlckZpbHRlckxpYikgZm9yIHRoZSBmaWx0ZXIgYW5kIHRyYWNl IGZ1bmN0aW9uYWxpdHkuDQo+ID4NCj4gPiAzLlBsYW4gdG8gZmlsdGVyIGFuZCB0cmFjZSBzY29w ZSBpbiBFZGsyIDoNCj4gPiAgIGEuIFBvcnQgSU8gUi9XOiBJQTMyIFg2NCAoT25seSBmaWx0ZXIv dHJhY2UgZm9yIElBMzIgWDY0KQ0KPiA+ICAgYi4gTU1JTyBSL1c6IElBMzIgWDY0IEVCQyBBUk0g QUFSQ0g2NCBSSVNDVjY0IChGaWx0ZXIvdHJhY2UgZm9yIHRoZSBBcmNoZXMgc3VwcG9ydGVkIGlu IEJhc2VJb0xpYkludHJpbnNpYy5pbmYpDQo+ID4gICBjLiBNU1IgUi9XOiBJQTMyIFg2NCAoT25s eSBmaWx0ZXIvdHJhY2UgZm9yIElBMzIgWDY0LCBpZiBvdGhlciBBUkNIIGhhcyBzaW1pbGFyIHVz ZSBjYXNlIGNhbiBhZGQgbmV3IEFQSXMgcGVyIG5lZWRzKQ0KPiA+DQo+ID4gNC5SZWdpc3RlckZp bHRlckxpYiBMaWJyYXJ5IENsYXNzOg0KPiA+ICAgYS4gQWRkIFJlZ2lzdGVyRmlsdGVyTGliIGxp YnJhcnkgY2xhc3MgZm9yIHRoZSBmaWx0ZXIgYW5kIHRyYWNlIG9wZXJhdGlvbi4NCj4gPiAgIGIu IEFkZCBSZWdpc3RlckZpbHRlckxpYi5oIGluIE1kZVBrZy9JbmNsdWRlL0xpYnJhcnkuDQo+ID4g ICBjLiAxMiBBUElzIHdpbGwgYmUgYWRkZWQgdG8gZmlsdGVyIGFuZCB0cmFjZSBwb3J0IElPLCBN TUlPIGFuZCBNU1IgYWNjZXNzLg0KPiA+ICAgZC4gQWRkIGEgTlVMTCBpbnN0YW5jZSBSZWdpc3Rl ckZpbHRlckxpYk51bGwgaW4gTWRlUGtnL0xpYnJhcnkuKFZlcmlmaWVkIHRoYXQgbnVsbCBpbnN0 YW5jZSB3aWxsIG5vdCBpbXBhY3QgYmluYXJ5DQo+IHNpemUuKQ0KPiA+ICAgZS4gUGxhdGZvcm0g Y2FuIGltcGxlbWVudCBpdHMgb3duIFJlZ2lzdGVyRmlsdGVyTGliIGluc3RhbmNlLg0KPiA+DQo+ ID4gICAxMiBBUElzIGNhbiBiZSBkaXZpZGVkIGludG8gMiBjYXRlZ29yaWVzOg0KPiA+ICAgNiBb QmVmb3JlXSBBUElzIHVzZSB0byBjaGVjayB3aGV0aGVyIG5lZWQgdG8gZXhlY3V0ZSBwb3J0IElP L01NSU8vTVNSIGFjY2VzcyBvciBkbyBzb21lIHRyYWNpbmcgYmVmb3JlIGFjY2Vzcy4NCj4gPiAg IDYgW0FmdGVyXSBBUElzIHVzZSB0byB0cmFjZSBhZnRlciBwb3J0IElPL01NSU8vTVNSIGFjY2Vz cy4NCj4gPiAgIFRoZSBkZXRhaWxlZCBBUEkgZGVmaW5pdGlvbnMgYXJlIGluY2x1ZGVkIGluIHRo aXMgcGF0Y2guDQo+ID4NCj4gPiAgIEZvciBwb3J0IElPIGFjY2VzczoNCj4gPiAgIEZpbHRlckJl Zm9yZUlvUmVhZA0KPiA+ICAgRmlsdGVyQWZ0ZXJJb1JlYWQNCj4gPiAgIEZpbHRlckJlZm9yZUlv V3JpdGUNCj4gPiAgIEZpbHRlckFmdGVySW9Xcml0ZQ0KPiA+DQo+ID4gICBGb3IgTU1JTyBhY2Nl c3M6DQo+ID4gICBGaWx0ZXJCZWZvcmVNbUlvUmVhZA0KPiA+ICAgRmlsdGVyQWZ0ZXJNbUlvUmVh ZA0KPiA+ICAgRmlsdGVyQmVmb3JlTW1Jb1dyaXRlDQo+ID4gICBGaWx0ZXJBZnRlck1tSW9Xcml0 ZQ0KPiA+DQo+ID4gICBGb3IgTVNSIGFjY2VzczoNCj4gPiAgIEZpbHRlckJlZm9yZU1zclJlYWQN Cj4gPiAgIEZpbHRlckFmdGVyTXNyUmVhZA0KPiA+ICAgRmlsdGVyQmVmb3JlTXNyV3JpdGUNCj4g PiAgIEZpbHRlckFmdGVyTXNyV3JpdGUNCj4gPg0KPiA+IDUuQ2hhbmdlIGFuZCBJbXBhY3QNCj4g PiAgIGEuIEFkZCB0aGUgUmVnaXN0ZXJGaWx0ZXJMaWIgbGliYXJ5IGNsYXNzIGFuZCBSZWdpc3Rl ckZpbHRlckxpYk51bGwgaW5zdGFuY2UgZmlyc3RseS4NCj4gPiAgIGIuIFVwZGF0ZSB0aGUgZHNj IGluIGVkazIgYW5kIGVkazItcGxhdGZvcm0gcmVwbyB0byBjb25zdW1lIHRoZSBSZWdpc3RlckZp bHRlckxpYk51bGwgaW5zdGFuY2UuDQo+ID4gICBjLiBVcGRhdGUgdGhlIEJhc2VMaWIgYW5kIElv TGliIHRvIGNvbnN1bWUgUmVnaXN0ZXJGaWx0ZXJMaWIuDQo+ID4NCj4gPiAgIFRoaXMgaXMgYW4g aW5jb21wYXRpYmxlIGNoYW5nZS4NCj4gPiAgIE5vIGNvZGUgY2hhbmdlIGluIEJhc2VMaWIgYW5k IElvTGliIGNvbnN1bWVycywgb25seSBuZWVkIHRvIGNoYW5nZSBkc2MgdG8gY29uc3VtZSBuZXcg RmlsdGVyTGliIGluc3RhbmNlLg0KPiA+ICAgVXBkYXRlIEJhc2VJb0xpYkludHJpbnNpYy5pbmYg YW5kIEJhc2VJb0xpYkludHJpbnNpY1Nldi5pbmYgdG8gY29uc3VtZSBSZWdpc3RlckZpbHRlckxp YiBmb3IgYWxsIHN1cHBvcnRlZCBBcmNoDQo+ID4gICBVcGRhdGUgQmFzZUxpYi5pbmYgdG8gY29u c3VtZSBSZWdpc3RlckZpbHRlckxpYiBvbmx5IGZvciBJQTMyIGFuZCBYNjQNCj4gDQo+IFNlZW1z IGxpa2UgYSBzb3VuZCBwbGFuLCBidXQgdGhlcmUgYXJlIG1vcmUgSW9MaWIgaW5zdGFuY2VzIHRo YW4gdGhlIGFib3ZlOg0KPiANCj4gTWRlUGtnL0xpYnJhcnkvQmFzZUlvTGliSW50cmluc2ljL0Jh c2VJb0xpYkludHJpbnNpYy5pbmYNCj4gTWRlUGtnL0xpYnJhcnkvQmFzZUlvTGliSW50cmluc2lj L0Jhc2VJb0xpYkludHJpbnNpY0FybVZpcnQuaW5mDQo+IE1kZVBrZy9MaWJyYXJ5L0Jhc2VJb0xp YkludHJpbnNpYy9CYXNlSW9MaWJJbnRyaW5zaWNTZXYuaW5mDQoNCkkgYWdyZWUgdGhhdCBhbGwg MyBvZiB0aGVzZSBuZWVkIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBwbGFuLg0KDQo+IE1kZVBrZy9M aWJyYXJ5L0R4ZUlvTGliQ3B1SW8yL0R4ZUlvTGliQ3B1SW8yLmluZg0KPiBNZGVQa2cvTGlicmFy eS9QZWlJb0xpYkNwdUlvL1BlaUlvTGliQ3B1SW8uaW5mDQo+IE1kZVBrZy9MaWJyYXJ5L1NtbUlv TGliU21tQ3B1SW8yL1NtbUlvTGliU21tQ3B1SW8yLmluZg0KDQpUaGUgSW9MaWIgaW5zdGFuY2Vz IGFsbCBwZXJmb3JtIHRoZWlyIEkvTyBvcGVyYXRpb24gYnkgY2FsbGluZw0KYSBkeW5hbWljIFBQ SS9Qcm90b2NvbCBzZXJ2aWNlcy4gIEkgd291bGQgcmVjb21tZW5kIHRoYXQgd2UgZG8gbm90IHVw ZGF0ZQ0KdGhlc2UgaW5zdGFuY2VzLCBhbmQgaW5zdGVhZCBvbmx5IGFwcGx5IHRoZSBSZWdpc3Rl ckZpbHRlckxpYiB0byANCklvTGliIGluc3RhbmNlcyB0aGF0IHBlcmZvcm0gaGUgZGlyZWN0IGFj Y2VzcyB0byB0aGUgaGFyZHdhcmUuDQpBbnkgSW9MaWIgaW5zdGFuY2VzIHRoYXQgYWNjZXNzIHRo ZSBoYXJkd2FyZSB0aHJvdWdoIGEgUFBJL1Byb3RvY29sDQpzaG91bGQgbm90IGJlIHVwZGF0ZWQu DQoNCldlIGhhdmUgYSBmZXcgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBDUEkgSS9PIFBQSS9Qcm90 b2NvbCB0aGF0DQp1c2UgdGhlIEJhc2VJb0xpYkludHJpbnNpY3MsIHNvIHRob3NlIHdvdWxkIGFj dHVhbGx5IGJlIGNvdmVyZWQNCmJ5IHRoZSBmaXJzdCBzZXQgb2YgbGliIGluc3RhbmNlcy4gIElm IGEgcGxhdGZvcm0gZGVjaWRlcyB0byANCmltcGxlbWVudCBhIG5ldyB2ZXJzaW9uIG9mIHRoZSBD UFUgSS9PIFBQSS9Qcm90b2NvbCB0aGF0IGRvZXMgbm90DQp1c2Ugb25lIG9mIHRoZSBCYXNlSW9M aWJJbnN0cmluc2ljIGluc3RhbmNlcywgdGhlbiB0aGV5IHdvdWxkDQpoYXZlIHRoZSBvcHRpb24g b2YgdXNpbmcgdGhlIFJlZ2lzdGVyRmlsdGVyTGliIGluIHRoYXQgbmV3DQppbXBsZW1lbnRhdGlv biBvZiB0aGUgQ1BJIEkvTyBQUEkvUHJvdG9jb2wuDQoNCj4gDQo+IFRoYW5rcw0KPiBMYXN6bG8N Cj4gDQo+ID4NCj4gPiBUaGlzIHRvcGljIGhhcyBiZWVuIHJldmlld2VkIGluIFRpYW5vIERlc2ln biBtZWV0aW5nIG9mIDIwMjEvMDMwNQ0KPiA+IFJlZ2lzdGVyRmlsdGVyTGliIGhlYWRlciBmaWxl IGFuZCBkZXNnaW4gZm9pbCBjYW4gYmUgZm91bmQgaW46DQo+ID4gaHR0cHM6Ly9lZGsyLmdyb3Vw cy5pby9nL2RldmVsL2ZpbGVzL0Rlc2lnbnMvMjAyMS8wMzA1DQo+ID4NCj4gPg0KPiA+IENjOiBN aWNoYWVsIEQgS2lubmV5IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiBDYzogTGlt aW5nIEdhbyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPg0KPiA+IENjOiBaaGlndWFuZyBMaXUg PHpoaWd1YW5nLmxpdUBpbnRlbC5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogRGFuZGFuIEJpIDxk YW5kYW4uYmlAaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICBNZGVQa2cvSW5jbHVkZS9MaWJyYXJ5 L1JlZ2lzdGVyRmlsdGVyTGliLmggfCAyMjQgKysrKysrKysrKysrKysrKysrKysrDQo+ID4gIDEg ZmlsZSBjaGFuZ2VkLCAyMjQgaW5zZXJ0aW9ucygrKQ0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQg TWRlUGtnL0luY2x1ZGUvTGlicmFyeS9SZWdpc3RlckZpbHRlckxpYi5oDQo+ID4NCj4gPiBkaWZm IC0tZ2l0IGEvTWRlUGtnL0luY2x1ZGUvTGlicmFyeS9SZWdpc3RlckZpbHRlckxpYi5oIGIvTWRl UGtnL0luY2x1ZGUvTGlicmFyeS9SZWdpc3RlckZpbHRlckxpYi5oDQo+ID4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi5iZTExMTMwNGJhDQo+ID4gLS0tIC9kZXYv bnVsbA0KPiA+ICsrKyBiL01kZVBrZy9JbmNsdWRlL0xpYnJhcnkvUmVnaXN0ZXJGaWx0ZXJMaWIu aA0KPiA+IEBAIC0wLDAgKzEsMjI0IEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIFB1YmxpYyBp bmNsdWRlIGZpbGUgZm9yIHRoZSBQb3J0IElPL01NSU8vTVNSIGZpbHRlciBMaWJyYXJ5DQo+ID4g Kw0KPiA+ICtDb3B5cmlnaHQgKGMpIDIwMjEsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLjxCUj4NCj4gPiArU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVz ZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2lmbmRlZiBfX1JFR0lTVEVS X0ZJTFRFUl9MSUJfSF9fDQo+ID4gKyNkZWZpbmUgX19SRUdJU1RFUl9GSUxURVJfTElCX0hfXw0K PiA+ICsNCj4gPiArdHlwZWRlZiBlbnVtIHsNCj4gPiArICBGaWx0ZXJXaWR0aDgsDQo+ID4gKyAg RmlsdGVyV2lkdGgxNiwNCj4gPiArICBGaWx0ZXJXaWR0aDMyLA0KPiA+ICsgIEZpbHRlcldpZHRo NjQNCj4gPiArfSBGSUxURVJfSU9fV0lEVEg7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBGaWx0 ZXIgSU8gcmVhZCBvcGVyYXRpb24gYmVmb3JlIHJlYWQgSU8gcG9ydC4NCj4gPiArICBJdCBpcyB1 c2VkIHRvIGZpbHRlciBJTyByZWFkIG9wZXJhdGlvbi4NCj4gPiArDQo+ID4gKyAgSXQgd2lsbCBy ZXR1cm4gdGhlIGZsYWcgdG8gZGVjaWRlIHdoZXRoZXIgcmVxdWlyZSByZWFkIHJlYWwgSU8gcG9y dC4NCj4gPiArICBJdCBjYW4gYmUgdXNlZCBmb3IgZW11bGF0aW9uIGVudmlyb25tZW50Lg0KPiA+ ICsNCj4gPiArICBAcGFyYW1baW5dICAgICAgIFdpZHRoICAgIFNpZ25pZmllcyB0aGUgd2lkdGgg b2YgdGhlIEkvTyBvcGVyYXRpb24uDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgICBBZGRyZXNzICBU aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBJL08gb3BlcmF0aW9uLg0KPiA+ICsgIEBwYXJhbVtpbl0g ICAgICAgQnVmZmVyICAgVGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciB0byBzdG9yZSB0aGUgcmVzdWx0 cy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtCT09MRUFODQo+ID4gK0VGSUFQSQ0KPiA+ICtGaWx0 ZXJCZWZvcmVJb1JlYWQgKA0KPiA+ICsgIElOIEZJTFRFUl9JT19XSURUSCAgIFdpZHRoLA0KPiA+ ICsgIElOIFVJTlROICAgICAgICAgICAgIEFkZHJlc3MsDQo+ID4gKyAgSU4gT1VUIFZPSUQgICAg ICAgICAgKkJ1ZmZlcg0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBUcmFjZSBJ TyByZWFkIG9wZXJhdGlvbiBhZnRlciByZWFkIElPIHBvcnQuDQo+ID4gKyAgSXQgaXMgdXNlZCB0 byB0cmFjZSBJTyBvcGVyYXRpb24uDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICAgV2lk dGggICAgU2lnbmlmaWVzIHRoZSB3aWR0aCBvZiB0aGUgSS9PIG9wZXJhdGlvbi4NCj4gPiArICBA cGFyYW1baW5dICAgICAgIEFkZHJlc3MgIFRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIEkvTyBvcGVy YXRpb24uDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgICBCdWZmZXIgICBUaGUgZGVzdGluYXRpb24g YnVmZmVyIHRvIHN0b3JlIHRoZSByZXN1bHRzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQN Cj4gPiArRUZJQVBJDQo+ID4gK0ZpbHRlckFmdGVySW9SZWFkICgNCj4gPiArICBJTiBGSUxURVJf SU9fV0lEVEggIFdpZHRoLA0KPiA+ICsgIElOIFVJTlROICAgICAgICAgICAgQWRkcmVzcywNCj4g PiArICBJTiBWT0lEICAgICAgICAgICAgICpCdWZmZXINCj4gPiArICApOw0KPiA+ICsvKioNCj4g PiArICBGaWx0ZXIgSU8gV3JpdGUgb3BlcmF0aW9uIGJlZm9yZSB3aXJ0ZSBJTyBwb3J0Lg0KPiA+ ICsgIEl0IGlzIHVzZWQgdG8gZmlsdGVyIElPIG9wZXJhdGlvbi4NCj4gPiArDQo+ID4gKyAgSXQg d2lsbCByZXR1cm4gdGhlIGZsYWcgdG8gZGVjaWRlIHdoZXRoZXIgcmVxdWlyZSByZWFkIHdyaXRl IElPIHBvcnQuDQo+ID4gKyAgSXQgY2FuIGJlIHVzZWQgZm9yIGVtdWxhdGlvbiBlbnZpcm9ubWVu dC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgICBXaWR0aCAgICBTaWduaWZpZXMgdGhl IHdpZHRoIG9mIHRoZSBJL08gb3BlcmF0aW9uLg0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICAgQWRk cmVzcyAgVGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgSS9PIG9wZXJhdGlvbi4NCj4gPiArICBAcGFy YW1baW5dICAgICAgIEJ1ZmZlciAgIFRoZSBzb3VyY2UgYnVmZmVyIGZyb20gd2hpY2ggdG8gQmVm b3JlV3JpdGUgZGF0YS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtCT09MRUFODQo+ID4gK0VGSUFQ SQ0KPiA+ICtGaWx0ZXJCZWZvcmVJb1dyaXRlICgNCj4gPiArICBJTiBGSUxURVJfSU9fV0lEVEgg IFdpZHRoLA0KPiA+ICsgIElOIFVJTlROICAgICAgICAgICAgQWRkcmVzcywNCj4gPiArICBJTiBW T0lEICAgICAgICAgICAgICpCdWZmZXINCj4gPiArICApOw0KPiA+ICsNCj4gPiArICAvKioNCj4g PiArICBUcmFjZSBJTyBXcml0ZSBvcGVyYXRpb24gYWZ0ZXIgd2lydGUgSU8gcG9ydC4NCj4gPiAr ICBJdCBpcyB1c2VkIHRvIHRyYWNlIElPIG9wZXJhdGlvbi4NCj4gPiArDQo+ID4gKyAgQHBhcmFt W2luXSAgICAgICBXaWR0aCAgICBTaWduaWZpZXMgdGhlIHdpZHRoIG9mIHRoZSBJL08gb3BlcmF0 aW9uLg0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICAgQWRkcmVzcyAgVGhlIGJhc2UgYWRkcmVzcyBv ZiB0aGUgSS9PIG9wZXJhdGlvbi4NCj4gPiArICBAcGFyYW1baW5dICAgICAgIEJ1ZmZlciAgIFRo ZSBzb3VyY2UgYnVmZmVyIGZyb20gd2hpY2ggdG8gQmVmb3JlV3JpdGUgZGF0YS4NCj4gPiArDQo+ ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtGaWx0ZXJBZnRlcklvV3JpdGUg KA0KPiA+ICsgIElOIEZJTFRFUl9JT19XSURUSCAgV2lkdGgsDQo+ID4gKyAgSU4gVUlOVE4gICAg ICAgICAgICBBZGRyZXNzLA0KPiA+ICsgIElOIFZPSUQgICAgICAgICAgICAgKkJ1ZmZlcg0KPiA+ ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBGaWx0ZXIgbWVtb3J5IElPIGJlZm9yZSBS ZWFkIG9wZXJhdGlvbi4NCj4gPiArDQo+ID4gKyAgSXQgd2lsbCByZXR1cm4gdGhlIGZsYWcgdG8g ZGVjaWRlIHdoZXRoZXIgcmVxdWlyZSByZWFkIHJlYWwgTU1JTy4NCj4gPiArICBJdCBjYW4gYmUg dXNlZCBmb3IgZW11bGF0aW9uIGVudmlyb25tZW50Lg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5d ICAgICAgIFdpZHRoICAgIFNpZ25pZmllcyB0aGUgd2lkdGggb2YgdGhlIG1lbW9yeSBJL08gb3Bl cmF0aW9uLg0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICAgQWRkcmVzcyAgVGhlIGJhc2UgYWRkcmVz cyBvZiB0aGUgbWVtb3J5IEkvTyBvcGVyYXRpb24uDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgICBC dWZmZXIgICBUaGUgZGVzdGluYXRpb24gYnVmZmVyIHRvIHN0b3JlIHRoZSByZXN1bHRzLg0KPiA+ ICsNCj4gPiArKiovDQo+ID4gK0JPT0xFQU4NCj4gPiArRUZJQVBJDQo+ID4gK0ZpbHRlckJlZm9y ZU1tSW9SZWFkICgNCj4gPiArICBJTiBGSUxURVJfSU9fV0lEVEggIFdpZHRoLA0KPiA+ICsgIElO IFVJTlROICAgICAgICAgICAgQWRkcmVzcywNCj4gPiArICBJTiBPVVQgVk9JRCAgICAgICAgICpC dWZmZXINCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgVHJhY2VyIG1lbW9yeSBJ TyBhZnRlciByZWFkIG9wZXJhdGlvbg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICAgICAgIFdp ZHRoICAgIFNpZ25pZmllcyB0aGUgd2lkdGggb2YgdGhlIG1lbW9yeSBJL08gb3BlcmF0aW9uLg0K PiA+ICsgIEBwYXJhbVtpbl0gICAgICAgQWRkcmVzcyAgVGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUg bWVtb3J5IEkvTyBvcGVyYXRpb24uDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgICBCdWZmZXIgICBU aGUgZGVzdGluYXRpb24gYnVmZmVyIHRvIHN0b3JlIHRoZSByZXN1bHRzLg0KPiA+ICsNCj4gPiAr KiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK0ZpbHRlckFmdGVyTW1Jb1JlYWQgKA0K PiA+ICsgIElOIEZJTFRFUl9JT19XSURUSCAgV2lkdGgsDQo+ID4gKyAgSU4gVUlOVE4gICAgICAg ICAgICBBZGRyZXNzLA0KPiA+ICsgIElOIFZPSUQgICAgICAgICAgICAgKkJ1ZmZlcg0KPiA+ICsg ICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBGaWx0ZXIgbWVtb3J5IElPIGJlZm9yZSB3cml0 ZSBvcGVyYXRpb24NCj4gPiArDQo+ID4gKyAgSXQgd2lsbCByZXR1cm4gdGhlIGZsYWcgdG8gZGVj aWRlIHdoZXRoZXIgcmVxdWlyZSB3aXJ0ZSByZWFsIE1NSU8uDQo+ID4gKyAgSXQgY2FuIGJlIHVz ZWQgZm9yIGVtdWxhdGlvbiBlbnZpcm9ubWVudC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAg ICAgICBXaWR0aCAgICBTaWduaWZpZXMgdGhlIHdpZHRoIG9mIHRoZSBtZW1vcnkgSS9PIG9wZXJh dGlvbi4NCj4gPiArICBAcGFyYW1baW5dICAgICAgIEFkZHJlc3MgIFRoZSBiYXNlIGFkZHJlc3Mg b2YgdGhlIG1lbW9yeSBJL08gb3BlcmF0aW9uLg0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICAgQnVm ZmVyICAgVGhlIHNvdXJjZSBidWZmZXIgZnJvbSB3aGljaCB0byBCZWZvcmVXcml0ZSBkYXRhLg0K PiA+ICsNCj4gPiArKiovDQo+ID4gK0JPT0xFQU4NCj4gPiArRUZJQVBJDQo+ID4gK0ZpbHRlckJl Zm9yZU1tSW9Xcml0ZSAoDQo+ID4gKyAgSU4gRklMVEVSX0lPX1dJRFRIICBXaWR0aCwNCj4gPiAr ICBJTiBVSU5UTiAgICAgICAgICAgIEFkZHJlc3MsDQo+ID4gKyAgSU4gVk9JRCAgICAgICAgICAg ICAqQnVmZmVyDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFRyYWNlciBtZW1v cnkgSU8gYWZ0ZXIgd3JpdGUgb3BlcmF0aW9uDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gICAg ICAgV2lkdGggICAgU2lnbmlmaWVzIHRoZSB3aWR0aCBvZiB0aGUgbWVtb3J5IEkvTyBvcGVyYXRp b24uDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgICBBZGRyZXNzICBUaGUgYmFzZSBhZGRyZXNzIG9m IHRoZSBtZW1vcnkgSS9PIG9wZXJhdGlvbi4NCj4gPiArICBAcGFyYW1baW5dICAgICAgIEJ1ZmZl ciAgIFRoZSBzb3VyY2UgYnVmZmVyIGZyb20gd2hpY2ggdG8gQmVmb3JlV3JpdGUgZGF0YS4NCj4g PiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtGaWx0ZXJBZnRlck1t SW9Xcml0ZSAoDQo+ID4gKyAgSU4gRklMVEVSX0lPX1dJRFRIICBXaWR0aCwNCj4gPiArICBJTiBV SU5UTiAgICAgICAgICAgIEFkZHJlc3MsDQo+ID4gKyAgSU4gVk9JRCAgICAgICAgICAgICAqQnVm ZmVyDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEZpbHRlciBNU1IgYmVmb3Jl IHJlYWQgb3BlcmF0aW9uLg0KPiA+ICsNCj4gPiArICBJdCB3aWxsIHJldHVybiB0aGUgZmxhZyB0 byBkZWNpZGUgd2hldGhlciByZXF1aXJlIHJlYWQgcmVhbCBNU1IuDQo+ID4gKyAgSXQgY2FuIGJl IHVzZWQgZm9yIGVtdWxhdGlvbiBlbnZpcm9ubWVudC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBJ bmRleCAgICAgICAgICAgICAgICAgICAgIFRoZSA4LWJpdCBNYWNoaW5lIFNwZWNpZmljIFJlZ2lz dGVyIGluZGV4IHRvIEJlZm9yZVdyaXRlLg0KPiA+ICsgIEBwYXJhbSAgVmFsdWUgICAgICAgICAg ICAgICAgICAgICBUaGUgNjQtYml0IHZhbHVlIHRvIEJlZm9yZVJlYWQgZnJvbSB0aGUgTWFjaGlu ZSBTcGVjaWZpYyBSZWdpc3Rlci4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtCT09MRUFODQo+ID4g K0VGSUFQSQ0KPiA+ICtGaWx0ZXJCZWZvcmVNc3JSZWFkICgNCj4gPiArICBJTiBVSU5UMzIgICAg ICAgICAgIEluZGV4LA0KPiA+ICsgIElOIE9VVCBVSU5UNjQgICAgICAgKlZhbHVlDQo+ID4gKyAg KTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFRyYWNlIE1TUiBhZnRlciByZWFkIG9wZXJhdGlv bg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIEluZGV4ICAgICAgICAgICAgICAgICAgICAgVGhlIDgt Yml0IE1hY2hpbmUgU3BlY2lmaWMgUmVnaXN0ZXIgaW5kZXggdG8gQmVmb3JlV3JpdGUuDQo+ID4g KyAgQHBhcmFtICBWYWx1ZSAgICAgICAgICAgICAgICAgICAgIFRoZSA2NC1iaXQgdmFsdWUgdG8g QmVmb3JlUmVhZCBmcm9tIHRoZSBNYWNoaW5lIFNwZWNpZmljIFJlZ2lzdGVyLg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK0ZpbHRlckFmdGVyTXNyUmVhZCAo DQo+ID4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgSW5kZXgsDQo+ID4gKyAgSU4gVUlOVDY0ICAg ICAgICAgICAgKlZhbHVlDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEZpbHRl ciBNU1IgYmVmb3JlIHdyaXRlIG9wZXJhdGlvbg0KPiA+ICsNCj4gPiArICBJdCB3aWxsIHJldHVy biB0aGUgZmxhZyB0byBkZWNpZGUgd2hldGhlciByZXF1aXJlIHdyaXRlIHJlYWwgTVNSLg0KPiA+ ICsgIEl0IGNhbiBiZSB1c2VkIGZvciBlbXVsYXRpb24gZW52aXJvbm1lbnQuDQo+ID4gKw0KPiA+ ICsgIEBwYXJhbSAgSW5kZXggICAgICAgICAgICAgICAgICAgICBUaGUgOC1iaXQgTWFjaGluZSBT cGVjaWZpYyBSZWdpc3RlciBpbmRleCB0byBCZWZvcmVXcml0ZS4NCj4gPiArICBAcGFyYW0gIFZh bHVlICAgICAgICAgICAgICAgICAgICAgVGhlIDY0LWJpdCB2YWx1ZSB0byBCZWZvcmVXcml0ZSB0 byB0aGUgTWFjaGluZSBTcGVjaWZpYyBSZWdpc3Rlci4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtC T09MRUFODQo+ID4gK0VGSUFQSQ0KPiA+ICtGaWx0ZXJCZWZvcmVNc3JXcml0ZSAoDQo+ID4gKyAg SU4gVUlOVDMyICAgICAgICAgICBJbmRleCwNCj4gPiArICBJTiBVSU5UNjQgICAgICAgICAgICpW YWx1ZQ0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBUcmFjZSBNU1IgYWZ0ZXIg d3JpdGUgb3BlcmF0aW9uDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgSW5kZXggICAgICAgICAgICAg ICAgICAgICBUaGUgOC1iaXQgTWFjaGluZSBTcGVjaWZpYyBSZWdpc3RlciBpbmRleCB0byBCZWZv cmVXcml0ZS4NCj4gPiArICBAcGFyYW0gIFZhbHVlICAgICAgICAgICAgICAgICAgICAgVGhlIDY0 LWJpdCB2YWx1ZSB0byBCZWZvcmVXcml0ZSB0byB0aGUgTWFjaGluZSBTcGVjaWZpYyBSZWdpc3Rl ci4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtGaWx0ZXJB ZnRlck1zcldyaXRlICgNCj4gPiArICBJTiBVSU5UMzIgICAgICAgICAgICBJbmRleCwNCj4gPiAr ICBJTiBVSU5UNjQgICAgICAgICAgICAqVmFsdWUNCj4gPiArICApOw0KPiA+ICsNCj4gPiArI2Vu ZGlmIC8vIF9fUkVHSVNURVJfRklMVEVSX0xJQl9IX18NCj4gPg0KDQo=