From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 06E927803CE for ; Tue, 26 Sep 2023 21:54:51 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=VzmsE4IbesBDpg5JBHQqdrhZb4yhrHz+iT3ISOhAIVE=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1695765290; v=1; b=wOJRuGwg8s6DlA/kfCL0x2a0CVkl7fzsPtbgXqSOZsiulPYEEoq7fNGoNQADsMzZvaAHt962 JmfvF0nHG6V60sD0FlhKFIveDRNyHlONzUAIaUhWtsHKNGmVXwFyR52cq6+bN6zTGaiWZ7ppWu0 paeQEb90ysLUFUZQy28S/DGQ= X-Received: by 127.0.0.2 with SMTP id VGMBYY7687511xc1jaFPVcON; Tue, 26 Sep 2023 14:54:50 -0700 X-Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web11.3853.1695765289780022907 for ; Tue, 26 Sep 2023 14:54:50 -0700 X-IronPort-AV: E=McAfee;i="6600,9927,10845"; a="467963677" X-IronPort-AV: E=Sophos;i="6.03,179,1694761200"; d="scan'208";a="467963677" X-Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Sep 2023 14:54:49 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10845"; a="995936173" X-IronPort-AV: E=Sophos;i="6.03,179,1694761200"; d="scan'208";a="995936173" X-Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmsmga006.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 26 Sep 2023 14:54:48 -0700 X-Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Tue, 26 Sep 2023 14:54:48 -0700 X-Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Tue, 26 Sep 2023 14:54:47 -0700 X-Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32 via Frontend Transport; Tue, 26 Sep 2023 14:54:47 -0700 X-Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.168) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.32; Tue, 26 Sep 2023 14:54:41 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=efH8KmEcjUsjj4eJ6vRPl2YOaBVF/CovBwqjHCCXm6R84niQUNa3fvYGZDi8Yc8oN1Kmne7PNAjvphot8naRK5Rb3L5JNfbsEz81L/zQDlIF7arOiPFM0DMH3Mn0zym9hGDM5CXXiGMhjrv/wYF/U3wL1O2/NIPsVXmqt3FW6pnc3jZznnI1oC29e3lJhPZ35xGQmRy5MIYgOx/T2Wt414cfCmUILYRae6qpnO2ajAK5BdFny+nMJUKSAujtUY7HwE0aNSy4VhnND0bOInsG9xPDDwR0QNbUD+eNstoVuUYB3MaCVuEZKcedgT4jy/nyuMA+iKU6sDsYLAa11A5ZDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=g7xRz3KiTodyQH5vGNUEzA2w93DszPCRYA+zCXl3si0=; b=bKsBoimOqI8Ge5VB3zArwY1owZS9Ru/mv9OBEzkPxTLTor1uXAFtaf0OIWcPzS+KkGKw2yIxGvY0m3+pfNfCFZnUIFx1JU5rIum1QehShvQeckCvl3wR4nb6+oGn5OUJOesol1gW7yKICCm1golHRerbo1/BZuYtXrUKBNjrXwa+U6IDpjMm8xSWf8lhu/pinh67yv6xU3cVOvjjvubmG1w+91bLUIJgYzK4+nAgDvfA19VYYAzH7A6XusZbXRBUdAjb+QTvJqRs46OR40tPkSCvN7debEry2aBuBWSsP9xlUH4mYjLoo8CEf40JUkdDs3ltzjJ0wILvWprak+ElTA== 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 X-Received: from MW4PR11MB5821.namprd11.prod.outlook.com (2603:10b6:303:184::5) by MN2PR11MB4693.namprd11.prod.outlook.com (2603:10b6:208:261::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 21:54:38 +0000 X-Received: from MW4PR11MB5821.namprd11.prod.outlook.com ([fe80::89db:ecf0:29f5:9f3c]) by MW4PR11MB5821.namprd11.prod.outlook.com ([fe80::89db:ecf0:29f5:9f3c%4]) with mapi id 15.20.6813.017; Tue, 26 Sep 2023 21:54:38 +0000 From: "Nate DeSimone" To: "Kinney, Michael D" , "devel@edk2.groups.io" CC: Andrew Fish , "Ni, Ray" , "Chiu, Chasel" Subject: Re: [edk2-devel] [PATCH v1] EmulatorPkg: Fix Source Level Debug on Windows Thread-Topic: [PATCH v1] EmulatorPkg: Fix Source Level Debug on Windows Thread-Index: AQHZ7acXLHA+4eW5jkeRufIXz2NvSLAtje2wgAAFmzCAAA/OkIAAB/BA Date: Tue, 26 Sep 2023 21:54:38 +0000 Message-ID: References: <20230922224923.1978-1-nathaniel.l.desimone@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW4PR11MB5821:EE_|MN2PR11MB4693:EE_ x-ms-office365-filtering-correlation-id: 09888837-628b-4d6e-fb18-08dbbedb2e49 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: j4QcH2Yv/zLqQ0HyBTvU2+eOCP9mLMBu1yJm4wTAHyJVxDWoWJBt5ShQviayXXDlcVSQkuTHIQIWsQoGa9wBtVMjSgCl/24ufNcWfsmZYu+/YPA4brZHW/RCvHUPD4r0izzfwtRHGyOIcvhuJqa3GOJwYid5QfUDLQMqey4EPQAaS3k1JzpFnirzUIcuDxtQnp0THHabyhPmkkLJ++f5QlBM3M/KGeme695TiBkAS3jl+WWbdAA7o5MtKceII6B4nKE4w2jqgETDAZWJTtac6kCSphl0GAI437J9YvSUtMgVeLN+33gs3beax6fcMTJrhfFINCHJn0gqUkHrPjHGEvUtDKU3QyS8bsGqJVoliaYYPmofdEaNuHnLUl4w4ypcODAvUfrv9x79K8XtlwNwgUX5zMINgbHr+oAG26LoWkLvgTwBMvQqfOfwvuqIAuhMLgY2uXvKRtjrCi2OpT2awVMN4S2f2hq86fEk/0uhjrVWByFf8+GUek4lufvd88o2vnVGENb4Fz9vDxuh7CkqA5ovvWW9Hji3c1+Jc3kBa5MfXXbtR58s88XSJ6pEy6L6KwbzWjJi315IdkH5d/OlZZn0iSjNuiSV7lCXb+OHhgb6hGgMY27ufF+rExrTq7o/ x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MzYyUGt5ckFUMHdNeGFJMldBOHhPamNtSnVQdjRZUFNNcjZBWW1udHlvcEh2?= =?utf-8?B?U2dTN245N0RjdkJEZkw4eXpvazJiallKK05WQjhKdEFmN01TSmlwcXVqcmFI?= =?utf-8?B?MTZvYnp1elhuVUljN3doOGV0S2N3dGhqRnRubmJMamhpWmpuRkNrU3dkSUN5?= =?utf-8?B?dUZ0QjU4Nmg2R3RNKzVZMFI3RG9manhRWXNOUFZVRXZyYm5ZUHptc0J4MEg1?= =?utf-8?B?TjVoeEFVdE9KbUR3ZjVlWEtXYjRnL0FUSXkwejRFRWk4bWE4TGVDaUNESG9h?= =?utf-8?B?NXRkSFNKZW5FQ1E4VTM2bFE1NHAreSt1ZlF5WlVaS1IzeVFPd2diSzJQMFFI?= =?utf-8?B?bHNCaHNRZVI2VUFlMHNXSG1VVWtzRGVlelYzS2ZtVUZqNUVnL29UblAzbzll?= =?utf-8?B?RktpRkNVeXlXbHpWMkRCUU1wRGJNRUN5TW1SWWh1UlRQdWR3T0lDcU9DRytw?= =?utf-8?B?dEhndjRiZlZFQ3k4NERzRHcxb2FzUEZuTVFzSWlWOE5PMHI1S1cvUWZVUVht?= =?utf-8?B?aGZReGNVU25RVHBnbFlZbUZVNzdHVldEaXgvTkRxeEhYREREZURNNDYwRWVX?= =?utf-8?B?UkZ4dndhUkxqSk92QlhjWmhkV0dCUGdpSTF3ZHp0TWtOaFQ0UE9rTHRQYVl1?= =?utf-8?B?SjUvZWZCUng2YlR5ZzRna0lWV3ZVSlZrZUpXajVOZEdkT2N3emtJWDk5WEE5?= =?utf-8?B?QkJqV3EyY01lM1drQWRxb1NXRUFua3RKYVJCWEJyMzR0NDJYWW1YVzk5MG1Y?= =?utf-8?B?Y1JmbVN4emsvQVByMEs5TVVCY2JJMk1QYmFDR3J1Y0dzQXZ4aUFBcEo4SnYw?= =?utf-8?B?VUYrUUx3VGJVZkJ6M0dsWWIxYWQ3Nk82Q1BXVldIcGFPenh5RUxJZDNvdStL?= =?utf-8?B?KzZONHNXZ3JtZ3NKbGUzMExHdUlzZzZlcXBpeUpPMGVXQ05qZm9UOXd2NXli?= =?utf-8?B?MzQrZkd2MC9uUHdEcTdWcEdZTGdCZHpvc0U4V09UU0NnYUZiV0pKQWdMUGpl?= =?utf-8?B?a3RJSTVTS0tlb1U1c1l2WDZYbHFETHE0Rk1TUHlKMjBMRXBTMFdYdmhqalgw?= =?utf-8?B?SUx6dDJUSWVsb1I4QnBDODVhVmNhUlpGWWZGcUFid1hKcVlyTTFmVkNmcS80?= =?utf-8?B?VkVjejFFY2RxZmFsTHhOejRIL3FXbmVwdy9Na3VIQm9ocW9BRjBDZm03Tzla?= =?utf-8?B?RFFUUTExaWJPak1IdUpXc1NGdEdObXZqSnZNdU41a0ppd0lNVTEvaU1hbER6?= =?utf-8?B?WkRBZGpRWVlZS0ttRjFUM0Z3UmRDc0I5ckhjRjRhZ2FvQUkzT01wcDBNUm9T?= =?utf-8?B?OEsyMVdrRFRNbktSUStPekd0RDl2d1hlMkJuRzR4ZTFKM2FaMithaWkzRklE?= =?utf-8?B?V0hjK2dtRWpZR0ZEK0NDenNwbi90QUQ2YTgzSGU0akJkdnVpQUpYRXh3V1lN?= =?utf-8?B?YnkxWCtwTUdDTlBmRDBFd01vRlpWU0hlRFlyZkxSZXVvSTkzMitkdktYMi82?= =?utf-8?B?azRGd2JDV1lTdVZIVTV3RUhrekVMMU8zTCsybytrZmlueUM3eFFmWng5cy90?= =?utf-8?B?OGdmQVRHVmt3RWhzM3hUc1pWblFKcWFFV2NpSkc0R1lPck9xSm1tRFR5bE9V?= =?utf-8?B?ZzhpSUR2VGJYUWJxSmZUd1AzSzRUUlY1Zm5Kc3A3UG5Xei85bnc2RGVCeWpV?= =?utf-8?B?NGloS003TGt4ZVJkWW91czJPNmo2YWZySm9vVHUwM1lTUEhZeklGZlBmdW1R?= =?utf-8?B?Tm4zK2pYL1dnd08yMkhiaGJxMDk1N1JVZjBDb0UzUHhIRjNlZ3BaWGlwOFVk?= =?utf-8?B?QzdxU2RtUnV1NW1jVnVhZVk0Z09pWGlQSFVUbWlBdFA5SVpoMFJjd3JVa0J4?= =?utf-8?B?bmluNVpjSXZ3Y0kwTjArcU9KZDFTdVlsclppSEc0NXM1Q1BEQVB0NE4yK3FY?= =?utf-8?B?dmR1YzdYSVNZRVg0L0hxRnF0dlpMTTVIS0FzajB1OFZhV25hbzBMeW9KVHhT?= =?utf-8?B?ckRWUm5sMWJZVmxKVlZJM2ZaTHhXbUdrNEczYlVKMGhsbkkwaUF5TjJXNjFR?= =?utf-8?B?SFcxVDRDYktoblRTNUsxZ2ozR21SVkJWRDUrN0JiM25Lc0w0UnBmYWZiMWxX?= =?utf-8?B?TEZ6aHFPMW1XK0taTVNVdnFMOFpGeitkRVRJcGFnRTRsd0pweFJReUtkdG0z?= =?utf-8?B?U1E9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW4PR11MB5821.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 09888837-628b-4d6e-fb18-08dbbedb2e49 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Sep 2023 21:54:38.6649 (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: yu5O6eGjygbtdk4Zgew0Nh68lr+10MLccl+6/d6peinZaQuina6lgfia6i1uJ9e/6INtIOBSf75CSWykEBKSP7+F/mvPzqKcltovLABjyoE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4693 X-OriginatorOrg: intel.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,nathaniel.l.desimone@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: JFDZ2niqqZW9QqB6W3BwM0cvx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=wOJRuGwg; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:dns request to arcselector9901._domainkey.microsoft.com failed: no records with this name}"); dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io SGkgTWlrZSwNCg0KWWVzLCB3ZSBjYW4gZGVsZXRlIHRob3NlIGxpbmVzIG5vdyDwn5iKLiBJIGhh dmUgdGhvc2UgbGluZXMgY29tbWVudGVkIG91dCBpbiBteSBjb3B5IG9mIEVtdWxhdG9yUGtnLiBJ IGZvdW5kIHRoaXMgYmVjYXVzZSBJIGhhdmUgYmVlbiB0cnlpbmcgdG8gdXNlIEVtdWxhdG9yUGtn IHRvIHNvdXJjZSBsZXZlbCBkZWJ1ZyBkcml2ZXJzIHRoYXQgSSBidWlsdCBzZXBhcmF0ZWx5IHZp YSBvbmUgb2YgdGhlIGVkazItcGxhdGZvcm0gYnVpbGRzLg0KDQpUaGFua3MsDQpOYXRlDQoNCi0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFl bC5kLmtpbm5leUBpbnRlbC5jb20+IA0KU2VudDogVHVlc2RheSwgU2VwdGVtYmVyIDI2LCAyMDIz IDI6MjkgUE0NClRvOiBEZXNpbW9uZSwgTmF0aGFuaWVsIEwgPG5hdGhhbmllbC5sLmRlc2ltb25l QGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQpDYzogQW5kcmV3IEZpc2ggPGFmaXNo QGFwcGxlLmNvbT47IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+OyBDaGl1LCBDaGFzZWwgPGNo YXNlbC5jaGl1QGludGVsLmNvbT47IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5 QGludGVsLmNvbT4NClN1YmplY3Q6IFJFOiBbUEFUQ0ggdjFdIEVtdWxhdG9yUGtnOiBGaXggU291 cmNlIExldmVsIERlYnVnIG9uIFdpbmRvd3MNCg0KSSBoYXZlIFZTIENvZGUgb24gV2luZG93cyB3 b3JraW5nIHRvZGF5IHVzaW5nIHRoZSBQREIgYmFzZWQgc3ltYm9sIGZpbGUuDQoNClRoZSBmb2xs b3dpbmcgbGluZXMgaW4gdGhlIEVtdWxhdG9yUGtnIERTQyBmaWxlIGZvcmNlIDRLQiBhbGlnbm1l bnQgYW5kIHRoZSBETEwgZXhwb3J0IG9mIHRoZSBJbml0aWFsaXplRHJpdmVyIHN5bWJvbA0KDQpo dHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIvYmxvYi9iZjBiZGFjZGQ2ZjZjZGQyZTlh YzVkYjE0YjZkYWYxOWE1YTViZDU3L0VtdWxhdG9yUGtnL0VtdWxhdG9yUGtnLmRzYyNMNDk3DQoN CiAgTVNGVDoqXypfKl9ETElOS19GTEFHUyAgICAgPSAvQUxJR046NDA5NiAvRklMRUFMSUdOOjQw OTYgL1NVQlNZU1RFTTpDT05TT0xFDQogIE1TRlQ6REVCVUdfKl8qX0RMSU5LX0ZMQUdTID0gL0VY UE9SVDpJbml0aWFsaXplRHJpdmVyPSQoSU1BR0VfRU5UUllfUE9JTlQpIC9CQVNFOjB4MTAwMDAN CiAgTVNGVDpOT09QVF8qXypfRExJTktfRkxBR1MgPSAvRVhQT1JUOkluaXRpYWxpemVEcml2ZXI9 JChJTUFHRV9FTlRSWV9QT0lOVCkgL0JBU0U6MHgxMDAwMA0KDQoNCkkgdGhpbmsgdGhpcyBpcyB3 aHkgaXQgaXMgd29ya2luZyBmb3IgbWUgd2l0aG91dCB0aGlzIGNoYW5nZS4NCg0KQXJlIHlvdSBz dWdnZXN0aW5nIHRoYXQgd2l0aCB0aGlzIGNoYW5nZSB0aGVzZSBjYW4gYmUgcmVtb3ZlZD8NCg0K TWlrZQ0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IERlc2ltb25lLCBO YXRoYW5pZWwgTCA8bmF0aGFuaWVsLmwuZGVzaW1vbmVAaW50ZWwuY29tPg0KPiBTZW50OiBUdWVz ZGF5LCBTZXB0ZW1iZXIgMjYsIDIwMjMgMTozMiBQTQ0KPiBUbzogS2lubmV5LCBNaWNoYWVsIEQg PG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgDQo+IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ IENjOiBBbmRyZXcgRmlzaCA8YWZpc2hAYXBwbGUuY29tPjsgTmksIFJheSA8cmF5Lm5pQGludGVs LmNvbT47IENoaXUsIA0KPiBDaGFzZWwgPGNoYXNlbC5jaGl1QGludGVsLmNvbT4NCj4gU3ViamVj dDogUkU6IFtQQVRDSCB2MV0gRW11bGF0b3JQa2c6IEZpeCBTb3VyY2UgTGV2ZWwgRGVidWcgb24g V2luZG93cw0KPiANCj4gSGkgTWlrZSwNCj4gDQo+IFNvdXJjZSBsZXZlbCBkZWJ1ZyB3aXRoIFZT IENvZGUgZG9lcyBpbmRlZWQgd29yayB0b2RheSB3aXRoIGdkYiBvciANCj4gbGxkYi4gVGhpcyBj aGFuZ2UgbWFrZXMgdGhlIFZpc3VhbCBTdHVkaW8gV2luZG93cyBkZWJ1Z2dlciB3b3JrIGFzIA0K PiB3ZWxsLg0KPiANCj4gWW91IGFyZSBjb3JyZWN0IHRoYXQgaWYgdGhlIHNhbWUgRExMIGlzIGxv YWRlZCBtb3JlIHRoYW4gb25jZSB0aGF0IA0KPiB0aGlzIG1ldGhvZCBjYW5ub3QgcGVyZm9ybSBz b3VyY2UgbGV2ZWwgZGVidWcgb24gdGhlIHNlY29uZCBpbnN0YW5jZTsgDQo+IGJ1dCB0aGlzIGNo YW5nZSB3b24ndCBicmVhayB0aGF0IHNjZW5hcmlvIGVpdGhlci4gSWYgdGhlIHNhbWUgRExMIA0K PiBvY2N1cnMgdHdpY2UsIHRoZW4gd2Ugd2lsbCB1c2UgdGhlIFBFL0NPRkYgaW1hZ2UgbG9hZGVk IGJ5IGVpdGhlciB0aGUgDQo+IFBFSSBjb3JlIG9yIERYRSBjb3JlIGluc3RlYWQgb2YgdGhlIG9u ZSBsb2FkZWQgYnkgV2luZG93cy4gVGhpcyBtZWFucyANCj4gdGhhdCB0aGUgc2Vjb25kIGluc3Rh bmNlIG9mIHRoZSBETEwgd2lsbCBub3QgYmUgc291cmNlIGxldmVsIGRlYnVnLSANCj4gYWJsZSBi eSBWaXN1YWwgU3R1ZGlvOyBidXQgUEktc3BlYyBjb21wbGlhbmNlIGlzIG1haW50YWluZWQuIFRo aXMgDQo+IGJlaGF2aW9yIGlzIHVuY2hhbmdlZCBmcm9tIHRoZSBvcmlnaW5hbCBjb2RlLg0KPiAN Cj4gWWVzLCB0aGlzIGNvZGUgZW5hYmxlcyBQRS9DT0ZGIGltYWdlcyB0aGF0IGRvIG5vdCBoYXZl IHNlY3Rpb25zIHRoYXQgDQo+IGFyZSA0S0IgYWxpZ25lZC4gSXQgd2lsbCBzZXR1cCBwYWdlIHBy b3RlY3Rpb24gZm9yIHVzZXIgbW9kZS4gV2l0aG91dCANCj4gdGhpcyBjaGFuZ2UgeW91IG11c3Qg dHVybiBvZmYgdGhlIE5YIGJpdCB3aGVuIHVzaW5nIHRoZSBWaXN1YWwgU3R1ZGlvIA0KPiBXaW5k b3dzIGRlYnVnZ2VyLg0KPiANCj4gVGhhbmtzLA0KPiBOYXRlDQo+IA0KPiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5l eUBpbnRlbC5jb20+DQo+IFNlbnQ6IFR1ZXNkYXksIFNlcHRlbWJlciAyNiwgMjAyMyAxOjA4IFBN DQo+IFRvOiBEZXNpbW9uZSwgTmF0aGFuaWVsIEwgPG5hdGhhbmllbC5sLmRlc2ltb25lQGludGVs LmNvbT47IA0KPiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiBDYzogQW5kcmV3IEZpc2ggPGFmaXNo QGFwcGxlLmNvbT47IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+OyBDaGl1LCANCj4gQ2hhc2Vs IDxjaGFzZWwuY2hpdUBpbnRlbC5jb20+OyBLaW5uZXksIE1pY2hhZWwgRCANCj4gPG1pY2hhZWwu ZC5raW5uZXlAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSRTogW1BBVENIIHYxXSBFbXVsYXRvclBr ZzogRml4IFNvdXJjZSBMZXZlbCBEZWJ1ZyBvbiBXaW5kb3dzDQo+IA0KPiBIaSBOYXRlLA0KPiAN Cj4gSSBhbSBhYmxlIHRvIGRvIHNvdXJjZSBsZXZlbCBkZWJ1ZyBvZiBFbXVsYXRvclBrZyB1c2lu ZyBWUyBDb2RlIHRvZGF5Lg0KPiANCj4gV2hhdCBzY2VuYXJpb3MgYXJlIGJyb2tlbj8NCj4gDQo+ IEkgZG8ga25vdyB0aGF0IHRoZSBETEwgYmFzZWQgYXBwcm9hY2ggd291bGQgb25seSBhbGxvdyBh IHNpbmdsZSANCj4gaW5zdGFuY2Ugb2YgdGhlIG1vZHVsZSB0byBiZSBsb2FkZWQgYW5kIGRlYnVn Z2VkLiAgSWYsIGZvciBleGFtcGxlLCBhIA0KPiBkcml2ZXIgaXMgbG9hZGVkIG1vcmUgdGhhbiBv bmNlIGZyb20gdGhlIFVFRkkgU2hlbGwgaW4gdGhlIEVtdWxhdG9yUGtnIA0KPiBlbnYsIHRoZSAy bmQgZHJpdmVyIHdvdWxkIHVzZSB0aGUgZmlyc3QgRExMIHdoaWNoIGRvZXMgbm90IG1hdGNoIHRo ZSANCj4gUEkgc3BlYyBiZWhhdmlvci4NCj4gDQo+IEl0IGFsc28gYXBwZWFycyB0aGF0IHRoaXMg Y2hhbmdlIGNhbiBzdXBwb3J0IFBFL0NPRkYgaW1hZ2VzIHRoYXQgZG8gDQo+IG5vdCBoYXZlIHNl Y3Rpb25zIHRoYXQgYXJlIDRLQiBhbGlnbmVkIGFuZCBoYW5kbGVzIHRoZSBwYWdlIHByb3RlY3Rp b24gDQo+IHNldHRpbmdzIGZvciB0aGUgdXNlciBtb2RlIGFwcGxpY2F0aW9uIGVudi4gIElzIHRo YXQgY29ycmVjdD8NCj4gDQo+IE1pa2UNCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gPiBGcm9tOiBEZXNpbW9uZSwgTmF0aGFuaWVsIEwgPG5hdGhhbmllbC5sLmRlc2ltb25l QGludGVsLmNvbT4NCj4gPiBTZW50OiBGcmlkYXksIFNlcHRlbWJlciAyMiwgMjAyMyAzOjQ5IFBN DQo+ID4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gQ2M6IEFuZHJldyBGaXNoIDxhZmlz aEBhcHBsZS5jb20+OyBOaSwgUmF5IDxyYXkubmlAaW50ZWwuY29tPjsNCj4gS2lubmV5LA0KPiA+ IE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBDaGl1LCBDaGFzZWwgDQo+ ID4gPGNoYXNlbC5jaGl1QGludGVsLmNvbT4NCj4gPiBTdWJqZWN0OiBbUEFUQ0ggdjFdIEVtdWxh dG9yUGtnOiBGaXggU291cmNlIExldmVsIERlYnVnIG9uIFdpbmRvd3MNCj4gPg0KPiA+IFRoZSBW aXN1YWwgU3R1ZGlvIFdpbmRvd3MgZGVidWdnZXIgd2lsbCBvbmx5IGxvYWQgc3ltYm9scyBmb3IN Cj4gUEUvQ09GRg0KPiA+IGltYWdlcyB0aGF0IFdpbmRvd3MgaXMgYXdhcmUgb2YuIFRoZXJlZm9y ZSwgdG8gZW5hYmxlIHNvdXJjZSBsZXZlbCANCj4gPiBkZWJ1Z2dpbmcsIGFsbCBQRUkvRFhFIG1v ZHVsZXMgbXVzdCBiZSBsb2FkZWQgdmlhIExvYWRMaWJyYXJ5KCkgb3INCj4gPiBMb2FkTGlicmFy eUV4KCkgYW5kIHRoZSB0aGUgaW5zdGFuY2UgaW4gbWVtb3J5IGNyZWF0ZWQgYnkNCj4gPiBMb2Fk TGlicmFyeSgpIG11c3QgYmUgdGhlIG9uZSB0aGF0IGlzIGFjdHVhbGx5IGV4ZWN1dGVkLg0KPiA+ DQo+ID4gVGhlIGN1cnJlbnQgc291cmNlIGxldmVsIGRlYnVnIGltcGxlbWVudGF0aW9uIGluIEVt dWxhdG9yUGtnIGZvciANCj4gPiBXaW5kb3dzIGlzIGluaGVyaXRlZCBmcm9tIHRoZSBvbGQgTnQz MlBrZy4gVGhpcyBpbXBsZW1lbnRhdGlvbiBtYWtlcyANCj4gPiB0aGUgYXNzdW1wdGlvbiB0aGF0 IGFsbCBQRUkvRFhFIG1vZHVsZXMgaGF2ZSBhIERMTCBleHBvcnQgdGFibGVzDQo+IHdpdGgNCj4g PiBhIHN5bWJvbCBuYW1lZCBJbml0aWFsaXplRHJpdmVyLiBUaGVyZWZvcmUsIHRoaXMgc291cmNl IGxldmVsIGRlYnVnIA0KPiA+IGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIGFsbCBtb2R1bGVzIHRv IGJlIGxpbmtlZCBpbiBhIG5vbi1QSSBzcGVjIA0KPiA+IGRlZmluZWQgbWFubmVyLiBTdXBwb3J0 IGZvciBhZGRpbmcgdGhlIEluaXRpYWxpemVEcml2ZXIgc3ltYm9sIHdhcyANCj4gPiByZW1vdmVk IGluIEVtdWxhdG9yUGtnLCB3aGljaCBicm9rZSBzb3VyY2UgbGV2ZWwgZGVidWdnaW5nLg0KPiA+ DQo+ID4gVG8gZml4IHRoaXMsIHRoZSBzb3VyY2UgbGV2ZWwgZGVidWdnaW5nIGltcGxlbWVudGF0 aW9uIGhhcyBiZWVuIA0KPiA+IG1vZGlmaWVkIHRvIHVzZSB0aGUgUEUvQ09GRiBlbnRyeSBwb2lu dCBkaXJlY3RseS4gVGhpcyBicmluZ3MgdGhlIA0KPiA+IGltcGxlbWVudGF0aW9uIGludG8gY29t cGxpYW5jZSB3aXRoIHRoZSBQSSBzcGVjIGFuZCBzaG91bGQgd29yayB3aXRoIA0KPiA+IGFueSBQ RUlNL0RYRSBkcml2ZXIuDQo+ID4gSW1wbGVtZW50aW5nIHRoaXMgcmVxdWlyZXMgcGFyc2luZyB0 aGUgaW4tbWVtb3J5IGluc3RhbmNlIG9mIHRoZSANCj4gPiBQRS9DT0ZGIGltYWdlIGNyZWF0ZWQg YnkgV2luZG93cyB0byBmaW5kIHRoZSBlbnRyeXBvaW50IGFuZCBzaW5jZSANCj4gPiBQRUlNcy9E WEUgZHJpdmVycyBhcmUgbm90IGdhcnVudGVlZCB0byBoYXZlIDRLQiBhbGlnbmVkIHNlY3Rpb25z LCBpdCANCj4gPiBhbHNvIHJlcXVpcmVzIGV4cGxpY2l0IGNvbmZpZ3VyYXRpb24gb2YgdGhlIHBh Z2UgdGFibGUgdXNpbmcgDQo+ID4gVmlydHVhbFByb3RlY3QoKS4NCj4gPg0KPiA+IFdpdGggdGhp cyBmaXgsIHRoZSBkZWJ1Z2dpbmcgZXhwZXJpZW5jZSBpcyBub3cgc28gZ29vZCBpdCBpcyANCj4g PiB1bnByZWNlZGVudGVkIQ0KPiA+IEluIFZpc3VhbCBTdHVkaW8gQ29kZSwgYWRkIHRoZSBmb2xs b3dpbmcgdG8gbGF1bmNoLmpzb246DQo+ID4NCj4gPiB7DQo+ID4gICAidmVyc2lvbiI6ICIwLjIu MCIsDQo+ID4gICAiY29uZmlndXJhdGlvbnMiOiBbDQo+ID4gICAgIHsNCj4gPiAgICAgICAibmFt ZSI6ICJFbXVsYXRvclBrZyBMYXVuY2giLA0KPiA+ICAgICAgICJ0eXBlIjogImNwcHZzZGJnIiwN Cj4gPiAgICAgICAicmVxdWVzdCI6ICJsYXVuY2giLA0KPiA+ICAgICAgICJwcm9ncmFtIjoNCj4g Pg0KPiAiJHt3b3Jrc3BhY2VGb2xkZXJ9LzxwYXRoX3RvX2J1aWxkPi9CdWlsZC9FbXVsYXRvclg2 NC9ERUJVR188dG9vbF9jaGFpDQo+ID4gbj4vWDY0L1dpbkhvc3QiLA0KPiA+ICAgICAgICJhcmdz IjogW10sDQo+ID4gICAgICAgInN0b3BBdEVudHJ5IjogZmFsc2UsDQo+ID4gICAgICAgImN3ZCI6 DQo+ID4NCj4gIiR7d29ya3NwYWNlRm9sZGVyfS88cGF0aF90b19idWlsZD4vQnVpbGQvRW11bGF0 b3JYNjQvREVCVUdfPHRvb2xfY2hhaQ0KPiA+IG4+L1g2NC8iLA0KPiA+ICAgICAgICJlbnZpcm9u bWVudCI6IFtdLA0KPiA+ICAgICAgICJjb25zb2xlIjogZmFsc2UsDQo+ID4gICAgIH0NCj4gPiAg IF0NCj4gPiB9DQo+ID4NCj4gPiBNYWtlIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGFib3ZlIHRlbXBs YXRlIGFzIG5lc3Nlc2FyeSBhbmQgYnVpbGQgDQo+ID4gRW11bGF0b3JQa2cuDQo+ID4gTm93LCBq dXN0IGFkZCBicmVha3BvaW50cyBkaXJlY3RseSBpbiBWaXN1YWwgU3R1ZGlvIENvZGUgdGhlIHdh eSB5b3UgDQo+ID4gd291bGQgd2l0aCBhbnkgb3RoZXIgc29mdHdhcmUgcHJvamVjdC4gV2hlbiB5 b3Ugc3RhcnQgdGhlIGRlYnVnZ2VyLA0KPiBpdA0KPiA+IHdpbGwgaGFsdCBhdCB0aGUgYnJlYWtw b2ludCBhdXRvbWF0aWNhbGx5IHdpdGhvdXQgYW55IGV4dHJhIA0KPiA+IGNvbmZpZ3VyYXRpb24g cmVxdWlyZWQuDQo+ID4NCj4gPiBDYzogQW5kcmV3IEZpc2ggPGFmaXNoQGFwcGxlLmNvbT4NCj4g PiBDYzogUmF5IE5pIDxyYXkubmlAaW50ZWwuY29tPg0KPiA+IENjOiBNaWNoYWVsIEQgS2lubmV5 IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiBDYzogQ2hhc2VsIENoaXUgPGNoYXNl bC5jaGl1QGludGVsLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBOYXRlIERlU2ltb25lIDxuYXRo YW5pZWwubC5kZXNpbW9uZUBpbnRlbC5jb20+DQo+ID4gLS0tDQo+ID4gIEVtdWxhdG9yUGtnL1dp bi9Ib3N0L1dpbkhvc3QuYyB8IDIwNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0NCj4g LS0NCj4gPiAtDQo+ID4gIDEgZmlsZSBjaGFuZ2VkLCAxODIgaW5zZXJ0aW9ucygrKSwgMjQgZGVs ZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvRW11bGF0b3JQa2cvV2luL0hvc3QvV2lu SG9zdC5jIA0KPiA+IGIvRW11bGF0b3JQa2cvV2luL0hvc3QvV2luSG9zdC5jIGluZGV4IDE5M2E5 NDdmYmQuLmU0MTRkYTZjNTUgMTAwNjQ0DQo+ID4gLS0tIGEvRW11bGF0b3JQa2cvV2luL0hvc3Qv V2luSG9zdC5jDQo+ID4gKysrIGIvRW11bGF0b3JQa2cvV2luL0hvc3QvV2luSG9zdC5jDQo+ID4g QEAgLTgsNyArOCw3IEBADQo+ID4gICAgVGhpcyBjb2RlIHByb2R1Y2VzIDEyOCBLIG9mIHRlbXBv cmFyeSBtZW1vcnkgZm9yIHRoZSBTRUMgc3RhY2sgYnkgDQo+ID4gZGlyZWN0bHkNCj4gPiAgICBh bGxvY2F0ZSBtZW1vcnkgc3BhY2Ugd2l0aCBSZWFkV3JpdGUgYW5kIEV4ZWN1dGUgYXR0cmlidXRl Lg0KPiA+DQo+ID4gLUNvcHlyaWdodCAoYykgMjAwNiAtIDIwMjIsIEludGVsIENvcnBvcmF0aW9u LiBBbGwgcmlnaHRzIA0KPiA+IHJlc2VydmVkLjxCUj4NCj4gPiArQ29weXJpZ2h0IChjKSAyMDA2 IC0gMjAyMywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiByZXNlcnZlZC48QlI+ DQo+ID4gIChDKSBDb3B5cmlnaHQgMjAxNi0yMDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNl IERldmVsb3BtZW50DQo+IExQPEJSPg0KPiA+ICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTItQ2xhdXNlLVBhdGVudCAgKiovIEBAIC05NzcsNyArOTc3LDcNCj4gQEANCj4gPiBBZGRNb2RI YW5kbGUgKA0KPiA+ICAgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IG1QZGJOYW1lTW9kSGFuZGxl QXJyYXlTaXplOyBJbmRleCsrLA0KPiA+IEFycmF5KyspIHsNCj4gPiAgICAgIGlmIChBcnJheS0+ UGRiUG9pbnRlciA9PSBOVUxMKSB7DQo+ID4gICAgICAgIC8vDQo+ID4gLSAgICAgIC8vIE1ha2Ug YSBjb3B5IG9mIHRoZSBzdGlybmcgYW5kIHN0b3JlIHRoZSBNb2RIYW5kbGUNCj4gPiArICAgICAg Ly8gTWFrZSBhIGNvcHkgb2YgdGhlIHN0cmluZyBhbmQgc3RvcmUgdGhlIE1vZEhhbmRsZQ0KPiA+ ICAgICAgICAvLw0KPiA+ICAgICAgICBIYW5kbGUgICAgICAgICAgICA9IEdldFByb2Nlc3NIZWFw ICgpOw0KPiA+ICAgICAgICBTaXplICAgICAgICAgICAgICA9IEFzY2lpU3RyTGVuIChJbWFnZUNv bnRleHQtPlBkYlBvaW50ZXIpICsNCj4gMTsNCj4gPiBAQCAtMTA1NiwyNiArMTA1Niw0NSBAQCBS ZW1vdmVNb2RIYW5kbGUgKA0KPiA+ICAgIHJldHVybiBOVUxMOw0KPiA+ICB9DQo+ID4NCj4gPiAr dHlwZWRlZiBzdHJ1Y3Qgew0KPiA+ICsgIFVJTlROICAgQmFzZTsNCj4gPiArICBVSU5UMzIgIFNp emU7DQo+ID4gKyAgVUlOVDMyICBGbGFnczsNCj4gPiArfSBJTUFHRV9TRUNUSU9OX0RBVEE7DQo+ ID4gKw0KPiA+ICBWT0lEDQo+ID4gIEVGSUFQSQ0KPiA+ICBQZUNvZmZMb2FkZXJSZWxvY2F0ZUlt YWdlRXh0cmFBY3Rpb24gKA0KPiA+ICAgIElOIE9VVCBQRV9DT0ZGX0xPQURFUl9JTUFHRV9DT05U RVhUICAqSW1hZ2VDb250ZXh0DQo+ID4gICAgKQ0KPiA+ICB7DQo+ID4gLSAgRUZJX1NUQVRVUyAg U3RhdHVzOw0KPiA+IC0gIFZPSUQgICAgICAgICpEbGxFbnRyeVBvaW50Ow0KPiA+IC0gIENIQVIx NiAgICAgICpEbGxGaWxlTmFtZTsNCj4gPiAtICBITU9EVUxFICAgICBMaWJyYXJ5Ow0KPiA+IC0g IFVJTlROICAgICAgIEluZGV4Ow0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAg ICAgICAgIFN0YXR1czsNCj4gPiArICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqRGxsRW50cnlQb2ludDsNCj4gPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqRGxsRmlsZU5hbWU7DQo+ID4gKyAgSE1PRFVMRSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlicmFyeTsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJbmRleDsNCj4gPiArICBQRV9DT0ZGX0xPQURFUl9JTUFHRV9DT05URVhUICAgICAgICBQZUNv ZmZJbWFnZUNvbnRleHQ7DQo+ID4gKyAgRUZJX0lNQUdFX09QVElPTkFMX0hFQURFUl9QVFJfVU5J T04gSGRyOw0KPiA+ICsgIEVGSV9JTUFHRV9TRUNUSU9OX0hFQURFUiAgICAgICAgICAgICpGaXJz dFNlY3Rpb247DQo+ID4gKyAgRUZJX0lNQUdFX1NFQ1RJT05fSEVBREVSICAgICAgICAgICAgKlNl Y3Rpb247DQo+ID4gKyAgSU1BR0VfU0VDVElPTl9EQVRBICAgICAgICAgICAgICAgICAgKlNlY3Rp b25EYXRhOw0KPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJl ck9mU2VjdGlvbnM7DQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg QmFzZTsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmQ7DQo+ ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaW9uQmFzZTsNCj4g PiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpb25TaXplOw0KPiA+ ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsYWdzOw0KPiA+ICsgIERX T1JEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ld1Byb3RlY3Rpb247DQo+ID4gKyAg RFdPUkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2xkUHJvdGVjdGlvbjsNCj4gPg0K PiA+ICAgIEFTU0VSVCAoSW1hZ2VDb250ZXh0ICE9IE5VTEwpOw0KPiA+ICAgIC8vDQo+ID4gLSAg Ly8gSWYgd2UgbG9hZCBvdXIgb3duIFBFIENPRkYgaW1hZ2VzIHRoZSBXaW5kb3dzIGRlYnVnZ2Vy IGNhbiBub3QgDQo+ID4gc291cmNlDQo+ID4gLSAgLy8gIGxldmVsIGRlYnVnIG91ciBjb2RlLiBJ ZiBhIHZhbGlkIFBEQiBwb2ludGVyIGV4aXN0cyB1c2UgaXQgdG8gDQo+ID4gbG9hZA0KPiA+IC0g IC8vICB0aGUgKi5kbGwgZmlsZSBhcyBhIGxpYnJhcnkgdXNpbmcgV2luZG93cyogQVBJcy4gVGhp cyBhbGxvd3MNCj4gPiAtICAvLyAgc291cmNlIGxldmVsIGRlYnVnLiBUaGUgaW1hZ2UgaXMgc3Rp bGwgbG9hZGVkIGFuZCByZWxvY2F0ZWQNCj4gPiAtICAvLyAgaW4gdGhlIEZyYW1ld29yayBtZW1v cnkgc3BhY2UgbGlrZSBvbiBhIHJlYWwgc3lzdGVtIChieSB0aGUgDQo+ID4gY29kZSBhYm92ZSks DQo+ID4gLSAgLy8gIGJ1dCB0aGUgZW50cnkgcG9pbnQgcG9pbnRzIGludG8gdGhlIERMTCBsb2Fk ZWQgYnkgdGhlIGNvZGUgDQo+ID4gYmVsb3cuDQo+ID4gKyAgLy8gSWYgd2UgbG9hZCBvdXIgb3du IFBFL0NPRkYgaW1hZ2VzIHRoZSBXaW5kb3dzIGRlYnVnZ2VyIGNhbiBub3QNCj4gPiBzb3VyY2UN Cj4gPiArICAvLyBsZXZlbCBkZWJ1ZyBvdXIgY29kZS4gSWYgYSB2YWxpZCBQREIgcG9pbnRlciBl eGlzdHMgdXNlIGl0IHRvDQo+ID4gbG9hZA0KPiA+ICsgIC8vIHRoZSAqLmRsbCBmaWxlIGFzIGEg bGlicmFyeSB1c2luZyBXaW5kb3dzKiBBUElzLiBUaGlzIGFsbG93cw0KPiAvLw0KPiA+ICsgc291 cmNlIGxldmVsIGRlYnVnLiBUaGUgaW1hZ2UgaXMgc3RpbGwgbG9hZGVkIGFuZCByZWxvY2F0ZWQg IC8vIGluIA0KPiA+ICsgdGhlIEZyYW1ld29yayBtZW1vcnkgc3BhY2UgbGlrZSBvbiBhIHJlYWwg c3lzdGVtIChieSB0aGUgY29kZQ0KPiA+IGFib3ZlKSwNCj4gPiArICAvLyBidXQgdGhlIGVudHJ5 IHBvaW50IHBvaW50cyBpbnRvIHRoZSBETEwgbG9hZGVkIGJ5IHRoZSBjb2RlDQo+ID4gYmVsb3cu DQo+ID4gICAgLy8NCj4gPg0KPiA+ICAgIERsbEVudHJ5UG9pbnQgPSBOVUxMOw0KPiA+IEBAIC0x MTA2LDI3ICsxMTI1LDE2NiBAQCBQZUNvZmZMb2FkZXJSZWxvY2F0ZUltYWdlRXh0cmFBY3Rpb24g KA0KPiA+ICAgICAgfQ0KPiA+DQo+ID4gICAgICAvLw0KPiA+IC0gICAgLy8gUmVwbGFjZSAuUERC IHdpdGggLkRMTCBvbiB0aGUgZmlsZW5hbWUNCj4gPiArICAgIC8vIFJlcGxhY2UgLlBEQiB3aXRo IC5ETEwgaW4gdGhlIGZpbGVuYW1lDQo+ID4gICAgICAvLw0KPiA+ICAgICAgRGxsRmlsZU5hbWVb SW5kZXggLSAzXSA9ICdEJzsNCj4gPiAgICAgIERsbEZpbGVOYW1lW0luZGV4IC0gMl0gPSAnTCc7 DQo+ID4gICAgICBEbGxGaWxlTmFtZVtJbmRleCAtIDFdID0gJ0wnOw0KPiA+DQo+ID4gICAgICAv Lw0KPiA+IC0gICAgLy8gTG9hZCB0aGUgLkRMTCBmaWxlIGludG8gdGhlIHVzZXIgcHJvY2Vzcydz IGFkZHJlc3Mgc3BhY2UgZm9yDQo+ID4gc291cmNlDQo+ID4gLSAgICAvLyBsZXZlbCBkZWJ1Zw0K PiA+ICsgICAgLy8gTG9hZCB0aGUgLkRMTCBmaWxlIGludG8gdGhlIHByb2Nlc3MncyBhZGRyZXNz IHNwYWNlIGZvcg0KPiBzb3VyY2UNCj4gPiBsZXZlbA0KPiA+ICsgICAgLy8gZGVidWcuDQo+ID4g KyAgICAvLw0KPiA+ICsgICAgLy8gRUZJIG1vZHVsZXMgdXNlIHRoZSBQRTMyIGVudHJ5IHBvaW50 IGZvciBhIGRpZmZlcmVudCBwdXJwb3NlDQo+ID4gdGhhbg0KPiA+ICsgICAgLy8gV2luZG93cy4g Rm9yIFdpbmRvd3MgRExMcywgdGhlIFBFIGVudHJ5IHBvaW50IGlzIHVzZWQgZm9yDQo+IHRoZQ0K PiA+IERsbE1haW4oKQ0KPiA+ICsgICAgLy8gZnVuY3Rpb24uIERsbE1haW4oKSBoYXMgYSB2ZXJ5 IHNwZWNpZmljIHB1cnBvc2U7IGl0DQo+ID4gaW5pdGlhbGl6ZXMgcnVudGltZQ0KPiA+ICsgICAg Ly8gbGlicmFyaWVzLCBpbnN0YW5jZSBkYXRhLCBhbmQgdGhyZWFkIGxvY2FsIHN0b3JhZ2UuDQo+ ID4gTG9hZExpYnJhcnkoKS8NCj4gPiArICAgIC8vIExvYWRMaWJyYXJ5RXgoKSB3aWxsIHJ1biB0 aGUgUEUzMiBlbnRyeSBwb2ludCBhbmQgYXNzdW1lIGl0DQo+IHRvDQo+ID4gYmUgYQ0KPiA+ICsg ICAgLy8gRGxsTWFpbigpIGltcGxlbWVudGF0aW9uIGJ5IGRlZmF1bHQuIEJ5IHBhc3NpbmcgdGhl DQo+ID4gKyAgICAvLyBET05UX1JFU09MVkVfRExMX1JFRkVSRU5DRVMgYXJndW1lbnQgdG8gTG9h ZExpYnJhcnlFeCgpLCB0aGUNCj4gPiBleGVjdXRpb24NCj4gPiArICAgIC8vIG9mIHRoZSBlbnRy eSBwb2ludCBhcyBhIERsbE1haW4oKSBmdW5jdGlvbiB3aWxsIGJlDQo+IHN1cHByZXNzZWQuDQo+ ID4gVGhpcw0KPiA+ICsgICAgLy8gYWxzbyBwcmV2ZW50cyBvdGhlciBtb2R1bGVzIHRoYXQgYXJl IHJlZmVyZW5jZWQgYnkgdGhlIERMTA0KPiA+IGZyb20gYmVpbmcNCj4gPiArICAgIC8vIGxvYWRl ZC4gV2UgdXNlIExvYWRMaWJyYXJ5RXgoKSB0byBjcmVhdGUgYSBjb3B5IG9mIHRoZSBQRTMyDQo+ ID4gKyAgICAvLyBpbWFnZSB0aGF0IHRoZSBPUyAoYW5kIHRoZXJlZm9yZSB0aGUgZGVidWdnZXIp IGlzIGF3YXJlIG9mLg0KPiA+ICsgICAgLy8gU291cmNlIGxldmVsIGRlYnVnZ2luZyBpcyB0aGUg b25seSByZWFzb24gdG8gZG8gdGhpcy4NCj4gPiAgICAgIC8vDQo+ID4gICAgICBMaWJyYXJ5ID0g TG9hZExpYnJhcnlFeCAoRGxsRmlsZU5hbWUsIE5VTEwsIA0KPiA+IERPTlRfUkVTT0xWRV9ETExf UkVGRVJFTkNFUyk7DQo+ID4gICAgICBpZiAoTGlicmFyeSAhPSBOVUxMKSB7DQo+ID4gICAgICAg IC8vDQo+ID4gLSAgICAgIC8vIEluaXRpYWxpemVEcml2ZXIgaXMgdGhlIGVudHJ5IHBvaW50IHdl IHB1dCBpbiBhbGwgb3VyIEVGSQ0KPiA+IERMTCdzLiBUaGUNCj4gPiAtICAgICAgLy8gRE9OVF9S RVNPTFZFX0RMTF9SRUZFUkVOQ0VTIGFyZ3VtZW50IHRvIExvYWRMSWJyYXJ5RXgoKQ0KPiA+IHN1 cHByZXNzZXMgdGhlDQo+ID4gLSAgICAgIC8vIG5vcm1hbCBETEwgZW50cnkgcG9pbnQgb2YgRGxs TWFpbiwgYW5kIHByZXZlbnRzIG90aGVyDQo+ID4gbW9kdWxlcyB0aGF0IGFyZQ0KPiA+IC0gICAg ICAvLyByZWZlcmVuY2VkIGluIHNpZGUgdGhlIERsbEZpbGVOYW1lIGZyb20gYmVpbmcgbG9hZGVk Lg0KPiBUaGVyZQ0KPiA+IGlzIG5vIGVycm9yDQo+ID4gLSAgICAgIC8vIGNoZWNraW5nIGFzIHRo ZSB3ZSBjYW4gcG9pbnQgdG8gdGhlIFBFMzIgaW1hZ2UgbG9hZGVkIGJ5DQo+ID4gVGlhbm8uIFRo aXMNCj4gPiAtICAgICAgLy8gc3RlcCBpcyBvbmx5IG5lZWRlZCBmb3Igc291cmNlIGxldmVsIGRl YnVnZ2luZw0KPiA+ICsgICAgICAvLyBQYXJzZSB0aGUgUEUzMiBpbWFnZSBsb2FkZWQgYnkgdGhl IE9TIGFuZCBmaW5kIHRoZSBlbnRyeQ0KPiA+IHBvaW50DQo+ID4gICAgICAgIC8vDQo+ID4gLSAg ICAgIERsbEVudHJ5UG9pbnQgPSAoVk9JRCAqKShVSU5UTilHZXRQcm9jQWRkcmVzcyAoTGlicmFy eSwNCj4gPiAiSW5pdGlhbGl6ZURyaXZlciIpOw0KPiA+ICsgICAgICBaZXJvTWVtICgmUGVDb2Zm SW1hZ2VDb250ZXh0LCBzaXplb2YgKFBlQ29mZkltYWdlQ29udGV4dCkpOw0KPiA+ICsgICAgICBQ ZUNvZmZJbWFnZUNvbnRleHQuSGFuZGxlID0gTGlicmFyeTsNCj4gPiArICAgICAgUGVDb2ZmSW1h Z2VDb250ZXh0LkltYWdlUmVhZCA9DQo+IFBlQ29mZkxvYWRlckltYWdlUmVhZEZyb21NZW1vcnk7 DQo+ID4gKyAgICAgIFN0YXR1cyA9IFBlQ29mZkxvYWRlckdldEltYWdlSW5mbyAoJlBlQ29mZklt YWdlQ29udGV4dCk7DQo+ID4gKyAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykgfHwgKFBlQ29m ZkltYWdlQ29udGV4dC5JbWFnZUVycm9yICE9DQo+ID4gSU1BR0VfRVJST1JfU1VDQ0VTUykpIHsN Cj4gPiArICAgICAgICBTZWNQcmludCAoIkRMTCBpcyBub3QgYSB2YWxpZCBQRS9DT0ZGIGltYWdl LlxuXHIiKTsNCj4gPiArICAgICAgICBGcmVlTGlicmFyeSAoTGlicmFyeSk7DQo+ID4gKyAgICAg ICAgTGlicmFyeSA9IE5VTEw7DQo+ID4gKyAgICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgSGRy LlBlMzIgPSAoRUZJX0lNQUdFX05UX0hFQURFUlMzMiAqKSgoVUlOVE4pTGlicmFyeSArDQo+ID4g KFVJTlROKVBlQ29mZkltYWdlQ29udGV4dC5QZUNvZmZIZWFkZXJPZmZzZXQpOw0KPiA+ICsgICAg ICAgIGlmIChIZHIuUGUzMi0+T3B0aW9uYWxIZWFkZXIuTWFnaWMgPT0NCj4gPiBFRklfSU1BR0Vf TlRfT1BUSU9OQUxfSERSMzJfTUFHSUMpIHsNCj4gPiArICAgICAgICAgIC8vDQo+ID4gKyAgICAg ICAgICAvLyBVc2UgUEUzMiBvZmZzZXQNCj4gPiArICAgICAgICAgIC8vDQo+ID4gKyAgICAgICAg ICBEbGxFbnRyeVBvaW50ID0gKFZPSUQgKikgKChVSU5UTilMaWJyYXJ5ICsNCj4gKFVJTlROKUhk ci5QZTMyLQ0KPiA+ID5PcHRpb25hbEhlYWRlci5BZGRyZXNzT2ZFbnRyeVBvaW50KTsNCj4gPiAr ICAgICAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgICAgLy8NCj4gPiArICAgICAgICAgIC8vIFVz ZSBQRTMyKyBvZmZzZXQNCj4gPiArICAgICAgICAgIC8vDQo+ID4gKyAgICAgICAgICBEbGxFbnRy eVBvaW50ID0gKFZPSUQgKikgKChVSU5UTilMaWJyYXJ5ICsNCj4gPiAoVUlOVE4pSGRyLlBlMzJQ bHVzLT5PcHRpb25hbEhlYWRlci5BZGRyZXNzT2ZFbnRyeVBvaW50KTsNCj4gPiArICAgICAgICB9 DQo+ID4gKyAgICAgICAgLy8NCj4gPiArICAgICAgICAvLyBOb3cgd2UgbmVlZCB0byBjb25maWd1 cmUgbWVtb3J5IGFjY2VzcyBmb3IgdGhlIGNvcHkgb2YNCj4gdGhlDQo+ID4gUEUzMiBpbWFnZQ0K PiA+ICsgICAgICAgIC8vIGxvYWRlZCBieSB0aGUgT1MuDQo+ID4gKyAgICAgICAgLy8NCj4gPiAr ICAgICAgICAvLyBNb3N0IFdpbmRvd3MgRExMcyBhcmUgbGlua2VkIHdpdGggc2VjdGlvbnMgNEtC IGFsaWduZWQNCj4gYnV0DQo+ID4gRUZJDQo+ID4gKyAgICAgICAgLy8gbW9kdWxlcyBhcmUgbm90 IHRvIHJlZHVjZSBzaXplLiBCZWNhdXNlIG9mIHRoaXMgd2UgbmVlZA0KPiB0bw0KPiA+IGNvbXB1 dGUNCj4gPiArICAgICAgICAvLyB0aGUgdW5pb24gb2YgbWVtb3J5IGFjY2VzcyBhdHRyaWJ1dGVz IGFuZCBleHBsaWNpdGx5DQo+ID4gY29uZmlndXJlDQo+ID4gKyAgICAgICAgLy8gZWFjaCBwYWdl Lg0KPiA+ICsgICAgICAgIC8vDQo+ID4gKyAgICAgICAgRmlyc3RTZWN0aW9uID0gKEVGSV9JTUFH RV9TRUNUSU9OX0hFQURFUiAqKSgNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoVUlOVE4pTGlicmFyeSArDQo+ID4gKw0KPiA+IFBlQ29mZkltYWdlQ29u dGV4dC5QZUNvZmZIZWFkZXJPZmZzZXQgKw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemVvZiAoVUlOVDMyKSArDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mDQo+ID4gKEVGSV9JTUFHRV9GSUxF X0hFQURFUikgKw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEhkci5QZTMyLQ0KPiA+ID5GaWxlSGVhZGVyLlNpemVPZk9wdGlvbmFsSGVhZGVyDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiArICAg ICAgICBOdW1iZXJPZlNlY3Rpb25zID0gKFVJTlROKShIZHIuUGUzMi0NCj4gPiA+RmlsZUhlYWRl ci5OdW1iZXJPZlNlY3Rpb25zKTsNCj4gPiArICAgICAgICBTZWN0aW9uID0gRmlyc3RTZWN0aW9u Ow0KPiA+ICsgICAgICAgIFNlY3Rpb25EYXRhID0gbWFsbG9jIChOdW1iZXJPZlNlY3Rpb25zICog c2l6ZW9mDQo+ID4gKElNQUdFX1NFQ1RJT05fREFUQSkpOw0KPiA+ICsgICAgICAgIGlmIChTZWN0 aW9uRGF0YSA9PSBOVUxMKSB7DQo+ID4gKyAgICAgICAgICBGcmVlTGlicmFyeSAoTGlicmFyeSk7 DQo+ID4gKyAgICAgICAgICBMaWJyYXJ5ID0gTlVMTDsNCj4gPiArICAgICAgICAgIERsbEVudHJ5 UG9pbnQgPSBOVUxMOw0KPiA+ICsgICAgICAgIH0NCj4gPiArICAgICAgICBaZXJvTWVtIChTZWN0 aW9uRGF0YSwgTnVtYmVyT2ZTZWN0aW9ucyAqIHNpemVvZg0KPiA+IChJTUFHRV9TRUNUSU9OX0RB VEEpKTsNCj4gPiArICAgICAgICAvLw0KPiA+ICsgICAgICAgIC8vIEV4dHJhY3QgdGhlIHNlY3Rp b24gZGF0YSBmcm9tIHRoZSBQRTMyIGltYWdlDQo+ID4gKyAgICAgICAgLy8NCj4gPiArICAgICAg ICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBOdW1iZXJPZlNlY3Rpb25zOyBJbmRleCsrKSB7DQo+ ID4gKyAgICAgICAgICBTZWN0aW9uRGF0YVtJbmRleF0uQmFzZSA9IChVSU5UTilMaWJyYXJ5ICsg U2VjdGlvbi0NCj4gPiA+VmlydHVhbEFkZHJlc3M7DQo+ID4gKyAgICAgICAgICBTZWN0aW9uRGF0 YVtJbmRleF0uU2l6ZSA9IFNlY3Rpb24tPk1pc2MuVmlydHVhbFNpemU7DQo+ID4gKyAgICAgICAg ICBpZiAoU2VjdGlvbkRhdGFbSW5kZXhdLlNpemUgPT0gMCkgew0KPiA+ICsgICAgICAgICAgICBT ZWN0aW9uRGF0YVtJbmRleF0uU2l6ZSA9IFNlY3Rpb24tPlNpemVPZlJhd0RhdGE7DQo+ID4gKyAg ICAgICAgICB9DQo+ID4gKyAgICAgICAgICBTZWN0aW9uRGF0YVtJbmRleF0uRmxhZ3MgPSAoU2Vj dGlvbi0+Q2hhcmFjdGVyaXN0aWNzICYNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoRUZJX0lNQUdFX1NDTl9NRU1fRVhFQ1VURSB8DQo+ID4gRUZJX0lNQUdFX1ND Tl9NRU1fV1JJVEUpKTsNCj4gPiArICAgICAgICAgIFNlY3Rpb24gKz0gMTsNCj4gPiArICAgICAg ICB9DQo+ID4gKyAgICAgICAgLy8NCj4gPiArICAgICAgICAvLyBMb29wIG92ZXIgZXZlcnkgRFdP UkQgaW4gbWVtb3J5IGFuZCBjb21wdXRlIHRoZSB1bmlvbiBvZg0KPiA+IHRoZSBtZW1vcnkNCj4g PiArICAgICAgICAvLyBhY2Nlc3MgYml0cy4NCj4gPiArICAgICAgICAvLw0KPiA+ICsgICAgICAg IEVuZCA9IChVSU5UTilMaWJyYXJ5ICsgKFVJTlROKVBlQ29mZkltYWdlQ29udGV4dC5JbWFnZVNp emU7DQo+ID4gKyAgICAgICAgUmVnaW9uQmFzZSA9IChVSU5UTilMaWJyYXJ5Ow0KPiA+ICsgICAg ICAgIFJlZ2lvblNpemUgPSAwOw0KPiA+ICsgICAgICAgIEZsYWdzID0gMDsNCj4gPiArICAgICAg ICBmb3IgKEJhc2UgPSAoVUlOVE4pTGlicmFyeSArIHNpemVvZiAoVUlOVDMyKTsgQmFzZSA8IEVu ZDsNCj4gPiBCYXNlICs9IHNpemVvZiAoVUlOVDMyKSkgew0KPiA+ICsgICAgICAgICAgZm9yIChJ bmRleCA9IDA7IEluZGV4IDwgTnVtYmVyT2ZTZWN0aW9uczsgSW5kZXgrKykgew0KPiA+ICsgICAg ICAgICAgICBpZiAoU2VjdGlvbkRhdGFbSW5kZXhdLkJhc2UgPD0gQmFzZSAmJg0KPiA+ICsgICAg ICAgICAgICAgICAgKFNlY3Rpb25EYXRhW0luZGV4XS5CYXNlICsgU2VjdGlvbkRhdGFbSW5kZXhd LlNpemUpDQo+ID4NCj4gPiBCYXNlKSB7DQo+ID4gKyAgICAgICAgICAgICAgRmxhZ3MgfD0gU2Vj dGlvbkRhdGFbSW5kZXhdLkZsYWdzOw0KPiA+ICsgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAg ICB9DQo+ID4gKyAgICAgICAgICAvLw0KPiA+ICsgICAgICAgICAgLy8gV2hlbiBhIG5ldyBwYWdl IGlzIHJlYWNoZWQgY29uZmlndXJlIHRoZSBtZW1vcnkgYWNjZXNzDQo+ID4gZm9yIHRoZQ0KPiA+ ICsgICAgICAgICAgLy8gcHJldmlvdXMgcGFnZS4NCj4gPiArICAgICAgICAgIC8vDQo+ID4gKyAg ICAgICAgICBpZiAoQmFzZSAlIFNJWkVfNEtCID09IDApIHsNCj4gPiArICAgICAgICAgICAgUmVn aW9uU2l6ZSArPSBTSVpFXzRLQjsNCj4gPiArICAgICAgICAgICAgaWYgKChGbGFncyAmIEVGSV9J TUFHRV9TQ05fTUVNX1dSSVRFKSA9PQ0KPiA+IEVGSV9JTUFHRV9TQ05fTUVNX1dSSVRFKSB7DQo+ ID4gKyAgICAgICAgICAgICAgaWYgKChGbGFncyAmIEVGSV9JTUFHRV9TQ05fTUVNX0VYRUNVVEUp ID09DQo+ID4gRUZJX0lNQUdFX1NDTl9NRU1fRVhFQ1VURSkgew0KPiA+ICsgICAgICAgICAgICAg ICAgTmV3UHJvdGVjdGlvbiA9IFBBR0VfRVhFQ1VURV9SRUFEV1JJVEU7DQo+ID4gKyAgICAgICAg ICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAgICAgICAgIE5ld1Byb3RlY3Rpb24gPSBQQUdF X1JFQURXUklURTsNCj4gPiArICAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgICAgIH0gZWxz ZSB7DQo+ID4gKyAgICAgICAgICAgICAgaWYgKChGbGFncyAmIEVGSV9JTUFHRV9TQ05fTUVNX0VY RUNVVEUpID09DQo+ID4gRUZJX0lNQUdFX1NDTl9NRU1fRVhFQ1VURSkgew0KPiA+ICsgICAgICAg ICAgICAgICAgTmV3UHJvdGVjdGlvbiA9IFBBR0VfRVhFQ1VURV9SRUFEOw0KPiA+ICsgICAgICAg ICAgICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgICAgICAgICBOZXdQcm90ZWN0aW9uID0gUEFH RV9SRUFET05MWTsNCj4gPiArICAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgICAgIH0NCj4g PiArICAgICAgICAgICAgaWYgKCFWaXJ0dWFsUHJvdGVjdCAoKExQVk9JRClSZWdpb25CYXNlLCAo U0laRV9UKQ0KPiA+IFJlZ2lvblNpemUsIE5ld1Byb3RlY3Rpb24sICZPbGRQcm90ZWN0aW9uKSkg ew0KPiA+ICsgICAgICAgICAgICAgIFNlY1ByaW50ICgiU2V0dGluZyBQRTMyIFNlY3Rpb24gQWNj ZXNzIEZhaWxlZFxuXHIiKTsNCj4gPiArICAgICAgICAgICAgICBGcmVlTGlicmFyeSAoTGlicmFy eSk7DQo+ID4gKyAgICAgICAgICAgICAgZnJlZSAoU2VjdGlvbkRhdGEpOw0KPiA+ICsgICAgICAg ICAgICAgIExpYnJhcnkgPSBOVUxMOw0KPiA+ICsgICAgICAgICAgICAgIERsbEVudHJ5UG9pbnQg PSBOVUxMOw0KPiA+ICsgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgICAgICB9DQo+ ID4gKyAgICAgICAgICAgIEZsYWdzID0gMDsNCj4gPiArICAgICAgICAgICAgUmVnaW9uQmFzZSA9 IEJhc2U7DQo+ID4gKyAgICAgICAgICAgIFJlZ2lvblNpemUgPSAwOw0KPiA+ICsgICAgICAgICAg fQ0KPiA+ICsgICAgICAgIH0NCj4gPiArICAgICAgICBmcmVlIChTZWN0aW9uRGF0YSk7DQo+ID4g KyAgICAgICAgLy8NCj4gPiArICAgICAgICAvLyBDb25maWd1cmUgdGhlIGxhc3QgcGFydGlhbCBw YWdlDQo+ID4gKyAgICAgICAgLy8NCj4gPiArICAgICAgICBpZiAoTGlicmFyeSAhPSBOVUxMICYm IChFbmQgLSBSZWdpb25CYXNlKSA+IDApIHsNCj4gPiArICAgICAgICAgIGlmICgoRmxhZ3MgJiBF RklfSU1BR0VfU0NOX01FTV9XUklURSkgPT0NCj4gPiBFRklfSU1BR0VfU0NOX01FTV9XUklURSkg ew0KPiA+ICsgICAgICAgICAgICBpZiAoKEZsYWdzICYgRUZJX0lNQUdFX1NDTl9NRU1fRVhFQ1VU RSkgPT0NCj4gPiBFRklfSU1BR0VfU0NOX01FTV9FWEVDVVRFKSB7DQo+ID4gKyAgICAgICAgICAg ICAgTmV3UHJvdGVjdGlvbiA9IFBBR0VfRVhFQ1VURV9SRUFEV1JJVEU7DQo+ID4gKyAgICAgICAg ICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgICAgICAgTmV3UHJvdGVjdGlvbiA9IFBBR0VfUkVB RFdSSVRFOw0KPiA+ICsgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgICB9IGVsc2Ugew0KPiA+ ICsgICAgICAgICAgICBpZiAoKEZsYWdzICYgRUZJX0lNQUdFX1NDTl9NRU1fRVhFQ1VURSkgPT0N Cj4gPiBFRklfSU1BR0VfU0NOX01FTV9FWEVDVVRFKSB7DQo+ID4gKyAgICAgICAgICAgICAgTmV3 UHJvdGVjdGlvbiA9IFBBR0VfRVhFQ1VURV9SRUFEOw0KPiA+ICsgICAgICAgICAgICB9IGVsc2Ug ew0KPiA+ICsgICAgICAgICAgICAgIE5ld1Byb3RlY3Rpb24gPSBQQUdFX1JFQURPTkxZOw0KPiA+ ICsgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgICB9DQo+ID4gKyAgICAgICAgICBpZiAoIVZp cnR1YWxQcm90ZWN0ICgoTFBWT0lEKVJlZ2lvbkJhc2UsIChTSVpFX1QpIChFbmQgLQ0KPiA+IFJl Z2lvbkJhc2UpLCBOZXdQcm90ZWN0aW9uLCAmT2xkUHJvdGVjdGlvbikpIHsNCj4gPiArICAgICAg ICAgICAgU2VjUHJpbnQgKCJTZXR0aW5nIFBFMzIgU2VjdGlvbiBBY2Nlc3MgRmFpbGVkXG5cciIp Ow0KPiA+ICsgICAgICAgICAgICBGcmVlTGlicmFyeSAoTGlicmFyeSk7DQo+ID4gKyAgICAgICAg ICAgIExpYnJhcnkgPSBOVUxMOw0KPiA+ICsgICAgICAgICAgICBEbGxFbnRyeVBvaW50ID0gTlVM TDsNCj4gPiArICAgICAgICAgIH0NCj4gPiArICAgICAgICB9DQo+ID4gKyAgICAgIH0NCj4gPiAg ICAgIH0NCj4gPg0KPiA+ICAgICAgaWYgKChMaWJyYXJ5ICE9IE5VTEwpICYmIChEbGxFbnRyeVBv aW50ICE9IE5VTEwpKSB7IEBAIC0xMTQyLDcNCj4gPiArMTMwMCw3IEBAIFBlQ29mZkxvYWRlclJl bG9jYXRlSW1hZ2VFeHRyYUFjdGlvbiAoDQo+ID4gICAgICAgICAgLy8gVGhpcyBETEwgaXMgbm90 IGFscmVhZHkgbG9hZGVkLCBzbyBzb3VyY2UgbGV2ZWwNCj4gZGVidWdnaW5nDQo+ID4gaXMgc3Vw cG9ydGVkLg0KPiA+ICAgICAgICAgIC8vDQo+ID4gICAgICAgICAgSW1hZ2VDb250ZXh0LT5FbnRy eVBvaW50ID0NCj4gPiAoRUZJX1BIWVNJQ0FMX0FERFJFU1MpKFVJTlROKURsbEVudHJ5UG9pbnQ7 DQo+ID4gLSAgICAgICAgU2VjUHJpbnQgKCJMb2FkTGlicmFyeUV4IChcblxyICAlUyxcblxyICBO VUxMLA0KPiA+IERPTlRfUkVTT0xWRV9ETExfUkVGRVJFTkNFUylcblxyIiwgRGxsRmlsZU5hbWUp Ow0KPiA+ICsgICAgICAgIFNlY1ByaW50ICgiTG9hZExpYnJhcnlFeCAoXG5cciAgJVMsXG5cciAg TlVMTCwNCj4gPiBET05UX1JFU09MVkVfRExMX1JFRkVSRU5DRVMpIEAgMHglWFxuXHIiLCBEbGxG aWxlTmFtZSwgKGludCkgKFVJTlROKSANCj4gPiBMaWJyYXJ5KTsNCj4gPiAgICAgICAgfQ0KPiA+ ICAgICAgfSBlbHNlIHsNCj4gPiAgICAgICAgU2VjUHJpbnQgKCJXQVJOSU5HOiBObyBzb3VyY2Ug bGV2ZWwgZGVidWcgJVMuIFxuXHIiLCANCj4gPiBEbGxGaWxlTmFtZSk7DQo+ID4gLS0NCj4gPiAy LjM5LjIud2luZG93cy4xDQoNCg0KCi09LT0tPS09LT0tPS09LT0tPS09LT0tCkdyb3Vwcy5pbyBM aW5rczogWW91IHJlY2VpdmUgYWxsIG1lc3NhZ2VzIHNlbnQgdG8gdGhpcyBncm91cC4KVmlldy9S ZXBseSBPbmxpbmUgKCMxMDkwOTUpOiBodHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvbWVz c2FnZS8xMDkwOTUKTXV0ZSBUaGlzIFRvcGljOiBodHRwczovL2dyb3Vwcy5pby9tdC8xMDE1MzE1 NjAvNzY4NjE3NgpHcm91cCBPd25lcjogZGV2ZWwrb3duZXJAZWRrMi5ncm91cHMuaW8KVW5zdWJz Y3JpYmU6IGh0dHBzOi8vZWRrMi5ncm91cHMuaW8vZy9kZXZlbC91bnN1YiBbcmViZWNjYUBvcGVu ZncuaW9dCi09LT0tPS09LT0tPS09LT0tPS09LT0tCgoNCg==