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.web09.29862.1607917633862561929 for ; Sun, 13 Dec 2020 19:47:14 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=QL6yrs58; spf=pass (domain: intel.com, ip: 192.55.52.120, mailfrom: ray.ni@intel.com) IronPort-SDR: DrmBOQ4hbeQr5MS3N4QZ8whZwW+JNWsgR1g/iqJ5Ju8lxroqebBdUpzlWqIU6W80st9qic5GzS MiwdzCm/RmXw== X-IronPort-AV: E=McAfee;i="6000,8403,9834"; a="172085513" X-IronPort-AV: E=Sophos;i="5.78,417,1599548400"; d="scan'208";a="172085513" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2020 19:47:10 -0800 IronPort-SDR: eQzcRKmSJW+fuBpbtxnQj313Tvkfl1rsFKvUWCsdw58UU4WIagW0UFrbSzLmAkat3JujTg5wsE n53Z90ZBbdYA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.78,417,1599548400"; d="scan'208";a="367028583" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga008.jf.intel.com with ESMTP; 13 Dec 2020 19:47:10 -0800 Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) 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.1713.5; Sun, 13 Dec 2020 19:47:09 -0800 Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) by fmsmsx607.amr.corp.intel.com (10.18.126.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Sun, 13 Dec 2020 19:47:09 -0800 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx607.amr.corp.intel.com (10.18.126.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Sun, 13 Dec 2020 19:47:08 -0800 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.169) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Sun, 13 Dec 2020 19:47:06 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h1+eXeLny2C3I/a7O7jmjX+oR2RaCGaahE8EWScG+3AR+AbB1v7bGSxYUpv1tsfhB77BlLCQEysw4ukV5qnF4YsEzvCHx29r5kdh9JZJzpKH1QZyu/tkwVwhKGwgUumVaFtXak2qOjHEP5IiOq3Ch6RE5aGRXH+7kGlkDn6kSroHRur+wpMEvu1iJb1PBZq1Of3jtllFJJ41zONbgi5SpF3kTds1UjH2rurilmjwlutM1Y+Kfj8CmUjB5InqSV2g7eJb5xoNPmHe9ukxd2RoV0dQMYJ/2nEM9Ny5Ce4FJzrM7DhHePC0xc79qirRVa38V8xvh31lB7o+WMCzBJX1Sg== 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=i/hebFnNdbgAQWSrHza5KRC+qZdHOve4HDit/tZWYGc=; b=ToHB/4kImP2HKcGLifYfEM5NUCKnGiXOr6dsYhunKnXgvOupJdtznt41vyQqWejbY1tvdxOYJdCqV/8DxyAsksASquOpAiHqi45AHSRg4c+qZVczImhIhjBCBA+r6j1XK3hNPHCUqpexzb9cbrAn3PDLnVOdX+3PDZo+7h1gYq0Fgs7hM9O6PxHHGETMtD60sMg0j2hFapBZvuWpxMvuaJrvlBA+FgHby+CV9ZBnLvEocP/5dBxdIYBJR8bvplfu+85xcIup1ohxa06Dt8NOe9TQoslU6pelwMrryqH6wvJB3/Vf4Jg8RP1A+3kFe4yjxtI32mx8dXGxwURXdYN2Ow== 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=i/hebFnNdbgAQWSrHza5KRC+qZdHOve4HDit/tZWYGc=; b=QL6yrs58Hr12v401R3yRT/HpoRaOoVOAGHKDNcN7PuATn/BAI/JgjUzi3oLC0e67xj+TGn3JKCpjLMbwger/kwx3OkfqB8tIk9mbn/uBw0Bi2s4Q2t/nbUwJzI5XACxgevd3/HHoLV7BOYF+sHEQDEFpCvRzc98IW5gmjIbrSwQ= Received: from CO1PR11MB4930.namprd11.prod.outlook.com (2603:10b6:303:9b::11) by MW3PR11MB4700.namprd11.prod.outlook.com (2603:10b6:303:2d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3654.17; Mon, 14 Dec 2020 03:47:05 +0000 Received: from CO1PR11MB4930.namprd11.prod.outlook.com ([fe80::d18:1234:c1d6:5936]) by CO1PR11MB4930.namprd11.prod.outlook.com ([fe80::d18:1234:c1d6:5936%7]) with mapi id 15.20.3654.025; Mon, 14 Dec 2020 03:47:05 +0000 From: "Ni, Ray" To: "Huang, Jenny" , "Sheng, W" , "Yao, Jiewen" , "devel@edk2.groups.io" CC: "Chaganty, Rangasai V" , "Feng, Roger" Subject: Re: [PATCH v5] IntelSiliconPkg/VTd: Add iommu 5 level paging support Thread-Topic: [PATCH v5] IntelSiliconPkg/VTd: Add iommu 5 level paging support Thread-Index: AdbIV1Dp48imUm//Twe8QHBSqTQuoABlJhSAAffmvtA= Date: Mon, 14 Dec 2020 03:47:05 +0000 Message-ID: References: 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.198.147.194] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: f478bdfb-525a-44ae-6d1a-08d89fe2ec71 x-ms-traffictypediagnostic: MW3PR11MB4700: 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: SKQZOJV6+KjKrMocLB3wl5PtBVbjyeS1sTznvstWTnVPVS4GtXZd8T6kKbQ8p77iasETHFuL8as9xu+Az7+Jt8dC/5fxd5GYu04ahrrix/KF5A3sICwKgOIeHhGGXzlTVuMmxjC6YYfKCvnf7hHaYf5PHhv6oJmHkKruyz6SRZEOaKNoQJNtBUVvPNhKAJxcvLhO07wZVpWl3FXNW0XZtbYCIfXIVoXHgzj8lGDmHbTm/m7BPKyP6J5rYlWTI629p/w1dD/KAteEH0KAofZqgzKIAINCL7SJJpRmexogqbRmdZBD4zZdpDP06/VWMrluVGu5AkJEnrqwsFslIA+OMjhTDwr0reIgX5/VJQxTtrLliiN6YCWsmGaI9ezbPSmRFSWDClOYZhGLTZ9ZKx6yFg== 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:(4636009)(136003)(366004)(346002)(376002)(30864003)(55016002)(7696005)(186003)(26005)(6506007)(4326008)(110136005)(9686003)(54906003)(966005)(52536014)(107886003)(508600001)(8676002)(8936002)(76116006)(66556008)(33656002)(66476007)(64756008)(86362001)(2906002)(66946007)(71200400001)(53546011)(5660300002)(83380400001)(66446008)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?gb2312?B?U0hMQzExZTVFd2VTRU90N083WXJnOU9Zc3VCMVNhT0svZmdoenBHdEtnMzR4?= =?gb2312?B?VWQxVFpnLzE4M2twdllsbzBFdjBFaTV1aFBOU2ROWXFETU92emo3ZS9xNEZD?= =?gb2312?B?WGswRnRYZWRQbnhIMjBzMFlSZmZRYXFOck1TUzhrVlhSS0JoWm5ERjBkcGFY?= =?gb2312?B?LzNKU3lIYlEwMjlZTkVVSlhjellRMDJjb253a3NtOG1FalNybWtZMmx3dEMw?= =?gb2312?B?dFVaSzVJT3J4RVJOajlWTnpBVkVzS2xubUdOcW9ZaElpVDBja0ZJbXlDVEhM?= =?gb2312?B?dEdKUXRJRllkYkhyQTc5UkNwcjJJckFpbWtDa3N2TzFZSFpTUFlPMlUrM2Y4?= =?gb2312?B?cTVKN3hPMFQyZUdCc1RBd0V1S0FzK2lBYjhOMW9hU20vMkwxU1ljSk8rYytQ?= =?gb2312?B?WHVod2FWdnc1N1libUtwaFdYWGpTdWFuYU1UYzRWTTJ6QkRQZ2RDWU5TVmtk?= =?gb2312?B?RFF6bTFuYW5iZk0zUnpFZ1pnWG5NWUo0Ty9NUUV3MzRtUWI3YTJDTDJQeXE5?= =?gb2312?B?Wm5kL3Y2c2RlbUFSbU0ySUNQU1BhTUdGWHVtSzFMYzNxTVI4eG4rUjQrSUo4?= =?gb2312?B?MUpXUE9hNFFoUkRsbnluZ3pjeU9uRjN0bTM0ZlNnc3NMR0dTZlZ3eitSU3c5?= =?gb2312?B?eTZXb2pCZU4zaEVQeW5DUHdRd1owSlVSMjNwajlNSDBPcnNPaGRpd1ZmMkt0?= =?gb2312?B?UDI2Y0h0dk5LMU1yTFBwTlE5OW1lU0Y1Q0RaODRwQVNCWDZrNlRzRkxLYjJ5?= =?gb2312?B?OE85SXpSMXZYS3d1cWpWcnZSWmVrcm84QVpVSUVReEU1TURKZXhIVGhncDh5?= =?gb2312?B?ellJUHRGQ0ZvT25UY2hyT3pYTGtsd2V0Yks0RlhnM0l0Z3dkYnQ2d1MvZ0lw?= =?gb2312?B?SFNFZDkxYXNwV21YbExFalVUK1NvTXBwcXhRcEZrdUtrYldoWVM5UnJpaTgz?= =?gb2312?B?UGF4dU4rMnlrSUtmb012UHk1OUlLaFZ1cTR0aDd6QmY2MkF0eDFTaUpvdUZo?= =?gb2312?B?TUdPMVhET21rWjZrZFVNNkFJenVYWFU5SzJwd0Q0c1ZvRXBHK01SeWNzcENp?= =?gb2312?B?WTZtTHAwVXBINzRGeVV1d1lJUEdrYklPQjJIc1dPNis5ZStmYlljUEI3bDcv?= =?gb2312?B?cmNzNy9BMWNtc0pTRTM2MUZwRnpROS85UnJtL21UdmppZm05WGZZWitmeko3?= =?gb2312?B?WFZiQTFDeTd6Z2xQejJPMUNKa081MHZYcFJWOHpwcDRRRWFiZ2JvWHV3Z0pu?= =?gb2312?B?dHlOcE1mTHltckRZREo2S0trekg0SUJBdWJCK0E2MHBna05ZTEpuenNoQWth?= =?gb2312?Q?EutmXKXHbYA5M=3D?= 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: f478bdfb-525a-44ae-6d1a-08d89fe2ec71 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Dec 2020 03:47:05.0271 (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: KoLehwOL+KXwjItUydNuopFGOkFLOKl6dtX/pAk38QZPdRliBedAPNMpWgL5186P350wFOOqOTmGuyM1QwKM4Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR11MB4700 Return-Path: ray.ni@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 QWNrZWQtYnk6IFJheSBOaSA8cmF5Lm5pQGludGVsLmNvbT4NCg0KPiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KPiBGcm9tOiBIdWFuZywgSmVubnkgPGplbm55Lmh1YW5nQGludGVsLmNvbT4N Cj4gU2VudDogRnJpZGF5LCBEZWNlbWJlciA0LCAyMDIwIDExOjMzIEFNDQo+IFRvOiBTaGVuZywg VyA8dy5zaGVuZ0BpbnRlbC5jb20+OyBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+ Ow0KPiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiBDYzogTmksIFJheSA8cmF5Lm5pQGludGVsLmNv bT47IENoYWdhbnR5LCBSYW5nYXNhaSBWDQo+IDxyYW5nYXNhaS52LmNoYWdhbnR5QGludGVsLmNv bT47IEZlbmcsIFJvZ2VyIDxyb2dlci5mZW5nQGludGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtQ QVRDSCB2NV0gSW50ZWxTaWxpY29uUGtnL1ZUZDogQWRkIGlvbW11IDUgbGV2ZWwgcGFnaW5nIHN1 cHBvcnQNCj4gDQo+IFJldmlld2VkLWJ5OiBKZW5ueSBIdWFuZyA8IGplbm55Lmh1YW5nQGludGVs LmNvbT4NCj4gDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFNoZW5nLCBX IDx3LnNoZW5nQGludGVsLmNvbT4NCj4gU2VudDogVHVlc2RheSwgRGVjZW1iZXIgMSwgMjAyMCA3 OjAzIFBNDQo+IFRvOiBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBkZXZlbEBl ZGsyLmdyb3Vwcy5pbw0KPiBDYzogTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT47IENoYWdhbnR5 LCBSYW5nYXNhaSBWDQo+IDxyYW5nYXNhaS52LmNoYWdhbnR5QGludGVsLmNvbT47IEh1YW5nLCBK ZW5ueSA8amVubnkuaHVhbmdAaW50ZWwuY29tPjsNCj4gRmVuZywgUm9nZXIgPHJvZ2VyLmZlbmdA aW50ZWwuY29tPg0KPiBTdWJqZWN0OiBbUEFUQ0ggdjVdIEludGVsU2lsaWNvblBrZy9WVGQ6IEFk ZCBpb21tdSA1IGxldmVsIHBhZ2luZyBzdXBwb3J0DQo+IA0KPiBIaSBKaWV3ZW4sDQo+IEFib3V0 IHRoZSBwYXRjaCBvZiBzdXBwb3J0IDUgbGV2ZWwgcGFnaW5nIGlvbW11Lg0KPiBUaGFuayB5b3Ug Zm9yIGdpdmluZyB0aGUgcmV2aWV3IGNvbW1lbnRzLg0KPiBJIGhhdmUgZG9uZSBhbGwgdGhlIHVw ZGF0ZS4NCj4gQ291bGQgeW91IGdpdmUgInJldmlldyBieSIgb24gdGhpcyBwYXRjaCA/DQo+IFRo YW5rIHlvdS4NCj4gQlINCj4gU2hlbmcgV2VpDQo+IA0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KPiA+IEZyb206IFNoZW5nLCBXDQo+ID4gU2VudDogMjAyMMTqMTHUwjI0yNUg MTM6NDQNCj4gPiBUbzogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsgZGV2ZWxA ZWRrMi5ncm91cHMuaW8NCj4gPiBDYzogTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT47IENoYWdh bnR5LCBSYW5nYXNhaSBWDQo+ID4gPHJhbmdhc2FpLnYuY2hhZ2FudHlAaW50ZWwuY29tPjsgSHVh bmcsIEplbm55IDxqZW5ueS5odWFuZ0BpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogUkU6IFtQQVRD SCB2NF0gSW50ZWxTaWxpY29uUGtnL1ZUZDogQWRkIGlvbW11IDUgbGV2ZWwgcGFnaW5nDQo+ID4g c3VwcG9ydA0KPiA+DQo+ID4gSGkgSmlld2VuLCBBbGwsDQo+ID4gVGhhbmsgeW91IGZvciB0aGUg cmV2aWV3LiBJIGp1c3QgY2hlY2sgYW5kIHVwZGF0ZSB0aGUgcGF0Y2guDQo+ID4gaHR0cHM6Ly9l ZGsyLmdyb3Vwcy5pby9nL2RldmVsL21lc3NhZ2UvNjc4NjU/cD0sLCwyMCwwLDAsMDo6cmVsZXZh bmNlLA0KPiA+ICxwb3N0ZXJpDQo+ID4gZCUzQTI1NTg1NTgsMjAsMiwwLDc4NDcxODc0DQo+ID4g Q291bGQgd2UgY29udGludWUgdGhlIHBhdGNoIHJldmlldyA/DQo+ID4gQlINCj4gPiBTaGVuZyBX ZWkNCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IFlh bywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gPiA+IFNlbnQ6IDIwMjDE6jEx1MIy M8jVIDE2OjQ0DQo+ID4gPiBUbzogU2hlbmcsIFcgPHcuc2hlbmdAaW50ZWwuY29tPjsgZGV2ZWxA ZWRrMi5ncm91cHMuaW8NCj4gPiA+IENjOiBOaSwgUmF5IDxyYXkubmlAaW50ZWwuY29tPjsgQ2hh Z2FudHksIFJhbmdhc2FpIFYNCj4gPiA+IDxyYW5nYXNhaS52LmNoYWdhbnR5QGludGVsLmNvbT47 IEh1YW5nLCBKZW5ueQ0KPiA+ID4gPGplbm55Lmh1YW5nQGludGVsLmNvbT4NCj4gPiA+IFN1Ympl Y3Q6IFJFOiBbUEFUQ0ggdjRdIEludGVsU2lsaWNvblBrZy9WVGQ6IEFkZCBpb21tdSA1IGxldmVs DQo+ID4gPiBwYWdpbmcgc3VwcG9ydA0KPiA+ID4NCj4gPiA+IFRoYW5rcy4NCj4gPiA+DQo+ID4g PiBJIG9ubHkgcmV2aWV3ZWQgdGhlIHBvbGljeSBwYXJ0LiBDb21tZW50IGJlbG93Og0KPiA+ID4N Cj4gPiA+IDEpIEkgcmVjb21tZW5kIHlvdSBjYW4gbWVyZ2UgYmVsb3cgMiBpZiBpbnRvIG9uZSAt IGlmDQo+ID4gPiAoKG1BY3BpRG1hclRhYmxlLQ0KPiA+ID4gPkhvc3RBZGRyZXNzV2lkdGggPD0g NDgpICYmDQo+ID4gPiAobVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0uQ2FwUmVnLkJpdHMu U0FHQVcgJiBCSVQyKSAhPSAwKSkgew0KPiA+ID4gWW91IGNhbiB1c2UgMiBsaW5lcywgYnV0IHRo ZXJlIGlzIG5vIG5lZWQgdG8gdXNlIDIgaWYuDQo+ID4gPg0KPiA+ID4gKyAgICAgIGlmIChtQWNw aURtYXJUYWJsZS0+SG9zdEFkZHJlc3NXaWR0aCA8PSA0OCkgew0KPiA+ID4gKyAgICAgICAgaWYg KChtVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5DYXBSZWcuQml0cy5TQUdBVyAmIEJJVDIp ICE9IDApDQo+IHsNCj4gPiA+ICsgICAgICAgICAgbVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRl eF0uSXM1TGV2ZWxQYWdpbmcgPSBGQUxTRTsNCj4gPiA+ICsgICAgICAgIH0NCj4gPiA+ICsgICAg ICB9DQo+ID4gPg0KPiA+ID4gMikgSSB0aGluayBiZWxvdyBjb2RlIGhhcyB0eXBvLg0KPiA+ID4g VGhlIERFQlVHIG1lc3NhZ2UgYWJvdXQgNC1sZXZlbCBhbmQgNS1sZXZlbCBzaG91bGQgYmUgcmV2 ZXJzZWQuDQo+ID4gPiBBbHNvIHdlIHNob3VsZCB1c2UgREVCVUdfSU5GTyBpbnN0ZWFkIG9mIERF QlVHX0VSUk9SLg0KPiA+ID4NCj4gPiA+ICsgICAgaWYgKG1WdGRVbml0SW5mb3JtYXRpb25bVnRk SW5kZXhdLklzNUxldmVsUGFnaW5nKSB7DQo+ID4gPiArICAgICAgQ29udGV4dEVudHJ5LT5CaXRz LkFkZHJlc3NXaWR0aCA9IDB4MzsNCj4gPiA+ICsgICAgICBERUJVRygoREVCVUdfRVJST1IsICJV c2luZyA0LWxldmVsIHBhZ2UtdGFibGUgb24gVlREICVkXG4iLA0KPiA+ID4gVnRkSW5kZXgpKTsN Cj4gPiA+ICsgICAgfSBlbHNlIHsNCj4gPiA+ICsgICAgICBDb250ZXh0RW50cnktPkJpdHMuQWRk cmVzc1dpZHRoID0gMHgyOw0KPiA+ID4gKyAgICAgIERFQlVHKChERUJVR19FUlJPUiwgIlVzaW5n IDUtbGV2ZWwgcGFnZS10YWJsZSBvbiBWVEQgJWRcbiIsDQo+ID4gPiBWdGRJbmRleCkpOw0KPiA+ ID4gKyAgICB9DQo+ID4gPg0KPiA+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gPiAtLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiBGcm9tOiBTaGVuZywgVyA8dy5zaGVuZ0BpbnRlbC5j b20+DQo+ID4gPiA+IFNlbnQ6IE1vbmRheSwgTm92ZW1iZXIgMjMsIDIwMjAgNDowNCBQTQ0KPiA+ ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiA+ID4gQ2M6IE5pLCBSYXkgPHJheS5u aUBpbnRlbC5jb20+OyBDaGFnYW50eSwgUmFuZ2FzYWkgVg0KPiA+ID4gPiA8cmFuZ2FzYWkudi5j aGFnYW50eUBpbnRlbC5jb20+OyBZYW8sIEppZXdlbg0KPiA+ID4gPiA8amlld2VuLnlhb0BpbnRl bC5jb20+OyBIdWFuZywgSmVubnkgPGplbm55Lmh1YW5nQGludGVsLmNvbT4NCj4gPiA+ID4gU3Vi amVjdDogW1BBVENIIHY0XSBJbnRlbFNpbGljb25Qa2cvVlRkOiBBZGQgaW9tbXUgNSBsZXZlbCBw YWdpbmcNCj4gPiA+ID4gc3VwcG9ydA0KPiA+ID4gPg0KPiA+ID4gPiBTdXBwb3J0IGlvbW11IDUg bGV2ZWwgcGFnaW5nIGZvciB0cmFuc2xhdGlvbiB0YWJsZS4NCj4gPiA+ID4NCj4gPiA+ID4gUkVG OiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTMwNjcNCj4g PiA+ID4NCj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogU2hlbmcgV2VpIDx3LnNoZW5nQGludGVsLmNv bT4NCj4gPiA+ID4gQ2M6IFJheSBOaSA8cmF5Lm5pQGludGVsLmNvbT4NCj4gPiA+ID4gQ2M6IFJh bmdhc2FpIFYgQ2hhZ2FudHkgPHJhbmdhc2FpLnYuY2hhZ2FudHlAaW50ZWwuY29tPg0KPiA+ID4g PiBDYzogSmlld2VuIFlhbyA8amlld2VuLnlhb0BpbnRlbC5jb20+DQo+ID4gPiA+IENjOiBKZW5u eSBIdWFuZyA8amVubnkuaHVhbmdAaW50ZWwuY29tPg0KPiA+ID4gPiAtLS0NCj4gPiA+ID4gIC4u Li9GZWF0dXJlL1ZUZC9JbnRlbFZUZER4ZS9EbWFQcm90ZWN0aW9uLmMgICAgICAgIHwgICA0ICst DQo+ID4gPiA+ICAuLi4vRmVhdHVyZS9WVGQvSW50ZWxWVGREeGUvRG1hUHJvdGVjdGlvbi5oICAg ICAgICB8ICAxOSArLQ0KPiA+ID4gPiAgLi4uL0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL1RyYW5z bGF0aW9uVGFibGUuYyAgICAgfCAyODENCj4gPiArKysrKysrKysrKysrKystLQ0KPiA+ID4gPiAt LS0tDQo+ID4gPiA+ICAuLi4vRmVhdHVyZS9WVGQvSW50ZWxWVGREeGUvVHJhbnNsYXRpb25UYWJs ZUV4LmMgICB8ICAzMSArKy0NCj4gPiA+ID4gIC4uLi9GZWF0dXJlL1ZUZC9JbnRlbFZUZER4ZS9W dGRSZWcuYyAgICAgICAgICAgICAgIHwgIDEwICstDQo+ID4gPiA+ICA1IGZpbGVzIGNoYW5nZWQs IDI0NSBpbnNlcnRpb25zKCspLCAxMDAgZGVsZXRpb25zKC0pDQo+ID4gPiA+DQo+ID4gPiA+IGRp ZmYgLS1naXQNCj4gPiA+ID4gYS9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0dXJl L1ZUZC9JbnRlbFZUZER4ZS9EbWFQcm90ZWN0aW9uLg0KPiA+ID4gPiBjDQo+ID4gPiA+IGIvU2ls aWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvRmVhdHVyZS9WVGQvSW50ZWxWVGREeGUvRG1hUHJv dGVjdGlvbi4NCj4gPiA+ID4gYw0KPiA+ID4gPiBpbmRleCA5YjYxMzVlZi4uNjI4NTY1ZWUgMTAw NjQ0DQo+ID4gPiA+IC0tLQ0KPiA+ID4gPiBhL1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtn L0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL0RtYVByb3RlY3Rpb24uDQo+ID4gPiA+IGMNCj4gPiA+ ID4gKysrDQo+ID4gPiA+IGIvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvRmVhdHVyZS9W VGQvSW50ZWxWVGREeGUvRG1hUHJvdGVjdGlvbi4NCj4gPiA+ID4gYw0KPiA+ID4gPiBAQCAtNTIz LDEwICs1MjMsMTAgQEAgU2V0dXBWdGQgKA0KPiA+ID4gPiAgICBmb3IgKEluZGV4ID0gMDsgSW5k ZXggPCBtVnRkVW5pdE51bWJlcjsgSW5kZXgrKykgew0KPiA+ID4gPiAgICAgIERFQlVHICgoREVC VUdfSU5GTywiVlREIFVuaXQgJWQgKFNlZ21lbnQ6ICUwNHgpXG4iLCBJbmRleCwNCj4gPiA+ID4g bVZ0ZFVuaXRJbmZvcm1hdGlvbltJbmRleF0uU2VnbWVudCkpOw0KPiA+ID4gPiAgICAgIGlmICht VnRkVW5pdEluZm9ybWF0aW9uW0luZGV4XS5FeHRSb290RW50cnlUYWJsZSAhPSBOVUxMKSB7DQo+ ID4gPiA+IC0gICAgICBEdW1wRG1hckV4dENvbnRleHRFbnRyeVRhYmxlDQo+ID4gPiA+IChtVnRk VW5pdEluZm9ybWF0aW9uW0luZGV4XS5FeHRSb290RW50cnlUYWJsZSk7DQo+ID4gPiA+ICsgICAg ICBEdW1wRG1hckV4dENvbnRleHRFbnRyeVRhYmxlDQo+ID4gPiA+IChtVnRkVW5pdEluZm9ybWF0 aW9uW0luZGV4XS5FeHRSb290RW50cnlUYWJsZSwNCj4gPiA+ID4gbVZ0ZFVuaXRJbmZvcm1hdGlv bltJbmRleF0uSXM1TGV2ZWxQYWdpbmcpOw0KPiA+ID4gPiAgICAgIH0NCj4gPiA+ID4gICAgICBp ZiAobVZ0ZFVuaXRJbmZvcm1hdGlvbltJbmRleF0uUm9vdEVudHJ5VGFibGUgIT0gTlVMTCkgew0K PiA+ID4gPiAtICAgICAgRHVtcERtYXJDb250ZXh0RW50cnlUYWJsZQ0KPiA+ID4gPiAobVZ0ZFVu aXRJbmZvcm1hdGlvbltJbmRleF0uUm9vdEVudHJ5VGFibGUpOw0KPiA+ID4gPiArICAgICAgRHVt cERtYXJDb250ZXh0RW50cnlUYWJsZQ0KPiA+ID4gPiAobVZ0ZFVuaXRJbmZvcm1hdGlvbltJbmRl eF0uUm9vdEVudHJ5VGFibGUsDQo+ID4gPiA+IG1WdGRVbml0SW5mb3JtYXRpb25bSW5kZXhdLklz NUxldmVsUGFnaW5nKTsNCj4gPiA+ID4gICAgICB9DQo+ID4gPiA+ICAgIH0NCj4gPiA+ID4NCj4g PiA+ID4gZGlmZiAtLWdpdA0KPiA+ID4gPiBhL1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtn L0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL0RtYVByb3RlY3Rpb24uDQo+ID4gPiA+IGgNCj4gPiA+ ID4gYi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0dXJlL1ZUZC9JbnRlbFZUZER4 ZS9EbWFQcm90ZWN0aW9uLg0KPiA+ID4gPiBoDQo+ID4gPiA+IGluZGV4IGEzMzMxZGI4Li5mNjQx Y2VhMCAxMDA2NDQNCj4gPiA+ID4gLS0tDQo+ID4gPiA+IGEvU2lsaWNvbi9JbnRlbC9JbnRlbFNp bGljb25Qa2cvRmVhdHVyZS9WVGQvSW50ZWxWVGREeGUvRG1hUHJvdGVjdGlvbi4NCj4gPiA+ID4g aA0KPiA+ID4gPiArKysNCj4gPiA+ID4gYi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9G ZWF0dXJlL1ZUZC9JbnRlbFZUZER4ZS9EbWFQcm90ZWN0aW9uLg0KPiA+ID4gPiBoDQo+ID4gPiA+ IEBAIC03Nyw2ICs3Nyw3IEBAIHR5cGVkZWYgc3RydWN0IHsNCj4gPiA+ID4gICAgQk9PTEVBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgSGFzRGlydHlDb250ZXh0Ow0KPiA+ID4gPiAgICBCT09M RUFOICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNEaXJ0eVBhZ2VzOw0KPiA+ID4gPiAgICBQ Q0lfREVWSUNFX0lORk9STUFUSU9OICAgICAgICAgICBQY2lEZXZpY2VJbmZvOw0KPiA+ID4gPiAr ICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICBJczVMZXZlbFBhZ2luZzsNCj4gPiA+ ID4gIH0gVlREX1VOSVRfSU5GT1JNQVRJT047DQo+ID4gPiA+DQo+ID4gPiA+ICAvLw0KPiA+ID4g PiBAQCAtMzc1LDMxICszNzYsMzcgQEAgUGFyc2VEbWFyQWNwaVRhYmxlUm1yciAoDQo+ID4gPiA+ ICAvKioNCj4gPiA+ID4gICAgRHVtcCBETUFSIGNvbnRleHQgZW50cnkgdGFibGUuDQo+ID4gPiA+ DQo+ID4gPiA+IC0gIEBwYXJhbVtpbl0gIFJvb3RFbnRyeSBETUFSIHJvb3QgZW50cnkuDQo+ID4g PiA+ICsgIEBwYXJhbVtpbl0gIFJvb3RFbnRyeSAgICAgICBETUFSIHJvb3QgZW50cnkuDQo+ID4g PiA+ICsgIEBwYXJhbVtpbl0gIElzNUxldmVsUGFnaW5nICBJZiBpdCBpcyB0aGUgNSBsZXZlbCBw YWdpbmcuDQo+ID4gPiA+ICAqKi8NCj4gPiA+ID4gIFZPSUQNCj4gPiA+ID4gIER1bXBEbWFyQ29u dGV4dEVudHJ5VGFibGUgKA0KPiA+ID4gPiAtICBJTiBWVERfUk9PVF9FTlRSWSAqUm9vdEVudHJ5 DQo+ID4gPiA+ICsgIElOIFZURF9ST09UX0VOVFJZICpSb290RW50cnksDQo+ID4gPiA+ICsgIElO IEJPT0xFQU4gSXM1TGV2ZWxQYWdpbmcNCj4gPiA+ID4gICAgKTsNCj4gPiA+ID4NCj4gPiA+ID4g IC8qKg0KPiA+ID4gPiAgICBEdW1wIERNQVIgZXh0ZW5kZWQgY29udGV4dCBlbnRyeSB0YWJsZS4N Cj4gPiA+ID4NCj4gPiA+ID4gLSAgQHBhcmFtW2luXSAgRXh0Um9vdEVudHJ5IERNQVIgZXh0ZW5k ZWQgcm9vdCBlbnRyeS4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRXh0Um9vdEVudHJ5ICAgIERN QVIgZXh0ZW5kZWQgcm9vdCBlbnRyeS4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgSXM1TGV2ZWxQ YWdpbmcgIElmIGl0IGlzIHRoZSA1IGxldmVsIHBhZ2luZy4NCj4gPiA+ID4gICoqLw0KPiA+ID4g PiAgVk9JRA0KPiA+ID4gPiAgRHVtcERtYXJFeHRDb250ZXh0RW50cnlUYWJsZSAoDQo+ID4gPiA+ IC0gIElOIFZURF9FWFRfUk9PVF9FTlRSWSAqRXh0Um9vdEVudHJ5DQo+ID4gPiA+ICsgIElOIFZU RF9FWFRfUk9PVF9FTlRSWSAqRXh0Um9vdEVudHJ5LCAgSU4gQk9PTEVBTiBJczVMZXZlbFBhZ2lu Zw0KPiA+ID4gPiAgICApOw0KPiA+ID4gPg0KPiA+ID4gPiAgLyoqDQo+ID4gPiA+ICAgIER1bXAg RE1BUiBzZWNvbmQgbGV2ZWwgcGFnaW5nIGVudHJ5Lg0KPiA+ID4gPg0KPiA+ID4gPiAtICBAcGFy YW1baW5dICBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5IFRoZSBzZWNvbmQgbGV2ZWwgcGFnaW5nIGVu dHJ5Lg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5ICBUaGUg c2Vjb25kIGxldmVsIHBhZ2luZyBlbnRyeS4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgSXM1TGV2 ZWxQYWdpbmcgICAgICAgICAgSWYgaXQgaXMgdGhlIDUgbGV2ZWwgcGFnaW5nLg0KPiA+ID4gPiAg KiovDQo+ID4gPiA+ICBWT0lEDQo+ID4gPiA+ICBEdW1wU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSAo DQo+ID4gPiA+IC0gIElOIFZPSUQgKlNlY29uZExldmVsUGFnaW5nRW50cnkNCj4gPiA+ID4gKyAg SU4gVk9JRCAqU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSwgIElOIEJPT0xFQU4gSXM1TGV2ZWxQYWdp bmcNCj4gPiA+ID4gICAgKTsNCj4gPiA+ID4NCj4gPiA+ID4gIC8qKg0KPiA+ID4gPiBkaWZmIC0t Z2l0DQo+ID4gPiA+IGEvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvRmVhdHVyZS9WVGQv SW50ZWxWVGREeGUvVHJhbnNsYXRpbw0KPiA+ID4gPiBuVA0KPiA+ID4gPiBhYg0KPiA+ID4gPiBs ZS5jDQo+ID4gPiA+IGIvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvRmVhdHVyZS9WVGQv SW50ZWxWVGREeGUvVHJhbnNsYXRpbw0KPiA+ID4gPiBuVA0KPiA+ID4gPiBhYg0KPiA+ID4gPiBs ZS5jDQo+ID4gPiA+IGluZGV4IDIwMWQ2NjNkLi42Yzc4NmI0MCAxMDA2NDQNCj4gPiA+ID4gLS0t DQo+ID4gPiA+IGEvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvRmVhdHVyZS9WVGQvSW50 ZWxWVGREeGUvVHJhbnNsYXRpbw0KPiA+ID4gPiBuVA0KPiA+ID4gPiBhYg0KPiA+ID4gPiBsZS5j DQo+ID4gPiA+ICsrKw0KPiA+ID4gPiBiL1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtnL0Zl YXR1cmUvVlRkL0ludGVsVlRkRHhlL1RyYW5zbGF0aW8NCj4gPiA+ID4gblQgYWIgbGUuYyBAQCAt MTI4LDExICsxMjgsMjYgQEAgQ3JlYXRlQ29udGV4dEVudHJ5ICgNCj4gPiA+ID4NCj4gPiA+ID4g ICAgICBERUJVRyAoKERFQlVHX0lORk8sIlNvdXJjZTogUyUwNHggQiUwMnggRCUwMnggRiUwMnhc biIsDQo+ID4gPiA+IG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLlNlZ21lbnQsIFNvdXJj ZUlkLkJpdHMuQnVzLA0KPiA+ID4gPiBTb3VyY2VJZC5CaXRzLkRldmljZSwgU291cmNlSWQuQml0 cy5GdW5jdGlvbikpOw0KPiA+ID4gPg0KPiA+ID4gPiAtICAgIGlmICgobVZ0ZFVuaXRJbmZvcm1h dGlvbltWdGRJbmRleF0uQ2FwUmVnLkJpdHMuU0FHQVcgJiBCSVQyKSA9PSAwKQ0KPiB7DQo+ID4g PiA+IC0gICAgICBERUJVRygoREVCVUdfRVJST1IsICIhISEhIDQtbGV2ZWwgcGFnZS10YWJsZSBp cyBub3Qgc3VwcG9ydGVkIG9uDQo+ID4gPiA+IFZURCAlZCAhISEhXG4iLCBWdGRJbmRleCkpOw0K PiA+ID4gPiArICAgIG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLklzNUxldmVsUGFnaW5n ID0gRkFMU0U7DQo+ID4gPiA+ICsgICAgaWYgKChtVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4 XS5DYXBSZWcuQml0cy5TQUdBVyAmIEJJVDMpICE9IDApDQo+IHsNCj4gPiA+ID4gKyAgICAgIG1W dGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLklzNUxldmVsUGFnaW5nID0gVFJVRTsNCj4gPiA+ ID4gKyAgICAgIGlmIChtQWNwaURtYXJUYWJsZS0+SG9zdEFkZHJlc3NXaWR0aCA8PSA0OCkgew0K PiA+ID4gPiArICAgICAgICBpZiAoKG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLkNhcFJl Zy5CaXRzLlNBR0FXICYNCj4gPiA+ID4gKyBCSVQyKSAhPSAwKQ0KPiA+IHsNCj4gPiA+ID4gKyAg ICAgICAgICBtVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5JczVMZXZlbFBhZ2luZyA9IEZB TFNFOw0KPiA+ID4gPiArICAgICAgICB9DQo+ID4gPiA+ICsgICAgICB9DQo+ID4gPiA+ICsgICAg fSBlbHNlIGlmICgobVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0uQ2FwUmVnLkJpdHMuU0FH QVcgJg0KPiA+ID4gPiArIEJJVDIpID09DQo+ID4gPiA+IDApIHsNCj4gPiA+ID4gKyAgICAgIERF QlVHKChERUJVR19FUlJPUiwgIiEhISEgUGFnZS10YWJsZSB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQN Cj4gPiA+ID4gKyBvbg0KPiA+ID4gPiBWVEQgJWQgISEhIVxuIiwgVnRkSW5kZXgpKTsNCj4gPiA+ ID4gICAgICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ID4gPiA+ICAgICAgfQ0KPiA+ID4g PiAtICAgIENvbnRleHRFbnRyeS0+Qml0cy5BZGRyZXNzV2lkdGggPSAweDI7DQo+ID4gPiA+ICsN Cj4gPiA+ID4gKyAgICBpZiAobVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0uSXM1TGV2ZWxQ YWdpbmcpIHsNCj4gPiA+ID4gKyAgICAgIENvbnRleHRFbnRyeS0+Qml0cy5BZGRyZXNzV2lkdGgg PSAweDM7DQo+ID4gPiA+ICsgICAgICBERUJVRygoREVCVUdfRVJST1IsICJVc2luZyA0LWxldmVs IHBhZ2UtdGFibGUgb24gVlREICVkXG4iLA0KPiA+ID4gPiBWdGRJbmRleCkpOw0KPiA+ID4gPiAr ICAgIH0gZWxzZSB7DQo+ID4gPiA+ICsgICAgICBDb250ZXh0RW50cnktPkJpdHMuQWRkcmVzc1dp ZHRoID0gMHgyOw0KPiA+ID4gPiArICAgICAgREVCVUcoKERFQlVHX0VSUk9SLCAiVXNpbmcgNS1s ZXZlbCBwYWdlLXRhYmxlIG9uIFZURCAlZFxuIiwNCj4gPiA+ID4gVnRkSW5kZXgpKTsNCj4gPiA+ ID4gKyAgICB9DQo+ID4gPiA+ICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gICAgRmx1c2hQYWdlVGFi bGVNZW1vcnkgKFZ0ZEluZGV4LA0KPiA+ID4gPiAoVUlOVE4pbVZ0ZFVuaXRJbmZvcm1hdGlvbltW dGRJbmRleF0uUm9vdEVudHJ5VGFibGUsDQo+ID4gPiA+IEVGSV9QQUdFU19UT19TSVpFKEVudHJ5 VGFibGVQYWdlcykpOw0KPiA+ID4gPiBAQCAtMTQ4LDYgKzE2Myw3IEBAIENyZWF0ZUNvbnRleHRF bnRyeSAoDQo+ID4gPiA+ICAgIEBwYXJhbVtpbl0gIE1lbW9yeUJhc2UgICAgICAgICAgICAgICAg ICBUaGUgYmFzZSBvZiB0aGUgbWVtb3J5Lg0KPiA+ID4gPiAgICBAcGFyYW1baW5dICBNZW1vcnlM aW1pdCAgICAgICAgICAgICAgICAgVGhlIGxpbWl0IG9mIHRoZSBtZW1vcnkuDQo+ID4gPiA+ICAg IEBwYXJhbVtpbl0gIElvTW11QWNjZXNzICAgICAgICAgICAgICAgICBUaGUgSU9NTVUgYWNjZXNz Lg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBJczVMZXZlbFBhZ2luZyAgICAgICAgICAgICAgSWYg aXQgaXMgdGhlIDUgbGV2ZWwgcGFnaW5nLg0KPiA+ID4gPg0KPiA+ID4gPiAgICBAcmV0dXJuIFRo ZSBzZWNvbmQgbGV2ZWwgcGFnaW5nIGVudHJ5Lg0KPiA+ID4gPiAgKiovDQo+ID4gPiA+IEBAIC0x NTcsMTYgKzE3MywyMyBAQCBDcmVhdGVTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5VGFibGUgKA0KPiA+ ID4gPiAgICBJTiBWVERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWSAqU2Vjb25kTGV2ZWxQYWdp bmdFbnRyeSwNCj4gPiA+ID4gICAgSU4gVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgTWVt b3J5QmFzZSwNCj4gPiA+ID4gICAgSU4gVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgTWVt b3J5TGltaXQsDQo+ID4gPiA+IC0gIElOIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgIElv TW11QWNjZXNzDQo+ID4gPiA+ICsgIElOIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgIElv TW11QWNjZXNzLA0KPiA+ID4gPiArICBJTiBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICBJ czVMZXZlbFBhZ2luZw0KPiA+ID4gPiAgICApDQo+ID4gPiA+ICB7DQo+ID4gPiA+ICsgIFVJTlRO ICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleDU7DQo+ID4gPiA+ICAgIFVJTlROICAgICAg ICAgICAgICAgICAgICAgICAgICBJbmRleDQ7DQo+ID4gPiA+ICAgIFVJTlROICAgICAgICAgICAg ICAgICAgICAgICAgICBJbmRleDM7DQo+ID4gPiA+ICAgIFVJTlROICAgICAgICAgICAgICAgICAg ICAgICAgICBJbmRleDI7DQo+ID4gPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAg ICBMdmw1U3RhcnQ7DQo+ID4gPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBM dmw1RW5kOw0KPiA+ID4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgTHZsNFBh Z2VzU3RhcnQ7DQo+ID4gPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBMdmw0 UGFnZXNFbmQ7DQo+ID4gPiA+ICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBMdmw0 U3RhcnQ7DQo+ID4gPiA+ICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBMdmw0RW5k Ow0KPiA+ID4gPiAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgTHZsM1N0YXJ0Ow0K PiA+ID4gPiAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgTHZsM0VuZDsNCj4gPiA+ ID4gKyAgVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkgICpMdmw1UHRFbnRyeTsNCj4gPiA+ ID4gICAgVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkgICpMdmw0UHRFbnRyeTsNCj4gPiA+ ID4gICAgVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkgICpMdmwzUHRFbnRyeTsNCj4gPiA+ ID4gICAgVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkgICpMdmwyUHRFbnRyeTsgQEAgLTE4 NCw3ICsyMDcsNw0KPiA+ID4gQEANCj4gPiA+ID4gQ3JlYXRlU2Vjb25kTGV2ZWxQYWdpbmdFbnRy eVRhYmxlICgNCj4gPiA+ID4gICAgaWYgKFNlY29uZExldmVsUGFnaW5nRW50cnkgPT0gTlVMTCkg ew0KPiA+ID4gPiAgICAgIFNlY29uZExldmVsUGFnaW5nRW50cnkgPSBBbGxvY2F0ZVplcm9QYWdl cyAoMSk7DQo+ID4gPiA+ICAgICAgaWYgKFNlY29uZExldmVsUGFnaW5nRW50cnkgPT0gTlVMTCkg ew0KPiA+ID4gPiAtICAgICAgREVCVUcgKChERUJVR19FUlJPUiwiQ291bGQgbm90IEFsbG9jIExW TDQgUFQuIFxuIikpOw0KPiA+ID4gPiArICAgICAgREVCVUcgKChERUJVR19FUlJPUiwiQ291bGQg bm90IEFsbG9jIExWTDQgb3IgTFZMNSBQVC4NCj4gPiA+ID4gKyBcbiIpKTsNCj4gPiA+ID4gICAg ICAgIHJldHVybiBOVUxMOw0KPiA+ID4gPiAgICAgIH0NCj4gPiA+ID4gICAgICBGbHVzaFBhZ2VU YWJsZU1lbW9yeSAoVnRkSW5kZXgsDQo+ID4gPiA+IChVSU5UTilTZWNvbmRMZXZlbFBhZ2luZ0Vu dHJ5LCBFRklfUEFHRVNfVE9fU0laRSgxKSk7IEBAIC0xOTcsNjYNCj4gPiA+ID4gKzIyMCwxMDkg QEAgQ3JlYXRlU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeVRhYmxlICgNCj4gPiA+ID4gICAgICByZXR1 cm4gU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeTsNCj4gPiA+ID4gICAgfQ0KPiA+ID4gPg0KPiA+ID4g PiAtICBMdmw0U3RhcnQgPSBSU2hpZnRVNjQgKEJhc2VBZGRyZXNzLCAzOSkgJiAweDFGRjsNCj4g PiA+ID4gLSAgTHZsNEVuZCA9IFJTaGlmdFU2NCAoRW5kQWRkcmVzcyAtIDEsIDM5KSAmIDB4MUZG Ow0KPiA+ID4gPiArICBpZiAoSXM1TGV2ZWxQYWdpbmcpIHsNCj4gPiA+ID4gKyAgICBMdmw1U3Rh cnQgPSBSU2hpZnRVNjQgKEJhc2VBZGRyZXNzLCA0OCkgJiAweDFGRjsNCj4gPiA+ID4gKyAgICBM dmw1RW5kID0gUlNoaWZ0VTY0IChFbmRBZGRyZXNzIC0gMSwgNDgpICYgMHgxRkY7DQo+ID4gPiA+ ICsgICAgREVCVUcgKChERUJVR19JTkZPLCIgIEx2bDVTdGFydCAtIDB4JXgsIEx2bDVFbmQgLSAw eCV4XG4iLA0KPiA+ID4gPiArIEx2bDVTdGFydCwNCj4gPiA+ID4gTHZsNUVuZCkpOw0KPiA+ID4g Pg0KPiA+ID4gPiAtICBERUJVRyAoKERFQlVHX0lORk8sIiAgTHZsNFN0YXJ0IC0gMHgleCwgTHZs NEVuZCAtIDB4JXhcbiIsDQo+ID4gPiA+IEx2bDRTdGFydCwgTHZsNEVuZCkpOw0KPiA+ID4gPiAr ICAgIEx2bDRTdGFydCA9IFJTaGlmdFU2NCAoQmFzZUFkZHJlc3MsIDM5KSAmIDB4MUZGOw0KPiA+ ID4gPiArICAgIEx2bDRFbmQgPSBSU2hpZnRVNjQgKEVuZEFkZHJlc3MgLSAxLCAzOSkgJiAweDFG RjsNCj4gPiA+ID4NCj4gPiA+ID4gLSAgTHZsNFB0RW50cnkgPSAoVlREX1NFQ09ORF9MRVZFTF9Q QUdJTkdfRU5UUlkNCj4gPiA+ID4gKilTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5Ow0KPiA+ID4gPiAt ICBmb3IgKEluZGV4NCA9IEx2bDRTdGFydDsgSW5kZXg0IDw9IEx2bDRFbmQ7IEluZGV4NCsrKSB7 DQo+ID4gPiA+IC0gICAgaWYgKEx2bDRQdEVudHJ5W0luZGV4NF0uVWludDY0ID09IDApIHsNCj4g PiA+ID4gLSAgICAgIEx2bDRQdEVudHJ5W0luZGV4NF0uVWludDY0ID0gKFVJTlQ2NCkoVUlOVE4p QWxsb2NhdGVaZXJvUGFnZXMgKDEpOw0KPiA+ID4gPiAtICAgICAgaWYgKEx2bDRQdEVudHJ5W0lu ZGV4NF0uVWludDY0ID09IDApIHsNCj4gPiA+ID4gLSAgICAgICAgREVCVUcgKChERUJVR19FUlJP UiwiISEhISEhIEFMTE9DQVRFIExWTDQgUEFHRSBGQUlMDQo+ID4gPiA+ICgweCV4KSEhISEhIVxu IiwgSW5kZXg0KSk7DQo+ID4gPiA+IC0gICAgICAgIEFTU0VSVChGQUxTRSk7DQo+ID4gPiA+IC0g ICAgICAgIHJldHVybiBOVUxMOw0KPiA+ID4gPiAtICAgICAgfQ0KPiA+ID4gPiAtICAgICAgRmx1 c2hQYWdlVGFibGVNZW1vcnkgKFZ0ZEluZGV4LA0KPiAoVUlOVE4pTHZsNFB0RW50cnlbSW5kZXg0 XS5VaW50NjQsDQo+ID4gPiA+IFNJWkVfNEtCKTsNCj4gPiA+ID4gLSAgICAgIFNldFNlY29uZExl dmVsUGFnaW5nRW50cnlBdHRyaWJ1dGUgKCZMdmw0UHRFbnRyeVtJbmRleDRdLA0KPiA+ID4gPiBF REtJSV9JT01NVV9BQ0NFU1NfUkVBRCB8IEVES0lJX0lPTU1VX0FDQ0VTU19XUklURSk7DQo+ID4g PiA+IC0gICAgfQ0KPiA+ID4gPiArICAgIEx2bDRQYWdlc1N0YXJ0ID0gKEx2bDVTdGFydDw8OSkg fCBMdmw0U3RhcnQ7DQo+ID4gPiA+ICsgICAgTHZsNFBhZ2VzRW5kID0gKEx2bDVFbmQ8PDkpIHwg THZsNEVuZDsNCj4gPiA+ID4gKyAgICBERUJVRyAoKERFQlVHX0lORk8sIiAgTHZsNFBhZ2VzU3Rh cnQgLSAweCV4LCBMdmw0UGFnZXNFbmQgLQ0KPiA+ID4gPiArIDB4JXhcbiIsDQo+ID4gPiA+IEx2 bDRQYWdlc1N0YXJ0LCBMdmw0UGFnZXNFbmQpKTsNCj4gPiA+ID4NCj4gPiA+ID4gLSAgICBMdmwz U3RhcnQgPSBSU2hpZnRVNjQgKEJhc2VBZGRyZXNzLCAzMCkgJiAweDFGRjsNCj4gPiA+ID4gLSAg ICBpZiAoQUxJR05fVkFMVUVfTE9XKEJhc2VBZGRyZXNzICsgU0laRV8xR0IsIFNJWkVfMUdCKSA8 PQ0KPiA+ID4gPiBFbmRBZGRyZXNzKSB7DQo+ID4gPiA+IC0gICAgICBMdmwzRW5kID0gU0laRV80 S0Ivc2l6ZW9mKFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZKSAtIDE7DQo+ID4gPiA+IC0g ICAgfSBlbHNlIHsNCj4gPiA+ID4gLSAgICAgIEx2bDNFbmQgPSBSU2hpZnRVNjQgKEVuZEFkZHJl c3MgLSAxLCAzMCkgJiAweDFGRjsNCj4gPiA+ID4gKyAgICBMdmw1UHRFbnRyeSA9IChWVERfU0VD T05EX0xFVkVMX1BBR0lOR19FTlRSWQ0KPiA+ID4gPiAqKVNlY29uZExldmVsUGFnaW5nRW50cnk7 DQo+ID4gPiA+ICsgIH0gZWxzZSB7DQo+ID4gPiA+ICsgICAgTHZsNVN0YXJ0ID0gUlNoaWZ0VTY0 IChCYXNlQWRkcmVzcywgNDgpICYgMHgxRkY7DQo+ID4gPiA+ICsgICAgTHZsNUVuZCA9IEx2bDVT dGFydDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgIEx2bDRTdGFydCA9IFJTaGlmdFU2NCAoQmFz ZUFkZHJlc3MsIDM5KSAmIDB4MUZGOw0KPiA+ID4gPiArICAgIEx2bDRFbmQgPSBSU2hpZnRVNjQg KEVuZEFkZHJlc3MgLSAxLCAzOSkgJiAweDFGRjsNCj4gPiA+ID4gKyAgICBERUJVRyAoKERFQlVH X0lORk8sIiAgTHZsNFN0YXJ0IC0gMHgleCwgTHZsNEVuZCAtIDB4JXhcbiIsDQo+ID4gPiA+ICsg THZsNFN0YXJ0LA0KPiA+ID4gPiBMdmw0RW5kKSk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICBM dmw0UHRFbnRyeSA9IChWVERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWQ0KPiA+ID4gPiAqKVNl Y29uZExldmVsUGFnaW5nRW50cnk7DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiAr ICBmb3IgKEluZGV4NSA9IEx2bDVTdGFydDsgSW5kZXg1IDw9IEx2bDVFbmQ7IEluZGV4NSsrKSB7 DQo+ID4gPiA+ICsgICAgaWYgKElzNUxldmVsUGFnaW5nKSB7DQo+ID4gPiA+ICsgICAgICBpZiAo THZsNVB0RW50cnlbSW5kZXg1XS5VaW50NjQgPT0gMCkgew0KPiA+ID4gPiArICAgICAgICBMdmw1 UHRFbnRyeVtJbmRleDVdLlVpbnQ2NCA9IChVSU5UNjQpKFVJTlROKUFsbG9jYXRlWmVyb1BhZ2Vz ICgxKTsNCj4gPiA+ID4gKyAgICAgICAgaWYgKEx2bDVQdEVudHJ5W0luZGV4NV0uVWludDY0ID09 IDApIHsNCj4gPiA+ID4gKyAgICAgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCIhISEhISEgQUxM T0NBVEUgTFZMNCBQQUdFIEZBSUwNCj4gPiA+ID4gKDB4JXgpISEhISEhXG4iLCBJbmRleDUpKTsN Cj4gPiA+ID4gKyAgICAgICAgICBBU1NFUlQoRkFMU0UpOw0KPiA+ID4gPiArICAgICAgICAgIHJl dHVybiBOVUxMOw0KPiA+ID4gPiArICAgICAgICB9DQo+ID4gPiA+ICsgICAgICAgIEZsdXNoUGFn ZVRhYmxlTWVtb3J5IChWdGRJbmRleCwNCj4gPiA+ID4gKyAoVUlOVE4pTHZsNVB0RW50cnlbSW5k ZXg1XS5VaW50NjQsDQo+ID4gPiA+IFNJWkVfNEtCKTsNCj4gPiA+ID4gKyAgICAgICAgU2V0U2Vj b25kTGV2ZWxQYWdpbmdFbnRyeUF0dHJpYnV0ZSAoJkx2bDVQdEVudHJ5W0luZGV4NV0sDQo+ID4g PiA+IEVES0lJX0lPTU1VX0FDQ0VTU19SRUFEIHwgRURLSUlfSU9NTVVfQUNDRVNTX1dSSVRFKTsN Cj4gPiA+ID4gKyAgICAgIH0NCj4gPiA+ID4gKyAgICAgIEx2bDRTdGFydCA9IEx2bDRQYWdlc1N0 YXJ0ICYgMHgxRkY7DQo+ID4gPiA+ICsgICAgICBpZiAoKChJbmRleDUrMSk8PDkpID4gTHZsNFBh Z2VzRW5kKSB7DQo+ID4gPiA+ICsgICAgICAgIEx2bDRFbmQgPSBTSVpFXzRLQi9zaXplb2YoVlRE X1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkpIC0NCj4gMTs7DQo+ID4gPiA+ICsgICAgICAgIEx2 bDRQYWdlc1N0YXJ0ID0gKEluZGV4NSsxKTw8OTsNCj4gPiA+ID4gKyAgICAgIH0gZWxzZSB7DQo+ ID4gPiA+ICsgICAgICAgIEx2bDRFbmQgPSBMdmw0UGFnZXNFbmQgJiAweDFGRjsNCj4gPiA+ID4g KyAgICAgIH0NCj4gPiA+ID4gKyAgICAgIERFQlVHICgoREVCVUdfSU5GTywiICBMdmw1KDB4JXgp OiBMdmw0U3RhcnQgLSAweCV4LCBMdmw0RW5kDQo+ID4gPiA+ICsgLSAweCV4XG4iLA0KPiA+ID4g PiBJbmRleDUsIEx2bDRTdGFydCwgTHZsNEVuZCkpOw0KPiA+ID4gPiArICAgICAgTHZsNFB0RW50 cnkgPSAoVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkNCj4gPiA+ID4gKikoVUlOVE4pVlRE XzY0QklUU19BRERSRVNTKEx2bDVQdEVudHJ5W0luZGV4NV0uQml0cy5BZGRyZXNzTG8sDQo+ID4g PiA+IEx2bDVQdEVudHJ5W0luZGV4NV0uQml0cy5BZGRyZXNzSGkpOw0KPiA+ID4gPiAgICAgIH0N Cj4gPiA+ID4gLSAgICBERUJVRyAoKERFQlVHX0lORk8sIiAgTHZsNCgweCV4KTogTHZsM1N0YXJ0 IC0gMHgleCwgTHZsM0VuZCAtDQo+IDB4JXhcbiIsDQo+ID4gPiA+IEluZGV4NCwgTHZsM1N0YXJ0 LCBMdmwzRW5kKSk7DQo+ID4gPiA+DQo+ID4gPiA+IC0gICAgTHZsM1B0RW50cnkgPSAoVlREX1NF Q09ORF9MRVZFTF9QQUdJTkdfRU5UUlkNCj4gPiA+ID4gKikoVUlOVE4pVlREXzY0QklUU19BRERS RVNTKEx2bDRQdEVudHJ5W0luZGV4NF0uQml0cy5BZGRyZXNzTG8sDQo+ID4gPiA+IEx2bDRQdEVu dHJ5W0luZGV4NF0uQml0cy5BZGRyZXNzSGkpOw0KPiA+ID4gPiAtICAgIGZvciAoSW5kZXgzID0g THZsM1N0YXJ0OyBJbmRleDMgPD0gTHZsM0VuZDsgSW5kZXgzKyspIHsNCj4gPiA+ID4gLSAgICAg IGlmIChMdmwzUHRFbnRyeVtJbmRleDNdLlVpbnQ2NCA9PSAwKSB7DQo+ID4gPiA+IC0gICAgICAg IEx2bDNQdEVudHJ5W0luZGV4M10uVWludDY0ID0gKFVJTlQ2NCkoVUlOVE4pQWxsb2NhdGVaZXJv UGFnZXMgKDEpOw0KPiA+ID4gPiAtICAgICAgICBpZiAoTHZsM1B0RW50cnlbSW5kZXgzXS5VaW50 NjQgPT0gMCkgew0KPiA+ID4gPiAtICAgICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsIiEhISEh ISBBTExPQ0FURSBMVkwzIFBBR0UgRkFJTCAoMHgleCwNCj4gPiA+ID4gMHgleCkhISEhISFcbiIs IEluZGV4NCwgSW5kZXgzKSk7DQo+ID4gPiA+ICsgICAgZm9yIChJbmRleDQgPSBMdmw0U3RhcnQ7 IEluZGV4NCA8PSBMdmw0RW5kOyBJbmRleDQrKykgew0KPiA+ID4gPiArICAgICAgaWYgKEx2bDRQ dEVudHJ5W0luZGV4NF0uVWludDY0ID09IDApIHsNCj4gPiA+ID4gKyAgICAgICAgTHZsNFB0RW50 cnlbSW5kZXg0XS5VaW50NjQgPSAoVUlOVDY0KShVSU5UTilBbGxvY2F0ZVplcm9QYWdlcyAoMSk7 DQo+ID4gPiA+ICsgICAgICAgIGlmIChMdmw0UHRFbnRyeVtJbmRleDRdLlVpbnQ2NCA9PSAwKSB7 DQo+ID4gPiA+ICsgICAgICAgICAgREVCVUcgKChERUJVR19FUlJPUiwiISEhISEhIEFMTE9DQVRF IExWTDQgUEFHRSBGQUlMDQo+ID4gPiA+ICgweCV4KSEhISEhIVxuIiwgSW5kZXg0KSk7DQo+ID4g PiA+ICAgICAgICAgICAgQVNTRVJUKEZBTFNFKTsNCj4gPiA+ID4gICAgICAgICAgICByZXR1cm4g TlVMTDsNCj4gPiA+ID4gICAgICAgICAgfQ0KPiA+ID4gPiAtICAgICAgICBGbHVzaFBhZ2VUYWJs ZU1lbW9yeSAoVnRkSW5kZXgsDQo+IChVSU5UTilMdmwzUHRFbnRyeVtJbmRleDNdLlVpbnQ2NCwN Cj4gPiA+ID4gU0laRV80S0IpOw0KPiA+ID4gPiAtICAgICAgICBTZXRTZWNvbmRMZXZlbFBhZ2lu Z0VudHJ5QXR0cmlidXRlICgmTHZsM1B0RW50cnlbSW5kZXgzXSwNCj4gPiA+ID4gRURLSUlfSU9N TVVfQUNDRVNTX1JFQUQgfCBFREtJSV9JT01NVV9BQ0NFU1NfV1JJVEUpOw0KPiA+ID4gPiArICAg ICAgICBGbHVzaFBhZ2VUYWJsZU1lbW9yeSAoVnRkSW5kZXgsDQo+ID4gPiA+ICsgKFVJTlROKUx2 bDRQdEVudHJ5W0luZGV4NF0uVWludDY0LA0KPiA+ID4gPiBTSVpFXzRLQik7DQo+ID4gPiA+ICsg ICAgICAgIFNldFNlY29uZExldmVsUGFnaW5nRW50cnlBdHRyaWJ1dGUgKCZMdmw0UHRFbnRyeVtJ bmRleDRdLA0KPiA+ID4gPiBFREtJSV9JT01NVV9BQ0NFU1NfUkVBRCB8IEVES0lJX0lPTU1VX0FD Q0VTU19XUklURSk7DQo+ID4gPiA+ICsgICAgICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICAg IEx2bDNTdGFydCA9IFJTaGlmdFU2NCAoQmFzZUFkZHJlc3MsIDMwKSAmIDB4MUZGOw0KPiA+ID4g PiArICAgICAgaWYgKEFMSUdOX1ZBTFVFX0xPVyhCYXNlQWRkcmVzcyArIFNJWkVfMUdCLCBTSVpF XzFHQikgPD0NCj4gPiA+ID4gRW5kQWRkcmVzcykgew0KPiA+ID4gPiArICAgICAgICBMdmwzRW5k ID0gU0laRV80S0Ivc2l6ZW9mKFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZKSAtDQo+IDE7 DQo+ID4gPiA+ICsgICAgICB9IGVsc2Ugew0KPiA+ID4gPiArICAgICAgICBMdmwzRW5kID0gUlNo aWZ0VTY0IChFbmRBZGRyZXNzIC0gMSwgMzApICYgMHgxRkY7DQo+ID4gPiA+ICAgICAgICB9DQo+ ID4gPiA+ICsgICAgICBERUJVRyAoKERFQlVHX0lORk8sIiAgTHZsNCgweCV4KTogTHZsM1N0YXJ0 IC0gMHgleCwgTHZsM0VuZA0KPiA+ID4gPiArIC0gMHgleFxuIiwNCj4gPiA+ID4gSW5kZXg0LCBM dmwzU3RhcnQsIEx2bDNFbmQpKTsNCj4gPiA+ID4NCj4gPiA+ID4gLSAgICAgIEx2bDJQdEVudHJ5 ID0gKFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZDQo+ID4gPiA+ICopKFVJTlROKVZURF82 NEJJVFNfQUREUkVTUyhMdmwzUHRFbnRyeVtJbmRleDNdLkJpdHMuQWRkcmVzc0xvLA0KPiA+ID4g PiBMdmwzUHRFbnRyeVtJbmRleDNdLkJpdHMuQWRkcmVzc0hpKTsNCj4gPiA+ID4gLSAgICAgIGZv ciAoSW5kZXgyID0gMDsgSW5kZXgyIDwNCj4gPiA+ID4gU0laRV80S0Ivc2l6ZW9mKFZURF9TRUNP TkRfTEVWRUxfUEFHSU5HX0VOVFJZKTsgSW5kZXgyKyspIHsNCj4gPiA+ID4gLSAgICAgICAgTHZs MlB0RW50cnlbSW5kZXgyXS5VaW50NjQgPSBCYXNlQWRkcmVzczsNCj4gPiA+ID4gLSAgICAgICAg U2V0U2Vjb25kTGV2ZWxQYWdpbmdFbnRyeUF0dHJpYnV0ZSAoJkx2bDJQdEVudHJ5W0luZGV4Ml0s DQo+ID4gPiA+IElvTW11QWNjZXNzKTsNCj4gPiA+ID4gLSAgICAgICAgTHZsMlB0RW50cnlbSW5k ZXgyXS5CaXRzLlBhZ2VTaXplID0gMTsNCj4gPiA+ID4gLSAgICAgICAgQmFzZUFkZHJlc3MgKz0g U0laRV8yTUI7DQo+ID4gPiA+ICsgICAgICBMdmwzUHRFbnRyeSA9IChWVERfU0VDT05EX0xFVkVM X1BBR0lOR19FTlRSWQ0KPiA+ID4gPiAqKShVSU5UTilWVERfNjRCSVRTX0FERFJFU1MoTHZsNFB0 RW50cnlbSW5kZXg0XS5CaXRzLkFkZHJlc3NMbywNCj4gPiA+ID4gTHZsNFB0RW50cnlbSW5kZXg0 XS5CaXRzLkFkZHJlc3NIaSk7DQo+ID4gPiA+ICsgICAgICBmb3IgKEluZGV4MyA9IEx2bDNTdGFy dDsgSW5kZXgzIDw9IEx2bDNFbmQ7IEluZGV4MysrKSB7DQo+ID4gPiA+ICsgICAgICAgIGlmIChM dmwzUHRFbnRyeVtJbmRleDNdLlVpbnQ2NCA9PSAwKSB7DQo+ID4gPiA+ICsgICAgICAgICAgTHZs M1B0RW50cnlbSW5kZXgzXS5VaW50NjQgPSAoVUlOVDY0KShVSU5UTilBbGxvY2F0ZVplcm9QYWdl cw0KPiAoMSk7DQo+ID4gPiA+ICsgICAgICAgICAgaWYgKEx2bDNQdEVudHJ5W0luZGV4M10uVWlu dDY0ID09IDApIHsNCj4gPiA+ID4gKyAgICAgICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsIiEh ISEhISBBTExPQ0FURSBMVkwzIFBBR0UgRkFJTA0KPiA+ID4gPiArICgweCV4LA0KPiA+ID4gPiAw eCV4KSEhISEhIVxuIiwgSW5kZXg0LCBJbmRleDMpKTsNCj4gPiA+ID4gKyAgICAgICAgICAgIEFT U0VSVChGQUxTRSk7DQo+ID4gPiA+ICsgICAgICAgICAgICByZXR1cm4gTlVMTDsNCj4gPiA+ID4g KyAgICAgICAgICB9DQo+ID4gPiA+ICsgICAgICAgICAgRmx1c2hQYWdlVGFibGVNZW1vcnkgKFZ0 ZEluZGV4LA0KPiA+ID4gPiArIChVSU5UTilMdmwzUHRFbnRyeVtJbmRleDNdLlVpbnQ2NCwNCj4g PiA+ID4gU0laRV80S0IpOw0KPiA+ID4gPiArICAgICAgICAgIFNldFNlY29uZExldmVsUGFnaW5n RW50cnlBdHRyaWJ1dGUNCj4gPiA+ID4gKyAoJkx2bDNQdEVudHJ5W0luZGV4M10sDQo+ID4gPiA+ IEVES0lJX0lPTU1VX0FDQ0VTU19SRUFEIHwgRURLSUlfSU9NTVVfQUNDRVNTX1dSSVRFKTsNCj4g PiA+ID4gKyAgICAgICAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgICAgIEx2bDJQdEVudHJ5 ID0gKFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZDQo+ID4gPiA+ICopKFVJTlROKVZURF82 NEJJVFNfQUREUkVTUyhMdmwzUHRFbnRyeVtJbmRleDNdLkJpdHMuQWRkcmVzc0xvLA0KPiA+ID4g PiBMdmwzUHRFbnRyeVtJbmRleDNdLkJpdHMuQWRkcmVzc0hpKTsNCj4gPiA+ID4gKyAgICAgICAg Zm9yIChJbmRleDIgPSAwOyBJbmRleDIgPA0KPiA+ID4gPiBTSVpFXzRLQi9zaXplb2YoVlREX1NF Q09ORF9MRVZFTF9QQUdJTkdfRU5UUlkpOyBJbmRleDIrKykgew0KPiA+ID4gPiArICAgICAgICAg IEx2bDJQdEVudHJ5W0luZGV4Ml0uVWludDY0ID0gQmFzZUFkZHJlc3M7DQo+ID4gPiA+ICsgICAg ICAgICAgU2V0U2Vjb25kTGV2ZWxQYWdpbmdFbnRyeUF0dHJpYnV0ZQ0KPiA+ID4gPiArICgmTHZs MlB0RW50cnlbSW5kZXgyXSwNCj4gPiA+ID4gSW9NbXVBY2Nlc3MpOw0KPiA+ID4gPiArICAgICAg ICAgIEx2bDJQdEVudHJ5W0luZGV4Ml0uQml0cy5QYWdlU2l6ZSA9IDE7DQo+ID4gPiA+ICsgICAg ICAgICAgQmFzZUFkZHJlc3MgKz0gU0laRV8yTUI7DQo+ID4gPiA+ICsgICAgICAgICAgaWYgKEJh c2VBZGRyZXNzID49IE1lbW9yeUxpbWl0KSB7DQo+ID4gPiA+ICsgICAgICAgICAgICBicmVhazsN Cj4gPiA+ID4gKyAgICAgICAgICB9DQo+ID4gPiA+ICsgICAgICAgIH0NCj4gPiA+ID4gKyAgICAg ICAgRmx1c2hQYWdlVGFibGVNZW1vcnkgKFZ0ZEluZGV4LCAoVUlOVE4pTHZsMlB0RW50cnksDQo+ ID4gPiA+ICsgU0laRV80S0IpOw0KPiA+ID4gPiAgICAgICAgICBpZiAoQmFzZUFkZHJlc3MgPj0g TWVtb3J5TGltaXQpIHsNCj4gPiA+ID4gICAgICAgICAgICBicmVhazsNCj4gPiA+ID4gICAgICAg ICAgfQ0KPiA+ID4gPiAgICAgICAgfQ0KPiA+ID4gPiAtICAgICAgRmx1c2hQYWdlVGFibGVNZW1v cnkgKFZ0ZEluZGV4LCAoVUlOVE4pTHZsMlB0RW50cnksIFNJWkVfNEtCKTsNCj4gPiA+ID4gKyAg ICAgIEZsdXNoUGFnZVRhYmxlTWVtb3J5IChWdGRJbmRleCwNCj4gPiA+ID4gKyAoVUlOVE4pJkx2 bDNQdEVudHJ5W0x2bDNTdGFydF0sDQo+ID4gPiA+IChVSU5UTikmTHZsM1B0RW50cnlbTHZsM0Vu ZCArIDFdIC0gKFVJTlROKSZMdmwzUHRFbnRyeVtMdmwzU3RhcnRdKTsNCj4gPiA+ID4gICAgICAg IGlmIChCYXNlQWRkcmVzcyA+PSBNZW1vcnlMaW1pdCkgew0KPiA+ID4gPiAgICAgICAgICBicmVh azsNCj4gPiA+ID4gICAgICAgIH0NCj4gPiA+ID4gICAgICB9DQo+ID4gPiA+IC0gICAgRmx1c2hQ YWdlVGFibGVNZW1vcnkgKFZ0ZEluZGV4LCAoVUlOVE4pJkx2bDNQdEVudHJ5W0x2bDNTdGFydF0s DQo+ID4gPiA+IChVSU5UTikmTHZsM1B0RW50cnlbTHZsM0VuZCArIDFdIC0gKFVJTlROKSZMdmwz UHRFbnRyeVtMdmwzU3RhcnRdKTsNCj4gPiA+ID4gLSAgICBpZiAoQmFzZUFkZHJlc3MgPj0gTWVt b3J5TGltaXQpIHsNCj4gPiA+ID4gLSAgICAgIGJyZWFrOw0KPiA+ID4gPiAtICAgIH0NCj4gPiA+ ID4gKyAgICBGbHVzaFBhZ2VUYWJsZU1lbW9yeSAoVnRkSW5kZXgsDQo+ID4gPiA+ICsgKFVJTlRO KSZMdmw0UHRFbnRyeVtMdmw0U3RhcnRdLA0KPiA+ID4gPiAoVUlOVE4pJkx2bDRQdEVudHJ5W0x2 bDRFbmQgKyAxXSAtIChVSU5UTikmTHZsNFB0RW50cnlbTHZsNFN0YXJ0XSk7DQo+ID4gPiA+ICAg IH0NCj4gPiA+ID4gLSAgRmx1c2hQYWdlVGFibGVNZW1vcnkgKFZ0ZEluZGV4LCAoVUlOVE4pJkx2 bDRQdEVudHJ5W0x2bDRTdGFydF0sDQo+ID4gPiA+IChVSU5UTikmTHZsNFB0RW50cnlbTHZsNEVu ZCArIDFdIC0NCj4gPiA+ID4gKFVJTlROKSZMdmw0UHRFbnRyeVtMdmw0U3RhcnRdKTsNCj4gPiA+ ID4gKyAgRmx1c2hQYWdlVGFibGVNZW1vcnkgKFZ0ZEluZGV4LCAoVUlOVE4pJkx2bDVQdEVudHJ5 W0x2bDVTdGFydF0sDQo+ID4gPiA+IChVSU5UTikmTHZsNVB0RW50cnlbTHZsNUVuZCArIDFdIC0N Cj4gPiA+ID4gKFVJTlROKSZMdmw1UHRFbnRyeVtMdmw1U3RhcnRdKTsNCj4gPiA+ID4NCj4gPiA+ ID4gICAgcmV0dXJuIFNlY29uZExldmVsUGFnaW5nRW50cnk7DQo+ID4gPiA+ICB9DQo+ID4gPiA+ IEBAIC0yNjYsMjYgKzMzMiwyOCBAQCBDcmVhdGVTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5VGFibGUg KA0KPiA+ID4gPg0KPiA+ID4gPiAgICBAcGFyYW1baW5dICBWdGRJbmRleCAgICAgICAgICAgICAg ICAgICAgVGhlIGluZGV4IG9mIHRoZSBWVGQgZW5naW5lLg0KPiA+ID4gPiAgICBAcGFyYW1baW5d ICBJb01tdUFjY2VzcyAgICAgICAgICAgICAgICAgVGhlIElPTU1VIGFjY2Vzcy4NCj4gPiA+ID4g KyAgQHBhcmFtW2luXSAgSXM1TGV2ZWxQYWdpbmcgICAgICAgICAgICAgIElmIGl0IGlzIHRoZSA1 IGxldmVsIHBhZ2luZy4NCj4gPiA+ID4NCj4gPiA+ID4gICAgQHJldHVybiBUaGUgc2Vjb25kIGxl dmVsIHBhZ2luZyBlbnRyeS4NCj4gPiA+ID4gICoqLw0KPiA+ID4gPiAgVlREX1NFQ09ORF9MRVZF TF9QQUdJTkdfRU5UUlkgKg0KPiA+ID4gPiAgQ3JlYXRlU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSAo DQo+ID4gPiA+ICAgIElOIFVJTlROICAgVnRkSW5kZXgsDQo+ID4gPiA+IC0gIElOIFVJTlQ2NCAg SW9NbXVBY2Nlc3MNCj4gPiA+ID4gKyAgSU4gVUlOVDY0ICBJb01tdUFjY2VzcywNCj4gPiA+ID4g KyAgSU4gQk9PTEVBTiBJczVMZXZlbFBhZ2luZw0KPiA+ID4gPiAgICApDQo+ID4gPiA+ICB7DQo+ ID4gPiA+ICAgIFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZICpTZWNvbmRMZXZlbFBhZ2lu Z0VudHJ5Ow0KPiA+ID4gPg0KPiA+ID4gPiAgICBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5ID0gTlVM TDsNCj4gPiA+ID4gLSAgU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSA9IENyZWF0ZVNlY29uZExldmVs UGFnaW5nRW50cnlUYWJsZQ0KPiA+ID4gPiAoVnRkSW5kZXgsIFNlY29uZExldmVsUGFnaW5nRW50 cnksIDAsIG1CZWxvdzRHTWVtb3J5TGltaXQsDQo+ID4gPiA+IElvTW11QWNjZXNzKTsNCj4gPiA+ ID4gKyAgU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSA9IENyZWF0ZVNlY29uZExldmVsUGFnaW5nRW50 cnlUYWJsZQ0KPiA+ID4gPiArIChWdGRJbmRleCwNCj4gPiA+ID4gU2Vjb25kTGV2ZWxQYWdpbmdF bnRyeSwgMCwgbUJlbG93NEdNZW1vcnlMaW1pdCwgSW9NbXVBY2Nlc3MsDQo+ID4gPiA+IElzNUxl dmVsUGFnaW5nKTsNCj4gPiA+ID4gICAgaWYgKFNlY29uZExldmVsUGFnaW5nRW50cnkgPT0gTlVM TCkgew0KPiA+ID4gPiAgICAgIHJldHVybiBOVUxMOw0KPiA+ID4gPiAgICB9DQo+ID4gPiA+DQo+ ID4gPiA+ICAgIGlmIChtQWJvdmU0R01lbW9yeUxpbWl0ICE9IDApIHsNCj4gPiA+ID4gICAgICBB U1NFUlQgKG1BYm92ZTRHTWVtb3J5TGltaXQgPiBCQVNFXzRHQik7DQo+ID4gPiA+IC0gICAgU2Vj b25kTGV2ZWxQYWdpbmdFbnRyeSA9IENyZWF0ZVNlY29uZExldmVsUGFnaW5nRW50cnlUYWJsZQ0K PiA+IChWdGRJbmRleCwNCj4gPiA+ID4gU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSwgU0laRV80R0Is IG1BYm92ZTRHTWVtb3J5TGltaXQsDQo+ID4gSW9NbXVBY2Nlc3MpOw0KPiA+ID4gPiArICAgIFNl Y29uZExldmVsUGFnaW5nRW50cnkgPSBDcmVhdGVTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5VGFibGUN Cj4gPiA+ID4gKyAoVnRkSW5kZXgsDQo+ID4gPiA+IFNlY29uZExldmVsUGFnaW5nRW50cnksIFNJ WkVfNEdCLCBtQWJvdmU0R01lbW9yeUxpbWl0LA0KPiA+ID4gPiBJb01tdUFjY2VzcywgSXM1TGV2 ZWxQYWdpbmcpOw0KPiA+ID4gPiAgICAgIGlmIChTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5ID09IE5V TEwpIHsNCj4gPiA+ID4gICAgICAgIHJldHVybiBOVUxMOw0KPiA+ID4gPiAgICAgIH0NCj4gPiA+ ID4gQEAgLTMyNiwxMSArMzk0LDEzIEBAIFNldHVwVHJhbnNsYXRpb25UYWJsZSAoDQo+ID4gPiA+ ICAvKioNCj4gPiA+ID4gICAgRHVtcCBETUFSIGNvbnRleHQgZW50cnkgdGFibGUuDQo+ID4gPiA+ DQo+ID4gPiA+IC0gIEBwYXJhbVtpbl0gIFJvb3RFbnRyeSBETUFSIHJvb3QgZW50cnkuDQo+ID4g PiA+ICsgIEBwYXJhbVtpbl0gIFJvb3RFbnRyeSAgICAgICBETUFSIHJvb3QgZW50cnkuDQo+ID4g PiA+ICsgIEBwYXJhbVtpbl0gIElzNUxldmVsUGFnaW5nICBJZiBpdCBpcyB0aGUgNSBsZXZlbCBw YWdpbmcuDQo+ID4gPiA+ICAqKi8NCj4gPiA+ID4gIFZPSUQNCj4gPiA+ID4gIER1bXBEbWFyQ29u dGV4dEVudHJ5VGFibGUgKA0KPiA+ID4gPiAtICBJTiBWVERfUk9PVF9FTlRSWSAqUm9vdEVudHJ5 DQo+ID4gPiA+ICsgIElOIFZURF9ST09UX0VOVFJZICpSb290RW50cnksDQo+ID4gPiA+ICsgIElO IEJPT0xFQU4gSXM1TGV2ZWxQYWdpbmcNCj4gPiA+ID4gICAgKQ0KPiA+ID4gPiAgew0KPiA+ID4g PiAgICBVSU5UTiAgICAgICAgICAgICAgICAgSW5kZXg7DQo+ID4gPiA+IEBAIC0zNTksNyArNDI5 LDcgQEAgRHVtcERtYXJDb250ZXh0RW50cnlUYWJsZSAoDQo+ID4gPiA+ICAgICAgICBpZiAoQ29u dGV4dEVudHJ5W0luZGV4Ml0uQml0cy5QcmVzZW50ID09IDApIHsNCj4gPiA+ID4gICAgICAgICAg Y29udGludWU7DQo+ID4gPiA+ICAgICAgICB9DQo+ID4gPiA+IC0gICAgICBEdW1wU2Vjb25kTGV2 ZWxQYWdpbmdFbnRyeSAoKFZPSUQNCj4gPiA+ID4gKikoVUlOVE4pVlREXzY0QklUU19BRERSRVNT KENvbnRleHRFbnRyeVtJbmRleDJdLkJpdHMuU2Vjb25kTGV2ZWxQDQo+ID4gPiA+IGFnDQo+ID4g PiA+IGUNCj4gPiA+ID4gVHJhbnNsYXRpb25Qb2ludGVyTG8sDQo+ID4gPiA+IENvbnRleHRFbnRy eVtJbmRleDJdLkJpdHMuU2Vjb25kTGV2ZWxQYWdlVHJhbnNsYXRpb25Qb2ludGVySGkpKTsNCj4g PiA+ID4gKyAgICAgIER1bXBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5ICgoVk9JRA0KPiA+ID4gPiAq KShVSU5UTilWVERfNjRCSVRTX0FERFJFU1MoQ29udGV4dEVudHJ5W0luZGV4Ml0uQml0cy5TZWNv bmRMZXZlbFANCj4gPiA+ID4gYWcNCj4gPiA+ID4gZQ0KPiA+ID4gPiBUcmFuc2xhdGlvblBvaW50 ZXJMbywNCj4gPiA+ID4gQ29udGV4dEVudHJ5W0luZGV4Ml0uQml0cy5TZWNvbmRMZXZlbFBhZ2VU cmFuc2xhdGlvblBvaW50ZXJIaSksDQo+ID4gPiA+IElzNUxldmVsUGFnaW5nKTsNCj4gPiA+ID4g ICAgICB9DQo+ID4gPiA+ICAgIH0NCj4gPiA+ID4gICAgREVCVUcgKChERUJVR19JTkZPLCI9PT09 PT09PT09PT09PT09PT09PT09PT09XG4iKSk7DQo+ID4gPiA+IEBAIC0zNjgsMTcgKzQzOCwyMiBA QCBEdW1wRG1hckNvbnRleHRFbnRyeVRhYmxlICgNCj4gPiA+ID4gIC8qKg0KPiA+ID4gPiAgICBE dW1wIERNQVIgc2Vjb25kIGxldmVsIHBhZ2luZyBlbnRyeS4NCj4gPiA+ID4NCj4gPiA+ID4gLSAg QHBhcmFtW2luXSAgU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSBUaGUgc2Vjb25kIGxldmVsIHBhZ2lu ZyBlbnRyeS4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSAg VGhlIHNlY29uZCBsZXZlbCBwYWdpbmcgZW50cnkuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIElz NUxldmVsUGFnaW5nICAgICAgICAgIElmIGl0IGlzIHRoZSA1IGxldmVsIHBhZ2luZy4NCj4gPiA+ ID4gICoqLw0KPiA+ID4gPiAgVk9JRA0KPiA+ID4gPiAgRHVtcFNlY29uZExldmVsUGFnaW5nRW50 cnkgKA0KPiA+ID4gPiAtICBJTiBWT0lEICpTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5DQo+ID4gPiA+ ICsgIElOIFZPSUQgKlNlY29uZExldmVsUGFnaW5nRW50cnksICBJTiBCT09MRUFOIElzNUxldmVs UGFnaW5nDQo+ID4gPiA+ICAgICkNCj4gPiA+ID4gIHsNCj4gPiA+ID4gKyAgVUlOVE4gICAgICAg ICAgICAgICAgICAgICAgICAgIEluZGV4NTsNCj4gPiA+ID4gICAgVUlOVE4gICAgICAgICAgICAg ICAgICAgICAgICAgIEluZGV4NDsNCj4gPiA+ID4gICAgVUlOVE4gICAgICAgICAgICAgICAgICAg ICAgICAgIEluZGV4MzsNCj4gPiA+ID4gICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAg IEluZGV4MjsNCj4gPiA+ID4gICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4 MTsNCj4gPiA+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIEx2bDVJbmRleEVu ZDsNCj4gPiA+ID4gKyAgVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkgICpMdmw1UHRFbnRy eTsNCj4gPiA+ID4gICAgVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkgICpMdmw0UHRFbnRy eTsNCj4gPiA+ID4gICAgVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkgICpMdmwzUHRFbnRy eTsNCj4gPiA+ID4gICAgVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkgICpMdmwyUHRFbnRy eTsgQEAgLTM4NiwzOA0KPiArNDYxLDUzDQo+ID4gPiBAQA0KPiA+ID4gPiBEdW1wU2Vjb25kTGV2 ZWxQYWdpbmdFbnRyeSAoDQo+ID4gPiA+DQo+ID4gPiA+ICAgIERFQlVHICgoREVCVUdfVkVSQk9T RSwiPT09PT09PT09PT09PT09PVxuIikpOw0KPiA+ID4gPiAgICBERUJVRyAoKERFQlVHX1ZFUkJP U0UsIkRNQVIgU2Vjb25kIExldmVsIFBhZ2UgVGFibGU6XG4iKSk7DQo+ID4gPiA+ICsgIERFQlVH ICgoREVCVUdfVkVSQk9TRSwiU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSBCYXNlIC0gMHgleCwNCj4g PiA+ID4gSXM1TGV2ZWxQYWdpbmcgLSAlZFxuIiwgU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSwgSXM1 TGV2ZWxQYWdpbmcpKTsNCj4gPiA+ID4NCj4gPiA+ID4gLSAgREVCVUcgKChERUJVR19WRVJCT1NF LCJTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5IEJhc2UgLSAweCV4XG4iLA0KPiA+ID4gPiBTZWNvbmRM ZXZlbFBhZ2luZ0VudHJ5KSk7DQo+ID4gPiA+ICsgIEx2bDVJbmRleEVuZCA9IElzNUxldmVsUGFn aW5nID8NCj4gPiA+ID4gU0laRV80S0Ivc2l6ZW9mKFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VO VFJZKSA6IDE7DQo+ID4gPiA+ICAgIEx2bDRQdEVudHJ5ID0gKFZURF9TRUNPTkRfTEVWRUxfUEFH SU5HX0VOVFJZDQo+ID4gPiA+ICopU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeTsNCj4gPiA+ID4gLSAg Zm9yIChJbmRleDQgPSAwOyBJbmRleDQgPA0KPiA+ID4gPiBTSVpFXzRLQi9zaXplb2YoVlREX1NF Q09ORF9MRVZFTF9QQUdJTkdfRU5UUlkpOyBJbmRleDQrKykgew0KPiA+ID4gPiAtICAgIGlmIChM dmw0UHRFbnRyeVtJbmRleDRdLlVpbnQ2NCAhPSAwKSB7DQo+ID4gPiA+IC0gICAgICBERUJVRyAo KERFQlVHX1ZFUkJPU0UsIiAgTHZsNFB0IEVudHJ5KDB4JTAzeCkgLSAweCUwMTZseFxuIiwNCj4g PiBJbmRleDQsDQo+ID4gPiA+IEx2bDRQdEVudHJ5W0luZGV4NF0uVWludDY0KSk7DQo+ID4gPiA+ IC0gICAgfQ0KPiA+ID4gPiAtICAgIGlmIChMdmw0UHRFbnRyeVtJbmRleDRdLlVpbnQ2NCA9PSAw KSB7DQo+ID4gPiA+IC0gICAgICBjb250aW51ZTsNCj4gPiA+ID4gLSAgICB9DQo+ID4gPiA+IC0g ICAgTHZsM1B0RW50cnkgPSAoVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkNCj4gPiA+ID4g KikoVUlOVE4pVlREXzY0QklUU19BRERSRVNTKEx2bDRQdEVudHJ5W0luZGV4NF0uQml0cy5BZGRy ZXNzTG8sDQo+ID4gPiA+IEx2bDRQdEVudHJ5W0luZGV4NF0uQml0cy5BZGRyZXNzSGkpOw0KPiA+ ID4gPiAtICAgIGZvciAoSW5kZXgzID0gMDsgSW5kZXgzIDwNCj4gPiA+ID4gU0laRV80S0Ivc2l6 ZW9mKFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZKTsgSW5kZXgzKyspIHsNCj4gPiA+ID4g LSAgICAgIGlmIChMdmwzUHRFbnRyeVtJbmRleDNdLlVpbnQ2NCAhPSAwKSB7DQo+ID4gPiA+IC0g ICAgICAgIERFQlVHICgoREVCVUdfVkVSQk9TRSwiICAgIEx2bDNQdCBFbnRyeSgweCUwM3gpIC0g MHglMDE2bHhcbiIsDQo+ID4gPiA+IEluZGV4MywgTHZsM1B0RW50cnlbSW5kZXgzXS5VaW50NjQp KTsNCj4gPiA+ID4gKyAgTHZsNVB0RW50cnkgPSAoVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5U UlkNCj4gPiA+ID4gKilTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5Ow0KPiA+ID4gPiArDQo+ID4gPiA+ ICsgIGZvciAoSW5kZXg1ID0gMDsgSW5kZXg1IDwgTHZsNUluZGV4RW5kOyBJbmRleDUrKykgew0K PiA+ID4gPiArICAgIGlmIChJczVMZXZlbFBhZ2luZykgew0KPiA+ID4gPiArICAgICAgaWYgKEx2 bDVQdEVudHJ5W0luZGV4NV0uVWludDY0ICE9IDApIHsNCj4gPiA+ID4gKyAgICAgICAgREVCVUcg KChERUJVR19WRVJCT1NFLCIgIEx2bDVQdCBFbnRyeSgweCUwM3gpIC0NCj4gPiA+ID4gKyAweCUw MTZseFxuIiwNCj4gPiA+ID4gSW5kZXg1LCBMdmw1UHRFbnRyeVtJbmRleDVdLlVpbnQ2NCkpOw0K PiA+ID4gPiAgICAgICAgfQ0KPiA+ID4gPiAtICAgICAgaWYgKEx2bDNQdEVudHJ5W0luZGV4M10u VWludDY0ID09IDApIHsNCj4gPiA+ID4gKyAgICAgIGlmIChMdmw1UHRFbnRyeVtJbmRleDVdLlVp bnQ2NCA9PSAwKSB7DQo+ID4gPiA+ICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ID4gPiAgICAgICAg fQ0KPiA+ID4gPiArICAgICAgTHZsNFB0RW50cnkgPSAoVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdf RU5UUlkNCj4gPiA+ID4gKikoVUlOVE4pVlREXzY0QklUU19BRERSRVNTKEx2bDVQdEVudHJ5W0lu ZGV4NV0uQml0cy5BZGRyZXNzTG8sDQo+ID4gPiA+IEx2bDVQdEVudHJ5W0luZGV4NV0uQml0cy5B ZGRyZXNzSGkpOw0KPiA+ID4gPiArICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gLSAgICAgIEx2bDJQ dEVudHJ5ID0gKFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZDQo+ID4gPiA+ICopKFVJTlRO KVZURF82NEJJVFNfQUREUkVTUyhMdmwzUHRFbnRyeVtJbmRleDNdLkJpdHMuQWRkcmVzc0xvLA0K PiA+ID4gPiBMdmwzUHRFbnRyeVtJbmRleDNdLkJpdHMuQWRkcmVzc0hpKTsNCj4gPiA+ID4gLSAg ICAgIGZvciAoSW5kZXgyID0gMDsgSW5kZXgyIDwNCj4gPiA+ID4gU0laRV80S0Ivc2l6ZW9mKFZU RF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZKTsgSW5kZXgyKyspIHsNCj4gPiA+ID4gLSAgICAg ICAgaWYgKEx2bDJQdEVudHJ5W0luZGV4Ml0uVWludDY0ICE9IDApIHsNCj4gPiA+ID4gLSAgICAg ICAgICBERUJVRyAoKERFQlVHX1ZFUkJPU0UsIiAgICAgIEx2bDJQdCBFbnRyeSgweCUwM3gpIC0N Cj4gMHglMDE2bHhcbiIsDQo+ID4gPiA+IEluZGV4MiwgTHZsMlB0RW50cnlbSW5kZXgyXS5VaW50 NjQpKTsNCj4gPiA+ID4gKyAgICBmb3IgKEluZGV4NCA9IDA7IEluZGV4NCA8DQo+ID4gPiA+IFNJ WkVfNEtCL3NpemVvZihWVERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWSk7IEluZGV4NCsrKSB7 DQo+ID4gPiA+ICsgICAgICBpZiAoTHZsNFB0RW50cnlbSW5kZXg0XS5VaW50NjQgIT0gMCkgew0K PiA+ID4gPiArICAgICAgICBERUJVRyAoKERFQlVHX1ZFUkJPU0UsIiAgTHZsNFB0IEVudHJ5KDB4 JTAzeCkgLQ0KPiA+ID4gPiArIDB4JTAxNmx4XG4iLA0KPiA+ID4gPiBJbmRleDQsIEx2bDRQdEVu dHJ5W0luZGV4NF0uVWludDY0KSk7DQo+ID4gPiA+ICsgICAgICB9DQo+ID4gPiA+ICsgICAgICBp ZiAoTHZsNFB0RW50cnlbSW5kZXg0XS5VaW50NjQgPT0gMCkgew0KPiA+ID4gPiArICAgICAgICBj b250aW51ZTsNCj4gPiA+ID4gKyAgICAgIH0NCj4gPiA+ID4gKyAgICAgIEx2bDNQdEVudHJ5ID0g KFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZDQo+ID4gPiA+ICopKFVJTlROKVZURF82NEJJ VFNfQUREUkVTUyhMdmw0UHRFbnRyeVtJbmRleDRdLkJpdHMuQWRkcmVzc0xvLA0KPiA+ID4gPiBM dmw0UHRFbnRyeVtJbmRleDRdLkJpdHMuQWRkcmVzc0hpKTsNCj4gPiA+ID4gKyAgICAgIGZvciAo SW5kZXgzID0gMDsgSW5kZXgzIDwNCj4gPiA+ID4gU0laRV80S0Ivc2l6ZW9mKFZURF9TRUNPTkRf TEVWRUxfUEFHSU5HX0VOVFJZKTsgSW5kZXgzKyspIHsNCj4gPiA+ID4gKyAgICAgICAgaWYgKEx2 bDNQdEVudHJ5W0luZGV4M10uVWludDY0ICE9IDApIHsNCj4gPiA+ID4gKyAgICAgICAgICBERUJV RyAoKERFQlVHX1ZFUkJPU0UsIiAgIEx2bDNQdCBFbnRyeSgweCUwM3gpIC0gMHglMDE2bHhcbiIs DQo+ID4gPiA+IEluZGV4MywgTHZsM1B0RW50cnlbSW5kZXgzXS5VaW50NjQpKTsNCj4gPiA+ID4g ICAgICAgICAgfQ0KPiA+ID4gPiAtICAgICAgICBpZiAoTHZsMlB0RW50cnlbSW5kZXgyXS5VaW50 NjQgPT0gMCkgew0KPiA+ID4gPiArICAgICAgICBpZiAoTHZsM1B0RW50cnlbSW5kZXgzXS5VaW50 NjQgPT0gMCkgew0KPiA+ID4gPiAgICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ID4gPiAgICAgICAg ICB9DQo+ID4gPiA+IC0gICAgICAgIGlmIChMdmwyUHRFbnRyeVtJbmRleDJdLkJpdHMuUGFnZVNp emUgPT0gMCkgew0KPiA+ID4gPiAtICAgICAgICAgIEx2bDFQdEVudHJ5ID0gKFZURF9TRUNPTkRf TEVWRUxfUEFHSU5HX0VOVFJZDQo+ID4gPiA+ICopKFVJTlROKVZURF82NEJJVFNfQUREUkVTUyhM dmwyUHRFbnRyeVtJbmRleDJdLkJpdHMuQWRkcmVzc0xvLA0KPiA+ID4gPiBMdmwyUHRFbnRyeVtJ bmRleDJdLkJpdHMuQWRkcmVzc0hpKTsNCj4gPiA+ID4gLSAgICAgICAgICBmb3IgKEluZGV4MSA9 IDA7IEluZGV4MSA8DQo+ID4gPiA+IFNJWkVfNEtCL3NpemVvZihWVERfU0VDT05EX0xFVkVMX1BB R0lOR19FTlRSWSk7IEluZGV4MSsrKSB7DQo+ID4gPiA+IC0gICAgICAgICAgICBpZiAoTHZsMVB0 RW50cnlbSW5kZXgxXS5VaW50NjQgIT0gMCkgew0KPiA+ID4gPiAtICAgICAgICAgICAgICBERUJV RyAoKERFQlVHX1ZFUkJPU0UsIiAgICAgICAgTHZsMVB0IEVudHJ5KDB4JTAzeCkgLQ0KPiA+ID4g MHglMDE2bHhcbiIsDQo+ID4gPiA+IEluZGV4MSwgTHZsMVB0RW50cnlbSW5kZXgxXS5VaW50NjQp KTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICAgICBMdmwyUHRFbnRyeSA9IChWVERfU0VDT05E X0xFVkVMX1BBR0lOR19FTlRSWQ0KPiA+ID4gPiAqKShVSU5UTilWVERfNjRCSVRTX0FERFJFU1Mo THZsM1B0RW50cnlbSW5kZXgzXS5CaXRzLkFkZHJlc3NMbywNCj4gPiA+ID4gTHZsM1B0RW50cnlb SW5kZXgzXS5CaXRzLkFkZHJlc3NIaSk7DQo+ID4gPiA+ICsgICAgICAgIGZvciAoSW5kZXgyID0g MDsgSW5kZXgyIDwNCj4gPiA+ID4gU0laRV80S0Ivc2l6ZW9mKFZURF9TRUNPTkRfTEVWRUxfUEFH SU5HX0VOVFJZKTsgSW5kZXgyKyspIHsNCj4gPiA+ID4gKyAgICAgICAgICBpZiAoTHZsMlB0RW50 cnlbSW5kZXgyXS5VaW50NjQgIT0gMCkgew0KPiA+ID4gPiArICAgICAgICAgICAgREVCVUcgKChE RUJVR19WRVJCT1NFLCIgICAgTHZsMlB0IEVudHJ5KDB4JTAzeCkgLQ0KPiAweCUwMTZseFxuIiwN Cj4gPiA+ID4gSW5kZXgyLCBMdmwyUHRFbnRyeVtJbmRleDJdLlVpbnQ2NCkpOw0KPiA+ID4gPiAr ICAgICAgICAgIH0NCj4gPiA+ID4gKyAgICAgICAgICBpZiAoTHZsMlB0RW50cnlbSW5kZXgyXS5V aW50NjQgPT0gMCkgew0KPiA+ID4gPiArICAgICAgICAgICAgY29udGludWU7DQo+ID4gPiA+ICsg ICAgICAgICAgfQ0KPiA+ID4gPiArICAgICAgICAgIGlmIChMdmwyUHRFbnRyeVtJbmRleDJdLkJp dHMuUGFnZVNpemUgPT0gMCkgew0KPiA+ID4gPiArICAgICAgICAgICAgTHZsMVB0RW50cnkgPSAo VlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkNCj4gPiA+ID4gKikoVUlOVE4pVlREXzY0QklU U19BRERSRVNTKEx2bDJQdEVudHJ5W0luZGV4Ml0uQml0cy5BZGRyZXNzTG8sDQo+ID4gPiA+IEx2 bDJQdEVudHJ5W0luZGV4Ml0uQml0cy5BZGRyZXNzSGkpOw0KPiA+ID4gPiArICAgICAgICAgICAg Zm9yIChJbmRleDEgPSAwOyBJbmRleDEgPA0KPiA+ID4gPiBTSVpFXzRLQi9zaXplb2YoVlREX1NF Q09ORF9MRVZFTF9QQUdJTkdfRU5UUlkpOyBJbmRleDErKykgew0KPiA+ID4gPiArICAgICAgICAg ICAgICBpZiAoTHZsMVB0RW50cnlbSW5kZXgxXS5VaW50NjQgIT0gMCkgew0KPiA+ID4gPiArICAg ICAgICAgICAgICAgIERFQlVHICgoREVCVUdfVkVSQk9TRSwiICAgICAgTHZsMVB0IEVudHJ5KDB4 JTAzeCkgLQ0KPiA+ID4gMHglMDE2bHhcbiIsDQo+ID4gPiA+IEluZGV4MSwgTHZsMVB0RW50cnlb SW5kZXgxXS5VaW50NjQpKTsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgfQ0KPiA+ID4gPiAgICAg ICAgICAgICAgfQ0KPiA+ID4gPiAgICAgICAgICAgIH0NCj4gPiA+ID4gICAgICAgICAgfQ0KPiA+ ID4gPiBAQCAtNTEwLDYgKzYwMCw3IEBAIFBhZ2VBdHRyaWJ1dGVUb0xlbmd0aCAoDQo+ID4gPiA+ ICAgIEBwYXJhbVtpbl0gICBWdGRJbmRleCAgICAgICAgICAgICAgICAgVGhlIGluZGV4IHVzZWQg dG8gaWRlbnRpZnkgYSBWVGQNCj4gZW5naW5lLg0KPiA+ID4gPiAgICBAcGFyYW1baW5dICAgU2Vj b25kTGV2ZWxQYWdpbmdFbnRyeSAgIFRoZSBzZWNvbmQgbGV2ZWwgcGFnaW5nIGVudHJ5IGluDQo+ ID4gPiA+IFZUZCB0YWJsZSBmb3IgdGhlIGRldmljZS4NCj4gPiA+ID4gICAgQHBhcmFtW2luXSAg IEFkZHJlc3MgICAgICAgICAgICAgICAgICBUaGUgYWRkcmVzcyB0byBiZSBjaGVja2VkLg0KPiA+ ID4gPiArICBAcGFyYW1baW5dICAgSXM1TGV2ZWxQYWdpbmcgICAgICAgICAgIElmIGl0IGlzIHRo ZSA1IGxldmVsIHBhZ2luZy4NCj4gPiA+ID4gICAgQHBhcmFtW291dF0gIFBhZ2VBdHRyaWJ1dGVz ICAgICAgICAgICBUaGUgcGFnZSBhdHRyaWJ1dGUgb2YgdGhlIHBhZ2UNCj4gZW50cnkuDQo+ID4g PiA+DQo+ID4gPiA+ICAgIEByZXR1cm4gVGhlIHBhZ2UgZW50cnkuDQo+ID4gPiA+IEBAIC01MTks NiArNjEwLDcgQEAgR2V0U2Vjb25kTGV2ZWxQYWdlVGFibGVFbnRyeSAoDQo+ID4gPiA+ICAgIElO ICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICBWdGRJbmRleCwNCj4gPiA+ID4gICAgSU4g IFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZICpTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5LA0K PiA+ID4gPiAgICBJTiAgUEhZU0lDQUxfQUREUkVTUyAgICAgICAgICAgICAgQWRkcmVzcywNCj4g PiA+ID4gKyAgSU4gIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgIElzNUxldmVsUGFnaW5n LA0KPiA+ID4gPiAgICBPVVQgUEFHRV9BVFRSSUJVVEUgICAgICAgICAgICAgICAgKlBhZ2VBdHRy aWJ1dGUNCj4gPiA+ID4gICAgKQ0KPiA+ID4gPiAgew0KPiA+ID4gPiBAQCAtNTI2LDE3ICs2MTgs MzggQEAgR2V0U2Vjb25kTGV2ZWxQYWdlVGFibGVFbnRyeSAoDQo+ID4gPiA+ICAgIFVJTlROICAg ICAgICAgICAgICAgICBJbmRleDI7DQo+ID4gPiA+ICAgIFVJTlROICAgICAgICAgICAgICAgICBJ bmRleDM7DQo+ID4gPiA+ICAgIFVJTlROICAgICAgICAgICAgICAgICBJbmRleDQ7DQo+ID4gPiA+ ICsgIFVJTlROICAgICAgICAgICAgICAgICBJbmRleDU7DQo+ID4gPiA+ICAgIFVJTlQ2NCAgICAg ICAgICAgICAgICAqTDFQYWdlVGFibGU7DQo+ID4gPiA+ICAgIFVJTlQ2NCAgICAgICAgICAgICAg ICAqTDJQYWdlVGFibGU7DQo+ID4gPiA+ICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAqTDNQYWdl VGFibGU7DQo+ID4gPiA+ICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAqTDRQYWdlVGFibGU7DQo+ ID4gPiA+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAqTDVQYWdlVGFibGU7DQo+ID4gPiA+DQo+ ID4gPiA+ICsgIEluZGV4NSA9ICgoVUlOVE4pUlNoaWZ0VTY0IChBZGRyZXNzLCA0OCkpICYNCj4g PiA+ID4gKyBQQUdJTkdfVlREX0lOREVYX01BU0s7DQo+ID4gPiA+ICAgIEluZGV4NCA9ICgoVUlO VE4pUlNoaWZ0VTY0IChBZGRyZXNzLCAzOSkpICYNCj4gUEFHSU5HX1ZURF9JTkRFWF9NQVNLOw0K PiA+ID4gPiAgICBJbmRleDMgPSAoKFVJTlROKUFkZHJlc3MgPj4gMzApICYgUEFHSU5HX1ZURF9J TkRFWF9NQVNLOw0KPiA+ID4gPiAgICBJbmRleDIgPSAoKFVJTlROKUFkZHJlc3MgPj4gMjEpICYg UEFHSU5HX1ZURF9JTkRFWF9NQVNLOw0KPiA+ID4gPiAgICBJbmRleDEgPSAoKFVJTlROKUFkZHJl c3MgPj4gMTIpICYgUEFHSU5HX1ZURF9JTkRFWF9NQVNLOw0KPiA+ID4gPg0KPiA+ID4gPiAtICBM NFBhZ2VUYWJsZSA9IChVSU5UNjQgKilTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5Ow0KPiA+ID4gPiAr ICBpZiAoSXM1TGV2ZWxQYWdpbmcpIHsNCj4gPiA+ID4gKyAgICBMNVBhZ2VUYWJsZSA9IChVSU5U NjQgKilTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5Ow0KPiA+ID4gPiArICAgIGlmIChMNVBhZ2VUYWJs ZVtJbmRleDVdID09IDApIHsNCj4gPiA+ID4gKyAgICAgIEw1UGFnZVRhYmxlW0luZGV4NV0gPSAo VUlOVDY0KShVSU5UTilBbGxvY2F0ZVplcm9QYWdlcyAoMSk7DQo+ID4gPiA+ICsgICAgICBpZiAo TDVQYWdlVGFibGVbSW5kZXg1XSA9PSAwKSB7DQo+ID4gPiA+ICsgICAgICAgIERFQlVHICgoREVC VUdfRVJST1IsIiEhISEhISBBTExPQ0FURSBMVkw1IFBBR0UgRkFJTA0KPiA+ID4gPiAoMHgleCkh ISEhISFcbiIsIEluZGV4NCkpOw0KPiA+ID4gPiArICAgICAgICBBU1NFUlQoRkFMU0UpOw0KPiA+ ID4gPiArICAgICAgICAqUGFnZUF0dHJpYnV0ZSA9IFBhZ2VOb25lOw0KPiA+ID4gPiArICAgICAg ICByZXR1cm4gTlVMTDsNCj4gPiA+ID4gKyAgICAgIH0NCj4gPiA+ID4gKyAgICAgIEZsdXNoUGFn ZVRhYmxlTWVtb3J5IChWdGRJbmRleCwgKFVJTlROKUw1UGFnZVRhYmxlW0luZGV4NV0sDQo+ID4g PiA+IFNJWkVfNEtCKTsNCj4gPiA+ID4gKyAgICAgIFNldFNlY29uZExldmVsUGFnaW5nRW50cnlB dHRyaWJ1dGUNCj4gPiA+ID4gKChWVERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWSAqKSZMNVBh Z2VUYWJsZVtJbmRleDVdLA0KPiA+ID4gPiBFREtJSV9JT01NVV9BQ0NFU1NfUkVBRCB8IEVES0lJ X0lPTU1VX0FDQ0VTU19XUklURSk7DQo+ID4gPiA+ICsgICAgICBGbHVzaFBhZ2VUYWJsZU1lbW9y eSAoVnRkSW5kZXgsDQo+ID4gPiA+ICsgKFVJTlROKSZMNVBhZ2VUYWJsZVtJbmRleDVdLA0KPiA+ ID4gPiBzaXplb2YoTDVQYWdlVGFibGVbSW5kZXg1XSkpOw0KPiA+ID4gPiArICAgIH0NCj4gPiA+ ID4gKyAgICBMNFBhZ2VUYWJsZSA9IChVSU5UNjQgKikoVUlOVE4pKEw1UGFnZVRhYmxlW0luZGV4 NV0gJg0KPiA+ID4gPiBQQUdJTkdfNEtfQUREUkVTU19NQVNLXzY0KTsNCj4gPiA+ID4gKyAgfSBl bHNlIHsNCj4gPiA+ID4gKyAgICBMNFBhZ2VUYWJsZSA9IChVSU5UNjQgKilTZWNvbmRMZXZlbFBh Z2luZ0VudHJ5OyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICAgIGlmIChMNFBhZ2VUYWJsZVtJbmRl eDRdID09IDApIHsNCj4gPiA+ID4gICAgICBMNFBhZ2VUYWJsZVtJbmRleDRdID0gKFVJTlQ2NCko VUlOVE4pQWxsb2NhdGVaZXJvUGFnZXMgKDEpOw0KPiA+ID4gPiAgICAgIGlmIChMNFBhZ2VUYWJs ZVtJbmRleDRdID09IDApIHsgQEAgLTc4NSw3ICs4OTgsNyBAQA0KPiA+ID4gPiBTZXRTZWNvbmRM ZXZlbFBhZ2luZ0F0dHJpYnV0ZSAoDQo+ID4gPiA+ICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gICAg d2hpbGUgKExlbmd0aCAhPSAwKSB7DQo+ID4gPiA+IC0gICAgUGFnZUVudHJ5ID0gR2V0U2Vjb25k TGV2ZWxQYWdlVGFibGVFbnRyeSAoVnRkSW5kZXgsDQo+ID4gPiA+IFNlY29uZExldmVsUGFnaW5n RW50cnksIEJhc2VBZGRyZXNzLCAmUGFnZUF0dHJpYnV0ZSk7DQo+ID4gPiA+ICsgICAgUGFnZUVu dHJ5ID0gR2V0U2Vjb25kTGV2ZWxQYWdlVGFibGVFbnRyeSAoVnRkSW5kZXgsDQo+ID4gPiA+IFNl Y29uZExldmVsUGFnaW5nRW50cnksIEJhc2VBZGRyZXNzLA0KPiA+ID4gPiBtVnRkVW5pdEluZm9y bWF0aW9uW1Z0ZEluZGV4XS5JczVMZXZlbFBhZ2luZywgJlBhZ2VBdHRyaWJ1dGUpOw0KPiA+ID4g PiAgICAgIGlmIChQYWdlRW50cnkgPT0gTlVMTCkgew0KPiA+ID4gPiAgICAgICAgREVCVUcgKChE RUJVR19FUlJPUiwgIlBhZ2VFbnRyeSAtIE5VTExcbiIpKTsNCj4gPiA+ID4gICAgICAgIHJldHVy biBSRVRVUk5fVU5TVVBQT1JURUQ7DQo+ID4gPiA+IEBAIC05MTMsNyArMTAyNiw3IEBAIFNldEFj Y2Vzc0F0dHJpYnV0ZSAoDQo+ID4gPiA+DQo+ID4gPiA+ICAgIGlmIChFeHRDb250ZXh0RW50cnkg IT0gTlVMTCkgew0KPiA+ID4gPiAgICAgIGlmIChFeHRDb250ZXh0RW50cnktPkJpdHMuUHJlc2Vu dCA9PSAwKSB7DQo+ID4gPiA+IC0gICAgICBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5ID0gQ3JlYXRl U2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSAoVnRkSW5kZXgsDQo+IDApOw0KPiA+ID4gPiArICAgICAg U2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSA9IENyZWF0ZVNlY29uZExldmVsUGFnaW5nRW50cnkNCj4g PiA+ID4gKyAoVnRkSW5kZXgsIDAsDQo+ID4gPiA+IG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5k ZXhdLklzNUxldmVsUGFnaW5nKTsNCj4gPiA+ID4gICAgICAgIERFQlVHICgoREVCVUdfVkVSQk9T RSwiU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSAtIDB4JXggKFMlMDR4DQo+ID4gPiA+IEIlMDJ4IEQl MDJ4IEYlMDJ4KSBOZXdcbiIsIFNlY29uZExldmVsUGFnaW5nRW50cnksIFNlZ21lbnQsDQo+ID4g PiA+IFNvdXJjZUlkLkJpdHMuQnVzLCBTb3VyY2VJZC5CaXRzLkRldmljZSwgU291cmNlSWQuQml0 cy5GdW5jdGlvbikpOw0KPiA+ID4gPiAgICAgICAgUHQgPSAoVUlOVDY0KVJTaGlmdFU2NA0KPiA+ ID4gPiAoKFVJTlQ2NCkoVUlOVE4pU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSwNCj4gPiA+ID4gMTIp Ow0KPiA+ID4gPg0KPiA+ID4gPiBAQCAtOTIyLDcgKzEwMzUsNyBAQCBTZXRBY2Nlc3NBdHRyaWJ1 dGUgKA0KPiA+ID4gPiAgICAgICAgRXh0Q29udGV4dEVudHJ5LT5CaXRzLkRvbWFpbklkZW50aWZp ZXIgPSBEb21haW5JZGVudGlmaWVyOw0KPiA+ID4gPiAgICAgICAgRXh0Q29udGV4dEVudHJ5LT5C aXRzLlByZXNlbnQgPSAxOw0KPiA+ID4gPiAgICAgICAgRmx1c2hQYWdlVGFibGVNZW1vcnkgKFZ0 ZEluZGV4LCAoVUlOVE4pRXh0Q29udGV4dEVudHJ5LA0KPiA+ID4gPiBzaXplb2YoKkV4dENvbnRl eHRFbnRyeSkpOw0KPiA+ID4gPiAtICAgICAgRHVtcERtYXJFeHRDb250ZXh0RW50cnlUYWJsZQ0K PiA+ID4gPiAobVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0uRXh0Um9vdEVudHJ5VGFibGUp Ow0KPiA+ID4gPiArICAgICAgRHVtcERtYXJFeHRDb250ZXh0RW50cnlUYWJsZQ0KPiA+ID4gPiAo bVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0uRXh0Um9vdEVudHJ5VGFibGUsDQo+ID4gPiA+ IG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLklzNUxldmVsUGFnaW5nKTsNCj4gPiA+ID4g ICAgICAgIG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLkhhc0RpcnR5Q29udGV4dCA9IFRS VUU7DQo+ID4gPiA+ICAgICAgfSBlbHNlIHsNCj4gPiA+ID4gICAgICAgIFNlY29uZExldmVsUGFn aW5nRW50cnkgPSAoVk9JRA0KPiA+ID4gPiAqKShVSU5UTilWVERfNjRCSVRTX0FERFJFU1MoRXh0 Q29udGV4dEVudHJ5LQ0KPiA+ID4gPiA+Qml0cy5TZWNvbmRMZXZlbFBhZ2VUcmFuc2xhdGlvblBv aW50ZXJMbywgRXh0Q29udGV4dEVudHJ5LQ0KPiA+ID4gPiA+Qml0cy5TZWNvbmRMZXZlbFBhZ2VU cmFuc2xhdGlvblBvaW50ZXJIaSk7DQo+ID4gPiA+IEBAIC05MzAsNyArMTA0Myw3IEBAIFNldEFj Y2Vzc0F0dHJpYnV0ZSAoDQo+ID4gPiA+ICAgICAgfQ0KPiA+ID4gPiAgICB9IGVsc2UgaWYgKENv bnRleHRFbnRyeSAhPSBOVUxMKSB7DQo+ID4gPiA+ICAgICAgaWYgKENvbnRleHRFbnRyeS0+Qml0 cy5QcmVzZW50ID09IDApIHsNCj4gPiA+ID4gLSAgICAgIFNlY29uZExldmVsUGFnaW5nRW50cnkg PSBDcmVhdGVTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5IChWdGRJbmRleCwNCj4gMCk7DQo+ID4gPiA+ ICsgICAgICBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5ID0gQ3JlYXRlU2Vjb25kTGV2ZWxQYWdpbmdF bnRyeQ0KPiA+ID4gPiArIChWdGRJbmRleCwgMCwNCj4gPiA+ID4gbVZ0ZFVuaXRJbmZvcm1hdGlv bltWdGRJbmRleF0uSXM1TGV2ZWxQYWdpbmcpOw0KPiA+ID4gPiAgICAgICAgREVCVUcgKChERUJV R19WRVJCT1NFLCJTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5IC0gMHgleCAoUyUwNHgNCj4gPiA+ID4g QiUwMnggRCUwMnggRiUwMngpIE5ld1xuIiwgU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSwgU2VnbWVu dCwNCj4gPiA+ID4gU291cmNlSWQuQml0cy5CdXMsIFNvdXJjZUlkLkJpdHMuRGV2aWNlLCBTb3Vy Y2VJZC5CaXRzLkZ1bmN0aW9uKSk7DQo+ID4gPiA+ICAgICAgICBQdCA9IChVSU5UNjQpUlNoaWZ0 VTY0DQo+ID4gPiA+ICgoVUlOVDY0KShVSU5UTilTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5LA0KPiA+ ID4gPiAxMik7DQo+ID4gPiA+DQo+ID4gPiA+IEBAIC05MzksNyArMTA1Miw3IEBAIFNldEFjY2Vz c0F0dHJpYnV0ZSAoDQo+ID4gPiA+ICAgICAgICBDb250ZXh0RW50cnktPkJpdHMuRG9tYWluSWRl bnRpZmllciA9IERvbWFpbklkZW50aWZpZXI7DQo+ID4gPiA+ICAgICAgICBDb250ZXh0RW50cnkt PkJpdHMuUHJlc2VudCA9IDE7DQo+ID4gPiA+ICAgICAgICBGbHVzaFBhZ2VUYWJsZU1lbW9yeSAo VnRkSW5kZXgsIChVSU5UTilDb250ZXh0RW50cnksDQo+ID4gPiA+IHNpemVvZigqQ29udGV4dEVu dHJ5KSk7DQo+ID4gPiA+IC0gICAgICBEdW1wRG1hckNvbnRleHRFbnRyeVRhYmxlDQo+ID4gPiA+ IChtVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5Sb290RW50cnlUYWJsZSk7DQo+ID4gPiA+ ICsgICAgICBEdW1wRG1hckNvbnRleHRFbnRyeVRhYmxlDQo+ID4gPiA+IChtVnRkVW5pdEluZm9y bWF0aW9uW1Z0ZEluZGV4XS5Sb290RW50cnlUYWJsZSwNCj4gPiA+ID4gbVZ0ZFVuaXRJbmZvcm1h dGlvbltWdGRJbmRleF0uSXM1TGV2ZWxQYWdpbmcpOw0KPiA+ID4gPiAgICAgICAgbVZ0ZFVuaXRJ bmZvcm1hdGlvbltWdGRJbmRleF0uSGFzRGlydHlDb250ZXh0ID0gVFJVRTsNCj4gPiA+ID4gICAg ICB9IGVsc2Ugew0KPiA+ID4gPiAgICAgICAgU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSA9IChWT0lE DQo+ID4gPiA+ICopKFVJTlROKVZURF82NEJJVFNfQUREUkVTUyhDb250ZXh0RW50cnktDQo+ID4g PiA+ID5CaXRzLlNlY29uZExldmVsUGFnZVRyYW5zbGF0aW9uUG9pbnRlckxvLCBDb250ZXh0RW50 cnktDQo+ID4gPiA+ID5CaXRzLlNlY29uZExldmVsUGFnZVRyYW5zbGF0aW9uUG9pbnRlckhpKTsN Cj4gPiA+ID4gQEAgLTEwMDAsNyArMTExMyw3IEBAIEFsd2F5c0VuYWJsZVBhZ2VBdHRyaWJ1dGUg KA0KPiA+ID4gPg0KPiA+ID4gPiAgICBpZiAobVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0u Rml4ZWRTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5ID09IDApIHsNCj4gPiA+ID4gICAgICBERUJVRygo REVCVUdfSU5GTywgIkNyZWF0ZVNlY29uZExldmVsUGFnaW5nRW50cnkgLSAlZFxuIiwNCj4gPiA+ ID4gVnRkSW5kZXgpKTsNCj4gPiA+ID4gLSAgICBtVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4 XS5GaXhlZFNlY29uZExldmVsUGFnaW5nRW50cnkgPQ0KPiA+ID4gPiBDcmVhdGVTZWNvbmRMZXZl bFBhZ2luZ0VudHJ5IChWdGRJbmRleCwgRURLSUlfSU9NTVVfQUNDRVNTX1JFQUQgfA0KPiA+ID4g PiBFREtJSV9JT01NVV9BQ0NFU1NfV1JJVEUpOw0KPiA+ID4gPiArICAgIG1WdGRVbml0SW5mb3Jt YXRpb25bVnRkSW5kZXhdLkZpeGVkU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSA9DQo+ID4gPiA+IENy ZWF0ZVNlY29uZExldmVsUGFnaW5nRW50cnkgKFZ0ZEluZGV4LCBFREtJSV9JT01NVV9BQ0NFU1Nf UkVBRCB8DQo+ID4gPiA+IEVES0lJX0lPTU1VX0FDQ0VTU19XUklURSwNCj4gPiA+ID4gbVZ0ZFVu aXRJbmZvcm1hdGlvbltWdGRJbmRleF0uSXM1TGV2ZWxQYWdpbmcpOw0KPiA+ID4gPiAgICB9DQo+ ID4gPiA+DQo+ID4gPiA+ICAgIFNlY29uZExldmVsUGFnaW5nRW50cnkgPQ0KPiA+ID4gPiBtVnRk VW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5GaXhlZFNlY29uZExldmVsUGFnaW5nRW50cnk7DQo+ ID4gPiA+IGRpZmYgLS1naXQNCj4gPiA+ID4NCj4gYS9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNv blBrZy9GZWF0dXJlL1ZUZC9JbnRlbFZUZER4ZS9UcmFuc2xhdGlvblRhYmxlRXguDQo+ID4gPiA+ IGMNCj4gPiA+ID4NCj4gYi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0dXJlL1ZU ZC9JbnRlbFZUZER4ZS9UcmFuc2xhdGlvblRhYmxlRXguDQo+ID4gPiA+IGMNCj4gPiA+ID4gaW5k ZXggMGVkOWUzY2EuLmE0NDY2ODkxIDEwMDY0NA0KPiA+ID4gPiAtLS0NCj4gPiA+ID4NCj4gYS9T aWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0dXJlL1ZUZC9JbnRlbFZUZER4ZS9UcmFu c2xhdGlvblRhYmxlRXguDQo+ID4gPiA+IGMNCj4gPiA+ID4gKysrDQo+ID4gPiA+DQo+IGIvU2ls aWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvRmVhdHVyZS9WVGQvSW50ZWxWVGREeGUvVHJhbnNs YXRpb25UYWJsZUV4Lg0KPiA+ID4gPiBjDQo+ID4gPiA+IEBAIC03OCwxMSArNzgsMjggQEAgQ3Jl YXRlRXh0Q29udGV4dEVudHJ5ICgNCj4gPiA+ID4NCj4gPiA+ID4gICAgICBERUJVRyAoKERFQlVH X0lORk8sIkRPTUFJTjogUyUwNHgsIEIlMDJ4IEQlMDJ4IEYlMDJ4XG4iLA0KPiA+ID4gPiBtVnRk VW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5TZWdtZW50LCBTb3VyY2VJZC5CaXRzLkJ1cywNCj4g PiA+ID4gU291cmNlSWQuQml0cy5EZXZpY2UsIFNvdXJjZUlkLkJpdHMuRnVuY3Rpb24pKTsNCj4g PiA+ID4NCj4gPiA+ID4gLSAgICBpZiAoKG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLkNh cFJlZy5CaXRzLlNBR0FXICYgQklUMikgPT0gMCkNCj4gew0KPiA+ID4gPiAtICAgICAgREVCVUco KERFQlVHX0VSUk9SLCAiISEhISA0LWxldmVsIHBhZ2UtdGFibGUgaXMgbm90IHN1cHBvcnRlZCBv bg0KPiA+ID4gPiBWVEQgJWQgISEhIVxuIiwgVnRkSW5kZXgpKTsNCj4gPiA+ID4gKyAgICBtVnRk VW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5JczVMZXZlbFBhZ2luZyA9IEZBTFNFOw0KPiA+ID4g PiArICAgIGlmICgobVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0uQ2FwUmVnLkJpdHMuU0FH QVcgJiBCSVQzKSAhPSAwKQ0KPiB7DQo+ID4gPiA+ICsgICAgICBtVnRkVW5pdEluZm9ybWF0aW9u W1Z0ZEluZGV4XS5JczVMZXZlbFBhZ2luZyA9IFRSVUU7DQo+ID4gPiA+ICsgICAgICBpZiAobUFj cGlEbWFyVGFibGUtPkhvc3RBZGRyZXNzV2lkdGggPD0gNDgpIHsNCj4gPiA+ID4gKyAgICAgICAg aWYgKChtVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5DYXBSZWcuQml0cy5TQUdBVyAmDQo+ ID4gPiA+ICsgQklUMikgIT0gMCkNCj4gPiB7DQo+ID4gPiA+ICsgICAgICAgICAgbVZ0ZFVuaXRJ bmZvcm1hdGlvbltWdGRJbmRleF0uSXM1TGV2ZWxQYWdpbmcgPSBGQUxTRTsNCj4gPiA+ID4gKyAg ICAgICAgfQ0KPiA+ID4gPiArICAgICAgfQ0KPiA+ID4gPiArICAgIH0gZWxzZSBpZiAoKG1WdGRV bml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLkNhcFJlZy5CaXRzLlNBR0FXICYNCj4gPiA+ID4gKyBC SVQyKSA9PQ0KPiA+ID4gPiAwKSB7DQo+ID4gPiA+ICsgICAgICBERUJVRygoREVCVUdfRVJST1Is ICIhISEhIFBhZ2UtdGFibGUgdHlwZSBpcyBub3Qgc3VwcG9ydGVkDQo+ID4gPiA+ICsgb24NCj4g PiA+ID4gVlREICVkICEhISFcbiIsIFZ0ZEluZGV4KSk7DQo+ID4gPiA+ICAgICAgICByZXR1cm4g RUZJX1VOU1VQUE9SVEVEOw0KPiA+ID4gPiAgICAgIH0NCj4gPiA+ID4gLSAgICBFeHRDb250ZXh0 RW50cnktPkJpdHMuQWRkcmVzc1dpZHRoID0gMHgyOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAg aWYgKG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLklzNUxldmVsUGFnaW5nKSB7DQo+ID4g PiA+ICsgICAgICBFeHRDb250ZXh0RW50cnktPkJpdHMuQWRkcmVzc1dpZHRoID0gMHgzOw0KPiA+ ID4gPiArICAgICAgREVCVUcoKERFQlVHX0VSUk9SLCAiVXNpbmcgNC1sZXZlbCBwYWdlLXRhYmxl IG9uIFZURCAlZFxuIiwNCj4gPiA+ID4gVnRkSW5kZXgpKTsNCj4gPiA+ID4gKyAgICB9IGVsc2Ug ew0KPiA+ID4gPiArICAgICAgRXh0Q29udGV4dEVudHJ5LT5CaXRzLkFkZHJlc3NXaWR0aCA9IDB4 MjsNCj4gPiA+ID4gKyAgICAgIERFQlVHKChERUJVR19FUlJPUiwgIlVzaW5nIDUtbGV2ZWwgcGFn ZS10YWJsZSBvbiBWVEQgJWRcbiIsDQo+ID4gPiA+IFZ0ZEluZGV4KSk7DQo+ID4gPiA+ICsgICAg fQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsNCj4gPiA+ID4gICAgfQ0KPiA+ID4gPg0KPiA+ID4gPiAg ICBGbHVzaFBhZ2VUYWJsZU1lbW9yeSAoVnRkSW5kZXgsDQo+ID4gPiA+IChVSU5UTiltVnRkVW5p dEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5FeHRSb290RW50cnlUYWJsZSwNCj4gPiA+ID4gRUZJX1BB R0VTX1RPX1NJWkUoRW50cnlUYWJsZVBhZ2VzKSk7DQo+ID4gPiA+IEBAIC05MywxMSArMTEwLDEz IEBAIENyZWF0ZUV4dENvbnRleHRFbnRyeSAoDQo+ID4gPiA+ICAvKioNCj4gPiA+ID4gICAgRHVt cCBETUFSIGV4dGVuZGVkIGNvbnRleHQgZW50cnkgdGFibGUuDQo+ID4gPiA+DQo+ID4gPiA+IC0g IEBwYXJhbVtpbl0gIEV4dFJvb3RFbnRyeSBETUFSIGV4dGVuZGVkIHJvb3QgZW50cnkuDQo+ID4g PiA+ICsgIEBwYXJhbVtpbl0gIEV4dFJvb3RFbnRyeSAgICBETUFSIGV4dGVuZGVkIHJvb3QgZW50 cnkuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIElzNUxldmVsUGFnaW5nICBJZiBpdCBpcyB0aGUg NSBsZXZlbCBwYWdpbmcuDQo+ID4gPiA+ICAqKi8NCj4gPiA+ID4gIFZPSUQNCj4gPiA+ID4gIER1 bXBEbWFyRXh0Q29udGV4dEVudHJ5VGFibGUgKA0KPiA+ID4gPiAtICBJTiBWVERfRVhUX1JPT1Rf RU5UUlkgKkV4dFJvb3RFbnRyeQ0KPiA+ID4gPiArICBJTiBWVERfRVhUX1JPT1RfRU5UUlkgKkV4 dFJvb3RFbnRyeSwgIElOIEJPT0xFQU4gSXM1TGV2ZWxQYWdpbmcNCj4gPiA+ID4gICAgKQ0KPiA+ ID4gPiAgew0KPiA+ID4gPiAgICBVSU5UTiAgICAgICAgICAgICAgICAgSW5kZXg7DQo+ID4gPiA+ IEBAIC0xMjcsNyArMTQ2LDcgQEAgRHVtcERtYXJFeHRDb250ZXh0RW50cnlUYWJsZSAoDQo+ID4g PiA+ICAgICAgICBpZiAoRXh0Q29udGV4dEVudHJ5W0luZGV4Ml0uQml0cy5QcmVzZW50ID09IDAp IHsNCj4gPiA+ID4gICAgICAgICAgY29udGludWU7DQo+ID4gPiA+ICAgICAgICB9DQo+ID4gPiA+ IC0gICAgICBEdW1wU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSAoKFZPSUQNCj4gPiA+ID4gKikoVUlO VE4pVlREXzY0QklUU19BRERSRVNTKEV4dENvbnRleHRFbnRyeVtJbmRleDJdLkJpdHMuU2Vjb25k TGV2DQo+ID4gPiA+IGVsDQo+ID4gPiA+IFBhDQo+ID4gPiA+IGdlVHJhbnNsYXRpb25Qb2ludGVy TG8sDQo+ID4gPiA+IEV4dENvbnRleHRFbnRyeVtJbmRleDJdLkJpdHMuU2Vjb25kTGV2ZWxQYWdl VHJhbnNsYXRpb25Qb2ludGVySGkpKQ0KPiA+ID4gPiA7DQo+ID4gPiA+ICsgICAgICBEdW1wU2Vj b25kTGV2ZWxQYWdpbmdFbnRyeSAoKFZPSUQNCj4gPiA+ID4gKikoVUlOVE4pVlREXzY0QklUU19B RERSRVNTKEV4dENvbnRleHRFbnRyeVtJbmRleDJdLkJpdHMuU2Vjb25kTGV2DQo+ID4gPiA+IGVs DQo+ID4gPiA+IFBhDQo+ID4gPiA+IGdlVHJhbnNsYXRpb25Qb2ludGVyTG8sDQo+ID4gPiA+IEV4 dENvbnRleHRFbnRyeVtJbmRleDJdLkJpdHMuU2Vjb25kTGV2ZWxQYWdlVHJhbnNsYXRpb25Qb2lu dGVySGkpLA0KPiA+ID4gPiBJczVMZXZlbFBhZ2luZyk7DQo+ID4gPiA+ICAgICAgfQ0KPiA+ID4g Pg0KPiA+ID4gPiAgICAgIGlmIChFeHRSb290RW50cnlbSW5kZXhdLkJpdHMuVXBwZXJQcmVzZW50 ID09IDApIHsgZGlmZiAtLWdpdA0KPiA+ID4gPiBhL1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29u UGtnL0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL1Z0ZFJlZy5jDQo+ID4gPiA+IGIvU2lsaWNvbi9J bnRlbC9JbnRlbFNpbGljb25Qa2cvRmVhdHVyZS9WVGQvSW50ZWxWVGREeGUvVnRkUmVnLmMNCj4g PiA+ID4gaW5kZXggNjk5NjM5YmEuLjY4NmQyMzVmIDEwMDY0NA0KPiA+ID4gPiAtLS0NCj4gPiA+ ID4gYS9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0dXJlL1ZUZC9JbnRlbFZUZER4 ZS9WdGRSZWcuYw0KPiA+ID4gPiArKysgYi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9G ZWF0dXJlL1ZUZC9JbnRlbFZUZER4ZS9WdGRSZWcNCj4gPiA+ID4gKysrIC5jDQo+ID4gPiA+IEBA IC0xNzQsOCArMTc0LDE0IEBAIFByZXBhcmVWdGRDb25maWcgKA0KPiA+ID4gPiAgICAgIGlmICgo bVZ0ZFVuaXRJbmZvcm1hdGlvbltJbmRleF0uQ2FwUmVnLkJpdHMuU0xMUFMgJiBCSVQwKSA9PSAw KSB7DQo+ID4gPiA+ICAgICAgICBERUJVRygoREVCVUdfV0FSTiwgIiEhISEgMk1CIHN1cGVyIHBh Z2UgaXMgbm90IHN1cHBvcnRlZCBvbg0KPiA+ID4gPiBWVEQgJWQgISEhIVxuIiwgSW5kZXgpKTsN Cj4gPiA+ID4gICAgICB9DQo+ID4gPiA+IC0gICAgaWYgKChtVnRkVW5pdEluZm9ybWF0aW9uW0lu ZGV4XS5DYXBSZWcuQml0cy5TQUdBVyAmIEJJVDIpID09IDApIHsNCj4gPiA+ID4gLSAgICAgIERF QlVHKChERUJVR19FUlJPUiwgIiEhISEgNC1sZXZlbCBwYWdlLXRhYmxlIGlzIG5vdCBzdXBwb3J0 ZWQgb24NCj4gPiA+ID4gVlREICVkICEhISFcbiIsIEluZGV4KSk7DQo+ID4gPiA+ICsgICAgaWYg KChtVnRkVW5pdEluZm9ybWF0aW9uW0luZGV4XS5DYXBSZWcuQml0cy5TQUdBVyAmIEJJVDMpICE9 IDApIHsNCj4gPiA+ID4gKyAgICAgIERFQlVHKChERUJVR19JTkZPLCAiU3VwcG9ydCA1LWxldmVs IHBhZ2UtdGFibGUgb24gVlREDQo+ID4gPiA+ICsgJWRcbiIsDQo+ID4gPiA+IEluZGV4KSk7DQo+ ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiArICAgIGlmICgobVZ0ZFVuaXRJbmZvcm1hdGlvbltJbmRl eF0uQ2FwUmVnLkJpdHMuU0FHQVcgJiBCSVQyKSAhPSAwKSB7DQo+ID4gPiA+ICsgICAgICBERUJV RygoREVCVUdfSU5GTywgIlN1cHBvcnQgNC1sZXZlbCBwYWdlLXRhYmxlIG9uIFZURA0KPiA+ID4g PiArICVkXG4iLA0KPiA+ID4gPiBJbmRleCkpOw0KPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gKyAg ICBpZiAoKG1WdGRVbml0SW5mb3JtYXRpb25bSW5kZXhdLkNhcFJlZy5CaXRzLlNBR0FXICYgKEJJ VDMgfA0KPiA+ID4gPiArIEJJVDIpKSA9PSAwKQ0KPiA+ID4gPiB7DQo+ID4gPiA+ICsgICAgICBE RUJVRygoREVCVUdfRVJST1IsICIhISEhIFBhZ2UtdGFibGUgdHlwZSAweCVYIGlzIG5vdA0KPiA+ ID4gPiArIHN1cHBvcnRlZCBvbg0KPiA+ID4gPiBWVEQgJWQgISEhIVxuIiwgSW5kZXgsIG1WdGRV bml0SW5mb3JtYXRpb25bSW5kZXhdLkNhcFJlZy5CaXRzLlNBR0FXKSk7DQo+ID4gPiA+ICAgICAg ICByZXR1cm4gOw0KPiA+ID4gPiAgICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gLS0NCj4gPiA+ID4g Mi4xNi4yLndpbmRvd3MuMQ0KDQo=