From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mx.groups.io with SMTP id smtpd.web11.13284.1588953381414134044 for ; Fri, 08 May 2020 08:56:22 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=xz+db9gj; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: zhichao.gao@intel.com) IronPort-SDR: DNQm6TvM1ffm6EIw8mn1IiScw4o9NZi7GSZnLjA9jhaSt6ckAhOR+CgLRs0Lp99GSXupSKTWCW j9pHyxPJk9nw== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 May 2020 08:56:20 -0700 IronPort-SDR: 8wVgvndppk8JIIvpZrY3oivIDhpmtf0QD98UeevbHlN/S62Kz1Hc8qBWpZzhAMNF/ekMe4b88g o5dm0IgR9L5w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,368,1583222400"; d="scan'208";a="462335596" Received: from orsmsx104.amr.corp.intel.com ([10.22.225.131]) by fmsmga005.fm.intel.com with ESMTP; 08 May 2020 08:56:20 -0700 Received: from orsmsx159.amr.corp.intel.com (10.22.240.24) by ORSMSX104.amr.corp.intel.com (10.22.225.131) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 8 May 2020 08:56:19 -0700 Received: from ORSEDG002.ED.cps.intel.com (10.7.248.5) by ORSMSX159.amr.corp.intel.com (10.22.240.24) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 8 May 2020 08:56:19 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.176) by edgegateway.intel.com (134.134.137.101) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 8 May 2020 08:56:19 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fyo3irq8pGhm7e6WAIUgF2w5CGYi5eCSh86ojTJ7ywbzfPqh9YNw6e/SPNKD3uux1dQNh637DhNIIZk7jUsviop4hpU80jhvZegsIZsU+TxZMAfEwn7tq6axD0F/BaCQ+XB4UJxBgGCnRryI9VCc7Lm3umzoDrOy7j44SVtmMESzrzngVMIXAnboS/0QXYKprVMMHsTZuzDbv7jc7YqneQsTXk9zZhQjJDyvqEGoE9dUYxw9WCCnxEjLslYHNzV+t7HCoKx5+recQNUfrgsfjXmzE6raj80RQSlzZ1L/49vqXvb75u1hhnEh8roLY0DWmy8QOUasqV+d1226xpGkhA== 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=XAq7L3zOBXvLkwdcI013mA2MDvWAoXk+R2gEhbkv/Mo=; b=L3H30BSHhwXpexnUBYU6AHTtBYVpemKy3wcLUVhAztCPTxpz1CbqpEWIkGNJv/Y70tkBi/kHpPidAxx+ubwU2doB5wDlLrJXRMGpV+ZOLioJ0eTDJcJ/RgUo6vU39Wxh2cFdPPZNobeo0Rbkngvj2EdT2S35O7oBctMhTsycI7jqAOQvV4Jrg2NNNBgiYsT5cqNCj/gpy7YTwhvtIO9cFaB4cqbtGS81eSq/Lj6LWLO34GSY/iqvIGPEk/lrgLl0gXD4Pxx6I2ggg8VHQ2KjdV99i9Gbec/BedHlHgTBoX1zUYpqRwhVUwwSJwfhMI2NZHZkpG34EJsSdpTflNRgqQ== 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=XAq7L3zOBXvLkwdcI013mA2MDvWAoXk+R2gEhbkv/Mo=; b=xz+db9gjEqVlhXHOxIhkR33+53cRjroY9O1E0vd6BjigfUExlQdDjLBSN+Oy3gShn3cUV6NwPrpq8IMRKJsAVpY6aEHp5ejoUzLLFiae/lQqd4puJy/sOfj8w2gloKSy0qjv/XRGNhUYyF/Z1+OqB20vr0wW5fZ76HEUprQYZvM= Received: from DM6PR11MB4425.namprd11.prod.outlook.com (2603:10b6:5:1d9::31) by DM6PR11MB3196.namprd11.prod.outlook.com (2603:10b6:5:5b::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2958.29; Fri, 8 May 2020 15:56:16 +0000 Received: from DM6PR11MB4425.namprd11.prod.outlook.com ([fe80::615a:17b0:aa95:be1]) by DM6PR11MB4425.namprd11.prod.outlook.com ([fe80::615a:17b0:aa95:be1%3]) with mapi id 15.20.2958.032; Fri, 8 May 2020 15:56:16 +0000 From: "Gao, Zhichao" To: "devel@edk2.groups.io" , "samer.el-haj-mahmoud@arm.com" , "Vladimir Olovyannikov" , "Ni, Ray" , "Fu, Siyuan" , "Wu, Jiaxin" CC: nd Subject: Re: [edk2-devel] [PATCH 1/1] ShellPkg/DynamicCommand: add HttpDynamicCommand Thread-Topic: [edk2-devel] [PATCH 1/1] ShellPkg/DynamicCommand: add HttpDynamicCommand Thread-Index: AQHV0xp+5Vm/6nLt2k2mfK9zsUqAQaiA5oaAgAHgXwCAAYxrAIAADXSAgBo2IQCAAGSNcA== Date: Fri, 8 May 2020 15:56:16 +0000 Message-ID: References: <20200125005718.8931-1-vladimir.olovyannikov@broadcom.com> <9a006acebab2c210464a84a99df2e40f@mail.gmail.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.2.0.6 authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.55.52.219] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 03abd9ba-a841-4e75-a203-08d7f368573b x-ms-traffictypediagnostic: DM6PR11MB3196: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2399; x-forefront-prvs: 039735BC4E x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: OqDtCMxTGNB+eTO8bKjXQeV/gc9oKJj9Ez2vpDVxnZk993ytC7Oba0MeONbCqKkZg2T0jlbNZVXMDvpKnUQ3RNir8Zjm70ZiUKYyEvZ49ClIQ1nQpFYNIfR2HaFNLU2vwsXDn6I2oQjuzh6cue4l/qua475uL8SsTWkn4bmhMBAttHxcifRciOJ5AAMK2UCbrDTRVYKTN+b/RS6EXtcC/6362knOiVFN0hNB6aNQDMLT5QMwq9E9djZ0pXxUdWrTIFLC5JTmwlxXVsPjorTfsSmeqAq1U+MBmdgT7M2uAWDVfOgP9ea1G94zEMdrnURyw7Kp8fV0Sr1fhDSnz8SwxEBep8DTK4Cw/nQu5mxLUxXf3+SzDVGPUSiyG2C16jEMIcG1aCt7NJ0YnF0cdE6BL2HVRo7l+3GIdzsVkBNZhwK5btPkB7Mn++RYuxgmFtce38haXH/0AgoCnmhAwCasrIxr+Z1YkSpufHoqKhhiPPJI1YDjvL6J7NXogExYpP+hk7IeMtF14kBqQn3fJFJf5bizIGcrKyIndlWJdpuTcZ/TW3Pth4NRJE902H+u4HgB1IenAcBE9a2PlAENDpCLt3suu2NpB9/Bvh4TJyRqZgJFrR5jkTrHi15BsT48H1oJ x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR11MB4425.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(6019001)(39860400002)(346002)(396003)(366004)(376002)(136003)(33430700001)(6636002)(30864003)(71200400001)(9686003)(53546011)(186003)(5660300002)(6506007)(33656002)(83080400001)(55016002)(110136005)(7696005)(316002)(66446008)(4326008)(26005)(8676002)(19627235002)(66476007)(66946007)(76116006)(66556008)(86362001)(64756008)(52536014)(83290400001)(2906002)(33440700001)(478600001)(8936002)(83300400001)(966005)(83310400001)(83320400001)(83280400001)(569008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: nK6xI4BfpSR1tn8EvxgRex1u6Uw8EFUYw7yHV8DzoNrb2S3GSHGELl2Bzfb1e1e1FnDg6O15A0ScxuoqZelhZ/8IAxdqyHmsoWzXXfCPM2o8qauuGK4jGUFCldUNYuR/cH8pKTQw5kFpKXjSoQJfoXvzFgYA8JeQh250ti5Cd3DU4W9ibFLhe1Y3UFdhu5PpQdpzsrNgNgFUqKNItf47vN6A1WqUSTFyeQaqq3jhYctwAOLwTd6jPGUH9I47FqrGibd5r54ndJjQkdvzZT8327JciIupY76w+MHqMSdJq7SKlD/WWdMMwd0stnSQUK06ALw5lkHY3QBGdmRsWCZIJhZ7gVbn2e6TBu/dqKcszldvIonN1HuLKFm+mBfZ2aUSyGmOtU+pRrzTEntL+HFcRNuAuZPcrtok7ZescunozLAvhn1kRTRY02wwBJEviGq5z9g0xRiWsCvQWsShDmYIX+V48eTryB7I1m3fgYzEv0I= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 03abd9ba-a841-4e75-a203-08d7f368573b X-MS-Exchange-CrossTenant-originalarrivaltime: 08 May 2020 15:56:16.0459 (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: S9wzhqBH6s/e8egew1MpPxFI/S0DRQzHgZoeNyl5Zf1mO1GtYCo7odpqhyTH+pStyFZGROBRwpnvex0l10kjWA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB3196 Return-Path: zhichao.gao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SSB0aGluayB0aGUgTmV0d29ya1BrZyBtYWludGFpbmVyIGNhbiBnaXZlIGEgYmV0dGVyIGNvbW1l bnQgYW5kIHRoZSByZW1haW4gcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24gbmVlZCB0aGVpciBo ZWxwIHRvIHJldmlldy4NCg0KSGkgSmlheGluL1NpeXVhbiwNCg0KRG8geW91IGhhdmUgYW55IGNv bW1lbnRzIG9uIHRoaXM/IEFuZCB0aGUgaW1wbGVtZW50YXRpb24gaXMgcGFydCBvZiBOZXR3b3Jr UGtnIHByb3RvY29sIHVzYWdlLiBJIGFtIG5vdCBmYW1pbGlhciB3aXRoIHRoaXMuIFBsZWFzZSBo ZWxwIHRvIHJldmlldy4NCg0KVGhhbmtzLA0KWmhpY2hhbw0KDQo+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+IEZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vw cy5pbz4gT24gQmVoYWxmIE9mIFNhbWVyIEVsLQ0KPiBIYWotTWFobW91ZA0KPiBTZW50OiBGcmlk YXksIE1heSA4LCAyMDIwIDU6NTQgUE0NCj4gVG86IFZsYWRpbWlyIE9sb3Z5YW5uaWtvdiA8dmxh ZGltaXIub2xvdnlhbm5pa292QGJyb2FkY29tLmNvbT47DQo+IGRldmVsQGVkazIuZ3JvdXBzLmlv OyBOaSwgUmF5IDxyYXkubmlAaW50ZWwuY29tPjsgR2FvLCBaaGljaGFvDQo+IDx6aGljaGFvLmdh b0BpbnRlbC5jb20+DQo+IENjOiBuZCA8bmRAYXJtLmNvbT4NCj4gU3ViamVjdDogUmU6IFtlZGsy LWRldmVsXSBbUEFUQ0ggMS8xXSBTaGVsbFBrZy9EeW5hbWljQ29tbWFuZDogYWRkDQo+IEh0dHBE eW5hbWljQ29tbWFuZA0KPiANCj4gQW55IHVwZGF0ZSBvbiB0aGlzIHBhdGNoPyBUaGlzIGlzIGEg dXNlZnVsIGNvbW1hbmQgdG8gYWRkIHRvIHRoZSBTaGVsbCAoZm9yIGJvdGgNCj4gdGVzdGluZyBh bmQgZGVwbG95bWVudC9zY3JpcHRpbmcpLg0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPiA+IEZyb206IFZsYWRpbWlyIE9sb3Z5YW5uaWtvdiA8dmxhZGltaXIub2xvdnlhbm5p a292QGJyb2FkY29tLmNvbT4NCj4gPiBTZW50OiBUdWVzZGF5LCBBcHJpbCAyMSwgMjAyMCAxOjM3 IFBNDQo+ID4gVG86IFNhbWVyIEVsLUhhai1NYWhtb3VkIDxTYW1lci5FbC1IYWotTWFobW91ZEBh cm0uY29tPjsNCj4gPiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgUmF5IE5pIDxyYXkubmlAaW50ZWwu Y29tPjsgWmhpY2hhbyBHYW8NCj4gPiA8emhpY2hhby5nYW9AaW50ZWwuY29tPg0KPiA+IENjOiBu ZCA8bmRAYXJtLmNvbT4NCj4gPiBTdWJqZWN0OiBSRTogW2VkazItZGV2ZWxdIFtQQVRDSCAxLzFd IFNoZWxsUGtnL0R5bmFtaWNDb21tYW5kOiBhZGQNCj4gPiBIdHRwRHluYW1pY0NvbW1hbmQNCj4g Pg0KPiA+IC4uIFNraXBwZWQuLg0KPiA+ID4gVGhhbmtzIFZsYWRpbWlyIGZvciB0aGUgZXhwbGFu YXRpb24uDQo+ID4gPg0KPiA+ID4gV29uZGVyaW5nIHdoYXQgaXMgbW9yZSB1c2VmdWwgdG8gdXNl cnM6DQo+ID4gPg0KPiA+ID4gICAxLSBIYXZpbmcgdGhlICdodHRwJyBhbmQgJ3RmdHAnIGNvbW1h bmRzIHNoYXJlIGEgY29tbW9uIGludGVyZmFjZSB0bw0KPiA+ID4gbWFrZQ0KPiA+ID4gaXQgZWFz aWVyIHRvIHNjcmlwdCB1c2luZyBlaXRoZXIgdG9vbC9wcm90b2NvbCAoYXMgZXhwbGFpbmVkIGJl bG93KQ0KPiA+ID4gT3INCj4gPiA+ICAgMi0gSGF2aW5nIGEgbW9yZSBuYXR1cmFsIHN1cHBvcnQg Zm9yIFVSSXMgaW4gJ2h0dHAnIGNvbW1hbmQsIHNpbWlsYXIgdG8NCj4gPiA+IHdoYXQNCj4gPiA+ IGlzIGNvbW1vbiBpbiBvdGhlciBodHRwIENMSSBjbGllbnRzIGxpa2UgY3VybA0KPiA+ID4NCj4g PiA+IElmICgxKSBpcyBpbXBvcnRhbnQgZW5vdWdoIGZvciB1c2VycywgdGhlbiBjb3VsZCB3ZSBl bnRlcnRhaW4gYWRkaW5nICgyKQ0KPiA+ID4gaW4NCj4gPiA+IGFkZGl0aW9uIHRvICgxKS4NCj4g PiBUaGFuayB5b3UgZm9yIHRoZSBmZWVkYmFjayBTYW1lciwNCj4gPiBXZWxsLCAoMSkgaXMgaW1w b3J0YW50IGZvciB1cyBhcyB3ZSB1c2UgdW5pdmVyc2FsIFVFRkkgU2hlbGwgc2NyaXB0cyBmb3IN Cj4gPiBtdWx0aXBsZSBpbWFnZXMgdXBkYXRlcyBmcm9tIGFueSBtZWRpYSAodXNiLCBuZXR3b3Jr KGh0dHAvdGZ0cCksIGV0Yy4pDQo+ID4gSSBhZ3JlZSB0aGF0IGFkZGluZyAoMikgdG8gKDEpIG1h a2VzIHNlbnNlLiBXb3VsZCBiZSBuaWNlIHRvIGdldCBtb3JlDQo+ID4gZmVlZGJhY2sgZnJvbSBl ZGsyIGNvbW11bml0eSBvbiB0aGF0Lg0KPiA+DQo+ID4gVGhhbmsgeW91LA0KPiA+IFZsYWRpbWly DQo+ID4gPg0KPiA+ID4gVGhhbmtzLA0KPiA+ID4gLS1TYW1lcg0KPiA+ID4NCj4gPiA+DQo+ID4g PiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZyb206IFZsYWRpbWlyIE9s b3Z5YW5uaWtvdiA8dmxhZGltaXIub2xvdnlhbm5pa292QGJyb2FkY29tLmNvbT4NCj4gPiA+ID4g U2VudDogTW9uZGF5LCBBcHJpbCAyMCwgMjAyMCAxOjEwIFBNDQo+ID4gPiA+IFRvOiBTYW1lciBF bC1IYWotTWFobW91ZCA8U2FtZXIuRWwtSGFqLU1haG1vdWRAYXJtLmNvbT47DQo+ID4gPiA+IGRl dmVsQGVkazIuZ3JvdXBzLmlvOyBSYXkgTmkgPHJheS5uaUBpbnRlbC5jb20+OyBaaGljaGFvIEdh bw0KPiA+ID4gPiA8emhpY2hhby5nYW9AaW50ZWwuY29tPg0KPiA+ID4gPiBDYzogbmQgPG5kQGFy bS5jb20+DQo+ID4gPiA+IFN1YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BBVENIIDEvMV0gU2hl bGxQa2cvRHluYW1pY0NvbW1hbmQ6IGFkZA0KPiA+ID4gPiBIdHRwRHluYW1pY0NvbW1hbmQNCj4g PiA+ID4NCj4gPiA+ID4gSGkgU2FtZXIsDQo+ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0NCj4gPiA+ID4gPiBGcm9tOiBTYW1lciBFbC1IYWotTWFobW91ZCA8U2FtZXIuRWwtSGFq LU1haG1vdWRAYXJtLmNvbT4NCj4gPiA+ID4gPiBTZW50OiBTdW5kYXksIEFwcmlsIDE5LCAyMDIw IDU6MzEgQU0NCj4gPiA+ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IHZsYWRpbWlyLm9s b3Z5YW5uaWtvdkBicm9hZGNvbS5jb207DQo+ID4gUmF5DQo+ID4gPiBOaQ0KPiA+ID4gPiA+IDxy YXkubmlAaW50ZWwuY29tPjsgWmhpY2hhbyBHYW8gPHpoaWNoYW8uZ2FvQGludGVsLmNvbT4NCj4g PiA+ID4gPiBDYzogbmQgPG5kQGFybS5jb20+DQo+ID4gPiA+ID4gU3ViamVjdDogUkU6IFtlZGsy LWRldmVsXSBbUEFUQ0ggMS8xXSBTaGVsbFBrZy9EeW5hbWljQ29tbWFuZDogYWRkDQo+ID4gPiA+ ID4gSHR0cER5bmFtaWNDb21tYW5kDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBUZXN0ZWQtQnk6IFNh bWVyIEVsLUhhai1NYWhtb3VkIDxTYW1lci5FbC1IYWotDQo+ID4gTWFobW91ZEBhcm0uY29tPg0K PiA+ID4gPiA+DQo+ID4gPiA+ID4gSSB0ZXN0ZWQgb24gQWFyY2g2NCAoUlBpNCkgYW5kIHRoZSBj b21tYW5kIHNlZW1zIHRvIHdvcmsgd2VsbC4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IE9uZSBxdWVz dGlvbjogd2h5IGlzIHRoZSBpbnB1dCBhcmd1bWVudHMgImhvc3RbOnBvcnRdIiBhbmQgdGhlIHJl bW90ZQ0KPiA+ID4gPiBmaWxlDQo+ID4gPiA+ID4gImh0dHBfdXJpIiBub3QgdHJlYXRlZCBhcyBh IHNpbmdsZSAiaHR0cF91cmkiIGFyZ3VtZW50Pw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gRm9yIGV4 YW1wbGUsIGluc3RlYWQgb2Y6DQo+ID4gPiA+ID4gICAgZnMwOlw+IGh0dHAgaHR0cDovLzE5Mi4x NjguMS4xOjgwODAgZGlyMS9maWxlMS5kYXQgZmlsZTIuZGF0DQo+ID4gPiA+ID4NCj4gPiA+ID4g PiBXaHkgbm90Og0KPiA+ID4gPiA+ICAgZnMwOlw+IGh0dHAgaHR0cDovLzE5Mi4xNjguMS4xOjgw ODAvZGlyMS9maWxlMS5kYXQgZmlsZTIuZGF0DQo+ID4gPiA+IFRoZSBpZGVhIHdhcyB0byBtYWtl IGl0IDEwMCUgY29tcGF0aWJsZSB3aXRoIHRmdHAgY29tbWFuZC4NCj4gPiA+ID4gVGhpcyB3YXks IG9uZSBjb3VsZCBlYXNpbHkgc3VwcG9ydCBib3RoIGluIG9uZSBzY3JpcHQgbGlrZSB0aGlzOg0K PiA+ID4gPiBzZXQgLXYgZXRoX2ludCAiIC1pIGV0aDAiDQo+ID4gPiA+IC4uLg0KPiA+ID4gPiAj IFNldCB1cGRhdGUgcHJvdG9jb2wgb24gc29tZSBsb3ctbGV2ZWwgaW5pdA0KPiA+ID4gPiBzZXQg dXBkX3Byb3RvIGh0dHAgKG9yIHRmdHAsIG9yIHNvbWV0aGluZyBlbHNlIGlmIG5lZWRlZCBhbmQg c3VwcG9ydGVkKQ0KPiA+ID4gPiAuLi4NCj4gPiA+ID4gIyBTZXQgcHJvdG9jb2wtc3BlY2lmaWMg cGFyYW1ldGVycw0KPiA+ID4gPiBpZiAiJXVfcHJvdG8lIiA9PSAidGZ0cCIgdGhlbg0KPiA+ID4g PiAgIHNldCAtdiAgdGZ0cF9ibGtfcGFyYW0gIiAtcyAldGZ0cF9ibG9ja3NpemUlIg0KPiA+ID4g PiAgIHNldCAtdiB0ZnRwX3dpbl9wYXJhbSAiIC13ICV0ZnRwX3dpbmRvd3NpemUlIg0KPiA+ID4g PiBlbmRpZg0KPiA+ID4gPiAuLi4NCj4gPiA+ID4gIyAiVW5pdmVyc2FsaXplIiB0cmFuc2ZlciBj b21tYW5kDQo+ID4gPiA+IHNldCAtdiB0cmFuc2Zlcl9jbWQgIiV1X3Byb3RvJSAlZXRoX2ludCUg JXRmdHBfYmxrX3BhcmFtJQ0KPiA+ID4gPiAldGZ0cF93aW5fcGFyYW0lDQo+ID4gPiA+ICVzZXJ2 ZXJpcCUgJXRmdHBfZGlyJSINCj4gPiA+ID4gLi4uDQo+ID4gPiA+ICMgVXNlIHVuaXZlcnNhbCB0 cmFuc2ZlciBjb21tYW5kIHdpdGggbm8gY2hhbmdlcyBmb3IgYW55IHVwZGF0ZQ0KPiA+IHByb3Rv Y29sDQo+ID4gPiA+IChiZSBpdCB0ZnRwLCBodHRwLCBldGMuKS4NCj4gPiA+ID4gJXRyYW5zZmVy X2NtZCUvbWQ1c3VtLnR4dCAlZXNwX3Jvb3QlXG1kNXN1bS50eHQNCj4gPiA+ID4gLi4uDQo+ID4g PiA+DQo+ID4gPiA+IFRoYW5rcywNCj4gPiA+ID4gVmxhZGltaXINCj4gPiA+ID4gPg0KPiA+ID4g PiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ ID4gPiA+ID4gPiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMu aW8+IE9uIEJlaGFsZiBPZg0KPiA+ID4gPiA+IFZsYWRpbWlyDQo+ID4gPiA+ID4gPiBPbG92eWFu bmlrb3YgdmlhIEdyb3Vwcy5Jbw0KPiA+ID4gPiA+ID4gU2VudDogRnJpZGF5LCBKYW51YXJ5IDI0 LCAyMDIwIDc6NTcgUE0NCj4gPiA+ID4gPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgUmF5 IE5pIDxyYXkubmlAaW50ZWwuY29tPjsgWmhpY2hhbyBHYW8NCj4gPiA+ID4gPiA+IDx6aGljaGFv Lmdhb0BpbnRlbC5jb20+DQo+ID4gPiA+ID4gPiBDYzogVmxhZGltaXIgT2xvdnlhbm5pa292IDx2 bGFkaW1pci5vbG92eWFubmlrb3ZAYnJvYWRjb20uY29tPg0KPiA+ID4gPiA+ID4gU3ViamVjdDog W2VkazItZGV2ZWxdIFtQQVRDSCAxLzFdIFNoZWxsUGtnL0R5bmFtaWNDb21tYW5kOiBhZGQNCj4g PiA+ID4gPiA+IEh0dHBEeW5hbWljQ29tbWFuZA0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IElu dHJvZHVjZSBhbiBodHRwIGNsaWVudCB1dGlsaXppbmcgRURLMiBIVFRQIHByb3RvY29sLCB0bw0K PiA+ID4gPiA+ID4gYWxsb3cgZmFzdCBpbWFnZSBkb3dubG9hZGluZyBmcm9tIGh0dHAvaHR0cHMg c2VydmVycy4NCj4gPiA+ID4gPiA+IEhUVFAgZG93bmxvYWQgc3BlZWQgaXMgdXN1YWxseSB4MzAg dGltZXMgZmFzdGVyIHRoYW4gdGZ0cC4NCj4gPiA+ID4gPiA+IFRoZSBjbGllbnQgaXMgYmFzZWQg b24gdGhlIHNhbWUgYXBwcm9hY2ggYXMgdGZ0cCBkeW5hbWljIGNvbW1hbmQsDQo+ID4gPiBhbmQN Cj4gPiA+ID4gPiA+IHVzZXMgdGhlIHNhbWUgVUVGSSBTaGVsbCBjb21tYW5kIGxpbmUgcGFyYW1l dGVycy4gVGhpcyBtYWtlcyBpdA0KPiA+IGVhc3kNCj4gPiA+ID4gPiA+IGludGVncmF0aW5nIGh0 dHAgaW50byBleGlzdGluZyBVRUZJIFNoZWxsIHNjcmlwdHMuDQo+ID4gPiA+ID4gPiBOb3RlIHRo YXQgdG8gZW5hYmxlIEhUVFAgZG93bmxvYWQsIGZlYXR1cmUgUGNkDQo+ID4gPiA+ID4gPiBnRWZp TmV0d29ya1BrZ1Rva2VuU3BhY2VHdWlkLlBjZEFsbG93SHR0cENvbm5lY3Rpb25zIG11c3QNCj4g PiA+ID4gPiA+IGJlIHNldCB0byBUUlVFLg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IFNpZ25l ZC1vZmYtYnk6IFZsYWRpbWlyIE9sb3Z5YW5uaWtvdg0KPiA+ID4gPiA+IDx2bGFkaW1pci5vbG92 eWFubmlrb3ZAYnJvYWRjb20uY29tPg0KPiA+ID4gPiA+ID4gLS0tDQo+ID4gPiA+ID4gPiAgLi4u L0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRwLmMgIHwgMTYzOQ0KPiA+ID4g PiA+ID4gKysrKysrKysrKysrKysrKysNCj4gPiA+ID4gPiA+ICAuLi4vRHluYW1pY0NvbW1hbmQv SHR0cER5bmFtaWNDb21tYW5kL0h0dHAuaCAgfCAgIDg4ICsNCj4gPiA+ID4gPiA+ICAuLi4vSHR0 cER5bmFtaWNDb21tYW5kL0h0dHAudW5pICAgICAgICAgICAgICAgfCAgIDk1ICsNCj4gPiA+ID4g PiA+ICAuLi4vSHR0cER5bmFtaWNDb21tYW5kL0h0dHBBcHAuYyAgICAgICAgICAgICAgfCAgIDUz ICsNCj4gPiA+ID4gPiA+ICAuLi4vSHR0cER5bmFtaWNDb21tYW5kL0h0dHBBcHAuaW5mICAgICAg ICAgICAgfCAgIDU4ICsNCj4gPiA+ID4gPiA+ICAuLi4vSHR0cER5bmFtaWNDb21tYW5kL0h0dHBE eW5hbWljQ29tbWFuZC5jICAgfCAgMTM0ICsrDQo+ID4gPiA+ID4gPiAgLi4uL0h0dHBEeW5hbWlj Q29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQuaW5mIHwgICA2MyArDQo+ID4gPiA+ID4gPiAgU2hl bGxQa2cvSW5jbHVkZS9HdWlkL1NoZWxsTGliSGlpR3VpZC5oICAgICAgIHwgICAgNyArLQ0KPiA+ ID4gPiA+ID4gIFNoZWxsUGtnL1NoZWxsUGtnLmRlYyAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgIDEgKw0KPiA+ID4gPiA+ID4gIFNoZWxsUGtnL1NoZWxsUGtnLmRzYyAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgIDUgKw0KPiA+ID4gPiA+ID4gIDEwIGZpbGVzIGNoYW5nZWQsIDIxNDIg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPiA+ID4gPiA+ID4gIGNyZWF0ZSBtb2RlIDEw MDY0NA0KPiA+ID4gPiA+ID4gU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21t YW5kL0h0dHAuYw0KPiA+ID4gPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiA+ID4g U2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5kL0h0dHAuaA0KPiA+ID4g PiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiA+ID4gU2hlbGxQa2cvRHluYW1pY0Nv bW1hbmQvSHR0cER5bmFtaWNDb21tYW5kL0h0dHAudW5pDQo+ID4gPiA+ID4gPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0DQo+ID4gPiA+ID4gPiBTaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1p Y0NvbW1hbmQvSHR0cEFwcC5jDQo+ID4gPiA+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4g PiA+ID4gPiBTaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cEFw cC5pbmYNCj4gPiA+ID4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gPiA+DQo+ID4g PiA+ID4NCj4gPiA+DQo+ID4gU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21t YW5kL0h0dHBEeW5hbWljQ29tbWFuZA0KPiA+ID4gPiA+IC5jDQo+ID4gPiA+ID4gPiAgY3JlYXRl IG1vZGUgMTAwNjQ0DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPg0KPiA+IFNoZWxsUGtn L0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQNCj4g PiA+ID4gPiAuaW4NCj4gPiA+ID4gPiA+IGYNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBkaWZm IC0tZ2l0DQo+ID4gYS9TaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQv SHR0cC5jDQo+ID4gPiA+ID4gPiBiL1NoZWxsUGtnL0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWlj Q29tbWFuZC9IdHRwLmMNCj4gPiA+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+ ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjRlMGFmMzQxNzM0OA0KPiA+ID4gPiA+ID4gLS0tIC9k ZXYvbnVsbA0KPiA+ID4gPiA+ID4gKysrIGIvU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0cER5 bmFtaWNDb21tYW5kL0h0dHAuYw0KPiA+ID4gPiA+ID4gQEAgLTAsMCArMSwxNjM5IEBADQo+ID4g PiA+ID4gPiArLyoqIEBmaWxlDQo+ID4gPiA+ID4gPiArICBUaGUgaW1wbGVtZW50YXRpb24gZm9y IHRoZSAnaHR0cCcgU2hlbGwgY29tbWFuZC4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsg IENvcHlyaWdodCAoYykgMjAxNSwgQVJNIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ ID4gPiA+ID4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTUgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cw0KPiA+ID4gPiA+ID4gcmVzZXJ2ZWQuDQo+ID4gPiA+IDxCUj4NCj4gPiA+ ID4gPiA+ICsgIChDKSBDb3B5cmlnaHQgMjAxNSBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBE ZXZlbG9wbWVudA0KPiA+IExQPEJSPg0KPiA+ID4gPiA+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDIw LCBCcm9hZGNvbS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gPEJSPg0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQN Cj4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsjaW5jbHVkZSAi SHR0cC5oIg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyNkZWZpbmUgSVA0X0NPTkZJRzJf SU5URVJGQUNFX0lORk9fTkFNRV9MRU5HVEggMzINCj4gPiA+ID4gPiA+ICtFRklfSElJX0hBTkRM RSAgIG1IdHRwSGlpSGFuZGxlOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qDQo+ID4g PiA+ID4gPiArICAgQ29uc3RhbnQgc3RyaW5ncyBhbmQgZGVmaW5pdGlvbnMgcmVsYXRlZCB0byB0 aGUgbWVzc2FnZQ0KPiA+ID4gPiA+ID4gKyAgIGluZGljYXRpbmcgdGhlIGFtb3VudCBvZiBwcm9n cmVzcyBpbiB0aGUgZG93bG9hZGluZyBvZiBhIEhUVFANCj4gPiA+ID4gZmlsZS4NCj4gPiA+ID4g PiA+ICsqLw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8vIE51bWJlciBvZiBzdGVwcyBp biB0aGUgcHJvZ3Jlc3Npb24gc2xpZGVyDQo+ID4gPiA+ID4gPiArI2RlZmluZSBIVFRQX1BST0dS RVNTX1NMSURFUl9TVEVQUyAgXA0KPiA+ID4gPiA+ID4gKyAgKChzaXplb2YgKEhUVFBfUFJPR1Jf RlJBTUUpIC8gc2l6ZW9mIChDSEFSMTYpKSAtIDMpDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiArLy8gU2l6ZSBpbiBudW1iZXIgb2YgY2hhcmFjdGVycyBwbHVzIG9uZSAoZmluYWwgemVybykg b2YgdGhlDQo+ID4gPiA+ID4gPiBtZXNzYWdlDQo+ID4gPiA+IHRvDQo+ID4gPiA+ID4gPiArLy8g aW5kaWNhdGUgdGhlIHByb2dyZXNzIG9mIGFuIEhUVFAgZG93bmxvYWQuIFRoZSBmb3JtYXQgaXMN Cj4gPiA+ID4gIlsocHJvZ3Jlc3MNCj4gPiA+ID4gPiBzbGlkZXI6DQo+ID4gPiA+ID4gPiArLy8g NDAgY2hhcmFjdGVycyldIChuYiBvZiBLQnl0ZXMgZG93bmxvYWRlZCBzbyBmYXI6IDcgY2hhcmFj dGVycykNCj4gPiA+ID4gS2IiLg0KPiA+ID4gPiA+IFRoZXJlDQo+ID4gPiA+ID4gPiArLy8gYXJl IHRodXMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIEhUVFBfUFJPR1JfRlJBTUVbXSBwbHVz DQo+ID4gPiAxMQ0KPiA+ID4gPiA+ID4gY2hhcmFjdGVycw0KPiA+ID4gPiA+ID4gKy8vICgyIC8v IHNwYWNlcywgIktiIiBhbmQgc2V2ZW4gY2hhcmFjdGVycyBmb3IgdGhlIG51bWJlciBvZg0KPiA+ ID4gPiA+ID4gS0J5dGVzKS4NCj4gPiA+ID4gPiA+ICsjZGVmaW5lIEhUVFBfUFJPR1JFU1NfTUVT U0FHRV9TSVpFICBcDQo+ID4gPiA+ID4gPiArICAoKHNpemVvZiAoSFRUUF9QUk9HUl9GUkFNRSkg LyBzaXplb2YgKENIQVIxNikpICsgMTIpDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLy8N Cj4gPiA+ID4gPiA+ICsvLyBCdWZmZXIgc2l6ZS4gTm90ZSB0aGF0IGxhcmdlciBidWZmZXIgZG9l cyBub3QgbWVhbiBiZXR0ZXIgc3BlZWQhDQo+ID4gPiA+ID4gPiArLy8NCj4gPiA+ID4gPiA+ICsj ZGVmaW5lIERFRkFVTFRfQlVGX1NJWkUgICAgICBTSVpFXzMyS0INCj4gPiA+ID4gPiA+ICsjZGVm aW5lIE1BWF9CVUZfU0laRSAgICAgICAgICBTSVpFXzRNQg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gKyNkZWZpbmUgVElNRVJfTUFYX1RJTUVPVVRfUyAgIDEwDQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArLy8gRmlsZSBuYW1lIHRvIHVzZSB3aGVuIFVSSSBlbmRzIHdpdGggIi8iDQo+ ID4gPiA+ID4gPiArI2RlZmluZSBERUZBVUxUX0hUTUxfRklMRSAgICAgTCJpbmRleC5odG1sIg0K PiA+ID4gPiA+ID4gKyNkZWZpbmUgREVGQVVMVF9IVFRQX1BST1RPICAgIEwiaHR0cCINCj4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvLyBTdHJpbmcgdG8gZGVsZXRlIHRoZSBIVFRQIHByb2dy ZXNzIG1lc3NhZ2UgdG8gYmUgYWJsZSB0byB1cGRhdGUNCj4gPiA+ID4gPiA+IGl0DQo+ID4gPiA+ IDoNCj4gPiA+ID4gPiA+ICsvLyAoSFRUUF9QUk9HUkVTU19NRVNTQUdFX1NJWkUtMSkgJ1xiJw0K PiA+ID4gPiA+ID4gKyNkZWZpbmUgSFRUUF9QUk9HUkVTU19ERUwgXA0KPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4gTCJcYlxiXGJcYlxiXGJcYlxiXGJcYlxiXGJc YlxiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYlxiXA0KPiA+ID4gPiA+IGJcYlxi XA0KPiA+ID4gPiA+ID4gK1xiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYiINCj4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsjZGVmaW5lIEhUVFBfS0IgICAgICAgICAgICAgIEwi XGJcYlxiXGJcYlxiXGJcYlxiXGIiDQo+ID4gPiA+ID4gPiArLy8gRnJhbWUgZm9yIHRoZSBwcm9n cmVzc2lvbiBzbGlkZXINCj4gPiA+ID4gPiA+ICsjZGVmaW5lIEhUVFBfUFJPR1JfRlJBTUUgICAg IEwiWw0KPiA+ID4gPiBdIg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8vIFN0cmluZyBk ZXNjcmlwdGlvbnMgZm9yIHNlcnZlciBlcnJvcnMNCj4gPiA+ID4gPiA+ICtTVEFUSUMgQ09OU1Qg Q0hBUjE2ICpFcnJTdGF0dXNEZXNjW10gPQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ICsg IEwiNDAwIEJhZCBSZXF1ZXN0IiwNCj4gPiA+ID4gPiA+ICsgIEwiNDAxIFVuYXV0aG9yaXplZCIs DQo+ID4gPiA+ID4gPiArICBMIjQwMiBQYXltZW50IHJlcXVpcmVkIiwNCj4gPiA+ID4gPiA+ICsg IEwiNDAzIEZvcmJpZGRlbiIsDQo+ID4gPiA+ID4gPiArICBMIjQwNCBOb3QgRm91bmQiLA0KPiA+ ID4gPiA+ID4gKyAgTCI0MDUgTWV0aG9kIG5vdCBhbGxvd2VkIiwNCj4gPiA+ID4gPiA+ICsgIEwi NDA2IE5vdCBhY2NlcHRhYmxlIiwNCj4gPiA+ID4gPiA+ICsgIEwiNDA3IFByb3h5IGF1dGhlbnRp Y2F0aW9uIHJlcXVpcmVkIiwNCj4gPiA+ID4gPiA+ICsgIEwiNDA4IFJlcXVlc3QgdGltZSBvdXQi LA0KPiA+ID4gPiA+ID4gKyAgTCI0MDkgQ29uZmxpY3QiLA0KPiA+ID4gPiA+ID4gKyAgTCI0MTAg R29uZSIsDQo+ID4gPiA+ID4gPiArICBMIjQxMSBMZW5ndGggcmVxdWlyZWQiLA0KPiA+ID4gPiA+ ID4gKyAgTCI0MTIgUHJlY29uZGl0aW9uIGZhaWxlZCIsDQo+ID4gPiA+ID4gPiArICBMIjQxMyBS ZXF1ZXN0IGVudGl0eSB0b28gbGFyZ2UiLA0KPiA+ID4gPiA+ID4gKyAgTCI0MTQgUmVxdWVzdCBV UkkgdG8gbGFyZ2UiLA0KPiA+ID4gPiA+ID4gKyAgTCI0MTUgVW5zdXBwb3J0ZWQgbWVkaWEgdHlw ZSIsDQo+ID4gPiA+ID4gPiArICBMIjQxNiBSZXF1ZXN0ZWQgcmFuZ2Ugbm90IHNhdGlzZmllZCIs DQo+ID4gPiA+ID4gPiArICBMIjQxNyBFeHBlY3RhdGlvbiBmYWlsZWQiLA0KPiA+ID4gPiA+ID4g KyAgTCI1MDAgSW50ZXJuYWwgc2VydmVyIGVycm9yIiwNCj4gPiA+ID4gPiA+ICsgIEwiNTAxIE5v dCBpbXBsZW1lbnRlZCIsDQo+ID4gPiA+ID4gPiArICBMIjUwMiBCYWQgZ2F0ZXdheSIsDQo+ID4g PiA+ID4gPiArICBMIjUwMyBTZXJ2aWNlIHVuYXZhaWxhYmxlIiwNCj4gPiA+ID4gPiA+ICsgIEwi NTA0IEdhdGV3YXkgdGltZW91dCIsDQo+ID4gPiA+ID4gPiArICBMIjUwNSBIVFRQIHZlcnNpb24g bm90IHN1cHBvcnRlZCINCj4gPiA+ID4gPiA+ICt9Ow0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gKy8vIExvY2FsIEZpbGUgSGFuZGxlDQo+ID4gPiA+ID4gPiArU1RBVElDIFNIRUxMX0ZJTEVf SEFORExFICAgICBtRmlsZUhhbmRsZSA9IE5VTEw7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiArLy8gUGF0aCBvZiB0aGUgbG9jYWwgZmlsZSwgVW5pY29kZSBlbmNvZGVkDQo+ID4gPiA+ID4g PiArU1RBVElDIENPTlNUIENIQVIxNiAgICAgICAgICptTG9jYWxGaWxlUGF0aDsNCj4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ICtTVEFUSUMgQk9PTEVBTiBnUmVxdWVzdENhbGxiYWNrQ29tcGxl dGUgPSBGQUxTRTsNCj4gPiA+ID4gPiA+ICtTVEFUSUMgQk9PTEVBTiBnUmVzcG9uc2VDYWxsYmFj a0NvbXBsZXRlID0gRkFMU0U7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyoqDQo+ID4g PiA+ID4gPiArICBDbGVhbnMgb2ZmIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlcyBhbmQgdGFi cy4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gU3RyaW5nIHBvaW50 ZXIgdG8gdGhlIHN0cmluZyB0byB0cmltIHRoZW0gb2ZmLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ ID4gPiA+ID4gK1NUQVRJQw0KPiA+ID4gPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ID4gPiA+ICtU cmltU3BhY2VzKA0KPiA+ID4gPiA+ID4gKyAgSU4gQ0hBUjE2ICoqU3RyaW5nDQo+ID4gPiA+ID4g PiArICApDQo+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gKyAgQVNTRVJUKFN0cmluZyAhPSBO VUxMKTsNCj4gPiA+ID4gPiA+ICsgIEFTU0VSVCgqU3RyaW5nIT0gTlVMTCk7DQo+ID4gPiA+ID4g PiArICAvLw0KPiA+ID4gPiA+ID4gKyAgLy8gUmVtb3ZlIGFueSBzcGFjZXMgYW5kIHRhYnMgYXQg dGhlIGJlZ2lubmluZyBvZiB0aGUgKCpTdHJpbmcpLg0KPiA+ID4gPiA+ID4gKyAgLy8NCj4gPiA+ ID4gPiA+ICsgIHdoaWxlICgoKCpTdHJpbmcpWzBdID09IEwnICcpIHx8ICgoKlN0cmluZylbMF0g PT0gTCdcdCcpKSB7DQo+ID4gPiA+ID4gPiArICAgIENvcHlNZW0oKCpTdHJpbmcpLCAoKlN0cmlu ZykrMSwgU3RyU2l6ZSgoKlN0cmluZykpIC0NCj4gPiA+ID4gPiBzaXplb2YoKCpTdHJpbmcpWzBd KSk7DQo+ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAvLw0K PiA+ID4gPiA+ID4gKyAgLy8gUmVtb3ZlIGFueSBzcGFjZXMgYW5kIHRhYnMgYXQgdGhlIGVuZCBv ZiB0aGUgKCpTdHJpbmcpLg0KPiA+ID4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gPiA+ICsgIHdoaWxl ICgoU3RyTGVuICgqU3RyaW5nKSA+IDApICYmICgoKCpTdHJpbmcpW1N0ckxlbigoKlN0cmluZykp LTFdDQo+ID4gPiA+ID09IEwnICcpIHx8DQo+ID4gPiA+ID4gPiAoKCpTdHJpbmcpW1N0ckxlbigo KlN0cmluZykpLTFdID09IEwnXHQnKSkpIHsNCj4gPiA+ID4gPiA+ICsgICAgKCpTdHJpbmcpW1N0 ckxlbigoKlN0cmluZykpLTFdID0gQ0hBUl9OVUxMOw0KPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgcmV0dXJuIChFRklfU1VDQ0VTUyk7DQo+ID4gPiA+ID4g PiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qDQo+ID4g PiA+ID4gPiArICogQ2FsbGJhY2tzIGZvciByZXF1ZXN0IGFuZCByZXNwb25zZS4NCj4gPiA+ID4g PiA+ICsgKiBXZSBqdXN0IGFja25vd2xlZGdlIHRoYXQgb3BlcmF0aW9uIGhhcyBjb21wbGV0ZWQg aGVyZS4NCj4gPiA+ID4gPiA+ICsgKi8NCj4gPiA+ID4gPiA+ICtTVEFUSUMNCj4gPiA+ID4gPiA+ ICtWT0lEDQo+ID4gPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4gPiArUmVxdWVzdENhbGxiYWNr ICgNCj4gPiA+ID4gPiA+ICsgIElOIEVGSV9FVkVOVCBFdmVudCwNCj4gPiA+ID4gPiA+ICsgIElO IFZPSUQgKkNvbnRleHQNCj4gPiA+ID4gPiA+ICspDQo+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ ID4gKyAgZ1JlcXVlc3RDYWxsYmFja0NvbXBsZXRlID0gVFJVRTsNCj4gPiA+ID4gPiA+ICt9DQo+ ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArU1RBVElDDQo+ID4gPiA+ID4gPiArVk9JRA0KPiA+ ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ID4gK1Jlc3BvbnNlQ2FsbGJhY2sgKA0KPiA+ID4g PiA+ID4gKyAgSU4gRUZJX0VWRU5UIEV2ZW50LA0KPiA+ID4gPiA+ID4gKyAgSU4gVk9JRCAqQ29u dGV4dA0KPiA+ID4gPiA+ID4gKykNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICBnUmVz cG9uc2VDYWxsYmFja0NvbXBsZXRlID0gVFJVRTsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBDaGVj ayBhbmQgY29udmVydCB0aGUgVUlOVDE2IG9wdGlvbiB2YWx1ZXMgb2YgdGhlICdodHRwJyBjb21t YW5kDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBWYWx1ZVN0ciAg VmFsdWUgYXMgYW4gVW5pY29kZSBlbmNvZGVkIHN0cmluZw0KPiA+ID4gPiA+ID4gKyAgQHBhcmFt W291dF0gVmFsdWUgICAgIFVJTlQxNiB2YWx1ZQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g KyAgQHJldHVybiAgICAgVFJVRSAgICAgIFRoZSB2YWx1ZSB3YXMgcmV0dXJuZWQuDQo+ID4gPiA+ ID4gPiArICBAcmV0dXJuICAgICBGQUxTRSAgICAgQSBwYXJzaW5nIGVycm9yIG9jY3VyZWQuDQo+ ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gPiArU1RBVElDDQo+ID4gPiA+ID4gPiArQk9PTEVB Tg0KPiA+ID4gPiA+ID4gK1N0cmluZ1RvVWludDE2ICgNCj4gPiA+ID4gPiA+ICsgIElOICAgQ09O U1QgQ0hBUjE2ICAqVmFsdWVTdHIsDQo+ID4gPiA+ID4gPiArICBPVVQgIFVJTlQxNiAgICAgICAg KlZhbHVlDQo+ID4gPiA+ID4gPiArICApOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8q Kg0KPiA+ID4gPiA+ID4gKyAgR2V0IHRoZSBuYW1lIG9mIHRoZSBOSUMuDQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICAgQ29udHJvbGxlckhhbmRsZSAgVGhlIG5ldHdv cmsgcGh5c2ljYWwgZGV2aWNlDQo+ID4gPiA+ID4gPiBoYW5kbGUuDQo+ID4gPiA+ID4gPiArICBA cGFyYW1baW5dICAgTmljTnVtYmVyICAgICAgICAgVGhlIG5ldHdvcmsgcGh5c2ljYWwgZGV2aWNl DQo+ID4gPiA+ID4gPiBudW1iZXIuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSAgTmljTmFt ZSAgICAgICAgICAgQWRkcmVzcyB3aGVyZSB0byBzdG9yZSB0aGUgTklDDQo+ID4gPiA+ID4gPiBu YW1lLg0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBt ZW1vcnkgYXJlYSBoYXMgdG8gYmUgYXQgbGVhc3QNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gSVA0 X0NPTkZJRzJfSU5URVJGQUNFX0lORk9fTkFNRV9MRU5HVEgNCj4gPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgYnl0ZSB3aWRlLg0KPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gKyAgQHJldHVybiAgRUZJX1NVQ0NFU1MgIFRoZSBuYW1lIG9mIHRoZSBO SUMgd2FzIHJldHVybmVkLg0KPiA+ID4gPiA+ID4gKyAgQHJldHVybiAgT3RoZXJzICAgICAgIFRo ZSBjcmVhdGlvbiBvZiB0aGUgY2hpbGQgZm9yIHRoZSBNYW5hZ2VkDQo+ID4gPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgTmV0d29yayBTZXJ2aWNlIGZhaWxlZCBvciB0aGUgb3Blbmlu ZyBvZg0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBNYW5hZ2VkIE5l dHdvcmsgUHJvdG9jb2wgZmFpbGVkIG9yDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgdGhlIG9wZXJhdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHRoZQ0KPiA+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgIE1hbmFnZWQgTmV0d29yayBQcm90b2NvbCBjb3VsZCBub3Qg YmUNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICByZWFkLg0KPiA+ID4gPiA+ ID4gKyoqLw0KPiA+ID4gPiA+ID4gK1NUQVRJQw0KPiA+ID4gPiA+ID4gK0VGSV9TVEFUVVMNCj4g PiA+ID4gPiA+ICtHZXROaWNOYW1lICgNCj4gPiA+ID4gPiA+ICsgIElOICAgRUZJX0hBTkRMRSAg Q29udHJvbGxlckhhbmRsZSwNCj4gPiA+ID4gPiA+ICsgIElOICAgVUlOVE4gICAgICAgTmljTnVt YmVyLA0KPiA+ID4gPiA+ID4gKyAgT1VUICBDSEFSMTYgICAgICAqTmljTmFtZQ0KPiA+ID4gPiA+ ID4gKyAgKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ICsg IENyZWF0ZSBhIGNoaWxkIGZvciB0aGUgc2VydmljZSBpZGVudGlmaWVkIGJ5IGl0cyBzZXJ2aWNl IGJpbmRpbmcNCj4gPiA+ID4gcHJvdG9jb2wNCj4gPiA+ID4gPiBHVUlEDQo+ID4gPiA+ID4gPiAr ICBhbmQgZ2V0IGZyb20gdGhlIGNoaWxkIHRoZSBpbnRlcmZhY2Ugb2YgdGhlIHByb3RvY29sIGlk ZW50aWZpZWQNCj4gPiA+ID4gPiA+IGJ5DQo+ID4gPiA+IGl0cw0KPiA+ID4gPiA+IEdVSUQuDQo+ ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICAgQ29udHJvbGxlckhhbmRs ZSAgICAgICAgICAgIENvbnRyb2xsZXIgaGFuZGxlLg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2lu XSAgIFNlcnZpY2VCaW5kaW5nUHJvdG9jb2xHdWlkICBTZXJ2aWNlIGJpbmRpbmcgcHJvdG9jb2wN Cj4gPiA+ID4gR1VJRA0KPiA+ID4gPiA+IG9mDQo+ID4gPiA+ID4gPiB0aGUNCj4gPiA+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZSB0byBi ZSBjcmVhdGVkLg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIFByb3RvY29sR3VpZCAgICAg ICAgICAgICAgICBHVUlEIG9mIHRoZSBwcm90b2NvbCB0bw0KPiA+ID4gPiA+ID4gYmUNCj4gPiA+ ID4gb3Blbi4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtvdXRdICBDaGlsZEhhbmRsZSAgICAgICAg ICAgICAgICAgQWRkcmVzcyB3aGVyZSB0aGUNCj4gPiA+ID4gPiA+IGhhbmRsZXINCj4gPiA+ID4g b2YgdGhlDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNyZWF0ZWQgY2hpbGQgaXMNCj4gPiA+ID4gPiA+IHJldHVybmVkLg0KPiA+ID4gPiBO VUxMIGlzDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybmVkIGluIGNhc2Ugb2YNCj4gPiA+ID4gPiA+IGVycm9yLg0KPiA+ID4gPiA+ ID4gKyAgQHBhcmFtW291dF0gIEludGVyZmFjZSAgICAgICAgICAgICAgICAgICBBZGRyZXNzIHdo ZXJlIGEgcG9pbnRlcg0KPiA+ID4gPiA+ID4gdG8NCj4gPiA+ID4gdGhlDQo+ID4gPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvY29sIGludGVy ZmFjZSBpcw0KPiA+ID4gPiByZXR1cm5lZCBpbg0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIG9mIHN1Y2Nlc3MuDQo+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiArICBAcmV0dXJuICBFRklfU1VDQ0VTUyAgVGhlIGNoaWxkIHdhcyBj cmVhdGVkIGFuZCB0aGUgcHJvdG9jb2wNCj4gPiA+ID4gb3BlbmVkLg0KPiA+ID4gPiA+ID4gKyAg QHJldHVybiAgT3RoZXJzICAgICAgIEVpdGhlciB0aGUgY3JlYXRpb24gb2YgdGhlIGNoaWxkIG9y IHRoZQ0KPiA+ID4gPiBvcGVuaW5nDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgb2YgdGhlIHByb3RvY29sIGZhaWxlZC4NCj4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ ICtTVEFUSUMNCj4gPiA+ID4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiA+ID4gPiArQ3JlYXRlU2Vy dmljZUNoaWxkQW5kT3BlblByb3RvY29sICgNCj4gPiA+ID4gPiA+ICsgIElOICAgRUZJX0hBTkRM RSAgQ29udHJvbGxlckhhbmRsZSwNCj4gPiA+ID4gPiA+ICsgIElOICAgRUZJX0dVSUQgICAgKlNl cnZpY2VCaW5kaW5nUHJvdG9jb2xHdWlkLA0KPiA+ID4gPiA+ID4gKyAgSU4gICBFRklfR1VJRCAg ICAqUHJvdG9jb2xHdWlkLA0KPiA+ID4gPiA+ID4gKyAgT1VUICBFRklfSEFORExFICAqQ2hpbGRI YW5kbGUsDQo+ID4gPiA+ID4gPiArICBPVVQgIFZPSUQgICAgICAgICoqSW50ZXJmYWNlDQo+ID4g PiA+ID4gPiArICApOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ ID4gKyAgQ2xvc2UgdGhlIHByb3RvY29sIGlkZW50aWZpZWQgYnkgaXRzIEdVSUQgb24gdGhlIGNo aWxkIGhhbmRsZSBvZg0KPiA+ID4gPiB0aGUNCj4gPiA+ID4gPiBzZXJ2aWNlDQo+ID4gPiA+ID4g PiArICBpZGVudGlmaWVkIGJ5IGl0cyBzZXJ2aWNlIGJpbmRpbmcgcHJvdG9jb2wgR1VJRCwgdGhl biBkZXN0cm95IHRoZQ0KPiA+ID4gPiBjaGlsZA0KPiA+ID4gPiA+ID4gKyAgaGFuZGxlLg0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQ29udHJvbGxlckhhbmRsZSAg ICAgICAgICAgIENvbnRyb2xsZXIgaGFuZGxlLg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAg U2VydmljZUJpbmRpbmdQcm90b2NvbEd1aWQgIFNlcnZpY2UgYmluZGluZyBwcm90b2NvbA0KPiA+ ID4gPiBHVUlEDQo+ID4gPiA+ID4gb2YNCj4gPiA+ID4gPiA+IHRoZQ0KPiA+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2UgdG8gYmUgZGVz dHJveWVkLg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgUHJvdG9jb2xHdWlkICAgICAgICAg ICAgICAgIEdVSUQgb2YgdGhlIHByb3RvY29sIHRvDQo+ID4gPiA+ID4gPiBiZQ0KPiA+ID4gPiBj bG9zZWQuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBDaGlsZEhhbmRsZSAgICAgICAgICAg ICAgICAgSGFuZGxlIG9mIHRoZSBjaGlsZCB0byBiZQ0KPiA+ID4gPiBkZXN0cm95ZWQuDQo+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gPiArU1RBVElDDQo+ID4gPiA+ ID4gPiArVk9JRA0KPiA+ID4gPiA+ID4gK0Nsb3NlUHJvdG9jb2xBbmREZXN0cm95U2VydmljZUNo aWxkICgNCj4gPiA+ID4gPiA+ICsgIElOICBFRklfSEFORExFICBDb250cm9sbGVySGFuZGxlLA0K PiA+ID4gPiA+ID4gKyAgSU4gIEVGSV9HVUlEICAgICpTZXJ2aWNlQmluZGluZ1Byb3RvY29sR3Vp ZCwNCj4gPiA+ID4gPiA+ICsgIElOICBFRklfR1VJRCAgICAqUHJvdG9jb2xHdWlkLA0KPiA+ID4g PiA+ID4gKyAgSU4gIEVGSV9IQU5ETEUgIENoaWxkSGFuZGxlDQo+ID4gPiA+ID4gPiArICApOw0K PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ ID4gKyAgV29ya2VyIGZ1bmN0aW9uIHRoYXQgZG93bmxvYWQgdGhlIGRhdGEgb2YgYSBmaWxlIGZy b20gYSBIVFRQDQo+ID4gPiA+ID4gPiBzZXJ2ZXINCj4gPiA+ID4gPiBnaXZlbg0KPiA+ID4gPiA+ ID4gKyAgdGhlIHBhdGggb2YgdGhlIGZpbGUgYW5kIGl0cyBzaXplLg0KPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIENvbnRleHQgICAgICAgICAgIEEgcG9pbnRlciB0 byB0aGUgZG93bmxvYWQgY29udGV4dC4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBy ZXR2YWwgIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgZmlsZSB3YXMgZG93bmxvYWRlZC4NCj4g PiA+ID4gPiA+ICsgIEByZXR2YWwgIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBBIG1lbW9yeSBhbGxv Y2F0aW9uIGZhaWxlZC4NCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgIE90aGVycyAgICAgICAgICAg ICAgICBUaGUgZG93bmxvYWRpbmcgb2YgdGhlIGZpbGUNCj4gPiA+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBzZXJ2ZXIgZmFpbGVkLg0KPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gK1NUQVRJQw0KPiA+ID4gPiA+ID4g K0VGSV9TVEFUVVMNCj4gPiA+ID4gPiA+ICtEb3dubG9hZEZpbGUgKA0KPiA+ID4gPiA+ID4gKyAg SU4gICBET1dOTE9BRF9DT05URVhUICAgKkNvbnRleHQNCj4gPiA+ID4gPiA+ICsgICk7DQo+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiArU1RBVElDIENPTlNUIFNIRUxMX1BBUkFNX0lURU0gUGFy YW1MaXN0W10gPSB7DQo+ID4gPiA+ID4gPiArICB7TCItaSIsIFR5cGVWYWx1ZX0sDQo+ID4gPiA+ ID4gPiArICB7TCItbCIsIFR5cGVWYWx1ZX0sDQo+ID4gPiA+ID4gPiArICB7TCItcCIsIFR5cGVW YWx1ZX0sDQo+ID4gPiA+ID4gPiArICB7TCItcyIsIFR5cGVWYWx1ZX0sDQo+ID4gPiA+ID4gPiAr ICB7TCItdCIsIFR5cGVWYWx1ZX0sDQo+ID4gPiA+ID4gPiArICB7TlVMTCAsIFR5cGVNYXh9DQo+ ID4gPiA+ID4gPiArICB9Ow0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qKg0KPiA+ID4g PiA+ID4gKyAgRnVuY3Rpb24gZm9yICdodHRwJyBjb21tYW5kLg0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gKyAgQHBhcmFtW2luXSBJbWFnZUhhbmRsZSAgSGFuZGxlIHRvIHRoZSBJbWFnZSAo TlVMTCBpZiBJbnRlcm5hbCkuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dIFN5c3RlbVRhYmxl ICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUgKE5VTEwgaWYNCj4gPiA+ID4gSW50ZXJuYWwp Lg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHJldHVybiAgU0hFTExfU1VDQ0VTUyAg ICAgICAgICAgIFRoZSAnaHR0cCcgY29tbWFuZCBjb21wbGV0ZWQNCj4gPiA+ID4gPiBzdWNjZXNz ZnVsbHkuDQo+ID4gPiA+ID4gPiArICBAcmV0dXJuICBTSEVMTF9BQk9SVEVEICAgICAgICAgICAg VGhlIFNoZWxsIExpYnJhcnkNCj4gPiA+ID4gPiA+IGluaXRpYWxpemF0aW9uDQo+ID4gPiA+IGZh aWxlZC4NCj4gPiA+ID4gPiA+ICsgIEByZXR1cm4gIFNIRUxMX0lOVkFMSURfUEFSQU1FVEVSICBB dCBsZWFzdCBvbmUgb2YgdGhlDQo+ID4gPiBjb21tYW5kJ3MNCj4gPiA+ID4gPiA+IGFyZ3VtZW50 cyBpcw0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5v dCB2YWxpZC4NCj4gPiA+ID4gPiA+ICsgIEByZXR1cm4gIFNIRUxMX09VVF9PRl9SRVNPVVJDRVMg ICBBIG1lbW9yeSBhbGxvY2F0aW9uDQo+ID4gZmFpbGVkLg0KPiA+ID4gPiA+ID4gKyAgQHJldHVy biAgU0hFTExfTk9UX0ZPVU5EICAgICAgICAgIE5ldHdvcmsgSW50ZXJmYWNlIENhcmQgbm90DQo+ ID4gPiBmb3VuZC4NCj4gPiA+ID4gPiA+ICsgIEByZXR1cm4gIFNIRUxMX1VOU1VQUE9SVEVEICAg ICAgICBDb21tYW5kIHdhcyB2YWxpZCwgYnV0IHRoZQ0KPiA+ID4gc2VydmVyDQo+ID4gPiA+ID4g PiByZXR1cm5lZA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGEgc3RhdHVzIGNvZGUgaW5kaWNhdGluZyBzb21lDQo+ID4gPiA+IGVycm9yLg0KPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4YW1pbmUgdGhlIGZp bGUgcmVxdWVzdGVkIGZvcg0KPiA+ID4gPiBlcnJvciBib2R5Lg0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gK1NIRUxMX1NUQVRVUw0KPiA+ID4gPiA+ID4gK1J1 bkh0dHAgKA0KPiA+ID4gPiA+ID4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgSW1hZ2VIYW5kbGUs DQo+ID4gPiA+ID4gPiArICBJTiBFRklfU1lTVEVNX1RBQkxFICAqU3lzdGVtVGFibGUNCj4gPiA+ ID4gPiA+ICsgICkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICBFRklfU1RBVFVTICAg ICAgICAgICAgICBTdGF0dXM7DQo+ID4gPiA+ID4gPiArICBMSVNUX0VOVFJZICAgICAgICAgICAg ICAqQ2hlY2tQYWNrYWdlOw0KPiA+ID4gPiA+ID4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAg KlByb2JsZW1QYXJhbTsNCj4gPiA+ID4gPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgIFBh cmFtQ291bnQ7DQo+ID4gPiA+ID4gPiArICBDT05TVCBDSEFSMTYgICAgICAgICAgICAqVXNlck5p Y05hbWU7DQo+ID4gPiA+ID4gPiArICBCT09MRUFOICAgICAgICAgICAgICAgICBOaWNGb3VuZDsN Cj4gPiA+ID4gPiA+ICsgIENPTlNUIENIQVIxNiAgICAgICAgICAgICpWYWx1ZVN0cjsNCj4gPiA+ ID4gPiA+ICsgIENPTlNUIENIQVIxNiAgICAgICAgICAgICpSZW1vdGVGaWxlUGF0aDsNCj4gPiA+ ID4gPiA+ICsgIENPTlNUIENIQVIxNiAgICAgICAgICAgICpXYWxrZXI7DQo+ID4gPiA+ID4gPiAr ICBDT05TVCBDSEFSMTYgICAgICAgICAgICAqUHJveHlTZXJ2ZXJBZGRyOw0KPiA+ID4gPiA+ID4g KyAgRUZJX0hUVFBfQ09ORklHX0RBVEEgICAgSHR0cENvbmZpZ0RhdGE7DQo+ID4gPiA+ID4gPiAr ICBFRklfSFRUUHY0X0FDQ0VTU19QT0lOVCBJUHY0Tm9kZTsNCj4gPiA+ID4gPiA+ICsgIEVGSV9I QU5ETEUgICAgICAgICAgICAgICpIYW5kbGVzOw0KPiA+ID4gPiA+ID4gKyAgVUlOVE4gICAgICAg ICAgICAgICAgICAgSGFuZGxlQ291bnQ7DQo+ID4gPiA+ID4gPiArICBVSU5UTiAgICAgICAgICAg ICAgICAgICBOaWNOdW1iZXI7DQo+ID4gPiA+ID4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAg ICBJbml0aWFsU2l6ZTsNCj4gPiA+ID4gPiA+ICsgIENIQVIxNg0KPiA+ID4gPiA+ID4gTmljTmFt ZVtJUDRfQ09ORklHMl9JTlRFUkZBQ0VfSU5GT19OQU1FX0xFTkdUSF07DQo+ID4gPiA+ID4gPiAr ICBFRklfSEFORExFICAgICAgICAgICAgICBDb250cm9sbGVySGFuZGxlOw0KPiA+ID4gPiA+ID4g KyAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgSHR0cENoaWxkSGFuZGxlOw0KPiA+ID4gPiA+ID4g KyAgRE9XTkxPQURfQ09OVEVYVCAgICAgICAgQ29udGV4dDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiA+ICsgIFByb2JsZW1QYXJhbSAgICAgICAgPSBOVUxMOw0KPiA+ID4gPiA+ID4gKyAgTmlj Rm91bmQgICAgICAgICAgICA9IEZBTFNFOw0KPiA+ID4gPiA+ID4gKyAgSGFuZGxlcyAgICAgICAg ICAgICA9IE5VTEw7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAvLw0KPiA+ID4gPiA+ ID4gKyAgLy8gSW5pdGlhbGl6ZSB0aGUgU2hlbGwgbGlicmFyeSAod2UgbXVzdCBiZSBpbiBub24t YXV0by1pbml0Li4uKQ0KPiA+ID4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gPiA+ICsgIFN0YXR1cyA9 IFNoZWxsSW5pdGlhbGl6ZSAoKTsNCj4gPiA+ID4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1 cykpIHsNCj4gPiA+ID4gPiA+ICsgICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPiA+ ID4gPiA+ICsgICAgcmV0dXJuIFNIRUxMX0FCT1JURUQ7DQo+ID4gPiA+ID4gPiArICB9DQo+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBaZXJvTWVtICgmQ29udGV4dCwgc2l6ZW9mIChDb250 ZXh0KSk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAvLw0KPiA+ID4gPiA+ID4gKyAg Ly8gUGFyc2UgdGhlIGNvbW1hbmQgbGluZS4NCj4gPiA+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ID4g PiArICBTdGF0dXMgPSBTaGVsbENvbW1hbmRMaW5lUGFyc2UgKFBhcmFtTGlzdCwgJkNoZWNrUGFj a2FnZSwNCj4gPiA+ID4gPiA+ICZQcm9ibGVtUGFyYW0sIFRSVUUpOw0KPiA+ID4gPiA+ID4gKyAg aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gPiA+ID4gKyAgICBpZiAoKFN0YXR1cyA9 PSBFRklfVk9MVU1FX0NPUlJVUFRFRCkgJiYNCj4gPiA+ID4gPiA+ICsgICAgICAgIChQcm9ibGVt UGFyYW0gIT0gTlVMTCkgKSB7DQo+ID4gPiA+ID4gPiArICAgICAgU2hlbGxQcmludEhpaUV4ICgN Cj4gPiA+ID4gPiA+ICsgICAgICAgIC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RPS0VOIChTVFJfR0VO X1BST0JMRU0pLA0KPiA+ID4gbUh0dHBIaWlIYW5kbGUsDQo+ID4gPiA+ID4gPiArICAgICAgICBI VFRQX0FQUF9OQU1FLCBQcm9ibGVtUGFyYW0NCj4gPiA+ID4gPiA+ICsgICAgICAgICk7DQo+ID4g PiA+ID4gPiArICAgICAgU0hFTExfRlJFRV9OT05fTlVMTCAoUHJvYmxlbVBhcmFtKTsNCj4gPiA+ ID4gPiA+ICsgICAgfSBlbHNlIHsNCj4gPiA+ID4gPiA+ICsgICAgICBBU1NFUlQgKEZBTFNFKTsN Cj4gPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ID4gKyAgICBnb3RvIEVycm9yOw0KPiA+ID4g PiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gPiA+ ICsgIC8vIENoZWNrIHRoZSBudW1iZXIgb2YgcGFyYW1ldGVycw0KPiA+ID4gPiA+ID4gKyAgLy8N Cj4gPiA+ID4gPiA+ICsgIFN0YXR1cyA9IEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ICsgIFBhcmFtQ291bnQgPSBTaGVsbENvbW1hbmRMaW5lR2V0Q291 bnQgKENoZWNrUGFja2FnZSk7DQo+ID4gPiA+ID4gPiArICBpZiAoUGFyYW1Db3VudCA+IDQpIHsN Cj4gPiA+ID4gPiA+ICsgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gPiA+ID4gPiA+ICsgICAgICAt MSwgLTEsIE5VTEwsIFNUUklOR19UT0tFTiAoU1RSX0dFTl9UT09fTUFOWSksDQo+ID4gPiA+ID4g PiArICAgICAgbUh0dHBIaWlIYW5kbGUsIEhUVFBfQVBQX05BTUUNCj4gPiA+ID4gPiA+ICsgICAg ICApOw0KPiA+ID4gPiA+ID4gKyAgICBnb3RvIEVycm9yOw0KPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgaWYgKFBhcmFtQ291bnQgPCAzKSB7DQo+ID4gPiA+ ID4gPiArICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ID4gPiA+ID4gPiArICAgICAgLTEsIC0xLCBO VUxMLCBTVFJJTkdfVE9LRU4gKFNUUl9HRU5fVE9PX0ZFVyksDQo+ID4gPiA+ID4gPiArICAgICAg bUh0dHBIaWlIYW5kbGUsIEhUVFBfQVBQX05BTUUNCj4gPiA+ID4gPiA+ICsgICAgICApOw0KPiA+ ID4gPiA+ID4gKyAgICBnb3RvIEVycm9yOw0KPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gKyAgWmVyb01lbSAoJkh0dHBDb25maWdEYXRhLCBzaXplb2YgKEh0dHBD b25maWdEYXRhKSk7DQo+ID4gPiA+ID4gPiArICBaZXJvTWVtICgmSVB2NE5vZGUsIHNpemVvZiAo SVB2NE5vZGUpKTsNCj4gPiA+ID4gPiA+ICsgIElQdjROb2RlLlVzZURlZmF1bHRBZGRyZXNzID0g VFJVRTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEh0dHBDb25maWdEYXRhLkh0dHBW ZXJzaW9uID0gSHR0cFZlcnNpb24xMTsNCj4gPiA+ID4gPiA+ICsgIEh0dHBDb25maWdEYXRhLkFj Y2Vzc1BvaW50LklQdjROb2RlID0gJklQdjROb2RlOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gKyAgLy8NCj4gPiA+ID4gPiA+ICsgIC8vIEdldCB0aGUgaG9zdCBhZGRyZXNzIChub3QgbmVj ZXNzYXJpbHkgSVB2NCBmb3JtYXQpDQo+ID4gPiA+ID4gPiArICAvLw0KPiA+ID4gPiA+ID4gKyAg VmFsdWVTdHIgPSBTaGVsbENvbW1hbmRMaW5lR2V0UmF3VmFsdWUgKENoZWNrUGFja2FnZSwgMSk7 DQo+ID4gPiA+ID4gPiArICBpZiAoIVZhbHVlU3RyKSB7DQo+ID4gPiA+ID4gPiArICAgIFNoZWxs UHJpbnRIaWlFeCAoDQo+ID4gPiA+ID4gPiArICAgICAgLTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9L RU4gKFNUUl9HRU5fUEFSQU1fSU5WKSwNCj4gPiA+ID4gPiBtSHR0cEhpaUhhbmRsZSwNCj4gPiA+ ID4gPiA+ICsgICAgICBIVFRQX0FQUF9OQU1FLCBWYWx1ZVN0cg0KPiA+ID4gPiA+ID4gKyAgICAg ICk7DQo+ID4gPiA+ID4gPiArICAgIGdvdG8gRXJyb3I7DQo+ID4gPiA+ID4gPiArICB9IGVsc2Ug ew0KPiA+ID4gPiA+ID4gKyAgICBVSU5UTiBTdGFydFNpemU7DQo+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiArICAgIFN0YXJ0U2l6ZSA9IDA7DQo+ID4gPiA+ID4gPiArICAgIGlmICghU3RyU3Ry IChWYWx1ZVN0ciwgTCI6Ly8iKSkgew0KPiA+ID4gPiA+ID4gKyAgICAgIENvbnRleHQuU2VydmVy QWRkckFuZFByb3RvID0gU3RybkNhdEdyb3cgKA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmQ29udGV4dC5TZXJ2ZXJBZGRyQW5kUHJvdG8sDQo+ID4g PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTdGFydFNpemUs DQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFRkFV TFRfSFRUUF9QUk9UTywNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU3RyTGVuIChERUZBVUxUX0hUVFBfUFJPVE8pDQo+ID4gPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gPiA+ID4gPiArICAgICAgQ29u dGV4dC5TZXJ2ZXJBZGRyQW5kUHJvdG8gPSBTdHJuQ2F0R3JvdyAoDQo+ID4gPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb250ZXh0LlNlcnZlckFkZHJBbmRQ cm90bywNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JlN0YXJ0U2l6ZSwNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTCI6Ly8iLA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTdHJMZW4gKEwiOi8vIikNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gKyAgICBDb250ZXh0LlNlcnZlckFkZHJBbmRQcm90byA9IFN0cm5DYXRHcm93 ICgNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb250 ZXh0LlNlcnZlckFkZHJBbmRQcm90bywNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZTdGFydFNpemUsDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBWYWx1ZVN0ciwNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFN0ckxlbiAoVmFsdWVTdHIpDQo+ID4gPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiA+ID4gPiA+ID4gKyAgICBpZiAo IUNvbnRleHQuU2VydmVyQWRkckFuZFByb3RvKSB7DQo+ID4gPiA+ID4gPiArICAgICAgU3RhdHVz ID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4gPiA+ID4gPiArICAgICAgZ290byBFcnJvcjsN Cj4gPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gKyAgUmVtb3RlRmlsZVBhdGggPSBTaGVsbENvbW1hbmRMaW5lR2V0UmF3VmFsdWUg KENoZWNrUGFja2FnZSwNCj4gPiA+IDIpOw0KPiA+ID4gPiA+ID4gKyAgQVNTRVJUIChSZW1vdGVG aWxlUGF0aCAhPSBOVUxMKTsNCj4gPiA+ID4gPiA+ICsgIGlmIChSZW1vdGVGaWxlUGF0aCkgew0K PiA+ID4gPiA+ID4gKyAgICBUcmltU3BhY2VzICgoQ0hBUjE2ICoqKSZSZW1vdGVGaWxlUGF0aCk7 DQo+ID4gPiA+ID4gPiArICB9IGVsc2Ugew0KPiA+ID4gPiA+ID4gKyAgICBTdGF0dXMgPSBFRklf SU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gPiA+ID4gPiArICAgIGdvdG8gRXJyb3I7DQo+ID4gPiA+ ID4gPiArICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBpZiAoUGFyYW1Db3VudCA9 PSA0KSB7DQo+ID4gPiA+ID4gPiArICAgIG1Mb2NhbEZpbGVQYXRoID0gU2hlbGxDb21tYW5kTGlu ZUdldFJhd1ZhbHVlIChDaGVja1BhY2thZ2UsDQo+ID4gPiAzKTsNCj4gPiA+ID4gPiA+ICsgIH0g ZWxzZSB7DQo+ID4gPiA+ID4gPiArICAgIFdhbGtlciA9IFJlbW90ZUZpbGVQYXRoICsgU3RyTGVu IChSZW1vdGVGaWxlUGF0aCk7DQo+ID4gPiA+ID4gPiArICAgIHdoaWxlICgoLS1XYWxrZXIpID49 IFJlbW90ZUZpbGVQYXRoKSB7DQo+ID4gPiA+ID4gPiArICAgICAgaWYgKCgqV2Fsa2VyID09IEwn XFwnKSB8fA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAoKldhbGtlciA9PSBMJy8nICkgICAgKSB7 DQo+ID4gPiA+ID4gPiArICAgICAgICBicmVhazsNCj4gPiA+ID4gPiA+ICsgICAgICB9DQo+ID4g PiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgbUxvY2FsRmls ZVBhdGggPSBXYWxrZXIgKyAxOw0KPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gKyAgaWYgKCFTdHJMZW4gKG1Mb2NhbEZpbGVQYXRoKSkgew0KPiA+ID4gPiA+ID4g KyAgICBtTG9jYWxGaWxlUGF0aCA9IERFRkFVTFRfSFRNTF9GSUxFOw0KPiA+ID4gPiA+ID4gKyAg fQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgSW5pdGlhbFNpemUgPSAwOw0KPiA+ID4g PiA+ID4gKyAgQ29udGV4dC5VUkkgPSBTdHJuQ2F0R3JvdyAoDQo+ID4gPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgJkNvbnRleHQuVVJJLA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICZJbml0aWFsU2l6ZSwNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICBSZW1vdGVGaWxl UGF0aCwNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICBTdHJMZW4gKFJlbW90ZUZpbGVQ YXRoKQ0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICk7DQo+ID4gPiA+ID4gPiArICBp ZiAoIUNvbnRleHQuVVJJKSB7DQo+ID4gPiA+ID4gPiArICAgIFN0YXR1cyA9IEVGSV9PVVRfT0Zf UkVTT1VSQ0VTOw0KPiA+ID4gPiA+ID4gKyAgICBnb3RvIEVycm9yOw0KPiA+ID4gPiA+ID4gKyAg fQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gPiA+ICsgIC8vIEdl dCB0aGUgbmFtZSBvZiB0aGUgTmV0d29yayBJbnRlcmZhY2UgQ2FyZCB0byBiZSB1c2VkIGlmIGFu eS4NCj4gPiA+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ID4gPiArICBVc2VyTmljTmFtZSA9IFNoZWxs Q29tbWFuZExpbmVHZXRWYWx1ZSAoQ2hlY2tQYWNrYWdlLCBMIi1pIik7DQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiArICBWYWx1ZVN0ciA9IFNoZWxsQ29tbWFuZExpbmVHZXRWYWx1ZSAoQ2hl Y2tQYWNrYWdlLCBMIi1sIik7DQo+ID4gPiA+ID4gPiArICBpZiAoVmFsdWVTdHIgIT0gTlVMTCkg ew0KPiA+ID4gPiA+ID4gKyAgICBpZiAoIVN0cmluZ1RvVWludDE2ICgNCj4gPiA+ID4gPiA+ICsg ICAgICAgICBWYWx1ZVN0ciwNCj4gPiA+ID4gPiA+ICsgICAgICAgICAmSHR0cENvbmZpZ0RhdGEu QWNjZXNzUG9pbnQuSVB2NE5vZGUtPkxvY2FsUG9ydA0KPiA+ID4gPiA+ID4gKyAgICAgICApDQo+ ID4gPiA+ID4gPiArICAgICApIHsNCj4gPiA+ID4gPiA+ICsgICAgICBnb3RvIEVycm9yOw0KPiA+ ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArICAvLyBJcyBwcm94eSBzZXJ2ZXIgdXNlZD8NCj4gPiA+ID4gPiA+ICsgIFByb3h5U2Vy dmVyQWRkciA9IFNoZWxsQ29tbWFuZExpbmVHZXRWYWx1ZSAoQ2hlY2tQYWNrYWdlLCBMIi0NCj4g PiA+IHAiKTsNCj4gPiA+ID4gPiA+ICsgIGlmIChQcm94eVNlcnZlckFkZHIpIHsNCj4gPiA+ID4g PiA+ICsgICAgVUlOVE4gU3RyaW5nU2l6ZTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsg ICAgU3RyaW5nU2l6ZSA9IFN0ckxlbiAoUHJveHlTZXJ2ZXJBZGRyKSArIDE7DQo+ID4gPiA+ID4g PiArICAgICAgQ29udGV4dC5Qcm94eVNlcnZlckFkZHIgPSBBbGxvY2F0ZVBvb2wgKFN0cmluZ1Np emUpOw0KPiA+ID4gPiA+ID4gKyAgICAgIGlmICghQ29udGV4dC5Qcm94eVNlcnZlckFkZHIpIHsN Cj4gPiA+ID4gPiA+ICsgICAgICAgIFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ ID4gPiA+ID4gKyAgICAgICAgZ290byBFcnJvcjsNCj4gPiA+ID4gPiA+ICsgICAgICB9DQo+ID4g PiA+ID4gPiArICAgICAgVW5pY29kZVN0clRvQXNjaWlTdHJTICgNCj4gPiA+ID4gPiA+ICsgICAg ICAgIFByb3h5U2VydmVyQWRkciwNCj4gPiA+ID4gPiA+ICsgICAgICAgIENvbnRleHQuUHJveHlT ZXJ2ZXJBZGRyLA0KPiA+ID4gPiA+ID4gKyAgICAgICAgU3RyaW5nU2l6ZQ0KPiA+ID4gPiA+ID4g KyAgICAgICAgKTsNCj4gPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICsgIENvbnRleHQuQnVmZmVyU2l6ZSA9IERFRkFVTFRfQlVGX1NJWkU7DQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiArICAvLyBCeSBkZWZhdWx0LCB0aGUgYnVmZmVyIHNpemUgaXMgMU0uIFRo aXMgY2FuIGJlIGNoYW5nZWQgd2l0aCAtcw0KPiA+ID4gPiA+IHBhcmFtZXRlci4NCj4gPiA+ID4g PiA+ICsgIFZhbHVlU3RyID0gU2hlbGxDb21tYW5kTGluZUdldFZhbHVlIChDaGVja1BhY2thZ2Us IEwiLXMiKTsNCj4gPiA+ID4gPiA+ICsgICAgaWYgKFZhbHVlU3RyICE9IE5VTEwpIHsNCj4gPiA+ ID4gPiA+ICsgICAgICBDb250ZXh0LkJ1ZmZlclNpemUgPSBTaGVsbFN0clRvVWludG4gKFZhbHVl U3RyKTsNCj4gPiA+ID4gPiA+ICsgICAgICBpZiAoIUNvbnRleHQuQnVmZmVyU2l6ZSB8fCBDb250 ZXh0LkJ1ZmZlclNpemUgPiBNQVhfQlVGX1NJWkUpDQo+ID4gPiA+ID4gPiB7DQo+ID4gPiA+ID4g PiArICAgICAgICBTaGVsbFByaW50SGlpRXggKA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAtMSwg LTEsIE5VTEwsIFNUUklOR19UT0tFTiAoU1RSX0dFTl9QQVJBTV9JTlYpLA0KPiA+ID4gPiA+ID4g KyAgICAgICAgICBtSHR0cEhpaUhhbmRsZSwgSFRUUF9BUFBfTkFNRSwgVmFsdWVTdHINCj4gPiA+ ID4gPiA+ICsgICAgICAgICAgKTsNCj4gPiA+ID4gPiA+ICsgICAgICAgIGdvdG8gRXJyb3I7DQo+ ID4gPiA+ID4gPiArICAgICAgfQ0KPiA+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArICBWYWx1ZVN0ciA9IFNoZWxsQ29tbWFuZExpbmVHZXRWYWx1ZSAoQ2hlY2tQ YWNrYWdlLCBMIi10Iik7DQo+ID4gPiA+ID4gPiArICBpZiAoVmFsdWVTdHIgIT0gTlVMTCkgew0K PiA+ID4gPiA+ID4gKyAgICBIdHRwQ29uZmlnRGF0YS5UaW1lT3V0TWlsbGlzZWMgPSBTaGVsbFN0 clRvVWludG4gKFZhbHVlU3RyKTsNCj4gPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ID4gPiArICAvLyBMb2NhdGUgYWxsIEhUVFAgU2Vydmlj ZSBCaW5kaW5nIHByb3RvY29scw0KPiA+ID4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gPiA+ICsgIFN0 YXR1cyA9IGdCUy0+TG9jYXRlSGFuZGxlQnVmZmVyICgNCj4gPiA+ID4gPiA+ICsgICAgICAgICAg ICAgQnlQcm90b2NvbCwNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgJmdFZmlNYW5hZ2VkTmV0 d29ya1NlcnZpY2VCaW5kaW5nUHJvdG9jb2xHdWlkLA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICBOVUxMLA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAmSGFuZGxlQ291bnQsDQo+ID4gPiA+ ID4gPiArICAgICAgICAgICAgICZIYW5kbGVzDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICk7 DQo+ID4gPiA+ID4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpIHx8IChIYW5kbGVDb3VudCA9 PSAwKSkgew0KPiA+ID4gPiA+ID4gKyAgICBTaGVsbFByaW50SGlpRXggKA0KPiA+ID4gPiA+ID4g KyAgICAgIC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RPS0VOIChTVFJfSFRUUF9FUlJfTk9fTklDKSwN Cj4gPiA+ID4gPiBtSHR0cEhpaUhhbmRsZQ0KPiA+ID4gPiA+ID4gKyAgICAgICk7DQo+ID4gPiA+ ID4gPiArICAgIGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiA+ID4gPiArICAgICAg U3RhdHVzID0gRUZJX05PVF9GT1VORDsNCj4gPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ID4g KyAgICBnb3RvIEVycm9yOw0KPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gKyAgU3RhdHVzID0gRUZJX05PVF9GT1VORDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ICsgIGZvciAoTmljTnVtYmVyID0gMDsNCj4gPiA+ID4gPiA+ICsgICAgICAgKE5pY051bWJl ciA8IEhhbmRsZUNvdW50KSAmJiAoU3RhdHVzICE9IEVGSV9TVUNDRVNTKTsNCj4gPiA+ID4gPiA+ ICsgICAgICAgTmljTnVtYmVyKyspIHsNCj4gPiA+ID4gPiA+ICsgICAgQ29udHJvbGxlckhhbmRs ZSA9IEhhbmRsZXNbTmljTnVtYmVyXTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAg U3RhdHVzID0gR2V0TmljTmFtZSAoQ29udHJvbGxlckhhbmRsZSwgTmljTnVtYmVyLCBOaWNOYW1l KTsNCj4gPiA+ID4gPiA+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gPiA+ ID4gKyAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ID4gPiA+ID4gPiArICAgICAgICAtMSwgLTEs IE5VTEwsIFNUUklOR19UT0tFTiAoU1RSX0hUVFBfRVJSX05JQ19OQU1FKSwNCj4gPiA+ID4gPiA+ ICsgICAgICAgIG1IdHRwSGlpSGFuZGxlLCBOaWNOdW1iZXIsIFN0YXR1cw0KPiA+ID4gPiA+ID4g KyAgICAgICk7DQo+ID4gPiA+ID4gPiArICAgICAgY29udGludWU7DQo+ID4gPiA+ID4gPiArICAg IH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgaWYgKFVzZXJOaWNOYW1lICE9IE5V TEwpIHsNCj4gPiA+ID4gPiA+ICsgICAgICBpZiAoU3RyQ21wIChOaWNOYW1lLCBVc2VyTmljTmFt ZSkgIT0gMCkgew0KPiA+ID4gPiA+ID4gKyAgICAgICAgY29udGludWU7DQo+ID4gPiA+ID4gPiAr ICAgICAgfQ0KPiA+ID4gPiA+ID4gKyAgICAgIE5pY0ZvdW5kID0gVFJVRTsNCj4gPiA+ID4gPiA+ ICsgICAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgICBTdGF0dXMgPSBDcmVhdGVT ZXJ2aWNlQ2hpbGRBbmRPcGVuUHJvdG9jb2wgKA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAg IENvbnRyb2xsZXJIYW5kbGUsDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgJmdFZmlIdHRw U2VydmljZUJpbmRpbmdQcm90b2NvbEd1aWQsDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAg JmdFZmlIdHRwUHJvdG9jb2xHdWlkLA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICZIdHRw Q2hpbGRIYW5kbGUsDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgKFZPSUQqKikmQ29udGV4 dC5IdHRwDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICk7DQo+ID4gPiA+ID4gPiArICAgIGlm IChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ID4gPiA+ICsgICAgICBTaGVsbFByaW50SGlp RXggKA0KPiA+ID4gPiA+ID4gKyAgICAgICAgLTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4NCj4g PiAoU1RSX0hUVFBfRVJSX09QRU5fUFJPVE9DT0wpLA0KPiA+ID4gPiA+ID4gKyAgICAgICAgbUh0 dHBIaWlIYW5kbGUsIE5pY05hbWUsIFN0YXR1cw0KPiA+ID4gPiA+ID4gKyAgICAgICAgKTsNCj4g PiA+ID4gPiA+ICsgICAgICBjb250aW51ZTsNCj4gPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gKyAgICBTdGF0dXMgPSBDb250ZXh0Lkh0dHAtPkNvbmZpZ3VyZSAo Q29udGV4dC5IdHRwLA0KPiA+ID4gPiA+ID4gJkh0dHBDb25maWdEYXRhKTsNCj4gPiA+ID4gPiA+ ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gPiA+ID4gKyAgICAgIFNoZWxs UHJpbnRIaWlFeCAoDQo+ID4gPiA+ID4gPiArICAgICAgICAtMSwgLTEsIE5VTEwsIFNUUklOR19U T0tFTiAoU1RSX0hUVFBfRVJSX0NPTkZJR1VSRSksDQo+ID4gPiA+ID4gPiArICAgICAgICBtSHR0 cEhpaUhhbmRsZSwgTmljTmFtZSwgU3RhdHVzDQo+ID4gPiA+ID4gPiArICAgICAgICApOw0KPiA+ ID4gPiA+ID4gKyAgICAgIGdvdG8gTmV4dEhhbmRsZTsNCj4gPiA+ID4gPiA+ICsgICAgfQ0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgICBTdGF0dXMgPSBEb3dubG9hZEZpbGUgKCZDb250 ZXh0KTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgU2hlbGxQcmludEhpaUV4ICgN Cj4gPiA+ID4gPiA+ICsgICAgICAtMSwgLTEsIE5VTEwsIFNUUklOR19UT0tFTiAoU1RSX0dFTl9D UkxGKSwgbUh0dHBIaWlIYW5kbGUNCj4gPiA+ID4gPiA+ICsgICAgICApOw0KPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gKyAgICBDbG9zZVByb3RvY29sQW5kRGVzdHJveVNlcnZpY2VDaGlsZCAo DQo+ID4gPiA+ID4gPiArICAgICAgQ29udHJvbGxlckhhbmRsZSwNCj4gPiA+ID4gPiA+ICsgICAg ICAmZ0VmaUh0dHBTZXJ2aWNlQmluZGluZ1Byb3RvY29sR3VpZCwNCj4gPiA+ID4gPiA+ICsgICAg ICAmZ0VmaUh0dHBQcm90b2NvbEd1aWQsDQo+ID4gPiA+ID4gPiArICAgICAgSHR0cENoaWxkSGFu ZGxlDQo+ID4gPiA+ID4gPiArICAgICAgKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsg ICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gPiA+ID4gKyAgICAgIFNoZWxsUHJp bnRIaWlFeCAoDQo+ID4gPiA+ID4gPiArICAgICAgICAtMSwgLTEsIE5VTEwsIFNUUklOR19UT0tF TiAoU1RSX0hUVFBfRVJSX0RPV05MT0FEKSwNCj4gPiA+ID4gPiA+ICsgICAgICAgIG1IdHRwSGlp SGFuZGxlLCBSZW1vdGVGaWxlUGF0aCwgTmljTmFtZSwgU3RhdHVzDQo+ID4gPiA+ID4gPiArICAg ICAgICApOw0KPiA+ID4gPiA+ID4gKyAgICAgIC8vIElmIGEgdXNlciBhYm9ydGVkIHRoZSBvcGVy YXRpb24sIGRvIG5vdCB0cnkgYW5vdGhlcg0KPiA+ID4gPiBjb250cm9sbGVyLg0KPiA+ID4gPiA+ ID4gKyAgICAgIGlmIChTdGF0dXMgPT0gRUZJX0FCT1JURUQpIHsNCj4gPiA+ID4gPiA+ICsgICAg ICAgIGdvdG8gRXJyb3I7DQo+ID4gPiA+ID4gPiArICAgICAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gKyAgICAgIGdvdG8gTmV4dEhhbmRsZTsNCj4gPiA+ID4gPiA+ICsgICAgfQ0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsNCj4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtOZXh0SGFuZGxlOg0KPiA+ID4gPiA+ID4gKyAgICBpZiAo U3RhdHVzID09IEVGSV9IVFRQX0VSUk9SKSB7DQo+ID4gPiA+ID4gPiArICAgICAgZ290byBFcnJv cjsNCj4gPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gKyAgaWYgKChVc2VyTmljTmFtZSAhPSBOVUxMKSAmJiAoIU5pY0ZvdW5kKSkg ew0KPiA+ID4gPiA+ID4gKyAgICBTaGVsbFByaW50SGlpRXggKA0KPiA+ID4gPiA+ID4gKyAgICAg IC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RPS0VODQo+ID4gKFNUUl9IVFRQX0VSUl9OSUNfTk9UX0ZP VU5EKSwNCj4gPiA+ID4gPiA+ICsgICAgICBtSHR0cEhpaUhhbmRsZSwgVXNlck5pY05hbWUNCj4g PiA+ID4gPiA+ICsgICAgICApOw0KPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gK0Vycm9yOg0KPiA+ID4gPiA+ID4gKyAgU2hlbGxDb21tYW5kTGluZUZyZWVWYXJM aXN0IChDaGVja1BhY2thZ2UpOw0KPiA+ID4gPiA+ID4gKyAgU0hFTExfRlJFRV9OT05fTlVMTCAo SGFuZGxlcyk7DQo+ID4gPiA+ID4gPiArICBTSEVMTF9GUkVFX05PTl9OVUxMIChDb250ZXh0LlBy b3h5U2VydmVyQWRkcik7DQo+ID4gPiA+ID4gPiArICBTSEVMTF9GUkVFX05PTl9OVUxMIChDb250 ZXh0LlNlcnZlckFkZHJBbmRQcm90byk7DQo+ID4gPiA+ID4gPiArICBTSEVMTF9GUkVFX05PTl9O VUxMIChDb250ZXh0LlVSSSk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICByZXR1cm4g U3RhdHVzICYgfk1BWF9CSVQ7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gKy8qKg0KPiA+ID4gPiA+ID4gKyAgQ2hlY2sgYW5kIGNvbnZlcnQgdGhlIFVJTlQxNiBv cHRpb24gdmFsdWVzIG9mIHRoZSAnaHR0cCcgY29tbWFuZA0KPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gKyAgQHBhcmFtW2luXSAgVmFsdWVTdHIgIFZhbHVlIGFzIGFuIFVuaWNvZGUgZW5jb2Rl ZCBzdHJpbmcNCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIFZhbHVlICAgICBVSU5UMTYgdmFs dWUNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEByZXR1cm4gICAgIFRSVUUgICAgICBU aGUgdmFsdWUgd2FzIHJldHVybmVkLg0KPiA+ID4gPiA+ID4gKyAgQHJldHVybiAgICAgRkFMU0Ug ICAgIEEgcGFyc2luZyBlcnJvciBvY2N1cmVkLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ ID4gK1NUQVRJQw0KPiA+ID4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gPiA+ICtTdHJpbmdUb1Vp bnQxNiAoDQo+ID4gPiA+ID4gPiArICBJTiAgIENPTlNUIENIQVIxNiAgKlZhbHVlU3RyLA0KPiA+ ID4gPiA+ID4gKyAgT1VUICBVSU5UMTYgICAgICAgICpWYWx1ZQ0KPiA+ID4gPiA+ID4gKyAgKQ0K PiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ICsgIFVJTlROICBWYWw7DQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiArICBWYWwgPSBTaGVsbFN0clRvVWludG4gKFZhbHVlU3RyKTsNCj4gPiA+ ID4gPiA+ICsgIGlmIChWYWwgPiBNQVhfVUlOVDE2KSB7DQo+ID4gPiA+ID4gPiArICAgIFNoZWxs UHJpbnRIaWlFeCAoDQo+ID4gPiA+ID4gPiArICAgICAgLTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9L RU4gKFNUUl9HRU5fUEFSQU1fSU5WKSwNCj4gPiA+ID4gPiA+ICsgICAgICBtSHR0cEhpaUhhbmRs ZSwgSFRUUF9BUFBfTkFNRSwgVmFsdWVTdHINCj4gPiA+ID4gPiA+ICsgICAgICApOw0KPiA+ID4g PiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiArICAqVmFsdWUgPSAoVUlOVDE2KVZhbDsNCj4gPiA+ID4gPiA+ICsgIHJl dHVybiBUUlVFOw0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsv KioNCj4gPiA+ID4gPiA+ICsgIEdldCB0aGUgbmFtZSBvZiB0aGUgTklDLg0KPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIENvbnRyb2xsZXJIYW5kbGUgIFRoZSBuZXR3 b3JrIHBoeXNpY2FsIGRldmljZQ0KPiA+ID4gPiA+ID4gaGFuZGxlLg0KPiA+ID4gPiA+ID4gKyAg QHBhcmFtW2luXSAgIE5pY051bWJlciAgICAgICAgIFRoZSBuZXR3b3JrIHBoeXNpY2FsIGRldmlj ZQ0KPiA+ID4gPiA+ID4gbnVtYmVyLg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW291dF0gIE5pY05h bWUgICAgICAgICAgIEFkZHJlc3Mgd2hlcmUgdG8gc3RvcmUgdGhlIE5JQw0KPiA+ID4gPiA+ID4g bmFtZS4NCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUg bWVtb3J5IGFyZWEgaGFzIHRvIGJlIGF0IGxlYXN0DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+IElQ NF9DT05GSUcyX0lOVEVSRkFDRV9JTkZPX05BTUVfTEVOR1RIDQo+ID4gPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGJ5dGUgd2lkZS4NCj4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ICsgIEByZXR1cm4gIEVGSV9TVUNDRVNTICBUaGUgbmFtZSBvZiB0aGUg TklDIHdhcyByZXR1cm5lZC4NCj4gPiA+ID4gPiA+ICsgIEByZXR1cm4gIE90aGVycyAgICAgICBU aGUgY3JlYXRpb24gb2YgdGhlIGNoaWxkIGZvciB0aGUgTWFuYWdlZA0KPiA+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgIE5ldHdvcmsgU2VydmljZSBmYWlsZWQgb3IgdGhlIG9wZW5p bmcgb2YNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICB0aGUgTWFuYWdlZCBO ZXR3b3JrIFByb3RvY29sIGZhaWxlZCBvcg0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgIHRoZSBvcGVyYXRpb25hbCBwYXJhbWV0ZXJzIGZvciB0aGUNCj4gPiA+ID4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICBNYW5hZ2VkIE5ldHdvcmsgUHJvdG9jb2wgY291bGQgbm90 IGJlDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgcmVhZC4NCj4gPiA+ID4g PiA+ICsqKi8NCj4gPiA+ID4gPiA+ICtTVEFUSUMNCj4gPiA+ID4gPiA+ICtFRklfU1RBVFVTDQo+ ID4gPiA+ID4gPiArR2V0TmljTmFtZSAoDQo+ID4gPiA+ID4gPiArICBJTiAgIEVGSV9IQU5ETEUg IENvbnRyb2xsZXJIYW5kbGUsDQo+ID4gPiA+ID4gPiArICBJTiAgIFVJTlROICAgICAgIE5pY051 bWJlciwNCj4gPiA+ID4gPiA+ICsgIE9VVCAgQ0hBUjE2ICAgICAgKk5pY05hbWUNCj4gPiA+ID4g PiA+ICsgICkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICBFRklfU1RBVFVTICAgICAg ICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gPiA+ID4gPiArICBFRklfSEFORExFICAgICAgICAg ICAgICAgICAgICBNbnBIYW5kbGU7DQo+ID4gPiA+ID4gPiArICBFRklfTUFOQUdFRF9ORVRXT1JL X1BST1RPQ09MICAqTW5wOw0KPiA+ID4gPiA+ID4gKyAgRUZJX1NJTVBMRV9ORVRXT1JLX01PREUg ICAgICAgU25wTW9kZTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIFN0YXR1cyA9IENy ZWF0ZVNlcnZpY2VDaGlsZEFuZE9wZW5Qcm90b2NvbCAoDQo+ID4gPiA+ID4gPiArICAgICAgICAg ICAgIENvbnRyb2xsZXJIYW5kbGUsDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICZnRWZpTWFu YWdlZE5ldHdvcmtTZXJ2aWNlQmluZGluZ1Byb3RvY29sR3VpZCwNCj4gPiA+ID4gPiA+ICsgICAg ICAgICAgICAgJmdFZmlNYW5hZ2VkTmV0d29ya1Byb3RvY29sR3VpZCwNCj4gPiA+ID4gPiA+ICsg ICAgICAgICAgICAgJk1ucEhhbmRsZSwNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgKFZPSUQq KikmTW5wDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICk7DQo+ID4gPiA+ID4gPiArICBpZiAo RUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiA+ID4gPiArICAgIGdvdG8gRXJyb3I7DQo+ID4g PiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBTdGF0dXMgPSBNbnAt PkdldE1vZGVEYXRhIChNbnAsIE5VTEwsICZTbnBNb2RlKTsNCj4gPiA+ID4gPiA+ICsgIGlmIChF RklfRVJST1IgKFN0YXR1cykgJiYgKFN0YXR1cyAhPSBFRklfTk9UX1NUQVJURUQpKSB7DQo+ID4g PiA+ID4gPiArICAgIGdvdG8gRXJyb3I7DQo+ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiArICBVbmljb2RlU1ByaW50ICgNCj4gPiA+ID4gPiA+ICsgICAgTmljTmFt ZSwNCj4gPiA+ID4gPiA+ICsgICAgSVA0X0NPTkZJRzJfSU5URVJGQUNFX0lORk9fTkFNRV9MRU5H VEgsDQo+ID4gPiA+ID4gPiArICAgIFNucE1vZGUuSWZUeXBlID09IE5FVF9JRlRZUEVfRVRIRVJO RVQgPw0KPiA+ID4gPiA+ID4gKyAgICBMImV0aCVkIiA6DQo+ID4gPiA+ID4gPiArICAgIEwidW5r JWQiLA0KPiA+ID4gPiA+ID4gKyAgICBOaWNOdW1iZXINCj4gPiA+ID4gPiA+ICsgICAgKTsNCj4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIFN0YXR1cyA9IEVGSV9TVUNDRVNTOw0KPiA+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ID4gK0Vycm9yOg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g KyAgaWYgKE1ucEhhbmRsZSAhPSBOVUxMKSB7DQo+ID4gPiA+ID4gPiArICAgIENsb3NlUHJvdG9j b2xBbmREZXN0cm95U2VydmljZUNoaWxkICgNCj4gPiA+ID4gPiA+ICsgICAgICBDb250cm9sbGVy SGFuZGxlLA0KPiA+ID4gPiA+ID4gKyAgICAgICZnRWZpTWFuYWdlZE5ldHdvcmtTZXJ2aWNlQmlu ZGluZ1Byb3RvY29sR3VpZCwNCj4gPiA+ID4gPiA+ICsgICAgICAmZ0VmaU1hbmFnZWROZXR3b3Jr UHJvdG9jb2xHdWlkLA0KPiA+ID4gPiA+ID4gKyAgICAgIE1ucEhhbmRsZQ0KPiA+ID4gPiA+ID4g KyAgICAgICk7DQo+ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAr ICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ICsvKioNCj4gPiA+ID4gPiA+ICsgIENyZWF0ZSBhIGNoaWxkIGZvciB0aGUgc2VydmljZSBp ZGVudGlmaWVkIGJ5IGl0cyBzZXJ2aWNlIGJpbmRpbmcNCj4gPiA+ID4gcHJvdG9jb2wNCj4gPiA+ ID4gPiBHVUlEDQo+ID4gPiA+ID4gPiArICBhbmQgZ2V0IGZyb20gdGhlIGNoaWxkIHRoZSBpbnRl cmZhY2Ugb2YgdGhlIHByb3RvY29sIGlkZW50aWZpZWQNCj4gPiA+ID4gPiA+IGJ5DQo+ID4gPiA+ IGl0cw0KPiA+ID4gPiA+IEdVSUQuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcGFy YW1baW5dICAgQ29udHJvbGxlckhhbmRsZSAgICAgICAgICAgIENvbnRyb2xsZXIgaGFuZGxlLg0K PiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIFNlcnZpY2VCaW5kaW5nUHJvdG9jb2xHdWlkICBT ZXJ2aWNlIGJpbmRpbmcgcHJvdG9jb2wNCj4gPiA+ID4gR1VJRA0KPiA+ID4gPiA+IG9mDQo+ID4g PiA+ID4gPiB0aGUNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VydmljZSB0byBiZSBjcmVhdGVkLg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFt W2luXSAgIFByb3RvY29sR3VpZCAgICAgICAgICAgICAgICBHVUlEIG9mIHRoZSBwcm90b2NvbCB0 bw0KPiA+ID4gPiA+ID4gYmUNCj4gPiA+ID4gb3Blbi4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtv dXRdICBDaGlsZEhhbmRsZSAgICAgICAgICAgICAgICAgQWRkcmVzcyB3aGVyZSB0aGUNCj4gPiA+ ID4gPiA+IGhhbmRsZXINCj4gPiA+ID4gb2YgdGhlDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgY2hpbGQgaXMNCj4gPiA+ID4g PiA+IHJldHVybmVkLg0KPiA+ID4gPiBOVUxMIGlzDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybmVkIGluIGNhc2Ugb2YNCj4gPiA+ ID4gPiA+IGVycm9yLg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW291dF0gIEludGVyZmFjZSAgICAg ICAgICAgICAgICAgICBBZGRyZXNzIHdoZXJlIGEgcG9pbnRlcg0KPiA+ID4gPiA+ID4gdG8NCj4g PiA+ID4gdGhlDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHByb3RvY29sIGludGVyZmFjZSBpcw0KPiA+ID4gPiByZXR1cm5lZCBpbg0KPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNl IG9mIHN1Y2Nlc3MuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcmV0dXJuICBFRklf U1VDQ0VTUyAgVGhlIGNoaWxkIHdhcyBjcmVhdGVkIGFuZCB0aGUgcHJvdG9jb2wNCj4gPiA+ID4g b3BlbmVkLg0KPiA+ID4gPiA+ID4gKyAgQHJldHVybiAgT3RoZXJzICAgICAgIEVpdGhlciB0aGUg Y3JlYXRpb24gb2YgdGhlIGNoaWxkIG9yIHRoZQ0KPiA+ID4gPiBvcGVuaW5nDQo+ID4gPiA+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHByb3RvY29sIGZhaWxlZC4NCj4gPiA+ ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ICtTVEFUSUMNCj4gPiA+ID4gPiA+ICtFRklfU1RBVFVT DQo+ID4gPiA+ID4gPiArQ3JlYXRlU2VydmljZUNoaWxkQW5kT3BlblByb3RvY29sICgNCj4gPiA+ ID4gPiA+ICsgIElOICAgRUZJX0hBTkRMRSAgQ29udHJvbGxlckhhbmRsZSwNCj4gPiA+ID4gPiA+ ICsgIElOICAgRUZJX0dVSUQgICAgKlNlcnZpY2VCaW5kaW5nUHJvdG9jb2xHdWlkLA0KPiA+ID4g PiA+ID4gKyAgSU4gICBFRklfR1VJRCAgICAqUHJvdG9jb2xHdWlkLA0KPiA+ID4gPiA+ID4gKyAg T1VUICBFRklfSEFORExFICAqQ2hpbGRIYW5kbGUsDQo+ID4gPiA+ID4gPiArICBPVVQgIFZPSUQg ICAgICAgICoqSW50ZXJmYWNlDQo+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gPiArew0KPiA+ ID4gPiA+ID4gKyAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gKyAgKkNoaWxkSGFuZGxlID0gTlVMTDsNCj4gPiA+ID4gPiA+ICsgIFN0YXR1cyA9IE5ldExp YkNyZWF0ZVNlcnZpY2VDaGlsZCAoDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgIENvbnRyb2xs ZXJIYW5kbGUsDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgIGdJbWFnZUhhbmRsZSwNCj4gPiA+ ID4gPiA+ICsgICAgICAgICAgICAgU2VydmljZUJpbmRpbmdQcm90b2NvbEd1aWQsDQo+ID4gPiA+ ID4gPiArICAgICAgICAgICAgIENoaWxkSGFuZGxlDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICk7DQo+ID4gPiA+ID4gPiArICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gPiA+ ID4gKyAgICBTdGF0dXMgPSBnQlMtPk9wZW5Qcm90b2NvbCAoDQo+ID4gPiA+ID4gPiArICAgICAg ICAgICAgICAgKkNoaWxkSGFuZGxlLA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIFByb3Rv Y29sR3VpZCwNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBJbnRlcmZhY2UsDQo+ID4gPiA+ ID4gPiArICAgICAgICAgICAgICAgZ0ltYWdlSGFuZGxlLA0KPiA+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgIENvbnRyb2xsZXJIYW5kbGUsDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgRUZJ X09QRU5fUFJPVE9DT0xfR0VUX1BST1RPQ09MDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAg KTsNCj4gPiA+ID4gPiA+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gPiA+ ID4gKyAgICAgIE5ldExpYkRlc3Ryb3lTZXJ2aWNlQ2hpbGQgKA0KPiA+ID4gPiA+ID4gKyAgICAg ICAgQ29udHJvbGxlckhhbmRsZSwNCj4gPiA+ID4gPiA+ICsgICAgICAgIGdJbWFnZUhhbmRsZSwN Cj4gPiA+ID4gPiA+ICsgICAgICAgIFNlcnZpY2VCaW5kaW5nUHJvdG9jb2xHdWlkLA0KPiA+ID4g PiA+ID4gKyAgICAgICAgKkNoaWxkSGFuZGxlDQo+ID4gPiA+ID4gPiArICAgICAgICApOw0KPiA+ ID4gPiA+ID4gKyAgICAgICpDaGlsZEhhbmRsZSA9IE5VTEw7DQo+ID4gPiA+ID4gPiArICAgIH0N Cj4gPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIHJldHVybiBT dGF0dXM7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qKg0K PiA+ID4gPiA+ID4gKyAgQ2xvc2UgdGhlIHByb3RvY29sIGlkZW50aWZpZWQgYnkgaXRzIEdVSUQg b24gdGhlIGNoaWxkIGhhbmRsZSBvZg0KPiA+ID4gPiB0aGUNCj4gPiA+ID4gPiBzZXJ2aWNlDQo+ ID4gPiA+ID4gPiArICBpZGVudGlmaWVkIGJ5IGl0cyBzZXJ2aWNlIGJpbmRpbmcgcHJvdG9jb2wg R1VJRCwgdGhlbiBkZXN0cm95IHRoZQ0KPiA+ID4gPiBjaGlsZA0KPiA+ID4gPiA+ID4gKyAgaGFu ZGxlLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQ29udHJvbGxl ckhhbmRsZSAgICAgICAgICAgIENvbnRyb2xsZXIgaGFuZGxlLg0KPiA+ID4gPiA+ID4gKyAgQHBh cmFtW2luXSAgU2VydmljZUJpbmRpbmdQcm90b2NvbEd1aWQgIFNlcnZpY2UgYmluZGluZyBwcm90 b2NvbA0KPiA+ID4gPiBHVUlEDQo+ID4gPiA+ID4gb2YNCj4gPiA+ID4gPiA+IHRoZQ0KPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2Ug dG8gYmUgZGVzdHJveWVkLg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgUHJvdG9jb2xHdWlk ICAgICAgICAgICAgICAgIEdVSUQgb2YgdGhlIHByb3RvY29sIHRvDQo+ID4gPiA+ID4gPiBiZQ0K PiA+ID4gPiBjbG9zZWQuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBDaGlsZEhhbmRsZSAg ICAgICAgICAgICAgICAgSGFuZGxlIG9mIHRoZSBjaGlsZCB0byBiZQ0KPiA+ID4gPiBkZXN0cm95 ZWQuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gPiArU1RBVElD DQo+ID4gPiA+ID4gPiArVk9JRA0KPiA+ID4gPiA+ID4gK0Nsb3NlUHJvdG9jb2xBbmREZXN0cm95 U2VydmljZUNoaWxkICgNCj4gPiA+ID4gPiA+ICsgIElOICBFRklfSEFORExFICBDb250cm9sbGVy SGFuZGxlLA0KPiA+ID4gPiA+ID4gKyAgSU4gIEVGSV9HVUlEICAgICpTZXJ2aWNlQmluZGluZ1By b3RvY29sR3VpZCwNCj4gPiA+ID4gPiA+ICsgIElOICBFRklfR1VJRCAgICAqUHJvdG9jb2xHdWlk LA0KPiA+ID4gPiA+ID4gKyAgSU4gIEVGSV9IQU5ETEUgIENoaWxkSGFuZGxlDQo+ID4gPiA+ID4g PiArICApDQo+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gKyAgZ0JTLT5DbG9zZVByb3RvY29s ICgNCj4gPiA+ID4gPiA+ICsgICAgQ2hpbGRIYW5kbGUsDQo+ID4gPiA+ID4gPiArICAgIFByb3Rv Y29sR3VpZCwNCj4gPiA+ID4gPiA+ICsgICAgZ0ltYWdlSGFuZGxlLA0KPiA+ID4gPiA+ID4gKyAg ICBDb250cm9sbGVySGFuZGxlDQo+ID4gPiA+ID4gPiArICAgICk7DQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArICBOZXRMaWJEZXN0cm95U2VydmljZUNoaWxkICgNCj4gPiA+ID4gPiA+ICsg ICAgQ29udHJvbGxlckhhbmRsZSwNCj4gPiA+ID4gPiA+ICsgICAgZ0ltYWdlSGFuZGxlLA0KPiA+ ID4gPiA+ID4gKyAgICBTZXJ2aWNlQmluZGluZ1Byb3RvY29sR3VpZCwNCj4gPiA+ID4gPiA+ICsg ICAgQ2hpbGRIYW5kbGUNCj4gPiA+ID4gPiA+ICsgICAgKTsNCj4gPiA+ID4gPiA+ICt9DQo+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBXYWl0IHVudGlsIG9w ZXJhdGlvbiBjb21wbGV0ZXMuIENvbXBsZXRpb24gaXMgaW5kaWNhdGVkIGJ5DQo+ID4gPiA+ID4g PiArICBzZXR0aW5nIG9mIGFuIGFwcHJvcHJpYXRlIHZhcmlhYmxlLg0KPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIENvbnRleHQgICAgICAgICAgICAgQSBwb2ludGVy IHRvIHRoZSBIVFRQIGRvd25sb2FkDQo+ID4gPiA+IGNvbnRleHQuDQo+ID4gPiA+ID4gPiArICBA cGFyYW1baW5dICAgQ2FsbEJhY2tDb21wbGV0ZSAgICBBIHBvaW50ZXIgdG8gdGhlIGNhbGxiYWNr DQo+ID4gPiA+IGNvbXBsZXRpb24NCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZhcmlhYmxlIHNldCBieSB0aGUgY2FsbGJhY2suDQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiArICBAcmV0dXJuICBFRklfU1VDQ0VTUyAgICAgICAgICAgICBDYWxsYmFj ayBzaWduYWxsZWQgY29tcGxldGlvbi4NCj4gPiA+ID4gPiA+ICsgIEByZXR1cm4gIEVGSV9USU1F T1VUICAgICAgICAgICAgIFRpbWVkIG91dCB3YWl0aW5nIGZvcg0KPiA+ID4gPiA+ID4gY29tcGxl dGlvbi4NCj4gPiA+ID4gPiA+ICsgIEByZXR1cm4gIE90aGVycyAgICAgICAgICAgICAgICAgIEVy cm9yIHdhaXRpbmcgZm9yIGNvbXBsZXRpb24uDQo+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4g PiArU1RBVElDDQo+ID4gPiA+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gPiA+ID4gK1dhaXRGb3JD b21wbGV0aW9uICgNCj4gPiA+ID4gPiA+ICsgIElOIERPV05MT0FEX0NPTlRFWFQgICpDb250ZXh0 LA0KPiA+ID4gPiA+ID4gKyAgSU4gT1VUIEJPT0xFQU4gICAgICAgKkNhbGxCYWNrQ29tcGxldGUN Cj4gPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICBFRklfU1RB VFVTICAgU3RhdHVzOw0KPiA+ID4gPiA+ID4gKyAgRUZJX0VWRU5UICAgIFdhaXRFdnQ7DQo+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsNCj4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ICsgIC8vIFVzZSBhIHRpbWVyIHRvIG1lYXN1cmUgdGltZW91dC4g Q2Fubm90IHVzZSBTdGFsbCBoZXJlIQ0KPiA+ID4gPiA+ID4gKyAgU3RhdHVzID0gZ0JTLT5DcmVh dGVFdmVudCAoDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICBFVlRfVElNRVIsDQo+ID4g PiA+ID4gPiArICAgICAgICAgICAgICAgICBUUExfQ0FMTEJBQ0ssDQo+ID4gPiA+ID4gPiArICAg ICAgICAgICAgICAgICBOVUxMLA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgTlVMTCwN Cj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICZXYWl0RXZ0DQo+ID4gPiA+ID4gPiArICAg ICAgICAgICAgICAgICApOw0KPiA+ID4gPiA+ID4gKyAgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1 cyk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAgaWYgKCFFRklfRVJST1IgKFN0YXR1 cykpIHsNCj4gPiA+ID4gPiA+ICsgICAgIFN0YXR1cyA9IGdCUy0+U2V0VGltZXIoDQo+ID4gPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgV2FpdEV2dCwNCj4gPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICBUaW1lclJlbGF0aXZlLA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgIEVGSV9USU1FUl9QRVJJT0RfU0VDT05EUw0KPiA+IChUSU1FUl9NQVhfVElNRU9VVF9T KQ0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArICAgICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiA+ID4gPiA+ID4g KyAgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIHdoaWxlICghICpDYWxsQmFja0Nv bXBsZXRlICYmDQo+ID4gPiA+ID4gPiArICAgICAgICAgKCFFRklfRVJST1IgKFN0YXR1cykpICYm DQo+ID4gPiA+ID4gPiArICAgICAgICAgRUZJX0VSUk9SIChnQlMtPkNoZWNrRXZlbnQgKFdhaXRF dnQpKQ0KPiA+ID4gPiA+ID4gKyAgICAgICAgKSB7DQo+ID4gPiA+ID4gPiArICAgIFN0YXR1cyA9 IENvbnRleHQtPkh0dHAtPlBvbGwgKENvbnRleHQtPkh0dHApOw0KPiA+ID4gPiA+ID4gKyAgfQ0K PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgZ0JTLT5TZXRUaW1lciAoV2FpdEV2dCwgVGlt ZXJDYW5jZWwsIDApOw0KPiA+ID4gPiA+ID4gKyAgZ0JTLT5DbG9zZUV2ZW50IChXYWl0RXZ0KTsN Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIGlmICgqQ2FsbEJhY2tDb21wbGV0ZSkgew0K PiA+ID4gPiA+ID4gKyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gPiA+ID4gPiArICB9DQo+ ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiA+ID4gPiA+ID4gKyAgICBTdGF0dXMgPSBFRklfVElNRU9VVDsNCj4gPiA+ID4gPiA+ICsgIH0N Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gPiA+ID4g PiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ID4gKyAgR2Vu ZXJhdGUgYW5kIHNlbmQgYSByZXF1ZXN0IHRvIHRoZSBodHRwIHNlcnZlci4NCj4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICBDb250ZXh0ICAgICAgICAgICBIVFRQIGRv d25sb2FkIGNvbnRleHQuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICAgRG93bmxvYWRVcmwg ICAgICAgRnVsbHkgcXVhbGlmaWVkIFVSTCB0byBiZQ0KPiA+ID4gPiBkb3dubG9hZGVkLg0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHJldHVybiBFRklfU1VDQ0VTUyAgICAgICAgICAg IFJlcXVlc3QgaGFzIGJlZW4gc2VudA0KPiA+ID4gPiA+ID4gc3VjY2Vzc2Z1bGx5Lg0KPiA+ID4g PiA+ID4gKyAgQHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVIgIEludmFsaWQgVVJMLg0KPiA+ ID4gPiA+ID4gKyAgQHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUyAgIE91dCBvZiBtZW1vcnku DQo+ID4gPiA+ID4gPiArICBAcmV0dXJuIEVGSV9ERVZJQ0VfRVJST1IgICAgICAgSWYgSFRUUFMg aXMgdXNlZCwgdGhpcyBwcm9iYWJseQ0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG1lYW5zIHRoYXQgVExTIHN1cHBvcnQgZWl0aGVyIHdhcw0KPiA+ID4gPiBu b3QNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxs ZWQgb3Igbm90IGNvbmZpZ3VyZWQuDQo+ID4gPiA+ID4gPiArICBAcmV0dXJuIE90aGVycyAgICAg ICAgICAgICAgICAgRXJyb3Igc2VuZGluZyB0aGUgcmVxdWVzdC4NCj4gPiA+ID4gPiA+ICsqKi8N Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtTVEFUSUMNCj4gPiA+ID4gPiA+ICtFRklfU1RB VFVTDQo+ID4gPiA+ID4gPiArU2VuZFJlcXVlc3QgKA0KPiA+ID4gPiA+ID4gKyAgSU4gRE9XTkxP QURfQ09OVEVYVCAgKkNvbnRleHQsDQo+ID4gPiA+ID4gPiArICBJTiBDSEFSMTYgICAgICAgICAg ICAqRG93bmxvYWRVcmwNCj4gPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ ID4gPiArICAgIEVGSV9IVFRQX1JFUVVFU1RfREFUQSAgICAgICBSZXF1ZXN0RGF0YTsNCj4gPiA+ ID4gPiA+ICsgICAgRUZJX0hUVFBfSEVBREVSICAgICAgICAgICAgIFJlcXVlc3RIZWFkZXI7DQo+ ID4gPiA+ID4gPiArICAgIEVGSV9IVFRQX01FU1NBR0UgICAgICAgICAgICBSZXF1ZXN0TWVzc2Fn ZTsNCj4gPiA+ID4gPiA+ICsgICAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgIFN0YXR1czsN Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgWmVyb01lbSAoJlJlcXVlc3REYXRhLCBz aXplb2YgKFJlcXVlc3REYXRhKSk7DQo+ID4gPiA+ID4gPiArICAgIFplcm9NZW0gKCZSZXF1ZXN0 SGVhZGVyLCBzaXplb2YgKFJlcXVlc3RIZWFkZXIpKTsNCj4gPiA+ID4gPiA+ICsgICAgWmVyb01l bSAoJlJlcXVlc3RNZXNzYWdlLCBzaXplb2YgKFJlcXVlc3RNZXNzYWdlKSk7DQo+ID4gPiA+ID4g PiArICAgIFplcm9NZW0gKCZDb250ZXh0LT5SZXF1ZXN0VG9rZW4sIHNpemVvZiAoQ29udGV4dC0N Cj4gPiA+ID4gPiA+UmVxdWVzdFRva2VuKSk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAr ICAgIFJlcXVlc3RIZWFkZXIuRmllbGROYW1lID0gIkhvc3QiOw0KPiA+ID4gPiA+ID4gKyAgICBp ZiAoQ29udGV4dC0+UHJveHlTZXJ2ZXJBZGRyKSB7DQo+ID4gPiA+ID4gPiArICAgICAgUmVxdWVz dEhlYWRlci5GaWVsZFZhbHVlID0gQ29udGV4dC0+UHJveHlTZXJ2ZXJBZGRyOw0KPiA+ID4gPiA+ ID4gKyAgICB9IGVsc2Ugew0KPiA+ID4gPiA+ID4gKyAgICAgICAgQ0hBUjE2ICAqSG9zdDsNCj4g PiA+ID4gPiA+ICsgICAgICAgIFVJTlROICAgU3RyaW5nU2l6ZTsNCj4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ICsgICAgICAgIEhvc3QgPSAoQ0hBUjE2ICopQ29udGV4dC0+U2VydmVyQWRkckFu ZFByb3RvOw0KPiA+ID4gPiA+ID4gKyAgICAgICAgd2hpbGUgKCpIb3N0ICE9IENIQVJfTlVMTCAm JiAqSG9zdCAhPSBMJy8nKSB7DQo+ID4gPiA+ID4gPiArICAgICAgICAgIEhvc3QrKzsNCj4gPiA+ ID4gPiA+ICsgICAgICAgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgICAgIGlm ICgqSG9zdCA9PSBDSEFSX05VTEwpIHsNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgcmV0dXJuIEVG SV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiA+ID4gPiA+ICsgICAgICAgIH0NCj4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ICsgICAgICAgIC8vDQo+ID4gPiA+ID4gPiArICAgICAgICAvLyBHZXQg dGhlIG5leHQgc2xhc2gNCj4gPiA+ID4gPiA+ICsgICAgICAgIC8vDQo+ID4gPiA+ID4gPiArICAg ICAgICBIb3N0Kys7DQo+ID4gPiA+ID4gPiArICAgICAgICAvLw0KPiA+ID4gPiA+ID4gKyAgICAg ICAgLy8gQW5kIG5vdyB0aGUgaG9zdCBuYW1lDQo+ID4gPiA+ID4gPiArICAgICAgICAvLw0KPiA+ ID4gPiA+ID4gKyAgICAgICAgSG9zdCsrOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAg ICAgICAgU3RyaW5nU2l6ZSA9IFN0ckxlbiAoSG9zdCkgKyAxOw0KPiA+ID4gPiA+ID4gKyAgICAg ICAgUmVxdWVzdEhlYWRlci5GaWVsZFZhbHVlID0gQWxsb2NhdGVQb29sIChTdHJpbmdTaXplKTsN Cj4gPiA+ID4gPiA+ICsgICAgICAgIGlmICghUmVxdWVzdEhlYWRlci5GaWVsZFZhbHVlKSB7DQo+ ID4gPiA+ID4gPiArICAgICAgICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiA+ ID4gPiA+ICsgICAgICAgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgICAgIFVu aWNvZGVTdHJUb0FzY2lpU3RyUyAoSG9zdCwgUmVxdWVzdEhlYWRlci5GaWVsZFZhbHVlLA0KPiA+ ID4gPiBTdHJpbmdTaXplKTsNCj4gPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gKyAgICBSZXF1ZXN0TWVzc2FnZS5IZWFkZXJDb3VudCsrOw0KPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gKyAgICBSZXF1ZXN0RGF0YS5NZXRob2QgPSBIdHRwTWV0aG9kR2V0Ow0K PiA+ID4gPiA+ID4gKyAgICBSZXF1ZXN0RGF0YS5VcmwgPSBEb3dubG9hZFVybDsNCj4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgUmVxdWVzdE1lc3NhZ2UuRGF0YS5SZXF1ZXN0ID0gJlJl cXVlc3REYXRhOw0KPiA+ID4gPiA+ID4gKyAgICBSZXF1ZXN0TWVzc2FnZS5IZWFkZXJzID0gJlJl cXVlc3RIZWFkZXI7DQo+ID4gPiA+ID4gPiArICAgIFJlcXVlc3RNZXNzYWdlLkJvZHlMZW5ndGgg PSAwOw0KPiA+ID4gPiA+ID4gKyAgICBSZXF1ZXN0TWVzc2FnZS5Cb2R5ID0gTlVMTDsNCj4gPiA+ ID4gPiA+ICsgICAgQ29udGV4dC0+UmVxdWVzdFRva2VuLkV2ZW50ID0gTlVMTDsNCj4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgLy8NCj4gPiA+ID4gPiA+ICsgICAgLy8gQ29tcGxldGlv biBjYWxsYmFjayBldmVudCB0byBiZSBzZXQgd2hlbiBSZXF1ZXN0IGNvbXBsZXRlcy4NCj4gPiA+ ID4gPiA+ICsgICAgLy8NCj4gPiA+ID4gPiA+ICsgICAgU3RhdHVzID0gZ0JTLT5DcmVhdGVFdmVu dCAoDQo+ID4gPiA+ID4gPiArICAgICAgRVZUX05PVElGWV9TSUdOQUwsDQo+ID4gPiA+ID4gPiAr ICAgICAgVFBMX0NBTExCQUNLLA0KPiA+ID4gPiA+ID4gKyAgICAgIFJlcXVlc3RDYWxsYmFjaywN Cj4gPiA+ID4gPiA+ICsgICAgICBDb250ZXh0LA0KPiA+ID4gPiA+ID4gKyAgICAgICZDb250ZXh0 LT5SZXF1ZXN0VG9rZW4uRXZlbnQNCj4gPiA+ID4gPiA+ICsgICAgICApOw0KPiA+ID4gPiA+ID4g KyAgICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gKyAgICBDb250ZXh0LT5SZXF1ZXN0VG9rZW4uU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+ID4g PiA+ID4gPiArICAgIENvbnRleHQtPlJlcXVlc3RUb2tlbi5NZXNzYWdlID0gJlJlcXVlc3RNZXNz YWdlOw0KPiA+ID4gPiA+ID4gKyAgICBnUmVxdWVzdENhbGxiYWNrQ29tcGxldGUgPSBGQUxTRTsN Cj4gPiA+ID4gPiA+ICsgICAgU3RhdHVzID0gQ29udGV4dC0+SHR0cC0+UmVxdWVzdCAoQ29udGV4 dC0+SHR0cCwgJkNvbnRleHQtDQo+ID4gPiA+ID4gPlJlcXVlc3RUb2tlbik7DQo+ID4gPiA+ID4g PiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ID4gPiA+ICsgICAgICBnb3Rv IEVycm9yOw0KPiA+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAr ICAgIFN0YXR1cyA9IFdhaXRGb3JDb21wbGV0aW9uIChDb250ZXh0LA0KPiA+ID4gJmdSZXF1ZXN0 Q2FsbGJhY2tDb21wbGV0ZSk7DQo+ID4gPiA+ID4gPiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1 cykpIHsNCj4gPiA+ID4gPiA+ICsgICAgICBDb250ZXh0LT5IdHRwLT5DYW5jZWwgKENvbnRleHQt Pkh0dHAsICZDb250ZXh0LQ0KPiA+ID4gPlJlcXVlc3RUb2tlbik7DQo+ID4gPiA+ID4gPiArICAg IH0NCj4gPiA+ID4gPiA+ICtFcnJvcjoNCj4gPiA+ID4gPiA+ICsgICAgU0hFTExfRlJFRV9OT05f TlVMTCAoUmVxdWVzdEhlYWRlci5GaWVsZFZhbHVlKTsNCj4gPiA+ID4gPiA+ICsgICAgaWYgKENv bnRleHQtPlJlcXVlc3RUb2tlbi5FdmVudCkgew0KPiA+ID4gPiA+ID4gKyAgICAgIGdCUy0+Q2xv c2VFdmVudCAoQ29udGV4dC0+UmVxdWVzdFRva2VuLkV2ZW50KTsNCj4gPiA+ID4gPiA+ICsgICAg ICBaZXJvTWVtICgmQ29udGV4dC0+UmVxdWVzdFRva2VuLCBzaXplb2YgKENvbnRleHQtDQo+ID4g PiA+ID4gPlJlcXVlc3RUb2tlbikpOw0KPiA+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ID4gKyAgVXBkYXRlIHRoZSBwcm9n cmVzcyBvZiBhIGZpbGUgZG93bmxvYWQNCj4gPiA+ID4gPiA+ICsgIFRoaXMgcHJvY2VkdXJlIGlz IGNhbGxlZCBlYWNoIHRpbWUgYSBuZXcgSFRUUCBib2R5IHBvcnRpb24gaXMNCj4gPiA+ID4gcmVj ZWl2ZWQuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBDb250ZXh0 ICAgICAgSFRUUCBkb3dubG9hZCBjb250ZXh0Lg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAg RG93bmxvYWRMZW4gIFBvcnRpb24gc2l6ZSwgaW4gYnl0ZXMuDQo+ID4gPiA+ID4gPiArICBAcGFy YW1baW5dICBCdWZmZXIgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIHBhcnNlZCBidWZmZXIuDQo+ ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsICBFRklfU1VDQ0VTUyAgICAgUG9y dGlvbiBzYXZlZC4NCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgIE90aGVyICAgICAgICAgICBFcnJv ciBzYXZpbmcgdGhlIHBvcnRpb24uDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArKiovDQo+ ID4gPiA+ID4gPiArU1RBVElDDQo+ID4gPiA+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gPiA+ID4g K0VGSUFQSQ0KPiA+ID4gPiA+ID4gK1NhdmVQb3J0aW9uICgNCj4gPiA+ID4gPiA+ICsgIElOIERP V05MT0FEX0NPTlRFWFQgICAgICpDb250ZXh0LA0KPiA+ID4gPiA+ID4gKyAgSU4gVUlOVE4gICAg ICAgICAgICAgICAgRG93bmxvYWRMZW4sDQo+ID4gPiA+ID4gPiArICBJTiBDSEFSOCAgICAgICAg ICAgICAgICAqQnVmZmVyDQo+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gPiArew0KPiA+ID4g PiA+ID4gKyAgQ0hBUjE2ICAgICAgICAgICAgUHJvZ3Jlc3NbSFRUUF9QUk9HUkVTU19NRVNTQUdF X1NJWkVdOw0KPiA+ID4gPiA+ID4gKyAgVUlOVE4gICAgICAgICAgICAgTmJPZktiOw0KPiA+ID4g PiA+ID4gKyAgVUlOVE4gICAgICAgICAgICAgSW5kZXg7DQo+ID4gPiA+ID4gPiArICBVSU5UTiAg ICAgICAgICAgICBMYXN0U3RlcDsNCj4gPiA+ID4gPiA+ICsgIFVJTlROICAgICAgICAgICAgIFN0 ZXA7DQo+ID4gPiA+ID4gPiArICBFRklfU1RBVFVTICAgICAgICBTdGF0dXM7DQo+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiArICBMYXN0U3RlcCA9IDA7DQo+ID4gPiA+ID4gPiArICBTdGVwID0g MDsNCj4gPiA+ID4gPiA+ICsgIFNoZWxsU2V0RmlsZVBvc2l0aW9uIChtRmlsZUhhbmRsZSwgQ29u dGV4dC0NCj4gPiA+ID5MYXN0UmVwb3J0ZWROYk9mQnl0ZXMpOw0KPiA+ID4gPiA+ID4gKyAgU3Rh dHVzID0gU2hlbGxXcml0ZUZpbGUgKG1GaWxlSGFuZGxlLCAmRG93bmxvYWRMZW4sIEJ1ZmZlcik7 DQo+ID4gPiA+ID4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiA+ID4gPiAr ICAgIGlmIChDb250ZXh0LT5Db250ZW50RG93bmxvYWRlZCA+IDApIHsNCj4gPiA+ID4gPiA+ICsg ICAgICBTaGVsbFByaW50SGlpRXggKA0KPiA+ID4gPiA+ID4gKyAgICAgICAgLTEsIC0xLCBOVUxM LCBTVFJJTkdfVE9LRU4gKFNUUl9HRU5fQ1JMRiksIG1IdHRwSGlpSGFuZGxlDQo+ID4gPiA+ID4g PiArICAgICAgICApOw0KPiA+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ID4gPiA+ID4gPiArICAgICAgLTEsIC0xLCBO VUxMLCBTVFJJTkdfVE9LRU4gKFNUUl9IVFRQX0VSUl9XUklURSksDQo+ID4gPiA+ID4gPiArICAg ICAgbUh0dHBIaWlIYW5kbGUsIG1Mb2NhbEZpbGVQYXRoLCBTdGF0dXMNCj4gPiA+ID4gPiA+ICsg ICAgICApOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0K PiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgaWYgKENvbnRl eHQtPkNvbnRlbnREb3dubG9hZGVkID09IDApIHsNCj4gPiA+ID4gPiA+ICsgICAgU2hlbGxQcmlu dEV4ICgtMSwgLTEsIEwiJXMgICAgICAgMCBLYiIsIEhUVFBfUFJPR1JfRlJBTUUpOw0KPiA+ID4g PiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQ29udGV4dC0+Q29udGVu dERvd25sb2FkZWQgKz0gRG93bmxvYWRMZW47DQo+ID4gPiA+ID4gPiArICBOYk9mS2IgPSBDb250 ZXh0LT5Db250ZW50RG93bmxvYWRlZCA+PiAxMDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICsgIFByb2dyZXNzWzBdID0gTCdcMCc7DQo+ID4gPiA+ID4gPiArICBpZiAoQ29udGV4dC0+Q29u dGVudExlbmd0aCkgew0KPiA+ID4gPiA+ID4gKyAgICBMYXN0U3RlcCAgPSAoQ29udGV4dC0+TGFz dFJlcG9ydGVkTmJPZkJ5dGVzICoNCj4gPiA+ID4gPiA+IEhUVFBfUFJPR1JFU1NfU0xJREVSX1NU RVBTKSAvDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICBDb250ZXh0LT5Db250ZW50TGVu Z3RoOw0KPiA+ID4gPiA+ID4gKyAgICBTdGVwICAgICAgPSAoQ29udGV4dC0+Q29udGVudERvd25s b2FkZWQgKg0KPiA+ID4gPiA+IEhUVFBfUFJPR1JFU1NfU0xJREVSX1NURVBTKQ0KPiA+ID4gPiA+ ID4gLw0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgQ29udGV4dC0+Q29udGVudExlbmd0 aDsNCj4gPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIENvbnRl eHQtPkxhc3RSZXBvcnRlZE5iT2ZCeXRlcyA9IENvbnRleHQtDQo+ID4gPkNvbnRlbnREb3dubG9h ZGVkOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgaWYgKFN0ZXAgPD0gTGFzdFN0ZXAp IHsNCj4gPiA+ID4gPiA+ICsgICAgaWYgKCFDb250ZXh0LT5Db250ZW50TGVuZ3RoKSB7DQo+ID4g PiA+ID4gPiArICAgICAgLy8NCj4gPiA+ID4gPiA+ICsgICAgICAvLyBVcGRhdGUgZG93bmxvYWRl ZCBzaXplLCB0aGVyZSBpcyBubyBsZW5ndGggaW5mbyBhdmFpbGFibGUuDQo+ID4gPiA+ID4gPiAr ICAgICAgLy8NCj4gPiA+ID4gPiA+ICsgICAgICBTaGVsbFByaW50RXggKC0xLCAtMSwgTCIlcyIs IEhUVFBfS0IpOw0KPiA+ID4gPiA+ID4gKyAgICAgIFNoZWxsUHJpbnRFeCAoLTEsIC0xLCBMIiU3 ZCBLYiIsIE5iT2ZLYik7DQo+ID4gPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiA+ICsgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgU2hlbGxQcmludEV4ICgtMSwgLTEsIEwiJXMiLCBIVFRQ X1BST0dSRVNTX0RFTCk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBTdGF0dXMgPSBT dHJDcHlTIChQcm9ncmVzcywgSFRUUF9QUk9HUkVTU19NRVNTQUdFX1NJWkUsDQo+ID4gPiA+ID4g PiBIVFRQX1BST0dSX0ZSQU1FKTsNCj4gPiA+ID4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1 cykpIHsNCj4gPiA+ID4gPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ID4gPiA+ICsgIH0N Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIGZvciAoSW5kZXggPSAxOyBJbmRleCA8IFN0 ZXA7IEluZGV4KyspIHsNCj4gPiA+ID4gPiA+ICsgICAgUHJvZ3Jlc3NbSW5kZXhdID0gTCc9JzsN Cj4gPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIGlmIChTdGVw KSB7DQo+ID4gPiA+ID4gPiArICAgIFByb2dyZXNzW1N0ZXBdID0gTCc+JzsNCj4gPiA+ID4gPiA+ ICsgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIFVuaWNvZGVTUHJpbnQgKA0KPiA+ ID4gPiA+ID4gKyAgICBQcm9ncmVzcyArIChzaXplb2YgKEhUVFBfUFJPR1JfRlJBTUUpIC8gc2l6 ZW9mIChDSEFSMTYpKSAtIDEsDQo+ID4gPiA+ID4gPiArICAgIHNpemVvZiAoUHJvZ3Jlc3MpIC0g c2l6ZW9mIChIVFRQX1BST0dSX0ZSQU1FKSwNCj4gPiA+ID4gPiA+ICsgICAgTCIgJTdkIEtiIiwN Cj4gPiA+ID4gPiA+ICsgICAgTmJPZktiDQo+ID4gPiA+ID4gPiArICAgICk7DQo+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBTaGVsbFByaW50RXggKC0xLCAtMSwg TCIlcyIsIFByb2dyZXNzKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIHJldHVybiBF RklfU1VDQ0VTUzsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAr LyoqDQo+ID4gPiA+ID4gPiArICBSZXBsYWNlIHRoZSBvcmlnaW5hbCBIb3N0IGFuZCBVUkkgd2l0 aCBIb3N0IGFuZCBVUkkgcmV0dXJuZWQgYnkNCj4gPiA+ID4gPiA+IHRoZQ0KPiA+ID4gPiA+ID4g KyAgSFRUUCBzZXJ2ZXIgaW4gJ0xvY2F0aW9uJyBoZWFkZXIgKHJlZGlyZWN0aW9uKS4NCj4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICBMb2NhdGlvbiAgICAgICAgICAg QSBwb2ludGVyIHRvIHRoZSAnTG9jYXRpb24nDQo+ID4gPiA+ID4gPiBzdHJpbmcNCj4gPiA+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQgYnkgSFRUUCBz ZXJ2ZXIuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICAgQ29udGV4dCAgICAgICAgICAgIEEg cG9pbnRlciB0byBIVFRQIGRvd25sb2FkDQo+ID4gPiA+ID4gPiBjb250ZXh0Lg0KPiA+ID4gPiA+ ID4gKyAgQHBhcmFtW2luXSAgIERvd25sb2FkVXJsICAgICAgICBGdWxseSBxdWFsaWZpZWQgSFRU UCBVUkwuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcmV0dXJuICBFRklfU1VDQ0VT UyAgICAgICAgICAgIEhvc3QgYW5kIFVSSSB3ZXJlIHN1Y2Nlc3NmdWxseQ0KPiA+ID4gPiA+ID4g c2V0Lg0KPiA+ID4gPiA+ID4gKyAgQHJldHVybiAgRUZJX09VVF9PRl9SRVNPVVJDRVMgICBFcnJv ciBzZXR0aW5nIEhvc3Qgb3IgVVJJLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gK1NUQVRJQw0KPiA+ID4gPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ID4gPiA+ ICtTZXRIb3N0VVJJICgNCj4gPiA+ID4gPiA+ICsgIElOIENIQVI4ICAgICAgICAgICAgKkxvY2F0 aW9uLA0KPiA+ID4gPiA+ID4gKyAgSU4gRE9XTkxPQURfQ09OVEVYVCAqQ29udGV4dCwNCj4gPiA+ ID4gPiA+ICsgIElOIENIQVIxNiAgICAgICAgICAgKkRvd25sb2FkVXJsDQo+ID4gPiA+ID4gPiAr ICApDQo+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gKyAgRUZJX1NUQVRVUyBTdGF0dXM7DQo+ ID4gPiA+ID4gPiArICBVSU5UTiAgICAgIFN0cmluZ1NpemU7DQo+ID4gPiA+ID4gPiArICBDSEFS OCAgICAgICpUbXA7DQo+ID4gPiA+ID4gPiArICBDSEFSMTYgICAgICpVcmw7DQo+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiArICBUbXAgPSBOVUxMOw0KPiA+ID4gPiA+ID4gKyAgVXJsID0gTlVM TDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIFN0cmluZ1NpemUgPSAoQXNjaWlTdHJT aXplIChMb2NhdGlvbikgKiBzaXplb2YgKENIQVIxNikpOw0KPiA+ID4gPiA+ID4gKyAgVXJsID0g QWxsb2NhdGVaZXJvUG9vbCAoU3RyaW5nU2l6ZSk7DQo+ID4gPiA+ID4gPiArICBpZiAoIVVybCkg ew0KPiA+ID4gPiA+ID4gKyAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4gPiA+ ID4gPiArICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBTdGF0dXMgPSBBc2NpaVN0 clRvVW5pY29kZVN0clMgKA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgKENPTlNUIENI QVI4ICopTG9jYXRpb24sDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICBVcmwsDQo+ID4g PiA+ID4gPiArICAgICAgICAgICAgICAgICBTdHJpbmdTaXplDQo+ID4gPiA+ID4gPiArICAgICAg ICAgICAgICAgICApOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgew0KPiA+ID4gPiA+ID4gKyAgICAgICAgZ290byBFcnJvcjsNCj4gPiA+ID4g PiA+ICsgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ID4gPiAr ICAvLyBJZiBhbiBIVFRQIHNlcnZlciByZWRpcmVjdCB0byB0aGUgc2FtZSBsb2NhdGlvbiBtb3Jl IHRoYW4NCj4gPiA+ID4gPiA+IG9uY2UsDQo+ID4gPiA+ID4gPiArICAvLyB0aGVuIHN0b3AgYXR0 ZW1wdHMgYW5kIHRlbGwgaXQgaXMgbm90IHJlYWNoYWJsZS4NCj4gPiA+ID4gPiA+ICsgIC8vDQo+ ID4gPiA+ID4gPiArICBpZiAoIVN0ckNtcCAoVXJsLCBEb3dubG9hZFVybCkpIHsNCj4gPiA+ID4g PiA+ICsgICAgU3RhdHVzID0gRUZJX05PX01BUFBJTkc7DQo+ID4gPiA+ID4gPiArICAgIGdvdG8g RXJyb3I7DQo+ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBp ZiAoQXNjaWlTdHJTdHIgKExvY2F0aW9uLCAiOi8vIikpIHsNCj4gPiA+ID4gPiA+ICsgICAgQ0hB UjggICAgICAqV2Fsa2VyOw0KPiA+ID4gPiA+ID4gKyAgICBVSU5UTiAgICAgIElkeDsNCj4gPiA+ ID4gPiA+ICsgICAgVUlOVE4gICAgICBTdGVwOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g KyAgICBJZHggPSAwOw0KPiA+ID4gPiA+ID4gKyAgICBXYWxrZXIgPSBMb2NhdGlvbjsNCj4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgZm9yIChTdGVwID0gMDsgU3RlcCA8IDI7IFN0ZXAr Kykgew0KPiA+ID4gPiA+ID4gKyAgICAgIGZvciAoOyAqV2Fsa2VyICE9ICcvJyAmJiAqV2Fsa2Vy ICE9ICdcMCc7IFdhbGtlcisrKSB7DQo+ID4gPiA+ID4gPiArICAgICAgICBJZHgrKzsNCj4gPiA+ ID4gPiA+ICsgICAgICB9DQo+ID4gPiA+ID4gPiArICAgICAgaWYgKCFTdGVwKSB7DQo+ID4gPiA+ ID4gPiArICAgICAgICAvLw0KPiA+ID4gPiA+ID4gKyAgICAgICAgLy8gU2tpcCAiLy8iDQo+ID4g PiA+ID4gPiArICAgICAgICAvLw0KPiA+ID4gPiA+ID4gKyAgICAgICAgSWR4ICs9IDI7DQo+ID4g PiA+ID4gPiArICAgICAgICBXYWxrZXIgKz0gMjsNCj4gPiA+ID4gPiA+ICsgICAgICB9DQo+ID4g PiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgVG1wID0gQWxs b2NhdGVaZXJvUG9vbCAoSWR4ICsgMSk7DQo+ID4gPiA+ID4gPiArICAgIGlmICghVG1wKSB7DQo+ ID4gPiA+ID4gPiArICAgICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4gPiA+ ID4gPiArICAgICAgZ290byBFcnJvcjsNCj4gPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gKyAgICBDb3B5TWVtIChUbXAsIExvY2F0aW9uLCBJZHgpOw0KPiA+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgICAvLw0KPiA+ID4gPiA+ID4gKyAgICAvLyBMb2NhdGlv biBub3cgcG9pbnRzIHRvIFVSSQ0KPiA+ID4gPiA+ID4gKyAgICAvLw0KPiA+ID4gPiA+ID4gKyAg ICBMb2NhdGlvbiArPSBJZHg7DQo+ID4gPiA+ID4gPiArICAgIFN0cmluZ1NpemUgPSAoSWR4ICsg MSkgKiBzaXplb2YgKENIQVIxNik7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAgIFNI RUxMX0ZSRUVfTk9OX05VTEwgKENvbnRleHQtPlNlcnZlckFkZHJBbmRQcm90byk7DQo+ID4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gPiArICAgIENvbnRleHQtPlNlcnZlckFkZHJBbmRQcm90byA9IEFs bG9jYXRlWmVyb1Bvb2wgKFN0cmluZ1NpemUpOw0KPiA+ID4gPiA+ID4gKyAgICBpZiAoIUNvbnRl eHQtPlNlcnZlckFkZHJBbmRQcm90bykgew0KPiA+ID4gPiA+ID4gKyAgICAgIFN0YXR1cyA9IEVG SV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ID4gPiA+ID4gKyAgICAgIGdvdG8gRXJyb3I7DQo+ID4g PiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgU3RhdHVzID0g QXNjaWlTdHJUb1VuaWNvZGVTdHJTICgNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAoQ09O U1QgQ0hBUjggKilUbXAsDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgQ29udGV4dC0+U2Vy dmVyQWRkckFuZFByb3RvLA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIFN0cmluZ1NpemUN Cj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICApOw0KPiA+ID4gPiA+ID4gKyAgICBpZiAoRUZJ X0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiA+ID4gPiArICAgICAgZ290byBFcnJvcjsNCj4gPiA+ ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gKyAgU0hFTExfRlJFRV9OT05fTlVMTCAoQ29udGV4dC0+VVJJKTsNCj4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ICsgIFN0cmluZ1NpemUgPSBBc2NpaVN0clNpemUgKExvY2F0aW9uKSAqIHNp emVvZiAoQ0hBUjE2KTsNCj4gPiA+ID4gPiA+ICsgIENvbnRleHQtPlVSSSA9IEFsbG9jYXRlWmVy b1Bvb2wgKFN0cmluZ1NpemUpOw0KPiA+ID4gPiA+ID4gKyAgaWYgKCFDb250ZXh0LT5VUkkpIHsN Cj4gPiA+ID4gPiA+ICsgICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4gPiA+ ID4gPiArICAgIGdvdG8gRXJyb3I7DQo+ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArICAvLw0KPiA+ID4gPiA+ID4gKyAgLy8gTm93IG1ha2UgY2hhbmdlcyB0byB0 aGUgVVJJIHBhcnQuDQo+ID4gPiA+ID4gPiArICAvLw0KPiA+ID4gPiA+ID4gKyAgU3RhdHVzID0g QXNjaWlTdHJUb1VuaWNvZGVTdHJTICgNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgKENPTlNU IENIQVI4ICopTG9jYXRpb24sDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgIENvbnRleHQtPlVS SSwNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgU3RyaW5nU2l6ZQ0KPiA+ID4gPiA+ID4gKyAg ICAgICAgICAgICApOw0KPiA+ID4gPiA+ID4gK0Vycm9yOg0KPiA+ID4gPiA+ID4gKyAgU0hFTExf RlJFRV9OT05fTlVMTCAoVG1wKTsNCj4gPiA+ID4gPiA+ICsgIFNIRUxMX0ZSRUVfTk9OX05VTEwg KFVybCk7DQo+ID4gPiA+ID4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gPiA+ID4gK30NCj4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ICsgIE1lc3NhZ2UgcGFy c2VyIGNhbGxiYWNrLg0KPiA+ID4gPiA+ID4gKyAgU2F2ZSBhIHBvcnRpb24gb2YgSFRUUCBib2R5 Lg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIEV2ZW50VHlwZSAg ICAgICBUeXBlIG9mIGV2ZW50LiBDYW4gYmUgZWl0aGVyDQo+ID4gPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE9uQ29tcGxldGUgb3IgT25EYXRhLg0KPiA+ID4gPiA+ID4g KyAgQHBhcmFtW2luXSAgIERhdGEgICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciB3 aXRoIGRhdGEuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICAgTGVuZ3RoICAgICAgICAgIERh dGEgbGVuZ3RoIG9mIHRoaXMgcG9ydGlvbi4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICBD b250ZXh0ICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBIVFRQIGRvd25sb2FkDQo+ID4gPiA+IGNv bnRleHQuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcmV0dXJuICAgICAgRUZJX1NV Q0NFU1MgICAgVGhlIHBvcnRpb24gd2FzIHByb2Nlc3NlZA0KPiA+ID4gPiA+ID4gc3VjY2Vzc2Z1 bGx5Lg0KPiA+ID4gPiA+ID4gKyAgQHJldHVybiAgICAgIE90aGVyICAgICAgICAgIEVycm9yIHJl dHVybmVkIGJ5IFNhdmVQb3J0aW9uLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gK1NUQVRJQw0KPiA+ID4gPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ID4gPiA+ ICtFRklBUEkNCj4gPiA+ID4gPiA+ICtQYXJzZU1zZyAoDQo+ID4gPiA+ID4gPiArICBJTiBIVFRQ X0JPRFlfUEFSU0VfRVZFTlQgICAgICBFdmVudFR5cGUsDQo+ID4gPiA+ID4gPiArICBJTiBDSEFS OCAgICAgICAgICAgICAgICAgICAgICAqRGF0YSwNCj4gPiA+ID4gPiA+ICsgIElOIFVJTlROICAg ICAgICAgICAgICAgICAgICAgIExlbmd0aCwNCj4gPiA+ID4gPiA+ICsgIElOIFZPSUQgICAgICAg ICAgICAgICAgICAgICAgICpDb250ZXh0DQo+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gPiAr ew0KPiA+ID4gPiA+ID4gKyAgaWYgKCFEYXRhIHx8DQo+ID4gPiA+ID4gPiArICAgICAgKEV2ZW50 VHlwZSA9PSBCb2R5UGFyc2VFdmVudE9uQ29tcGxldGUpIHx8DQo+ID4gPiA+ID4gPiArICAgICAg KCFDb250ZXh0KQ0KPiA+ID4gPiA+ID4gKyAgICAgKSB7DQo+ID4gPiA+ID4gPiArICAgIHJldHVy biBFRklfU1VDQ0VTUzsNCj4gPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ICsgIHJldHVybiBTYXZlUG9ydGlvbiAoQ29udGV4dCwgTGVuZ3RoLCBEYXRhKTsNCj4gPiA+ ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyoq DQo+ID4gPiA+ID4gPiArICBHZXQgSFRUUCBzZXJ2ZXIgcmVzcG9uc2UgYW5kIGNvbGxlY3QgdGhl IHdob2xlIGJvZHkgYXMgYSBmaWxlLg0KPiA+ID4gPiA+ID4gKyAgU2V0IGFwcHJvcHJpYXRlIHN0 YXR1cyBpbiBDb250ZXh0IChSRVFfT0ssIFJFUV9SRVBFQVQsDQo+ID4gPiBSRVFfRVJST1IpLg0K PiA+ID4gPiA+ID4gKyAgTm90ZSB0aGF0IGV2ZW4gaWYgSFRUUCBzZXJ2ZXIgcmV0dXJucyBhbiBl cnJvciBjb2RlLCBpdCBtaWdodA0KPiA+ID4gPiA+ID4gc2VuZA0KPiA+ID4gPiA+ID4gKyAgdGhl IGJvZHkgYXMgd2VsbC4gVGhpcyBib2R5IHdpbGwgYmUgY29sbGVjdGVkIGluIHRoZSByZXN1bHRh bnQNCj4gPiA+ID4gZmlsZS4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtp bl0gICBDb250ZXh0ICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBIVFRQIGRvd25sb2FkDQo+ID4g PiA+IGNvbnRleHQuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICAgRG93bmxvYWRlZFVybCAg IEEgcG9pbnRlciB0byB0aGUgZnVsbHkgcXVhbGlmaWVkIFVSTA0KPiA+ID4gPiB0bw0KPiA+ID4g PiA+ID4gZG93bmxvYWQuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcmV0dXJuICBF RklfU1VDQ0VTUyAgICAgICAgIFZhbGlkIGZpbGUuIEJvZHkgc3VjY2Vzc2Z1bGx5DQo+ID4gPiA+ IGNvbGxlY3RlZC4NCj4gPiA+ID4gPiA+ICsgIEByZXR1cm4gIEVGSV9IVFRQX0VSUk9SICAgICAg UmVzcG9uc2UgaXMgYSB2YWxpZCBIVFRQIHJlc3BvbnNlLA0KPiA+ID4gPiA+ID4gYnV0DQo+ID4g PiA+IHRoZQ0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVFRQ IHNlcnZlcg0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRp Y2F0ZWQgYW4gZXJyb3IgKEhUVFAgY29kZSA+PQ0KPiA+ID4gPiA+ID4gNDAwKS4NCj4gPiA+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzcG9uc2UgYm9keSBtYXkgY29u dGFpbiBmdWxsDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhU VFAgc2VydmVyIHJlc3BvbnNlLg0KPiA+ID4gPiA+ID4gKyAgQHJldHVybiBPdGhlcnMgICAgICAg ICAgICAgICBFcnJvciBnZXR0aW5nIHRoZSByZXBvbnNlIGZyb20gdGhlDQo+ID4gPiA+IEhUVFAg c2VydmVyLg0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNw b25zZSBib2R5IGlzIG5vdCBjb2xsZWN0ZWQuDQo+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4g PiArU1RBVElDDQo+ID4gPiA+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gPiA+ID4gK0dldFJlc3Bv bnNlICgNCj4gPiA+ID4gPiA+ICsgIElOIERPV05MT0FEX0NPTlRFWFQgKkNvbnRleHQsDQo+ID4g PiA+ID4gPiArICBJTiBDSEFSMTYgICAgICAgICAgICpEb3dubG9hZFVybA0KPiA+ID4gPiA+ID4g KyAgKQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ICsgICAgRUZJX0hUVFBfUkVTUE9OU0Vf REFUQSAgICAgIFJlc3BvbnNlRGF0YTsNCj4gPiA+ID4gPiA+ICsgICAgRUZJX0hUVFBfTUVTU0FH RSAgICAgICAgICAgIFJlc3BvbnNlTWVzc2FnZTsNCj4gPiA+ID4gPiA+ICsgICAgRUZJX1NUQVRV UyAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiA+ID4gPiA+ICsgICAgVk9JRCAgICAgICAg ICAgICAgICAgICAgICAgICpNc2dQYXJzZXI7DQo+ID4gPiA+ID4gPiArICAgIEJPT0xFQU4gICAg ICAgICAgICAgICAgICAgICBJc1RydW5rZWQ7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAr ICAgIFplcm9NZW0gKCZSZXNwb25zZURhdGEsIHNpemVvZiAoUmVzcG9uc2VEYXRhKSk7DQo+ID4g PiA+ID4gPiArICAgIFplcm9NZW0gKCZSZXNwb25zZU1lc3NhZ2UsIHNpemVvZiAoUmVzcG9uc2VN ZXNzYWdlKSk7DQo+ID4gPiA+ID4gPiArICAgIFplcm9NZW0gKCZDb250ZXh0LT5SZXNwb25zZVRv a2VuLCBzaXplb2YgKENvbnRleHQtDQo+ID4gPiA+ID4gPlJlc3BvbnNlVG9rZW4pKTsNCj4gPiA+ ID4gPiA+ICsgICAgSXNUcnVua2VkID0gRkFMU0U7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiArICAgIFJlc3BvbnNlTWVzc2FnZS5Cb2R5ID0gQ29udGV4dC0+QnVmZmVyOw0KPiA+ID4gPiA+ ID4gKyAgICBDb250ZXh0LT5SZXNwb25zZVRva2VuLlN0YXR1cyA9IEVGSV9TVUNDRVNTOw0KPiA+ ID4gPiA+ID4gKyAgICBDb250ZXh0LT5SZXNwb25zZVRva2VuLk1lc3NhZ2UgPSAmUmVzcG9uc2VN ZXNzYWdlOw0KPiA+ID4gPiA+ID4gKyAgICBDb250ZXh0LT5Db250ZW50TGVuZ3RoID0gMDsNCj4g PiA+ID4gPiA+ICsgICAgQ29udGV4dC0+U3RhdHVzID0gUkVRX09LOw0KPiA+ID4gPiA+ID4gKyAg ICBNc2dQYXJzZXIgPSBOVUxMOw0KPiA+ID4gPiA+ID4gKyAgICBSZXNwb25zZURhdGEuU3RhdHVz Q29kZSA9DQo+ID4gPiBIVFRQX1NUQVRVU19VTlNVUFBPUlRFRF9TVEFUVVM7DQo+ID4gPiA+ID4g PiArICAgIFJlc3BvbnNlTWVzc2FnZS5EYXRhLlJlc3BvbnNlID0gJlJlc3BvbnNlRGF0YTsNCj4g PiA+ID4gPiA+ICsgICAgQ29udGV4dC0+UmVzcG9uc2VUb2tlbi5FdmVudCA9IE5VTEw7DQo+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAgIGRvIHsNCj4gPiA+ID4gPiA+ICsgICAgICBTSEVM TF9GUkVFX05PTl9OVUxMIChSZXNwb25zZU1lc3NhZ2UuSGVhZGVycyk7DQo+ID4gPiA+ID4gPiAr ICAgICAgUmVzcG9uc2VNZXNzYWdlLkhlYWRlckNvdW50ID0gMDsNCj4gPiA+ID4gPiA+ICsgICAg ICBnUmVzcG9uc2VDYWxsYmFja0NvbXBsZXRlID0gRkFMU0U7DQo+ID4gPiA+ID4gPiArICAgICAg UmVzcG9uc2VNZXNzYWdlLkJvZHlMZW5ndGggPSBDb250ZXh0LT5CdWZmZXJTaXplOw0KPiA+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgICAgIGlmIChTaGVsbEdldEV4ZWN1dGlvbkJyZWFrRmxh ZyAoKSkgew0KPiA+ID4gPiA+ID4gKyAgICAgICAgU3RhdHVzID0gRUZJX0FCT1JURUQ7DQo+ID4g PiA+ID4gPiArICAgICAgICBicmVhazsNCj4gPiA+ID4gPiA+ICsgICAgICB9DQo+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiArICAgICAgaWYgKCFDb250ZXh0LT5Db250ZW50RG93bmxvYWRlZCAm JiAhQ29udGV4dC0NCj4gPiA+ID4gPiA+UmVzcG9uc2VUb2tlbi5FdmVudCkgew0KPiA+ID4gPiA+ ID4gKyAgICAgICAgU3RhdHVzID0gZ0JTLT5DcmVhdGVFdmVudCAoDQo+ID4gPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgIEVWVF9OT1RJRllfU0lHTkFMLA0KPiA+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICBUUExfQ0FMTEJBQ0ssDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAg IFJlc3BvbnNlQ2FsbGJhY2ssDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgIENvbnRl eHQsDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICZDb250ZXh0LT5SZXNwb25zZVRv a2VuLkV2ZW50DQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICk7DQo+ID4gPiA+ID4g PiArICAgICAgICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiA+ID4gPiA+ID4gKyAgICAg IH0gZWxzZSB7DQo+ID4gPiA+ID4gPiArICAgICAgICBSZXNwb25zZU1lc3NhZ2UuRGF0YS5SZXNw b25zZSA9IE5VTEw7DQo+ID4gPiA+ID4gPiArICAgICAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gKyAgICAgIFN0YXR1cyA9IENvbnRleHQtPkh0dHAtPlJlc3BvbnNlIChDb250ZXh0LT5I dHRwLCAmQ29udGV4dC0NCj4gPiA+ID4gPiA+ID5SZXNwb25zZVRva2VuKTsNCj4gPiA+ID4gPiA+ ICsgICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiA+ID4gPiArICAgICAgICBi cmVhazsNCj4gPiA+ID4gPiA+ICsgICAgICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAr ICAgICAgU3RhdHVzID0gV2FpdEZvckNvbXBsZXRpb24gKENvbnRleHQsDQo+ID4gPiA+ICZnUmVz cG9uc2VDYWxsYmFja0NvbXBsZXRlKTsNCj4gPiA+ID4gPiA+ICsgICAgICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpICYmIFJlc3BvbnNlTWVzc2FnZS5IZWFkZXJDb3VudCkgew0KPiA+ID4gPiA+ID4g KyAgICAgICAgU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+ID4gPiA+ID4gPiArICAgICAgfQ0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsN Cj4gPiA+ID4gPiA+ICsgICAgICAgIENvbnRleHQtPkh0dHAtPkNhbmNlbCAoQ29udGV4dC0+SHR0 cCwNCj4gPiA+ID4gJkNvbnRleHQtPlJlc3BvbnNlVG9rZW4pOw0KPiA+ID4gPiA+ID4gKyAgICAg ICAgYnJlYWs7DQo+ID4gPiA+ID4gPiArICAgICAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gKyAgICAgIGlmICghQ29udGV4dC0+Q29udGVudERvd25sb2FkZWQpIHsNCj4gPiA+ID4gPiA+ ICsgICAgICAgIEVGSV9IVFRQX0hFQURFUiAqSGVhZGVyOw0KPiA+ID4gPiA+ID4gKyAgICAgICAg Qk9PTEVBTiAgICAgICAgIFJlZGlyZWN0aW9uOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g KyAgICAgICAgUmVkaXJlY3Rpb24gPQ0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAoKFJlc3BvbnNl RGF0YS5TdGF0dXNDb2RlID49DQo+ID4gPiA+ID4gSFRUUF9TVEFUVVNfMzAwX01VTFRJUExFX0NI T0lDRVMpDQo+ID4gPiA+ID4gPiAmJg0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgKFJlc3BvbnNl RGF0YS5TdGF0dXNDb2RlIDw9DQo+ID4gPiA+ID4gPiBIVFRQX1NUQVRVU18zMDdfVEVNUE9SQVJZ X1JFRElSRUNUKQ0KPiA+ID4gPiA+ID4gKyAgICAgICAgICApIHx8DQo+ID4gPiA+ID4gPiArICAg ICAgICAgIChSZXNwb25zZURhdGEuU3RhdHVzQ29kZSA9PQ0KPiA+ID4gPiA+ID4gSFRUUF9TVEFU VVNfMzA4X1BFUk1BTkVOVF9SRURJUkVDVCk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAr ICAgICAgICBpZiAoUmVkaXJlY3Rpb24pIHsNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgLy8NCj4g PiA+ID4gPiA+ICsgICAgICAgICAgLy8gTmVlZCB0byByZXBlYXQgdGhlIHJlcXVlc3Qgd2l0aCBu ZXcgTG9jYXRpb24gKHNlcnZlcg0KPiA+ID4gPiByZWRpcmVjdGVkKS4NCj4gPiA+ID4gPiA+ICsg ICAgICAgICAgLy8NCj4gPiA+ID4gPiA+ICsgICAgICAgICAgQ29udGV4dC0+U3RhdHVzID0gUkVR X05FRURfUkVQRUFUOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgICAgICAgICBIZWFk ZXIgPSBIdHRwRmluZEhlYWRlciAoDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAg UmVzcG9uc2VNZXNzYWdlLkhlYWRlckNvdW50LA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgIFJlc3BvbnNlTWVzc2FnZS5IZWFkZXJzLA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICJMb2NhdGlvbiINCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAp Ow0KPiA+ID4gPiA+ID4gKyAgICAgICAgICBpZiAoSGVhZGVyKSB7DQo+ID4gPiA+ID4gPiArICAg ICAgICAgICAgU3RhdHVzID0gU2V0SG9zdFVSSSAoSGVhZGVyLT5GaWVsZFZhbHVlLCBDb250ZXh0 LA0KPiA+ID4gPiBEb3dubG9hZFVybCk7DQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgaWYgKFN0 YXR1cyA9PSBFRklfTk9fTUFQUElORykgew0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgU2hl bGxQcmludEhpaUV4ICgNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgLTEsIC0xLCBOVUxM LCBTVFJJTkdfVE9LRU4NCj4gPiA+ID4gPiA+IChTVFJfSFRUUF9FUlJfU1RBVFVTQ09ERSksDQo+ ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgIG1IdHRwSGlpSGFuZGxlLCBDb250ZXh0LT5TZXJ2 ZXJBZGRyQW5kUHJvdG8sDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgIEwiUmVjdXJzaXZl IEhUVFAgc2VydmVyIHJlbG9jYXRpb24iLA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICBD b250ZXh0LT5VUkkNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgKTsNCj4gPiA+ID4gPiA+ ICsgICAgICAgICAgICB9DQo+ID4gPiA+ID4gPiArICAgICAgICAgIH0gZWxzZSB7DQo+ID4gPiA+ ID4gPiArICAgICAgICAgICAgLy8NCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAvLyBCYWQgcmVw bHkgZnJvbSB0aGUgc2VydmVyLiBTZXJ2ZXIgbXVzdCBzcGVjaWZ5IHRoZQ0KPiA+ID4gPiBsb2Nh dGlvbi4NCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAvLyBJbmRpY2F0ZSB0aGF0IHJlc291cmNl IHdhcyBub3QgZm91bmQsIGFuZCBubyBib2R5DQo+ID4gPiA+IGNvbGxlY3RlZC4NCj4gPiA+ID4g PiA+ICsgICAgICAgICAgICAvLw0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgIFN0YXR1cyA9IEVG SV9OT1RfRk9VTkQ7DQo+ID4gPiA+ID4gPiArICAgICAgICAgIH0NCj4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ICsgICAgICAgICAgQ29udGV4dC0+SHR0cC0+Q2FuY2VsIChDb250ZXh0LT5IdHRw LCAmQ29udGV4dC0NCj4gPiA+ID4gPiA+UmVzcG9uc2VUb2tlbik7DQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArICAgICAgICAgIGJyZWFrOw0KPiA+ID4gPiA+ID4gKyAgICAgICAgfQ0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgICAgICAgLy8NCj4gPiA+ID4gPiA+ICsgICAgICAg IC8vIEluaXQgbWVzc2FnZS1ib2R5IHBhcnNlciBieSBoZWFkZXIgaW5mb3JtYXRpb24uDQo+ID4g PiA+ID4gPiArICAgICAgICAvLw0KPiA+ID4gPiA+ID4gKyAgICAgICAgaWYgKCFNc2dQYXJzZXIp IHsNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgU3RhdHVzID0gSHR0cEluaXRNc2dQYXJzZXIgKA0K PiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIFJlc3BvbnNlTWVzc2FnZS5EYXRhLlJl cXVlc3QtPk1ldGhvZCwNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBSZXNwb25z ZURhdGEuU3RhdHVzQ29kZSwNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBSZXNw b25zZU1lc3NhZ2UuSGVhZGVyQ291bnQsDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgUmVzcG9uc2VNZXNzYWdlLkhlYWRlcnMsDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgUGFyc2VNc2csDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgQ29udGV4 dCwNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAmTXNnUGFyc2VyDQo+ID4gPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgIGJyZWFrOw0K PiA+ID4gPiA+ID4gKyAgICAgICAgICB9DQo+ID4gPiA+ID4gPiArICAgICAgICB9DQo+ID4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gPiArICAgICAgICAvLw0KPiA+ID4gPiA+ID4gKyAgICAgICAgLy8g SWYgaXQgaXMgYSB0cnVua2VkIG1lc3NhZ2UsIHJlbHkgb24gdGhlIHBhcnNlci4NCj4gPiA+ID4g PiA+ICsgICAgICAgIC8vDQo+ID4gPiA+ID4gPiArICAgICAgICBIZWFkZXIgPSBIdHRwRmluZEhl YWRlciAoDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNwb25z ZU1lc3NhZ2UuSGVhZGVyQ291bnQsDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBSZXNwb25zZU1lc3NhZ2UuSGVhZGVycywNCj4gPiA+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJUcmFuc2Zlci1FbmNvZGluZyINCj4gPiA+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gPiA+ID4gPiArICAgICAgICBJc1RydW5r ZWQgPSAoSGVhZGVyICYmDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIUFzY2lp U3RyQ21wIChIZWFkZXItPkZpZWxkVmFsdWUsICJjaHVua2VkIikNCj4gPiA+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAgICAgICBI dHRwR2V0RW50aXR5TGVuZ3RoIChNc2dQYXJzZXIsICZDb250ZXh0LT5Db250ZW50TGVuZ3RoKTsN Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgICAgIGlmIChSZXNwb25zZURhdGEuU3Rh dHVzQ29kZSA+PQ0KPiA+ID4gSFRUUF9TVEFUVVNfNDAwX0JBRF9SRVFVRVNUDQo+ID4gPiA+ID4g JiYNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAoUmVzcG9uc2VEYXRhLlN0YXR1c0NvZGUgIT0N Cj4gPiA+ID4gPiA+IEhUVFBfU1RBVFVTXzMwOF9QRVJNQU5FTlRfUkVESVJFQ1QpDQo+ID4gPiA+ ID4gPiArICAgICAgICAgICApIHsNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAvLw0KPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgIC8vIFNlcnZlciByZXBvcnRlZCBhbiBlcnJvciB2aWEg UmVzcG9uc2UgY29kZS4NCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAvLyBDb2xsZWN0IHRo ZSBib2R5IGlmIGFueS4NCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAvLw0KPiA+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgIGlmIChDb250ZXh0LT5TdGF0dXMgIT0gUkVRX0VSUk9SKSB7DQo+ ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICBDb250ZXh0LT5TdGF0dXMgPSBSRVFfRVJST1I7 DQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICBTaGVsbFByaW50SGlpRXggKA0KPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAtMSwgLTEsIE5VTEwsIFNUUklOR19UT0tFTg0KPiA+ ID4gPiAoU1RSX0hUVFBfRVJSX1NUQVRVU0NPREUpLA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICBtSHR0cEhpaUhhbmRsZSwgQ29udGV4dC0+U2VydmVyQWRkckFuZFByb3RvLA0KPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICBFcnJTdGF0dXNEZXNjW1Jlc3BvbnNlRGF0YS5T dGF0dXNDb2RlIC0NCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBIVFRQX1NUQVRVU180MDBfQkFEX1JFUVVFU1RdLA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICBDb250ZXh0LT5VUkkNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgKTsN Cj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgfQ0KPiA+ID4gPiA+ID4gKyAgICAgICAgfQ0K PiA+ID4gPiA+ID4gKyAgICAgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgICAv LyBEbyBOT1QgdHJ5IHRvIHBhcnNlIGFuIGVtcHR5IGJvZHkuDQo+ID4gPiA+ID4gPiArICAgICAg aWYgKFJlc3BvbnNlTWVzc2FnZS5Cb2R5TGVuZ3RoIHx8IElzVHJ1bmtlZCkgew0KPiA+ID4gPiA+ ID4gKyAgICAgICAgU3RhdHVzID0gSHR0cFBhcnNlTWVzc2FnZUJvZHkgKA0KPiA+ID4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICBNc2dQYXJzZXIsDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgIFJlc3BvbnNlTWVzc2FnZS5Cb2R5TGVuZ3RoLA0KPiA+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICBSZXNwb25zZU1lc3NhZ2UuQm9keQ0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICApOw0KPiA+ID4gPiA+ID4gKyAgICAgIH0NCj4gPiA+ID4gPiA+ICsgICAgfSB3aGls ZSAoIUh0dHBJc01lc3NhZ2VDb21wbGV0ZSAoTXNnUGFyc2VyKSAmJg0KPiA+ID4gPiA+ID4gKyAg ICAgICAgICAgICAhRUZJX0VSUk9SIChTdGF0dXMpICYmDQo+ID4gPiA+ID4gPiArICAgICAgICAg ICAgIFJlc3BvbnNlTWVzc2FnZS5Cb2R5TGVuZ3RoDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAgIFNIRUxMX0ZSRUVfTk9OX05VTEwg KE1zZ1BhcnNlcik7DQo+ID4gPiA+ID4gPiArICAgIGlmIChDb250ZXh0LT5SZXNwb25zZVRva2Vu LkV2ZW50KSB7DQo+ID4gPiA+ID4gPiArICAgICAgZ0JTLT5DbG9zZUV2ZW50IChDb250ZXh0LT5S ZXNwb25zZVRva2VuLkV2ZW50KTsNCj4gPiA+ID4gPiA+ICsgICAgICBaZXJvTWVtICgmQ29udGV4 dC0+UmVzcG9uc2VUb2tlbiwgc2l6ZW9mIChDb250ZXh0LQ0KPiA+ID4gPiA+ID5SZXNwb25zZVRv a2VuKSk7DQo+ID4gPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsg ICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBXb3JrZXIgZnVuY3Rpb24gdGhhdCBkb3dubG9hZCB0 aGUgZGF0YSBvZiBhIGZpbGUgZnJvbSBhIEhUVFANCj4gPiA+ID4gPiA+IHNlcnZlcg0KPiA+ID4g PiA+IGdpdmVuDQo+ID4gPiA+ID4gPiArICB0aGUgcGF0aCBvZiB0aGUgZmlsZSBhbmQgaXRzIHNp emUuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICAgQ29udGV4dCAg ICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBIVFRQIGRvd25sb2FkDQo+ID4gPiA+IGNvbnRleHQu DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsICBFRklfU1VDQ0VTUyAgICAg ICAgICAgVGhlIGZpbGUgd2FzIGRvd25sb2FkZWQuDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsICBF RklfT1VUX09GX1JFU09VUkNFUyAgQSBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQuDQo+ID4gPiA+ ID4gPiArICAjcmV0dmFsICBFRklfSFRUUF9FUlJPUiAgICAgICAgVGhlIHNlcnZlciByZXR1cm5l ZCBhIHZhbGlkIEhUVFANCj4gPiA+ID4gZXJyb3IuDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRXhhbWluZSB0aGUgbUxvY2FsRmlsZVBhdGggZmlsZQ0KPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGdldCBlcnJvciBi b2R5Lg0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCAgT3RoZXJzICAgICAgICAgICAgICAgIFRoZSBk b3dubG9hZGluZyBvZiB0aGUgZmlsZSBmcm9tDQo+ID4gPiA+ID4gPiB0aGUNCj4gPiA+ID4gc2Vy dmVyDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGVk Lg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gK1NUQVRJQw0K PiA+ID4gPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ID4gPiA+ICtEb3dubG9hZEZpbGUgKA0KPiA+ ID4gPiA+ID4gKyAgSU4gICBET1dOTE9BRF9DT05URVhUICAgKkNvbnRleHQNCj4gPiA+ID4gPiA+ ICsgICkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICBFRklfU1RBVFVTICAgICAgICAg ICAgU3RhdHVzOw0KPiA+ID4gPiA+ID4gKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICpEb3dubG9h ZFVybDsNCj4gPiA+ID4gPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICBVcmxTaXplOw0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQVNTRVJUIChDb250ZXh0KTsNCj4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ICsgIERvd25sb2FkVXJsID0gTlVMTDsNCj4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ICsgIENvbnRleHQtPkJ1ZmZlciA9IEFsbG9jYXRlUG9vbCAoQ29udGV4dC0+QnVm ZmVyU2l6ZSk7DQo+ID4gPiA+ID4gPiArICBpZiAoIUNvbnRleHQtPkJ1ZmZlcikgew0KPiA+ID4g PiA+ID4gKyAgICBTdGF0dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiA+ID4gPiA+ICsg ICAgZ290byBPTl9FWElUOw0KPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gKyAgLy8NCj4gPiA+ID4gPiA+ICsgIC8vIE9QRU4gRklMRQ0KPiA+ID4gPiA+ID4gKyAg Ly8NCj4gPiA+ID4gPiA+ICsgIGlmICghRUZJX0VSUk9SIChTaGVsbEZpbGVFeGlzdHMgKG1Mb2Nh bEZpbGVQYXRoKSkpIHsNCj4gPiA+ID4gPiA+ICsgICAgU2hlbGxEZWxldGVGaWxlQnlOYW1lICht TG9jYWxGaWxlUGF0aCk7DQo+ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArICBTdGF0dXMgPSBTaGVsbE9wZW5GaWxlQnlOYW1lICgNCj4gPiA+ID4gPiA+ICsgICAg ICAgICAgICAgbUxvY2FsRmlsZVBhdGgsDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICZtRmls ZUhhbmRsZSwNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgRUZJX0ZJTEVfTU9ERV9DUkVBVEUg fA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBFRklfRklMRV9NT0RFX1dSSVRFICB8DQo+ID4g PiA+ID4gPiArICAgICAgICAgICAgIEVGSV9GSUxFX01PREVfUkVBRCwNCj4gPiA+ID4gPiA+ICsg ICAgICAgICAgICAgMCk7DQo+ID4gPiA+ID4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7 DQo+ID4gPiA+ID4gPiArICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ID4gPiA+ID4gPiArICAgICAg LTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4gKFNUUl9HRU5fRklMRV9PUEVOX0ZBSUwpLA0KPiA+ ID4gPiA+ID4gKyAgICAgIG1IdHRwSGlpSGFuZGxlLCBIVFRQX0FQUF9OQU1FLCBtTG9jYWxGaWxl UGF0aA0KPiA+ID4gPiA+ID4gKyAgICAgICk7DQo+ID4gPiA+ID4gPiArICAgIGdvdG8gT05fRVhJ VDsNCj4gPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIGRvIHsN Cj4gPiA+ID4gPiA+ICsgICAgU0hFTExfRlJFRV9OT05fTlVMTCAoRG93bmxvYWRVcmwpOw0KPiA+ ID4gPiA+ID4gKyAgICBVcmxTaXplID0gMDsNCj4gPiA+ID4gPiA+ICsgICAgRG93bmxvYWRVcmwg PSBTdHJuQ2F0R3JvdyAoDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAmRG93bmxv YWRVcmwsDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAmVXJsU2l6ZSwNCj4gPiA+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgIENvbnRleHQtPlNlcnZlckFkZHJBbmRQcm90bywN Cj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgIFN0ckxlbiAoQ29udGV4dC0+U2VydmVy QWRkckFuZFByb3RvKQ0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ ID4gPiA+ICsgICAgaWYgKENvbnRleHQtPlVSSVswXSAhPSBMJy8nKSB7DQo+ID4gPiA+ID4gPiAr ICAgICAgRG93bmxvYWRVcmwgPSBTdHJuQ2F0R3JvdyAoDQo+ID4gPiA+ID4gPiArICAgICAgICAg ICZEb3dubG9hZFVybCwNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgJlVybFNp emUsDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIEwiLyIsDQo+ID4gPiA+ID4g PiArICAgICAgICAgICAgICAgICAgICAgIFN0ckxlbiAoQ29udGV4dC0+U2VydmVyQWRkckFuZFBy b3RvKQ0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICApOw0KPiA+ID4gPiA+ID4g KyAgICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAgIERvd25sb2FkVXJsID0gU3Ry bkNhdEdyb3cgKA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgJkRvd25sb2FkVXJs LA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgJlVybFNpemUsDQo+ID4gPiA+ID4g PiArICAgICAgICAgICAgICAgICAgICBDb250ZXh0LT5VUkksDQo+ID4gPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICBTdHJMZW4gKENvbnRleHQtPlVSSSkpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gKyAgICBTaGVsbFByaW50SGlpRXggKA0KPiA+ID4gPiA+ID4gKyAgICAgIC0xLCAt MSwgTlVMTCwgU1RSSU5HX1RPS0VOIChTVFJfSFRUUF9ET1dOTE9BRElORyksDQo+ID4gPiA+ID4g PiArICAgICAgbUh0dHBIaWlIYW5kbGUsIERvd25sb2FkVXJsKTsNCj4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ICsgICAgU3RhdHVzID0gU2VuZFJlcXVlc3QgKENvbnRleHQsIERvd25sb2FkVXJs KTsNCj4gPiA+ID4gPiA+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gPiA+ ID4gKyAgICAgIGdvdG8gT05fRVhJVDsNCj4gPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gKyAgICBTdGF0dXMgPSBHZXRSZXNwb25zZSAoQ29udGV4dCwgRG93bmxv YWRVcmwpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgICBpZiAoRUZJX0VSUk9SIChT dGF0dXMpKSB7DQo+ID4gPiA+ID4gPiArICAgICAgZ290byBPTl9FWElUOw0KPiA+ID4gPiA+ID4g KyAgICB9DQo+ID4gPiA+ID4gPiArICB9IHdoaWxlIChDb250ZXh0LT5TdGF0dXMgPT0gUkVRX05F RURfUkVQRUFUKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIGlmIChDb250ZXh0LT5T dGF0dXMgPT0gUkVRX0VSUk9SKSB7DQo+ID4gPiA+ID4gPiArICAgIFN0YXR1cyA9IEVGSV9IVFRQ X0VSUk9SOw0KPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK09O X0VYSVQ6DQo+ID4gPiA+ID4gPiArICAvLw0KPiA+ID4gPiA+ID4gKyAgLy8gQ0xPU0UgRklMRQ0K PiA+ID4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gPiA+ICsgIGlmIChtRmlsZUhhbmRsZSkgew0KPiA+ ID4gPiA+ID4gKyAgICBTaGVsbENsb3NlRmlsZSAoJm1GaWxlSGFuZGxlKTsNCj4gPiA+ID4gPiA+ ICsgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIFNIRUxMX0ZSRUVfTk9OX05VTEwg KERvd25sb2FkVXJsKTsNCj4gPiA+ID4gPiA+ICsgIFNIRUxMX0ZSRUVfTk9OX05VTEwgKENvbnRl eHQtPkJ1ZmZlcik7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICByZXR1cm4gU3RhdHVz Ow0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ ID4gPiA+ICsgIFJldHJpdmUgSElJIHBhY2thZ2UgbGlzdCBmcm9tIEltYWdlSGFuZGxlIGFuZCBw dWJsaXNoIHRvIEhJSQ0KPiA+ID4gPiBkYXRhYmFzZS4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ICsgIEBwYXJhbSBJbWFnZUhhbmRsZSAgICAgICAgICAgIFRoZSBpbWFnZSBoYW5kbGUgb2Yg dGhlIHByb2Nlc3MuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcmV0dXJuIEhJSSBo YW5kbGUuDQo+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gPiArRUZJX0hJSV9IQU5ETEUNCj4g PiA+ID4gPiA+ICtJbml0aWFsaXplSGlpUGFja2FnZSAoDQo+ID4gPiA+ID4gPiArICBFRklfSEFO RExFICAgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUNCj4gPiA+ID4gPiA+ICsgICkNCj4gPiA+ ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgU3Rh dHVzOw0KPiA+ID4gPiA+ID4gKyAgRUZJX0hJSV9QQUNLQUdFX0xJU1RfSEVBREVSICpQYWNrYWdl TGlzdDsNCj4gPiA+ID4gPiA+ICsgIEVGSV9ISUlfSEFORExFICAgICAgICAgICAgICBIaWlIYW5k bGU7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAvLw0KPiA+ID4gPiA+ID4gKyAgLy8g UmV0cmlldmUgSElJIHBhY2thZ2UgbGlzdCBmcm9tIEltYWdlSGFuZGxlDQo+ID4gPiA+ID4gPiAr ICAvLw0KPiA+ID4gPiA+ID4gKyAgU3RhdHVzID0gZ0JTLT5PcGVuUHJvdG9jb2wgKA0KPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPiA+ID4gPiA+ICsgICAgICAgICAg ICAgJmdFZmlIaWlQYWNrYWdlTGlzdFByb3RvY29sR3VpZCwNCj4gPiA+ID4gPiA+ICsgICAgICAg ICAgICAgKFZPSUQgKiopJlBhY2thZ2VMaXN0LA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBJ bWFnZUhhbmRsZSwNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgTlVMTCwNCj4gPiA+ID4gPiA+ ICsgICAgICAgICAgICAgRUZJX09QRU5fUFJPVE9DT0xfR0VUX1BST1RPQ09MDQo+ID4gPiA+ID4g PiArICAgICAgICAgICAgICk7DQo+ID4gPiA+ID4gPiArICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0 dXMpOw0KPiA+ID4gPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gPiA+ ID4gKyAgICByZXR1cm4gTlVMTDsNCj4gPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ID4gPiArICAvLyBQdWJsaXNoIEhJSSBwYWNrYWdlIGxp c3QgdG8gSElJIERhdGFiYXNlLg0KPiA+ID4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gPiA+ICsgIFN0 YXR1cyA9IGdIaWlEYXRhYmFzZS0+TmV3UGFja2FnZUxpc3QgKA0KPiA+ID4gPiA+ID4gKyAgICAg ICAgICAgICBnSGlpRGF0YWJhc2UsDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgIFBhY2thZ2VM aXN0LA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBOVUxMLA0KPiA+ID4gPiA+ID4gKyAgICAg ICAgICAgICAmSGlpSGFuZGxlDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICk7DQo+ID4gPiA+ ID4gPiArICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiA+ID4gPiA+ID4gKyAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gPiA+ID4gKyAgICByZXR1cm4gTlVMTDsNCj4gPiA+ ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiA+ICsgIHJldHVybiBIaWlIYW5kbGU7DQo+ID4gPiA+ID4g PiArfQ0KPiA+ID4gPiA+ID4gZGlmZiAtLWdpdA0KPiA+IGEvU2hlbGxQa2cvRHluYW1pY0NvbW1h bmQvSHR0cER5bmFtaWNDb21tYW5kL0h0dHAuaA0KPiA+ID4gPiA+ID4gYi9TaGVsbFBrZy9EeW5h bWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cC5oDQo+ID4gPiA+ID4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5kYWViZTljZjE3 MzENCj4gPiA+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gPiA+ICsrKyBiL1NoZWxsUGtn L0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRwLmgNCj4gPiA+ID4gPiA+IEBA IC0wLDAgKzEsODggQEANCj4gPiA+ID4gPiA+ICsvKiogQGZpbGUNCj4gPiA+ID4gPiA+ICsgIEhl YWRlciBmaWxlIGZvciAnaHR0cCcgY29tbWFuZCBmdW5jdGlvbnMuDQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTAgLSAyMDE3LCBJbnRlbCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cw0KPiA+ID4gPiA+ID4gcmVzZXJ2ZWQuDQo+ID4gPiA+IDxCUj4NCj4gPiA+ ID4gPiA+ICsgIENvcHlyaWdodCAoYykgMjAxNSwgQVJNIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZl ZC48QlI+DQo+ID4gPiA+ID4gPiArICBDb3B5cmlnaHQgKGMpIDIwMjAsIEJyb2FkY29tLiBBbGwg cmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArI2lmbmRlZiBfSFRU UF9IXw0KPiA+ID4gPiA+ID4gKyNkZWZpbmUgX0hUVFBfSF8NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiA+ICsjaW5jbHVkZSA8VWVmaS5oPg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyNp bmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4NCj4gPiA+ID4gPiA+ICsjaW5jbHVkZSA8TGlicmFy eS9CYXNlTWVtb3J5TGliLmg+DQo+ID4gPiA+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdM aWIuaD4NCj4gPiA+ID4gPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9IaWlMaWIuaD4NCj4gPiA+ID4g PiA+ICsjaW5jbHVkZSA8TGlicmFyeS9IdHRwTGliLmg+DQo+ID4gPiA+ID4gPiArI2luY2x1ZGUg PExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KPiA+ID4gPiA+ID4gKyNpbmNsdWRlIDxM aWJyYXJ5L05ldExpYi5oPg0KPiA+ID4gPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGli Lmg+DQo+ID4gPiA+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvU2hlbGxMaWIuaD4NCj4gPiA+ID4g PiA+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCj4gPiA+ ID4gPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpSGlpU2VydmljZXNMaWIuaD4NCj4gPiA+ID4g PiA+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ID4gPiA+ID4gPiArI2luY2x1ZGUg PExpYnJhcnkvVWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArI2luY2x1ZGUgPFByb3RvY29sL0hpaVBhY2thZ2VMaXN0Lmg+DQo+ID4gPiA+ ID4gPiArI2luY2x1ZGUgPFByb3RvY29sL0h0dHBVdGlsaXRpZXMuaD4NCj4gPiA+ID4gPiA+ICsj aW5jbHVkZSA8UHJvdG9jb2wvU2VydmljZUJpbmRpbmcuaD4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiA+ICsjZGVmaW5lIEhUVFBfQVBQX05BTUUgTCJodHRwIg0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gK2V4dGVybiBFRklfSElJX0hBTkRMRSBtSHR0cEhpaUhhbmRsZTsNCj4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ICt0eXBlZGVmIGVudW0gew0KPiA+ID4gPiA+ID4gKyAgUkVRX09L ID0gMCwNCj4gPiA+ID4gPiA+ICsgIFJFUV9ORUVEX1JFUEVBVCA9IDEsDQo+ID4gPiA+ID4gPiAr ICBSRVFfRVJST1IgPSAyDQo+ID4gPiA+ID4gPiArfSBSRVFfU1RBVFVTOw0KPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gK3R5cGVkZWYgc3RydWN0IHsNCj4gPiA+ID4gPiA+ICsgIFVJTlROICAg ICAgICAgICAgICAgICBDb250ZW50RG93bmxvYWRlZDsNCj4gPiA+ID4gPiA+ICsgIFVJTlROICAg ICAgICAgICAgICAgICBDb250ZW50TGVuZ3RoOw0KPiA+ID4gPiA+ID4gKyAgVUlOVE4gICAgICAg ICAgICAgICAgIExhc3RSZXBvcnRlZE5iT2ZCeXRlczsNCj4gPiA+ID4gPiA+ICsgIFVJTlROICAg ICAgICAgICAgICAgICBCdWZmZXJTaXplOw0KPiA+ID4gPiA+ID4gKyAgUkVRX1NUQVRVUyAgICAg ICAgICAgIFN0YXR1czsNCj4gPiA+ID4gPiA+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAqQnVm ZmVyOw0KPiA+ID4gPiA+ID4gKyAgQ0hBUjggICAgICAgICAgICAgICAgICpQcm94eVNlcnZlckFk ZHI7DQo+ID4gPiA+ID4gPiArICBDSEFSMTYgICAgICAgICAgICAgICAgKlNlcnZlckFkZHJBbmRQ cm90bzsNCj4gPiA+ID4gPiA+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAqVVJJOw0KPiA+ID4g PiA+ID4gKyAgRUZJX0hUVFBfVE9LRU4gICAgICAgIFJlc3BvbnNlVG9rZW47DQo+ID4gPiA+ID4g PiArICBFRklfSFRUUF9UT0tFTiAgICAgICAgUmVxdWVzdFRva2VuOw0KPiA+ID4gPiA+ID4gKyAg RUZJX0hUVFBfUFJPVE9DT0wgICAgICpIdHRwOw0KPiA+ID4gPiA+ID4gK30gRE9XTkxPQURfQ09O VEVYVDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ICsgIEZ1 bmN0aW9uIGZvciAnaHR0cCcgY29tbWFuZC4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsg IEBwYXJhbVtpbl0gIEltYWdlSGFuZGxlICAgICBUaGUgaW1hZ2UgaGFuZGxlLg0KPiA+ID4gPiA+ ID4gKyAgQHBhcmFtW2luXSAgU3lzdGVtVGFibGUgICAgIFRoZSBzeXN0ZW0gdGFibGUuDQo+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIFNIRUxMX1NVQ0NFU1MgICAgICAgICAg ICBDb21tYW5kIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuDQo+ID4gPiA+ID4gPiArICBAcmV0dmFs IFNIRUxMX0lOVkFMSURfUEFSQU1FVEVSICBDb21tYW5kIHVzYWdlIGVycm9yLg0KPiA+ID4gPiA+ ID4gKyAgQHJldHZhbCBTSEVMTF9BQk9SVEVEICAgICAgICAgICAgVGhlIHVzZXIgYWJvcnRzIHRo ZSBvcGVyYXRpb24uDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIHZhbHVlICAgICAgICAgICAgICAg ICAgICBVbmtub3duIGVycm9yLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gK1NIRUxM X1NUQVRVUw0KPiA+ID4gPiA+ID4gK1J1bkh0dHAgKA0KPiA+ID4gPiA+ID4gKyAgSU4gRUZJX0hB TkRMRSAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4gPiA+ID4gPiArICBJTiBFRklfU1lTVEVNX1RB QkxFICAqU3lzdGVtVGFibGUNCj4gPiA+ID4gPiA+ICsgICk7DQo+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBSZXRyaXZlIEhJSSBwYWNrYWdlIGxpc3QgZnJv bSBJbWFnZUhhbmRsZSBhbmQgcHVibGlzaCB0byBISUkNCj4gPiA+ID4gZGF0YWJhc2UuDQo+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcGFyYW0gSW1hZ2VIYW5kbGUgICAgICAgICAgICBU aGUgaW1hZ2UgaGFuZGxlIG9mIHRoZSBwcm9jZXNzLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gKyAgQHJldHVybiBISUkgaGFuZGxlLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4g K0VGSV9ISUlfSEFORExFDQo+ID4gPiA+ID4gPiArSW5pdGlhbGl6ZUhpaVBhY2thZ2UgKA0KPiA+ ID4gPiA+ID4gKyAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlDQo+ID4g PiA+ID4gPiArICApOw0KPiA+ID4gPiA+ID4gKyNlbmRpZiAvLyBfSFRUUF9IXw0KPiA+ID4gPiA+ ID4gZGlmZiAtLWdpdA0KPiA+ID4gYS9TaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1p Y0NvbW1hbmQvSHR0cC51bmkNCj4gPiA+ID4gPiA+IGIvU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQv SHR0cER5bmFtaWNDb21tYW5kL0h0dHAudW5pDQo+ID4gPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiA+ID4gPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5hYjYyZmZhY2I4MTINCj4gPiA+ ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gPiA+ICsrKyBiL1NoZWxsUGtnL0R5bmFtaWND b21tYW5kL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRwLnVuaQ0KPiA+ID4gPiA+ID4gQEAgLTAsMCAr MSw5NSBAQA0KPiA+ID4gPiA+ID4gKy8vIC8qKg0KPiA+ID4gPiA+ID4gKy8vDQo+ID4gPiA+ID4g PiArLy8gKEMpIENvcHlyaWdodCAyMDE1LTIwMTYgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2Ug RGV2ZWxvcG1lbnQNCj4gPiA+ID4gPiBMUDxCUj4NCj4gPiA+ID4gPiA+ICsvLyBDb3B5cmlnaHQg KGMpIDIwMTAgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cw0KPiA+ID4gPiA+ ID4gcmVzZXJ2ZWQuDQo+ID4gPiA+IDxCUj4NCj4gPiA+ID4gPiA+ICsvLyBDb3B5cmlnaHQgKGMp IDIwMjAsIEJyb2FkY29tLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ID4gPiA+ICsv LyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gPiA+ ID4gKy8vDQo+ID4gPiA+ID4gPiArLy8gTW9kdWxlIE5hbWU6DQo+ID4gPiA+ID4gPiArLy8NCj4g PiA+ID4gPiA+ICsvLyBIdHRwLnVuaQ0KPiA+ID4gPiA+ID4gKy8vDQo+ID4gPiA+ID4gPiArLy8g QWJzdHJhY3Q6DQo+ID4gPiA+ID4gPiArLy8NCj4gPiA+ID4gPiA+ICsvLyBTdHJpbmcgZGVmaW5p dGlvbnMgZm9yIFVFRkkgU2hlbGwgSFRUUCBjb21tYW5kDQo+ID4gPiA+ID4gPiArLy8NCj4gPiA+ ID4gPiA+ICsvLw0KPiA+ID4gPiA+ID4gKy8vICoqLw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gKy89Iw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyNsYW5nZGVmICAgZW4tVVMgImVu Z2xpc2giDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArI3N0cmluZyBTVFJfR0VOX1RPT19N QU5ZICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIiVIJXMlTjoNCj4gPiBUb28NCj4gPiA+ID4g PiBtYW55DQo+ID4gPiA+ID4gPiBhcmd1bWVudHMuIFRyeSBoZWxwIGh0dHAuXHJcbiINCj4gPiA+ ID4gPiA+ICsjc3RyaW5nIFNUUl9HRU5fVE9PX0ZFVyAgICAgICAgICAgICNsYW5ndWFnZSBlbi1V UyAiJUglcyVOOiBUb28NCj4gPiA+IGZldw0KPiA+ID4gPiA+ID4gYXJndW1lbnRzLiBUcnkgaGVs cCBodHRwLlxyXG4iDQo+ID4gPiA+ID4gPiArI3N0cmluZyBTVFJfR0VOX1BBUkFNX0lOViAgICAg ICAgICAjbGFuZ3VhZ2UgZW4tVVMgIiVIJXMlTjoNCj4gPiA+IEludmFsaWQNCj4gPiA+ID4gPiA+ IGFyZ3VtZW50IC0gJyVIJXMlTicuIFRyeSBoZWxwIGh0dHAuXHJcbiINCj4gPiA+ID4gPiA+ICsj c3RyaW5nIFNUUl9HRU5fUFJPQkxFTSAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiJUglcyVO Og0KPiA+ID4gVW5rbm93bg0KPiA+ID4gPiA+IGZsYWcNCj4gPiA+ID4gPiA+IC0gJyVIJXMlTicu IFRyeSBoZWxwIGh0dHAuXHJcbiINCj4gPiA+ID4gPiA+ICsjc3RyaW5nIFNUUl9HRU5fRklMRV9P UEVOX0ZBSUwgICAgICNsYW5ndWFnZSBlbi1VUyAiJUglcyVOOg0KPiA+ID4gQ2Fubm90DQo+ID4g PiA+ID4gPiBvcGVuIGZpbGUgLSAnJUglcyVOJ1xyXG4iDQo+ID4gPiA+ID4gPiArI3N0cmluZyBT VFJfR0VOX0NSTEYgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIlxyXG4iDQo+ID4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gPiArI3N0cmluZyBTVFJfSFRUUF9FUlJfTk9fTklDICAgICAgICAj bGFuZ3VhZ2UgZW4tVVMgIk5vIG5ldHdvcmsNCj4gPiA+ID4gPiBpbnRlcmZhY2UNCj4gPiA+ID4g PiA+IGNhcmQgZm91bmQuXHJcbiINCj4gPiA+ID4gPiA+ICsjc3RyaW5nIFNUUl9IVFRQX0VSUl9O SUNfTkFNRSAgICAgICNsYW5ndWFnZSBlbi1VUyAiRmFpbGVkIHRvDQo+ID4gZ2V0DQo+ID4gPiB0 aGUNCj4gPiA+ID4gPiA+IG5hbWUgb2YgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQgbnVtYmVy ICVkIC0gJXJcclxuIg0KPiA+ID4gPiA+ID4gKyNzdHJpbmcgU1RSX0hUVFBfRVJSX09QRU5fUFJP VE9DT0wgI2xhbmd1YWdlIGVuLVVTICJVbmFibGUNCj4gPiA+IHRvDQo+ID4gPiA+ID4gb3Blbg0K PiA+ID4gPiA+ID4gSFRUUCBwcm90b2NvbCBvbiAnJUglcyVOJyAtICVyXHJcbiINCj4gPiA+ID4g PiA+ICsjc3RyaW5nIFNUUl9IVFRQX0VSUl9DT05GSUdVUkUgICAgICNsYW5ndWFnZSBlbi1VUyAi VW5hYmxlIHRvDQo+ID4gPiA+ID4gY29uZmlndXJlDQo+ID4gPiA+ID4gPiBIVFRQIHByb3RvY29s IG9uICclSCVzJU4nIC0gJXJcclxuIg0KPiA+ID4gPiA+ID4gKyNzdHJpbmcgU1RSX0hUVFBfRVJS X0RPV05MT0FEICAgICAgI2xhbmd1YWdlIGVuLVVTICJVbmFibGUgdG8NCj4gPiA+ID4gPiA+IGRv d25sb2FkIHRoZSBmaWxlICclSCVzJU4nIG9uICclSCVzJU4nIC0gJXJcclxuIg0KPiA+ID4gPiA+ ID4gKyNzdHJpbmcgU1RSX0hUVFBfRVJSX1dSSVRFICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICJV bmFibGUgdG8NCj4gPiB3cml0ZQ0KPiA+ID4gPiBpbnRvDQo+ID4gPiA+ID4gZmlsZQ0KPiA+ID4g PiA+ID4gJyVIJXMlTicgLSAlclxyXG4iDQo+ID4gPiA+ID4gPiArI3N0cmluZyBTVFJfSFRUUF9F UlJfTklDX05PVF9GT1VORCAjbGFuZ3VhZ2UgZW4tVVMNCj4gPiAiTmV0d29yaw0KPiA+ID4gPiA+ ID4gSW50ZXJmYWNlIENhcmQgJyVIJXMlTicgbm90IGZvdW5kLlxyXG4iDQo+ID4gPiA+ID4gPiAr I3N0cmluZyBTVFJfSFRUUF9FUlJfU1RBVFVTQ09ERSAgICAjbGFuZ3VhZ2UgZW4tVVMNCj4gPiAi XHInJUglcyVOJw0KPiA+ID4gPiA+IHJlcG9ydHMNCj4gPiA+ID4gPiA+ICclcycgZm9yICclSCVz JU4nIFxyXG4iDQo+ID4gPiA+ID4gPiArI3N0cmluZyBTVFJfSFRUUF9ET1dOTE9BRElORyAgICAg ICAjbGFuZ3VhZ2UgZW4tVVMNCj4gPiAiRG93bmxvYWRpbmcNCj4gPiA+ID4gPiA+ICclSCVzJU4n XHJcbiINCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsjc3RyaW5nIFNUUl9HRVRfSEVMUF9I VFRQICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiIg0KPiA+ID4gPiA+ID4gKyIuVEggaHR0cCAw ICJEb3dubG9hZCBhIGZpbGUgZnJvbSBIVFRQIHNlcnZlci4iXHJcbiINCj4gPiA+ID4gPiA+ICsi LlNIIE5BTUVcclxuIg0KPiA+ID4gPiA+ID4gKyJEb3dubG9hZCBhIGZpbGUgZnJvbSBIVFRQIHNl cnZlci5cclxuIg0KPiA+ID4gPiA+ID4gKyIuU0ggU1lOT1BTSVNcclxuIg0KPiA+ID4gPiA+ID4g KyIgXHJcbiINCj4gPiA+ID4gPiA+ICsiSFRUUCBbLWkgaW50ZXJmYWNlXSBbLWwgPHBvcnQ+XSBb LXQgPHRpbWVvdXQ+XVxyXG4iDQo+ID4gPiA+ID4gPiArIiAgICAgIGhvc3RbOnBvcnRdIGh0dHBf dXJpIFtsb2NhbGZpbGVwYXRoXVxyXG4iDQo+ID4gPiA+ID4gPiArIi5TSCBPUFRJT05TXHJcbiIN Cj4gPiA+ID4gPiA+ICsiIFxyXG4iDQo+ID4gPiA+ID4gPiArIiAgLWkgaW50ZXJmYWNlICAgICAt IFNwZWNpZmllcyBhbiBhZGFwdGVyIG5hbWUsIGkuZS4sIGV0aDAuXHJcbiINCj4gPiA+ID4gPiA+ ICsiICAtbCBwb3J0ICAgICAgICAgIC0gU3BlY2lmaWVzIHRoZSBsb2NhbCBwb3J0IG51bWJlci4g RGVmYXVsdA0KPiA+ID4gPiA+ID4gdmFsdWUNCj4gPiA+ID4gaXMgMFxyXG4iDQo+ID4gPiA+ID4g PiArIiAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgcG9ydCBudW1iZXIgaXMgYXV0b21hdGlj YWxseQ0KPiA+ID4gPiBhc3NpZ25lZC5cclxuIg0KPiA+ID4gPiA+ID4gKyIgIC10IDx0aW1lb3V0 PiAgICAgLSBUaGUgbnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdCBmb3IgYSByZXNwb25zZQ0KPiA+ ID4gPiA+IGFmdGVyXHJcbiINCj4gPiA+ID4gPiA+ICsiICAgICAgICAgICAgICAgICAgICAgc2Vu ZGluZyBhIHJlcXVlc3QgcGFja2V0LiBEZWZhdWx0IHZhbHVlIGlzIDANCj4gPiA+ID4gd2hpY2gg aXMNCj4gPiA+ID4gPiA+ICdhdXRvbWF0aWMnLlxyXG4iDQo+ID4gPiA+ID4gPiArIiAgaG9zdCAg ICAgICAgICAgICAtIFNwZWNpZnkgSFRUUCBTZXJ2ZXIgSVB2NCBhZGRyZXNzLlxyXG4NCj4gPiA+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgQ2FuIGJlIGVpdGhlciBhZGRyZXNzIG9yICdo dHRwIChvcg0KPiA+ID4gPiBodHRwcyk6Ly9hZGRyJ1xyXG4NCj4gPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgQ2FuIHVzZSBhZGRyZXNzZXMgcmVzb2x2YWJsZSBieSBETlMgYXMgd2Vs bC4NCj4gPiA+ID4gXHJcbg0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICBQb3J0 IGNhbiBiZSBzcGVjaWZpZWQgYWZ0ZXIgJzonIGlmIG5lZWRlZC4NCj4gPiA+ID4gPiA+IFxyXG4N Cj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCBwb3J0IDgwIGlz IHVzZWQuXHJcbiINCj4gPiA+ID4gPiA+ICsiICBodHRwX3VyaSAgICAgICAgIC0gSFRUUCBzZXJ2 ZXIgVVJJIHRvIGRvd25sb2FkIHRoZSBmaWxlLlxyXG4iDQo+ID4gPiA+ID4gPiArIiAgbG9jYWxm aWxlcGF0aCAgICAtIExvY2FsIGRlc3RpbmF0aW9uIGZpbGUgcGF0aC5cclxuIg0KPiA+ID4gPiA+ ID4gKyIuU0ggREVTQ1JJUFRJT05cclxuIg0KPiA+ID4gPiA+ID4gKyIgXHJcbiINCj4gPiA+ID4g PiA+ICsiTk9URVM6XHJcbiINCj4gPiA+ID4gPiA+ICsiICAxLiBUaGUgSFRUUCBjb21tYW5kIGFs bG93cyBnZXRpbmcgb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IGl0cw0KPiA+ID4gPiA+ID4gJ2h0 dHBfdXJpJ1xyXG4iDQo+ID4gPiA+ID4gPiArIiAgICAgcGF0aCBmcm9tIHRoZSBIVFRQIHNlcnZl ciBzcGVjaWZpZWQgYnkgaXRzICdob3N0JyBJUHY0DQo+ID4gPiA+ID4gPiBhZGRyZXNzLg0KPiA+ ID4gPiBJZg0KPiA+ID4gPiA+IHRoZVxyXG4iDQo+ID4gPiA+ID4gPiArIiAgICAgb3B0aW9uYWwg J2xvY2FsZmlsZXBhdGgnIHBhcmFtZXRlciBpcyBwcm92aWRlZCwgdGhlDQo+ID4gPiA+ID4gPiBk b3dubG9hZGVkDQo+ID4gPiA+IGZpbGUNCj4gPiA+ID4gPiBpc1xyXG4iDQo+ID4gPiA+ID4gPiAr IiAgICAgc3RvcmVkIGxvY2FsbHkgdXNpbmcgdGhlIHByb3ZpZGVkIGZpbGUgcGF0aC4gSWYgdGhl IGxvY2FsDQo+ID4gPiA+ID4gPiBmaWxlDQo+ID4gPiA+IHBhdGggaXNcclxuIg0KPiA+ID4gPiA+ ID4gKyIgICAgIG5vdCBzcGVjaWZpZWQsIHRoZSBmaWxlIGlzIHN0b3JlZCBpbiB0aGUgY3VycmVu dCBkaXJlY3RvcnkNCj4gPiA+ID4gdXNpbmcgdGhlDQo+ID4gPiA+ID4gZmlsZVxyXG4iDQo+ID4g PiA+ID4gPiArIiAgICAgc2VydmVyJ3MgbmFtZS5cclxuIg0KPiA+ID4gPiA+ID4gKyIgIDIuIEJl Zm9yZSB1c2luZyB0aGUgSFRUUCBjb21tYW5kLCB0aGUgbmV0d29yayBpbnRlcmZhY2UNCj4gPiBp bnRlbmRlZA0KPiA+ID4gPiB0bw0KPiA+ID4gPiA+ID4gYmVcclxuIg0KPiA+ID4gPiA+ID4gKyIg ICAgIHVzZWQgdG8gcmV0cmlldmUgdGhlIGZpbGUgbXVzdCBiZSBjb25maWd1cmVkLiBUaGlzDQo+ ID4gPiA+IGNvbmZpZ3VyYXRpb24gbWF5DQo+ID4gPiA+ID4gPiBiZVxyXG4iDQo+ID4gPiA+ID4g PiArIiAgICAgZG9uZSBieSBtZWFucyBvZiB0aGUgJ2lmY29uZmlnJyBjb21tYW5kLlxyXG4iDQo+ ID4gPiA+ID4gPiArIiAgMy4gSWYgYSBuZXR3b3JrIGludGVyZmFjZSBpcyBkZWZpbmVkIHdpdGgg dGhlICctaScgb3B0aW9uIHRoZW4NCj4gPiA+ID4gb25seQ0KPiA+ID4gPiA+IHRoaXNcclxuIg0K PiA+ID4gPiA+ID4gKyIgICAgIGludGVyZmFjZSB3aWxsIGJlIHVzZWQgdG8gcmV0cmlldmUgdGhl IHJlbW90ZSBmaWxlLg0KPiA+ID4gPiA+ID4gT3RoZXJ3aXNlLA0KPiA+ID4gPiBhbGwNCj4gPiA+ ID4gPiA+IG5ldHdvcmtcclxuIg0KPiA+ID4gPiA+ID4gKyIgICAgIGludGVyZmFjZXMgYXJlIHRy aWVkIGluIHRoZSBvcmRlciB0aGV5IGhhdmUgYmVlbiBkaXNjb3ZlcmVkDQo+ID4gPiA+IGR1cmlu Zw0KPiA+ID4gPiA+ID4gdGhlXHJcbiINCj4gPiA+ID4gPiA+ICsiICAgICBEWEUgcGhhc2UuXHJc biINCj4gPiA+ID4gPiA+ICsiLlNIIEVYQU1QTEVTXHJcbiINCj4gPiA+ID4gPiA+ICsiIFxyXG4i DQo+ID4gPiA+ID4gPiArIkVYQU1QTEVTOlxyXG4iDQo+ID4gPiA+ID4gPiArIiAgKiBUbyBnZXQg dGhlIGZpbGUgImRpcjEvZmlsZTEuZGF0IiBmcm9tIHRoZSBIVFRQIHNlcnZlcg0KPiA+ID4gPiAx OTIuMTY4LjEuMSwgcG9ydA0KPiA+ID4gPiA+ID4gODA4MCwgYW5kXHJcbiINCj4gPiA+ID4gPiA+ ICsiICAgIHN0b3JlIGl0IGFzIGZpbGUyLmRhdCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkgOlxy XG4iDQo+ID4gPiA+ID4gPiArIiAgICBmczA6XD4gaHR0cCAxOTIuMTY4LjEuMTo4MDgwIGRpcjEv ZmlsZTEuZGF0IGZpbGUyLmRhdFxyXG4iDQo+ID4gPiA+ID4gPiArIiAgKiBUbyBnZXQgdGhlIGZp bGUgL2ltYWdlLmJpbiB2aWEgSFRUUFMgZnJvbSBzZXJ2ZXIgMTkyLjE2OC4xLjENCj4gPiA+ID4g PiA+IGF0DQo+ID4gPiA+IHBvcnQgNDQzDQo+ID4gPiA+ID4gPiBcclxuIg0KPiA+ID4gPiA+ID4g KyIgICAgKGRlZmF1bHQgSFRUUFMgcG9ydCksIGFuZCBzdG9yZSBpdCBpbiB0aGUgY3VycmVudCBk aXJlY3Rvcnk6DQo+ID4gPiA+IFxyXG4iDQo+ID4gPiA+ID4gPiArIiAgICBmczA6XD4gaHR0cCBo dHRwczovLzE5Mi4xNjguMS4xIGltYWdlLmJpblxyXG4iDQo+ID4gPiA+ID4gPiArIi5TSCBSRVRV Uk5WQUxVRVNcclxuIg0KPiA+ID4gPiA+ID4gKyIgXHJcbiINCj4gPiA+ID4gPiA+ICsiUkVUVVJO IFZBTFVFUzpcclxuIg0KPiA+ID4gPiA+ID4gKyIgIFNIRUxMX1NVQ0NFU1MgICAgICAgICAgICAg VGhlIGFjdGlvbiB3YXMgY29tcGxldGVkIGFzDQo+ID4gPiA+IHJlcXVlc3RlZC5cclxuIg0KPiA+ ID4gPiA+ID4gKyIgIFNIRUxMX0lOVkFMSURfUEFSQU1FVEVSICAgT25lIG9mIHRoZSBwYXNzZWQt aW4gcGFyYW1ldGVycw0KPiA+IHdhcw0KPiA+ID4gPiA+ID4gaW5jb3JyZWN0bHlcclxuIg0KPiA+ ID4gPiA+ID4gKyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkIG9yIGl0cyB2 YWx1ZSB3YXMgb3V0IG9mDQo+ID4gPiA+IGJvdW5kcy5cclxuIg0KPiA+ID4gPiA+ID4gKyIgIFNI RUxMX0hUVFBfRVJST1IgICAgICAgICAgTm8gRUZJIGVycm9ycywgYnV0IHRoZSBzZXJ2ZXIgcmVw b3J0ZWQNCj4gPiA+ID4gPiA+IGENCj4gPiA+ID4gc3RhdHVzDQo+ID4gPiA+ID4gPiBjb2RlXHJc bg0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggc2hvdWxk IGJlIHRyZWF0ZWQgYXMgYW4gZXJyb3IuDQo+ID4gPiA+ID4gPiBJZg0KPiA+ID4gPiBhbiBlcnJv ciBib2R5DQo+ID4gPiA+ID4gPiBzZW50XHJcbg0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYnkgdGhlIHNlcnZlciwgaXQgd291bGQgYmUgc2F2ZWQgYXMNCj4gPiA+ ID4gbG9jYWxmaWxlcGF0aA0KPiA+ID4gPiA+IHBhcmFtZXRlci4iDQo+ID4gPiA+ID4gPiBkaWZm IC0tZ2l0DQo+ID4gPiBhL1NoZWxsUGtnL0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWFu ZC9IdHRwQXBwLmMNCj4gPiA+ID4gPiA+IGIvU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0cER5 bmFtaWNDb21tYW5kL0h0dHBBcHAuYw0KPiA+ID4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gPiA+ID4gPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uN2JkNWI0NmQzOTk3DQo+ID4gPiA+ID4g PiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ID4gPiArKysgYi9TaGVsbFBrZy9EeW5hbWljQ29tbWFu ZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cEFwcC5jDQo+ID4gPiA+ID4gPiBAQCAtMCwwICsxLDUz IEBADQo+ID4gPiA+ID4gPiArLyoqIEBmaWxlDQo+ID4gPiA+ID4gPiArICBFbnRyeXBvaW50IG9m ICJodHRwIiBzaGVsbCBzdGFuZGFsb25lIGFwcGxpY2F0aW9uLg0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDEwIC0gMjAxNywgSW50ZWwgQ29ycG9yYXRpb24u IEFsbCByaWdodHMNCj4gPiA+ID4gPiA+IHJlc2VydmVkLg0KPiA+ID4gPiA8QlI+DQo+ID4gPiA+ ID4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTUsIEFSTSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiA+ID4gPiA+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDIwLCBCcm9hZGNvbS4gQWxsIHJp Z2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gKyNpbmNsdWRlICJIdHRwLmgiDQo+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiArLyoNCj4gPiA+ID4gPiA+ICsgKiBTdHJpbmcgdG9rZW4gSUQgb2Yg aGVscCBtZXNzYWdlIHRleHQuDQo+ID4gPiA+ID4gPiArICogU2hlbGwgc3VwcG9ydHMgdG8gZmlu ZCBoZWxwIG1lc3NhZ2UgaW4gdGhlIHJlc291cmNlIHNlY3Rpb24gb2YNCj4gPiA+ID4gPiA+IGFu DQo+ID4gPiA+ID4gPiArICogYXBwbGljYXRpb24gaW1hZ2UgaWYgKiAuTUFOIGZpbGUgaXMgbm90 IGZvdW5kLg0KPiA+ID4gPiA+ID4gKyAqIFRoaXMgZ2xvYmFsIHZhcmlhYmxlIGlzIGFkZGVkIHRv IG1ha2UgYnVpbGQgdG9vbCByZWNvZ25pemVzDQo+ID4gPiA+ID4gPiArICogdGhhdCB0aGUgaGVs cCBzdHJpbmcgaXMgY29uc3VtZWQgYnkgdXNlciBhbmQgdGhlbiBidWlsZCB0b29sDQo+ID4gPiA+ ID4gPiB3aWxsDQo+ID4gPiA+ID4gPiArICogYWRkIHRoZSBzdHJpbmcgaW50byB0aGUgcmVzb3Vy Y2Ugc2VjdGlvbi4NCj4gPiA+ID4gPiA+ICsgKiBUaHVzIHRoZSBhcHBsaWNhdGlvbiBjYW4gdXNl ICctPycgb3B0aW9uIHRvIHNob3cgaGVscCBtZXNzYWdlIGluDQo+ID4gPiA+IFNoZWxsLg0KPiA+ ID4gPiA+ID4gKyAqLw0KPiA+ID4gPiA+ID4gK0dMT0JBTF9SRU1PVkVfSUZfVU5SRUZFUkVOQ0VE DQo+ID4gPiA+ID4gPiArRUZJX1NUUklOR19JRCBtU3RyaW5nSGVscFRva2VuSWQgPSBTVFJJTkdf VE9LRU4NCj4gPiA+ID4gPiAoU1RSX0dFVF9IRUxQX0hUVFApOw0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ID4gKyAgRW50cnkgcG9pbnQgb2YgSHR0cCBzdGFuZGFs b25lIGFwcGxpY2F0aW9uLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtIElt YWdlSGFuZGxlICAgICAgICAgICAgVGhlIGltYWdlIGhhbmRsZSBvZiB0aGUgcHJvY2Vzcy4NCj4g PiA+ID4gPiA+ICsgIEBwYXJhbSBTeXN0ZW1UYWJsZSAgICAgICAgICAgIFRoZSBFRkkgU3lzdGVt IFRhYmxlIHBvaW50ZXIuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIEVG SV9TVUNDRVNTICAgICAgICAgICBIdHRwIGNvbW1hbmQgaXMgZXhlY3V0ZWQNCj4gPiA+ID4gPiA+ IHN1Y2Vzc2Z1bGx5Lg0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBFRklfQUJPUlRFRCAgICAgICAg ICAgSElJIHBhY2thZ2Ugd2FzIGZhaWxlZCB0bw0KPiA+ID4gPiA+ID4gaW5pdGlhbGl6ZS4NCj4g PiA+ID4gPiA+ICsgIEByZXR2YWwgb3RoZXJzICAgICAgICAgICAgICAgIE90aGVyIGVycm9ycyB3 aGVuIGV4ZWN1dGluZyBodHRwDQo+ID4gPiA+IGNvbW1hbmQuDQo+ID4gPiA+ID4gPiArKiovDQo+ ID4gPiA+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ID4g K0h0dHBBcHBJbml0aWFsaXplICgNCj4gPiA+ID4gPiA+ICsgIElOIEVGSV9IQU5ETEUgICAgICAg ICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPiA+ID4gPiA+ICsgIElOIEVGSV9TWVNURU1fVEFCTEUg ICAgICAgICAqU3lzdGVtVGFibGUNCj4gPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiA+ICt7DQo+ ID4gPiA+ID4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ID4g PiA+ID4gKyAgbUh0dHBIaWlIYW5kbGUgPSBJbml0aWFsaXplSGlpUGFja2FnZSAoSW1hZ2VIYW5k bGUpOw0KPiA+ID4gPiA+ID4gKyAgaWYgKG1IdHRwSGlpSGFuZGxlID09IE5VTEwpIHsNCj4gPiA+ ID4gPiA+ICsgICAgcmV0dXJuIEVGSV9BQk9SVEVEOw0KPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgU3RhdHVzID0gKEVGSV9TVEFUVVMpUnVuSHR0cCAoSW1h Z2VIYW5kbGUsIFN5c3RlbVRhYmxlKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEhp aVJlbW92ZVBhY2thZ2VzIChtSHR0cEhpaUhhbmRsZSk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+IGRpZmYg LS1naXQNCj4gPiA+ID4gPiBhL1NoZWxsUGtnL0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29t bWFuZC9IdHRwQXBwLmluZg0KPiA+ID4gPiA+ID4gYi9TaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9I dHRwRHluYW1pY0NvbW1hbmQvSHR0cEFwcC5pbmYNCj4gPiA+ID4gPiA+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+ID4gPiA+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLmQwOGQ0N2ZiMzdkNQ0KPiA+ ID4gPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiA+ID4gKysrDQo+ID4gPiBiL1NoZWxsUGtn L0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRwQXBwLmluZg0KPiA+ID4gPiA+ ID4gQEAgLTAsMCArMSw1OCBAQA0KPiA+ID4gPiA+ID4gKyMjICBAZmlsZQ0KPiA+ID4gPiA+ID4g KyMgUHJvdmlkZXMgU2hlbGwgJ2h0dHAnIHN0YW5kYWxvbmUgYXBwbGljYXRpb24uDQo+ID4gPiA+ ID4gPiArIw0KPiA+ID4gPiA+ID4gKyMgQ29weXJpZ2h0IChjKSAyMDEwIC0gMjAxOSwgSW50ZWwg Q29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiA+ID4gPiA+IHJlc2VydmVkLg0KPiA+ID4gPiA8 QlI+DQo+ID4gPiA+ID4gPiArIyBDb3B5cmlnaHQgKGMpIDIwMTUsIEFSTSBMdGQuIEFsbCByaWdo dHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gPiA+ID4gKyMgQ29weXJpZ2h0IChjKSAyMDIwLCBCcm9h ZGNvbS4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiA+ID4gPiArIw0KPiA+ID4gPiA+ ID4gKyMgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4g PiA+ID4gPiArIw0KPiA+ID4gPiA+ID4gKyMNCj4gPiA+ID4gPiA+ICsjIw0KPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gK1tEZWZpbmVzXQ0KPiA+ID4gPiA+ID4gKyAgSU5GX1ZFUlNJT04gICAg ICAgICAgICAgICAgICAgID0gMHgwMDAxMDAwNg0KPiA+ID4gPiA+ID4gKyAgQkFTRV9OQU1FICAg ICAgICAgICAgICAgICAgICAgID0gaHR0cA0KPiA+ID4gPiA+ID4gKyAgRklMRV9HVUlEICAgICAg ICAgICAgICAgICAgICAgID0NCj4gPiA+ID4gNTZCMDBGQjctOTFEMi04NjlCLUNFNUMtMjZDRDFB ODlDNzNDDQo+ID4gPiA+ID4gPiArICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAgPSBV RUZJX0FQUExJQ0FUSU9ODQo+ID4gPiA+ID4gPiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAg ICAgICAgPSAxLjANCj4gPiA+ID4gPiA+ICsgIEVOVFJZX1BPSU5UICAgICAgICAgICAgICAgICAg ICA9IEh0dHBBcHBJbml0aWFsaXplDQo+ID4gPiA+ID4gPiArIw0KPiA+ID4gPiA+ID4gKyMgIFRo aXMgZmxhZyBzcGVjaWZpZXMgd2hldGhlciBISUkgcmVzb3VyY2Ugc2VjdGlvbiBpcyBnZW5lcmF0 ZWQNCj4gPiA+ID4gPiA+IGludG8NCj4gPiA+ID4gUEUNCj4gPiA+ID4gPiBpbWFnZS4NCj4gPiA+ ID4gPiA+ICsjDQo+ID4gPiA+ID4gPiArICBVRUZJX0hJSV9SRVNPVVJDRV9TRUNUSU9OICAgICAg PSBUUlVFDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArW1NvdXJjZXMuY29tbW9uXQ0KPiA+ ID4gPiA+ID4gKyAgSHR0cC5jDQo+ID4gPiA+ID4gPiArICBIdHRwQXBwLmMNCj4gPiA+ID4gPiA+ ICsgIEh0dHAuaA0KPiA+ID4gPiA+ID4gKyAgSHR0cC51bmkNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiA+ICtbUGFja2FnZXNdDQo+ID4gPiA+ID4gPiArICBFbWJlZGRlZFBrZy9FbWJlZGRlZFBr Zy5kZWMNCj4gPiA+ID4gPiA+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4g PiA+ID4gPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+ID4gPiA+ID4gKyAgTmV0d29ya1BrZy9O ZXR3b3JrUGtnLmRlYw0KPiA+ID4gPiA+ID4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiA+ID4gPiA+ID4gKyAg QmFzZUxpYg0KPiA+ID4gPiA+ID4gKyAgQmFzZU1lbW9yeUxpYg0KPiA+ID4gPiA+ID4gKyAgRGVi dWdMaWINCj4gPiA+ID4gPiA+ICsgIEZpbGVIYW5kbGVMaWINCj4gPiA+ID4gPiA+ICsgIEhpaUxp Yg0KPiA+ID4gPiA+ID4gKyAgSHR0cExpYg0KPiA+ID4gPiA+ID4gKyAgTWVtb3J5QWxsb2NhdGlv bkxpYg0KPiA+ID4gPiA+ID4gKyAgTmV0TGliDQo+ID4gPiA+ID4gPiArICBTaGVsbExpYg0KPiA+ ID4gPiA+ID4gKyAgVWVmaUFwcGxpY2F0aW9uRW50cnlQb2ludA0KPiA+ID4gPiA+ID4gKyAgVWVm aUJvb3RTZXJ2aWNlc1RhYmxlTGliDQo+ID4gPiA+ID4gPiArICBVZWZpSGlpU2VydmljZXNMaWIN Cj4gPiA+ID4gPiA+ICsgIFVlZmlMaWINCj4gPiA+ID4gPiA+ICsgIFVlZmlSdW50aW1lU2Vydmlj ZXNUYWJsZUxpYg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK1tQcm90b2NvbHNdDQo+ID4g PiA+ID4gPiArICBnRWZpSGlpUGFja2FnZUxpc3RQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAg ICMjIENPTlNVTUVTDQo+ID4gPiA+ID4gPiArICBnRWZpSHR0cFByb3RvY29sR3VpZCAgICAgICAg ICAgICAgICAgICAgICAgICAjIyBDT05TVU1FUw0KPiA+ID4gPiA+ID4gKyAgZ0VmaUh0dHBTZXJ2 aWNlQmluZGluZ1Byb3RvY29sR3VpZCAgICAgICAgICAgIyMgQ09OU1VNRVMNCj4gPiA+ID4gPiA+ ICsgIGdFZmlNYW5hZ2VkTmV0d29ya1NlcnZpY2VCaW5kaW5nUHJvdG9jb2xHdWlkICAgIyMgQ09O U1VNRVMNCj4gPiA+ID4gPiA+IGRpZmYgLS1naXQNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4g PiA+DQo+ID4gYS9TaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0 cER5bmFtaWNDb21tYQ0KPiA+ID4gPiA+IG5kLg0KPiA+ID4gPiA+ID4gYw0KPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPg0KPiA+ID4NCj4gPiBiL1NoZWxsUGtnL0R5bmFtaWNDb21tYW5kL0h0dHBEeW5h bWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hDQo+ID4gPiA+ID4gbmQuDQo+ID4gPiA+ID4gPiBj DQo+ID4gPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiA+ID4gaW5kZXggMDAw MDAwMDAwMDAwLi5iYTY1NDc0OWEwNzUNCj4gPiA+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ ID4gPiA+ICsrKw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4NCj4gPiBiL1NoZWxsUGtn L0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hDQo+ID4g PiA+ID4gbmQuDQo+ID4gPiA+ID4gPiBjDQo+ID4gPiA+ID4gPiBAQCAtMCwwICsxLDEzNCBAQA0K PiA+ID4gPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4gPiA+ID4gKyAgUHJvZHVjZSAiaHR0cCIgc2hl bGwgZHluYW1pYyBjb21tYW5kLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQ29weXJp Z2h0IChjKSAyMDEwIC0gMjAxNywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiA+ ID4gPiA+IHJlc2VydmVkLg0KPiA+ID4gPiA8QlI+DQo+ID4gPiA+ID4gPiArICBDb3B5cmlnaHQg KGMpIDIwMTUsIEFSTSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gPiA+ID4g KyAgQ29weXJpZ2h0IChjKSAyMDIwLCBCcm9hZGNvbS4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+ DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog QlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ ID4gPiA+ID4gKyNpbmNsdWRlIDxQcm90b2NvbC9TaGVsbER5bmFtaWNDb21tYW5kLmg+DQo+ID4g PiA+ID4gPiArI2luY2x1ZGUgIkh0dHAuaCINCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsv KioNCj4gPiA+ID4gPiA+ICsgIFRoaXMgaXMgdGhlIHNoZWxsIGNvbW1hbmQgaGFuZGxlciBmdW5j dGlvbiBwb2ludGVyIGNhbGxiYWNrIHR5cGUuDQo+ID4gPiA+IFRoaXMNCj4gPiA+ID4gPiA+ICsg IGZ1bmN0aW9uIGhhbmRsZXMgdGhlIGNvbW1hbmQgd2hlbiBpdCBpcyBpbnZva2VkIGluIHRoZSBz aGVsbC4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gVGhpcyAgICAg ICAgICAgICAgIFRoZSBpbnN0YW5jZSBvZiB0aGUNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEVGSV9TSEVMTF9EWU5BTUlDX0NPTU1BTkRfUFJPVE9DT0wuDQo+ ID4gPiA+ID4gPiArICBAcGFyYW1baW5dIFN5c3RlbVRhYmxlICAgICAgICBUaGUgcG9pbnRlciB0 byB0aGUgc3lzdGVtIHRhYmxlLg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSBTaGVsbFBhcmFt ZXRlcnMgICAgVGhlIHBhcmFtZXRlcnMgYXNzb2NpYXRlZCB3aXRoIHRoZQ0KPiA+ID4gPiA+ID4g Y29tbWFuZC4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gU2hlbGwgICAgICAgICAgICAgIFRo ZSBpbnN0YW5jZSBvZiB0aGUgc2hlbGwgcHJvdG9jb2wNCj4gPiA+ID4gdXNlZCBpbg0KPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbnRleHQgb2YgcHJv Y2Vzc2luZyB0aGlzDQo+ID4gPiA+IGNvbW1hbmQuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiArICBAcmV0dXJuIEVGSV9TVUNDRVNTICAgICAgICAgICB0aGUgb3BlcmF0aW9uIHdhcyBzdWNl c3NmdWwNCj4gPiA+ID4gPiA+ICsgIEByZXR1cm4gb3RoZXIgICAgICAgICAgICAgICAgIHRoZSBv cGVyYXRpb24gZmFpbGVkLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gK1NIRUxMX1NU QVRVUw0KPiA+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ID4gK0h0dHBDb21tYW5kSGFuZGxl ciAoDQo+ID4gPiA+ID4gPiArICBJTiBFRklfU0hFTExfRFlOQU1JQ19DT01NQU5EX1BST1RPQ09M ICAgICpUaGlzLA0KPiA+ID4gPiA+ID4gKyAgSU4gRUZJX1NZU1RFTV9UQUJMRSAgICAgICAgICAg ICAgICAgICAgICAqU3lzdGVtVGFibGUsDQo+ID4gPiA+ID4gPiArICBJTiBFRklfU0hFTExfUEFS QU1FVEVSU19QUk9UT0NPTCAgICAgICAgICpTaGVsbFBhcmFtZXRlcnMsDQo+ID4gPiA+ID4gPiAr ICBJTiBFRklfU0hFTExfUFJPVE9DT0wgICAgICAgICAgICAgICAgICAgICpTaGVsbA0KPiA+ID4g PiA+ID4gKyAgKQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ICsgIGdFZmlTaGVsbFBhcmFt ZXRlcnNQcm90b2NvbCA9IFNoZWxsUGFyYW1ldGVyczsNCj4gPiA+ID4gPiA+ICsgIGdFZmlTaGVs bFByb3RvY29sICAgICAgICAgICA9IFNoZWxsOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g KyAgcmV0dXJuIFJ1bkh0dHAgKGdJbWFnZUhhbmRsZSwgU3lzdGVtVGFibGUpOw0KPiA+ID4gPiA+ ID4gK30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ICsgIFRo aXMgaXMgdGhlIGNvbW1hbmQgaGVscCBoYW5kbGVyIGZ1bmN0aW9uIHBvaW50ZXIgY2FsbGJhY2sg dHlwZS4NCj4gPiA+ID4gVGhpcw0KPiA+ID4gPiA+ID4gKyAgZnVuY3Rpb24gaXMgcmVzcG9uc2li bGUgZm9yIGRpc3BsYXlpbmcgaGVscCBpbmZvcm1hdGlvbiBmb3IgdGhlDQo+ID4gPiA+IGFzc29j aWF0ZWQNCj4gPiA+ID4gPiA+ICsgIGNvbW1hbmQuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiArICBAcGFyYW1baW5dIFRoaXMgICAgICAgIFRoZSBpbnN0YW5jZSBvZiB0aGUNCj4gPiA+ID4g PiA+IEVGSV9TSEVMTF9EWU5BTUlDX0NPTU1BTkRfUFJPVE9DT0wuDQo+ID4gPiA+ID4gPiArICBA cGFyYW1baW5dIExhbmd1YWdlICAgIFRoZSBwb2ludGVyIHRvIHRoZSBsYW5ndWFnZSBzdHJpbmcg dG8gdXNlLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHJldHVybiBzdHJpbmcgICAg ICAgICBQb29sIGFsbG9jYXRlZCBoZWxwIHN0cmluZywgbXVzdCBiZSBmcmVlZA0KPiA+ID4gPiA+ ID4gYnkNCj4gPiA+ID4gY2FsbGVyDQo+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gPiArQ0hB UjE2ICoNCj4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiA+ICtIdHRwQ29tbWFuZEdldEhl bHAgKA0KPiA+ID4gPiA+ID4gKyAgSU4gRUZJX1NIRUxMX0RZTkFNSUNfQ09NTUFORF9QUk9UT0NP TCAgICAqVGhpcywNCj4gPiA+ID4gPiA+ICsgIElOIENPTlNUIENIQVI4ICAgICAgICAgICAgICAg ICAgICAgICAgICAgKkxhbmd1YWdlDQo+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gPiArew0K PiA+ID4gPiA+ID4gKyAgcmV0dXJuIEhpaUdldFN0cmluZyhtSHR0cEhpaUhhbmRsZSwNCj4gPiA+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VUX0hFTFBf SFRUUCksDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIExhbmd1YWdlKTsNCj4g PiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArRUZJX1NIRUxMX0RZTkFN SUNfQ09NTUFORF9QUk9UT0NPTA0KPiA+ID4gbUh0dHBEeW5hbWljQ29tbWFuZA0KPiA+ID4gPiA+ ID0gew0KPiA+ID4gPiA+ID4gKyAgSFRUUF9BUFBfTkFNRSwNCj4gPiA+ID4gPiA+ICsgIEh0dHBD b21tYW5kSGFuZGxlciwNCj4gPiA+ID4gPiA+ICsgIEh0dHBDb21tYW5kR2V0SGVscA0KPiA+ID4g PiA+ID4gK307DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiAr ICBFbnRyeSBwb2ludCBvZiBIdHRwIER5bmFtaWMgQ29tbWFuZC4NCj4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ICsgIFByb2R1Y2UgdGhlIER5bmFtaWNDb21tYW5kIHByb3RvY29sIHRvIGhhbmRs ZSAiaHR0cCINCj4gPiBjb21tYW5kLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHBh cmFtIEltYWdlSGFuZGxlICAgICAgICAgICAgVGhlIGltYWdlIGhhbmRsZSBvZiB0aGUgcHJvY2Vz cy4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbSBTeXN0ZW1UYWJsZSAgICAgICAgICAgIFRoZSBFRkkg U3lzdGVtIFRhYmxlIHBvaW50ZXIuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcmV0 dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBIdHRwIGNvbW1hbmQgaXMgZXhlY3V0ZWQNCj4gPiA+ ID4gPiA+IHN1Y2Vzc2Z1bGx5Lg0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBFRklfQUJPUlRFRCAg ICAgICAgICAgSElJIHBhY2thZ2Ugd2FzIGZhaWxlZCB0bw0KPiA+ID4gPiA+ID4gaW5pdGlhbGl6 ZS4NCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgb3RoZXJzICAgICAgICAgICAgICAgIE90aGVyIGVy cm9ycyB3aGVuIGV4ZWN1dGluZyBodHRwDQo+ID4gPiA+IGNvbW1hbmQuDQo+ID4gPiA+ID4gPiAr KiovDQo+ID4gPiA+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4g PiA+ID4gK0h0dHBDb21tYW5kSW5pdGlhbGl6ZSAoDQo+ID4gPiA+ID4gPiArICBJTiBFRklfSEFO RExFICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4gPiA+ID4gPiArICBJTiBFRklfU1lT VEVNX1RBQkxFICAgICAgICAgKlN5c3RlbVRhYmxlDQo+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ ID4gPiArew0KPiA+ID4gPiA+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgIFN0YXR1 czsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIG1IdHRwSGlpSGFuZGxlID0gSW5pdGlh bGl6ZUhpaVBhY2thZ2UgKEltYWdlSGFuZGxlKTsNCj4gPiA+ID4gPiA+ICsgIGlmIChtSHR0cEhp aUhhbmRsZSA9PSBOVUxMKSB7DQo+ID4gPiA+ID4gPiArICAgIHJldHVybiBFRklfQUJPUlRFRDsN Cj4gPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIFN0YXR1cyA9 IGdCUy0+SW5zdGFsbFByb3RvY29sSW50ZXJmYWNlICgNCj4gPiA+ID4gPiA+ICsgICAgICAgICAg ICAgJkltYWdlSGFuZGxlLA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAmZ0VmaVNoZWxsRHlu YW1pY0NvbW1hbmRQcm90b2NvbEd1aWQsDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgIEVGSV9O QVRJVkVfSU5URVJGQUNFLA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAmbUh0dHBEeW5hbWlj Q29tbWFuZA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICApOw0KPiA+ID4gPiA+ID4gKyAgQVNT RVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPiA+ID4gPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ ID4gKyAgSHR0cCBkcml2ZXIgdW5sb2FkIGhhbmRsZXIuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArICBAcGFyYW0gSW1hZ2VIYW5kbGUgICAgICAgICAgICBUaGUgaW1hZ2UgaGFuZGxlIG9m IHRoZSBwcm9jZXNzLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICAgICAgICAgVGhlIGltYWdlIGlzIHVubG9hZGVkLg0KPiA+ID4gPiA+ID4gKyAg QHJldHZhbCBPdGhlcnMgICAgICAgICAgICAgICAgRmFpbGVkIHRvIHVubG9hZCB0aGUgaW1hZ2Uu DQo+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gPiA+ID4g K0VGSUFQSQ0KPiA+ID4gPiA+ID4gK0h0dHBVbmxvYWQgKA0KPiA+ID4gPiA+ID4gKyAgSU4gRUZJ X0hBTkRMRSAgICAgICAgICAgICAgIEltYWdlSGFuZGxlDQo+ID4gPiA+ID4gPiArKQ0KPiA+ID4g PiA+ID4gK3sNCj4gPiA+ID4gPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICBTdGF0 dXM7DQo+ID4gPiA+ID4gPiArICBTdGF0dXMgPSBnQlMtPlVuaW5zdGFsbFByb3RvY29sSW50ZXJm YWNlICgNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4gPiA+ID4g PiArICAgICAgICAgICAgICZnRWZpU2hlbGxEeW5hbWljQ29tbWFuZFByb3RvY29sR3VpZCwNCj4g PiA+ID4gPiA+ICsgICAgICAgICAgICAgJm1IdHRwRHluYW1pY0NvbW1hbmQNCj4gPiA+ID4gPiA+ ICsgICAgICAgICAgICAgKTsNCj4gPiA+ID4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykp IHsNCj4gPiA+ID4gPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ID4gPiA+ICsgIH0NCj4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEhpaVJlbW92ZVBhY2thZ2VzIChtSHR0cEhpaUhh bmRsZSk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7 DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gZGlmZiAtLWdpdA0KPiA+ID4gPiA+ID4NCj4g PiA+ID4gPg0KPiA+ID4NCj4gPiBhL1NoZWxsUGtnL0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWlj Q29tbWFuZC9IdHRwRHluYW1pY0NvbW1hDQo+ID4gPiA+ID4gbmQuDQo+ID4gPiA+ID4gPiBpbmYN Cj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+DQo+ID4gYi9TaGVsbFBrZy9EeW5hbWljQ29t bWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYQ0KPiA+ID4gPiA+IG5kLg0K PiA+ID4gPiA+ID4gaW5mDQo+ID4gPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4g PiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi41ZDQ2ZWUyMzg0ZDUNCj4gPiA+ID4gPiA+IC0tLSAv ZGV2L251bGwNCj4gPiA+ID4gPiA+ICsrKw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4N Cj4gPiBiL1NoZWxsUGtnL0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRwRHlu YW1pY0NvbW1hDQo+ID4gPiA+ID4gbmQuDQo+ID4gPiA+ID4gPiBpbmYNCj4gPiA+ID4gPiA+IEBA IC0wLDAgKzEsNjMgQEANCj4gPiA+ID4gPiA+ICsjIyAgQGZpbGUNCj4gPiA+ID4gPiA+ICsjIFBy b3ZpZGVzIFNoZWxsICdodHRwJyBkeW5hbWljIGNvbW1hbmQuDQo+ID4gPiA+ID4gPiArIw0KPiA+ ID4gPiA+ID4gKyMgQ29weXJpZ2h0IChjKSAyMDEwIC0gMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24u IEFsbCByaWdodHMNCj4gPiA+ID4gPiA+IHJlc2VydmVkLg0KPiA+ID4gPiA8QlI+DQo+ID4gPiA+ ID4gPiArIyBDb3B5cmlnaHQgKGMpIDIwMTUsIEFSTSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiA+ID4gPiA+ID4gKyMgQ29weXJpZ2h0IChjKSAyMDIwLCBCcm9hZGNvbS4gQWxsIHJp Z2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiA+ID4gPiArIw0KPiA+ID4gPiA+ID4gKyMgIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPiA+ID4gPiArIw0K PiA+ID4gPiA+ID4gKyMNCj4gPiA+ID4gPiA+ICsjIw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gK1tEZWZpbmVzXQ0KPiA+ID4gPiA+ID4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAg ICAgID0gMHgwMDAxMDAwNg0KPiA+ID4gPiA+ID4gKyAgQkFTRV9OQU1FICAgICAgICAgICAgICAg ICAgICAgID0gaHR0cER5bmFtaWNDb21tYW5kDQo+ID4gPiA+ID4gPiArICBGSUxFX0dVSUQgICAg ICAgICAgICAgICAgICAgICAgPQ0KPiA+ID4gPiAxOTYxOEJDRS01NUFFLTA5QzYtMzdFOS00Q0Uw NDA4NEM3QTENCj4gPiA+ID4gPiA+ICsgIE1PRFVMRV9UWVBFICAgICAgICAgICAgICAgICAgICA9 IERYRV9EUklWRVINCj4gPiA+ID4gPiA+ICsgIFZFUlNJT05fU1RSSU5HICAgICAgICAgICAgICAg ICA9IDEuMA0KPiA+ID4gPiA+ID4gKyAgRU5UUllfUE9JTlQgICAgICAgICAgICAgICAgICAgID0g SHR0cENvbW1hbmRJbml0aWFsaXplDQo+ID4gPiA+ID4gPiArICBVTkxPQURfSU1BR0UgICAgICAg ICAgICAgICAgICAgPSBIdHRwVW5sb2FkDQo+ID4gPiA+ID4gPiArIw0KPiA+ID4gPiA+ID4gKyMg IFRoaXMgZmxhZyBzcGVjaWZpZXMgd2hldGhlciBISUkgcmVzb3VyY2Ugc2VjdGlvbiBpcyBnZW5l cmF0ZWQNCj4gPiA+ID4gPiA+IGludG8NCj4gPiA+ID4gUEUNCj4gPiA+ID4gPiBpbWFnZS4NCj4g PiA+ID4gPiA+ICsjDQo+ID4gPiA+ID4gPiArICBVRUZJX0hJSV9SRVNPVVJDRV9TRUNUSU9OICAg ICAgPSBUUlVFDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArW1NvdXJjZXMuY29tbW9uXQ0K PiA+ID4gPiA+ID4gKyAgSHR0cC5jDQo+ID4gPiA+ID4gPiArICBIdHRwRHluYW1pY0NvbW1hbmQu Yw0KPiA+ID4gPiA+ID4gKyAgSHR0cC5oDQo+ID4gPiA+ID4gPiArICBIdHRwLnVuaQ0KPiA+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ID4gK1tQYWNrYWdlc10NCj4gPiA+ID4gPiA+ICsgIEVtYmVkZGVk UGtnL0VtYmVkZGVkUGtnLmRlYw0KPiA+ID4gPiA+ID4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4g PiA+ID4gPiA+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4gPiA+ID4gPiAr ICBOZXR3b3JrUGtnL05ldHdvcmtQa2cuZGVjDQo+ID4gPiA+ID4gPiArICBTaGVsbFBrZy9TaGVs bFBrZy5kZWMNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtbTGlicmFyeUNsYXNzZXNdDQo+ ID4gPiA+ID4gPiArICBCYXNlTGliDQo+ID4gPiA+ID4gPiArICBCYXNlTWVtb3J5TGliDQo+ID4g PiA+ID4gPiArICBEZWJ1Z0xpYg0KPiA+ID4gPiA+ID4gKyAgRmlsZUhhbmRsZUxpYg0KPiA+ID4g PiA+ID4gKyAgSGlpTGliDQo+ID4gPiA+ID4gPiArICBIdHRwTGliDQo+ID4gPiA+ID4gPiArICBN ZW1vcnlBbGxvY2F0aW9uTGliDQo+ID4gPiA+ID4gPiArICBOZXRMaWINCj4gPiA+ID4gPiA+ICsg IFNoZWxsTGliDQo+ID4gPiA+ID4gPiArICBVZWZpQm9vdFNlcnZpY2VzVGFibGVMaWINCj4gPiA+ ID4gPiA+ICsgIFVlZmlEcml2ZXJFbnRyeVBvaW50DQo+ID4gPiA+ID4gPiArICBVZWZpSGlpU2Vy dmljZXNMaWINCj4gPiA+ID4gPiA+ICsgIFVlZmlMaWINCj4gPiA+ID4gPiA+ICsgIFVlZmlSdW50 aW1lU2VydmljZXNUYWJsZUxpYg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK1tQcm90b2Nv bHNdDQo+ID4gPiA+ID4gPiArICBnRWZpSGlpUGFja2FnZUxpc3RQcm90b2NvbEd1aWQgICAgICAg ICAgICAgICAgICMjIENPTlNVTUVTDQo+ID4gPiA+ID4gPiArICBnRWZpSHR0cFByb3RvY29sR3Vp ZCAgICAgICAgICAgICAgICAgICAgICAgICAjIyBDT05TVU1FUw0KPiA+ID4gPiA+ID4gKyAgZ0Vm aUh0dHBTZXJ2aWNlQmluZGluZ1Byb3RvY29sR3VpZCAgICAgICAgICAgIyMgQ09OU1VNRVMNCj4g PiA+ID4gPiA+ICsgIGdFZmlNYW5hZ2VkTmV0d29ya1NlcnZpY2VCaW5kaW5nUHJvdG9jb2xHdWlk ICAgIyMgQ09OU1VNRVMNCj4gPiA+ID4gPiA+ICsgIGdFZmlTaGVsbER5bmFtaWNDb21tYW5kUHJv dG9jb2xHdWlkICAgICAgICAgICAgIyMgUFJPRFVDRVMNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ICtbREVQRVhdDQo+ID4gPiA+ID4gPiArICBUUlVFDQo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0 IGEvU2hlbGxQa2cvSW5jbHVkZS9HdWlkL1NoZWxsTGliSGlpR3VpZC5oDQo+ID4gPiA+ID4gPiBi L1NoZWxsUGtnL0luY2x1ZGUvR3VpZC9TaGVsbExpYkhpaUd1aWQuaA0KPiA+ID4gPiA+ID4gaW5k ZXggNWRhOTEyODMzM2E0Li5kNWYyY2VhYzA3YTkgMTAwNjQ0DQo+ID4gPiA+ID4gPiAtLS0gYS9T aGVsbFBrZy9JbmNsdWRlL0d1aWQvU2hlbGxMaWJIaWlHdWlkLmgNCj4gPiA+ID4gPiA+ICsrKyBi L1NoZWxsUGtnL0luY2x1ZGUvR3VpZC9TaGVsbExpYkhpaUd1aWQuaA0KPiA+ID4gPiA+ID4gQEAg LTU4LDcgKzU4LDExIEBADQo+ID4gPiA+ID4gPiAgICB7IFwNCj4gPiA+ID4gPiA+ICAgICAgMHg3 MzhhOTMxNCwgMHg4MmMxLCAweDQ1OTIsIHsgMHg4ZiwgMHhmNywgMHhjMSwgMHhiZCwgMHhmMSwN Cj4gPiA+ID4gPiA+IDB4YjIsDQo+ID4gPiA+IDB4MGUsDQo+ID4gPiA+ID4gMHhkNA0KPiA+ID4g PiA+ID4gfSBcDQo+ID4gPiA+ID4gPiAgICB9DQo+ID4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiArI2RlZmluZSBTSEVMTF9IVFRQX0hJSV9HVUlEIFwNCj4gPiA+ID4gPiA+ ICsgIHsgXA0KPiA+ID4gPiA+ID4gKyAgICAweDM5MGY4NGIzLCAweDIyMWMsIDB4NGQ5ZSwgeyAw eGI1LCAweDA2LCAweDZkLCAweGI5LCAweDQyLA0KPiA+ID4gPiA+ID4gMHgzZSwNCj4gPiA+ID4g MHgwYSwNCj4gPiA+ID4gPiA+IDB4N2UgfSBcDQo+ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4gICNkZWZpbmUgU0hFTExfQkNGR19ISUlfR1VJRCBcDQo+ID4gPiA+ID4g PiAgICB7IFwNCj4gPiA+ID4gPiA+IEBAIC03NSw2ICs3OSw3IEBAIGV4dGVybiBFRklfR1VJRCBn U2hlbGxMZXZlbDNIaWlHdWlkOw0KPiA+ID4gPiA+ID4gIGV4dGVybiBFRklfR1VJRCBnU2hlbGxO ZXR3b3JrMUhpaUd1aWQ7DQo+ID4gPiA+ID4gPiAgZXh0ZXJuIEVGSV9HVUlEIGdTaGVsbE5ldHdv cmsySGlpR3VpZDsNCj4gPiA+ID4gPiA+ICBleHRlcm4gRUZJX0dVSUQgZ1NoZWxsVGZ0cEhpaUd1 aWQ7DQo+ID4gPiA+ID4gPiArZXh0ZXJuIEVGSV9HVUlEIGdTaGVsbEh0dHBIaWlHdWlkOw0KPiA+ ID4gPiA+ID4gIGV4dGVybiBFRklfR1VJRCBnU2hlbGxCY2ZnSGlpR3VpZDsNCj4gPiA+ID4gPiA+ DQo+ID4gPiA+ID4gPiAgI2VuZGlmDQo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cv U2hlbGxQa2cuZGVjIGIvU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4gPiA+ID4gPiBpbmRleCBj MTdlMzU4ZDE1ZWQuLmY4MGEyOTYyZGZkMSAxMDA2NDQNCj4gPiA+ID4gPiA+IC0tLSBhL1NoZWxs UGtnL1NoZWxsUGtnLmRlYw0KPiA+ID4gPiA+ID4gKysrIGIvU2hlbGxQa2cvU2hlbGxQa2cuZGVj DQo+ID4gPiA+ID4gPiBAQCAtNTAsNiArNTAsNyBAQCBbR3VpZHNdDQo+ID4gPiA+ID4gPiAgICBn U2hlbGxOZXR3b3JrMUhpaUd1aWQgICAgICAgICAgID0gezB4ZjNkMzAxYmIsIDB4ZjRhNSwgMHg0 NWE4LA0KPiA+ID4gPiB7MHhiMCwgMHhiNywNCj4gPiA+ID4gPiA+IDB4ZmEsIDB4OTksIDB4OWMs IDB4NjIsIDB4MzcsIDB4YWV9fQ0KPiA+ID4gPiA+ID4gICAgZ1NoZWxsTmV0d29yazJIaWlHdWlk ICAgICAgICAgICA9IHsweDE3NGIyYjUsIDB4ZjUwNSwgMHg0YjEyLA0KPiA+ID4gPiB7MHhhYSwg MHg2MCwNCj4gPiA+ID4gPiA+IDB4NTksIDB4ZGYsIDB4ZjgsIDB4ZDYsIDB4ZWEsIDB4Mzd9fQ0K PiA+ID4gPiA+ID4gICAgZ1NoZWxsVGZ0cEhpaUd1aWQgICAgICAgICAgICAgICA9IHsweDczOGE5 MzE0LCAweDgyYzEsIDB4NDU5MiwNCj4gPiA+ID4gezB4OGYsIDB4ZjcsIDB4YzEsDQo+ID4gPiA+ ID4gPiAweGJkLCAweGYxLCAweGIyLCAweDBlLCAweGQ0fX0NCj4gPiA+ID4gPiA+ICsgIGdTaGVs bEh0dHBIaWlHdWlkICAgICAgICAgICAgICAgPSB7MHgzOTBmODRiMywgMHgyMjFjLCAweDRkOWUs DQo+ID4gPiA+IHsweGI1LCAweDA2LA0KPiA+ID4gPiA+IDB4NmQsDQo+ID4gPiA+ID4gPiAweGI5 LCAweDQyLCAweDNlLCAweDBhLCAweDdlfX0NCj4gPiA+ID4gPiA+ICAgIGdTaGVsbEJjZmdIaWlH dWlkICAgICAgICAgICAgICAgPSB7MHg1ZjVmNjA1ZCwgMHgxNTgzLCAweDRhMmQsDQo+ID4gPiA+ IHsweGE2LCAweGIyLCAweGViLA0KPiA+ID4gPiA+ID4gMHgxMiwgMHhkYSwgMHhiNCwgMHhhMiwg MHhiNn19DQo+ID4gPiA+ID4gPiAgICBnU2hlbGxBY3BpVmlld0hpaUd1aWQgICAgICAgICAgID0g ezB4ZGE4Y2NkZjQsIDB4ZWQ4ZiwgMHg0ZmZjLA0KPiA+ID4gPiB7MHhiNSwgMHhlZiwNCj4gPiA+ ID4gPiAweDJlLA0KPiA+ID4gPiA+ID4gMHhmNSwgMHg1ZSwgMHgyNCwgMHg5MywgMHgyYX19DQo+ ID4gPiA+ID4gPiAgICAjIEZJTEVfR1VJRCBhcyBkZWZpbmVkIGluIFNoZWxsUGtnL0FwcGxpY2F0 aW9uL1NoZWxsL1NoZWxsLmluZg0KPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL1No ZWxsUGtnLmRzYyBiL1NoZWxsUGtnL1NoZWxsUGtnLmRzYw0KPiA+ID4gPiA+ID4gaW5kZXggOTE0 OTM0MDBjYWI3Li5hZWUwMDI0NTE4NWQgMTAwNjQ0DQo+ID4gPiA+ID4gPiAtLS0gYS9TaGVsbFBr Zy9TaGVsbFBrZy5kc2MNCj4gPiA+ID4gPiA+ICsrKyBiL1NoZWxsUGtnL1NoZWxsUGtnLmRzYw0K PiA+ID4gPiA+ID4gQEAgLTEzNyw2ICsxMzcsMTEgQEAgW0NvbXBvbmVudHNdDQo+ID4gPiA+ID4g PiAgICAgICAgZ0VmaVNoZWxsUGtnVG9rZW5TcGFjZUd1aWQuUGNkU2hlbGxMaWJBdXRvSW5pdGlh bGl6ZXxGQUxTRQ0KPiA+ID4gPiA+ID4gICAgfQ0KPiA+ID4gPiA+ID4gICAgU2hlbGxQa2cvRHlu YW1pY0NvbW1hbmQvVGZ0cER5bmFtaWNDb21tYW5kL1RmdHBBcHAuaW5mDQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPg0KPiA+IFNoZWxsUGtnL0R5bmFtaWNDb21t YW5kL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQNCj4gPiA+ID4gPiAuaW4N Cj4gPiA+ID4gPiA+IGYgew0KPiA+ID4gPiA+ID4gKyAgICA8UGNkc0ZpeGVkQXRCdWlsZD4NCj4g PiA+ID4gPiA+ICsgICAgICBnRWZpU2hlbGxQa2dUb2tlblNwYWNlR3VpZC5QY2RTaGVsbExpYkF1 dG9Jbml0aWFsaXplfEZBTFNFDQo+ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiArICBTaGVs bFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cEFwcC5pbmYNCj4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+DQo+ID4gU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvRHBE eW5hbWljQ29tbWFuZC9EcER5bmFtaWNDb21tYW5kLmluZg0KPiA+ID4gPiA+ID4gew0KPiA+ID4g PiA+ID4gICAgICA8UGNkc0ZpeGVkQXRCdWlsZD4NCj4gPiA+ID4gPiA+ICAgICAgICBnRWZpU2hl bGxQa2dUb2tlblNwYWNlR3VpZC5QY2RTaGVsbExpYkF1dG9Jbml0aWFsaXplfEZBTFNFDQo+ID4g PiA+ID4gPiAtLQ0KPiA+ID4gPiA+ID4gMi4xNy4xDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+DQo+IA0KPiANCg0K