From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mx.groups.io with SMTP id smtpd.web11.91.1594314379044990241 for ; Thu, 09 Jul 2020 10:06:19 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=CdzT7rnC; spf=pass (domain: intel.com, ip: 134.134.136.20, mailfrom: michael.d.kinney@intel.com) IronPort-SDR: Phd3OtCMBrvcTmNdDVGVSoD3it5RfMjbUmgtCQolkDifsn9OriqDo5LCOCw5ZmpgRV+qNR1Y62 PM7uzG9EcK+g== X-IronPort-AV: E=McAfee;i="6000,8403,9677"; a="136265945" X-IronPort-AV: E=Sophos;i="5.75,332,1589266800"; d="scan'208";a="136265945" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jul 2020 10:05:29 -0700 IronPort-SDR: w7TXJQrd8rP/M8PLFH6RfHfRd3jwi2JswJFjaeMpQXHJOzDXCZEiB5x2G/LJV7+Oazla4z+Lxv dO65l0cuSkBQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,332,1589266800"; d="scan'208";a="483874431" Received: from orsmsx105.amr.corp.intel.com ([10.22.225.132]) by fmsmga006.fm.intel.com with ESMTP; 09 Jul 2020 10:05:28 -0700 Received: from ORSEDG001.ED.cps.intel.com (10.7.248.4) by ORSMSX105.amr.corp.intel.com (10.22.225.132) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 9 Jul 2020 10:05:28 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.40) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 9 Jul 2020 10:05:28 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=awN/qj/uf+qc9gZCOv0rTIhP/g25jzbSuG8fCX2GxldwKtfQH3vgR8BkV7smb/SAqv8xGxHUMMk5Veq45QPbJPBQ1K1K8Myxu1x6QkozkRbBFrmCP/37WC1JBhANTXj1NXoZJSepX+Apayw4DsvX619FNH2sJ/KUyudQ6Emk4PfByOi2gP3oR2b2374Bl07JVE4bk7Zaew51t6QslO/7pg29rDd8UiJ+d/lMM5OI/B2f8AROldpo27u+QJojjME55wjaIg0MuRrTQUchaJKjsBwLflmq/yObRL5lod18vdfFcKYsHygTTZuGX3EpJfNf10pLORj4TLaClVD2gfpB5A== 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=SlkzfMjQ7X5vQb3mL7kV6RYKbR9H45htKvGf24zkt/0=; b=NMjddi+ZVEIkPEMiKqAonikYRxuQnNpsS6zadjBoTLjxtpewXLWo1zJTDfG9EMwotj4IASo/9tH6HKJGPMJztUqUamEnAX9zMP4AvuPyne6yu4qj5Cw9f5XA8juJnthuNCxdP0xFD1Oc59UWj2np/x+D733w0Rp0k7iqM5OmtNaGP5HzwKFCmN8oAUTmdKCy1uPD/BDv3Z6Lq/6B8NqOn7wNrDlnMU7x58/wmGT+M88x7WH2XGTNqQAHZvJ+ygop5sTstR3+aweMCwLaH1b46HhHbzVBPTC4Czt6ORwNf44dtIrX9BnJtsXCmm202BlSY2/J+I99UmPEx9OyPQiPYw== 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=SlkzfMjQ7X5vQb3mL7kV6RYKbR9H45htKvGf24zkt/0=; b=CdzT7rnCzeuyQXdRRaoYaXwwWeyuzSzGL2QGs5ZGqHcKB6K5akIxGsiRO4Q9sATp8Mzl4q/lWXJXq2r260nxJt7RwpLeuUKmJ+sjgJugSMEjjIS2oOBE9ALzGqvW9475uPkw/G9uPIIyKyhk4xrUtQmNRdpKwXceD/3MfJmBy9Q= Received: from MN2PR11MB4461.namprd11.prod.outlook.com (2603:10b6:208:192::29) by MN2PR11MB4599.namprd11.prod.outlook.com (2603:10b6:208:26d::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3153.27; Thu, 9 Jul 2020 17:05:26 +0000 Received: from MN2PR11MB4461.namprd11.prod.outlook.com ([fe80::10bc:1a4e:4745:ffc1]) by MN2PR11MB4461.namprd11.prod.outlook.com ([fe80::10bc:1a4e:4745:ffc1%3]) with mapi id 15.20.3174.021; Thu, 9 Jul 2020 17:05:25 +0000 From: "Michael D Kinney" To: "Gao, Liming" , "devel@edk2.groups.io" , "Kinney, Michael D" CC: Sean Brogan , Bret Barkelew , "Yao, Jiewen" Subject: Re: [Patch v2 05/16] MdePkg/Library/BaseLib: Add BaseLib instance for host based unit tests Thread-Topic: [Patch v2 05/16] MdePkg/Library/BaseLib: Add BaseLib instance for host based unit tests Thread-Index: AQHWVfseXdPo4TIt1EW+QNnORU5wfaj/eR2Q Date: Thu, 9 Jul 2020 17:05:25 +0000 Message-ID: References: <20200709040521.3748-1-michael.d.kinney@intel.com> <20200709040521.3748-6-michael.d.kinney@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.2.0.6 authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [134.134.136.204] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 5b18ecca-f8cd-4d80-75b5-08d8242a464a x-ms-traffictypediagnostic: MN2PR11MB4599: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-forefront-prvs: 04599F3534 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: m9FzgnJa3oI1WO7xIGhQEe1Dow2a0nZUMidP3VU123ijOkrLmh7Vu6ibgGac3UOBnvY39j/BKCHwls5m527xu2eDmlHsu2RB6XhpSoWZQx1v6dvxfKdlsBeTGXQs+QujJQTv963RgRcoOSd5f7KLlMqQ9lP5s/yadktM3jQo2X6tf6tIlF2nq+/YtbCxIyR9G/SHZKYaTTuMcFLV6d/jVH34eOUaTt404QHehWHtAyp2C9Xwhnwej2fwemdPPx8wm6LcmWsCIQhVVfMhUDrD200vygQJXeuvrE7XcnDlNKJW8CZbll4aUP36TXQWug9+CqR+maUOphUTB7wr/FoTh0AxgaULb15yHweD01ycxmpdEn/8rqGbC7OEMuIooW3JPs0zPae7VON7g9XngW1X1/fTCyCUUE9i/PwN9npnjOAe8/cy+mYw9UwAySi2CRvI x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR11MB4461.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(366004)(39860400002)(376002)(136003)(396003)(346002)(8936002)(107886003)(8676002)(7696005)(966005)(2906002)(71200400001)(5660300002)(83380400001)(66556008)(52536014)(316002)(4326008)(54906003)(76116006)(186003)(64756008)(6506007)(66446008)(26005)(110136005)(66946007)(86362001)(66476007)(30864003)(19627235002)(53546011)(55016002)(33656002)(9686003)(478600001)(559001)(569008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: +/Re/0J0/8SSXgBQh+w2Xm7ZUkjr1FCgAXCPYGsY0dYoSHAvXRfr9QOnQ3xJQ+Yel812RHjwbs0ylCzV2BGfyF3rrn5MZEGyUbfLPHCXpi7OUAT5g/OVRIro1b3JN6lIp/EnfBNCvylNUJTk5r9F9Iu2M2CJJtePC/UlzsCNiOJDpUxXZxKgtXDNY+fLiDkFO4c8XhP5UHSs75/BBm77ExfaSPGr7taC3/z4MgZTvLx4WkWLxb4FdRAESWFOnNfWHN/q5c+WHK5Nbfh7bSabc7JWglTbCWsGw+bWQ9fBMyjPfLo1Uvb2MgQoQ57cS1SYhtRBuVFN/u7TmFEsK/q5tQfP6rcfkuSEeMM2gLPRniUHocUuQA0AiqQrcEr5HJ916+tdiAdXj8tqlIaDyrDDSoW2xJdv4Xcv3fqDalIOTOlNQDJZAZcu9Zw0vpDPhVertJPkqQO+qPqRFwPJmD4BQGS4ZkAzmjc4htTP1G9/UYt8DJEjpa+akHO6FfXlgman MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR11MB4461.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5b18ecca-f8cd-4d80-75b5-08d8242a464a X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Jul 2020 17:05:25.7437 (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: iswwAQvG+IR2wTx1uwf2/e13bW5l80W28C7IbQujXXDdwvUMc2nbbhjd9eJweL38wc8kiGIdOdXJtbHhSKmXMPL44/V8Faq8ik+A7/cYmYo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4599 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTGltaW5nLA0KDQpJIG1hZGUgdGhlIExJQlJBUllfQ0xBU1MgQmFzZUxpYiBvbiBwdXJwb3Nl Lg0KDQogIExJQlJBUllfQ0xBU1MgICAgICAgICAgICAgICAgICA9IEJhc2VMaWJ8SE9TVF9BUFBM SUNBVElPTg0KDQpXaGVuIGJ1aWxkaW5nIGEgaG9zdCBiYXNlZCB0ZXN0IGZvciBjb2RlIHVuZGVy IHRlc3QsDQp0aGF0IGNvZGUgdW5kZXIgdGVzdCBtYXkgaGF2ZSBhIGRlcGVuZGVuY3kgb24gdGhl DQpCYXNlTGliIGNsYXNzIGFuZCB0aGF0IG1lYW5zIHdlIG5lZWQgYSBCYXNlTGliIGluc3RhbmNl DQp0byBiZSByZXNvbHZlZC4gIE5vdGljZSB0aGF0IHRoaXMgbmV3IGluc3RhbmNlIG9mIHRoZQ0K QmFzZUxpYiBjbGFzcyBpcyBkZWNsYXJlZCB0byBvbmx5IGJlIGNvbXBhdGlibGUgd2l0aA0KbW9k dWxlcyBvZiB0eXBlIEhPU1RfQVBQTElDQVRJT04sIHNvIGl0IGNhbiBub3QgYmUgDQphY2NpZGVu dGx5IHVzZWQgd2l0aCBhIEZXIG1vZHVsZS4NCg0KQmVzdCByZWdhcmRzLA0KDQpNaWtlDQoNCj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogR2FvLCBMaW1pbmcgPGxpbWluZy5n YW9AaW50ZWwuY29tPg0KPiBTZW50OiBUaHVyc2RheSwgSnVseSA5LCAyMDIwIDc6MTMgQU0NCj4g VG86IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47DQo+IGRl dmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBTZWFuIEJyb2dhbiA8c2Vhbi5icm9nYW5AbWljcm9z b2Z0LmNvbT47IEJyZXQNCj4gQmFya2VsZXcgPEJyZXQuQmFya2VsZXdAbWljcm9zb2Z0LmNvbT47 IFlhbywgSmlld2VuDQo+IDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtQ YXRjaCB2MiAwNS8xNl0gTWRlUGtnL0xpYnJhcnkvQmFzZUxpYjoNCj4gQWRkIEJhc2VMaWIgaW5z dGFuY2UgZm9yIGhvc3QgYmFzZWQgdW5pdCB0ZXN0cw0KPiANCj4gTWlrZToNCj4gICBOZXcgbGli cmFyeSBpbnN0YW5jZSBsaWJyYXJ5IGNsYXNzIHNob3VsZCBiZQ0KPiBVbml0VGVzdEhvc3RCYXNl TGliIGluc3RlYWQgb2YgQmFzZUxpYi4NCj4gDQo+IFRoYW5rcw0KPiBMaW1pbmcNCj4gPiAtLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IEtpbm5leSwgTWljaGFlbCBEIDxtaWNo YWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiBTZW50OiBUaHVyc2RheSwgSnVseSA5LCAyMDIw IDEyOjA1IFBNDQo+ID4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gQ2M6IEdhbywgTGlt aW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT47IFNlYW4gQnJvZ2FuDQo+IDxzZWFuLmJyb2dhbkBt aWNyb3NvZnQuY29tPjsgQnJldCBCYXJrZWxldw0KPiA8QnJldC5CYXJrZWxld0BtaWNyb3NvZnQu Y29tPjsNCj4gPiBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+DQo+ID4gU3ViamVj dDogW1BhdGNoIHYyIDA1LzE2XSBNZGVQa2cvTGlicmFyeS9CYXNlTGliOiBBZGQNCj4gQmFzZUxp YiBpbnN0YW5jZSBmb3IgaG9zdCBiYXNlZCB1bml0IHRlc3RzDQo+ID4NCj4gPiBSRUY6DQo+IGh0 dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgwMA0KPiA+DQo+ ID4gQWRkIGEgbmV3IHZlcnNpb24gb2YgQmFzZUxpYiB0aGF0IGlzIHNhZmUgZm9yIHVzZSBmcm9t DQo+IGhvc3QgYmFzZWQNCj4gPiB1bml0IHRlc3QgYXBwbGljYXRpb25zLiAgSG9zdCBiYXNlZCB1 bml0IHRlc3QNCj4gYXBwbGljYXRpb25zIG1heSBuZWVkDQo+ID4gdG8gcHJvdmlkZSBpbXBsZW1l bnRhdGlvbnMgb2Ygc29tZSBCYXNlTGliIGZ1bmN0aW9ucw0KPiB0aGF0IHByb3ZpZGUNCj4gPiBz aW1wbGUgZW11bGF0aW9uIHRvIGV4ZXJjaXNlIHRoZSBjb2RlIHVuZGVyIHRlc3QuICBUaGUNCj4g c3RydWN0dXJlDQo+ID4gVU5JVF9URVNUX0hPU1RfQkFTRV9MSUIgaXMgZmlsbGVkIGluIHdpdGgg c2VydmljZXMNCj4gdGhhdCBwcm92aWRlDQo+ID4gZGVmYXVsdCBlbXVsYXRpb24gZm9yIEJhc2VM aWIgQVBJcyB0aGF0IHdvdWxkIG5vcm1hbGx5DQo+IGdlbmVyYXRlDQo+ID4gZXhjZXB0aW9ucyBp biBhIGhvc3QgYmFzZWQgdW5pdCB0ZXN0IGFwcGxpY2F0aW9uLg0KPiBUaGlzIHN0cnVjdHVyZQ0K PiA+IGFsbG93cyBhbiBpbmRpdmlkdWFsIHVuaXQgdGVzdCB0byByZXBsYWNlIHRoZSBkZWZhdWx0 DQo+IGVtdWxhdGlvbiBvZg0KPiA+IGEgQmFzZUxpYiBzZXJ2aWNlIHdpdGggYW4gYWx0ZXJuYXRl IHZlcnNpb24gdGhhdCBpcw0KPiByZXF1aXJlZCBieSBhDQo+ID4gc3BlY2lmaWMgdW5pdCB0ZXN0 Lg0KPiA+DQo+ID4gTm9ybWFsbHkgY21vY2thIHdvdWxkIGJlIHVzZWQgdG8gbW9jayBzZXJ2aWNl cyB0aGUNCj4gY29kZSB1bmRlcg0KPiA+IHRlc3QgY2FsbHMuICBIb3dldmVyLCB0aGUgQmFzZUxp YiBpcyB1c2VkIGJ5IHRoZSBVbml0DQo+IFRlc3QNCj4gPiBGcmFtZXdvcmsgaXRzZWxmLCBzbyB1 c2luZyBhIG1vY2tlZCBpbnRlcmZhY2UgaXMgbm90DQo+IHBvc3NpYmxlLg0KPiA+IFRoZSB1c2Ug b2YgYSBzdHJ1Y3R1cmUgdG8gcHJvdmlkZSBob29rcyBmb3IgdW5pdCB0ZXN0DQo+IGlzIG5vdA0K PiA+IGV4cGVjdGVkIHRvIGJlIGEgY29tbW9uIGZlYXR1cmUuICBJdCBzaG91bGQgb25seSBiZQ0K PiByZXF1aXJlZA0KPiA+IGZvciBsaWJyYXJpZXMgdGhhdCBhcmUgdXNlZCBieSBib3RoIHRoZSBV bml0IFRlc3QNCj4gRnJhbWV3b3JrIGFuZA0KPiA+IHRoZSBjb2RlIHVuZGVyIHRlc3Qgd2hlcmUg dGhlIGNvZGUgdW5kZXIgdGVzdCByZXF1aXJlcw0KPiBhDQo+ID4gZGlmZmVyZW50IGJlaGF2aW9y IHRoYW4gdGhlIFVuaXQgVGVzdCBGcmFtZXdvcmsuDQo+ID4NCj4gPiBDYzogTGltaW5nIEdhbyA8 bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+ID4gQ2M6IFNlYW4gQnJvZ2FuIDxzZWFuLmJyb2dhbkBt aWNyb3NvZnQuY29tPg0KPiA+IENjOiBCcmV0IEJhcmtlbGV3IDxCcmV0LkJhcmtlbGV3QG1pY3Jv c29mdC5jb20+DQo+ID4gQ2M6IEppZXdlbiBZYW8gPGppZXdlbi55YW9AaW50ZWwuY29tPg0KPiA+ IFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgRCBLaW5uZXkNCj4gPG1pY2hhZWwuZC5raW5uZXlAaW50 ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICBNZGVQa2cvTGlicmFyeS9CYXNlTGliL1VuaXRUZXN0SG9z dC5jICAgICAgICAgfCAgMTQwDQo+ICsNCj4gPiAgTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9Vbml0 VGVzdEhvc3QuaCAgICAgICAgIHwgICA2Ng0KPiArDQo+ID4gIC4uLi9MaWJyYXJ5L0Jhc2VMaWIv VW5pdFRlc3RIb3N0QmFzZUxpYi5pbmYgICB8ICAyMTYNCj4gKysNCj4gPiAgLi4uL0xpYnJhcnkv QmFzZUxpYi9Vbml0VGVzdEhvc3RCYXNlTGliLnVuaSAgIHwgICAxMQ0KPiArDQo+ID4gIE1kZVBr Zy9MaWJyYXJ5L0Jhc2VMaWIvWDg2VW5pdFRlc3RIb3N0LmMgICAgICB8IDI5NzcNCj4gKysrKysr KysrKysrKysrKysNCj4gPiAgTWRlUGtnL01kZVBrZy5kZWMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgMw0KPiArLQ0KPiA+ICBNZGVQa2cvVGVzdC9NZGVQa2dIb3N0VGVzdC5kc2Mg ICAgICAgICAgICAgICAgfCAgICA1DQo+ICsNCj4gPiAgLi4uL0luY2x1ZGUvSG9zdFRlc3QvVW5p dFRlc3RIb3N0QmFzZUxpYi5oICAgIHwgIDU4Mg0KPiArKysrDQo+ID4gIDggZmlsZXMgY2hhbmdl ZCwgMzk5OSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQo+ID4gIGNyZWF0ZSBtb2RlIDEw MDY0NA0KPiBNZGVQa2cvTGlicmFyeS9CYXNlTGliL1VuaXRUZXN0SG9zdC5jDQo+ID4gIGNyZWF0 ZSBtb2RlIDEwMDY0NA0KPiBNZGVQa2cvTGlicmFyeS9CYXNlTGliL1VuaXRUZXN0SG9zdC5oDQo+ ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBNZGVQa2cvTGlicmFyeS9CYXNlTGliL1VuaXRUZXN0 SG9zdEJhc2VMaWIuaW5mDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBNZGVQa2cvTGlicmFy eS9CYXNlTGliL1VuaXRUZXN0SG9zdEJhc2VMaWIudW5pDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0 NA0KPiBNZGVQa2cvTGlicmFyeS9CYXNlTGliL1g4NlVuaXRUZXN0SG9zdC5jDQo+ID4gIGNyZWF0 ZSBtb2RlIDEwMDY0NA0KPiBNZGVQa2cvVGVzdC9Vbml0VGVzdC9JbmNsdWRlL0hvc3RUZXN0L1Vu aXRUZXN0SG9zdEJhc2VMaQ0KPiBiLmgNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGli cmFyeS9CYXNlTGliL1VuaXRUZXN0SG9zdC5jDQo+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9V bml0VGVzdEhvc3QuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAw MDAwMC4uNzllZWM3Y2FjYQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9NZGVQa2cvTGli cmFyeS9CYXNlTGliL1VuaXRUZXN0SG9zdC5jDQo+ID4gQEAgLTAsMCArMSwxNDAgQEANCj4gPiAr LyoqIEBmaWxlDQo+ID4gKyAgQ29tbW9uIFVuaXQgVGVzdCBIb3N0IGZ1bmN0aW9ucy4NCj4gPiAr DQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDIwLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0 cw0KPiByZXNlcnZlZC48QlI+DQo+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0y LUNsYXVzZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgIlVu aXRUZXN0SG9zdC5oIg0KPiA+ICsNCj4gPiArLy8vDQo+ID4gKy8vLyBNb2R1bGUgZ2xvYmFsIHZh cmlhYmxlIGZvciBzaW1wbGUgc3lzdGVtDQo+IGVtdWxhdGlvbiBvZiBpbnRlcnJ1cHQgc3RhdGUN Cj4gPiArLy8vDQo+ID4gK1NUQVRJQyBCT09MRUFODQo+IG1Vbml0VGVzdEhvc3RCYXNlTGliSW50 ZXJydXB0U3RhdGU7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBFbmFibGVzIENQVSBpbnRlcnJ1 cHRzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRU ZXN0SG9zdEJhc2VMaWJFbmFibGVJbnRlcnJ1cHRzICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0K PiA+ICt7DQo+ID4gKyAgbVVuaXRUZXN0SG9zdEJhc2VMaWJJbnRlcnJ1cHRTdGF0ZSA9IFRSVUU7 DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIERpc2FibGVzIENQVSBpbnRlcnJ1cHRz Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0 SG9zdEJhc2VMaWJEaXNhYmxlSW50ZXJydXB0cyAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4g PiArew0KPiA+ICsgIG1Vbml0VGVzdEhvc3RCYXNlTGliSW50ZXJydXB0U3RhdGUgPSBGQUxTRTsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRW5hYmxlcyBDUFUgaW50ZXJydXB0cyBm b3IgdGhlIHNtYWxsZXN0IHdpbmRvdw0KPiByZXF1aXJlZCB0byBjYXB0dXJlIGFueQ0KPiA+ICsg IHBlbmRpbmcgaW50ZXJydXB0cy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VG SUFQSQ0KPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliRW5hYmxlRGlzYWJsZUludGVycnVwdHMgKA0K PiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBtVW5pdFRlc3RIb3N0QmFzZUxp YkludGVycnVwdFN0YXRlID0gRkFMU0U7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsg IFNldCB0aGUgY3VycmVudCBDUFUgaW50ZXJydXB0IHN0YXRlLg0KPiA+ICsNCj4gPiArICBTZXRz IHRoZSBjdXJyZW50IENQVSBpbnRlcnJ1cHQgc3RhdGUgdG8gdGhlIHN0YXRlDQo+IHNwZWNpZmll ZCBieQ0KPiA+ICsgIEludGVycnVwdFN0YXRlLiBJZiBJbnRlcnJ1cHRTdGF0ZSBpcyBUUlVFLCB0 aGVuDQo+IGludGVycnVwdHMgYXJlIGVuYWJsZWQuIElmDQo+ID4gKyAgSW50ZXJydXB0U3RhdGUg aXMgRkFMU0UsIHRoZW4gaW50ZXJydXB0cyBhcmUNCj4gZGlzYWJsZWQuIEludGVycnVwdFN0YXRl IGlzDQo+ID4gKyAgcmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgSW50ZXJydXB0U3Rh dGUgIFRSVUUgaWYgaW50ZXJydXB0cyBzaG91bGQNCj4gZW5hYmxlZC4gRkFMU0UgaWYNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRzIHNob3VsZCBiZQ0KPiBkaXNhYmxl ZC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBJbnRlcnJ1cHRTdGF0ZQ0KPiA+ICsNCj4gPiArKiov DQo+ID4gK0JPT0xFQU4NCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJHZXRJ bnRlcnJ1cHRTdGF0ZSAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJl dHVybiBtVW5pdFRlc3RIb3N0QmFzZUxpYkludGVycnVwdFN0YXRlOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICBFbmFibGVzIENQVSBpbnRlcnJ1cHRzLg0KPiA+ICsNCj4gPiArKiov DQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK0VuYWJsZUludGVycnVwdHMgKA0KPiA+ICsg IFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBnVW5pdFRlc3RIb3N0QmFzZUxpYi5Db21t b24tPkVuYWJsZUludGVycnVwdHMgKCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsg IERpc2FibGVzIENQVSBpbnRlcnJ1cHRzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQNCj4g PiArRUZJQVBJDQo+ID4gK0Rpc2FibGVJbnRlcnJ1cHRzICgNCj4gPiArICBWT0lEDQo+ID4gKyAg KQ0KPiA+ICt7DQo+ID4gKyAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIuQ29tbW9uLT5EaXNhYmxlSW50 ZXJydXB0cyAoKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRW5hYmxlcyBDUFUg aW50ZXJydXB0cyBmb3IgdGhlIHNtYWxsZXN0IHdpbmRvdw0KPiByZXF1aXJlZCB0byBjYXB0dXJl IGFueQ0KPiA+ICsgIHBlbmRpbmcgaW50ZXJydXB0cy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtW T0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtFbmFibGVEaXNhYmxlSW50ZXJydXB0cyAoDQo+ID4gKyAg Vk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIGdVbml0VGVzdEhvc3RCYXNlTGliLkNvbW1v bi0NCj4gPkVuYWJsZURpc2FibGVJbnRlcnJ1cHRzICgpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICBTZXQgdGhlIGN1cnJlbnQgQ1BVIGludGVycnVwdCBzdGF0ZS4NCj4gPiArDQo+ ID4gKyAgU2V0cyB0aGUgY3VycmVudCBDUFUgaW50ZXJydXB0IHN0YXRlIHRvIHRoZSBzdGF0ZQ0K PiBzcGVjaWZpZWQgYnkNCj4gPiArICBJbnRlcnJ1cHRTdGF0ZS4gSWYgSW50ZXJydXB0U3RhdGUg aXMgVFJVRSwgdGhlbg0KPiBpbnRlcnJ1cHRzIGFyZSBlbmFibGVkLiBJZg0KPiA+ICsgIEludGVy cnVwdFN0YXRlIGlzIEZBTFNFLCB0aGVuIGludGVycnVwdHMgYXJlDQo+IGRpc2FibGVkLiBJbnRl cnJ1cHRTdGF0ZSBpcw0KPiA+ICsgIHJldHVybmVkLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIElu dGVycnVwdFN0YXRlICBUUlVFIGlmIGludGVycnVwdHMgc2hvdWxkDQo+IGVuYWJsZWQuIEZBTFNF IGlmDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJydXB0cyBzaG91bGQgYmUN Cj4gZGlzYWJsZWQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gSW50ZXJydXB0U3RhdGUNCj4gPiAr DQo+ID4gKyoqLw0KPiA+ICtCT09MRUFODQo+ID4gK0VGSUFQSQ0KPiA+ICtHZXRJbnRlcnJ1cHRT dGF0ZSAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBnVW5p dFRlc3RIb3N0QmFzZUxpYi5Db21tb24tDQo+ID5HZXRJbnRlcnJ1cHRTdGF0ZSAoKTsNCj4gPiAr fQ0KPiA+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9CYXNlTGliL1VuaXRUZXN0SG9zdC5o DQo+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9Vbml0VGVzdEhvc3QuaA0KPiA+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uNmE1MWZiNDY4Yw0KPiA+IC0tLSAv ZGV2L251bGwNCj4gPiArKysgYi9NZGVQa2cvTGlicmFyeS9CYXNlTGliL1VuaXRUZXN0SG9zdC5o DQo+ID4gQEAgLTAsMCArMSw2NiBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiArICBVbml0IFRlc3Qg SG9zdCBmdW5jdGlvbnMuDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAyMCwgSW50ZWwg Q29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gcmVzZXJ2ZWQuPEJSPg0KPiA+ICsgIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKw0KPiA+ICsqKi8NCj4g PiArDQo+ID4gKyNpZm5kZWYgX19VTklUX1RFU1RfSE9TVF9IX18NCj4gPiArI2RlZmluZSBfX1VO SVRfVEVTVF9IT1NUX0hfXw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgIkJhc2VMaWJJbnRlcm5hbHMu aCINCj4gPiArI2luY2x1ZGUgPEhvc3RUZXN0L1VuaXRUZXN0SG9zdEJhc2VMaWIuaD4NCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgIEVuYWJsZXMgQ1BVIGludGVycnVwdHMuDQo+ID4gKw0KPiA+ICsq Ki8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkVuYWJs ZUludGVycnVwdHMgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAgRGlzYWJsZXMgQ1BVIGludGVycnVwdHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9J RA0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkRpc2FibGVJbnRlcnJ1cHRz ICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEVuYWJs ZXMgQ1BVIGludGVycnVwdHMgZm9yIHRoZSBzbWFsbGVzdCB3aW5kb3cNCj4gcmVxdWlyZWQgdG8g Y2FwdHVyZSBhbnkNCj4gPiArICBwZW5kaW5nIGludGVycnVwdHMuDQo+ID4gKw0KPiA+ICsqKi8N Cj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkVuYWJsZURp c2FibGVJbnRlcnJ1cHRzICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIFNldCB0aGUgY3VycmVudCBDUFUgaW50ZXJydXB0IHN0YXRlLg0KPiA+ICsNCj4g PiArICBTZXRzIHRoZSBjdXJyZW50IENQVSBpbnRlcnJ1cHQgc3RhdGUgdG8gdGhlIHN0YXRlDQo+ IHNwZWNpZmllZCBieQ0KPiA+ICsgIEludGVycnVwdFN0YXRlLiBJZiBJbnRlcnJ1cHRTdGF0ZSBp cyBUUlVFLCB0aGVuDQo+IGludGVycnVwdHMgYXJlIGVuYWJsZWQuIElmDQo+ID4gKyAgSW50ZXJy dXB0U3RhdGUgaXMgRkFMU0UsIHRoZW4gaW50ZXJydXB0cyBhcmUNCj4gZGlzYWJsZWQuIEludGVy cnVwdFN0YXRlIGlzDQo+ID4gKyAgcmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgSW50 ZXJydXB0U3RhdGUgIFRSVUUgaWYgaW50ZXJydXB0cyBzaG91bGQNCj4gZW5hYmxlZC4gRkFMU0Ug aWYNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRzIHNob3VsZCBiZQ0K PiBkaXNhYmxlZC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBJbnRlcnJ1cHRTdGF0ZQ0KPiA+ICsN Cj4gPiArKiovDQo+ID4gK0JPT0xFQU4NCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJh c2VMaWJHZXRJbnRlcnJ1cHRTdGF0ZSAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICk7DQo+ID4gKw0K PiA+ICsjZW5kaWYNCj4gPiBkaWZmIC0tZ2l0DQo+IGEvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9V bml0VGVzdEhvc3RCYXNlTGliLmluZg0KPiBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvVW5pdFRl c3RIb3N0QmFzZUxpYi5pbmYNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAw MDAwMDAwMDAuLmY5NWRhYTVlMzMNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvTWRlUGtn L0xpYnJhcnkvQmFzZUxpYi9Vbml0VGVzdEhvc3RCYXNlTGliLmluZg0KPiA+IEBAIC0wLDAgKzEs MjE2IEBADQo+ID4gKyMjIEBmaWxlDQo+ID4gKyMgIEJhc2UgTGlicmFyeSBpbXBsZW1lbnRhdGlv biBmb3IgdXNlIHdpdGggaG9zdA0KPiBiYXNlZCB1bml0IHRlc3RzLg0KPiA+ICsjDQo+ID4gKyMg IENvcHlyaWdodCAoYykgMjAwNyAtIDIwMjAsIEludGVsIENvcnBvcmF0aW9uLiBBbGwNCj4gcmln aHRzIHJlc2VydmVkLjxCUj4NCj4gPiArIyAgUG9ydGlvbnMgY29weXJpZ2h0IChjKSAyMDA4IC0g MjAwOSwgQXBwbGUgSW5jLiBBbGwNCj4gcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArIyAgUG9y dGlvbnMgY29weXJpZ2h0IChjKSAyMDExIC0gMjAxMywgQVJNIEx0ZC4gQWxsDQo+IHJpZ2h0cyBy ZXNlcnZlZC48QlI+DQo+ID4gKyMgIENvcHlyaWdodCAoYykgMjAyMCwgSGV3bGV0dCBQYWNrYXJk IEVudGVycHJpc2UNCj4gRGV2ZWxvcG1lbnQgTFAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiA+ICsjDQo+ID4gKyMgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0 ZW50DQo+ID4gKyMNCj4gPiArIw0KPiA+ICsjIw0KPiA+ICsNCj4gPiArW0RlZmluZXNdDQo+ID4g KyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAxMDAwNQ0KPiA+ICsgIEJB U0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9DQo+IFVuaXRUZXN0SG9zdEJhc2VMaWINCj4g PiArICBNT0RVTEVfVU5JX0ZJTEUgICAgICAgICAgICAgICAgPQ0KPiBVbml0VGVzdEhvc3RCYXNl TGliLnVuaQ0KPiA+ICsgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9IDk1NTVBMEQz LTA5QkEtDQo+IDQ2QzQtQTUxQS00NTE5OEUzQzc2NUUNCj4gPiArICBNT0RVTEVfVFlQRSAgICAg ICAgICAgICAgICAgICAgPSBCQVNFDQo+ID4gKyAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAg ICAgID0gMS4xDQo+ID4gKyAgTElCUkFSWV9DTEFTUyAgICAgICAgICAgICAgICAgID0NCj4gQmFz ZUxpYnxIT1NUX0FQUExJQ0FUSU9ODQo+ID4gKw0KPiA+ICsjDQo+ID4gKyMgIFZBTElEX0FSQ0hJ VEVDVFVSRVMgICAgICAgICAgID0gSUEzMiBYNjQgRUJDIEFSTQ0KPiBBQVJDSDY0IFJJU0NWNjQN Cj4gPiArIw0KPiA+ICsNCj4gPiArW1NvdXJjZXNdDQo+ID4gKyAgQ2hlY2tTdW0uYw0KPiA+ICsg IFN3aXRjaFN0YWNrLmMNCj4gPiArICBTd2FwQnl0ZXM2NC5jDQo+ID4gKyAgU3dhcEJ5dGVzMzIu Yw0KPiA+ICsgIFN3YXBCeXRlczE2LmMNCj4gPiArICBMb25nSnVtcC5jDQo+ID4gKyAgU2V0SnVt cC5jDQo+ID4gKyAgUlNoaWZ0VTY0LmMNCj4gPiArICBSUm90VTY0LmMNCj4gPiArICBSUm90VTMy LmMNCj4gPiArICBNdWx0VTY0eDY0LmMNCj4gPiArICBNdWx0VTY0eDMyLmMNCj4gPiArICBNdWx0 UzY0eDY0LmMNCj4gPiArICBNb2RVNjR4MzIuYw0KPiA+ICsgIExTaGlmdFU2NC5jDQo+ID4gKyAg TFJvdFU2NC5jDQo+ID4gKyAgTFJvdFUzMi5jDQo+ID4gKyAgTG93Qml0U2V0NjQuYw0KPiA+ICsg IExvd0JpdFNldDMyLmMNCj4gPiArICBIaWdoQml0U2V0NjQuYw0KPiA+ICsgIEhpZ2hCaXRTZXQz Mi5jDQo+ID4gKyAgR2V0UG93ZXJPZlR3bzY0LmMNCj4gPiArICBHZXRQb3dlck9mVHdvMzIuYw0K PiA+ICsgIERpdlU2NHg2NFJlbWFpbmRlci5jDQo+ID4gKyAgRGl2VTY0eDMyUmVtYWluZGVyLmMN Cj4gPiArICBEaXZVNjR4MzIuYw0KPiA+ICsgIERpdlM2NHg2NFJlbWFpbmRlci5jDQo+ID4gKyAg QVJTaGlmdFU2NC5jDQo+ID4gKyAgQml0RmllbGQuYw0KPiA+ICsgIENwdURlYWRMb29wLmMNCj4g PiArICBDcHUuYw0KPiA+ICsgIExpbmtlZExpc3QuYw0KPiA+ICsgIFNhZmVTdHJpbmcuYw0KPiA+ ICsgIFN0cmluZy5jDQo+ID4gKyAgRmlsZVBhdGhzLmMNCj4gPiArICBCYXNlTGliSW50ZXJuYWxz LmgNCj4gPiArICBVbml0VGVzdEhvc3QuYw0KPiA+ICsgIFVuaXRUZXN0SG9zdC5oDQo+ID4gKw0K PiA+ICtbU291cmNlcy5JYTMyXQ0KPiA+ICsgIElhMzIvU3dhcEJ5dGVzNjQuYyB8IE1TRlQNCj4g PiArICBJYTMyL1JSb3RVNjQuYyB8IE1TRlQNCj4gPiArICBJYTMyL1JTaGlmdFU2NC5jIHwgTVNG VA0KPiA+ICsgIElhMzIvUmVhZFRzYy5jIHwgTVNGVA0KPiA+ICsgIElhMzIvUmVhZEVmbGFncy5j IHwgTVNGVA0KPiA+ICsgIElhMzIvTW9kVTY0eDMyLmMgfCBNU0ZUDQo+ID4gKyAgSWEzMi9NdWx0 VTY0eDY0LmMgfCBNU0ZUDQo+ID4gKyAgSWEzMi9NdWx0VTY0eDMyLmMgfCBNU0ZUDQo+ID4gKyAg SWEzMi9MU2hpZnRVNjQuYyB8IE1TRlQNCj4gPiArICBJYTMyL0xSb3RVNjQuYyB8IE1TRlQNCj4g PiArICBJYTMyL0Z4UmVzdG9yZS5jIHwgTVNGVA0KPiA+ICsgIElhMzIvRnhTYXZlLmMgfCBNU0ZU DQo+ID4gKyAgSWEzMi9EaXZVNjR4MzJSZW1haW5kZXIuYyB8IE1TRlQNCj4gPiArICBJYTMyL0Rp dlU2NHgzMi5jIHwgTVNGVA0KPiA+ICsgIElhMzIvQ3B1UGF1c2UuYyB8IE1TRlQNCj4gPiArICBJ YTMyL0NwdUJyZWFrcG9pbnQuYyB8IE1TRlQNCj4gPiArICBJYTMyL0FSU2hpZnRVNjQuYyB8IE1T RlQNCj4gPiArICBJYTMyL0djY0lubGluZS5jIHwgR0NDDQo+ID4gKyAgSWEzMi9Mb25nSnVtcC5u YXNtDQo+ID4gKyAgSWEzMi9TZXRKdW1wLm5hc20NCj4gPiArICBJYTMyL1N3YXBCeXRlczY0Lm5h c218IEdDQw0KPiA+ICsgIElhMzIvRGl2VTY0eDY0UmVtYWluZGVyLm5hc20NCj4gPiArICBJYTMy L0RpdlU2NHgzMlJlbWFpbmRlci5uYXNtfCBHQ0MNCj4gPiArICBJYTMyL01vZFU2NHgzMi5uYXNt fCBHQ0MNCj4gPiArICBJYTMyL0RpdlU2NHgzMi5uYXNtfCBHQ0MNCj4gPiArICBJYTMyL011bHRV NjR4NjQubmFzbXwgR0NDDQo+ID4gKyAgSWEzMi9NdWx0VTY0eDMyLm5hc218IEdDQw0KPiA+ICsg IElhMzIvUlJvdFU2NC5uYXNtfCBHQ0MNCj4gPiArICBJYTMyL0xSb3RVNjQubmFzbXwgR0NDDQo+ ID4gKyAgSWEzMi9BUlNoaWZ0VTY0Lm5hc218IEdDQw0KPiA+ICsgIElhMzIvUlNoaWZ0VTY0Lm5h c218IEdDQw0KPiA+ICsgIElhMzIvTFNoaWZ0VTY0Lm5hc218IEdDQw0KPiA+ICsgIElhMzIvUmRS YW5kLm5hc20NCj4gPiArICBJYTMyL0RpdlM2NHg2NFJlbWFpbmRlci5jDQo+ID4gKyAgSWEzMi9J bnRlcm5hbFN3aXRjaFN0YWNrLmMgfCBNU0ZUDQo+ID4gKyAgSWEzMi9JbnRlcm5hbFN3aXRjaFN0 YWNrLm5hc20gfCBHQ0MNCj4gPiArICBJYTMyL05vbi1leGlzdGluZy5jDQo+ID4gKyAgVW5hbGln bmVkLmMNCj4gPiArICBYODZGeFNhdmUuYw0KPiA+ICsgIFg4NkZ4UmVzdG9yZS5jDQo+ID4gKyAg WDg2TXNyLmMNCj4gPiArICBYODZSZFJhbmQuYw0KPiA+ICsgIFg4NlNwZWN1bGF0aW9uQmFycmll ci5jDQo+ID4gKyAgWDg2VW5pdFRlc3RIb3N0LmMNCj4gPiArDQo+ID4gK1tTb3VyY2VzLlg2NF0N Cj4gPiArICBYNjQvTG9uZ0p1bXAubmFzbQ0KPiA+ICsgIFg2NC9TZXRKdW1wLm5hc20NCj4gPiAr ICBYNjQvU3dpdGNoU3RhY2submFzbQ0KPiA+ICsgIFg2NC9DcHVCcmVha3BvaW50LmMgfCBNU0ZU DQo+ID4gKyAgWDY0L0NwdVBhdXNlLm5hc218IE1TRlQNCj4gPiArICBYNjQvUmVhZFRzYy5uYXNt fCBNU0ZUDQo+ID4gKyAgWDY0L0Z4UmVzdG9yZS5uYXNtfCBNU0ZUDQo+ID4gKyAgWDY0L0Z4U2F2 ZS5uYXNtfCBNU0ZUDQo+ID4gKyAgWDY0L1JlYWRFZmxhZ3MubmFzbXwgTVNGVA0KPiA+ICsgIFg2 NC9Ob24tZXhpc3RpbmcuYw0KPiA+ICsgIE1hdGg2NC5jDQo+ID4gKyAgVW5hbGlnbmVkLmMNCj4g PiArICBYODZGeFNhdmUuYw0KPiA+ICsgIFg4NkZ4UmVzdG9yZS5jDQo+ID4gKyAgWDg2TXNyLmMN Cj4gPiArICBYODZSZFJhbmQuYw0KPiA+ICsgIFg4NlNwZWN1bGF0aW9uQmFycmllci5jDQo+ID4g KyAgWDY0L0djY0lubGluZS5jIHwgR0NDDQo+ID4gKyAgWDY0L1JkUmFuZC5uYXNtDQo+ID4gKyAg Q2hrU3RrR2NjLmMgIHwgR0NDDQo+ID4gKyAgWDg2VW5pdFRlc3RIb3N0LmMNCj4gPiArDQo+ID4g K1tTb3VyY2VzLkVCQ10NCj4gPiArICBFYmMvQ3B1QnJlYWtwb2ludC5jDQo+ID4gKyAgRWJjL1Nl dEp1bXBMb25nSnVtcC5jDQo+ID4gKyAgRWJjL1N3aXRjaFN0YWNrLmMNCj4gPiArICBFYmMvU3Bl Y3VsYXRpb25CYXJyaWVyLmMNCj4gPiArICBVbmFsaWduZWQuYw0KPiA+ICsgIE1hdGg2NC5jDQo+ ID4gKw0KPiA+ICtbU291cmNlcy5BUk1dDQo+ID4gKyAgQXJtL0ludGVybmFsU3dpdGNoU3RhY2su Yw0KPiA+ICsgIEFybS9VbmFsaWduZWQuYw0KPiA+ICsgIE1hdGg2NC5jICAgICAgICAgICAgICAg ICAgIHwgUlZDVA0KPiA+ICsgIE1hdGg2NC5jICAgICAgICAgICAgICAgICAgIHwgTVNGVA0KPiA+ ICsNCj4gPiArICBBcm0vU3dpdGNoU3RhY2suYXNtICAgICAgICB8IFJWQ1QNCj4gPiArICBBcm0v U2V0SnVtcExvbmdKdW1wLmFzbSAgICB8IFJWQ1QNCj4gPiArICBBcm0vQ3B1UGF1c2UuYXNtICAg ICAgICAgICB8IFJWQ1QNCj4gPiArICBBcm0vQ3B1QnJlYWtwb2ludC5hc20gICAgICB8IFJWQ1QN Cj4gPiArICBBcm0vTWVtb3J5RmVuY2UuYXNtICAgICAgICB8IFJWQ1QNCj4gPiArICBBcm0vU3Bl Y3VsYXRpb25CYXJyaWVyLlMgICB8IFJWQ1QNCj4gPiArDQo+ID4gKyAgQXJtL1N3aXRjaFN0YWNr LmFzbSAgICAgICAgfCBNU0ZUDQo+ID4gKyAgQXJtL1NldEp1bXBMb25nSnVtcC5hc20gICAgfCBN U0ZUDQo+ID4gKyAgQXJtL0NwdVBhdXNlLmFzbSAgICAgICAgICAgfCBNU0ZUDQo+ID4gKyAgQXJt L0NwdUJyZWFrcG9pbnQuYXNtICAgICAgfCBNU0ZUDQo+ID4gKyAgQXJtL01lbW9yeUZlbmNlLmFz bSAgICAgICAgfCBNU0ZUDQo+ID4gKyAgQXJtL1NwZWN1bGF0aW9uQmFycmllci5hc20gfCBNU0ZU DQo+ID4gKw0KPiA+ICsgIEFybS9NYXRoNjQuUyAgICAgICAgICAgICAgICAgIHwgR0NDDQo+ID4g KyAgQXJtL1N3aXRjaFN0YWNrLlMgICAgICAgICAgICAgfCBHQ0MNCj4gPiArICBBcm0vU2V0SnVt cExvbmdKdW1wLlMgICAgICAgICB8IEdDQw0KPiA+ICsgIEFybS9DcHVCcmVha3BvaW50LlMgICAg ICAgICAgIHwgR0NDDQo+ID4gKyAgQXJtL01lbW9yeUZlbmNlLlMgICAgICAgICAgICAgfCBHQ0MN Cj4gPiArICBBcm0vU3BlY3VsYXRpb25CYXJyaWVyLlMgICAgICB8IEdDQw0KPiA+ICsNCj4gPiAr W1NvdXJjZXMuQUFSQ0g2NF0NCj4gPiArICBBcm0vSW50ZXJuYWxTd2l0Y2hTdGFjay5jDQo+ID4g KyAgQXJtL1VuYWxpZ25lZC5jDQo+ID4gKyAgTWF0aDY0LmMNCj4gPiArDQo+ID4gKyAgQUFyY2g2 NC9NZW1vcnlGZW5jZS5TICAgICAgICAgICAgIHwgR0NDDQo+ID4gKyAgQUFyY2g2NC9Td2l0Y2hT dGFjay5TICAgICAgICAgICAgIHwgR0NDDQo+ID4gKyAgQUFyY2g2NC9TZXRKdW1wTG9uZ0p1bXAu UyAgICAgICAgIHwgR0NDDQo+ID4gKyAgQUFyY2g2NC9DcHVCcmVha3BvaW50LlMgICAgICAgICAg IHwgR0NDDQo+ID4gKyAgQUFyY2g2NC9TcGVjdWxhdGlvbkJhcnJpZXIuUyAgICAgIHwgR0NDDQo+ ID4gKw0KPiA+ICsgIEFBcmNoNjQvTWVtb3J5RmVuY2UuYXNtICAgICAgICAgICB8IE1TRlQNCj4g PiArICBBQXJjaDY0L1N3aXRjaFN0YWNrLmFzbSAgICAgICAgICAgfCBNU0ZUDQo+ID4gKyAgQUFy Y2g2NC9TZXRKdW1wTG9uZ0p1bXAuYXNtICAgICAgIHwgTVNGVA0KPiA+ICsgIEFBcmNoNjQvQ3B1 QnJlYWtwb2ludC5hc20gICAgICAgICB8IE1TRlQNCj4gPiArICBBQXJjaDY0L1NwZWN1bGF0aW9u QmFycmllci5hc20gICAgfCBNU0ZUDQo+ID4gKw0KPiA+ICtbU291cmNlcy5SSVNDVjY0XQ0KPiA+ ICsgIE1hdGg2NC5jDQo+ID4gKyAgVW5hbGlnbmVkLmMNCj4gPiArICBSaXNjVjY0L0ludGVybmFs U3dpdGNoU3RhY2suYw0KPiA+ICsgIFJpc2NWNjQvQ3B1QnJlYWtwb2ludC5jDQo+ID4gKyAgUmlz Y1Y2NC9DcHVQYXVzZS5jDQo+ID4gKyAgUmlzY1Y2NC9SaXNjVlNldEp1bXBMb25nSnVtcC5TICAg IHwgR0NDDQo+ID4gKyAgUmlzY1Y2NC9SaXNjVkNwdUJyZWFrcG9pbnQuUyAgICAgIHwgR0NDDQo+ ID4gKyAgUmlzY1Y2NC9SaXNjVkNwdVBhdXNlLlMgICAgICAgICAgIHwgR0NDDQo+ID4gKyAgUmlz Y1Y2NC9SaXNjVkludGVycnVwdC5TICAgICAgICAgIHwgR0NDDQo+ID4gKyAgUmlzY1Y2NC9GbHVz aENhY2hlLlMgICAgICAgICAgICAgIHwgR0NDDQo+ID4gKw0KPiA+ICtbUGFja2FnZXNdDQo+ID4g KyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPiArDQo+ID4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPiAr ICBQY2RMaWINCj4gPiArICBEZWJ1Z0xpYg0KPiA+ICsgIEJhc2VNZW1vcnlMaWINCj4gPiArDQo+ ID4gK1tQY2RdDQo+ID4gKyAgZ0VmaU1kZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZE1heGltdW1MaW5r ZWRMaXN0TGVuZ3RoDQo+ICMjIFNPTUVUSU1FU19DT05TVU1FUw0KPiA+ICsNCj4gZ0VmaU1kZVBr Z1Rva2VuU3BhY2VHdWlkLlBjZE1heGltdW1Bc2NpaVN0cmluZ0xlbmd0aA0KPiAjIyBTT01FVElN RVNfQ09OU1VNRVMNCj4gPiArDQo+IGdFZmlNZGVQa2dUb2tlblNwYWNlR3VpZC5QY2RNYXhpbXVt VW5pY29kZVN0cmluZ0xlbmd0aA0KPiAjIyBTT01FVElNRVNfQ09OU1VNRVMNCj4gPiArDQo+IGdF ZmlNZGVQa2dUb2tlblNwYWNlR3VpZC5QY2RDb250cm9sRmxvd0VuZm9yY2VtZW50UHJvcGVyDQo+ IHR5TWFzayAgICMjIFNPTUVUSU1FU19DT05TVU1FUw0KPiA+ICsgIGdFZmlNZGVQa2dUb2tlblNw YWNlR3VpZC5QY2RTcGVjdWxhdGlvbkJhcnJpZXJUeXBlDQo+ICMjIFNPTUVUSU1FU19DT05TVU1F Uw0KPiA+ICsNCj4gPiArW0ZlYXR1cmVQY2RdDQo+ID4gKyAgZ0VmaU1kZVBrZ1Rva2VuU3BhY2VH dWlkLlBjZFZlcmlmeU5vZGVJbkxpc3QgICMjDQo+IENPTlNVTUVTDQo+ID4gZGlmZiAtLWdpdA0K PiBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvVW5pdFRlc3RIb3N0QmFzZUxpYi51bmkNCj4gYi9N ZGVQa2cvTGlicmFyeS9CYXNlTGliL1VuaXRUZXN0SG9zdEJhc2VMaWIudW5pDQo+ID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi5lNjNlY2VmODJjDQo+ID4gLS0t IC9kZXYvbnVsbA0KPiA+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvVW5pdFRlc3RIb3N0 QmFzZUxpYi51bmkNCj4gPiBAQCAtMCwwICsxLDExIEBADQo+ID4gKy8vIC8qKiBAZmlsZQ0KPiA+ ICsvLyBCYXNlIExpYnJhcnkgaW1wbGVtZW50YXRpb24gZm9yIHVzZSB3aXRoIGhvc3QNCj4gYmFz ZWQgdW5pdCB0ZXN0cy4NCj4gPiArLy8NCj4gPiArLy8gQ29weXJpZ2h0IChjKSAyMDIwLCBJbnRl bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cw0KPiByZXNlcnZlZC48QlI+DQo+ID4gKy8vIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKy8vDQo+ID4gKy8v ICoqLw0KPiA+ICsNCj4gPiArI3N0cmluZyBTVFJfTU9EVUxFX0FCU1RSQUNUICAgICAgICAgICAg ICNsYW5ndWFnZSBlbi0NCj4gVVMgIkJhc2UgTGlicmFyeSBpbXBsZW1lbnRhdGlvbiBmb3IgdXNl IHdpdGggaG9zdCBiYXNlZA0KPiB1bml0IHRlc3RzLiINCj4gPiArDQo+ID4gKyNzdHJpbmcgU1RS X01PRFVMRV9ERVNDUklQVElPTiAgICAgICAgICAjbGFuZ3VhZ2UgZW4tDQo+IFVTICJCYXNlIExp YnJhcnkgaW1wbGVtZW50YXRpb24gZm9yIHVzZSB3aXRoIGhvc3QgYmFzZWQNCj4gdW5pdCB0ZXN0 cy4iDQo+ID4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvWDg2VW5pdFRlc3RI b3N0LmMNCj4gYi9NZGVQa2cvTGlicmFyeS9CYXNlTGliL1g4NlVuaXRUZXN0SG9zdC5jDQo+ID4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi5kMGU0Mjg0NTdlDQo+ ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvWDg2VW5p dFRlc3RIb3N0LmMNCj4gPiBAQCAtMCwwICsxLDI5NzcgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4g KyAgSUEzMi9YNjQgc3BlY2lmaWMgVW5pdCBUZXN0IEhvc3QgZnVuY3Rpb25zLg0KPiA+ICsNCj4g PiArICBDb3B5cmlnaHQgKGMpIDIwMjAsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ IHJlc2VydmVkLjxCUj4NCj4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xh dXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSAiVW5pdFRl c3RIb3N0LmgiDQo+ID4gKw0KPiA+ICsvLy8NCj4gPiArLy8vIERlZmluZXMgZm9yIG1Vbml0VGVz dEhvc3RCYXNlTGliU2VnbWVudCBpbmRleGVzDQo+ID4gKy8vLw0KPiA+ICsjZGVmaW5lIFVOSVRf VEVTVF9IT1NUX0JBU0VfTElCX1NFR01FTlRfQ1MgICAgMA0KPiA+ICsjZGVmaW5lIFVOSVRfVEVT VF9IT1NUX0JBU0VfTElCX1NFR01FTlRfRFMgICAgMQ0KPiA+ICsjZGVmaW5lIFVOSVRfVEVTVF9I T1NUX0JBU0VfTElCX1NFR01FTlRfRVMgICAgMg0KPiA+ICsjZGVmaW5lIFVOSVRfVEVTVF9IT1NU X0JBU0VfTElCX1NFR01FTlRfRlMgICAgMw0KPiA+ICsjZGVmaW5lIFVOSVRfVEVTVF9IT1NUX0JB U0VfTElCX1NFR01FTlRfR1MgICAgNA0KPiA+ICsjZGVmaW5lIFVOSVRfVEVTVF9IT1NUX0JBU0Vf TElCX1NFR01FTlRfU1MgICAgNQ0KPiA+ICsjZGVmaW5lIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElC X1NFR01FTlRfVFIgICAgNg0KPiA+ICsjZGVmaW5lIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1NF R01FTlRfTERUUiAgNw0KPiA+ICsNCj4gPiArLy8vDQo+ID4gKy8vLyBNb2R1bGUgZ2xvYmFsIHZh cmlhYmxlcyBmb3Igc2ltcGxlIHN5c3RlbQ0KPiBlbXVsYXRpb24gb2YgTVNScywgQ1J4LCBEUngs DQo+ID4gKy8vLyBHRFRSLCBJRFRSLCBhbmQgU2VnbWVudCBTZWxlY3RvcnMuDQo+ID4gKy8vLw0K PiA+ICtTVEFUSUMgVUlOVDY0DQo+IG1Vbml0VGVzdEhvc3RCYXNlTGliTXNyWzJdWzB4MTAwMF07 DQo+ID4gK1NUQVRJQyBVSU5UTiAgICAgICAgICAgIG1Vbml0VGVzdEhvc3RCYXNlTGliQ3JbNV07 DQo+ID4gK1NUQVRJQyBVSU5UTiAgICAgICAgICAgIG1Vbml0VGVzdEhvc3RCYXNlTGliRHJbOF07 DQo+ID4gK1NUQVRJQyBVSU5UMTYNCj4gbVVuaXRUZXN0SG9zdEJhc2VMaWJTZWdtZW50WzhdOw0K PiA+ICtTVEFUSUMgSUEzMl9ERVNDUklQVE9SICBtVW5pdFRlc3RIb3N0QmFzZUxpYkdkdHI7DQo+ ID4gK1NUQVRJQyBJQTMyX0RFU0NSSVBUT1IgIG1Vbml0VGVzdEhvc3RCYXNlTGliSWR0cjsNCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgIFJldHJpZXZlcyBDUFVJRCBpbmZvcm1hdGlvbi4NCj4gPiAr DQo+ID4gKyAgRXhlY3V0ZXMgdGhlIENQVUlEIGluc3RydWN0aW9uIHdpdGggRUFYIHNldCB0byB0 aGUNCj4gdmFsdWUgc3BlY2lmaWVkIGJ5IEluZGV4Lg0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gYWx3 YXlzIHJldHVybnMgSW5kZXguDQo+ID4gKyAgSWYgRWF4IGlzIG5vdCBOVUxMLCB0aGVuIHRoZSB2 YWx1ZSBvZiBFQVggYWZ0ZXINCj4gQ1BVSUQgaXMgcmV0dXJuZWQgaW4gRWF4Lg0KPiA+ICsgIElm IEVieCBpcyBub3QgTlVMTCwgdGhlbiB0aGUgdmFsdWUgb2YgRUJYIGFmdGVyDQo+IENQVUlEIGlz IHJldHVybmVkIGluIEVieC4NCj4gPiArICBJZiBFY3ggaXMgbm90IE5VTEwsIHRoZW4gdGhlIHZh bHVlIG9mIEVDWCBhZnRlcg0KPiBDUFVJRCBpcyByZXR1cm5lZCBpbiBFY3guDQo+ID4gKyAgSWYg RWR4IGlzIG5vdCBOVUxMLCB0aGVuIHRoZSB2YWx1ZSBvZiBFRFggYWZ0ZXINCj4gQ1BVSUQgaXMg cmV0dXJuZWQgaW4gRWR4Lg0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUg b24gSUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBJbmRleCBUaGUgMzItYml0 IHZhbHVlIHRvIGxvYWQgaW50byBFQVgNCj4gcHJpb3IgdG8gaW52b2tpbmcgdGhlIENQVUlEDQo+ ID4gKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4NCj4gPiArICBAcGFyYW0gIEVheCAgIFRo ZSBwb2ludGVyIHRvIHRoZSAzMi1iaXQgRUFYIHZhbHVlDQo+IHJldHVybmVkIGJ5IHRoZSBDUFVJ RA0KPiA+ICsgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uIFRoaXMgaXMgYW4gb3B0aW9uYWwN Cj4gcGFyYW1ldGVyIHRoYXQgbWF5IGJlIE5VTEwuDQo+ID4gKyAgQHBhcmFtICBFYnggICBUaGUg cG9pbnRlciB0byB0aGUgMzItYml0IEVCWCB2YWx1ZQ0KPiByZXR1cm5lZCBieSB0aGUgQ1BVSUQN Cj4gPiArICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLiBUaGlzIGlzIGFuIG9wdGlvbmFsDQo+ IHBhcmFtZXRlciB0aGF0IG1heSBiZSBOVUxMLg0KPiA+ICsgIEBwYXJhbSAgRWN4ICAgVGhlIHBv aW50ZXIgdG8gdGhlIDMyLWJpdCBFQ1ggdmFsdWUNCj4gcmV0dXJuZWQgYnkgdGhlIENQVUlEDQo+ ID4gKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4gVGhpcyBpcyBhbiBvcHRpb25hbA0KPiBw YXJhbWV0ZXIgdGhhdCBtYXkgYmUgTlVMTC4NCj4gPiArICBAcGFyYW0gIEVkeCAgIFRoZSBwb2lu dGVyIHRvIHRoZSAzMi1iaXQgRURYIHZhbHVlDQo+IHJldHVybmVkIGJ5IHRoZSBDUFVJRA0KPiA+ ICsgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uIFRoaXMgaXMgYW4gb3B0aW9uYWwNCj4gcGFy YW1ldGVyIHRoYXQgbWF5IGJlIE5VTEwuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gSW5kZXguDQo+ ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVDMyDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEhv c3RCYXNlTGliQXNtQ3B1aWQgKA0KPiA+ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAg ICAgICBJbmRleCwNCj4gPiArICBPVVQgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgKkVh eCwgIE9QVElPTkFMDQo+ID4gKyAgT1VUICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICpF YngsICBPUFRJT05BTA0KPiA+ICsgIE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAq RWN4LCAgT1BUSU9OQUwNCj4gPiArICBPVVQgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAg KkVkeCAgIE9QVElPTkFMDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgaWYgKEVheCAhPSBOVUxM KSB7DQo+ID4gKyAgICAqRWF4ID0gMDsNCj4gPiArICB9DQo+ID4gKyAgaWYgKEVieCAhPSBOVUxM KSB7DQo+ID4gKyAgICAqRWJ4ID0gMDsNCj4gPiArICB9DQo+ID4gKyAgaWYgKEVjeCAhPSBOVUxM KSB7DQo+ID4gKyAgICAqRWN4ID0gMDsNCj4gPiArICB9DQo+ID4gKyAgaWYgKEVkeCAhPSBOVUxM KSB7DQo+ID4gKyAgICAqRWR4ID0gMDsNCj4gPiArICB9DQo+ID4gKyAgcmV0dXJuIEluZGV4Ow0K PiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBSZXRyaWV2ZXMgQ1BVSUQgaW5mb3JtYXRp b24gdXNpbmcgYW4gZXh0ZW5kZWQgbGVhZg0KPiBpZGVudGlmaWVyLg0KPiA+ICsNCj4gPiArICBF eGVjdXRlcyB0aGUgQ1BVSUQgaW5zdHJ1Y3Rpb24gd2l0aCBFQVggc2V0IHRvIHRoZQ0KPiB2YWx1 ZSBzcGVjaWZpZWQgYnkgSW5kZXgNCj4gPiArICBhbmQgRUNYIHNldCB0byB0aGUgdmFsdWUgc3Bl Y2lmaWVkIGJ5IFN1YkluZGV4Lg0KPiBUaGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zDQo+ID4g KyAgSW5kZXguIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kDQo+ IHg2NC4NCj4gPiArDQo+ID4gKyAgSWYgRWF4IGlzIG5vdCBOVUxMLCB0aGVuIHRoZSB2YWx1ZSBv ZiBFQVggYWZ0ZXINCj4gQ1BVSUQgaXMgcmV0dXJuZWQgaW4gRWF4Lg0KPiA+ICsgIElmIEVieCBp cyBub3QgTlVMTCwgdGhlbiB0aGUgdmFsdWUgb2YgRUJYIGFmdGVyDQo+IENQVUlEIGlzIHJldHVy bmVkIGluIEVieC4NCj4gPiArICBJZiBFY3ggaXMgbm90IE5VTEwsIHRoZW4gdGhlIHZhbHVlIG9m IEVDWCBhZnRlcg0KPiBDUFVJRCBpcyByZXR1cm5lZCBpbiBFY3guDQo+ID4gKyAgSWYgRWR4IGlz IG5vdCBOVUxMLCB0aGVuIHRoZSB2YWx1ZSBvZiBFRFggYWZ0ZXINCj4gQ1BVSUQgaXMgcmV0dXJu ZWQgaW4gRWR4Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIEluZGV4ICAgICBUaGUgMzItYml0IHZh bHVlIHRvIGxvYWQgaW50byBFQVgNCj4gcHJpb3IgdG8gaW52b2tpbmcgdGhlDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgQ1BVSUQgaW5zdHJ1Y3Rpb24uDQo+ID4gKyAgQHBhcmFtICBTdWJJbmRl eCAgVGhlIDMyLWJpdCB2YWx1ZSB0byBsb2FkIGludG8gRUNYDQo+IHByaW9yIHRvIGludm9raW5n IHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgIENQVUlEIGluc3RydWN0aW9uLg0KPiA+ICsg IEBwYXJhbSAgRWF4ICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSAzMi1iaXQgRUFYDQo+IHZhbHVl IHJldHVybmVkIGJ5IHRoZSBDUFVJRA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGluc3RydWN0 aW9uLiBUaGlzIGlzIGFuIG9wdGlvbmFsDQo+IHBhcmFtZXRlciB0aGF0IG1heSBiZQ0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIE5VTEwuDQo+ID4gKyAgQHBhcmFtICBFYnggICAgICAgVGhlIHBv aW50ZXIgdG8gdGhlIDMyLWJpdCBFQlgNCj4gdmFsdWUgcmV0dXJuZWQgYnkgdGhlIENQVUlEDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uIFRoaXMgaXMgYW4gb3B0aW9uYWwN Cj4gcGFyYW1ldGVyIHRoYXQgbWF5IGJlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgTlVMTC4N Cj4gPiArICBAcGFyYW0gIEVjeCAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgMzItYml0IEVDWA0K PiB2YWx1ZSByZXR1cm5lZCBieSB0aGUgQ1BVSUQNCj4gPiArICAgICAgICAgICAgICAgICAgICBp bnN0cnVjdGlvbi4gVGhpcyBpcyBhbiBvcHRpb25hbA0KPiBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUN Cj4gPiArICAgICAgICAgICAgICAgICAgICBOVUxMLg0KPiA+ICsgIEBwYXJhbSAgRWR4ICAgICAg IFRoZSBwb2ludGVyIHRvIHRoZSAzMi1iaXQgRURYDQo+IHZhbHVlIHJldHVybmVkIGJ5IHRoZSBD UFVJRA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLiBUaGlzIGlzIGFuIG9w dGlvbmFsDQo+IHBhcmFtZXRlciB0aGF0IG1heSBiZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAg IE5VTEwuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gSW5kZXguDQo+ID4gKw0KPiA+ICsqKi8NCj4g PiArVUlOVDMyDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtQ3B1aWRF eCAoDQo+ID4gKyAgSU4gICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIEluZGV4LA0KPiA+ ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBTdWJJbmRleCwNCj4gPiArICBP VVQgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgKkVheCwgIE9QVElPTkFMDQo+ID4gKyAg T1VUICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICpFYngsICBPUFRJT05BTA0KPiA+ICsg IE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAqRWN4LCAgT1BUSU9OQUwNCj4gPiAr ICBPVVQgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgKkVkeCAgIE9QVElPTkFMDQo+ID4g KyAgKQ0KPiA+ICt7DQo+ID4gKyAgaWYgKEVheCAhPSBOVUxMKSB7DQo+ID4gKyAgICAqRWF4ID0g MDsNCj4gPiArICB9DQo+ID4gKyAgaWYgKEVieCAhPSBOVUxMKSB7DQo+ID4gKyAgICAqRWJ4ID0g MDsNCj4gPiArICB9DQo+ID4gKyAgaWYgKEVjeCAhPSBOVUxMKSB7DQo+ID4gKyAgICAqRWN4ID0g MDsNCj4gPiArICB9DQo+ID4gKyAgaWYgKEVkeCAhPSBOVUxMKSB7DQo+ID4gKyAgICAqRWR4ID0g MDsNCj4gPiArICB9DQo+ID4gKyAgcmV0dXJuIEluZGV4Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICBTZXQgQ0QgYml0IGFuZCBjbGVhciBOVyBiaXQgb2YgQ1IwIGZvbGxvd2VkIGJ5 IGENCj4gV0JJTlZELg0KPiA+ICsNCj4gPiArICBEaXNhYmxlcyB0aGUgY2FjaGVzIGJ5IHNldHRp bmcgdGhlIENEIGJpdCBvZiBDUjAgdG8NCj4gMSwgY2xlYXJpbmcgdGhlIE5XIGJpdCBvZiBDUjAg dG8gMCwNCj4gPiArICBhbmQgZXhlY3V0aW5nIGEgV0JJTlZEIGluc3RydWN0aW9uLiAgVGhpcyBm dW5jdGlvbg0KPiBpcyBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJB c21EaXNhYmxlQ2FjaGUgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArfQ0K PiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUGVyZm9ybSBhIFdCSU5WRCBhbmQgY2xlYXIgYm90aCB0 aGUgQ0QgYW5kIE5XIGJpdHMNCj4gb2YgQ1IwLg0KPiA+ICsNCj4gPiArICBFbmFibGVzIHRoZSBj YWNoZXMgYnkgZXhlY3V0aW5nIGEgV0JJTlZEDQo+IGluc3RydWN0aW9uIGFuZCB0aGVuIGNsZWFy IGJvdGggdGhlIENEIGFuZCBOVw0KPiA+ICsgIGJpdHMgb2YgQ1IwIHRvIDAuICBUaGlzIGZ1bmN0 aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+IG9uIElBLTMyIGFuZCB4NjQuDQo+ID4gKw0KPiA+ICsq Ki8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbUVu YWJsZUNhY2hlICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gK30NCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgIFJldHVybnMgYSA2NC1iaXQgTWFjaGluZSBTcGVjaWZpYyBSZWdp c3RlcihNU1IpLg0KPiA+ICsNCj4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgNjQtYml0IE1T UiBzcGVjaWZpZWQgYnkNCj4gSW5kZXguIE5vIHBhcmFtZXRlciBjaGVja2luZyBpcw0KPiA+ICsg IHBlcmZvcm1lZCBvbiBJbmRleCwgYW5kIHNvbWUgSW5kZXggdmFsdWVzIG1heSBjYXVzZQ0KPiBD UFUgZXhjZXB0aW9ucy4gVGhlDQo+ID4gKyAgY2FsbGVyIG11c3QgZWl0aGVyIGd1YXJhbnRlZSB0 aGF0IEluZGV4IGlzIHZhbGlkLA0KPiBvciB0aGUgY2FsbGVyIG11c3Qgc2V0IHVwDQo+ID4gKyAg ZXhjZXB0aW9uIGhhbmRsZXJzIHRvIGNhdGNoIHRoZSBleGNlcHRpb25zLiBUaGlzDQo+IGZ1bmN0 aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ ID4gKyAgQHBhcmFtICBJbmRleCBUaGUgMzItYml0IE1TUiBpbmRleCB0byByZWFkLg0KPiA+ICsN Cj4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiB0aGUgTVNSIGlkZW50aWZpZWQgYnkgSW5kZXgu DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVDY0DQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVz dEhvc3RCYXNlTGliQXNtUmVhZE1zcjY0ICgNCj4gPiArICBJTiAgICAgIFVJTlQzMiAgICAgICAg ICAgICAgICAgICAgSW5kZXgNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBpZiAoSW5kZXggPCAw eDEwMDApIHsNCj4gPiArICAgIHJldHVybiBtVW5pdFRlc3RIb3N0QmFzZUxpYk1zclswXVtJbmRl eF07DQo+ID4gKyAgfQ0KPiA+ICsgIGlmIChJbmRleCA+PSAweEMwMDAwMDAwICYmIEluZGV4IDwg MHhDMDAwMTAwMCkgew0KPiA+ICsgICAgcmV0dXJuIG1Vbml0VGVzdEhvc3RCYXNlTGliTXNyWzFd W0luZGV4XTsNCj4gPiArICB9DQo+ID4gKyAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICsgIFdyaXRlcyBhIDY0LWJpdCB2YWx1ZSB0byBhIE1hY2hpbmUgU3BlY2lmaWMN Cj4gUmVnaXN0ZXIoTVNSKSwgYW5kIHJldHVybnMgdGhlDQo+ID4gKyAgdmFsdWUuDQo+ID4gKw0K PiA+ICsgIFdyaXRlcyB0aGUgNjQtYml0IHZhbHVlIHNwZWNpZmllZCBieSBWYWx1ZSB0byB0aGUN Cj4gTVNSIHNwZWNpZmllZCBieSBJbmRleC4gVGhlDQo+ID4gKyAgNjQtYml0IHZhbHVlIHdyaXR0 ZW4gdG8gdGhlIE1TUiBpcyByZXR1cm5lZC4gTm8NCj4gcGFyYW1ldGVyIGNoZWNraW5nIGlzDQo+ ID4gKyAgcGVyZm9ybWVkIG9uIEluZGV4IG9yIFZhbHVlLCBhbmQgc29tZSBvZiB0aGVzZSBtYXkN Cj4gY2F1c2UgQ1BVIGV4Y2VwdGlvbnMuIFRoZQ0KPiA+ICsgIGNhbGxlciBtdXN0IGVpdGhlciBn dWFyYW50ZWUgdGhhdCBJbmRleCBhbmQgVmFsdWUNCj4gYXJlIHZhbGlkLCBvciB0aGUgY2FsbGVy DQo+ID4gKyAgbXVzdCBlc3RhYmxpc2ggcHJvcGVyIGV4Y2VwdGlvbiBoYW5kbGVycy4gVGhpcw0K PiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ICsgIElBLTMyIGFuZCB4NjQuDQo+ ID4gKw0KPiA+ICsgIEBwYXJhbSAgSW5kZXggVGhlIDMyLWJpdCBNU1IgaW5kZXggdG8gd3JpdGUu DQo+ID4gKyAgQHBhcmFtICBWYWx1ZSBUaGUgNjQtYml0IHZhbHVlIHRvIHdyaXRlIHRvIHRoZSBN U1IuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVmFsdWUNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtV SU5UNjQNCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21Xcml0ZU1zcjY0 ICgNCj4gPiArICBJTiAgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgSW5kZXgsDQo+ID4g KyAgSU4gICAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIFZhbHVlDQo+ID4gKyAgKQ0KPiA+ ICt7DQo+ID4gKyAgaWYgKEluZGV4IDwgMHgxMDAwKSB7DQo+ID4gKyAgICBtVW5pdFRlc3RIb3N0 QmFzZUxpYk1zclswXVtJbmRleF0gPSBWYWx1ZTsNCj4gPiArICB9DQo+ID4gKyAgaWYgKEluZGV4 ID49IDB4QzAwMDAwMDAgJiYgSW5kZXggPCAweEMwMDAxMDAwKSB7DQo+ID4gKyAgICBtVW5pdFRl c3RIb3N0QmFzZUxpYk1zclsxXVtJbmRleCAtIDB4QzAwMDAwMDAwXSA9DQo+IFZhbHVlOw0KPiA+ ICsgIH0NCj4gPiArICByZXR1cm4gVmFsdWU7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBDb250cm9sIFJlZ2lzdGVyIDANCj4g KENSMCkuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVl IG9mIENSMC4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ICsgIG9uIElB LTMyIGFuZCB4NjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiBJQS0zMiBhbmQg YSA2NC1iaXQgdmFsdWUgb24NCj4gPiArICB4NjQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhl IHZhbHVlIG9mIHRoZSBDb250cm9sIFJlZ2lzdGVyIDAgKENSMCkuDQo+ID4gKw0KPiA+ICsqKi8N Cj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFk Q3IwICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIG1Vbml0 VGVzdEhvc3RCYXNlTGliQ3JbMF07DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJl YWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBDb250cm9sIFJlZ2lzdGVyIDINCj4gKENSMiku DQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIENS Mi4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ICsgIG9uIElBLTMyIGFu ZCB4NjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiBJQS0zMiBhbmQgYSA2NC1i aXQgdmFsdWUgb24NCj4gPiArICB4NjQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVl IG9mIHRoZSBDb250cm9sIFJlZ2lzdGVyIDIgKENSMikuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiAr VUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFkQ3IyICgN Cj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIG1Vbml0VGVzdEhv c3RCYXNlTGliQ3JbMl07DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJlYWRzIHRo ZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBDb250cm9sIFJlZ2lzdGVyIDMNCj4gKENSMykuDQo+ID4g Kw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIENSMy4gVGhp cw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ICsgIG9uIElBLTMyIGFuZCB4NjQu IFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFs dWUgb24NCj4gPiArICB4NjQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRo ZSBDb250cm9sIFJlZ2lzdGVyIDMgKENSMykuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4N Cj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFkQ3IzICgNCj4gPiAr ICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIG1Vbml0VGVzdEhvc3RCYXNl TGliQ3JbM107DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJlYWRzIHRoZSBjdXJy ZW50IHZhbHVlIG9mIHRoZSBDb250cm9sIFJlZ2lzdGVyIDQNCj4gKENSNCkuDQo+ID4gKw0KPiA+ ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIENSNC4gVGhpcw0KPiBm dW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ICsgIG9uIElBLTMyIGFuZCB4NjQuIFRoaXMg cmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUgb24N Cj4gPiArICB4NjQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBDb250 cm9sIFJlZ2lzdGVyIDQgKENSNCkuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiAr RUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFkQ3I0ICgNCj4gPiArICBWT0lE DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIG1Vbml0VGVzdEhvc3RCYXNlTGliQ3Jb NF07DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFdyaXRlcyBhIHZhbHVlIHRvIENv bnRyb2wgUmVnaXN0ZXIgMCAoQ1IwKS4NCj4gPiArDQo+ID4gKyAgV3JpdGVzIGFuZCByZXR1cm5z IGEgbmV3IHZhbHVlIHRvIENSMC4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBv bg0KPiA+ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElB LTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAg Q3IwIFRoZSB2YWx1ZSB0byB3cml0ZSB0byBDUjAuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhl IHZhbHVlIHdyaXR0ZW4gdG8gQ1IwLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlRODQo+ID4g K0VGSUFQSQ0KPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVDcjAgKA0KPiA+ICsgIFVJ TlROICBDcjANCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBtVW5pdFRlc3RIb3N0QmFzZUxpYkNy WzBdID0gQ3IwOw0KPiA+ICsgIHJldHVybiBDcjA7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgIFdyaXRlcyBhIHZhbHVlIHRvIENvbnRyb2wgUmVnaXN0ZXIgMiAoQ1IyKS4NCj4gPiAr DQo+ID4gKyAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIENSMi4gVGhpcw0KPiBm dW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMg d3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4 NjQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgQ3IyIFRoZSB2YWx1ZSB0byB3cml0ZSB0byBDUjIu DQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gQ1IyLg0KPiA+ICsN Cj4gPiArKiovDQo+ID4gK1VJTlRODQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEhvc3RCYXNl TGliQXNtV3JpdGVDcjIgKA0KPiA+ICsgIFVJTlROICBDcjINCj4gPiArICApDQo+ID4gK3sNCj4g PiArICBtVW5pdFRlc3RIb3N0QmFzZUxpYkNyWzJdID0gQ3IyOw0KPiA+ICsgIHJldHVybiBDcjI7 DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFdyaXRlcyBhIHZhbHVlIHRvIENvbnRy b2wgUmVnaXN0ZXIgMyAoQ1IzKS4NCj4gPiArDQo+ID4gKyAgV3JpdGVzIGFuZCByZXR1cm5zIGEg bmV3IHZhbHVlIHRvIENSMy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0K PiA+ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLTMy DQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgQ3Iz IFRoZSB2YWx1ZSB0byB3cml0ZSB0byBDUjMuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZh bHVlIHdyaXR0ZW4gdG8gQ1IzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlRODQo+ID4gK0VG SUFQSQ0KPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVDcjMgKA0KPiA+ICsgIFVJTlRO ICBDcjMNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBtVW5pdFRlc3RIb3N0QmFzZUxpYkNyWzNd ID0gQ3IzOw0KPiA+ICsgIHJldHVybiBDcjM7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgIFdyaXRlcyBhIHZhbHVlIHRvIENvbnRyb2wgUmVnaXN0ZXIgNCAoQ1I0KS4NCj4gPiArDQo+ ID4gKyAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIENSNC4gVGhpcw0KPiBmdW5j dGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMgd3Jp dGVzIGEgMzItYml0IHZhbHVlIG9uIElBLTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQu DQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgQ3I0IFRoZSB2YWx1ZSB0byB3cml0ZSB0byBDUjQuDQo+ ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gQ1I0Lg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK1VJTlRODQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEhvc3RCYXNlTGli QXNtV3JpdGVDcjQgKA0KPiA+ICsgIFVJTlROICBDcjQNCj4gPiArICApDQo+ID4gK3sNCj4gPiAr ICBtVW5pdFRlc3RIb3N0QmFzZUxpYkNyWzRdID0gQ3I0Ow0KPiA+ICsgIHJldHVybiBDcjQ7DQo+ ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9m IERlYnVnIFJlZ2lzdGVyIDAgKERSMCkuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5z IHRoZSBjdXJyZW50IHZhbHVlIG9mIERSMC4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWls YWJsZQ0KPiA+ICsgIG9uIElBLTMyIGFuZCB4NjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1 ZSBvbg0KPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiArICB4NjQuDQo+ID4gKw0K PiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDAgKERSMCkuDQo+ID4g Kw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJh c2VMaWJBc21SZWFkRHIwICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAg cmV0dXJuIG1Vbml0VGVzdEhvc3RCYXNlTGliRHJbMF07DQo+ID4gK30NCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDEgKERS MSkuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9m IERSMS4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ICsgIG9uIElBLTMy IGFuZCB4NjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiBJQS0zMiBhbmQgYSA2 NC1iaXQgdmFsdWUgb24NCj4gPiArICB4NjQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZh bHVlIG9mIERlYnVnIFJlZ2lzdGVyIDEgKERSMSkuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlO VE4NCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFkRHIxICgNCj4g PiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIG1Vbml0VGVzdEhvc3RC YXNlTGliRHJbMV07DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJlYWRzIHRoZSBj dXJyZW50IHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDIgKERSMikuDQo+ID4gKw0KPiA+ICsgIFJl YWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIERSMi4gVGhpcw0KPiBmdW5jdGlv biBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ICsgIG9uIElBLTMyIGFuZCB4NjQuIFRoaXMgcmV0dXJu cyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiAr ICB4NjQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVy IDIgKERSMikuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4g K1VuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFkRHIyICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0K PiA+ICt7DQo+ID4gKyAgcmV0dXJuIG1Vbml0VGVzdEhvc3RCYXNlTGliRHJbMl07DQo+ID4gK30N Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERlYnVn IFJlZ2lzdGVyIDMgKERSMykuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBj dXJyZW50IHZhbHVlIG9mIERSMy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0K PiA+ICsgIG9uIElBLTMyIGFuZCB4NjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0K PiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiArICB4NjQuDQo+ID4gKw0KPiA+ICsg IEByZXR1cm4gVGhlIHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDMgKERSMykuDQo+ID4gKw0KPiA+ ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJB c21SZWFkRHIzICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJu IG1Vbml0VGVzdEhvc3RCYXNlTGliRHJbM107DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDQgKERSNCkuDQo+ ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIERSNC4g VGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ICsgIG9uIElBLTMyIGFuZCB4 NjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiBJQS0zMiBhbmQgYSA2NC1iaXQg dmFsdWUgb24NCj4gPiArICB4NjQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIG9m IERlYnVnIFJlZ2lzdGVyIDQgKERSNCkuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4g PiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFkRHI0ICgNCj4gPiArICBW T0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIG1Vbml0VGVzdEhvc3RCYXNlTGli RHJbNF07DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50 IHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDUgKERSNSkuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFu ZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIERSNS4gVGhpcw0KPiBmdW5jdGlvbiBpcyBv bmx5IGF2YWlsYWJsZQ0KPiA+ICsgIG9uIElBLTMyIGFuZCB4NjQuIFRoaXMgcmV0dXJucyBhIDMy LWJpdCB2YWx1ZSBvbg0KPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiArICB4NjQu DQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDUgKERS NSkuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRU ZXN0SG9zdEJhc2VMaWJBc21SZWFkRHI1ICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7 DQo+ID4gKyAgcmV0dXJuIG1Vbml0VGVzdEhvc3RCYXNlTGliRHJbNV07DQo+ID4gK30NCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERlYnVnIFJlZ2lz dGVyIDYgKERSNikuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50 IHZhbHVlIG9mIERSNi4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ICsg IG9uIElBLTMyIGFuZCB4NjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiBJQS0z MiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiArICB4NjQuDQo+ID4gKw0KPiA+ICsgIEByZXR1 cm4gVGhlIHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDYgKERSNikuDQo+ID4gKw0KPiA+ICsqKi8N Cj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFk RHI2ICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIG1Vbml0 VGVzdEhvc3RCYXNlTGliRHJbNl07DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJl YWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDcgKERSNykuDQo+ID4gKw0K PiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIERSNy4gVGhpcw0K PiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ICsgIG9uIElBLTMyIGFuZCB4NjQuIFRo aXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUg b24NCj4gPiArICB4NjQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIG9mIERlYnVn IFJlZ2lzdGVyIDcgKERSNykuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJ QVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFkRHI3ICgNCj4gPiArICBWT0lEDQo+ ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIG1Vbml0VGVzdEhvc3RCYXNlTGliRHJbN107 DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFdyaXRlcyBhIHZhbHVlIHRvIERlYnVn IFJlZ2lzdGVyIDAgKERSMCkuDQo+ID4gKw0KPiA+ICsgIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5l dyB2YWx1ZSB0byBEUjAuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4g PiArICBJQS0zMiBhbmQgeDY0LiBUaGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0zMg0K PiBhbmQgYSA2NC1iaXQgdmFsdWUgb24geDY0Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIERyMCBU aGUgdmFsdWUgdG8gd3JpdGUgdG8gRHIwLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSB2YWx1 ZSB3cml0dGVuIHRvIERlYnVnIFJlZ2lzdGVyIDANCj4gKERSMCkuDQo+ID4gKw0KPiA+ICsqKi8N Cj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21Xcml0 ZURyMCAoDQo+ID4gKyAgVUlOVE4gIERyMA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIG1Vbml0 VGVzdEhvc3RCYXNlTGliRHJbMF0gPSBEcjA7DQo+ID4gKyAgcmV0dXJuIERyMDsNCj4gPiArfQ0K PiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgV3JpdGVzIGEgdmFsdWUgdG8gRGVidWcgUmVnaXN0ZXIg MSAoRFIxKS4NCj4gPiArDQo+ID4gKyAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRv IERSMS4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ICsgIElBLTMy IGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLTMyDQo+IGFuZCBhIDY0 LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgRHIxIFRoZSB2YWx1ZSB0 byB3cml0ZSB0byBEcjEuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4g dG8gRGVidWcgUmVnaXN0ZXIgMQ0KPiAoRFIxKS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5U Tg0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVdyaXRlRHIxICgNCj4g PiArICBVSU5UTiAgRHIxDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgbVVuaXRUZXN0SG9zdEJh c2VMaWJEclsxXSA9IERyMTsNCj4gPiArICByZXR1cm4gRHIxOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICsvKioNCj4gPiArICBXcml0ZXMgYSB2YWx1ZSB0byBEZWJ1ZyBSZWdpc3RlciAyIChEUjIpLg0K PiA+ICsNCj4gPiArICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gRFIyLiBUaGlz DQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gKyAgSUEtMzIgYW5kIHg2NC4g VGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtMzINCj4gYW5kIGEgNjQtYml0IHZhbHVl IG9uIHg2NC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBEcjIgVGhlIHZhbHVlIHRvIHdyaXRlIHRv IERyMi4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBS ZWdpc3RlciAyDQo+IChEUjIpLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlRODQo+ID4gK0VG SUFQSQ0KPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVEcjIgKA0KPiA+ICsgIFVJTlRO ICBEcjINCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBtVW5pdFRlc3RIb3N0QmFzZUxpYkRyWzJd ID0gRHIyOw0KPiA+ICsgIHJldHVybiBEcjI7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgIFdyaXRlcyBhIHZhbHVlIHRvIERlYnVnIFJlZ2lzdGVyIDMgKERSMykuDQo+ID4gKw0KPiA+ ICsgIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBEUjMuIFRoaXMNCj4gZnVuY3Rp b24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiArICBJQS0zMiBhbmQgeDY0LiBUaGlzIHdyaXRl cyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0zMg0KPiBhbmQgYSA2NC1iaXQgdmFsdWUgb24geDY0Lg0K PiA+ICsNCj4gPiArICBAcGFyYW0gIERyMyBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHIzLg0KPiA+ ICsNCj4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRvIERlYnVnIFJlZ2lzdGVyIDMN Cj4gKERSMykuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4g K1VuaXRUZXN0SG9zdEJhc2VMaWJBc21Xcml0ZURyMyAoDQo+ID4gKyAgVUlOVE4gIERyMw0KPiA+ ICsgICkNCj4gPiArew0KPiA+ICsgIG1Vbml0VGVzdEhvc3RCYXNlTGliRHJbM10gPSBEcjM7DQo+ ID4gKyAgcmV0dXJuIERyMzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgV3JpdGVz IGEgdmFsdWUgdG8gRGVidWcgUmVnaXN0ZXIgNCAoRFI0KS4NCj4gPiArDQo+ID4gKyAgV3JpdGVz IGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIERSNC4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5 IGF2YWlsYWJsZSBvbg0KPiA+ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEgMzItYml0 IHZhbHVlIG9uIElBLTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ID4gKw0KPiA+ ICsgIEBwYXJhbSAgRHI0IFRoZSB2YWx1ZSB0byB3cml0ZSB0byBEcjQuDQo+ID4gKw0KPiA+ICsg IEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gRGVidWcgUmVnaXN0ZXIgNA0KPiAoRFI0KS4N Cj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UTg0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RI b3N0QmFzZUxpYkFzbVdyaXRlRHI0ICgNCj4gPiArICBVSU5UTiAgRHI0DQo+ID4gKyAgKQ0KPiA+ ICt7DQo+ID4gKyAgbVVuaXRUZXN0SG9zdEJhc2VMaWJEcls0XSA9IERyNDsNCj4gPiArICByZXR1 cm4gRHI0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBXcml0ZXMgYSB2YWx1ZSB0 byBEZWJ1ZyBSZWdpc3RlciA1IChEUjUpLg0KPiA+ICsNCj4gPiArICBXcml0ZXMgYW5kIHJldHVy bnMgYSBuZXcgdmFsdWUgdG8gRFI1LiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxl IG9uDQo+ID4gKyAgSUEtMzIgYW5kIHg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24g SUEtMzINCj4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIHg2NC4NCj4gPiArDQo+ID4gKyAgQHBhcmFt ICBEcjUgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIERyNS4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBU aGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdpc3RlciA1DQo+IChEUjUpLg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK1VJTlRODQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEhvc3RCYXNlTGli QXNtV3JpdGVEcjUgKA0KPiA+ICsgIFVJTlROICBEcjUNCj4gPiArICApDQo+ID4gK3sNCj4gPiAr ICBtVW5pdFRlc3RIb3N0QmFzZUxpYkRyWzVdID0gRHI1Ow0KPiA+ICsgIHJldHVybiBEcjU7DQo+ ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFdyaXRlcyBhIHZhbHVlIHRvIERlYnVnIFJl Z2lzdGVyIDYgKERSNikuDQo+ID4gKw0KPiA+ICsgIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2 YWx1ZSB0byBEUjYuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiAr ICBJQS0zMiBhbmQgeDY0LiBUaGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0zMg0KPiBh bmQgYSA2NC1iaXQgdmFsdWUgb24geDY0Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIERyNiBUaGUg dmFsdWUgdG8gd3JpdGUgdG8gRHI2Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSB3 cml0dGVuIHRvIERlYnVnIFJlZ2lzdGVyIDYNCj4gKERSNikuDQo+ID4gKw0KPiA+ICsqKi8NCj4g PiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21Xcml0ZURy NiAoDQo+ID4gKyAgVUlOVE4gIERyNg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIG1Vbml0VGVz dEhvc3RCYXNlTGliRHJbNl0gPSBEcjY7DQo+ID4gKyAgcmV0dXJuIERyNjsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArLyoqDQo+ID4gKyAgV3JpdGVzIGEgdmFsdWUgdG8gRGVidWcgUmVnaXN0ZXIgNyAo RFI3KS4NCj4gPiArDQo+ID4gKyAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIERS Ny4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ICsgIElBLTMyIGFu ZCB4NjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLTMyDQo+IGFuZCBhIDY0LWJp dCB2YWx1ZSBvbiB4NjQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgRHI3IFRoZSB2YWx1ZSB0byB3 cml0ZSB0byBEcjcuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8g RGVidWcgUmVnaXN0ZXIgNw0KPiAoRFI3KS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UTg0K PiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVdyaXRlRHI3ICgNCj4gPiAr ICBVSU5UTiAgRHI3DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgbVVuaXRUZXN0SG9zdEJhc2VM aWJEcls3XSA9IERyNzsNCj4gPiArICByZXR1cm4gRHI3Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBDb2RlIFNlZ21lbnQgUmVnaXN0 ZXINCj4gKENTKS4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQg dmFsdWUgb2YgQ1MuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiAr ICBJQS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVl IG9mIENTLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlQxNg0KPiA+ICtFRklBUEkNCj4gPiAr VW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWRDcyAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4g PiArew0KPiA+ICsgIHJldHVybg0KPiBtVW5pdFRlc3RIb3N0QmFzZUxpYlNlZ21lbnRbVU5JVF9U RVNUX0hPU1RfQkFTRV9MSUJfU0VHTQ0KPiBFTlRfQ1NdOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEYXRhIFNlZ21lbnQgUmVnaXN0 ZXINCj4gKERTKS4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQg dmFsdWUgb2YgRFMuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiAr ICBJQS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVl IG9mIERTLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlQxNg0KPiA+ICtFRklBUEkNCj4gPiAr VW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWREcyAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4g PiArew0KPiA+ICsgIHJldHVybg0KPiBtVW5pdFRlc3RIb3N0QmFzZUxpYlNlZ21lbnRbVU5JVF9U RVNUX0hPU1RfQkFTRV9MSUJfU0VHTQ0KPiBFTlRfRFNdOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBFeHRyYSBTZWdtZW50IFJlZ2lz dGVyDQo+IChFUykuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50 IHZhbHVlIG9mIEVTLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4g KyAgSUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgY3VycmVudCB2YWx1 ZSBvZiBFUy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UMTYNCj4gPiArRUZJQVBJDQo+ID4g K1VuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFkRXMgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ ID4gK3sNCj4gPiArICByZXR1cm4NCj4gbVVuaXRUZXN0SG9zdEJhc2VMaWJTZWdtZW50W1VOSVRf VEVTVF9IT1NUX0JBU0VfTElCX1NFR00NCj4gRU5UX0VTXTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRlMgRGF0YSBTZWdtZW50IFJl Z2lzdGVyDQo+IChGUykuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJy ZW50IHZhbHVlIG9mIEZTLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ ID4gKyAgSUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgY3VycmVudCB2 YWx1ZSBvZiBGUy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UMTYNCj4gPiArRUZJQVBJDQo+ ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFkRnMgKA0KPiA+ICsgIFZPSUQNCj4gPiArICAp DQo+ID4gK3sNCj4gPiArICByZXR1cm4NCj4gbVVuaXRUZXN0SG9zdEJhc2VMaWJTZWdtZW50W1VO SVRfVEVTVF9IT1NUX0JBU0VfTElCX1NFR00NCj4gRU5UX0ZTXTsNCj4gPiArfQ0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgR1MgRGF0YSBTZWdtZW50 IFJlZ2lzdGVyDQo+IChHUykuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBj dXJyZW50IHZhbHVlIG9mIEdTLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9u DQo+ID4gKyAgSUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgY3VycmVu dCB2YWx1ZSBvZiBHUy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UMTYNCj4gPiArRUZJQVBJ DQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFkR3MgKA0KPiA+ICsgIFZPSUQNCj4gPiAr ICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4NCj4gbVVuaXRUZXN0SG9zdEJhc2VMaWJTZWdtZW50 W1VOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1NFR00NCj4gRU5UX0dTXTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgU3RhY2sgU2VnbWVu dCBSZWdpc3Rlcg0KPiAoU1MpLg0KPiA+ICsNCj4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUg Y3VycmVudCB2YWx1ZSBvZiBTUy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBv bg0KPiA+ICsgIElBLTMyIGFuZCB4NjQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIGN1cnJl bnQgdmFsdWUgb2YgU1MuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVDE2DQo+ID4gK0VGSUFQ SQ0KPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZFNzICgNCj4gPiArICBWT0lEDQo+ID4g KyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuDQo+IG1Vbml0VGVzdEhvc3RCYXNlTGliU2VnbWVu dFtVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9TRUdNDQo+IEVOVF9TU107DQo+ID4gK30NCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIFRhc2sgUmVnaXN0 ZXIgKFRSKS4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFs dWUgb2YgVFIuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiArICBJ QS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9m IFRSLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlQxNg0KPiA+ICtFRklBUEkNCj4gPiArVW5p dFRlc3RIb3N0QmFzZUxpYkFzbVJlYWRUciAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiAr ew0KPiA+ICsgIHJldHVybg0KPiBtVW5pdFRlc3RIb3N0QmFzZUxpYlNlZ21lbnRbVU5JVF9URVNU X0hPU1RfQkFTRV9MSUJfU0VHTQ0KPiBFTlRfVFJdOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICBSZWFkcyB0aGUgY3VycmVudCBHbG9iYWwgRGVzY3JpcHRvciBUYWJsZQ0KPiBSZWdp c3RlcihHRFRSKSBkZXNjcmlwdG9yLg0KPiA+ICsNCj4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0 aGUgY3VycmVudCBHRFRSIGRlc2NyaXB0b3IgYW5kDQo+IHJldHVybnMgaXQgaW4gR2R0ci4gVGhp cw0KPiA+ICsgIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFuZCB4NjQuDQo+ ID4gKw0KPiA+ICsgIElmIEdkdHIgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPiArDQo+ID4g KyAgQHBhcmFtICBHZHRyICBUaGUgcG9pbnRlciB0byBhIEdEVFIgZGVzY3JpcHRvci4NCj4gPiAr DQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEhvc3RCYXNl TGliQXNtUmVhZEdkdHIgKA0KPiA+ICsgIE9VVCAgICAgSUEzMl9ERVNDUklQVE9SICAgICAgICAg ICAqR2R0cg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEdkdHIgPSAmbVVuaXRUZXN0SG9zdEJh c2VMaWJHZHRyOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBXcml0ZXMgdGhlIGN1 cnJlbnQgR2xvYmFsIERlc2NyaXB0b3IgVGFibGUgUmVnaXN0ZXINCj4gKEdEVFIpIGRlc2NyaXB0 b3IuDQo+ID4gKw0KPiA+ICsgIFdyaXRlcyBhbmQgdGhlIGN1cnJlbnQgR0RUUiBkZXNjcmlwdG9y IHNwZWNpZmllZCBieQ0KPiBHZHRyLiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4gKyAgb25seSBhdmFp bGFibGUgb24gSUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ID4gKyAgSWYgR2R0ciBpcyBOVUxMLCB0 aGVuIEFTU0VSVCgpLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIEdkdHIgIFRoZSBwb2ludGVyIHRv IGEgR0RUUiBkZXNjcmlwdG9yLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJ QVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21Xcml0ZUdkdHIgKA0KPiA+ICsgIElOICAg ICAgQ09OU1QgSUEzMl9ERVNDUklQVE9SICAgICAqR2R0cg0KPiA+ICsgICkNCj4gPiArew0KPiA+ ICsgIENvcHlNZW0gKCZtVW5pdFRlc3RIb3N0QmFzZUxpYkdkdHIsIEdkdHIsIHNpemVvZg0KPiAo SUEzMl9ERVNDUklQVE9SKSk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJlYWRz IHRoZSBjdXJyZW50IEludGVycnVwdCBEZXNjcmlwdG9yIFRhYmxlDQo+IFJlZ2lzdGVyKElEVFIp IGRlc2NyaXB0b3IuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50 IElEVFIgZGVzY3JpcHRvciBhbmQNCj4gcmV0dXJucyBpdCBpbiBJZHRyLiBUaGlzDQo+ID4gKyAg ZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ID4g KyAgSWYgSWR0ciBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsNCj4gPiArICBAcGFyYW0g IElkdHIgIFRoZSBwb2ludGVyIHRvIGEgSURUUiBkZXNjcmlwdG9yLg0KPiA+ICsNCj4gPiArKiov DQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFk SWR0ciAoDQo+ID4gKyAgT1VUICAgICBJQTMyX0RFU0NSSVBUT1IgICAgICAgICAgICpJZHRyDQo+ ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgSWR0ciA9ICZtVW5pdFRlc3RIb3N0QmFzZUxpYklkdHI7 DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFdyaXRlcyB0aGUgY3VycmVudCBJbnRl cnJ1cHQgRGVzY3JpcHRvciBUYWJsZQ0KPiBSZWdpc3RlcihJRFRSKSBkZXNjcmlwdG9yLg0KPiA+ ICsNCj4gPiArICBXcml0ZXMgdGhlIGN1cnJlbnQgSURUUiBkZXNjcmlwdG9yIGFuZCByZXR1cm5z IGl0DQo+IGluIElkdHIuIFRoaXMgZnVuY3Rpb24gaXMNCj4gPiArICBvbmx5IGF2YWlsYWJsZSBv biBJQS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4gPiArICBJZiBJZHRyIGlzIE5VTEwsIHRoZW4gQVNT RVJUKCkuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgSWR0ciAgVGhlIHBvaW50ZXIgdG8gYSBJRFRS IGRlc2NyaXB0b3IuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4g PiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVdyaXRlSWR0ciAoDQo+ID4gKyAgSU4gICAgICBDT05T VCBJQTMyX0RFU0NSSVBUT1IgICAgICpJZHRyDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgQ29w eU1lbSAoJm1Vbml0VGVzdEhvc3RCYXNlTGliSWR0ciwgSWR0ciwgc2l6ZW9mDQo+IChJQTMyX0RF U0NSSVBUT1IpKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmVhZHMgdGhlIGN1 cnJlbnQgTG9jYWwgRGVzY3JpcHRvciBUYWJsZQ0KPiBSZWdpc3RlcihMRFRSKSBzZWxlY3Rvci4N Cj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgMTYtYml0IExEVFIN Cj4gZGVzY3JpcHRvciB2YWx1ZS4gVGhpcyBmdW5jdGlvbiBpcw0KPiA+ICsgIG9ubHkgYXZhaWxh YmxlIG9uIElBLTMyIGFuZCB4NjQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIGN1cnJlbnQg c2VsZWN0b3Igb2YgTERULg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlQxNg0KPiA+ICtFRklB UEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWRMZHRyICgNCj4gPiArICBWT0lEDQo+ ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuDQo+IG1Vbml0VGVzdEhvc3RCYXNlTGliU2Vn bWVudFtVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9TRUdNDQo+IEVOVF9MRFRSXTsNCj4gPiArfQ0K PiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgV3JpdGVzIHRoZSBjdXJyZW50IExvY2FsIERlc2NyaXB0 b3IgVGFibGUgUmVnaXN0ZXINCj4gKExEVFIpIHNlbGVjdG9yLg0KPiA+ICsNCj4gPiArICBXcml0 ZXMgYW5kIHRoZSBjdXJyZW50IExEVFIgZGVzY3JpcHRvciBzcGVjaWZpZWQgYnkNCj4gTGR0ci4g VGhpcyBmdW5jdGlvbiBpcw0KPiA+ICsgIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFuZCB4NjQu DQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgTGR0ciAgMTYtYml0IExEVFIgc2VsZWN0b3IgdmFsdWUu DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RI b3N0QmFzZUxpYkFzbVdyaXRlTGR0ciAoDQo+ID4gKyAgSU4gICAgICBVSU5UMTYgICAgICAgICAg ICAgICAgICAgIExkdHINCj4gPiArICApDQo+ID4gK3sNCj4gPiArDQo+IG1Vbml0VGVzdEhvc3RC YXNlTGliU2VnbWVudFtVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9TRUdNDQo+IEVOVF9MRFRSXSA9 IExkdHI7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50 IHZhbHVlIG9mIGEgUGVyZm9ybWFuY2UgQ291bnRlcg0KPiAoUE1DKS4NCj4gPiArDQo+ID4gKyAg UmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgcGVyZm9ybWFuY2UNCj4gY291 bnRlciBzcGVjaWZpZWQgYnkNCj4gPiArICBJbmRleC4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2 YWlsYWJsZSBvbiBJQS0zMiBhbmQNCj4geDY0Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIEluZGV4 IFRoZSAzMi1iaXQgUGVyZm9ybWFuY2UgQ291bnRlciBpbmRleA0KPiB0byByZWFkLg0KPiA+ICsN Cj4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiB0aGUgUE1DIHNwZWNpZmllZCBieSBJbmRleC4N Cj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UNjQNCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0 SG9zdEJhc2VMaWJBc21SZWFkUG1jICgNCj4gPiArICBJTiAgICAgIFVJTlQzMiAgICAgICAgICAg ICAgICAgICAgSW5kZXgNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gMDsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgU2V0cyB1cCBhIG1vbml0b3IgYnVmZmVyIHRoYXQg aXMgdXNlZCBieQ0KPiBBc21Nd2FpdCgpLg0KPiA+ICsNCj4gPiArICBFeGVjdXRlcyBhIE1PTklU T1IgaW5zdHJ1Y3Rpb24gd2l0aCB0aGUgcmVnaXN0ZXINCj4gc3RhdGUgc3BlY2lmaWVkIGJ5IEVh eCwgRWN4DQo+ID4gKyAgYW5kIEVkeC4gUmV0dXJucyBFYXguIFRoaXMgZnVuY3Rpb24gaXMgb25s eQ0KPiBhdmFpbGFibGUgb24gSUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBF YXggVGhlIHZhbHVlIHRvIGxvYWQgaW50byBFQVggb3IgUkFYDQo+IGJlZm9yZSBleGVjdXRpbmcg dGhlIE1PTklUT1INCj4gPiArICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4NCj4gPiArICBAcGFy YW0gIEVjeCBUaGUgdmFsdWUgdG8gbG9hZCBpbnRvIEVDWCBvciBSQ1gNCj4gYmVmb3JlIGV4ZWN1 dGluZyB0aGUgTU9OSVRPUg0KPiA+ICsgICAgICAgICAgICAgIGluc3RydWN0aW9uLg0KPiA+ICsg IEBwYXJhbSAgRWR4IFRoZSB2YWx1ZSB0byBsb2FkIGludG8gRURYIG9yIFJEWA0KPiBiZWZvcmUg ZXhlY3V0aW5nIHRoZSBNT05JVE9SDQo+ID4gKyAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uDQo+ ID4gKw0KPiA+ICsgIEByZXR1cm4gRWF4DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4g PiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21Nb25pdG9yICgNCj4gPiArICBJ TiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgRWF4LA0KPiA+ICsgIElOICAgICAgVUlO VE4gICAgICAgICAgICAgICAgICAgICBFY3gsDQo+ID4gKyAgSU4gICAgICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgIEVkeA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBFYXg7DQo+ ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEV4ZWN1dGVzIGFuIE1XQUlUIGluc3RydWN0 aW9uLg0KPiA+ICsNCj4gPiArICBFeGVjdXRlcyBhbiBNV0FJVCBpbnN0cnVjdGlvbiB3aXRoIHRo ZSByZWdpc3Rlcg0KPiBzdGF0ZSBzcGVjaWZpZWQgYnkgRWF4IGFuZA0KPiA+ICsgIEVjeC4gUmV0 dXJucyBFYXguIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gb24gSUEtMzIgYW5k IHg2NC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBFYXggVGhlIHZhbHVlIHRvIGxvYWQgaW50byBF QVggb3IgUkFYDQo+IGJlZm9yZSBleGVjdXRpbmcgdGhlIE1PTklUT1INCj4gPiArICAgICAgICAg ICAgICBpbnN0cnVjdGlvbi4NCj4gPiArICBAcGFyYW0gIEVjeCBUaGUgdmFsdWUgdG8gbG9hZCBp bnRvIEVDWCBvciBSQ1gNCj4gYmVmb3JlIGV4ZWN1dGluZyB0aGUgTU9OSVRPUg0KPiA+ICsgICAg ICAgICAgICAgIGluc3RydWN0aW9uLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIEVheA0KPiA+ICsN Cj4gPiArKiovDQo+ID4gK1VJTlRODQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEhvc3RCYXNl TGliQXNtTXdhaXQgKA0KPiA+ICsgIElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBF YXgsDQo+ID4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEVjeA0KPiA+ICsg ICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBFYXg7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgIEV4ZWN1dGVzIGEgV0JJTlZEIGluc3RydWN0aW9uLg0KPiA+ICsNCj4gPiArICBFeGVj dXRlcyBhIFdCSU5WRCBpbnN0cnVjdGlvbi4gVGhpcyBmdW5jdGlvbiBpcw0KPiBvbmx5IGF2YWls YWJsZSBvbiBJQS0zMiBhbmQNCj4gPiArICB4NjQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9J RA0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVdiaW52ZCAoDQo+ID4g KyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICBFeGVjdXRlcyBhIElOVkQgaW5zdHJ1Y3Rpb24uDQo+ID4gKw0KPiA+ICsgIEV4ZWN1dGVzIGEg SU5WRCBpbnN0cnVjdGlvbi4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5DQo+IGF2YWlsYWJsZSBvbiBJ QS0zMiBhbmQNCj4gPiArICB4NjQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtF RklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbUludmQgKA0KPiA+ICsgIFZPSUQNCj4g PiArICApDQo+ID4gK3sNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRmx1c2hlcyBh IGNhY2hlIGxpbmUgZnJvbSBhbGwgdGhlIGluc3RydWN0aW9uIGFuZA0KPiBkYXRhIGNhY2hlcyB3 aXRoaW4gdGhlDQo+ID4gKyAgY29oZXJlbmN5IGRvbWFpbiBvZiB0aGUgQ1BVLg0KPiA+ICsNCj4g PiArICBGbHVzaGVkIHRoZSBjYWNoZSBsaW5lIHNwZWNpZmllZCBieSBMaW5lYXJBZGRyZXNzLA0K PiBhbmQgcmV0dXJucyBMaW5lYXJBZGRyZXNzLg0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gaXMgb25s eSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBMaW5l YXJBZGRyZXNzIFRoZSBhZGRyZXNzIG9mIHRoZSBjYWNoZSBsaW5lDQo+IHRvIGZsdXNoLiBJZiB0 aGUgQ1BVIGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgcGh5c2ljYWwgYWRk cmVzc2luZw0KPiBtb2RlLCB0aGVuIExpbmVhckFkZHJlc3MgaXMgYQ0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICBwaHlzaWNhbCBhZGRyZXNzLiBJZiB0aGUgQ1BVDQo+IGlzIGluIGEgdmly dHVhbA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzaW5nIG1vZGUsIHRoZW4N Cj4gTGluZWFyQWRkcmVzcyBpcyBhIHZpcnR1YWwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgYWRkcmVzcy4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBMaW5lYXJBZGRyZXNzLg0KPiA+ICsq Ki8NCj4gPiArVk9JRCAqDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNt Rmx1c2hDYWNoZUxpbmUgKA0KPiA+ICsgIElOICAgICAgVk9JRCAgICAgICAgICAgICAgICAgICAg ICAqTGluZWFyQWRkcmVzcw0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBMaW5lYXJB ZGRyZXNzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBFbmFibGVzIHRoZSAzMi1i aXQgcGFnaW5nIG1vZGUgb24gdGhlIENQVS4NCj4gPiArDQo+ID4gKyAgRW5hYmxlcyB0aGUgMzIt Yml0IHBhZ2luZyBtb2RlIG9uIHRoZSBDUFUuIENSMCwNCj4gQ1IzLCBDUjQsIGFuZCB0aGUgcGFn ZSB0YWJsZXMNCj4gPiArICBtdXN0IGJlIHByb3Blcmx5IGluaXRpYWxpemVkIHByaW9yIHRvIGNh bGxpbmcgdGhpcw0KPiBzZXJ2aWNlLiBUaGlzIGZ1bmN0aW9uDQo+ID4gKyAgYXNzdW1lcyB0aGUg Y3VycmVudCBleGVjdXRpb24gbW9kZSBpcyAzMi1iaXQNCj4gcHJvdGVjdGVkIG1vZGUuIFRoaXMg ZnVuY3Rpb24gaXMNCj4gPiArICBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMi4gQWZ0ZXIgdGhlIDMy LWJpdCBwYWdpbmcNCj4gbW9kZSBpcyBlbmFibGVkLCBjb250cm9sIGlzDQo+ID4gKyAgdHJhbnNm ZXJyZWQgdG8gdGhlIGZ1bmN0aW9uIHNwZWNpZmllZCBieSBFbnRyeVBvaW50DQo+IHVzaW5nIHRo ZSBuZXcgc3RhY2sNCj4gPiArICBzcGVjaWZpZWQgYnkgTmV3U3RhY2sgYW5kIHBhc3NpbmcgaW4g dGhlIHBhcmFtZXRlcnMNCj4gc3BlY2lmaWVkIGJ5IENvbnRleHQxIGFuZA0KPiA+ICsgIENvbnRl eHQyLiBDb250ZXh0MSBhbmQgQ29udGV4dDIgYXJlIG9wdGlvbmFsIGFuZA0KPiBtYXkgYmUgTlVM TC4gVGhlIGZ1bmN0aW9uDQo+ID4gKyAgRW50cnlQb2ludCBtdXN0IG5ldmVyIHJldHVybi4NCj4g PiArDQo+ID4gKyAgSWYgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIG1vZGUgaXMgbm90IDMyLWJpdA0K PiBwcm90ZWN0ZWQgbW9kZSwgdGhlbiBBU1NFUlQoKS4NCj4gPiArICBJZiBFbnRyeVBvaW50IGlz IE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4gKyAgSWYgTmV3U3RhY2sgaXMgTlVMTCwgdGhlbiBB U1NFUlQoKS4NCj4gPiArDQo+ID4gKyAgVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGNvbnN0cmFpbnRz IHRoYXQgbXVzdCBiZQ0KPiBmb2xsb3dlZCBiZWZvcmUgY2FsbGluZyB0aGlzDQo+ID4gKyAgZnVu Y3Rpb246DQo+ID4gKyAgMSkgIEludGVycnVwdHMgbXVzdCBiZSBkaXNhYmxlZC4NCj4gPiArICAy KSAgVGhlIGNhbGxlciBtdXN0IGJlIGluIDMyLWJpdCBwcm90ZWN0ZWQgbW9kZQ0KPiB3aXRoIGZs YXQgZGVzY3JpcHRvcnMuIFRoaXMNCj4gPiArICAgICAgbWVhbnMgYWxsIGRlc2NyaXB0b3JzIG11 c3QgaGF2ZSBhIGJhc2Ugb2YgMCBhbmQNCj4gYSBsaW1pdCBvZiA0R0IuDQo+ID4gKyAgMykgIENS MCBhbmQgQ1I0IG11c3QgYmUgY29tcGF0aWJsZSB3aXRoIDMyLWJpdA0KPiBwcm90ZWN0ZWQgbW9k ZSB3aXRoIGZsYXQNCj4gPiArICAgICAgZGVzY3JpcHRvcnMuDQo+ID4gKyAgNCkgIENSMyBtdXN0 IHBvaW50IHRvIHZhbGlkIHBhZ2UgdGFibGVzIHRoYXQgd2lsbA0KPiBiZSB1c2VkIG9uY2UgdGhl IHRyYW5zaXRpb24NCj4gPiArICAgICAgaXMgY29tcGxldGUsIGFuZCB0aG9zZSBwYWdlIHRhYmxl cyBtdXN0DQo+IGd1YXJhbnRlZSB0aGF0IHRoZSBwYWdlcyBmb3IgdGhpcw0KPiA+ICsgICAgICBm dW5jdGlvbiBhbmQgdGhlIHN0YWNrIGFyZSBpZGVudGl0eSBtYXBwZWQuDQo+ID4gKw0KPiA+ICsg IEBwYXJhbSAgRW50cnlQb2ludCAgQSBwb2ludGVyIHRvIGZ1bmN0aW9uIHRvIGNhbGwNCj4gd2l0 aCB0aGUgbmV3IHN0YWNrIGFmdGVyDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBwYWdpbmcg aXMgZW5hYmxlZC4NCj4gPiArICBAcGFyYW0gIENvbnRleHQxICAgIEEgcG9pbnRlciB0byB0aGUg Y29udGV4dCB0bw0KPiBwYXNzIGludG8gdGhlIEVudHJ5UG9pbnQNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgIGZ1bmN0aW9uIGFzIHRoZSBmaXJzdCBwYXJhbWV0ZXINCj4gYWZ0ZXIgcGFnaW5n IGlzIGVuYWJsZWQuDQo+ID4gKyAgQHBhcmFtICBDb250ZXh0MiAgICBBIHBvaW50ZXIgdG8gdGhl IGNvbnRleHQgdG8NCj4gcGFzcyBpbnRvIHRoZSBFbnRyeVBvaW50DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICBmdW5jdGlvbiBhcyB0aGUgc2Vjb25kDQo+IHBhcmFtZXRlciBhZnRlciBwYWdp bmcgaXMgZW5hYmxlZC4NCj4gPiArICBAcGFyYW0gIE5ld1N0YWNrICAgIEEgcG9pbnRlciB0byB0 aGUgbmV3IHN0YWNrIHRvDQo+IHVzZSBmb3IgdGhlIEVudHJ5UG9pbnQNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgIGZ1bmN0aW9uIGFmdGVyIHBhZ2luZyBpcw0KPiBlbmFibGVkLg0KPiA+ICsN Cj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VM aWJBc21FbmFibGVQYWdpbmczMiAoDQo+ID4gKyAgSU4gICAgICBTV0lUQ0hfU1RBQ0tfRU5UUllf UE9JTlQgIEVudHJ5UG9pbnQsDQo+ID4gKyAgSU4gICAgICBWT0lEICAgICAgICAgICAgICAgICAg ICAgICpDb250ZXh0MSwNCj4gT1BUSU9OQUwNCj4gPiArICBJTiAgICAgIFZPSUQgICAgICAgICAg ICAgICAgICAgICAgKkNvbnRleHQyLA0KPiBPUFRJT05BTA0KPiA+ICsgIElOICAgICAgVk9JRCAg ICAgICAgICAgICAgICAgICAgICAqTmV3U3RhY2sNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBF bnRyeVBvaW50IChDb250ZXh0MSwgQ29udGV4dDIpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICBEaXNhYmxlcyB0aGUgMzItYml0IHBhZ2luZyBtb2RlIG9uIHRoZSBDUFUuDQo+ID4g Kw0KPiA+ICsgIERpc2FibGVzIHRoZSAzMi1iaXQgcGFnaW5nIG1vZGUgb24gdGhlIENQVSBhbmQN Cj4gcmV0dXJucyB0byAzMi1iaXQgcHJvdGVjdGVkDQo+ID4gKyAgbW9kZS4gVGhpcyBmdW5jdGlv biBhc3N1bWVzIHRoZSBjdXJyZW50IGV4ZWN1dGlvbg0KPiBtb2RlIGlzIDMyLXBhZ2VkIHByb3Rl Y3RlZA0KPiA+ICsgIG1vZGUuIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24gSUEt MzIuDQo+IEFmdGVyIHRoZSAzMi1iaXQgcGFnaW5nIG1vZGUNCj4gPiArICBpcyBkaXNhYmxlZCwg Y29udHJvbCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgZnVuY3Rpb24NCj4gc3BlY2lmaWVkIGJ5IEVu dHJ5UG9pbnQNCj4gPiArICB1c2luZyB0aGUgbmV3IHN0YWNrIHNwZWNpZmllZCBieSBOZXdTdGFj ayBhbmQNCj4gcGFzc2luZyBpbiB0aGUgcGFyYW1ldGVycw0KPiA+ICsgIHNwZWNpZmllZCBieSBD b250ZXh0MSBhbmQgQ29udGV4dDIuIENvbnRleHQxIGFuZA0KPiBDb250ZXh0MiBhcmUgb3B0aW9u YWwgYW5kDQo+ID4gKyAgbWF5IGJlIE5VTEwuIFRoZSBmdW5jdGlvbiBFbnRyeVBvaW50IG11c3Qg bmV2ZXINCj4gcmV0dXJuLg0KPiA+ICsNCj4gPiArICBJZiB0aGUgY3VycmVudCBleGVjdXRpb24g bW9kZSBpcyBub3QgMzItYml0IHBhZ2VkDQo+IG1vZGUsIHRoZW4gQVNTRVJUKCkuDQo+ID4gKyAg SWYgRW50cnlQb2ludCBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsgIElmIE5ld1N0YWNr IGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4gKw0KPiA+ICsgIFRoZXJlIGFyZSBhIG51bWJl ciBvZiBjb25zdHJhaW50cyB0aGF0IG11c3QgYmUNCj4gZm9sbG93ZWQgYmVmb3JlIGNhbGxpbmcg dGhpcw0KPiA+ICsgIGZ1bmN0aW9uOg0KPiA+ICsgIDEpICBJbnRlcnJ1cHRzIG11c3QgYmUgZGlz YWJsZWQuDQo+ID4gKyAgMikgIFRoZSBjYWxsZXIgbXVzdCBiZSBpbiAzMi1iaXQgcGFnZWQgbW9k ZS4NCj4gPiArICAzKSAgQ1IwLCBDUjMsIGFuZCBDUjQgbXVzdCBiZSBjb21wYXRpYmxlIHdpdGgg MzItDQo+IGJpdCBwYWdlZCBtb2RlLg0KPiA+ICsgIDQpICBDUjMgbXVzdCBwb2ludCB0byB2YWxp ZCBwYWdlIHRhYmxlcyB0aGF0DQo+IGd1YXJhbnRlZSB0aGF0IHRoZSBwYWdlcyBmb3INCj4gPiAr ICAgICAgdGhpcyBmdW5jdGlvbiBhbmQgdGhlIHN0YWNrIGFyZSBpZGVudGl0eQ0KPiBtYXBwZWQu DQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgRW50cnlQb2ludCAgQSBwb2ludGVyIHRvIGZ1bmN0aW9u IHRvIGNhbGwNCj4gd2l0aCB0aGUgbmV3IHN0YWNrIGFmdGVyDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICBwYWdpbmcgaXMgZGlzYWJsZWQuDQo+ID4gKyAgQHBhcmFtICBDb250ZXh0MSAgICBB IHBvaW50ZXIgdG8gdGhlIGNvbnRleHQgdG8NCj4gcGFzcyBpbnRvIHRoZSBFbnRyeVBvaW50DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhcyB0aGUgZmlyc3QgcGFyYW1ldGVy DQo+IGFmdGVyIHBhZ2luZyBpcyBkaXNhYmxlZC4NCj4gPiArICBAcGFyYW0gIENvbnRleHQyICAg IEEgcG9pbnRlciB0byB0aGUgY29udGV4dCB0bw0KPiBwYXNzIGludG8gdGhlIEVudHJ5UG9pbnQN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFzIHRoZSBzZWNvbmQNCj4gcGFy YW1ldGVyIGFmdGVyIHBhZ2luZyBpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgZGlzYWJs ZWQuDQo+ID4gKyAgQHBhcmFtICBOZXdTdGFjayAgICBBIHBvaW50ZXIgdG8gdGhlIG5ldyBzdGFj ayB0bw0KPiB1c2UgZm9yIHRoZSBFbnRyeVBvaW50DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICBmdW5jdGlvbiBhZnRlciBwYWdpbmcgaXMNCj4gZGlzYWJsZWQuDQo+ID4gKw0KPiA+ICsqKi8N Cj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbURpc2Fi bGVQYWdpbmczMiAoDQo+ID4gKyAgSU4gICAgICBTV0lUQ0hfU1RBQ0tfRU5UUllfUE9JTlQgIEVu dHJ5UG9pbnQsDQo+ID4gKyAgSU4gICAgICBWT0lEICAgICAgICAgICAgICAgICAgICAgICpDb250 ZXh0MSwNCj4gT1BUSU9OQUwNCj4gPiArICBJTiAgICAgIFZPSUQgICAgICAgICAgICAgICAgICAg ICAgKkNvbnRleHQyLA0KPiBPUFRJT05BTA0KPiA+ICsgIElOICAgICAgVk9JRCAgICAgICAgICAg ICAgICAgICAgICAqTmV3U3RhY2sNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFbnRyeVBvaW50 IChDb250ZXh0MSwgQ29udGV4dDIpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBF bmFibGVzIHRoZSA2NC1iaXQgcGFnaW5nIG1vZGUgb24gdGhlIENQVS4NCj4gPiArDQo+ID4gKyAg RW5hYmxlcyB0aGUgNjQtYml0IHBhZ2luZyBtb2RlIG9uIHRoZSBDUFUuIENSMCwNCj4gQ1IzLCBD UjQsIGFuZCB0aGUgcGFnZSB0YWJsZXMNCj4gPiArICBtdXN0IGJlIHByb3Blcmx5IGluaXRpYWxp emVkIHByaW9yIHRvIGNhbGxpbmcgdGhpcw0KPiBzZXJ2aWNlLiBUaGlzIGZ1bmN0aW9uDQo+ID4g KyAgYXNzdW1lcyB0aGUgY3VycmVudCBleGVjdXRpb24gbW9kZSBpcyAzMi1iaXQNCj4gcHJvdGVj dGVkIG1vZGUgd2l0aCBmbGF0DQo+ID4gKyAgZGVzY3JpcHRvcnMuIFRoaXMgZnVuY3Rpb24gaXMg b25seSBhdmFpbGFibGUgb24gSUEtDQo+IDMyLiBBZnRlciB0aGUgNjQtYml0DQo+ID4gKyAgcGFn aW5nIG1vZGUgaXMgZW5hYmxlZCwgY29udHJvbCBpcyB0cmFuc2ZlcnJlZCB0bw0KPiB0aGUgZnVu Y3Rpb24gc3BlY2lmaWVkIGJ5DQo+ID4gKyAgRW50cnlQb2ludCB1c2luZyB0aGUgbmV3IHN0YWNr IHNwZWNpZmllZCBieQ0KPiBOZXdTdGFjayBhbmQgcGFzc2luZyBpbiB0aGUNCj4gPiArICBwYXJh bWV0ZXJzIHNwZWNpZmllZCBieSBDb250ZXh0MSBhbmQgQ29udGV4dDIuDQo+IENvbnRleHQxIGFu ZCBDb250ZXh0MiBhcmUNCj4gPiArICBvcHRpb25hbCBhbmQgbWF5IGJlIDAuIFRoZSBmdW5jdGlv biBFbnRyeVBvaW50IG11c3QNCj4gbmV2ZXIgcmV0dXJuLg0KPiA+ICsNCj4gPiArICBJZiB0aGUg Y3VycmVudCBleGVjdXRpb24gbW9kZSBpcyBub3QgMzItYml0DQo+IHByb3RlY3RlZCBtb2RlIHdp dGggZmxhdA0KPiA+ICsgIGRlc2NyaXB0b3JzLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsgIElmIEVu dHJ5UG9pbnQgaXMgMCwgdGhlbiBBU1NFUlQoKS4NCj4gPiArICBJZiBOZXdTdGFjayBpcyAwLCB0 aGVuIEFTU0VSVCgpLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIENzICAgICAgICAgIFRoZSAxNi1i aXQgc2VsZWN0b3IgdG8gbG9hZCBpbg0KPiB0aGUgQ1MgYmVmb3JlIEVudHJ5UG9pbnQNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgIGlzIGNhbGxlZC4gVGhlIGRlc2NyaXB0b3IgaW4NCj4gdGhl IEdEVCB0aGF0IHRoaXMgc2VsZWN0b3INCj4gPiArICAgICAgICAgICAgICAgICAgICAgIHJlZmVy ZW5jZXMgbXVzdCBiZSBzZXR1cCBmb3INCj4gbG9uZyBtb2RlLg0KPiA+ICsgIEBwYXJhbSAgRW50 cnlQb2ludCAgVGhlIDY0LWJpdCB2aXJ0dWFsIGFkZHJlc3Mgb2YNCj4gdGhlIGZ1bmN0aW9uIHRv IGNhbGwgd2l0aA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgdGhlIG5ldyBzdGFjayBhZnRl ciBwYWdpbmcgaXMNCj4gZW5hYmxlZC4NCj4gPiArICBAcGFyYW0gIENvbnRleHQxICAgIFRoZSA2 NC1iaXQgdmlydHVhbCBhZGRyZXNzIG9mDQo+IHRoZSBjb250ZXh0IHRvIHBhc3MgaW50bw0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgdGhlIEVudHJ5UG9pbnQgZnVuY3Rpb24gYXMgdGhlDQo+ IGZpcnN0IHBhcmFtZXRlciBhZnRlcg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgcGFnaW5n IGlzIGVuYWJsZWQuDQo+ID4gKyAgQHBhcmFtICBDb250ZXh0MiAgICBUaGUgNjQtYml0IHZpcnR1 YWwgYWRkcmVzcyBvZg0KPiB0aGUgY29udGV4dCB0byBwYXNzIGludG8NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgIHRoZSBFbnRyeVBvaW50IGZ1bmN0aW9uIGFzIHRoZQ0KPiBzZWNvbmQgcGFy YW1ldGVyIGFmdGVyDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBwYWdpbmcgaXMgZW5hYmxl ZC4NCj4gPiArICBAcGFyYW0gIE5ld1N0YWNrICAgIFRoZSA2NC1iaXQgdmlydHVhbCBhZGRyZXNz IG9mDQo+IHRoZSBuZXcgc3RhY2sgdG8gdXNlIGZvcg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgdGhlIEVudHJ5UG9pbnQgZnVuY3Rpb24gYWZ0ZXINCj4gcGFnaW5nIGlzIGVuYWJsZWQuDQo+ ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RIb3N0 QmFzZUxpYkFzbUVuYWJsZVBhZ2luZzY0ICgNCj4gPiArICBJTiAgICAgIFVJTlQxNiAgICAgICAg ICAgICAgICAgICAgQ3MsDQo+ID4gKyAgSU4gICAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAg IEVudHJ5UG9pbnQsDQo+ID4gKyAgSU4gICAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIENv bnRleHQxLA0KPiBPUFRJT05BTA0KPiA+ICsgIElOICAgICAgVUlOVDY0ICAgICAgICAgICAgICAg ICAgICBDb250ZXh0MiwNCj4gT1BUSU9OQUwNCj4gPiArICBJTiAgICAgIFVJTlQ2NCAgICAgICAg ICAgICAgICAgICAgTmV3U3RhY2sNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBTV0lUQ0hfU1RB Q0tfRU5UUllfUE9JTlQgIE5ld0VudHJ5UG9pbnQ7DQo+ID4gKw0KPiA+ICsgIE5ld0VudHJ5UG9p bnQgPQ0KPiAoU1dJVENIX1NUQUNLX0VOVFJZX1BPSU5UKShVSU5UTikoRW50cnlQb2ludCk7DQo+ ID4gKyAgTmV3RW50cnlQb2ludCAoKFZPSUQgKikoVUlOVE4pQ29udGV4dDEsIChWT0lEDQo+ICop KFVJTlROKUNvbnRleHQyKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRGlzYWJs ZXMgdGhlIDY0LWJpdCBwYWdpbmcgbW9kZSBvbiB0aGUgQ1BVLg0KPiA+ICsNCj4gPiArICBEaXNh YmxlcyB0aGUgNjQtYml0IHBhZ2luZyBtb2RlIG9uIHRoZSBDUFUgYW5kDQo+IHJldHVybnMgdG8g MzItYml0IHByb3RlY3RlZA0KPiA+ICsgIG1vZGUuIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGUg Y3VycmVudCBleGVjdXRpb24NCj4gbW9kZSBpcyA2NC1wYWdpbmcgbW9kZS4NCj4gPiArICBUaGlz IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uIHg2NC4gQWZ0ZXIgdGhlDQo+IDY0LWJpdCBw YWdpbmcgbW9kZSBpcw0KPiA+ICsgIGRpc2FibGVkLCBjb250cm9sIGlzIHRyYW5zZmVycmVkIHRv IHRoZSBmdW5jdGlvbg0KPiBzcGVjaWZpZWQgYnkgRW50cnlQb2ludA0KPiA+ICsgIHVzaW5nIHRo ZSBuZXcgc3RhY2sgc3BlY2lmaWVkIGJ5IE5ld1N0YWNrIGFuZA0KPiBwYXNzaW5nIGluIHRoZSBw YXJhbWV0ZXJzDQo+ID4gKyAgc3BlY2lmaWVkIGJ5IENvbnRleHQxIGFuZCBDb250ZXh0Mi4gQ29u dGV4dDEgYW5kDQo+IENvbnRleHQyIGFyZSBvcHRpb25hbCBhbmQNCj4gPiArICBtYXkgYmUgMC4g VGhlIGZ1bmN0aW9uIEVudHJ5UG9pbnQgbXVzdCBuZXZlcg0KPiByZXR1cm4uDQo+ID4gKw0KPiA+ ICsgIElmIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBtb2RlIGlzIG5vdCA2NC1iaXQgcGFnZWQNCj4g bW9kZSwgdGhlbiBBU1NFUlQoKS4NCj4gPiArICBJZiBFbnRyeVBvaW50IGlzIDAsIHRoZW4gQVNT RVJUKCkuDQo+ID4gKyAgSWYgTmV3U3RhY2sgaXMgMCwgdGhlbiBBU1NFUlQoKS4NCj4gPiArDQo+ ID4gKyAgQHBhcmFtICBDcyAgICAgICAgICBUaGUgMTYtYml0IHNlbGVjdG9yIHRvIGxvYWQgaW4N Cj4gdGhlIENTIGJlZm9yZSBFbnRyeVBvaW50DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBp cyBjYWxsZWQuIFRoZSBkZXNjcmlwdG9yIGluDQo+IHRoZSBHRFQgdGhhdCB0aGlzIHNlbGVjdG9y DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzIG11c3QgYmUgc2V0dXAgZm9y DQo+IDMyLWJpdCBwcm90ZWN0ZWQgbW9kZS4NCj4gPiArICBAcGFyYW0gIEVudHJ5UG9pbnQgIFRo ZSA2NC1iaXQgdmlydHVhbCBhZGRyZXNzIG9mDQo+IHRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGgN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgIHRoZSBuZXcgc3RhY2sgYWZ0ZXIgcGFnaW5nIGlz DQo+IGRpc2FibGVkLg0KPiA+ICsgIEBwYXJhbSAgQ29udGV4dDEgICAgVGhlIDY0LWJpdCB2aXJ0 dWFsIGFkZHJlc3Mgb2YNCj4gdGhlIGNvbnRleHQgdG8gcGFzcyBpbnRvDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICB0aGUgRW50cnlQb2ludCBmdW5jdGlvbiBhcyB0aGUNCj4gZmlyc3QgcGFy YW1ldGVyIGFmdGVyDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBwYWdpbmcgaXMgZGlzYWJs ZWQuDQo+ID4gKyAgQHBhcmFtICBDb250ZXh0MiAgICBUaGUgNjQtYml0IHZpcnR1YWwgYWRkcmVz cyBvZg0KPiB0aGUgY29udGV4dCB0byBwYXNzIGludG8NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgIHRoZSBFbnRyeVBvaW50IGZ1bmN0aW9uIGFzIHRoZQ0KPiBzZWNvbmQgcGFyYW1ldGVyIGFm dGVyDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBwYWdpbmcgaXMgZGlzYWJsZWQuDQo+ID4g KyAgQHBhcmFtICBOZXdTdGFjayAgICBUaGUgNjQtYml0IHZpcnR1YWwgYWRkcmVzcyBvZg0KPiB0 aGUgbmV3IHN0YWNrIHRvIHVzZSBmb3INCj4gPiArICAgICAgICAgICAgICAgICAgICAgIHRoZSBF bnRyeVBvaW50IGZ1bmN0aW9uIGFmdGVyDQo+IHBhZ2luZyBpcyBkaXNhYmxlZC4NCj4gPiArDQo+ ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEhvc3RCYXNlTGli QXNtRGlzYWJsZVBhZ2luZzY0ICgNCj4gPiArICBJTiAgICAgIFVJTlQxNiAgICAgICAgICAgICAg ICAgICAgQ3MsDQo+ID4gKyAgSU4gICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIEVudHJ5 UG9pbnQsDQo+ID4gKyAgSU4gICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIENvbnRleHQx LA0KPiBPUFRJT05BTA0KPiA+ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBD b250ZXh0MiwNCj4gT1BUSU9OQUwNCj4gPiArICBJTiAgICAgIFVJTlQzMiAgICAgICAgICAgICAg ICAgICAgTmV3U3RhY2sNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBTV0lUQ0hfU1RBQ0tfRU5U UllfUE9JTlQgIE5ld0VudHJ5UG9pbnQ7DQo+ID4gKw0KPiA+ICsgIE5ld0VudHJ5UG9pbnQgPQ0K PiAoU1dJVENIX1NUQUNLX0VOVFJZX1BPSU5UKShVSU5UTikoRW50cnlQb2ludCk7DQo+ID4gKyAg TmV3RW50cnlQb2ludCAoKFZPSUQgKikoVUlOVE4pQ29udGV4dDEsIChWT0lEDQo+ICopKFVJTlRO KUNvbnRleHQyKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmV0cmlldmVzIHRo ZSBwcm9wZXJ0aWVzIGZvciAxNi1iaXQgdGh1bmsNCj4gZnVuY3Rpb25zLg0KPiA+ICsNCj4gPiAr ICBDb21wdXRlcyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIGFuZCBzdGFjayBiZWxvdyAxTUINCj4g cmVxdWlyZWQgdG8gdXNlIHRoZQ0KPiA+ICsgIEFzbVByZXBhcmVUaHVuazE2KCksIEFzbVRodW5r MTYoKSBhbmQNCj4gQXNtUHJlcGFyZUFuZFRodW5rMTYoKSBmdW5jdGlvbnMuIFRoaXMNCj4gPiAr ICBidWZmZXIgc2l6ZSBpcyByZXR1cm5lZCBpbiBSZWFsTW9kZUJ1ZmZlclNpemUsIGFuZA0KPiB0 aGUgc3RhY2sgc2l6ZSBpcyByZXR1cm5lZA0KPiA+ICsgIGluIEV4dHJhU3RhY2tTaXplLiBJZiBw YXJhbWV0ZXJzIGFyZSBwYXNzZWQgdG8gdGhlDQo+IDE2LWJpdCByZWFsIG1vZGUgY29kZSwNCj4g PiArICB0aGVuIHRoZSBhY3R1YWwgbWluaW11bSBzdGFjayBzaXplIGlzDQo+IEV4dHJhU3RhY2tT aXplIHBsdXMgdGhlIG1heGltdW0gbnVtYmVyDQo+ID4gKyAgb2YgYnl0ZXMgdGhhdCBuZWVkIHRv IGJlIHBhc3NlZCB0byB0aGUgMTYtYml0IHJlYWwNCj4gbW9kZSBjb2RlLg0KPiA+ICsNCj4gPiAr ICBJZiBSZWFsTW9kZUJ1ZmZlclNpemUgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPiArICBJ ZiBFeHRyYVN0YWNrU2l6ZSBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsNCj4gPiArICBA cGFyYW0gIFJlYWxNb2RlQnVmZmVyU2l6ZSAgQSBwb2ludGVyIHRvIHRoZSBzaXplDQo+IG9mIHRo ZSBidWZmZXIgYmVsb3cgMU1CDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl cXVpcmVkIHRvIHVzZSB0aGUgMTYtDQo+IGJpdCB0aHVuayBmdW5jdGlvbnMuDQo+ID4gKyAgQHBh cmFtICBFeHRyYVN0YWNrU2l6ZSAgICAgIEEgcG9pbnRlciB0byB0aGUgZXh0cmENCj4gc2l6ZSBv ZiBzdGFjayBiZWxvdyAxTUINCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhh dCB0aGUgMTYtYml0IHRodW5rDQo+IGZ1bmN0aW9ucyByZXF1aXJlIGZvcg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0ZW1wb3Jhcnkgc3RvcmFnZSBpbg0KPiB0aGUgdHJhbnNp dGlvbiB0byBhbmQgZnJvbQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi1i aXQgcmVhbCBtb2RlLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21HZXRUaHVuazE2UHJvcGVydGllcyAoDQo+ID4gKyAg T1VUICAgICBVSU5UMzINCj4gKlJlYWxNb2RlQnVmZmVyU2l6ZSwNCj4gPiArICBPVVQgICAgIFVJ TlQzMiAgICAgICAgICAgICAgICAgICAgKkV4dHJhU3RhY2tTaXplDQo+ID4gKyAgKQ0KPiA+ICt7 DQo+ID4gKyAgKlJlYWxNb2RlQnVmZmVyU2l6ZSA9IDA7DQo+ID4gKyAgKkV4dHJhU3RhY2tTaXpl ICAgICA9IDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFByZXBhcmVzIGFsbCBz dHJ1Y3R1cmVzIGEgY29kZSByZXF1aXJlZCB0byB1c2UNCj4gQXNtVGh1bmsxNigpLg0KPiA+ICsN Cj4gPiArICBQcmVwYXJlcyBhbGwgc3RydWN0dXJlcyBhbmQgY29kZSByZXF1aXJlZCB0byB1c2UN Cj4gQXNtVGh1bmsxNigpLg0KPiA+ICsNCj4gPiArICBUaGlzIGludGVyZmFjZSBpcyBsaW1pdGVk IHRvIGJlIHVzZWQgaW4gZWl0aGVyDQo+IHBoeXNpY2FsIG1vZGUgb3IgdmlydHVhbCBtb2RlcyB3 aXRoIHBhZ2luZyBlbmFibGVkIHdoZXJlDQo+IHRoZQ0KPiA+ICsgIHZpcnR1YWwgdG8gcGh5c2lj YWwgbWFwcGluZ3MgZm9yDQo+IFRodW5rQ29udGV4dC5SZWFsTW9kZUJ1ZmZlciBpcyBtYXBwZWQg MToxLg0KPiA+ICsNCj4gPiArICBJZiBUaHVua0NvbnRleHQgaXMgTlVMTCwgdGhlbiBBU1NFUlQo KS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBUaHVua0NvbnRleHQgIEEgcG9pbnRlciB0byB0aGUg Y29udGV4dA0KPiBzdHJ1Y3R1cmUgdGhhdCBkZXNjcmliZXMgdGhlDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIDE2LWJpdCByZWFsIG1vZGUgY29kZSB0bw0KPiBjYWxsLg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJB c21QcmVwYXJlVGh1bmsxNiAoDQo+ID4gKyAgSU4gT1VUICBUSFVOS19DT05URVhUICAgICAgICAg ICAgICpUaHVua0NvbnRleHQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAgVHJhbnNmZXJzIGNvbnRyb2wgdG8gYSAxNi1iaXQgcmVhbCBtb2RlIGVudHJ5 IHBvaW50DQo+IGFuZCByZXR1cm5zIHRoZSByZXN1bHRzLg0KPiA+ICsNCj4gPiArICBUcmFuc2Zl cnMgY29udHJvbCB0byBhIDE2LWJpdCByZWFsIG1vZGUgZW50cnkgcG9pbnQNCj4gYW5kIHJldHVy bnMgdGhlIHJlc3VsdHMuDQo+ID4gKyAgQXNtUHJlcGFyZVRodW5rMTYoKSBtdXN0IGJlIGNhbGxl ZCB3aXRoDQo+IFRodW5rQ29udGV4dCBiZWZvcmUgdGhpcyBmdW5jdGlvbiBpcyB1c2VkLg0KPiA+ ICsgIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgd2l0aCBpbnRlcnJ1cHRzDQo+IGRpc2Fi bGVkLg0KPiA+ICsNCj4gPiArICBUaGUgcmVnaXN0ZXIgc3RhdGUgZnJvbSB0aGUgUmVhbE1vZGVT dGF0ZSBmaWVsZCBvZg0KPiBUaHVua0NvbnRleHQgaXMgcmVzdG9yZWQganVzdCBwcmlvcg0KPiA+ ICsgIHRvIGNhbGxpbmcgdGhlIDE2LWJpdCByZWFsIG1vZGUgZW50cnkgcG9pbnQuICBUaGlzDQo+ IGluY2x1ZGVzIHRoZSBFRkxBR1MgZmllbGQgb2YgUmVhbE1vZGVTdGF0ZSwNCj4gPiArICB3aGlj aCBpcyB1c2VkIHRvIHNldCB0aGUgaW50ZXJydXB0IHN0YXRlIHdoZW4gYSAxNi0NCj4gYml0IHJl YWwgbW9kZSBlbnRyeSBwb2ludCBpcyBjYWxsZWQuDQo+ID4gKyAgQ29udHJvbCBpcyB0cmFuc2Zl cnJlZCB0byB0aGUgMTYtYml0IHJlYWwgbW9kZQ0KPiBlbnRyeSBwb2ludCBzcGVjaWZpZWQgYnkg dGhlIENTIGFuZCBFaXAgZmllbGRzIG9mDQo+IFJlYWxNb2RlU3RhdGUuDQo+ID4gKyAgVGhlIHN0 YWNrIGlzIGluaXRpYWxpemVkIHRvIHRoZSBTUyBhbmQgRVNQIGZpZWxkcw0KPiBvZiBSZWFsTW9k ZVN0YXRlLiAgQW55IHBhcmFtZXRlcnMgcGFzc2VkIHRvDQo+ID4gKyAgdGhlIDE2LWJpdCByZWFs IG1vZGUgY29kZSBtdXN0IGJlIHBvcHVsYXRlZCBieSB0aGUNCj4gY2FsbGVyIGF0IFNTOkVTUCBw cmlvciB0byBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uDQo+ID4gKyAgVGhlIDE2LWJpdCByZWFsIG1v ZGUgZW50cnkgcG9pbnQgaXMgaW52b2tlZCB3aXRoIGENCj4gMTYtYml0IENBTEwgRkFSIGluc3Ry dWN0aW9uLA0KPiA+ICsgIHNvIHdoZW4gYWNjZXNzaW5nIHN0YWNrIGNvbnRlbnRzLCB0aGUgMTYt Yml0IHJlYWwNCj4gbW9kZSBjb2RlIG11c3QgYWNjb3VudCBmb3IgdGhlIDE2LWJpdCBzZWdtZW50 DQo+ID4gKyAgYW5kIDE2LWJpdCBvZmZzZXQgb2YgdGhlIHJldHVybiBhZGRyZXNzIHRoYXQgd2Vy ZQ0KPiBwdXNoZWQgb250byB0aGUgc3RhY2suIFRoZSAxNi1iaXQgcmVhbCBtb2RlIGVudHJ5DQo+ ID4gKyAgcG9pbnQgbXVzdCBleGl0IHdpdGggYSBSRVRGIGluc3RydWN0aW9uLiBUaGUNCj4gcmVn aXN0ZXIgc3RhdGUgaXMgY2FwdHVyZWQgaW50byBSZWFsTW9kZVN0YXRlDQo+IGltbWVkaWF0ZWx5 DQo+ID4gKyAgYWZ0ZXIgdGhlIFJFVEYgaW5zdHJ1Y3Rpb24gaXMgZXhlY3V0ZWQuDQo+ID4gKw0K PiA+ICsgIElmIEVGTEFHUyBzcGVjaWZpZXMgaW50ZXJydXB0cyBlbmFibGVkLCBvciBhbnkgb2YN Cj4gdGhlIDE2LWJpdCByZWFsIG1vZGUgY29kZSBlbmFibGVzIGludGVycnVwdHMsDQo+ID4gKyAg b3IgYW55IG9mIHRoZSAxNi1iaXQgcmVhbCBtb2RlIGNvZGUgbWFrZXMgYSBTVw0KPiBpbnRlcnJ1 cHQsIHRoZW4gdGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgbWFraW5nDQo+IHN1cmUNCj4g PiArICB0aGUgSURUIGF0IGFkZHJlc3MgMCBpcyBpbml0aWFsaXplZCB0byBoYW5kbGUgYW55DQo+ IEhXIG9yIFNXIGludGVycnVwdHMgdGhhdCBtYXkgb2NjdXIgd2hpbGUgaW4gMTYtYml0IHJlYWwN Cj4gbW9kZS4NCj4gPiArDQo+ID4gKyAgSWYgRUZMQUdTIHNwZWNpZmllcyBpbnRlcnJ1cHRzIGVu YWJsZWQsIG9yIGFueSBvZg0KPiB0aGUgMTYtYml0IHJlYWwgbW9kZSBjb2RlIGVuYWJsZXMgaW50 ZXJydXB0cywNCj4gPiArICB0aGVuIHRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIG1ha2lu ZyBzdXJlIHRoZQ0KPiA4MjU5IFBJQyBpcyBpbiBhIHN0YXRlIGNvbXBhdGlibGUgd2l0aCAxNi1i aXQgcmVhbCBtb2RlLg0KPiA+ICsgIFRoaXMgaW5jbHVkZXMgdGhlIGJhc2UgdmVjdG9ycywgdGhl IGludGVycnVwdA0KPiBtYXNrcywgYW5kIHRoZSBlZGdlL2xldmVsIHRyaWdnZXIgbW9kZS4NCj4g PiArDQo+ID4gKyAgSWYgVEhVTktfQVRUUklCVVRFX0JJR19SRUFMX01PREUgaXMgc2V0IGluIHRo ZQ0KPiBUaHVua0F0dHJpYnV0ZXMgZmllbGQgb2YgVGh1bmtDb250ZXh0LCB0aGVuIHRoZSB1c2Vy DQo+IGNvZGUNCj4gPiArICBpcyBpbnZva2VkIGluIGJpZyByZWFsIG1vZGUuICBPdGhlcndpc2Us IHRoZSB1c2VyDQo+IGNvZGUgaXMgaW52b2tlZCBpbiAxNi1iaXQgcmVhbCBtb2RlIHdpdGggNjRL QiBzZWdtZW50DQo+IGxpbWl0cy4NCj4gPiArDQo+ID4gKyAgSWYgbmVpdGhlciBUSFVOS19BVFRS SUJVVEVfRElTQUJMRV9BMjBfTUFTS19JTlRfMTUNCj4gbm9yIFRIVU5LX0FUVFJJQlVURV9ESVNB QkxFX0EyMF9NQVNLX0tCRF9DVFJMIGFyZSBzZXQgaW4NCj4gPiArICBUaHVua0F0dHJpYnV0ZXMs IHRoZW4gaXQgaXMgYXNzdW1lZCB0aGF0IHRoZSB1c2VyDQo+IGNvZGUgZGlkIG5vdCBlbmFibGUg dGhlIEEyMCBtYXNrLCBhbmQgbm8gYXR0ZW1wdCBpcyBtYWRlDQo+IHRvDQo+ID4gKyAgZGlzYWJs ZSB0aGUgQTIwIG1hc2suDQo+ID4gKw0KPiA+ICsgIElmIFRIVU5LX0FUVFJJQlVURV9ESVNBQkxF X0EyMF9NQVNLX0lOVF8xNSBpcyBzZXQNCj4gYW5kIFRIVU5LX0FUVFJJQlVURV9ESVNBQkxFX0Ey MF9NQVNLX0tCRF9DVFJMIGlzIGNsZWFyDQo+IGluDQo+ID4gKyAgVGh1bmtBdHRyaWJ1dGVzLCB0 aGVuIGF0dGVtcHQgdG8gdXNlIHRoZSBJTlQgMTUNCj4gc2VydmljZSB0byBkaXNhYmxlIHRoZSBB MjAgbWFzay4gIElmIHRoaXMgSU5UIDE1IGNhbGwNCj4gZmFpbHMsDQo+ID4gKyAgdGhlbiBhdHRl bXB0IHRvIGRpc2FibGUgdGhlIEEyMCBtYXNrIGJ5IGRpcmVjdGx5DQo+IGFjY2Vzc2luZyB0aGUg ODA0MiBrZXlib2FyZCBjb250cm9sbGVyIEkvTyBwb3J0cy4NCj4gPiArDQo+ID4gKyAgSWYgVEhV TktfQVRUUklCVVRFX0RJU0FCTEVfQTIwX01BU0tfSU5UXzE1IGlzIGNsZWFyDQo+IGFuZCBUSFVO S19BVFRSSUJVVEVfRElTQUJMRV9BMjBfTUFTS19LQkRfQ1RSTCBpcyBzZXQgaW4NCj4gPiArICBU aHVua0F0dHJpYnV0ZXMsIHRoZW4gYXR0ZW1wdCB0byBkaXNhYmxlIHRoZSBBMjANCj4gbWFzayBi eSBkaXJlY3RseSBhY2Nlc3NpbmcgdGhlIDgwNDIga2V5Ym9hcmQgY29udHJvbGxlcg0KPiBJL08g cG9ydHMuDQo+ID4gKw0KPiA+ICsgIElmIFRodW5rQ29udGV4dCBpcyBOVUxMLCB0aGVuIEFTU0VS VCgpLg0KPiA+ICsgIElmIEFzbVByZXBhcmVUaHVuazE2KCkgd2FzIG5vdCBwcmV2aW91c2x5IGNh bGxlZA0KPiB3aXRoIFRodW5rQ29udGV4dCwgdGhlbiBBU1NFUlQoKS4NCj4gPiArICBJZiBib3Ro IFRIVU5LX0FUVFJJQlVURV9ESVNBQkxFX0EyMF9NQVNLX0lOVF8xNSBhbmQNCj4gVEhVTktfQVRU UklCVVRFX0RJU0FCTEVfQTIwX01BU0tfS0JEX0NUUkwgYXJlIHNldCBpbg0KPiA+ICsgIFRodW5r QXR0cmlidXRlcywgdGhlbiBBU1NFUlQoKS4NCj4gPiArDQo+ID4gKyAgVGhpcyBpbnRlcmZhY2Ug aXMgbGltaXRlZCB0byBiZSB1c2VkIGluIGVpdGhlcg0KPiBwaHlzaWNhbCBtb2RlIG9yIHZpcnR1 YWwgbW9kZXMgd2l0aCBwYWdpbmcgZW5hYmxlZCB3aGVyZQ0KPiB0aGUNCj4gPiArICB2aXJ0dWFs IHRvIHBoeXNpY2FsIG1hcHBpbmdzIGZvcg0KPiBUaHVua0NvbnRleHQuUmVhbE1vZGVCdWZmZXIg YXJlIG1hcHBlZCAxOjEuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgVGh1bmtDb250ZXh0ICBBIHBv aW50ZXIgdG8gdGhlIGNvbnRleHQNCj4gc3RydWN0dXJlIHRoYXQgZGVzY3JpYmVzIHRoZQ0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAxNi1iaXQgcmVhbCBtb2RlIGNvZGUgdG8NCj4gY2Fs bC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVz dEhvc3RCYXNlTGliQXNtVGh1bmsxNiAoDQo+ID4gKyAgSU4gT1VUICBUSFVOS19DT05URVhUICAg ICAgICAgICAgICpUaHVua0NvbnRleHQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArfQ0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAgUHJlcGFyZXMgYWxsIHN0cnVjdHVyZXMgYW5kIGNvZGUgZm9yIGEg MTYtYml0IHJlYWwNCj4gbW9kZSB0aHVuaywgdHJhbnNmZXJzDQo+ID4gKyAgY29udHJvbCB0byBh IDE2LWJpdCByZWFsIG1vZGUgZW50cnkgcG9pbnQsIGFuZA0KPiByZXR1cm5zIHRoZSByZXN1bHRz Lg0KPiA+ICsNCj4gPiArICBQcmVwYXJlcyBhbGwgc3RydWN0dXJlcyBhbmQgY29kZSBmb3IgYSAx Ni1iaXQgcmVhbA0KPiBtb2RlIHRodW5rLCB0cmFuc2ZlcnMNCj4gPiArICBjb250cm9sIHRvIGEg MTYtYml0IHJlYWwgbW9kZSBlbnRyeSBwb2ludCwgYW5kDQo+IHJldHVybnMgdGhlIHJlc3VsdHMu IElmIHRoZQ0KPiA+ICsgIGNhbGxlciBvbmx5IG5lZWQgdG8gcGVyZm9ybSBhIHNpbmdsZSAxNi1i aXQgcmVhbA0KPiBtb2RlIHRodW5rLCB0aGVuIHRoaXMNCj4gPiArICBzZXJ2aWNlIHNob3VsZCBi ZSB1c2VkLiBJZiB0aGUgY2FsbGVyIGludGVuZHMgdG8NCj4gbWFrZSBtb3JlIHRoYW4gb25lIDE2 LWJpdA0KPiA+ICsgIHJlYWwgbW9kZSB0aHVuaywgdGhlbiBpdCBpcyBtb3JlIGVmZmljaWVudCBp Zg0KPiBBc21QcmVwYXJlVGh1bmsxNigpIGlzIGNhbGxlZA0KPiA+ICsgIG9uY2UgYW5kIEFzbVRo dW5rMTYoKSBjYW4gYmUgY2FsbGVkIGZvciBlYWNoIDE2LWJpdA0KPiByZWFsIG1vZGUgdGh1bmsu DQo+ID4gKw0KPiA+ICsgIFRoaXMgaW50ZXJmYWNlIGlzIGxpbWl0ZWQgdG8gYmUgdXNlZCBpbiBl aXRoZXINCj4gcGh5c2ljYWwgbW9kZSBvciB2aXJ0dWFsIG1vZGVzIHdpdGggcGFnaW5nIGVuYWJs ZWQgd2hlcmUNCj4gdGhlDQo+ID4gKyAgdmlydHVhbCB0byBwaHlzaWNhbCBtYXBwaW5ncyBmb3IN Cj4gVGh1bmtDb250ZXh0LlJlYWxNb2RlQnVmZmVyIGlzIG1hcHBlZCAxOjEuDQo+ID4gKw0KPiA+ ICsgIFNlZSBBc21QcmVwYXJlVGh1bmsxNigpIGFuZCBBc21UaHVuazE2KCkgZm9yIHRoZQ0KPiBk ZXRhaWxlZCBkZXNjcmlwdGlvbiBhbmQgQVNTRVJUKCkgY29uZGl0aW9ucy4NCj4gPiArDQo+ID4g KyAgQHBhcmFtICBUaHVua0NvbnRleHQgIEEgcG9pbnRlciB0byB0aGUgY29udGV4dA0KPiBzdHJ1 Y3R1cmUgdGhhdCBkZXNjcmliZXMgdGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIDE2 LWJpdCByZWFsIG1vZGUgY29kZSB0bw0KPiBjYWxsLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1ZP SUQNCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21QcmVwYXJlQW5kVGh1 bmsxNiAoDQo+ID4gKyAgSU4gT1VUICBUSFVOS19DT05URVhUICAgICAgICAgICAgICpUaHVua0Nv bnRleHQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAg TG9hZCBnaXZlbiBzZWxlY3RvciBpbnRvIFRSIHJlZ2lzdGVyLg0KPiA+ICsNCj4gPiArICBAcGFy YW1baW5dIFNlbGVjdG9yICAgICBUYXNrIHNlZ21lbnQgc2VsZWN0b3INCj4gPiArKiovDQo+ID4g K1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21Xcml0ZVRyICgN Cj4gPiArICBJTiBVSU5UMTYgU2VsZWN0b3INCj4gPiArICApDQo+ID4gK3sNCj4gPiArDQo+IG1V bml0VGVzdEhvc3RCYXNlTGliU2VnbWVudFtVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9TRUdNDQo+ IEVOVF9UUl0gPSBTZWxlY3RvcjsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUGVy Zm9ybXMgYSBzZXJpYWxpemluZyBvcGVyYXRpb24gb24gYWxsIGxvYWQtZnJvbS0NCj4gbWVtb3J5 IGluc3RydWN0aW9ucyB0aGF0DQo+ID4gKyAgd2VyZSBpc3N1ZWQgcHJpb3IgdGhlIEFzbUxmZW5j ZSBmdW5jdGlvbi4NCj4gPiArDQo+ID4gKyAgRXhlY3V0ZXMgYSBMRkVOQ0UgaW5zdHJ1Y3Rpb24u IFRoaXMgZnVuY3Rpb24gaXMNCj4gb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIHg2NC4NCj4g PiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEhvc3RC YXNlTGliQXNtTGZlbmNlICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gK30N Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFBhdGNoIHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBvZiBh biBJQTMyIG9yIFg2NA0KPiBpbnN0cnVjdGlvbiBzdWNoIHRoYXQgdGhlIGJ5dGUsDQo+ID4gKyAg d29yZCwgZHdvcmQgb3IgcXdvcmQgb3BlcmFuZCBpcyBlbmNvZGVkIGF0IHRoZSBlbmQNCj4gb2Yg dGhlIGluc3RydWN0aW9uJ3MNCj4gPiArICBiaW5hcnkgcmVwcmVzZW50YXRpb24uDQo+ID4gKw0K PiA+ICsgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgdG8gdXBkYXRlIG9iamVjdCBjb2Rl DQo+IHRoYXQgd2FzIGNvbXBpbGVkIHdpdGgNCj4gPiArICBOQVNNIGZyb20gYXNzZW1ibHkgc291 cmNlIGNvZGUuIEV4YW1wbGU6DQo+ID4gKw0KPiA+ICsgIE5BU00gc291cmNlIGNvZGU6DQo+ID4g Kw0KPiA+ICsgICAgICAgIG1vdiAgICAgZWF4LCBzdHJpY3QgZHdvcmQgMCA7IHRoZSBpbW0zMiB6 ZXJvDQo+IG9wZXJhbmQgd2lsbCBiZSBwYXRjaGVkDQo+ID4gKyAgICBBU01fUEZYKGdQYXRjaENy Myk6DQo+ID4gKyAgICAgICAgbW92ICAgICBjcjMsIGVheA0KPiA+ICsNCj4gPiArICBDIHNvdXJj ZSBjb2RlOg0KPiA+ICsNCj4gPiArICAgIFg4Nl9BU1NFTUJMWV9QQVRDSF9MQUJFTCBnUGF0Y2hD cjM7DQo+ID4gKyAgICBQYXRjaEluc3RydWN0aW9uWDg2IChnUGF0Y2hDcjMsIEFzbVJlYWRDcjMg KCksDQo+IDQpOw0KPiA+ICsNCj4gPiArICBAcGFyYW1bb3V0XSBJbnN0cnVjdGlvbkVuZCAgUG9p bnRlciByaWdodCBwYXN0IHRoZQ0KPiBpbnN0cnVjdGlvbiB0byBwYXRjaC4gVGhlDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltbWVkaWF0ZSBvcGVyYW5kIHRvDQo+IHBhdGNo IGlzIGV4cGVjdGVkIHRvDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBy aXNlIHRoZSB0cmFpbGluZw0KPiBieXRlcyBvZiB0aGUgaW5zdHJ1Y3Rpb24uDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIElmIEluc3RydWN0aW9uRW5kIGlzDQo+IGNsb3NlciB0 byBhZGRyZXNzIDAgdGhhbg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1 ZVNpemUgcGVybWl0cywgdGhlbg0KPiBBU1NFUlQoKS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2lu XSBQYXRjaFZhbHVlICAgICAgIFRoZSBjb25zdGFudCB0byB3cml0ZQ0KPiB0byB0aGUgaW1tZWRp YXRlIG9wZXJhbmQuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjYWxs ZXIgaXMNCj4gcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIHRoYXQNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUGF0Y2hWYWx1ZSBjYW4gYmUNCj4gcmVwcmVzZW50ZWQgaW4gdGhl IGJ5dGUsIHdvcmQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR3b3JkIG9y IHF3b3JkIG9wZXJhbmQNCj4gKGFzIGluZGljYXRlZCB0aHJvdWdoDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFZhbHVlU2l6ZSk7IG90aGVyd2lzZQ0KPiBBU1NFUlQoKS4NCj4g PiArDQo+ID4gKyAgQHBhcmFtW2luXSBWYWx1ZVNpemUgICAgICAgIFRoZSBzaXplIG9mIHRoZSBv cGVyYW5kDQo+IGluIGJ5dGVzOyBtdXN0IGJlIDEsIDIsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDQsIG9yIDguIEFTU0VSVCgpDQo+IG90aGVyd2lzZS4NCj4gPiArKiovDQo+ ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJQYXRjaEluc3Ry dWN0aW9uWDg2ICgNCj4gPiArICBPVVQgWDg2X0FTU0VNQkxZX1BBVENIX0xBQkVMICpJbnN0cnVj dGlvbkVuZCwNCj4gPiArICBJTiAgVUlOVDY0ICAgICAgICAgICAgICAgICAgIFBhdGNoVmFsdWUs DQo+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICBWYWx1ZVNpemUNCj4gPiArICAp DQo+ID4gK3sNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmV0cmlldmVzIENQVUlE IGluZm9ybWF0aW9uLg0KPiA+ICsNCj4gPiArICBFeGVjdXRlcyB0aGUgQ1BVSUQgaW5zdHJ1Y3Rp b24gd2l0aCBFQVggc2V0IHRvIHRoZQ0KPiB2YWx1ZSBzcGVjaWZpZWQgYnkgSW5kZXguDQo+ID4g KyAgVGhpcyBmdW5jdGlvbiBhbHdheXMgcmV0dXJucyBJbmRleC4NCj4gPiArICBJZiBFYXggaXMg bm90IE5VTEwsIHRoZW4gdGhlIHZhbHVlIG9mIEVBWCBhZnRlcg0KPiBDUFVJRCBpcyByZXR1cm5l ZCBpbiBFYXguDQo+ID4gKyAgSWYgRWJ4IGlzIG5vdCBOVUxMLCB0aGVuIHRoZSB2YWx1ZSBvZiBF QlggYWZ0ZXINCj4gQ1BVSUQgaXMgcmV0dXJuZWQgaW4gRWJ4Lg0KPiA+ICsgIElmIEVjeCBpcyBu b3QgTlVMTCwgdGhlbiB0aGUgdmFsdWUgb2YgRUNYIGFmdGVyDQo+IENQVUlEIGlzIHJldHVybmVk IGluIEVjeC4NCj4gPiArICBJZiBFZHggaXMgbm90IE5VTEwsIHRoZW4gdGhlIHZhbHVlIG9mIEVE WCBhZnRlcg0KPiBDUFVJRCBpcyByZXR1cm5lZCBpbiBFZHguDQo+ID4gKyAgVGhpcyBmdW5jdGlv biBpcyBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4gPiArICBAcGFy YW0gIEluZGV4IFRoZSAzMi1iaXQgdmFsdWUgdG8gbG9hZCBpbnRvIEVBWA0KPiBwcmlvciB0byBp bnZva2luZyB0aGUgQ1BVSUQNCj4gPiArICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLg0KPiA+ ICsgIEBwYXJhbSAgRWF4ICAgVGhlIHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBFQVggdmFsdWUNCj4g cmV0dXJuZWQgYnkgdGhlIENQVUlEDQo+ID4gKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4g VGhpcyBpcyBhbiBvcHRpb25hbA0KPiBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUgTlVMTC4NCj4gPiAr ICBAcGFyYW0gIEVieCAgIFRoZSBwb2ludGVyIHRvIHRoZSAzMi1iaXQgRUJYIHZhbHVlDQo+IHJl dHVybmVkIGJ5IHRoZSBDUFVJRA0KPiA+ICsgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uIFRo aXMgaXMgYW4gb3B0aW9uYWwNCj4gcGFyYW1ldGVyIHRoYXQgbWF5IGJlIE5VTEwuDQo+ID4gKyAg QHBhcmFtICBFY3ggICBUaGUgcG9pbnRlciB0byB0aGUgMzItYml0IEVDWCB2YWx1ZQ0KPiByZXR1 cm5lZCBieSB0aGUgQ1BVSUQNCj4gPiArICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLiBUaGlz IGlzIGFuIG9wdGlvbmFsDQo+IHBhcmFtZXRlciB0aGF0IG1heSBiZSBOVUxMLg0KPiA+ICsgIEBw YXJhbSAgRWR4ICAgVGhlIHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBFRFggdmFsdWUNCj4gcmV0dXJu ZWQgYnkgdGhlIENQVUlEDQo+ID4gKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4gVGhpcyBp cyBhbiBvcHRpb25hbA0KPiBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUgTlVMTC4NCj4gPiArDQo+ID4g KyAgQHJldHVybiBJbmRleC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UMzINCj4gPiArRUZJ QVBJDQo+ID4gK0FzbUNwdWlkICgNCj4gPiArICBJTiAgICAgIFVJTlQzMiAgICAgICAgICAgICAg ICAgICAgSW5kZXgsDQo+ID4gKyAgT1VUICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICpF YXgsICBPUFRJT05BTA0KPiA+ICsgIE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAq RWJ4LCAgT1BUSU9OQUwNCj4gPiArICBPVVQgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAg KkVjeCwgIE9QVElPTkFMDQo+ID4gKyAgT1VUICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAg ICpFZHggICBPUFRJT05BTA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBnVW5pdFRl c3RIb3N0QmFzZUxpYi5YODYtPkFzbUNwdWlkIChJbmRleCwNCj4gRWF4LCBFYngsIEVjeCwgRWR4 KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmV0cmlldmVzIENQVUlEIGluZm9y bWF0aW9uIHVzaW5nIGFuIGV4dGVuZGVkIGxlYWYNCj4gaWRlbnRpZmllci4NCj4gPiArDQo+ID4g KyAgRXhlY3V0ZXMgdGhlIENQVUlEIGluc3RydWN0aW9uIHdpdGggRUFYIHNldCB0byB0aGUNCj4g dmFsdWUgc3BlY2lmaWVkIGJ5IEluZGV4DQo+ID4gKyAgYW5kIEVDWCBzZXQgdG8gdGhlIHZhbHVl IHNwZWNpZmllZCBieSBTdWJJbmRleC4NCj4gVGhpcyBmdW5jdGlvbiBhbHdheXMgcmV0dXJucw0K PiA+ICsgIEluZGV4LiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFu ZA0KPiB4NjQuDQo+ID4gKw0KPiA+ICsgIElmIEVheCBpcyBub3QgTlVMTCwgdGhlbiB0aGUgdmFs dWUgb2YgRUFYIGFmdGVyDQo+IENQVUlEIGlzIHJldHVybmVkIGluIEVheC4NCj4gPiArICBJZiBF YnggaXMgbm90IE5VTEwsIHRoZW4gdGhlIHZhbHVlIG9mIEVCWCBhZnRlcg0KPiBDUFVJRCBpcyBy ZXR1cm5lZCBpbiBFYnguDQo+ID4gKyAgSWYgRWN4IGlzIG5vdCBOVUxMLCB0aGVuIHRoZSB2YWx1 ZSBvZiBFQ1ggYWZ0ZXINCj4gQ1BVSUQgaXMgcmV0dXJuZWQgaW4gRWN4Lg0KPiA+ICsgIElmIEVk eCBpcyBub3QgTlVMTCwgdGhlbiB0aGUgdmFsdWUgb2YgRURYIGFmdGVyDQo+IENQVUlEIGlzIHJl dHVybmVkIGluIEVkeC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBJbmRleCAgICAgVGhlIDMyLWJp dCB2YWx1ZSB0byBsb2FkIGludG8gRUFYDQo+IHByaW9yIHRvIGludm9raW5nIHRoZQ0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIENQVUlEIGluc3RydWN0aW9uLg0KPiA+ICsgIEBwYXJhbSAgU3Vi SW5kZXggIFRoZSAzMi1iaXQgdmFsdWUgdG8gbG9hZCBpbnRvIEVDWA0KPiBwcmlvciB0byBpbnZv a2luZyB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICBDUFVJRCBpbnN0cnVjdGlvbi4NCj4g PiArICBAcGFyYW0gIEVheCAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgMzItYml0IEVBWA0KPiB2 YWx1ZSByZXR1cm5lZCBieSB0aGUgQ1BVSUQNCj4gPiArICAgICAgICAgICAgICAgICAgICBpbnN0 cnVjdGlvbi4gVGhpcyBpcyBhbiBvcHRpb25hbA0KPiBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUNCj4g PiArICAgICAgICAgICAgICAgICAgICBOVUxMLg0KPiA+ICsgIEBwYXJhbSAgRWJ4ICAgICAgIFRo ZSBwb2ludGVyIHRvIHRoZSAzMi1iaXQgRUJYDQo+IHZhbHVlIHJldHVybmVkIGJ5IHRoZSBDUFVJ RA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLiBUaGlzIGlzIGFuIG9wdGlv bmFsDQo+IHBhcmFtZXRlciB0aGF0IG1heSBiZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgIE5V TEwuDQo+ID4gKyAgQHBhcmFtICBFY3ggICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBF Q1gNCj4gdmFsdWUgcmV0dXJuZWQgYnkgdGhlIENQVUlEDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgaW5zdHJ1Y3Rpb24uIFRoaXMgaXMgYW4gb3B0aW9uYWwNCj4gcGFyYW1ldGVyIHRoYXQgbWF5 IGJlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgTlVMTC4NCj4gPiArICBAcGFyYW0gIEVkeCAg ICAgICBUaGUgcG9pbnRlciB0byB0aGUgMzItYml0IEVEWA0KPiB2YWx1ZSByZXR1cm5lZCBieSB0 aGUgQ1BVSUQNCj4gPiArICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4gVGhpcyBpcyBh biBvcHRpb25hbA0KPiBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUNCj4gPiArICAgICAgICAgICAgICAg ICAgICBOVUxMLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIEluZGV4Lg0KPiA+ICsNCj4gPiArKiov DQo+ID4gK1VJTlQzMg0KPiA+ICtFRklBUEkNCj4gPiArQXNtQ3B1aWRFeCAoDQo+ID4gKyAgSU4g ICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIEluZGV4LA0KPiA+ICsgIElOICAgICAgVUlO VDMyICAgICAgICAgICAgICAgICAgICBTdWJJbmRleCwNCj4gPiArICBPVVQgICAgIFVJTlQzMiAg ICAgICAgICAgICAgICAgICAgKkVheCwgIE9QVElPTkFMDQo+ID4gKyAgT1VUICAgICBVSU5UMzIg ICAgICAgICAgICAgICAgICAgICpFYngsICBPUFRJT05BTA0KPiA+ICsgIE9VVCAgICAgVUlOVDMy ICAgICAgICAgICAgICAgICAgICAqRWN4LCAgT1BUSU9OQUwNCj4gPiArICBPVVQgICAgIFVJTlQz MiAgICAgICAgICAgICAgICAgICAgKkVkeCAgIE9QVElPTkFMDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtQ3B1aWRFeCAoSW5kZXgs DQo+IFN1YkluZGV4LCBFYXgsIEVieCwgRWN4LCBFZHgpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICBTZXQgQ0QgYml0IGFuZCBjbGVhciBOVyBiaXQgb2YgQ1IwIGZvbGxvd2VkIGJ5 IGENCj4gV0JJTlZELg0KPiA+ICsNCj4gPiArICBEaXNhYmxlcyB0aGUgY2FjaGVzIGJ5IHNldHRp bmcgdGhlIENEIGJpdCBvZiBDUjAgdG8NCj4gMSwgY2xlYXJpbmcgdGhlIE5XIGJpdCBvZiBDUjAg dG8gMCwNCj4gPiArICBhbmQgZXhlY3V0aW5nIGEgV0JJTlZEIGluc3RydWN0aW9uLiAgVGhpcyBm dW5jdGlvbg0KPiBpcyBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK0FzbURpc2FibGVDYWNoZSAoDQo+ ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIGdVbml0VGVzdEhvc3RCYXNlTGli Llg4Ni0+QXNtRGlzYWJsZUNhY2hlICgpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICBQZXJmb3JtIGEgV0JJTlZEIGFuZCBjbGVhciBib3RoIHRoZSBDRCBhbmQgTlcgYml0cw0KPiBv ZiBDUjAuDQo+ID4gKw0KPiA+ICsgIEVuYWJsZXMgdGhlIGNhY2hlcyBieSBleGVjdXRpbmcgYSBX QklOVkQNCj4gaW5zdHJ1Y3Rpb24gYW5kIHRoZW4gY2xlYXIgYm90aCB0aGUgQ0QgYW5kIE5XDQo+ ID4gKyAgYml0cyBvZiBDUjAgdG8gMC4gIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUN Cj4gb24gSUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VG SUFQSQ0KPiA+ICtBc21FbmFibGVDYWNoZSAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiAr ew0KPiA+ICsgIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtRW5hYmxlQ2FjaGUgKCk7DQo+ ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJldHVybnMgYSA2NC1iaXQgTWFjaGluZSBT cGVjaWZpYyBSZWdpc3RlcihNU1IpLg0KPiA+ICsNCj4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0 aGUgNjQtYml0IE1TUiBzcGVjaWZpZWQgYnkNCj4gSW5kZXguIE5vIHBhcmFtZXRlciBjaGVja2lu ZyBpcw0KPiA+ICsgIHBlcmZvcm1lZCBvbiBJbmRleCwgYW5kIHNvbWUgSW5kZXggdmFsdWVzIG1h eSBjYXVzZQ0KPiBDUFUgZXhjZXB0aW9ucy4gVGhlDQo+ID4gKyAgY2FsbGVyIG11c3QgZWl0aGVy IGd1YXJhbnRlZSB0aGF0IEluZGV4IGlzIHZhbGlkLA0KPiBvciB0aGUgY2FsbGVyIG11c3Qgc2V0 IHVwDQo+ID4gKyAgZXhjZXB0aW9uIGhhbmRsZXJzIHRvIGNhdGNoIHRoZSBleGNlcHRpb25zLiBU aGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gKyAgb24gSUEtMzIgYW5kIHg2 NC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBJbmRleCBUaGUgMzItYml0IE1TUiBpbmRleCB0byBy ZWFkLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiB0aGUgTVNSIGlkZW50aWZp ZWQgYnkgSW5kZXguDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVDY0DQo+ID4gK0VGSUFQSQ0K PiA+ICtBc21SZWFkTXNyNjQgKA0KPiA+ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAg ICAgICBJbmRleA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBnVW5pdFRlc3RIb3N0 QmFzZUxpYi5YODYtPkFzbVJlYWRNc3I2NA0KPiAoSW5kZXgpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICsvKioNCj4gPiArICBXcml0ZXMgYSA2NC1iaXQgdmFsdWUgdG8gYSBNYWNoaW5lIFNwZWNpZmlj DQo+IFJlZ2lzdGVyKE1TUiksIGFuZCByZXR1cm5zIHRoZQ0KPiA+ICsgIHZhbHVlLg0KPiA+ICsN Cj4gPiArICBXcml0ZXMgdGhlIDY0LWJpdCB2YWx1ZSBzcGVjaWZpZWQgYnkgVmFsdWUgdG8gdGhl DQo+IE1TUiBzcGVjaWZpZWQgYnkgSW5kZXguIFRoZQ0KPiA+ICsgIDY0LWJpdCB2YWx1ZSB3cml0 dGVuIHRvIHRoZSBNU1IgaXMgcmV0dXJuZWQuIE5vDQo+IHBhcmFtZXRlciBjaGVja2luZyBpcw0K PiA+ICsgIHBlcmZvcm1lZCBvbiBJbmRleCBvciBWYWx1ZSwgYW5kIHNvbWUgb2YgdGhlc2UgbWF5 DQo+IGNhdXNlIENQVSBleGNlcHRpb25zLiBUaGUNCj4gPiArICBjYWxsZXIgbXVzdCBlaXRoZXIg Z3VhcmFudGVlIHRoYXQgSW5kZXggYW5kIFZhbHVlDQo+IGFyZSB2YWxpZCwgb3IgdGhlIGNhbGxl cg0KPiA+ICsgIG11c3QgZXN0YWJsaXNoIHByb3BlciBleGNlcHRpb24gaGFuZGxlcnMuIFRoaXMN Cj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiArICBJQS0zMiBhbmQgeDY0Lg0K PiA+ICsNCj4gPiArICBAcGFyYW0gIEluZGV4IFRoZSAzMi1iaXQgTVNSIGluZGV4IHRvIHdyaXRl Lg0KPiA+ICsgIEBwYXJhbSAgVmFsdWUgVGhlIDY0LWJpdCB2YWx1ZSB0byB3cml0ZSB0byB0aGUg TVNSLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFZhbHVlDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiAr VUlOVDY0DQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21Xcml0ZU1zcjY0ICgNCj4gPiArICBJTiAgICAg IFVJTlQzMiAgICAgICAgICAgICAgICAgICAgSW5kZXgsDQo+ID4gKyAgSU4gICAgICBVSU5UNjQg ICAgICAgICAgICAgICAgICAgIFZhbHVlDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJu IGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtV3JpdGVNc3I2NA0KPiAoSW5kZXgsIFZhbHVl KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFs dWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgMA0KPiAoQ1IwKS4NCj4gPiArDQo+ID4gKyAgUmVh ZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgQ1IwLiBUaGlzDQo+IGZ1bmN0aW9u IGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4gVGhpcyByZXR1cm5z IGEgMzItYml0IHZhbHVlIG9uDQo+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+ICsg IHg2NC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgb2YgdGhlIENvbnRyb2wgUmVn aXN0ZXIgMCAoQ1IwKS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UTg0KPiA+ICtFRklBUEkN Cj4gPiArQXNtUmVhZENyMCAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsg IHJldHVybiBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbVJlYWRDcjAgKCk7DQo+ID4gK30N Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBD b250cm9sIFJlZ2lzdGVyIDINCj4gKENSMikuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1 cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIENSMi4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2 YWlsYWJsZQ0KPiA+ICsgIG9uIElBLTMyIGFuZCB4NjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2 YWx1ZSBvbg0KPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiArICB4NjQuDQo+ID4g Kw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBDb250cm9sIFJlZ2lzdGVyIDIgKENS MikuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK0FzbVJl YWRDcjIgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gZ1Vu aXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21SZWFkQ3IyICgpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICsvKioNCj4gPiArICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgQ29udHJvbCBSZWdp c3RlciAzDQo+IChDUjMpLg0KPiA+ICsNCj4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3Vy cmVudCB2YWx1ZSBvZiBDUjMuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4g PiArICBvbiBJQS0zMiBhbmQgeDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUgb24NCj4g SUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gKyAgeDY0Lg0KPiA+ICsNCj4gPiArICBA cmV0dXJuIFRoZSB2YWx1ZSBvZiB0aGUgQ29udHJvbCBSZWdpc3RlciAzIChDUjMpLg0KPiA+ICsN Cj4gPiArKiovDQo+ID4gK1VJTlRODQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21SZWFkQ3IzICgNCj4g PiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RC YXNlTGliLlg4Ni0+QXNtUmVhZENyMyAoKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4g KyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgNA0KPiAo Q1I0KS4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUg b2YgQ1I0LiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gKyAgb24gSUEt MzIgYW5kIHg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+IElBLTMyIGFuZCBh IDY0LWJpdCB2YWx1ZSBvbg0KPiA+ICsgIHg2NC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUg dmFsdWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgNCAoQ1I0KS4NCj4gPiArDQo+ID4gKyoqLw0K PiA+ICtVSU5UTg0KPiA+ICtFRklBUEkNCj4gPiArQXNtUmVhZENyNCAoDQo+ID4gKyAgVk9JRA0K PiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYt PkFzbVJlYWRDcjQgKCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFdyaXRlcyBh IHZhbHVlIHRvIENvbnRyb2wgUmVnaXN0ZXIgMCAoQ1IwKS4NCj4gPiArDQo+ID4gKyAgV3JpdGVz IGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIENSMC4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5 IGF2YWlsYWJsZSBvbg0KPiA+ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEgMzItYml0 IHZhbHVlIG9uIElBLTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ID4gKw0KPiA+ ICsgIEBwYXJhbSAgQ3IwIFRoZSB2YWx1ZSB0byB3cml0ZSB0byBDUjAuDQo+ID4gKw0KPiA+ICsg IEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gQ1IwLg0KPiA+ICsNCj4gPiArKiovDQo+ID4g K1VJTlRODQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21Xcml0ZUNyMCAoDQo+ID4gKyAgVUlOVE4gIENy MA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBnVW5pdFRlc3RIb3N0QmFzZUxpYi5Y ODYtPkFzbVdyaXRlQ3IwIChDcjApOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBX cml0ZXMgYSB2YWx1ZSB0byBDb250cm9sIFJlZ2lzdGVyIDIgKENSMikuDQo+ID4gKw0KPiA+ICsg IFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBDUjIuIFRoaXMNCj4gZnVuY3Rpb24g aXMgb25seSBhdmFpbGFibGUgb24NCj4gPiArICBJQS0zMiBhbmQgeDY0LiBUaGlzIHdyaXRlcyBh IDMyLWJpdCB2YWx1ZSBvbiBJQS0zMg0KPiBhbmQgYSA2NC1iaXQgdmFsdWUgb24geDY0Lg0KPiA+ ICsNCj4gPiArICBAcGFyYW0gIENyMiBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gQ1IyLg0KPiA+ICsN Cj4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRvIENSMi4NCj4gPiArDQo+ID4gKyoq Lw0KPiA+ICtVSU5UTg0KPiA+ICtFRklBUEkNCj4gPiArQXNtV3JpdGVDcjIgKA0KPiA+ICsgIFVJ TlROICBDcjINCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJh c2VMaWIuWDg2LT5Bc21Xcml0ZUNyMiAoQ3IyKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAgV3JpdGVzIGEgdmFsdWUgdG8gQ29udHJvbCBSZWdpc3RlciAzIChDUjMpLg0KPiA+ICsN Cj4gPiArICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gQ1IzLiBUaGlzDQo+IGZ1 bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gKyAgSUEtMzIgYW5kIHg2NC4gVGhpcyB3 cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtMzINCj4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIHg2 NC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBDcjMgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIENSMy4N Cj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBDUjMuDQo+ID4gKw0K PiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK0FzbVdyaXRlQ3IzICgNCj4g PiArICBVSU5UTiAgQ3IzDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIGdVbml0VGVz dEhvc3RCYXNlTGliLlg4Ni0+QXNtV3JpdGVDcjMgKENyMyk7DQo+ID4gK30NCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICsgIFdyaXRlcyBhIHZhbHVlIHRvIENvbnRyb2wgUmVnaXN0ZXIgNCAoQ1I0KS4N Cj4gPiArDQo+ID4gKyAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIENSNC4gVGhp cw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ICsgIElBLTMyIGFuZCB4NjQu IFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLTMyDQo+IGFuZCBhIDY0LWJpdCB2YWx1 ZSBvbiB4NjQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgQ3I0IFRoZSB2YWx1ZSB0byB3cml0ZSB0 byBDUjQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gQ1I0Lg0K PiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlRODQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21Xcml0ZUNy NCAoDQo+ID4gKyAgVUlOVE4gIENyNA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBn VW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbVdyaXRlQ3I0IChDcjQpOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICsvKioNCj4gPiArICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEZWJ1ZyBSZWdp c3RlciAwIChEUjApLg0KPiA+ICsNCj4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVu dCB2YWx1ZSBvZiBEUjAuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiAr ICBvbiBJQS0zMiBhbmQgeDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUgb24NCj4gSUEt MzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gKyAgeDY0Lg0KPiA+ICsNCj4gPiArICBAcmV0 dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciAwIChEUjApLg0KPiA+ICsNCj4gPiArKiov DQo+ID4gK1VJTlRODQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21SZWFkRHIwICgNCj4gPiArICBWT0lE DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4 Ni0+QXNtUmVhZERyMCAoKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmVhZHMg dGhlIGN1cnJlbnQgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgMSAoRFIxKS4NCj4gPiArDQo+ID4g KyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRFIxLiBUaGlzDQo+IGZ1 bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4gVGhpcyBy ZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0K PiA+ICsgIHg2NC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgb2YgRGVidWcgUmVn aXN0ZXIgMSAoRFIxKS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UTg0KPiA+ICtFRklBUEkN Cj4gPiArQXNtUmVhZERyMSAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsg IHJldHVybiBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbVJlYWREcjEgKCk7DQo+ID4gK30N Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERlYnVn IFJlZ2lzdGVyIDIgKERSMikuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBj dXJyZW50IHZhbHVlIG9mIERSMi4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0K PiA+ICsgIG9uIElBLTMyIGFuZCB4NjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0K PiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiArICB4NjQuDQo+ID4gKw0KPiA+ICsg IEByZXR1cm4gVGhlIHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDIgKERSMikuDQo+ID4gKw0KPiA+ ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK0FzbVJlYWREcjIgKA0KPiA+ICsg IFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJhc2VM aWIuWDg2LT5Bc21SZWFkRHIyICgpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBS ZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciAzIChEUjMpLg0KPiA+ICsN Cj4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEUjMuIFRoaXMN Cj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiArICBvbiBJQS0zMiBhbmQgeDY0LiBU aGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUgb24NCj4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVl IG9uDQo+ID4gKyAgeDY0Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1 ZyBSZWdpc3RlciAzIChEUjMpLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlRODQo+ID4gK0VG SUFQSQ0KPiA+ICtBc21SZWFkRHIzICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtUmVhZERyMyAoKTsNCj4g PiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2Yg RGVidWcgUmVnaXN0ZXIgNCAoRFI0KS4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMg dGhlIGN1cnJlbnQgdmFsdWUgb2YgRFI0LiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxh YmxlDQo+ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVl IG9uDQo+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+ICsgIHg2NC4NCj4gPiArDQo+ ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgNCAoRFI0KS4NCj4gPiAr DQo+ID4gKyoqLw0KPiA+ICtVSU5UTg0KPiA+ICtFRklBUEkNCj4gPiArQXNtUmVhZERyNCAoDQo+ ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBnVW5pdFRlc3RIb3N0 QmFzZUxpYi5YODYtPkFzbVJlYWREcjQgKCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDUgKERSNSkuDQo+ ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIERSNS4g VGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ICsgIG9uIElBLTMyIGFuZCB4 NjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiBJQS0zMiBhbmQgYSA2NC1iaXQg dmFsdWUgb24NCj4gPiArICB4NjQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIG9m IERlYnVnIFJlZ2lzdGVyIDUgKERSNSkuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4g PiArRUZJQVBJDQo+ID4gK0FzbVJlYWREcjUgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4g K3sNCj4gPiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21SZWFkRHI1ICgp Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBSZWFkcyB0aGUgY3VycmVudCB2YWx1 ZSBvZiBEZWJ1ZyBSZWdpc3RlciA2IChEUjYpLg0KPiA+ICsNCj4gPiArICBSZWFkcyBhbmQgcmV0 dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEUjYuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBh dmFpbGFibGUNCj4gPiArICBvbiBJQS0zMiBhbmQgeDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQg dmFsdWUgb24NCj4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gKyAgeDY0Lg0KPiA+ ICsNCj4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciA2IChEUjYpLg0K PiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlRODQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21SZWFkRHI2 ICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIGdVbml0VGVz dEhvc3RCYXNlTGliLlg4Ni0+QXNtUmVhZERyNiAoKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoq DQo+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgNyAoRFI3 KS4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2Yg RFI3LiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gKyAgb24gSUEtMzIg YW5kIHg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+IElBLTMyIGFuZCBhIDY0 LWJpdCB2YWx1ZSBvbg0KPiA+ICsgIHg2NC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFs dWUgb2YgRGVidWcgUmVnaXN0ZXIgNyAoRFI3KS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5U Tg0KPiA+ICtFRklBUEkNCj4gPiArQXNtUmVhZERyNyAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkN Cj4gPiArew0KPiA+ICsgIHJldHVybiBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbVJlYWRE cjcgKCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFdyaXRlcyBhIHZhbHVlIHRv IERlYnVnIFJlZ2lzdGVyIDAgKERSMCkuDQo+ID4gKw0KPiA+ICsgIFdyaXRlcyBhbmQgcmV0dXJu cyBhIG5ldyB2YWx1ZSB0byBEUjAuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUg b24NCj4gPiArICBJQS0zMiBhbmQgeDY0LiBUaGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJ QS0zMg0KPiBhbmQgYSA2NC1iaXQgdmFsdWUgb24geDY0Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0g IERyMCBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHIwLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRo ZSB2YWx1ZSB3cml0dGVuIHRvIERlYnVnIFJlZ2lzdGVyIDANCj4gKERSMCkuDQo+ID4gKw0KPiA+ ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK0FzbVdyaXRlRHIwICgNCj4gPiAr ICBVSU5UTiAgRHIwDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhv c3RCYXNlTGliLlg4Ni0+QXNtV3JpdGVEcjAgKERyMCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIFdyaXRlcyBhIHZhbHVlIHRvIERlYnVnIFJlZ2lzdGVyIDEgKERSMSkuDQo+ID4g Kw0KPiA+ICsgIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBEUjEuIFRoaXMNCj4g ZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiArICBJQS0zMiBhbmQgeDY0LiBUaGlz IHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0zMg0KPiBhbmQgYSA2NC1iaXQgdmFsdWUgb24g eDY0Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIERyMSBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHIx Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRvIERlYnVnIFJlZ2lz dGVyIDENCj4gKERSMSkuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJ DQo+ID4gK0FzbVdyaXRlRHIxICgNCj4gPiArICBVSU5UTiAgRHIxDQo+ID4gKyAgKQ0KPiA+ICt7 DQo+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtV3JpdGVEcjEgKERy MSk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFdyaXRlcyBhIHZhbHVlIHRvIERl YnVnIFJlZ2lzdGVyIDIgKERSMikuDQo+ID4gKw0KPiA+ICsgIFdyaXRlcyBhbmQgcmV0dXJucyBh IG5ldyB2YWx1ZSB0byBEUjIuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24N Cj4gPiArICBJQS0zMiBhbmQgeDY0LiBUaGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0z Mg0KPiBhbmQgYSA2NC1iaXQgdmFsdWUgb24geDY0Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIERy MiBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHIyLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSB2 YWx1ZSB3cml0dGVuIHRvIERlYnVnIFJlZ2lzdGVyIDINCj4gKERSMikuDQo+ID4gKw0KPiA+ICsq Ki8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK0FzbVdyaXRlRHIyICgNCj4gPiArICBV SU5UTiAgRHIyDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RC YXNlTGliLlg4Ni0+QXNtV3JpdGVEcjIgKERyMik7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgIFdyaXRlcyBhIHZhbHVlIHRvIERlYnVnIFJlZ2lzdGVyIDMgKERSMykuDQo+ID4gKw0K PiA+ICsgIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBEUjMuIFRoaXMNCj4gZnVu Y3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiArICBJQS0zMiBhbmQgeDY0LiBUaGlzIHdy aXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0zMg0KPiBhbmQgYSA2NC1iaXQgdmFsdWUgb24geDY0 Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIERyMyBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHIzLg0K PiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRvIERlYnVnIFJlZ2lzdGVy IDMNCj4gKERSMykuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ ID4gK0FzbVdyaXRlRHIzICgNCj4gPiArICBVSU5UTiAgRHIzDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtV3JpdGVEcjMgKERyMyk7 DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFdyaXRlcyBhIHZhbHVlIHRvIERlYnVn IFJlZ2lzdGVyIDQgKERSNCkuDQo+ID4gKw0KPiA+ICsgIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5l dyB2YWx1ZSB0byBEUjQuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4g PiArICBJQS0zMiBhbmQgeDY0LiBUaGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0zMg0K PiBhbmQgYSA2NC1iaXQgdmFsdWUgb24geDY0Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIERyNCBU aGUgdmFsdWUgdG8gd3JpdGUgdG8gRHI0Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSB2YWx1 ZSB3cml0dGVuIHRvIERlYnVnIFJlZ2lzdGVyIDQNCj4gKERSNCkuDQo+ID4gKw0KPiA+ICsqKi8N Cj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK0FzbVdyaXRlRHI0ICgNCj4gPiArICBVSU5U TiAgRHI0DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNl TGliLlg4Ni0+QXNtV3JpdGVEcjQgKERyNCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgIFdyaXRlcyBhIHZhbHVlIHRvIERlYnVnIFJlZ2lzdGVyIDUgKERSNSkuDQo+ID4gKw0KPiA+ ICsgIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBEUjUuIFRoaXMNCj4gZnVuY3Rp b24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiArICBJQS0zMiBhbmQgeDY0LiBUaGlzIHdyaXRl cyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0zMg0KPiBhbmQgYSA2NC1iaXQgdmFsdWUgb24geDY0Lg0K PiA+ICsNCj4gPiArICBAcGFyYW0gIERyNSBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHI1Lg0KPiA+ ICsNCj4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRvIERlYnVnIFJlZ2lzdGVyIDUN Cj4gKERSNSkuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4g K0FzbVdyaXRlRHI1ICgNCj4gPiArICBVSU5UTiAgRHI1DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4g KyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtV3JpdGVEcjUgKERyNSk7DQo+ ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFdyaXRlcyBhIHZhbHVlIHRvIERlYnVnIFJl Z2lzdGVyIDYgKERSNikuDQo+ID4gKw0KPiA+ICsgIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2 YWx1ZSB0byBEUjYuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiAr ICBJQS0zMiBhbmQgeDY0LiBUaGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0zMg0KPiBh bmQgYSA2NC1iaXQgdmFsdWUgb24geDY0Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIERyNiBUaGUg dmFsdWUgdG8gd3JpdGUgdG8gRHI2Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSB3 cml0dGVuIHRvIERlYnVnIFJlZ2lzdGVyIDYNCj4gKERSNikuDQo+ID4gKw0KPiA+ICsqKi8NCj4g PiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK0FzbVdyaXRlRHI2ICgNCj4gPiArICBVSU5UTiAg RHI2DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGli Llg4Ni0+QXNtV3JpdGVEcjYgKERyNik7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsg IFdyaXRlcyBhIHZhbHVlIHRvIERlYnVnIFJlZ2lzdGVyIDcgKERSNykuDQo+ID4gKw0KPiA+ICsg IFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBEUjcuIFRoaXMNCj4gZnVuY3Rpb24g aXMgb25seSBhdmFpbGFibGUgb24NCj4gPiArICBJQS0zMiBhbmQgeDY0LiBUaGlzIHdyaXRlcyBh IDMyLWJpdCB2YWx1ZSBvbiBJQS0zMg0KPiBhbmQgYSA2NC1iaXQgdmFsdWUgb24geDY0Lg0KPiA+ ICsNCj4gPiArICBAcGFyYW0gIERyNyBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHI3Lg0KPiA+ICsN Cj4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRvIERlYnVnIFJlZ2lzdGVyIDcNCj4g KERSNykuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK0Fz bVdyaXRlRHI3ICgNCj4gPiArICBVSU5UTiAgRHI3DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAg cmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtV3JpdGVEcjcgKERyNyk7DQo+ID4g K30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIENv ZGUgU2VnbWVudCBSZWdpc3Rlcg0KPiAoQ1MpLg0KPiA+ICsNCj4gPiArICBSZWFkcyBhbmQgcmV0 dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBDUy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2 YWlsYWJsZSBvbg0KPiA+ICsgIElBLTMyIGFuZCB4NjQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4g VGhlIGN1cnJlbnQgdmFsdWUgb2YgQ1MuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVDE2DQo+ ID4gK0VGSUFQSQ0KPiA+ICtBc21SZWFkQ3MgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4g K3sNCj4gPiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21SZWFkQ3MgKCk7 DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVl IG9mIERhdGEgU2VnbWVudCBSZWdpc3Rlcg0KPiAoRFMpLg0KPiA+ICsNCj4gPiArICBSZWFkcyBh bmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEUy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBv bmx5IGF2YWlsYWJsZSBvbg0KPiA+ICsgIElBLTMyIGFuZCB4NjQuDQo+ID4gKw0KPiA+ICsgIEBy ZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgRFMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlO VDE2DQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21SZWFkRHMgKA0KPiA+ICsgIFZPSUQNCj4gPiArICAp DQo+ID4gK3sNCj4gPiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21SZWFk RHMgKCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50 IHZhbHVlIG9mIEV4dHJhIFNlZ21lbnQgUmVnaXN0ZXINCj4gKEVTKS4NCj4gPiArDQo+ID4gKyAg UmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRVMuIFRoaXMNCj4gZnVuY3Rp b24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiArICBJQS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4g PiArICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIEVTLg0KPiA+ICsNCj4gPiArKiovDQo+ ID4gK1VJTlQxNg0KPiA+ICtFRklBUEkNCj4gPiArQXNtUmVhZEVzICgNCj4gPiArICBWT0lEDQo+ ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+ QXNtUmVhZEVzICgpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBSZWFkcyB0aGUg Y3VycmVudCB2YWx1ZSBvZiBGUyBEYXRhIFNlZ21lbnQgUmVnaXN0ZXINCj4gKEZTKS4NCj4gPiAr DQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRlMuIFRoaXMN Cj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiArICBJQS0zMiBhbmQgeDY0Lg0K PiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIEZTLg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK1VJTlQxNg0KPiA+ICtFRklBUEkNCj4gPiArQXNtUmVhZEZzICgNCj4gPiAr ICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNl TGliLlg4Ni0+QXNtUmVhZEZzICgpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBS ZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBHUyBEYXRhIFNlZ21lbnQgUmVnaXN0ZXINCj4gKEdT KS4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2Yg R1MuIFRoaXMNCj4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiArICBJQS0zMiBh bmQgeDY0Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIEdTLg0K PiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlQxNg0KPiA+ICtFRklBUEkNCj4gPiArQXNtUmVhZEdz ICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIGdVbml0VGVz dEhvc3RCYXNlTGliLlg4Ni0+QXNtUmVhZEdzICgpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBTdGFjayBTZWdtZW50IFJlZ2lzdGVy DQo+IChTUykuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZh bHVlIG9mIFNTLiBUaGlzDQo+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gKyAg SUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgY3VycmVudCB2YWx1ZSBv ZiBTUy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UMTYNCj4gPiArRUZJQVBJDQo+ID4gK0Fz bVJlYWRTcyAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBn VW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbVJlYWRTcyAoKTsNCj4gPiArfQ0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgVGFzayBSZWdpc3RlciAo VFIpLg0KPiA+ICsNCj4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBv ZiBUUi4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ICsgIElBLTMy IGFuZCB4NjQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgVFIu DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVDE2DQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21SZWFk VHIgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gZ1VuaXRU ZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21SZWFkVHIgKCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IEdsb2JhbCBEZXNjcmlwdG9yIFRhYmxlDQo+IFJl Z2lzdGVyKEdEVFIpIGRlc2NyaXB0b3IuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5z IHRoZSBjdXJyZW50IEdEVFIgZGVzY3JpcHRvciBhbmQNCj4gcmV0dXJucyBpdCBpbiBHZHRyLiBU aGlzDQo+ID4gKyAgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIHg2NC4N Cj4gPiArDQo+ID4gKyAgSWYgR2R0ciBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsNCj4g PiArICBAcGFyYW0gIEdkdHIgIFRoZSBwb2ludGVyIHRvIGEgR0RUUiBkZXNjcmlwdG9yLg0KPiA+ ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK0FzbVJlYWRHZHRyICgN Cj4gPiArICBPVVQgICAgIElBMzJfREVTQ1JJUFRPUiAgICAgICAgICAgKkdkdHINCj4gPiArICAp DQo+ID4gK3sNCj4gPiArICBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbVJlYWRHZHRyIChH ZHRyKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgV3JpdGVzIHRoZSBjdXJyZW50 IEdsb2JhbCBEZXNjcmlwdG9yIFRhYmxlIFJlZ2lzdGVyDQo+IChHRFRSKSBkZXNjcmlwdG9yLg0K PiA+ICsNCj4gPiArICBXcml0ZXMgYW5kIHRoZSBjdXJyZW50IEdEVFIgZGVzY3JpcHRvciBzcGVj aWZpZWQgYnkNCj4gR2R0ci4gVGhpcyBmdW5jdGlvbiBpcw0KPiA+ICsgIG9ubHkgYXZhaWxhYmxl IG9uIElBLTMyIGFuZCB4NjQuDQo+ID4gKw0KPiA+ICsgIElmIEdkdHIgaXMgTlVMTCwgdGhlbiBB U1NFUlQoKS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBHZHRyICBUaGUgcG9pbnRlciB0byBhIEdE VFIgZGVzY3JpcHRvci4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0K PiA+ICtBc21Xcml0ZUdkdHIgKA0KPiA+ICsgIElOICAgICAgQ09OU1QgSUEzMl9ERVNDUklQVE9S ICAgICAqR2R0cg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIGdVbml0VGVzdEhvc3RCYXNlTGli Llg4Ni0+QXNtV3JpdGVHZHRyIChHZHRyKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4g KyAgUmVhZHMgdGhlIGN1cnJlbnQgSW50ZXJydXB0IERlc2NyaXB0b3IgVGFibGUNCj4gUmVnaXN0 ZXIoSURUUikgZGVzY3JpcHRvci4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhl IGN1cnJlbnQgSURUUiBkZXNjcmlwdG9yIGFuZA0KPiByZXR1cm5zIGl0IGluIElkdHIuIFRoaXMN Cj4gPiArICBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ ICsNCj4gPiArICBJZiBJZHRyIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4gKw0KPiA+ICsg IEBwYXJhbSAgSWR0ciAgVGhlIHBvaW50ZXIgdG8gYSBJRFRSIGRlc2NyaXB0b3IuDQo+ID4gKw0K PiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArQXNtUmVhZElkdHIgKA0KPiA+ ICsgIE9VVCAgICAgSUEzMl9ERVNDUklQVE9SICAgICAgICAgICAqSWR0cg0KPiA+ICsgICkNCj4g PiArew0KPiA+ICsgIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtUmVhZElkdHIgKElkdHIp Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBXcml0ZXMgdGhlIGN1cnJlbnQgSW50 ZXJydXB0IERlc2NyaXB0b3IgVGFibGUNCj4gUmVnaXN0ZXIoSURUUikgZGVzY3JpcHRvci4NCj4g PiArDQo+ID4gKyAgV3JpdGVzIHRoZSBjdXJyZW50IElEVFIgZGVzY3JpcHRvciBhbmQgcmV0dXJu cyBpdA0KPiBpbiBJZHRyLiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4gKyAgb25seSBhdmFpbGFibGUg b24gSUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ID4gKyAgSWYgSWR0ciBpcyBOVUxMLCB0aGVuIEFT U0VSVCgpLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIElkdHIgIFRoZSBwb2ludGVyIHRvIGEgSURU UiBkZXNjcmlwdG9yLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ ID4gK0FzbVdyaXRlSWR0ciAoDQo+ID4gKyAgSU4gICAgICBDT05TVCBJQTMyX0RFU0NSSVBUT1Ig ICAgICpJZHRyDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIu WDg2LT5Bc21Xcml0ZUlkdHIgKElkdHIpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICBSZWFkcyB0aGUgY3VycmVudCBMb2NhbCBEZXNjcmlwdG9yIFRhYmxlDQo+IFJlZ2lzdGVyKExE VFIpIHNlbGVjdG9yLg0KPiA+ICsNCj4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVu dCAxNi1iaXQgTERUUg0KPiBkZXNjcmlwdG9yIHZhbHVlLiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4g KyAgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ID4gKyAgQHJldHVy biBUaGUgY3VycmVudCBzZWxlY3RvciBvZiBMRFQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlO VDE2DQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21SZWFkTGR0ciAoDQo+ID4gKyAgVk9JRA0KPiA+ICsg ICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbVJl YWRMZHRyICgpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBXcml0ZXMgdGhlIGN1 cnJlbnQgTG9jYWwgRGVzY3JpcHRvciBUYWJsZSBSZWdpc3Rlcg0KPiAoTERUUikgc2VsZWN0b3Iu DQo+ID4gKw0KPiA+ICsgIFdyaXRlcyBhbmQgdGhlIGN1cnJlbnQgTERUUiBkZXNjcmlwdG9yIHNw ZWNpZmllZCBieQ0KPiBMZHRyLiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4gKyAgb25seSBhdmFpbGFi bGUgb24gSUEtMzIgYW5kIHg2NC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBMZHRyICAxNi1iaXQg TERUUiBzZWxlY3RvciB2YWx1ZS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VG SUFQSQ0KPiA+ICtBc21Xcml0ZUxkdHIgKA0KPiA+ICsgIElOICAgICAgVUlOVDE2ICAgICAgICAg ICAgICAgICAgICBMZHRyDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgZ1VuaXRUZXN0SG9zdEJh c2VMaWIuWDg2LT5Bc21Xcml0ZUxkdHIgKExkdHIpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBhIFBlcmZvcm1hbmNlIENvdW50ZXIN Cj4gKFBNQykuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZh bHVlIG9mIHBlcmZvcm1hbmNlDQo+IGNvdW50ZXIgc3BlY2lmaWVkIGJ5DQo+ID4gKyAgSW5kZXgu IFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kDQo+IHg2NC4NCj4g PiArDQo+ID4gKyAgQHBhcmFtICBJbmRleCBUaGUgMzItYml0IFBlcmZvcm1hbmNlIENvdW50ZXIg aW5kZXgNCj4gdG8gcmVhZC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgb2YgdGhl IFBNQyBzcGVjaWZpZWQgYnkgSW5kZXguDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVDY0DQo+ ID4gK0VGSUFQSQ0KPiA+ICtBc21SZWFkUG1jICgNCj4gPiArICBJTiAgICAgIFVJTlQzMiAgICAg ICAgICAgICAgICAgICAgSW5kZXgNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gZ1Vu aXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21SZWFkUG1jDQo+IChJbmRleCk7DQo+ID4gK30NCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgIFNldHMgdXAgYSBtb25pdG9yIGJ1ZmZlciB0aGF0IGlzIHVz ZWQgYnkNCj4gQXNtTXdhaXQoKS4NCj4gPiArDQo+ID4gKyAgRXhlY3V0ZXMgYSBNT05JVE9SIGlu c3RydWN0aW9uIHdpdGggdGhlIHJlZ2lzdGVyDQo+IHN0YXRlIHNwZWNpZmllZCBieSBFYXgsIEVj eA0KPiA+ICsgIGFuZCBFZHguIFJldHVybnMgRWF4LiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkNCj4g YXZhaWxhYmxlIG9uIElBLTMyIGFuZCB4NjQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgRWF4IFRo ZSB2YWx1ZSB0byBsb2FkIGludG8gRUFYIG9yIFJBWA0KPiBiZWZvcmUgZXhlY3V0aW5nIHRoZSBN T05JVE9SDQo+ID4gKyAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uDQo+ID4gKyAgQHBhcmFtICBF Y3ggVGhlIHZhbHVlIHRvIGxvYWQgaW50byBFQ1ggb3IgUkNYDQo+IGJlZm9yZSBleGVjdXRpbmcg dGhlIE1PTklUT1INCj4gPiArICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4NCj4gPiArICBAcGFy YW0gIEVkeCBUaGUgdmFsdWUgdG8gbG9hZCBpbnRvIEVEWCBvciBSRFgNCj4gYmVmb3JlIGV4ZWN1 dGluZyB0aGUgTU9OSVRPUg0KPiA+ICsgICAgICAgICAgICAgIGluc3RydWN0aW9uLg0KPiA+ICsN Cj4gPiArICBAcmV0dXJuIEVheA0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlRODQo+ID4gK0VG SUFQSQ0KPiA+ICtBc21Nb25pdG9yICgNCj4gPiArICBJTiAgICAgIFVJTlROICAgICAgICAgICAg ICAgICAgICAgRWF4LA0KPiA+ICsgIElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBF Y3gsDQo+ID4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEVkeA0KPiA+ICsg ICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbU1v bml0b3IgKEVheCwNCj4gRWN4LCBFZHgpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICBFeGVjdXRlcyBhbiBNV0FJVCBpbnN0cnVjdGlvbi4NCj4gPiArDQo+ID4gKyAgRXhlY3V0ZXMg YW4gTVdBSVQgaW5zdHJ1Y3Rpb24gd2l0aCB0aGUgcmVnaXN0ZXINCj4gc3RhdGUgc3BlY2lmaWVk IGJ5IEVheCBhbmQNCj4gPiArICBFY3guIFJldHVybnMgRWF4LiBUaGlzIGZ1bmN0aW9uIGlzIG9u bHkgYXZhaWxhYmxlDQo+IG9uIElBLTMyIGFuZCB4NjQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAg RWF4IFRoZSB2YWx1ZSB0byBsb2FkIGludG8gRUFYIG9yIFJBWA0KPiBiZWZvcmUgZXhlY3V0aW5n IHRoZSBNT05JVE9SDQo+ID4gKyAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uDQo+ID4gKyAgQHBh cmFtICBFY3ggVGhlIHZhbHVlIHRvIGxvYWQgaW50byBFQ1ggb3IgUkNYDQo+IGJlZm9yZSBleGVj dXRpbmcgdGhlIE1PTklUT1INCj4gPiArICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4NCj4gPiAr DQo+ID4gKyAgQHJldHVybiBFYXgNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UTg0KPiA+ICtF RklBUEkNCj4gPiArQXNtTXdhaXQgKA0KPiA+ICsgIElOICAgICAgVUlOVE4gICAgICAgICAgICAg ICAgICAgICBFYXgsDQo+ID4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEVj eA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBnVW5pdFRlc3RIb3N0QmFzZUxpYi5Y ODYtPkFzbU13YWl0IChFYXgsDQo+IEVjeCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgIEV4ZWN1dGVzIGEgV0JJTlZEIGluc3RydWN0aW9uLg0KPiA+ICsNCj4gPiArICBFeGVjdXRl cyBhIFdCSU5WRCBpbnN0cnVjdGlvbi4gVGhpcyBmdW5jdGlvbiBpcw0KPiBvbmx5IGF2YWlsYWJs ZSBvbiBJQS0zMiBhbmQNCj4gPiArICB4NjQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9JRA0K PiA+ICtFRklBUEkNCj4gPiArQXNtV2JpbnZkICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ ICt7DQo+ID4gKyAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21XYmludmQgKCk7DQo+ID4g K30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEV4ZWN1dGVzIGEgSU5WRCBpbnN0cnVjdGlvbi4N Cj4gPiArDQo+ID4gKyAgRXhlY3V0ZXMgYSBJTlZEIGluc3RydWN0aW9uLiBUaGlzIGZ1bmN0aW9u IGlzIG9ubHkNCj4gYXZhaWxhYmxlIG9uIElBLTMyIGFuZA0KPiA+ICsgIHg2NC4NCj4gPiArDQo+ ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21JbnZkICgNCj4gPiArICBW T0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5B c21JbnZkICgpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBGbHVzaGVzIGEgY2Fj aGUgbGluZSBmcm9tIGFsbCB0aGUgaW5zdHJ1Y3Rpb24gYW5kDQo+IGRhdGEgY2FjaGVzIHdpdGhp biB0aGUNCj4gPiArICBjb2hlcmVuY3kgZG9tYWluIG9mIHRoZSBDUFUuDQo+ID4gKw0KPiA+ICsg IEZsdXNoZWQgdGhlIGNhY2hlIGxpbmUgc3BlY2lmaWVkIGJ5IExpbmVhckFkZHJlc3MsDQo+IGFu ZCByZXR1cm5zIExpbmVhckFkZHJlc3MuDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2 YWlsYWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIExpbmVhckFk ZHJlc3MgVGhlIGFkZHJlc3Mgb2YgdGhlIGNhY2hlIGxpbmUNCj4gdG8gZmx1c2guIElmIHRoZSBD UFUgaXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgaW4gYSBwaHlzaWNhbCBhZGRyZXNz aW5nDQo+IG1vZGUsIHRoZW4gTGluZWFyQWRkcmVzcyBpcyBhDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIHBoeXNpY2FsIGFkZHJlc3MuIElmIHRoZSBDUFUNCj4gaXMgaW4gYSB2aXJ0dWFs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NpbmcgbW9kZSwgdGhlbg0KPiBM aW5lYXJBZGRyZXNzIGlzIGEgdmlydHVhbA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBh ZGRyZXNzLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIExpbmVhckFkZHJlc3MuDQo+ID4gKyoqLw0K PiA+ICtWT0lEICoNCj4gPiArRUZJQVBJDQo+ID4gK0FzbUZsdXNoQ2FjaGVMaW5lICgNCj4gPiAr ICBJTiAgICAgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgKkxpbmVhckFkZHJlc3MNCj4gPiAr ICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21G bHVzaENhY2hlTGluZQ0KPiAoTGluZWFyQWRkcmVzcyk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIEVuYWJsZXMgdGhlIDMyLWJpdCBwYWdpbmcgbW9kZSBvbiB0aGUgQ1BVLg0KPiA+ ICsNCj4gPiArICBFbmFibGVzIHRoZSAzMi1iaXQgcGFnaW5nIG1vZGUgb24gdGhlIENQVS4gQ1Iw LA0KPiBDUjMsIENSNCwgYW5kIHRoZSBwYWdlIHRhYmxlcw0KPiA+ICsgIG11c3QgYmUgcHJvcGVy bHkgaW5pdGlhbGl6ZWQgcHJpb3IgdG8gY2FsbGluZyB0aGlzDQo+IHNlcnZpY2UuIFRoaXMgZnVu Y3Rpb24NCj4gPiArICBhc3N1bWVzIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBtb2RlIGlzIDMyLWJp dA0KPiBwcm90ZWN0ZWQgbW9kZS4gVGhpcyBmdW5jdGlvbiBpcw0KPiA+ICsgIG9ubHkgYXZhaWxh YmxlIG9uIElBLTMyLiBBZnRlciB0aGUgMzItYml0IHBhZ2luZw0KPiBtb2RlIGlzIGVuYWJsZWQs IGNvbnRyb2wgaXMNCj4gPiArICB0cmFuc2ZlcnJlZCB0byB0aGUgZnVuY3Rpb24gc3BlY2lmaWVk IGJ5IEVudHJ5UG9pbnQNCj4gdXNpbmcgdGhlIG5ldyBzdGFjaw0KPiA+ICsgIHNwZWNpZmllZCBi eSBOZXdTdGFjayBhbmQgcGFzc2luZyBpbiB0aGUgcGFyYW1ldGVycw0KPiBzcGVjaWZpZWQgYnkg Q29udGV4dDEgYW5kDQo+ID4gKyAgQ29udGV4dDIuIENvbnRleHQxIGFuZCBDb250ZXh0MiBhcmUg b3B0aW9uYWwgYW5kDQo+IG1heSBiZSBOVUxMLiBUaGUgZnVuY3Rpb24NCj4gPiArICBFbnRyeVBv aW50IG11c3QgbmV2ZXIgcmV0dXJuLg0KPiA+ICsNCj4gPiArICBJZiB0aGUgY3VycmVudCBleGVj dXRpb24gbW9kZSBpcyBub3QgMzItYml0DQo+IHByb3RlY3RlZCBtb2RlLCB0aGVuIEFTU0VSVCgp Lg0KPiA+ICsgIElmIEVudHJ5UG9pbnQgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPiArICBJ ZiBOZXdTdGFjayBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsNCj4gPiArICBUaGVyZSBh cmUgYSBudW1iZXIgb2YgY29uc3RyYWludHMgdGhhdCBtdXN0IGJlDQo+IGZvbGxvd2VkIGJlZm9y ZSBjYWxsaW5nIHRoaXMNCj4gPiArICBmdW5jdGlvbjoNCj4gPiArICAxKSAgSW50ZXJydXB0cyBt dXN0IGJlIGRpc2FibGVkLg0KPiA+ICsgIDIpICBUaGUgY2FsbGVyIG11c3QgYmUgaW4gMzItYml0 IHByb3RlY3RlZCBtb2RlDQo+IHdpdGggZmxhdCBkZXNjcmlwdG9ycy4gVGhpcw0KPiA+ICsgICAg ICBtZWFucyBhbGwgZGVzY3JpcHRvcnMgbXVzdCBoYXZlIGEgYmFzZSBvZiAwIGFuZA0KPiBhIGxp bWl0IG9mIDRHQi4NCj4gPiArICAzKSAgQ1IwIGFuZCBDUjQgbXVzdCBiZSBjb21wYXRpYmxlIHdp dGggMzItYml0DQo+IHByb3RlY3RlZCBtb2RlIHdpdGggZmxhdA0KPiA+ICsgICAgICBkZXNjcmlw dG9ycy4NCj4gPiArICA0KSAgQ1IzIG11c3QgcG9pbnQgdG8gdmFsaWQgcGFnZSB0YWJsZXMgdGhh dCB3aWxsDQo+IGJlIHVzZWQgb25jZSB0aGUgdHJhbnNpdGlvbg0KPiA+ICsgICAgICBpcyBjb21w bGV0ZSwgYW5kIHRob3NlIHBhZ2UgdGFibGVzIG11c3QNCj4gZ3VhcmFudGVlIHRoYXQgdGhlIHBh Z2VzIGZvciB0aGlzDQo+ID4gKyAgICAgIGZ1bmN0aW9uIGFuZCB0aGUgc3RhY2sgYXJlIGlkZW50 aXR5IG1hcHBlZC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBFbnRyeVBvaW50ICBBIHBvaW50ZXIg dG8gZnVuY3Rpb24gdG8gY2FsbA0KPiB3aXRoIHRoZSBuZXcgc3RhY2sgYWZ0ZXINCj4gPiArICAg ICAgICAgICAgICAgICAgICAgIHBhZ2luZyBpcyBlbmFibGVkLg0KPiA+ICsgIEBwYXJhbSAgQ29u dGV4dDEgICAgQSBwb2ludGVyIHRvIHRoZSBjb250ZXh0IHRvDQo+IHBhc3MgaW50byB0aGUgRW50 cnlQb2ludA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYXMgdGhlIGZpcnN0 IHBhcmFtZXRlcg0KPiBhZnRlciBwYWdpbmcgaXMgZW5hYmxlZC4NCj4gPiArICBAcGFyYW0gIENv bnRleHQyICAgIEEgcG9pbnRlciB0byB0aGUgY29udGV4dCB0bw0KPiBwYXNzIGludG8gdGhlIEVu dHJ5UG9pbnQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFzIHRoZSBzZWNv bmQNCj4gcGFyYW1ldGVyIGFmdGVyIHBhZ2luZyBpcyBlbmFibGVkLg0KPiA+ICsgIEBwYXJhbSAg TmV3U3RhY2sgICAgQSBwb2ludGVyIHRvIHRoZSBuZXcgc3RhY2sgdG8NCj4gdXNlIGZvciB0aGUg RW50cnlQb2ludA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYWZ0ZXIgcGFn aW5nIGlzDQo+IGVuYWJsZWQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklB UEkNCj4gPiArQXNtRW5hYmxlUGFnaW5nMzIgKA0KPiA+ICsgIElOICAgICAgU1dJVENIX1NUQUNL X0VOVFJZX1BPSU5UICBFbnRyeVBvaW50LA0KPiA+ICsgIElOICAgICAgVk9JRCAgICAgICAgICAg ICAgICAgICAgICAqQ29udGV4dDEsDQo+IE9QVElPTkFMDQo+ID4gKyAgSU4gICAgICBWT0lEICAg ICAgICAgICAgICAgICAgICAgICpDb250ZXh0MiwNCj4gT1BUSU9OQUwNCj4gPiArICBJTiAgICAg IFZPSUQgICAgICAgICAgICAgICAgICAgICAgKk5ld1N0YWNrDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ ID4gKyAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21FbmFibGVQYWdpbmczMg0KPiAoRW50 cnlQb2ludCwgQ29udGV4dDEsIENvbnRleHQyLCBOZXdTdGFjayk7DQo+ID4gK30NCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgIERpc2FibGVzIHRoZSAzMi1iaXQgcGFnaW5nIG1vZGUgb24gdGhlIENQ VS4NCj4gPiArDQo+ID4gKyAgRGlzYWJsZXMgdGhlIDMyLWJpdCBwYWdpbmcgbW9kZSBvbiB0aGUg Q1BVIGFuZA0KPiByZXR1cm5zIHRvIDMyLWJpdCBwcm90ZWN0ZWQNCj4gPiArICBtb2RlLiBUaGlz IGZ1bmN0aW9uIGFzc3VtZXMgdGhlIGN1cnJlbnQgZXhlY3V0aW9uDQo+IG1vZGUgaXMgMzItcGFn ZWQgcHJvdGVjdGVkDQo+ID4gKyAgbW9kZS4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJs ZSBvbiBJQS0zMi4NCj4gQWZ0ZXIgdGhlIDMyLWJpdCBwYWdpbmcgbW9kZQ0KPiA+ICsgIGlzIGRp c2FibGVkLCBjb250cm9sIGlzIHRyYW5zZmVycmVkIHRvIHRoZSBmdW5jdGlvbg0KPiBzcGVjaWZp ZWQgYnkgRW50cnlQb2ludA0KPiA+ICsgIHVzaW5nIHRoZSBuZXcgc3RhY2sgc3BlY2lmaWVkIGJ5 IE5ld1N0YWNrIGFuZA0KPiBwYXNzaW5nIGluIHRoZSBwYXJhbWV0ZXJzDQo+ID4gKyAgc3BlY2lm aWVkIGJ5IENvbnRleHQxIGFuZCBDb250ZXh0Mi4gQ29udGV4dDEgYW5kDQo+IENvbnRleHQyIGFy ZSBvcHRpb25hbCBhbmQNCj4gPiArICBtYXkgYmUgTlVMTC4gVGhlIGZ1bmN0aW9uIEVudHJ5UG9p bnQgbXVzdCBuZXZlcg0KPiByZXR1cm4uDQo+ID4gKw0KPiA+ICsgIElmIHRoZSBjdXJyZW50IGV4 ZWN1dGlvbiBtb2RlIGlzIG5vdCAzMi1iaXQgcGFnZWQNCj4gbW9kZSwgdGhlbiBBU1NFUlQoKS4N Cj4gPiArICBJZiBFbnRyeVBvaW50IGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4gKyAgSWYg TmV3U3RhY2sgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPiArDQo+ID4gKyAgVGhlcmUgYXJl IGEgbnVtYmVyIG9mIGNvbnN0cmFpbnRzIHRoYXQgbXVzdCBiZQ0KPiBmb2xsb3dlZCBiZWZvcmUg Y2FsbGluZyB0aGlzDQo+ID4gKyAgZnVuY3Rpb246DQo+ID4gKyAgMSkgIEludGVycnVwdHMgbXVz dCBiZSBkaXNhYmxlZC4NCj4gPiArICAyKSAgVGhlIGNhbGxlciBtdXN0IGJlIGluIDMyLWJpdCBw YWdlZCBtb2RlLg0KPiA+ICsgIDMpICBDUjAsIENSMywgYW5kIENSNCBtdXN0IGJlIGNvbXBhdGli bGUgd2l0aCAzMi0NCj4gYml0IHBhZ2VkIG1vZGUuDQo+ID4gKyAgNCkgIENSMyBtdXN0IHBvaW50 IHRvIHZhbGlkIHBhZ2UgdGFibGVzIHRoYXQNCj4gZ3VhcmFudGVlIHRoYXQgdGhlIHBhZ2VzIGZv cg0KPiA+ICsgICAgICB0aGlzIGZ1bmN0aW9uIGFuZCB0aGUgc3RhY2sgYXJlIGlkZW50aXR5DQo+ IG1hcHBlZC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBFbnRyeVBvaW50ICBBIHBvaW50ZXIgdG8g ZnVuY3Rpb24gdG8gY2FsbA0KPiB3aXRoIHRoZSBuZXcgc3RhY2sgYWZ0ZXINCj4gPiArICAgICAg ICAgICAgICAgICAgICAgIHBhZ2luZyBpcyBkaXNhYmxlZC4NCj4gPiArICBAcGFyYW0gIENvbnRl eHQxICAgIEEgcG9pbnRlciB0byB0aGUgY29udGV4dCB0bw0KPiBwYXNzIGludG8gdGhlIEVudHJ5 UG9pbnQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFzIHRoZSBmaXJzdCBw YXJhbWV0ZXINCj4gYWZ0ZXIgcGFnaW5nIGlzIGRpc2FibGVkLg0KPiA+ICsgIEBwYXJhbSAgQ29u dGV4dDIgICAgQSBwb2ludGVyIHRvIHRoZSBjb250ZXh0IHRvDQo+IHBhc3MgaW50byB0aGUgRW50 cnlQb2ludA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYXMgdGhlIHNlY29u ZA0KPiBwYXJhbWV0ZXIgYWZ0ZXIgcGFnaW5nIGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICBkaXNhYmxlZC4NCj4gPiArICBAcGFyYW0gIE5ld1N0YWNrICAgIEEgcG9pbnRlciB0byB0aGUg bmV3IHN0YWNrIHRvDQo+IHVzZSBmb3IgdGhlIEVudHJ5UG9pbnQNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgIGZ1bmN0aW9uIGFmdGVyIHBhZ2luZyBpcw0KPiBkaXNhYmxlZC4NCj4gPiArDQo+ ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21EaXNhYmxlUGFnaW5nMzIg KA0KPiA+ICsgIElOICAgICAgU1dJVENIX1NUQUNLX0VOVFJZX1BPSU5UICBFbnRyeVBvaW50LA0K PiA+ICsgIElOICAgICAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAqQ29udGV4dDEsDQo+IE9Q VElPTkFMDQo+ID4gKyAgSU4gICAgICBWT0lEICAgICAgICAgICAgICAgICAgICAgICpDb250ZXh0 MiwNCj4gT1BUSU9OQUwNCj4gPiArICBJTiAgICAgIFZPSUQgICAgICAgICAgICAgICAgICAgICAg Kk5ld1N0YWNrDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIu WDg2LT5Bc21EaXNhYmxlUGFnaW5nMzINCj4gKEVudHJ5UG9pbnQsIENvbnRleHQxLCBDb250ZXh0 MiwgTmV3U3RhY2spOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBFbmFibGVzIHRo ZSA2NC1iaXQgcGFnaW5nIG1vZGUgb24gdGhlIENQVS4NCj4gPiArDQo+ID4gKyAgRW5hYmxlcyB0 aGUgNjQtYml0IHBhZ2luZyBtb2RlIG9uIHRoZSBDUFUuIENSMCwNCj4gQ1IzLCBDUjQsIGFuZCB0 aGUgcGFnZSB0YWJsZXMNCj4gPiArICBtdXN0IGJlIHByb3Blcmx5IGluaXRpYWxpemVkIHByaW9y IHRvIGNhbGxpbmcgdGhpcw0KPiBzZXJ2aWNlLiBUaGlzIGZ1bmN0aW9uDQo+ID4gKyAgYXNzdW1l cyB0aGUgY3VycmVudCBleGVjdXRpb24gbW9kZSBpcyAzMi1iaXQNCj4gcHJvdGVjdGVkIG1vZGUg d2l0aCBmbGF0DQo+ID4gKyAgZGVzY3JpcHRvcnMuIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFp bGFibGUgb24gSUEtDQo+IDMyLiBBZnRlciB0aGUgNjQtYml0DQo+ID4gKyAgcGFnaW5nIG1vZGUg aXMgZW5hYmxlZCwgY29udHJvbCBpcyB0cmFuc2ZlcnJlZCB0bw0KPiB0aGUgZnVuY3Rpb24gc3Bl Y2lmaWVkIGJ5DQo+ID4gKyAgRW50cnlQb2ludCB1c2luZyB0aGUgbmV3IHN0YWNrIHNwZWNpZmll ZCBieQ0KPiBOZXdTdGFjayBhbmQgcGFzc2luZyBpbiB0aGUNCj4gPiArICBwYXJhbWV0ZXJzIHNw ZWNpZmllZCBieSBDb250ZXh0MSBhbmQgQ29udGV4dDIuDQo+IENvbnRleHQxIGFuZCBDb250ZXh0 MiBhcmUNCj4gPiArICBvcHRpb25hbCBhbmQgbWF5IGJlIDAuIFRoZSBmdW5jdGlvbiBFbnRyeVBv aW50IG11c3QNCj4gbmV2ZXIgcmV0dXJuLg0KPiA+ICsNCj4gPiArICBJZiB0aGUgY3VycmVudCBl eGVjdXRpb24gbW9kZSBpcyBub3QgMzItYml0DQo+IHByb3RlY3RlZCBtb2RlIHdpdGggZmxhdA0K PiA+ICsgIGRlc2NyaXB0b3JzLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsgIElmIEVudHJ5UG9pbnQg aXMgMCwgdGhlbiBBU1NFUlQoKS4NCj4gPiArICBJZiBOZXdTdGFjayBpcyAwLCB0aGVuIEFTU0VS VCgpLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIENzICAgICAgICAgIFRoZSAxNi1iaXQgc2VsZWN0 b3IgdG8gbG9hZCBpbg0KPiB0aGUgQ1MgYmVmb3JlIEVudHJ5UG9pbnQNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgIGlzIGNhbGxlZC4gVGhlIGRlc2NyaXB0b3IgaW4NCj4gdGhlIEdEVCB0aGF0 IHRoaXMgc2VsZWN0b3INCj4gPiArICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMgbXVz dCBiZSBzZXR1cCBmb3INCj4gbG9uZyBtb2RlLg0KPiA+ICsgIEBwYXJhbSAgRW50cnlQb2ludCAg VGhlIDY0LWJpdCB2aXJ0dWFsIGFkZHJlc3Mgb2YNCj4gdGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0 aA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgdGhlIG5ldyBzdGFjayBhZnRlciBwYWdpbmcg aXMNCj4gZW5hYmxlZC4NCj4gPiArICBAcGFyYW0gIENvbnRleHQxICAgIFRoZSA2NC1iaXQgdmly dHVhbCBhZGRyZXNzIG9mDQo+IHRoZSBjb250ZXh0IHRvIHBhc3MgaW50bw0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgdGhlIEVudHJ5UG9pbnQgZnVuY3Rpb24gYXMgdGhlDQo+IGZpcnN0IHBh cmFtZXRlciBhZnRlcg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgcGFnaW5nIGlzIGVuYWJs ZWQuDQo+ID4gKyAgQHBhcmFtICBDb250ZXh0MiAgICBUaGUgNjQtYml0IHZpcnR1YWwgYWRkcmVz cyBvZg0KPiB0aGUgY29udGV4dCB0byBwYXNzIGludG8NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgIHRoZSBFbnRyeVBvaW50IGZ1bmN0aW9uIGFzIHRoZQ0KPiBzZWNvbmQgcGFyYW1ldGVyIGFm dGVyDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBwYWdpbmcgaXMgZW5hYmxlZC4NCj4gPiAr ICBAcGFyYW0gIE5ld1N0YWNrICAgIFRoZSA2NC1iaXQgdmlydHVhbCBhZGRyZXNzIG9mDQo+IHRo ZSBuZXcgc3RhY2sgdG8gdXNlIGZvcg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgdGhlIEVu dHJ5UG9pbnQgZnVuY3Rpb24gYWZ0ZXINCj4gcGFnaW5nIGlzIGVuYWJsZWQuDQo+ID4gKw0KPiA+ ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArQXNtRW5hYmxlUGFnaW5nNjQgKA0K PiA+ICsgIElOICAgICAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICBDcywNCj4gPiArICBJTiAg ICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgRW50cnlQb2ludCwNCj4gPiArICBJTiAgICAg IFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgQ29udGV4dDEsDQo+IE9QVElPTkFMDQo+ID4gKyAg SU4gICAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIENvbnRleHQyLA0KPiBPUFRJT05BTA0K PiA+ICsgIElOICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBOZXdTdGFjaw0KPiA+ICsg ICkNCj4gPiArew0KPiA+ICsgIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtRW5hYmxlUGFn aW5nNjQgKENzLA0KPiBFbnRyeVBvaW50LCBDb250ZXh0MSwgQ29udGV4dDIsIE5ld1N0YWNrKTsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRGlzYWJsZXMgdGhlIDY0LWJpdCBwYWdp bmcgbW9kZSBvbiB0aGUgQ1BVLg0KPiA+ICsNCj4gPiArICBEaXNhYmxlcyB0aGUgNjQtYml0IHBh Z2luZyBtb2RlIG9uIHRoZSBDUFUgYW5kDQo+IHJldHVybnMgdG8gMzItYml0IHByb3RlY3RlZA0K PiA+ICsgIG1vZGUuIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGUgY3VycmVudCBleGVjdXRpb24N Cj4gbW9kZSBpcyA2NC1wYWdpbmcgbW9kZS4NCj4gPiArICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkg YXZhaWxhYmxlIG9uIHg2NC4gQWZ0ZXIgdGhlDQo+IDY0LWJpdCBwYWdpbmcgbW9kZSBpcw0KPiA+ ICsgIGRpc2FibGVkLCBjb250cm9sIGlzIHRyYW5zZmVycmVkIHRvIHRoZSBmdW5jdGlvbg0KPiBz cGVjaWZpZWQgYnkgRW50cnlQb2ludA0KPiA+ICsgIHVzaW5nIHRoZSBuZXcgc3RhY2sgc3BlY2lm aWVkIGJ5IE5ld1N0YWNrIGFuZA0KPiBwYXNzaW5nIGluIHRoZSBwYXJhbWV0ZXJzDQo+ID4gKyAg c3BlY2lmaWVkIGJ5IENvbnRleHQxIGFuZCBDb250ZXh0Mi4gQ29udGV4dDEgYW5kDQo+IENvbnRl eHQyIGFyZSBvcHRpb25hbCBhbmQNCj4gPiArICBtYXkgYmUgMC4gVGhlIGZ1bmN0aW9uIEVudHJ5 UG9pbnQgbXVzdCBuZXZlcg0KPiByZXR1cm4uDQo+ID4gKw0KPiA+ICsgIElmIHRoZSBjdXJyZW50 IGV4ZWN1dGlvbiBtb2RlIGlzIG5vdCA2NC1iaXQgcGFnZWQNCj4gbW9kZSwgdGhlbiBBU1NFUlQo KS4NCj4gPiArICBJZiBFbnRyeVBvaW50IGlzIDAsIHRoZW4gQVNTRVJUKCkuDQo+ID4gKyAgSWYg TmV3U3RhY2sgaXMgMCwgdGhlbiBBU1NFUlQoKS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBDcyAg ICAgICAgICBUaGUgMTYtYml0IHNlbGVjdG9yIHRvIGxvYWQgaW4NCj4gdGhlIENTIGJlZm9yZSBF bnRyeVBvaW50DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBpcyBjYWxsZWQuIFRoZSBkZXNj cmlwdG9yIGluDQo+IHRoZSBHRFQgdGhhdCB0aGlzIHNlbGVjdG9yDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICByZWZlcmVuY2VzIG11c3QgYmUgc2V0dXAgZm9yDQo+IDMyLWJpdCBwcm90ZWN0 ZWQgbW9kZS4NCj4gPiArICBAcGFyYW0gIEVudHJ5UG9pbnQgIFRoZSA2NC1iaXQgdmlydHVhbCBh ZGRyZXNzIG9mDQo+IHRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGgNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgIHRoZSBuZXcgc3RhY2sgYWZ0ZXIgcGFnaW5nIGlzDQo+IGRpc2FibGVkLg0KPiA+ ICsgIEBwYXJhbSAgQ29udGV4dDEgICAgVGhlIDY0LWJpdCB2aXJ0dWFsIGFkZHJlc3Mgb2YNCj4g dGhlIGNvbnRleHQgdG8gcGFzcyBpbnRvDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICB0aGUg RW50cnlQb2ludCBmdW5jdGlvbiBhcyB0aGUNCj4gZmlyc3QgcGFyYW1ldGVyIGFmdGVyDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICBwYWdpbmcgaXMgZGlzYWJsZWQuDQo+ID4gKyAgQHBhcmFt ICBDb250ZXh0MiAgICBUaGUgNjQtYml0IHZpcnR1YWwgYWRkcmVzcyBvZg0KPiB0aGUgY29udGV4 dCB0byBwYXNzIGludG8NCj4gPiArICAgICAgICAgICAgICAgICAgICAgIHRoZSBFbnRyeVBvaW50 IGZ1bmN0aW9uIGFzIHRoZQ0KPiBzZWNvbmQgcGFyYW1ldGVyIGFmdGVyDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICBwYWdpbmcgaXMgZGlzYWJsZWQuDQo+ID4gKyAgQHBhcmFtICBOZXdTdGFj ayAgICBUaGUgNjQtYml0IHZpcnR1YWwgYWRkcmVzcyBvZg0KPiB0aGUgbmV3IHN0YWNrIHRvIHVz ZSBmb3INCj4gPiArICAgICAgICAgICAgICAgICAgICAgIHRoZSBFbnRyeVBvaW50IGZ1bmN0aW9u IGFmdGVyDQo+IHBhZ2luZyBpcyBkaXNhYmxlZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lE DQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21EaXNhYmxlUGFnaW5nNjQgKA0KPiA+ICsgIElOICAgICAg VUlOVDE2ICAgICAgICAgICAgICAgICAgICBDcywNCj4gPiArICBJTiAgICAgIFVJTlQzMiAgICAg ICAgICAgICAgICAgICAgRW50cnlQb2ludCwNCj4gPiArICBJTiAgICAgIFVJTlQzMiAgICAgICAg ICAgICAgICAgICAgQ29udGV4dDEsDQo+IE9QVElPTkFMDQo+ID4gKyAgSU4gICAgICBVSU5UMzIg ICAgICAgICAgICAgICAgICAgIENvbnRleHQyLA0KPiBPUFRJT05BTA0KPiA+ICsgIElOICAgICAg VUlOVDMyICAgICAgICAgICAgICAgICAgICBOZXdTdGFjaw0KPiA+ICsgICkNCj4gPiArew0KPiA+ ICsgIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtRGlzYWJsZVBhZ2luZzY0IChDcywNCj4g RW50cnlQb2ludCwgQ29udGV4dDEsIENvbnRleHQyLCBOZXdTdGFjayk7DQo+ID4gK30NCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgIFJldHJpZXZlcyB0aGUgcHJvcGVydGllcyBmb3IgMTYtYml0IHRo dW5rDQo+IGZ1bmN0aW9ucy4NCj4gPiArDQo+ID4gKyAgQ29tcHV0ZXMgdGhlIHNpemUgb2YgdGhl IGJ1ZmZlciBhbmQgc3RhY2sgYmVsb3cgMU1CDQo+IHJlcXVpcmVkIHRvIHVzZSB0aGUNCj4gPiAr ICBBc21QcmVwYXJlVGh1bmsxNigpLCBBc21UaHVuazE2KCkgYW5kDQo+IEFzbVByZXBhcmVBbmRU aHVuazE2KCkgZnVuY3Rpb25zLiBUaGlzDQo+ID4gKyAgYnVmZmVyIHNpemUgaXMgcmV0dXJuZWQg aW4gUmVhbE1vZGVCdWZmZXJTaXplLCBhbmQNCj4gdGhlIHN0YWNrIHNpemUgaXMgcmV0dXJuZWQN Cj4gPiArICBpbiBFeHRyYVN0YWNrU2l6ZS4gSWYgcGFyYW1ldGVycyBhcmUgcGFzc2VkIHRvIHRo ZQ0KPiAxNi1iaXQgcmVhbCBtb2RlIGNvZGUsDQo+ID4gKyAgdGhlbiB0aGUgYWN0dWFsIG1pbmlt dW0gc3RhY2sgc2l6ZSBpcw0KPiBFeHRyYVN0YWNrU2l6ZSBwbHVzIHRoZSBtYXhpbXVtIG51bWJl cg0KPiA+ICsgIG9mIGJ5dGVzIHRoYXQgbmVlZCB0byBiZSBwYXNzZWQgdG8gdGhlIDE2LWJpdCBy ZWFsDQo+IG1vZGUgY29kZS4NCj4gPiArDQo+ID4gKyAgSWYgUmVhbE1vZGVCdWZmZXJTaXplIGlz IE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4gKyAgSWYgRXh0cmFTdGFja1NpemUgaXMgTlVMTCwg dGhlbiBBU1NFUlQoKS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBSZWFsTW9kZUJ1ZmZlclNpemUg IEEgcG9pbnRlciB0byB0aGUgc2l6ZQ0KPiBvZiB0aGUgYnVmZmVyIGJlbG93IDFNQg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZCB0byB1c2UgdGhlIDE2LQ0KPiBi aXQgdGh1bmsgZnVuY3Rpb25zLg0KPiA+ICsgIEBwYXJhbSAgRXh0cmFTdGFja1NpemUgICAgICBB IHBvaW50ZXIgdG8gdGhlIGV4dHJhDQo+IHNpemUgb2Ygc3RhY2sgYmVsb3cgMU1CDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgdGhlIDE2LWJpdCB0aHVuaw0KPiBmdW5j dGlvbnMgcmVxdWlyZSBmb3INCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVt cG9yYXJ5IHN0b3JhZ2UgaW4NCj4gdGhlIHRyYW5zaXRpb24gdG8gYW5kIGZyb20NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYtYml0IHJlYWwgbW9kZS4NCj4gPiArDQo+ID4g KyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21HZXRUaHVuazE2UHJvcGVydGll cyAoDQo+ID4gKyAgT1VUICAgICBVSU5UMzINCj4gKlJlYWxNb2RlQnVmZmVyU2l6ZSwNCj4gPiAr ICBPVVQgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgKkV4dHJhU3RhY2tTaXplDQo+ID4g KyAgKQ0KPiA+ICt7DQo+ID4gKyAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21HZXRUaHVu azE2UHJvcGVydGllcw0KPiAoUmVhbE1vZGVCdWZmZXJTaXplLCBFeHRyYVN0YWNrU2l6ZSk7DQo+ ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFByZXBhcmVzIGFsbCBzdHJ1Y3R1cmVzIGEg Y29kZSByZXF1aXJlZCB0byB1c2UNCj4gQXNtVGh1bmsxNigpLg0KPiA+ICsNCj4gPiArICBQcmVw YXJlcyBhbGwgc3RydWN0dXJlcyBhbmQgY29kZSByZXF1aXJlZCB0byB1c2UNCj4gQXNtVGh1bmsx NigpLg0KPiA+ICsNCj4gPiArICBUaGlzIGludGVyZmFjZSBpcyBsaW1pdGVkIHRvIGJlIHVzZWQg aW4gZWl0aGVyDQo+IHBoeXNpY2FsIG1vZGUgb3IgdmlydHVhbCBtb2RlcyB3aXRoIHBhZ2luZyBl bmFibGVkIHdoZXJlDQo+IHRoZQ0KPiA+ICsgIHZpcnR1YWwgdG8gcGh5c2ljYWwgbWFwcGluZ3Mg Zm9yDQo+IFRodW5rQ29udGV4dC5SZWFsTW9kZUJ1ZmZlciBpcyBtYXBwZWQgMToxLg0KPiA+ICsN Cj4gPiArICBJZiBUaHVua0NvbnRleHQgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPiArDQo+ ID4gKyAgQHBhcmFtICBUaHVua0NvbnRleHQgIEEgcG9pbnRlciB0byB0aGUgY29udGV4dA0KPiBz dHJ1Y3R1cmUgdGhhdCBkZXNjcmliZXMgdGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg IDE2LWJpdCByZWFsIG1vZGUgY29kZSB0bw0KPiBjYWxsLg0KPiA+ICsNCj4gPiArKiovDQo+ID4g K1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK0FzbVByZXBhcmVUaHVuazE2ICgNCj4gPiArICBJTiBP VVQgIFRIVU5LX0NPTlRFWFQgICAgICAgICAgICAgKlRodW5rQ29udGV4dA0KPiA+ICsgICkNCj4g PiArew0KPiA+ICsgIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtUHJlcGFyZVRodW5rMTYN Cj4gKFRodW5rQ29udGV4dCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFRyYW5z ZmVycyBjb250cm9sIHRvIGEgMTYtYml0IHJlYWwgbW9kZSBlbnRyeSBwb2ludA0KPiBhbmQgcmV0 dXJucyB0aGUgcmVzdWx0cy4NCj4gPiArDQo+ID4gKyAgVHJhbnNmZXJzIGNvbnRyb2wgdG8gYSAx Ni1iaXQgcmVhbCBtb2RlIGVudHJ5IHBvaW50DQo+IGFuZCByZXR1cm5zIHRoZSByZXN1bHRzLg0K PiA+ICsgIEFzbVByZXBhcmVUaHVuazE2KCkgbXVzdCBiZSBjYWxsZWQgd2l0aA0KPiBUaHVua0Nv bnRleHQgYmVmb3JlIHRoaXMgZnVuY3Rpb24gaXMgdXNlZC4NCj4gPiArICBUaGlzIGZ1bmN0aW9u IG11c3QgYmUgY2FsbGVkIHdpdGggaW50ZXJydXB0cw0KPiBkaXNhYmxlZC4NCj4gPiArDQo+ID4g KyAgVGhlIHJlZ2lzdGVyIHN0YXRlIGZyb20gdGhlIFJlYWxNb2RlU3RhdGUgZmllbGQgb2YNCj4g VGh1bmtDb250ZXh0IGlzIHJlc3RvcmVkIGp1c3QgcHJpb3INCj4gPiArICB0byBjYWxsaW5nIHRo ZSAxNi1iaXQgcmVhbCBtb2RlIGVudHJ5IHBvaW50LiAgVGhpcw0KPiBpbmNsdWRlcyB0aGUgRUZM QUdTIGZpZWxkIG9mIFJlYWxNb2RlU3RhdGUsDQo+ID4gKyAgd2hpY2ggaXMgdXNlZCB0byBzZXQg dGhlIGludGVycnVwdCBzdGF0ZSB3aGVuIGEgMTYtDQo+IGJpdCByZWFsIG1vZGUgZW50cnkgcG9p bnQgaXMgY2FsbGVkLg0KPiA+ICsgIENvbnRyb2wgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIDE2LWJp dCByZWFsIG1vZGUNCj4gZW50cnkgcG9pbnQgc3BlY2lmaWVkIGJ5IHRoZSBDUyBhbmQgRWlwIGZp ZWxkcyBvZg0KPiBSZWFsTW9kZVN0YXRlLg0KPiA+ICsgIFRoZSBzdGFjayBpcyBpbml0aWFsaXpl ZCB0byB0aGUgU1MgYW5kIEVTUCBmaWVsZHMNCj4gb2YgUmVhbE1vZGVTdGF0ZS4gIEFueSBwYXJh bWV0ZXJzIHBhc3NlZCB0bw0KPiA+ICsgIHRoZSAxNi1iaXQgcmVhbCBtb2RlIGNvZGUgbXVzdCBi ZSBwb3B1bGF0ZWQgYnkgdGhlDQo+IGNhbGxlciBhdCBTUzpFU1AgcHJpb3IgdG8gY2FsbGluZyB0 aGlzIGZ1bmN0aW9uLg0KPiA+ICsgIFRoZSAxNi1iaXQgcmVhbCBtb2RlIGVudHJ5IHBvaW50IGlz IGludm9rZWQgd2l0aCBhDQo+IDE2LWJpdCBDQUxMIEZBUiBpbnN0cnVjdGlvbiwNCj4gPiArICBz byB3aGVuIGFjY2Vzc2luZyBzdGFjayBjb250ZW50cywgdGhlIDE2LWJpdCByZWFsDQo+IG1vZGUg Y29kZSBtdXN0IGFjY291bnQgZm9yIHRoZSAxNi1iaXQgc2VnbWVudA0KPiA+ICsgIGFuZCAxNi1i aXQgb2Zmc2V0IG9mIHRoZSByZXR1cm4gYWRkcmVzcyB0aGF0IHdlcmUNCj4gcHVzaGVkIG9udG8g dGhlIHN0YWNrLiBUaGUgMTYtYml0IHJlYWwgbW9kZSBlbnRyeQ0KPiA+ICsgIHBvaW50IG11c3Qg ZXhpdCB3aXRoIGEgUkVURiBpbnN0cnVjdGlvbi4gVGhlDQo+IHJlZ2lzdGVyIHN0YXRlIGlzIGNh cHR1cmVkIGludG8gUmVhbE1vZGVTdGF0ZQ0KPiBpbW1lZGlhdGVseQ0KPiA+ICsgIGFmdGVyIHRo ZSBSRVRGIGluc3RydWN0aW9uIGlzIGV4ZWN1dGVkLg0KPiA+ICsNCj4gPiArICBJZiBFRkxBR1Mg c3BlY2lmaWVzIGludGVycnVwdHMgZW5hYmxlZCwgb3IgYW55IG9mDQo+IHRoZSAxNi1iaXQgcmVh bCBtb2RlIGNvZGUgZW5hYmxlcyBpbnRlcnJ1cHRzLA0KPiA+ICsgIG9yIGFueSBvZiB0aGUgMTYt Yml0IHJlYWwgbW9kZSBjb2RlIG1ha2VzIGEgU1cNCj4gaW50ZXJydXB0LCB0aGVuIHRoZSBjYWxs ZXIgaXMgcmVzcG9uc2libGUgZm9yIG1ha2luZw0KPiBzdXJlDQo+ID4gKyAgdGhlIElEVCBhdCBh ZGRyZXNzIDAgaXMgaW5pdGlhbGl6ZWQgdG8gaGFuZGxlIGFueQ0KPiBIVyBvciBTVyBpbnRlcnJ1 cHRzIHRoYXQgbWF5IG9jY3VyIHdoaWxlIGluIDE2LWJpdCByZWFsDQo+IG1vZGUuDQo+ID4gKw0K PiA+ICsgIElmIEVGTEFHUyBzcGVjaWZpZXMgaW50ZXJydXB0cyBlbmFibGVkLCBvciBhbnkgb2YN Cj4gdGhlIDE2LWJpdCByZWFsIG1vZGUgY29kZSBlbmFibGVzIGludGVycnVwdHMsDQo+ID4gKyAg dGhlbiB0aGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBtYWtpbmcgc3VyZSB0aGUNCj4gODI1 OSBQSUMgaXMgaW4gYSBzdGF0ZSBjb21wYXRpYmxlIHdpdGggMTYtYml0IHJlYWwgbW9kZS4NCj4g PiArICBUaGlzIGluY2x1ZGVzIHRoZSBiYXNlIHZlY3RvcnMsIHRoZSBpbnRlcnJ1cHQNCj4gbWFz a3MsIGFuZCB0aGUgZWRnZS9sZXZlbCB0cmlnZ2VyIG1vZGUuDQo+ID4gKw0KPiA+ICsgIElmIFRI VU5LX0FUVFJJQlVURV9CSUdfUkVBTF9NT0RFIGlzIHNldCBpbiB0aGUNCj4gVGh1bmtBdHRyaWJ1 dGVzIGZpZWxkIG9mIFRodW5rQ29udGV4dCwgdGhlbiB0aGUgdXNlcg0KPiBjb2RlDQo+ID4gKyAg aXMgaW52b2tlZCBpbiBiaWcgcmVhbCBtb2RlLiAgT3RoZXJ3aXNlLCB0aGUgdXNlcg0KPiBjb2Rl IGlzIGludm9rZWQgaW4gMTYtYml0IHJlYWwgbW9kZSB3aXRoIDY0S0Igc2VnbWVudA0KPiBsaW1p dHMuDQo+ID4gKw0KPiA+ICsgIElmIG5laXRoZXIgVEhVTktfQVRUUklCVVRFX0RJU0FCTEVfQTIw X01BU0tfSU5UXzE1DQo+IG5vciBUSFVOS19BVFRSSUJVVEVfRElTQUJMRV9BMjBfTUFTS19LQkRf Q1RSTCBhcmUgc2V0IGluDQo+ID4gKyAgVGh1bmtBdHRyaWJ1dGVzLCB0aGVuIGl0IGlzIGFzc3Vt ZWQgdGhhdCB0aGUgdXNlcg0KPiBjb2RlIGRpZCBub3QgZW5hYmxlIHRoZSBBMjAgbWFzaywgYW5k IG5vIGF0dGVtcHQgaXMgbWFkZQ0KPiB0bw0KPiA+ICsgIGRpc2FibGUgdGhlIEEyMCBtYXNrLg0K PiA+ICsNCj4gPiArICBJZiBUSFVOS19BVFRSSUJVVEVfRElTQUJMRV9BMjBfTUFTS19JTlRfMTUg aXMgc2V0DQo+IGFuZCBUSFVOS19BVFRSSUJVVEVfRElTQUJMRV9BMjBfTUFTS19LQkRfQ1RSTCBp cyBjbGVhcg0KPiBpbg0KPiA+ICsgIFRodW5rQXR0cmlidXRlcywgdGhlbiBhdHRlbXB0IHRvIHVz ZSB0aGUgSU5UIDE1DQo+IHNlcnZpY2UgdG8gZGlzYWJsZSB0aGUgQTIwIG1hc2suICBJZiB0aGlz IElOVCAxNSBjYWxsDQo+IGZhaWxzLA0KPiA+ICsgIHRoZW4gYXR0ZW1wdCB0byBkaXNhYmxlIHRo ZSBBMjAgbWFzayBieSBkaXJlY3RseQ0KPiBhY2Nlc3NpbmcgdGhlIDgwNDIga2V5Ym9hcmQgY29u dHJvbGxlciBJL08gcG9ydHMuDQo+ID4gKw0KPiA+ICsgIElmIFRIVU5LX0FUVFJJQlVURV9ESVNB QkxFX0EyMF9NQVNLX0lOVF8xNSBpcyBjbGVhcg0KPiBhbmQgVEhVTktfQVRUUklCVVRFX0RJU0FC TEVfQTIwX01BU0tfS0JEX0NUUkwgaXMgc2V0IGluDQo+ID4gKyAgVGh1bmtBdHRyaWJ1dGVzLCB0 aGVuIGF0dGVtcHQgdG8gZGlzYWJsZSB0aGUgQTIwDQo+IG1hc2sgYnkgZGlyZWN0bHkgYWNjZXNz aW5nIHRoZSA4MDQyIGtleWJvYXJkIGNvbnRyb2xsZXINCj4gSS9PIHBvcnRzLg0KPiA+ICsNCj4g PiArICBJZiBUaHVua0NvbnRleHQgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPiArICBJZiBB c21QcmVwYXJlVGh1bmsxNigpIHdhcyBub3QgcHJldmlvdXNseSBjYWxsZWQNCj4gd2l0aCBUaHVu a0NvbnRleHQsIHRoZW4gQVNTRVJUKCkuDQo+ID4gKyAgSWYgYm90aCBUSFVOS19BVFRSSUJVVEVf RElTQUJMRV9BMjBfTUFTS19JTlRfMTUgYW5kDQo+IFRIVU5LX0FUVFJJQlVURV9ESVNBQkxFX0Ey MF9NQVNLX0tCRF9DVFJMIGFyZSBzZXQgaW4NCj4gPiArICBUaHVua0F0dHJpYnV0ZXMsIHRoZW4g QVNTRVJUKCkuDQo+ID4gKw0KPiA+ICsgIFRoaXMgaW50ZXJmYWNlIGlzIGxpbWl0ZWQgdG8gYmUg dXNlZCBpbiBlaXRoZXINCj4gcGh5c2ljYWwgbW9kZSBvciB2aXJ0dWFsIG1vZGVzIHdpdGggcGFn aW5nIGVuYWJsZWQgd2hlcmUNCj4gdGhlDQo+ID4gKyAgdmlydHVhbCB0byBwaHlzaWNhbCBtYXBw aW5ncyBmb3INCj4gVGh1bmtDb250ZXh0LlJlYWxNb2RlQnVmZmVyIGFyZSBtYXBwZWQgMToxLg0K PiA+ICsNCj4gPiArICBAcGFyYW0gIFRodW5rQ29udGV4dCAgQSBwb2ludGVyIHRvIHRoZSBjb250 ZXh0DQo+IHN0cnVjdHVyZSB0aGF0IGRlc2NyaWJlcyB0aGUNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgMTYtYml0IHJlYWwgbW9kZSBjb2RlIHRvDQo+IGNhbGwuDQo+ID4gKw0KPiA+ICsq Ki8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArQXNtVGh1bmsxNiAoDQo+ID4gKyAgSU4g T1VUICBUSFVOS19DT05URVhUICAgICAgICAgICAgICpUaHVua0NvbnRleHQNCj4gPiArICApDQo+ ID4gK3sNCj4gPiArICBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbVRodW5rMTYNCj4gKFRo dW5rQ29udGV4dCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFByZXBhcmVzIGFs bCBzdHJ1Y3R1cmVzIGFuZCBjb2RlIGZvciBhIDE2LWJpdCByZWFsDQo+IG1vZGUgdGh1bmssIHRy YW5zZmVycw0KPiA+ICsgIGNvbnRyb2wgdG8gYSAxNi1iaXQgcmVhbCBtb2RlIGVudHJ5IHBvaW50 LCBhbmQNCj4gcmV0dXJucyB0aGUgcmVzdWx0cy4NCj4gPiArDQo+ID4gKyAgUHJlcGFyZXMgYWxs IHN0cnVjdHVyZXMgYW5kIGNvZGUgZm9yIGEgMTYtYml0IHJlYWwNCj4gbW9kZSB0aHVuaywgdHJh bnNmZXJzDQo+ID4gKyAgY29udHJvbCB0byBhIDE2LWJpdCByZWFsIG1vZGUgZW50cnkgcG9pbnQs IGFuZA0KPiByZXR1cm5zIHRoZSByZXN1bHRzLiBJZiB0aGUNCj4gPiArICBjYWxsZXIgb25seSBu ZWVkIHRvIHBlcmZvcm0gYSBzaW5nbGUgMTYtYml0IHJlYWwNCj4gbW9kZSB0aHVuaywgdGhlbiB0 aGlzDQo+ID4gKyAgc2VydmljZSBzaG91bGQgYmUgdXNlZC4gSWYgdGhlIGNhbGxlciBpbnRlbmRz IHRvDQo+IG1ha2UgbW9yZSB0aGFuIG9uZSAxNi1iaXQNCj4gPiArICByZWFsIG1vZGUgdGh1bmss IHRoZW4gaXQgaXMgbW9yZSBlZmZpY2llbnQgaWYNCj4gQXNtUHJlcGFyZVRodW5rMTYoKSBpcyBj YWxsZWQNCj4gPiArICBvbmNlIGFuZCBBc21UaHVuazE2KCkgY2FuIGJlIGNhbGxlZCBmb3IgZWFj aCAxNi1iaXQNCj4gcmVhbCBtb2RlIHRodW5rLg0KPiA+ICsNCj4gPiArICBUaGlzIGludGVyZmFj ZSBpcyBsaW1pdGVkIHRvIGJlIHVzZWQgaW4gZWl0aGVyDQo+IHBoeXNpY2FsIG1vZGUgb3Igdmly dHVhbCBtb2RlcyB3aXRoIHBhZ2luZyBlbmFibGVkIHdoZXJlDQo+IHRoZQ0KPiA+ICsgIHZpcnR1 YWwgdG8gcGh5c2ljYWwgbWFwcGluZ3MgZm9yDQo+IFRodW5rQ29udGV4dC5SZWFsTW9kZUJ1ZmZl ciBpcyBtYXBwZWQgMToxLg0KPiA+ICsNCj4gPiArICBTZWUgQXNtUHJlcGFyZVRodW5rMTYoKSBh bmQgQXNtVGh1bmsxNigpIGZvciB0aGUNCj4gZGV0YWlsZWQgZGVzY3JpcHRpb24gYW5kIEFTU0VS VCgpIGNvbmRpdGlvbnMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgVGh1bmtDb250ZXh0ICBBIHBv aW50ZXIgdG8gdGhlIGNvbnRleHQNCj4gc3RydWN0dXJlIHRoYXQgZGVzY3JpYmVzIHRoZQ0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAxNi1iaXQgcmVhbCBtb2RlIGNvZGUgdG8NCj4gY2Fs bC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtBc21QcmVw YXJlQW5kVGh1bmsxNiAoDQo+ID4gKyAgSU4gT1VUICBUSFVOS19DT05URVhUICAgICAgICAgICAg ICpUaHVua0NvbnRleHQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBnVW5pdFRlc3RIb3N0QmFz ZUxpYi5YODYtPkFzbVByZXBhcmVBbmRUaHVuazE2DQo+IChUaHVua0NvbnRleHQpOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBMb2FkIGdpdmVuIHNlbGVjdG9yIGludG8gVFIgcmVn aXN0ZXIuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gU2VsZWN0b3IgICAgIFRhc2sgc2VnbWVu dCBzZWxlY3Rvcg0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArQXNtV3Jp dGVUciAoDQo+ID4gKyAgSU4gVUlOVDE2IFNlbGVjdG9yDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4g KyAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21Xcml0ZVRyIChTZWxlY3Rvcik7DQo+ID4g K30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFBlcmZvcm1zIGEgc2VyaWFsaXppbmcgb3BlcmF0 aW9uIG9uIGFsbCBsb2FkLWZyb20tDQo+IG1lbW9yeSBpbnN0cnVjdGlvbnMgdGhhdA0KPiA+ICsg IHdlcmUgaXNzdWVkIHByaW9yIHRoZSBBc21MZmVuY2UgZnVuY3Rpb24uDQo+ID4gKw0KPiA+ICsg IEV4ZWN1dGVzIGEgTEZFTkNFIGluc3RydWN0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzDQo+IG9ubHkg YXZhaWxhYmxlIG9uIElBLTMyIGFuZCB4NjQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9JRA0K PiA+ICtFRklBUEkNCj4gPiArQXNtTGZlbmNlICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ ICt7DQo+ID4gKyAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21MZmVuY2UgKCk7DQo+ID4g K30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFBhdGNoIHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBv ZiBhbiBJQTMyIG9yIFg2NA0KPiBpbnN0cnVjdGlvbiBzdWNoIHRoYXQgdGhlIGJ5dGUsDQo+ID4g KyAgd29yZCwgZHdvcmQgb3IgcXdvcmQgb3BlcmFuZCBpcyBlbmNvZGVkIGF0IHRoZSBlbmQNCj4g b2YgdGhlIGluc3RydWN0aW9uJ3MNCj4gPiArICBiaW5hcnkgcmVwcmVzZW50YXRpb24uDQo+ID4g Kw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgdG8gdXBkYXRlIG9iamVjdCBj b2RlDQo+IHRoYXQgd2FzIGNvbXBpbGVkIHdpdGgNCj4gPiArICBOQVNNIGZyb20gYXNzZW1ibHkg c291cmNlIGNvZGUuIEV4YW1wbGU6DQo+ID4gKw0KPiA+ICsgIE5BU00gc291cmNlIGNvZGU6DQo+ ID4gKw0KPiA+ICsgICAgICAgIG1vdiAgICAgZWF4LCBzdHJpY3QgZHdvcmQgMCA7IHRoZSBpbW0z MiB6ZXJvDQo+IG9wZXJhbmQgd2lsbCBiZSBwYXRjaGVkDQo+ID4gKyAgICBBU01fUEZYKGdQYXRj aENyMyk6DQo+ID4gKyAgICAgICAgbW92ICAgICBjcjMsIGVheA0KPiA+ICsNCj4gPiArICBDIHNv dXJjZSBjb2RlOg0KPiA+ICsNCj4gPiArICAgIFg4Nl9BU1NFTUJMWV9QQVRDSF9MQUJFTCBnUGF0 Y2hDcjM7DQo+ID4gKyAgICBQYXRjaEluc3RydWN0aW9uWDg2IChnUGF0Y2hDcjMsIEFzbVJlYWRD cjMgKCksDQo+IDQpOw0KPiA+ICsNCj4gPiArICBAcGFyYW1bb3V0XSBJbnN0cnVjdGlvbkVuZCAg UG9pbnRlciByaWdodCBwYXN0IHRoZQ0KPiBpbnN0cnVjdGlvbiB0byBwYXRjaC4gVGhlDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltbWVkaWF0ZSBvcGVyYW5kIHRvDQo+IHBh dGNoIGlzIGV4cGVjdGVkIHRvDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bXByaXNlIHRoZSB0cmFpbGluZw0KPiBieXRlcyBvZiB0aGUgaW5zdHJ1Y3Rpb24uDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIEluc3RydWN0aW9uRW5kIGlzDQo+IGNsb3Nl ciB0byBhZGRyZXNzIDAgdGhhbg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW YWx1ZVNpemUgcGVybWl0cywgdGhlbg0KPiBBU1NFUlQoKS4NCj4gPiArDQo+ID4gKyAgQHBhcmFt W2luXSBQYXRjaFZhbHVlICAgICAgIFRoZSBjb25zdGFudCB0byB3cml0ZQ0KPiB0byB0aGUgaW1t ZWRpYXRlIG9wZXJhbmQuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBj YWxsZXIgaXMNCj4gcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIHRoYXQNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUGF0Y2hWYWx1ZSBjYW4gYmUNCj4gcmVwcmVzZW50ZWQgaW4g dGhlIGJ5dGUsIHdvcmQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR3b3Jk IG9yIHF3b3JkIG9wZXJhbmQNCj4gKGFzIGluZGljYXRlZCB0aHJvdWdoDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFZhbHVlU2l6ZSk7IG90aGVyd2lzZQ0KPiBBU1NFUlQoKS4N Cj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBWYWx1ZVNpemUgICAgICAgIFRoZSBzaXplIG9mIHRo ZSBvcGVyYW5kDQo+IGluIGJ5dGVzOyBtdXN0IGJlIDEsIDIsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDQsIG9yIDguIEFTU0VSVCgpDQo+IG90aGVyd2lzZS4NCj4gPiArKiov DQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1BhdGNoSW5zdHJ1Y3Rpb25YODYgKA0KPiA+ ICsgIE9VVCBYODZfQVNTRU1CTFlfUEFUQ0hfTEFCRUwgKkluc3RydWN0aW9uRW5kLA0KPiA+ICsg IElOICBVSU5UNjQgICAgICAgICAgICAgICAgICAgUGF0Y2hWYWx1ZSwNCj4gPiArICBJTiAgVUlO VE4gICAgICAgICAgICAgICAgICAgIFZhbHVlU2l6ZQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsg IGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+UGF0Y2hJbnN0cnVjdGlvblg4Ng0KPiAoSW5zdHJ1 Y3Rpb25FbmQsIFBhdGNoVmFsdWUsIFZhbHVlU2l6ZSk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8v Lw0KPiA+ICsvLy8gQ29tbW9uIHNlcnZpY2VzDQo+ID4gKy8vLw0KPiA+ICtTVEFUSUMgVU5JVF9U RVNUX0hPU1RfQkFTRV9MSUJfQ09NTU9ODQo+IG1Vbml0VGVzdEhvc3RCYXNlTGliQ29tbW9uID0g ew0KPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJFbmFibGVJbnRlcnJ1cHRzLA0KPiA+ICsgIFVu aXRUZXN0SG9zdEJhc2VMaWJEaXNhYmxlSW50ZXJydXB0cywNCj4gPiArICBVbml0VGVzdEhvc3RC YXNlTGliRW5hYmxlRGlzYWJsZUludGVycnVwdHMsDQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxp YkdldEludGVycnVwdFN0YXRlLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLy8vDQo+ID4gKy8vLyBJ QTMyL1g2NCBzZXJ2aWNlcw0KPiA+ICsvLy8NCj4gPiArU1RBVElDIFVOSVRfVEVTVF9IT1NUX0JB U0VfTElCX1g4Ng0KPiBtVW5pdFRlc3RIb3N0QmFzZUxpYlg4NiA9IHsNCj4gPiArICBVbml0VGVz dEhvc3RCYXNlTGliQXNtQ3B1aWQsDQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbUNwdWlk RXgsDQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbURpc2FibGVDYWNoZSwNCj4gPiArICBV bml0VGVzdEhvc3RCYXNlTGliQXNtRW5hYmxlQ2FjaGUsDQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFz ZUxpYkFzbVJlYWRNc3I2NCwNCj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVNc3I2 NCwNCj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZENyMCwNCj4gPiArICBVbml0VGVz dEhvc3RCYXNlTGliQXNtUmVhZENyMiwNCj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtUmVh ZENyMywNCj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZENyNCwNCj4gPiArICBVbml0 VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVDcjAsDQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFz bVdyaXRlQ3IyLA0KPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21Xcml0ZUNyMywNCj4gPiAr ICBVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVDcjQsDQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFz ZUxpYkFzbVJlYWREcjAsDQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWREcjEsDQo+ ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWREcjIsDQo+ID4gKyAgVW5pdFRlc3RIb3N0 QmFzZUxpYkFzbVJlYWREcjMsDQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWREcjQs DQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWREcjUsDQo+ID4gKyAgVW5pdFRlc3RI b3N0QmFzZUxpYkFzbVJlYWREcjYsDQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWRE cjcsDQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVdyaXRlRHIwLA0KPiA+ICsgIFVuaXRU ZXN0SG9zdEJhc2VMaWJBc21Xcml0ZURyMSwNCj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNt V3JpdGVEcjIsDQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVdyaXRlRHIzLA0KPiA+ICsg IFVuaXRUZXN0SG9zdEJhc2VMaWJBc21Xcml0ZURyNCwNCj4gPiArICBVbml0VGVzdEhvc3RCYXNl TGliQXNtV3JpdGVEcjUsDQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVdyaXRlRHI2LA0K PiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21Xcml0ZURyNywNCj4gPiArICBVbml0VGVzdEhv c3RCYXNlTGliQXNtUmVhZENzLA0KPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFkRHMs DQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWRFcywNCj4gPiArICBVbml0VGVzdEhv c3RCYXNlTGliQXNtUmVhZEZzLA0KPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFkR3Ms DQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWRTcywNCj4gPiArICBVbml0VGVzdEhv c3RCYXNlTGliQXNtUmVhZFRyLA0KPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFkR2R0 ciwNCj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVHZHRyLA0KPiA+ICsgIFVuaXRU ZXN0SG9zdEJhc2VMaWJBc21SZWFkSWR0ciwNCj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNt V3JpdGVJZHRyLA0KPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFkTGR0ciwNCj4gPiAr ICBVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVMZHRyLA0KPiA+ICsgIFVuaXRUZXN0SG9zdEJh c2VMaWJBc21SZWFkUG1jLA0KPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21Nb25pdG9yLA0K PiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21Nd2FpdCwNCj4gPiArICBVbml0VGVzdEhvc3RC YXNlTGliQXNtV2JpbnZkLA0KPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21JbnZkLA0KPiA+ ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21GbHVzaENhY2hlTGluZSwNCj4gPiArICBVbml0VGVz dEhvc3RCYXNlTGliQXNtRW5hYmxlUGFnaW5nMzIsDQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxp YkFzbURpc2FibGVQYWdpbmczMiwNCj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtRW5hYmxl UGFnaW5nNjQsDQo+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbURpc2FibGVQYWdpbmc2NCwN Cj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtR2V0VGh1bmsxNlByb3BlcnRpZXMsDQo+ID4g KyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVByZXBhcmVUaHVuazE2LA0KPiA+ICsgIFVuaXRUZXN0 SG9zdEJhc2VMaWJBc21UaHVuazE2LA0KPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21QcmVw YXJlQW5kVGh1bmsxNiwNCj4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVUciwNCj4g PiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtTGZlbmNlLA0KPiA+ICsgIFVuaXRUZXN0SG9zdEJh c2VMaWJQYXRjaEluc3RydWN0aW9uWDg2DQo+ID4gK307DQo+ID4gKw0KPiA+ICsvLy8NCj4gPiAr Ly8vIFN0cnVjdHVyZSBvZiBob29rIGZ1bmN0aW9ucyBmb3IgQmFzZUxpYiBmdW5jdGlvbnMNCj4g dGhhdCBjYW4gbm90IGJlIHVzZWQgZnJvbQ0KPiA+ICsvLy8gYSBob3N0IGFwcGxpY2F0aW9uLiAg QSBzaW1wbGUgZW11bGF0aW9uIG9mIHRoZXNlDQo+IGZ1bmN0aW9uIGlzIHByb3ZpZGVkIGJ5DQo+ ID4gKy8vLyBkZWZhdWx0LiAgQSBzcGVjaWZpYyB1bml0IHRlc3QgY2FuIHByb3ZpZGUgaXRzDQo+ IG93biBpbXBsZW1lbnRhdGlvbiBmb3IgYW55DQo+ID4gKy8vLyBvZiB0aGVzZSBmdW5jdGlvbnMu DQo+ID4gKy8vLw0KPiA+ICtVTklUX1RFU1RfSE9TVF9CQVNFX0xJQiAgZ1VuaXRUZXN0SG9zdEJh c2VMaWIgPSB7DQo+ID4gKyAgJm1Vbml0VGVzdEhvc3RCYXNlTGliQ29tbW9uLA0KPiA+ICsgICZt VW5pdFRlc3RIb3N0QmFzZUxpYlg4Ng0KPiA+ICt9Ow0KPiA+IGRpZmYgLS1naXQgYS9NZGVQa2cv TWRlUGtnLmRlYyBiL01kZVBrZy9NZGVQa2cuZGVjDQo+ID4gaW5kZXggNjgyZTYxY2I4OC4uODU1 MDEyMTcyZCAxMDA2NDQNCj4gPiAtLS0gYS9NZGVQa2cvTWRlUGtnLmRlYw0KPiA+ICsrKyBiL01k ZVBrZy9NZGVQa2cuZGVjDQo+ID4gQEAgLTQsNyArNCw3IEBADQo+ID4gICMgSXQgYWxzbyBwcm92 aWRlcyB0aGUgZGVmaW5pdGlvbnMoaW5jbHVkaW5nDQo+IFBQSXMvUFJPVE9DT0xzL0dVSURzKSBv Zg0KPiA+ICAjIEVGSTEuMTAvVUVGSTIuNy9QSTEuNyBhbmQgc29tZSBJbmR1c3RyeSBTdGFuZGFy ZHMuDQo+ID4gICMNCj4gPiAtIyBDb3B5cmlnaHQgKGMpIDIwMDcgLSAyMDE5LCBJbnRlbCBDb3Jw b3JhdGlvbi4gQWxsDQo+IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyMgQ29weXJpZ2h0IChj KSAyMDA3IC0gMjAyMCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbA0KPiByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiA+ICAjIFBvcnRpb25zIGNvcHlyaWdodCAoYykgMjAwOCAtIDIwMDksIEFwcGxlIElu Yy4gQWxsDQo+IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gICMgKEMpIENvcHlyaWdodCAyMDE2 IC0gMjAyMCBIZXdsZXR0IFBhY2thcmQNCj4gRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4N Cj4gPiAgIw0KPiA+IEBAIC0yMyw2ICsyMyw3IEBAIFtEZWZpbmVzXQ0KPiA+DQo+ID4gIFtJbmNs dWRlc10NCj4gPiAgICBJbmNsdWRlDQo+ID4gKyAgVGVzdC9Vbml0VGVzdC9JbmNsdWRlDQo+ID4N Cj4gPiAgW0luY2x1ZGVzLklBMzJdDQo+ID4gICAgSW5jbHVkZS9JYTMyDQo+ID4gZGlmZiAtLWdp dCBhL01kZVBrZy9UZXN0L01kZVBrZ0hvc3RUZXN0LmRzYw0KPiBiL01kZVBrZy9UZXN0L01kZVBr Z0hvc3RUZXN0LmRzYw0KPiA+IGluZGV4IDNkNjc3ZWU3NWMuLjBjYWMxNGYwZTUgMTAwNjQ0DQo+ ID4gLS0tIGEvTWRlUGtnL1Rlc3QvTWRlUGtnSG9zdFRlc3QuZHNjDQo+ID4gKysrIGIvTWRlUGtn L1Rlc3QvTWRlUGtnSG9zdFRlc3QuZHNjDQo+ID4gQEAgLTI4LDMgKzI4LDggQEAgW0NvbXBvbmVu dHNdDQo+ID4gICAgIw0KPiA+DQo+IE1kZVBrZy9UZXN0L1VuaXRUZXN0L0xpYnJhcnkvQmFzZVNh ZmVJbnRMaWIvVGVzdEJhc2VTYWZlDQo+IEludExpYkhvc3QuaW5mDQo+ID4NCj4gTWRlUGtnL1Rl c3QvVW5pdFRlc3QvTGlicmFyeS9CYXNlTGliL0Jhc2VMaWJVbml0VGVzdHNIb3MNCj4gdC5pbmYN Cj4gPiArDQo+ID4gKyAgIw0KPiA+ICsgICMgQnVpbGQgSE9TVF9BUFBMSUNBVElPTiBMaWJyYXJp ZXMNCj4gPiArICAjDQo+ID4gKyAgTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9Vbml0VGVzdEhvc3RC YXNlTGliLmluZg0KPiA+IGRpZmYgLS1naXQNCj4gYS9NZGVQa2cvVGVzdC9Vbml0VGVzdC9JbmNs dWRlL0hvc3RUZXN0L1VuaXRUZXN0SG9zdEJhc2UNCj4gTGliLmgNCj4gPg0KPiBiL01kZVBrZy9U ZXN0L1VuaXRUZXN0L0luY2x1ZGUvSG9zdFRlc3QvVW5pdFRlc3RIb3N0QmFzZQ0KPiBMaWIuaA0K PiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uNGFkMDVhNWFm MQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysNCj4gYi9NZGVQa2cvVGVzdC9Vbml0VGVzdC9J bmNsdWRlL0hvc3RUZXN0L1VuaXRUZXN0SG9zdEJhc2UNCj4gTGliLmgNCj4gPiBAQCAtMCwwICsx LDU4MiBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiArICBVbml0IFRlc3QgSG9zdCBCYXNlTGliIGhv b2tzLg0KPiA+ICsNCj4gPiArICBDb3B5cmlnaHQgKGMpIDIwMjAsIEludGVsIENvcnBvcmF0aW9u LiBBbGwgcmlnaHRzDQo+IHJlc2VydmVkLjxCUj4NCj4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsj aWZuZGVmIF9fVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfSF9fDQo+ID4gKyNkZWZpbmUgX19VTklU X1RFU1RfSE9TVF9CQVNFX0xJQl9IX18NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFByb3RvdHlw ZSBvZiBzZXJ2aWNlIHdpdGggbm8gcGFyYW1ldGVycyBhbmQgbm8NCj4gcmV0dXJuIHZhbHVlLg0K PiA+ICsqKi8NCj4gPiArdHlwZWRlZg0KPiA+ICtWT0lEDQo+ID4gKyhFRklBUEkgKlVOSVRfVEVT VF9IT1NUX0JBU0VfTElCX1ZPSUQpKA0KPiA+ICsgIFZPSUQNCj4gPiArICApOw0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAgUHJvdG90eXBlIG9mIHNlcnZpY2UgdGhhdCByZWFkcyBhbmQgcmV0dXJu cyBhDQo+IEJPT0xFQU4gdmFsdWUuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHJl YWQuDQo+ID4gKyoqLw0KPiA+ICt0eXBlZGVmDQo+ID4gK0JPT0xFQU4NCj4gPiArKEVGSUFQSSAq VU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfUkVBRF9CT09MRUFOKSgNCj4gPiArICBWT0lEDQo+ID4g KyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFByb3RvdHlwZSBvZiBzZXJ2aWNlIHRoYXQg cmVhZHMgYW5kIHJldHVybnMgYQ0KPiBVSU5UMTYgdmFsdWUuDQo+ID4gKw0KPiA+ICsgIEByZXR1 cm4gVGhlIHZhbHVlIHJlYWQuDQo+ID4gKyoqLw0KPiA+ICt0eXBlZGVmDQo+ID4gK1VJTlQxNg0K PiA+ICsoRUZJQVBJICpVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9SRUFEX1VJTlQxNikoDQo+ID4g KyAgVk9JRA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBQcm90b3R5cGUgb2Yg c2VydmljZSB0aGF0IHJlYWRzIGFuZCByZXR1cm5zIGEgVUlOVE4NCj4gdmFsdWUuDQo+ID4gKw0K PiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHJlYWQuDQo+ID4gKyoqLw0KPiA+ICt0eXBlZGVmDQo+ ID4gK1VJTlRODQo+ID4gKyhFRklBUEkgKlVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1JFQURfVUlO VE4pKA0KPiA+ICsgIFZPSUQNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUHJv dG90eXBlIG9mIHNlcnZpY2UgdGhhdCB3cml0ZXMgYW5kIHJldHVybnMgYQ0KPiBVSU5UMTYgdmFs dWUuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFZhbHVlICBUaGUgdmFsdWUgdG8gd3JpdGUu DQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4uDQo+ID4gKyoqLw0KPiA+ ICt0eXBlZGVmDQo+ID4gK1ZPSUQNCj4gPiArKEVGSUFQSSAqVU5JVF9URVNUX0hPU1RfQkFTRV9M SUJfV1JJVEVfVUlOVDE2KSgNCj4gPiArICBJTiBVSU5UMTYgIFZhbHVlDQo+ID4gKyAgKTsNCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgIFByb3RvdHlwZSBvZiBzZXJ2aWNlIHRoYXQgd3JpdGVzIGFu ZCByZXR1cm5zIGENCj4gVUlOVE4gdmFsdWUuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFZh bHVlICBUaGUgdmFsdWUgdG8gd3JpdGUuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVl IHdyaXR0ZW4uDQo+ID4gKyoqLw0KPiA+ICt0eXBlZGVmDQo+ID4gK1VJTlRODQo+ID4gKyhFRklB UEkgKlVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1dSSVRFX1VJTlROKSgNCj4gPiArICBJTiBVSU5U TiAgVmFsdWUNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUHJvdG90eXBlIG9m IHNlcnZpY2UgdGhhdCByZWFkcyBhbmQgcmV0dXJucyBhbg0KPiBJQTMyX0RFU0NSSVBUT1IuDQo+ ID4gKw0KPiA+ICsgIEBwYXJhbVtvdXRdICBJYTMyRGVzY3JpcHRvciAgUG9pbnRlciB0byB0aGUN Cj4gZGVzY3JpcHRvciByZWFkLg0KPiA+ICsqKi8NCj4gPiArdHlwZWRlZg0KPiA+ICtWT0lEDQo+ ID4gKyhFRklBUEkNCj4gKlVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9SRUFEX0lBMzJfREVT Q1JJUFRPUikoDQo+ID4gKyAgT1VUIElBMzJfREVTQ1JJUFRPUiAgICAgICAgICAgKklhMzJEZXNj cmlwdG9yDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFByb3RvdHlwZSBvZiBz ZXJ2aWNlIHRoYXQgd3JpdGVzIGFuDQo+IElBMzJfREVTQ1JJUFRPUi4NCj4gPiArDQo+ID4gKyAg QHBhcmFtW2luXSAgSWEzMkRlc2NyaXB0b3IgIFBvaW50ZXIgdG8gdGhlDQo+IGRlc2NyaXB0b3Ig dG8gd3JpdGUuDQo+ID4gKyoqLw0KPiA+ICt0eXBlZGVmDQo+ID4gK1ZPSUQNCj4gPiArKEVGSUFQ SQ0KPiAqVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNNX1dSSVRFX0lBMzJfREVTQ1JJUFRPUiko DQo+ID4gKyAgSU4gQ09OU1QgSUEzMl9ERVNDUklQVE9SICAgICAqSWEzMkRlc2NyaXB0b3INCj4g PiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmV0cmlldmVzIENQVUlEIGluZm9ybWF0 aW9uLg0KPiA+ICsNCj4gPiArICBFeGVjdXRlcyB0aGUgQ1BVSUQgaW5zdHJ1Y3Rpb24gd2l0aCBF QVggc2V0IHRvIHRoZQ0KPiB2YWx1ZSBzcGVjaWZpZWQgYnkgSW5kZXguDQo+ID4gKyAgVGhpcyBm dW5jdGlvbiBhbHdheXMgcmV0dXJucyBJbmRleC4NCj4gPiArICBJZiBFYXggaXMgbm90IE5VTEws IHRoZW4gdGhlIHZhbHVlIG9mIEVBWCBhZnRlcg0KPiBDUFVJRCBpcyByZXR1cm5lZCBpbiBFYXgu DQo+ID4gKyAgSWYgRWJ4IGlzIG5vdCBOVUxMLCB0aGVuIHRoZSB2YWx1ZSBvZiBFQlggYWZ0ZXIN Cj4gQ1BVSUQgaXMgcmV0dXJuZWQgaW4gRWJ4Lg0KPiA+ICsgIElmIEVjeCBpcyBub3QgTlVMTCwg dGhlbiB0aGUgdmFsdWUgb2YgRUNYIGFmdGVyDQo+IENQVUlEIGlzIHJldHVybmVkIGluIEVjeC4N Cj4gPiArICBJZiBFZHggaXMgbm90IE5VTEwsIHRoZW4gdGhlIHZhbHVlIG9mIEVEWCBhZnRlcg0K PiBDUFVJRCBpcyByZXR1cm5lZCBpbiBFZHguDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5 IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIEluZGV4 IFRoZSAzMi1iaXQgdmFsdWUgdG8gbG9hZCBpbnRvIEVBWA0KPiBwcmlvciB0byBpbnZva2luZyB0 aGUgQ1BVSUQNCj4gPiArICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLg0KPiA+ICsgIEBwYXJh bSAgRWF4ICAgVGhlIHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBFQVggdmFsdWUNCj4gcmV0dXJuZWQg YnkgdGhlIENQVUlEDQo+ID4gKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4gVGhpcyBpcyBh biBvcHRpb25hbA0KPiBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUgTlVMTC4NCj4gPiArICBAcGFyYW0g IEVieCAgIFRoZSBwb2ludGVyIHRvIHRoZSAzMi1iaXQgRUJYIHZhbHVlDQo+IHJldHVybmVkIGJ5 IHRoZSBDUFVJRA0KPiA+ICsgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uIFRoaXMgaXMgYW4g b3B0aW9uYWwNCj4gcGFyYW1ldGVyIHRoYXQgbWF5IGJlIE5VTEwuDQo+ID4gKyAgQHBhcmFtICBF Y3ggICBUaGUgcG9pbnRlciB0byB0aGUgMzItYml0IEVDWCB2YWx1ZQ0KPiByZXR1cm5lZCBieSB0 aGUgQ1BVSUQNCj4gPiArICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLiBUaGlzIGlzIGFuIG9w dGlvbmFsDQo+IHBhcmFtZXRlciB0aGF0IG1heSBiZSBOVUxMLg0KPiA+ICsgIEBwYXJhbSAgRWR4 ICAgVGhlIHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBFRFggdmFsdWUNCj4gcmV0dXJuZWQgYnkgdGhl IENQVUlEDQo+ID4gKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4gVGhpcyBpcyBhbiBvcHRp b25hbA0KPiBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUgTlVMTC4NCj4gPiArDQo+ID4gKyAgQHJldHVy biBJbmRleC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICt0eXBlZGVmDQo+ID4gK1VJTlQzMg0KPiA+ ICsoRUZJQVBJICpVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9BU01fQ1BVSUQpKA0KPiA+ICsgIElO ICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBJbmRleCwNCj4gPiArICBPVVQgICAgIFVJ TlQzMiAgICAgICAgICAgICAgICAgICAgKkVheCwgIE9QVElPTkFMDQo+ID4gKyAgT1VUICAgICBV SU5UMzIgICAgICAgICAgICAgICAgICAgICpFYngsICBPUFRJT05BTA0KPiA+ICsgIE9VVCAgICAg VUlOVDMyICAgICAgICAgICAgICAgICAgICAqRWN4LCAgT1BUSU9OQUwNCj4gPiArICBPVVQgICAg IFVJTlQzMiAgICAgICAgICAgICAgICAgICAgKkVkeCAgIE9QVElPTkFMDQo+ID4gKyAgKTsNCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgIFJldHJpZXZlcyBDUFVJRCBpbmZvcm1hdGlvbiB1c2luZyBh biBleHRlbmRlZCBsZWFmDQo+IGlkZW50aWZpZXIuDQo+ID4gKw0KPiA+ICsgIEV4ZWN1dGVzIHRo ZSBDUFVJRCBpbnN0cnVjdGlvbiB3aXRoIEVBWCBzZXQgdG8gdGhlDQo+IHZhbHVlIHNwZWNpZmll ZCBieSBJbmRleA0KPiA+ICsgIGFuZCBFQ1ggc2V0IHRvIHRoZSB2YWx1ZSBzcGVjaWZpZWQgYnkg U3ViSW5kZXguDQo+IFRoaXMgZnVuY3Rpb24gYWx3YXlzIHJldHVybnMNCj4gPiArICBJbmRleC4g VGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQNCj4geDY0Lg0KPiA+ ICsNCj4gPiArICBJZiBFYXggaXMgbm90IE5VTEwsIHRoZW4gdGhlIHZhbHVlIG9mIEVBWCBhZnRl cg0KPiBDUFVJRCBpcyByZXR1cm5lZCBpbiBFYXguDQo+ID4gKyAgSWYgRWJ4IGlzIG5vdCBOVUxM LCB0aGVuIHRoZSB2YWx1ZSBvZiBFQlggYWZ0ZXINCj4gQ1BVSUQgaXMgcmV0dXJuZWQgaW4gRWJ4 Lg0KPiA+ICsgIElmIEVjeCBpcyBub3QgTlVMTCwgdGhlbiB0aGUgdmFsdWUgb2YgRUNYIGFmdGVy DQo+IENQVUlEIGlzIHJldHVybmVkIGluIEVjeC4NCj4gPiArICBJZiBFZHggaXMgbm90IE5VTEws IHRoZW4gdGhlIHZhbHVlIG9mIEVEWCBhZnRlcg0KPiBDUFVJRCBpcyByZXR1cm5lZCBpbiBFZHgu DQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgSW5kZXggICAgIFRoZSAzMi1iaXQgdmFsdWUgdG8gbG9h ZCBpbnRvIEVBWA0KPiBwcmlvciB0byBpbnZva2luZyB0aGUNCj4gPiArICAgICAgICAgICAgICAg ICAgICBDUFVJRCBpbnN0cnVjdGlvbi4NCj4gPiArICBAcGFyYW0gIFN1YkluZGV4ICBUaGUgMzIt Yml0IHZhbHVlIHRvIGxvYWQgaW50byBFQ1gNCj4gcHJpb3IgdG8gaW52b2tpbmcgdGhlDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgQ1BVSUQgaW5zdHJ1Y3Rpb24uDQo+ID4gKyAgQHBhcmFtICBF YXggICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBFQVgNCj4gdmFsdWUgcmV0dXJuZWQg YnkgdGhlIENQVUlEDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uIFRoaXMg aXMgYW4gb3B0aW9uYWwNCj4gcGFyYW1ldGVyIHRoYXQgbWF5IGJlDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgTlVMTC4NCj4gPiArICBAcGFyYW0gIEVieCAgICAgICBUaGUgcG9pbnRlciB0byB0 aGUgMzItYml0IEVCWA0KPiB2YWx1ZSByZXR1cm5lZCBieSB0aGUgQ1BVSUQNCj4gPiArICAgICAg ICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4gVGhpcyBpcyBhbiBvcHRpb25hbA0KPiBwYXJhbWV0 ZXIgdGhhdCBtYXkgYmUNCj4gPiArICAgICAgICAgICAgICAgICAgICBOVUxMLg0KPiA+ICsgIEBw YXJhbSAgRWN4ICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSAzMi1iaXQgRUNYDQo+IHZhbHVlIHJl dHVybmVkIGJ5IHRoZSBDUFVJRA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9u LiBUaGlzIGlzIGFuIG9wdGlvbmFsDQo+IHBhcmFtZXRlciB0aGF0IG1heSBiZQ0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIE5VTEwuDQo+ID4gKyAgQHBhcmFtICBFZHggICAgICAgVGhlIHBvaW50 ZXIgdG8gdGhlIDMyLWJpdCBFRFgNCj4gdmFsdWUgcmV0dXJuZWQgYnkgdGhlIENQVUlEDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uIFRoaXMgaXMgYW4gb3B0aW9uYWwNCj4g cGFyYW1ldGVyIHRoYXQgbWF5IGJlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgTlVMTC4NCj4g PiArDQo+ID4gKyAgQHJldHVybiBJbmRleC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICt0eXBlZGVm DQo+ID4gK1VJTlQzMg0KPiA+ICsoRUZJQVBJICpVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9BU01f Q1BVSURfRVgpKA0KPiA+ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBJbmRl eCwNCj4gPiArICBJTiAgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgU3ViSW5kZXgsDQo+ ID4gKyAgT1VUICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICpFYXgsICBPUFRJT05BTA0K PiA+ICsgIE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAqRWJ4LCAgT1BUSU9OQUwN Cj4gPiArICBPVVQgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgKkVjeCwgIE9QVElPTkFM DQo+ID4gKyAgT1VUICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICpFZHggICBPUFRJT05B TA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBSZXR1cm5zIGEgNjQtYml0IE1h Y2hpbmUgU3BlY2lmaWMgUmVnaXN0ZXIoTVNSKS4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJl dHVybnMgdGhlIDY0LWJpdCBNU1Igc3BlY2lmaWVkIGJ5DQo+IEluZGV4LiBObyBwYXJhbWV0ZXIg Y2hlY2tpbmcgaXMNCj4gPiArICBwZXJmb3JtZWQgb24gSW5kZXgsIGFuZCBzb21lIEluZGV4IHZh bHVlcyBtYXkgY2F1c2UNCj4gQ1BVIGV4Y2VwdGlvbnMuIFRoZQ0KPiA+ICsgIGNhbGxlciBtdXN0 IGVpdGhlciBndWFyYW50ZWUgdGhhdCBJbmRleCBpcyB2YWxpZCwNCj4gb3IgdGhlIGNhbGxlciBt dXN0IHNldCB1cA0KPiA+ICsgIGV4Y2VwdGlvbiBoYW5kbGVycyB0byBjYXRjaCB0aGUgZXhjZXB0 aW9ucy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ICsgIG9uIElBLTMy IGFuZCB4NjQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgSW5kZXggVGhlIDMyLWJpdCBNU1IgaW5k ZXggdG8gcmVhZC4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgb2YgdGhlIE1TUiBp ZGVudGlmaWVkIGJ5IEluZGV4Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK3R5cGVkZWYNCj4gPiAr VUlOVDY0DQo+ID4gKyhFRklBUEkgKlVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9SRUFEX01T Ul82NCkoDQo+ID4gKyAgSU4gICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIEluZGV4DQo+ ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFdyaXRlcyBhIDY0LWJpdCB2YWx1ZSB0 byBhIE1hY2hpbmUgU3BlY2lmaWMNCj4gUmVnaXN0ZXIoTVNSKSwgYW5kIHJldHVybnMgdGhlDQo+ ID4gKyAgdmFsdWUuDQo+ID4gKw0KPiA+ICsgIFdyaXRlcyB0aGUgNjQtYml0IHZhbHVlIHNwZWNp ZmllZCBieSBWYWx1ZSB0byB0aGUNCj4gTVNSIHNwZWNpZmllZCBieSBJbmRleC4gVGhlDQo+ID4g KyAgNjQtYml0IHZhbHVlIHdyaXR0ZW4gdG8gdGhlIE1TUiBpcyByZXR1cm5lZC4gTm8NCj4gcGFy YW1ldGVyIGNoZWNraW5nIGlzDQo+ID4gKyAgcGVyZm9ybWVkIG9uIEluZGV4IG9yIFZhbHVlLCBh bmQgc29tZSBvZiB0aGVzZSBtYXkNCj4gY2F1c2UgQ1BVIGV4Y2VwdGlvbnMuIFRoZQ0KPiA+ICsg IGNhbGxlciBtdXN0IGVpdGhlciBndWFyYW50ZWUgdGhhdCBJbmRleCBhbmQgVmFsdWUNCj4gYXJl IHZhbGlkLCBvciB0aGUgY2FsbGVyDQo+ID4gKyAgbXVzdCBlc3RhYmxpc2ggcHJvcGVyIGV4Y2Vw dGlvbiBoYW5kbGVycy4gVGhpcw0KPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ ICsgIElBLTMyIGFuZCB4NjQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgSW5kZXggVGhlIDMyLWJp dCBNU1IgaW5kZXggdG8gd3JpdGUuDQo+ID4gKyAgQHBhcmFtICBWYWx1ZSBUaGUgNjQtYml0IHZh bHVlIHRvIHdyaXRlIHRvIHRoZSBNU1IuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVmFsdWUNCj4g PiArDQo+ID4gKyoqLw0KPiA+ICt0eXBlZGVmDQo+ID4gK1VJTlQ2NA0KPiA+ICsoRUZJQVBJICpV TklUX1RFU1RfSE9TVF9CQVNFX0xJQl9BU01fV1JJVEVfTVNSXzY0KSgNCj4gPiArICBJTiAgICAg IFVJTlQzMiAgICAgICAgICAgICAgICAgICAgSW5kZXgsDQo+ID4gKyAgSU4gICAgICBVSU5UNjQg ICAgICAgICAgICAgICAgICAgIFZhbHVlDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgUGVyZm9ybWFuY2UgQ291bnRlcg0KPiAo UE1DKS4NCj4gPiArDQo+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUg b2YgcGVyZm9ybWFuY2UNCj4gY291bnRlciBzcGVjaWZpZWQgYnkNCj4gPiArICBJbmRleC4gVGhp cyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQNCj4geDY0Lg0KPiA+ICsN Cj4gPiArICBAcGFyYW0gIEluZGV4IFRoZSAzMi1iaXQgUGVyZm9ybWFuY2UgQ291bnRlciBpbmRl eA0KPiB0byByZWFkLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiB0aGUgUE1D IHNwZWNpZmllZCBieSBJbmRleC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICt0eXBlZGVmDQo+ID4g K1VJTlQ2NA0KPiA+ICsoRUZJQVBJICpVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9BU01fUkVBRF9Q TUMpKA0KPiA+ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBJbmRleA0KPiA+ ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBTZXRzIHVwIGEgbW9uaXRvciBidWZmZXIg dGhhdCBpcyB1c2VkIGJ5DQo+IEFzbU13YWl0KCkuDQo+ID4gKw0KPiA+ICsgIEV4ZWN1dGVzIGEg TU9OSVRPUiBpbnN0cnVjdGlvbiB3aXRoIHRoZSByZWdpc3Rlcg0KPiBzdGF0ZSBzcGVjaWZpZWQg YnkgRWF4LCBFY3gNCj4gPiArICBhbmQgRWR4LiBSZXR1cm5zIEVheC4gVGhpcyBmdW5jdGlvbiBp cyBvbmx5DQo+IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ICsNCj4gPiArICBAcGFy YW0gIEVheCBUaGUgdmFsdWUgdG8gbG9hZCBpbnRvIEVBWCBvciBSQVgNCj4gYmVmb3JlIGV4ZWN1 dGluZyB0aGUgTU9OSVRPUg0KPiA+ICsgICAgICAgICAgICAgIGluc3RydWN0aW9uLg0KPiA+ICsg IEBwYXJhbSAgRWN4IFRoZSB2YWx1ZSB0byBsb2FkIGludG8gRUNYIG9yIFJDWA0KPiBiZWZvcmUg ZXhlY3V0aW5nIHRoZSBNT05JVE9SDQo+ID4gKyAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uDQo+ ID4gKyAgQHBhcmFtICBFZHggVGhlIHZhbHVlIHRvIGxvYWQgaW50byBFRFggb3IgUkRYDQo+IGJl Zm9yZSBleGVjdXRpbmcgdGhlIE1PTklUT1INCj4gPiArICAgICAgICAgICAgICBpbnN0cnVjdGlv bi4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBFYXgNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICt0eXBl ZGVmDQo+ID4gK1VJTlRODQo+ID4gKyhFRklBUEkgKlVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FT TV9NT05JVE9SKSgNCj4gPiArICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgRWF4 LA0KPiA+ICsgIElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBFY3gsDQo+ID4gKyAg SU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEVkeA0KPiA+ICsgICk7DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICBFeGVjdXRlcyBhbiBNV0FJVCBpbnN0cnVjdGlvbi4NCj4gPiArDQo+ ID4gKyAgRXhlY3V0ZXMgYW4gTVdBSVQgaW5zdHJ1Y3Rpb24gd2l0aCB0aGUgcmVnaXN0ZXINCj4g c3RhdGUgc3BlY2lmaWVkIGJ5IEVheCBhbmQNCj4gPiArICBFY3guIFJldHVybnMgRWF4LiBUaGlz IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+IG9uIElBLTMyIGFuZCB4NjQuDQo+ID4gKw0K PiA+ICsgIEBwYXJhbSAgRWF4IFRoZSB2YWx1ZSB0byBsb2FkIGludG8gRUFYIG9yIFJBWA0KPiBi ZWZvcmUgZXhlY3V0aW5nIHRoZSBNT05JVE9SDQo+ID4gKyAgICAgICAgICAgICAgaW5zdHJ1Y3Rp b24uDQo+ID4gKyAgQHBhcmFtICBFY3ggVGhlIHZhbHVlIHRvIGxvYWQgaW50byBFQ1ggb3IgUkNY DQo+IGJlZm9yZSBleGVjdXRpbmcgdGhlIE1PTklUT1INCj4gPiArICAgICAgICAgICAgICBpbnN0 cnVjdGlvbi4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBFYXgNCj4gPiArDQo+ID4gKyoqLw0KPiA+ ICt0eXBlZGVmDQo+ID4gK1VJTlRODQo+ID4gKyhFRklBUEkgKlVOSVRfVEVTVF9IT1NUX0JBU0Vf TElCX0FTTV9NV0FJVCkoDQo+ID4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAg IEVheCwNCj4gPiArICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgRWN4DQo+ID4g KyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEZsdXNoZXMgYSBjYWNoZSBsaW5lIGZyb20g YWxsIHRoZSBpbnN0cnVjdGlvbiBhbmQNCj4gZGF0YSBjYWNoZXMgd2l0aGluIHRoZQ0KPiA+ICsg IGNvaGVyZW5jeSBkb21haW4gb2YgdGhlIENQVS4NCj4gPiArDQo+ID4gKyAgRmx1c2hlZCB0aGUg Y2FjaGUgbGluZSBzcGVjaWZpZWQgYnkgTGluZWFyQWRkcmVzcywNCj4gYW5kIHJldHVybnMgTGlu ZWFyQWRkcmVzcy4NCj4gPiArICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uIElB LTMyIGFuZCB4NjQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgTGluZWFyQWRkcmVzcyBUaGUgYWRk cmVzcyBvZiB0aGUgY2FjaGUgbGluZQ0KPiB0byBmbHVzaC4gSWYgdGhlIENQVSBpcw0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICBpbiBhIHBoeXNpY2FsIGFkZHJlc3NpbmcNCj4gbW9kZSwg dGhlbiBMaW5lYXJBZGRyZXNzIGlzIGENCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgcGh5 c2ljYWwgYWRkcmVzcy4gSWYgdGhlIENQVQ0KPiBpcyBpbiBhIHZpcnR1YWwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgYWRkcmVzc2luZyBtb2RlLCB0aGVuDQo+IExpbmVhckFkZHJlc3Mg aXMgYSB2aXJ0dWFsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MuDQo+ID4g Kw0KPiA+ICsgIEByZXR1cm4gTGluZWFyQWRkcmVzcy4NCj4gPiArKiovDQo+ID4gK3R5cGVkZWYN Cj4gPiArVk9JRCAqDQo+ID4gKyhFRklBUEkNCj4gKlVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FT TV9GTFVTSF9DQUNIRV9MSU5FKSgNCj4gPiArICBJTiAgICAgIFZPSUQgICAgICAgICAgICAgICAg ICAgICAgKkxpbmVhckFkZHJlc3MNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAg UHJvdG90eXBlIG9mIHNlcnZpY2UgdGhhdCBlbmFibGVzIG90IGRpc2FibGVzIDMyLQ0KPiBiaXQg cGFnaW5nIG1vZGVzLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIEVudHJ5UG9pbnQgIEEgcG9pbnRl ciB0byBmdW5jdGlvbiB0byBjYWxsDQo+IHdpdGggdGhlIG5ldyBzdGFjayBhZnRlcg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgcGFnaW5nIGlzIGVuYWJsZWQuDQo+ID4gKyAgQHBhcmFtICBD b250ZXh0MSAgICBBIHBvaW50ZXIgdG8gdGhlIGNvbnRleHQgdG8NCj4gcGFzcyBpbnRvIHRoZSBF bnRyeVBvaW50DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhcyB0aGUgZmly c3QgcGFyYW1ldGVyDQo+IGFmdGVyIHBhZ2luZyBpcyBlbmFibGVkLg0KPiA+ICsgIEBwYXJhbSAg Q29udGV4dDIgICAgQSBwb2ludGVyIHRvIHRoZSBjb250ZXh0IHRvDQo+IHBhc3MgaW50byB0aGUg RW50cnlQb2ludA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYXMgdGhlIHNl Y29uZA0KPiBwYXJhbWV0ZXIgYWZ0ZXIgcGFnaW5nIGlzIGVuYWJsZWQuDQo+ID4gKyAgQHBhcmFt ICBOZXdTdGFjayAgICBBIHBvaW50ZXIgdG8gdGhlIG5ldyBzdGFjayB0bw0KPiB1c2UgZm9yIHRo ZSBFbnRyeVBvaW50DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhZnRlciBw YWdpbmcgaXMNCj4gZW5hYmxlZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICt0eXBlZGVmDQo+ID4g K1ZPSUQNCj4gPiArKEVGSUFQSSAqVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNNX1BBR0lOR18z MikoDQo+ID4gKyAgSU4gICAgICBTV0lUQ0hfU1RBQ0tfRU5UUllfUE9JTlQgIEVudHJ5UG9pbnQs DQo+ID4gKyAgSU4gICAgICBWT0lEICAgICAgICAgICAgICAgICAgICAgICpDb250ZXh0MSwNCj4g T1BUSU9OQUwNCj4gPiArICBJTiAgICAgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgKkNvbnRl eHQyLA0KPiBPUFRJT05BTA0KPiA+ICsgIElOICAgICAgVk9JRCAgICAgICAgICAgICAgICAgICAg ICAqTmV3U3RhY2sNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRW5hYmxlcyB0 aGUgNjQtYml0IHBhZ2luZyBtb2RlIG9uIHRoZSBDUFUuDQo+ID4gKw0KPiA+ICsgIEVuYWJsZXMg dGhlIDY0LWJpdCBwYWdpbmcgbW9kZSBvbiB0aGUgQ1BVLiBDUjAsDQo+IENSMywgQ1I0LCBhbmQg dGhlIHBhZ2UgdGFibGVzDQo+ID4gKyAgbXVzdCBiZSBwcm9wZXJseSBpbml0aWFsaXplZCBwcmlv ciB0byBjYWxsaW5nIHRoaXMNCj4gc2VydmljZS4gVGhpcyBmdW5jdGlvbg0KPiA+ICsgIGFzc3Vt ZXMgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIG1vZGUgaXMgMzItYml0DQo+IHByb3RlY3RlZCBtb2Rl IHdpdGggZmxhdA0KPiA+ICsgIGRlc2NyaXB0b3JzLiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZh aWxhYmxlIG9uIElBLQ0KPiAzMi4gQWZ0ZXIgdGhlIDY0LWJpdA0KPiA+ICsgIHBhZ2luZyBtb2Rl IGlzIGVuYWJsZWQsIGNvbnRyb2wgaXMgdHJhbnNmZXJyZWQgdG8NCj4gdGhlIGZ1bmN0aW9uIHNw ZWNpZmllZCBieQ0KPiA+ICsgIEVudHJ5UG9pbnQgdXNpbmcgdGhlIG5ldyBzdGFjayBzcGVjaWZp ZWQgYnkNCj4gTmV3U3RhY2sgYW5kIHBhc3NpbmcgaW4gdGhlDQo+ID4gKyAgcGFyYW1ldGVycyBz cGVjaWZpZWQgYnkgQ29udGV4dDEgYW5kIENvbnRleHQyLg0KPiBDb250ZXh0MSBhbmQgQ29udGV4 dDIgYXJlDQo+ID4gKyAgb3B0aW9uYWwgYW5kIG1heSBiZSAwLiBUaGUgZnVuY3Rpb24gRW50cnlQ b2ludCBtdXN0DQo+IG5ldmVyIHJldHVybi4NCj4gPiArDQo+ID4gKyAgSWYgdGhlIGN1cnJlbnQg ZXhlY3V0aW9uIG1vZGUgaXMgbm90IDMyLWJpdA0KPiBwcm90ZWN0ZWQgbW9kZSB3aXRoIGZsYXQN Cj4gPiArICBkZXNjcmlwdG9ycywgdGhlbiBBU1NFUlQoKS4NCj4gPiArICBJZiBFbnRyeVBvaW50 IGlzIDAsIHRoZW4gQVNTRVJUKCkuDQo+ID4gKyAgSWYgTmV3U3RhY2sgaXMgMCwgdGhlbiBBU1NF UlQoKS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBDcyAgICAgICAgICBUaGUgMTYtYml0IHNlbGVj dG9yIHRvIGxvYWQgaW4NCj4gdGhlIENTIGJlZm9yZSBFbnRyeVBvaW50DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICBpcyBjYWxsZWQuIFRoZSBkZXNjcmlwdG9yIGluDQo+IHRoZSBHRFQgdGhh dCB0aGlzIHNlbGVjdG9yDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzIG11 c3QgYmUgc2V0dXAgZm9yDQo+IGxvbmcgbW9kZS4NCj4gPiArICBAcGFyYW0gIEVudHJ5UG9pbnQg IFRoZSA2NC1iaXQgdmlydHVhbCBhZGRyZXNzIG9mDQo+IHRoZSBmdW5jdGlvbiB0byBjYWxsIHdp dGgNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIHRoZSBuZXcgc3RhY2sgYWZ0ZXIgcGFnaW5n IGlzDQo+IGVuYWJsZWQuDQo+ID4gKyAgQHBhcmFtICBDb250ZXh0MSAgICBUaGUgNjQtYml0IHZp cnR1YWwgYWRkcmVzcyBvZg0KPiB0aGUgY29udGV4dCB0byBwYXNzIGludG8NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgIHRoZSBFbnRyeVBvaW50IGZ1bmN0aW9uIGFzIHRoZQ0KPiBmaXJzdCBw YXJhbWV0ZXIgYWZ0ZXINCj4gPiArICAgICAgICAgICAgICAgICAgICAgIHBhZ2luZyBpcyBlbmFi bGVkLg0KPiA+ICsgIEBwYXJhbSAgQ29udGV4dDIgICAgVGhlIDY0LWJpdCB2aXJ0dWFsIGFkZHJl c3Mgb2YNCj4gdGhlIGNvbnRleHQgdG8gcGFzcyBpbnRvDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICB0aGUgRW50cnlQb2ludCBmdW5jdGlvbiBhcyB0aGUNCj4gc2Vjb25kIHBhcmFtZXRlciBh ZnRlcg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgcGFnaW5nIGlzIGVuYWJsZWQuDQo+ID4g KyAgQHBhcmFtICBOZXdTdGFjayAgICBUaGUgNjQtYml0IHZpcnR1YWwgYWRkcmVzcyBvZg0KPiB0 aGUgbmV3IHN0YWNrIHRvIHVzZSBmb3INCj4gPiArICAgICAgICAgICAgICAgICAgICAgIHRoZSBF bnRyeVBvaW50IGZ1bmN0aW9uIGFmdGVyDQo+IHBhZ2luZyBpcyBlbmFibGVkLg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK3R5cGVkZWYNCj4gPiArVk9JRA0KPiA+ICsoRUZJQVBJDQo+ICpVTklUX1RF U1RfSE9TVF9CQVNFX0xJQl9BU01fRU5BQkxFX1BBR0lOR182NCkoDQo+ID4gKyAgSU4gICAgICBV SU5UMTYgICAgICAgICAgICAgICAgICAgIENzLA0KPiA+ICsgIElOICAgICAgVUlOVDY0ICAgICAg ICAgICAgICAgICAgICBFbnRyeVBvaW50LA0KPiA+ICsgIElOICAgICAgVUlOVDY0ICAgICAgICAg ICAgICAgICAgICBDb250ZXh0MSwNCj4gT1BUSU9OQUwNCj4gPiArICBJTiAgICAgIFVJTlQ2NCAg ICAgICAgICAgICAgICAgICAgQ29udGV4dDIsDQo+IE9QVElPTkFMDQo+ID4gKyAgSU4gICAgICBV SU5UNjQgICAgICAgICAgICAgICAgICAgIE5ld1N0YWNrDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICsgIERpc2FibGVzIHRoZSA2NC1iaXQgcGFnaW5nIG1vZGUgb24gdGhlIENQVS4N Cj4gPiArDQo+ID4gKyAgRGlzYWJsZXMgdGhlIDY0LWJpdCBwYWdpbmcgbW9kZSBvbiB0aGUgQ1BV IGFuZA0KPiByZXR1cm5zIHRvIDMyLWJpdCBwcm90ZWN0ZWQNCj4gPiArICBtb2RlLiBUaGlzIGZ1 bmN0aW9uIGFzc3VtZXMgdGhlIGN1cnJlbnQgZXhlY3V0aW9uDQo+IG1vZGUgaXMgNjQtcGFnaW5n IG1vZGUuDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbiB4NjQuIEFm dGVyIHRoZQ0KPiA2NC1iaXQgcGFnaW5nIG1vZGUgaXMNCj4gPiArICBkaXNhYmxlZCwgY29udHJv bCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgZnVuY3Rpb24NCj4gc3BlY2lmaWVkIGJ5IEVudHJ5UG9p bnQNCj4gPiArICB1c2luZyB0aGUgbmV3IHN0YWNrIHNwZWNpZmllZCBieSBOZXdTdGFjayBhbmQN Cj4gcGFzc2luZyBpbiB0aGUgcGFyYW1ldGVycw0KPiA+ICsgIHNwZWNpZmllZCBieSBDb250ZXh0 MSBhbmQgQ29udGV4dDIuIENvbnRleHQxIGFuZA0KPiBDb250ZXh0MiBhcmUgb3B0aW9uYWwgYW5k DQo+ID4gKyAgbWF5IGJlIDAuIFRoZSBmdW5jdGlvbiBFbnRyeVBvaW50IG11c3QgbmV2ZXINCj4g cmV0dXJuLg0KPiA+ICsNCj4gPiArICBJZiB0aGUgY3VycmVudCBleGVjdXRpb24gbW9kZSBpcyBu b3QgNjQtYml0IHBhZ2VkDQo+IG1vZGUsIHRoZW4gQVNTRVJUKCkuDQo+ID4gKyAgSWYgRW50cnlQ b2ludCBpcyAwLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsgIElmIE5ld1N0YWNrIGlzIDAsIHRoZW4g QVNTRVJUKCkuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgQ3MgICAgICAgICAgVGhlIDE2LWJpdCBz ZWxlY3RvciB0byBsb2FkIGluDQo+IHRoZSBDUyBiZWZvcmUgRW50cnlQb2ludA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgaXMgY2FsbGVkLiBUaGUgZGVzY3JpcHRvciBpbg0KPiB0aGUgR0RU IHRoYXQgdGhpcyBzZWxlY3Rvcg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNl cyBtdXN0IGJlIHNldHVwIGZvcg0KPiAzMi1iaXQgcHJvdGVjdGVkIG1vZGUuDQo+ID4gKyAgQHBh cmFtICBFbnRyeVBvaW50ICBUaGUgNjQtYml0IHZpcnR1YWwgYWRkcmVzcyBvZg0KPiB0aGUgZnVu Y3Rpb24gdG8gY2FsbCB3aXRoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICB0aGUgbmV3IHN0 YWNrIGFmdGVyIHBhZ2luZyBpcw0KPiBkaXNhYmxlZC4NCj4gPiArICBAcGFyYW0gIENvbnRleHQx ICAgIFRoZSA2NC1iaXQgdmlydHVhbCBhZGRyZXNzIG9mDQo+IHRoZSBjb250ZXh0IHRvIHBhc3Mg aW50bw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgdGhlIEVudHJ5UG9pbnQgZnVuY3Rpb24g YXMgdGhlDQo+IGZpcnN0IHBhcmFtZXRlciBhZnRlcg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgcGFnaW5nIGlzIGRpc2FibGVkLg0KPiA+ICsgIEBwYXJhbSAgQ29udGV4dDIgICAgVGhlIDY0 LWJpdCB2aXJ0dWFsIGFkZHJlc3Mgb2YNCj4gdGhlIGNvbnRleHQgdG8gcGFzcyBpbnRvDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICB0aGUgRW50cnlQb2ludCBmdW5jdGlvbiBhcyB0aGUNCj4g c2Vjb25kIHBhcmFtZXRlciBhZnRlcg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgcGFnaW5n IGlzIGRpc2FibGVkLg0KPiA+ICsgIEBwYXJhbSAgTmV3U3RhY2sgICAgVGhlIDY0LWJpdCB2aXJ0 dWFsIGFkZHJlc3Mgb2YNCj4gdGhlIG5ldyBzdGFjayB0byB1c2UgZm9yDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICB0aGUgRW50cnlQb2ludCBmdW5jdGlvbiBhZnRlcg0KPiBwYWdpbmcgaXMg ZGlzYWJsZWQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArdHlwZWRlZg0KPiA+ICtWT0lEDQo+ID4g KyhFRklBUEkNCj4gKlVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9ESVNBQkxFX1BBR0lOR182 NCkoDQo+ID4gKyAgSU4gICAgICBVSU5UMTYgICAgICAgICAgICAgICAgICAgIENzLA0KPiA+ICsg IElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBFbnRyeVBvaW50LA0KPiA+ICsgIElO ICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBDb250ZXh0MSwNCj4gT1BUSU9OQUwNCj4g PiArICBJTiAgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgQ29udGV4dDIsDQo+IE9QVElP TkFMDQo+ID4gKyAgSU4gICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIE5ld1N0YWNrDQo+ ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJldHJpZXZlcyB0aGUgcHJvcGVydGll cyBmb3IgMTYtYml0IHRodW5rDQo+IGZ1bmN0aW9ucy4NCj4gPiArDQo+ID4gKyAgQ29tcHV0ZXMg dGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBhbmQgc3RhY2sgYmVsb3cgMU1CDQo+IHJlcXVpcmVkIHRv IHVzZSB0aGUNCj4gPiArICBBc21QcmVwYXJlVGh1bmsxNigpLCBBc21UaHVuazE2KCkgYW5kDQo+ IEFzbVByZXBhcmVBbmRUaHVuazE2KCkgZnVuY3Rpb25zLiBUaGlzDQo+ID4gKyAgYnVmZmVyIHNp emUgaXMgcmV0dXJuZWQgaW4gUmVhbE1vZGVCdWZmZXJTaXplLCBhbmQNCj4gdGhlIHN0YWNrIHNp emUgaXMgcmV0dXJuZWQNCj4gPiArICBpbiBFeHRyYVN0YWNrU2l6ZS4gSWYgcGFyYW1ldGVycyBh cmUgcGFzc2VkIHRvIHRoZQ0KPiAxNi1iaXQgcmVhbCBtb2RlIGNvZGUsDQo+ID4gKyAgdGhlbiB0 aGUgYWN0dWFsIG1pbmltdW0gc3RhY2sgc2l6ZSBpcw0KPiBFeHRyYVN0YWNrU2l6ZSBwbHVzIHRo ZSBtYXhpbXVtIG51bWJlcg0KPiA+ICsgIG9mIGJ5dGVzIHRoYXQgbmVlZCB0byBiZSBwYXNzZWQg dG8gdGhlIDE2LWJpdCByZWFsDQo+IG1vZGUgY29kZS4NCj4gPiArDQo+ID4gKyAgSWYgUmVhbE1v ZGVCdWZmZXJTaXplIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4gKyAgSWYgRXh0cmFTdGFj a1NpemUgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBSZWFs TW9kZUJ1ZmZlclNpemUgIEEgcG9pbnRlciB0byB0aGUgc2l6ZQ0KPiBvZiB0aGUgYnVmZmVyIGJl bG93IDFNQg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZCB0byB1 c2UgdGhlIDE2LQ0KPiBiaXQgdGh1bmsgZnVuY3Rpb25zLg0KPiA+ICsgIEBwYXJhbSAgRXh0cmFT dGFja1NpemUgICAgICBBIHBvaW50ZXIgdG8gdGhlIGV4dHJhDQo+IHNpemUgb2Ygc3RhY2sgYmVs b3cgMU1CDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgdGhlIDE2LWJp dCB0aHVuaw0KPiBmdW5jdGlvbnMgcmVxdWlyZSBmb3INCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGVtcG9yYXJ5IHN0b3JhZ2UgaW4NCj4gdGhlIHRyYW5zaXRpb24gdG8gYW5k IGZyb20NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYtYml0IHJlYWwgbW9k ZS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICt0eXBlZGVmDQo+ID4gK1ZPSUQNCj4gPiArKEVGSUFQ SQ0KPiAqVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNNX0dFVF9USFVOS18xNl9QUk9QRVJUSUVT KSgNCj4gPiArICBPVVQgICAgIFVJTlQzMg0KPiAqUmVhbE1vZGVCdWZmZXJTaXplLA0KPiA+ICsg IE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAqRXh0cmFTdGFja1NpemUNCj4gPiAr ICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUHJvdG90eXBlIG9mIHNlcnZpY2VzIHRoYXQg b3BlcmF0ZXMgb24gYQ0KPiBUSFVOS19DT05URVhUIHN0cnVjdHVyZS4NCj4gPiArDQo+ID4gKyAg QHBhcmFtICBUaHVua0NvbnRleHQgIEEgcG9pbnRlciB0byB0aGUgY29udGV4dA0KPiBzdHJ1Y3R1 cmUgdGhhdCBkZXNjcmliZXMgdGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIDE2LWJp dCByZWFsIG1vZGUgY29kZSB0bw0KPiBjYWxsLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK3R5cGVk ZWYNCj4gPiArVk9JRA0KPiA+ICsoRUZJQVBJICpVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9BU01f VEhVTktfMTYpKA0KPiA+ICsgIElOIE9VVCAgVEhVTktfQ09OVEVYVCAgICAgICAgICAgICAqVGh1 bmtDb250ZXh0DQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFBhdGNoIHRoZSBp bW1lZGlhdGUgb3BlcmFuZCBvZiBhbiBJQTMyIG9yIFg2NA0KPiBpbnN0cnVjdGlvbiBzdWNoIHRo YXQgdGhlIGJ5dGUsDQo+ID4gKyAgd29yZCwgZHdvcmQgb3IgcXdvcmQgb3BlcmFuZCBpcyBlbmNv ZGVkIGF0IHRoZSBlbmQNCj4gb2YgdGhlIGluc3RydWN0aW9uJ3MNCj4gPiArICBiaW5hcnkgcmVw cmVzZW50YXRpb24uDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQg dG8gdXBkYXRlIG9iamVjdCBjb2RlDQo+IHRoYXQgd2FzIGNvbXBpbGVkIHdpdGgNCj4gPiArICBO QVNNIGZyb20gYXNzZW1ibHkgc291cmNlIGNvZGUuIEV4YW1wbGU6DQo+ID4gKw0KPiA+ICsgIE5B U00gc291cmNlIGNvZGU6DQo+ID4gKw0KPiA+ICsgICAgICAgIG1vdiAgICAgZWF4LCBzdHJpY3Qg ZHdvcmQgMCA7IHRoZSBpbW0zMiB6ZXJvDQo+IG9wZXJhbmQgd2lsbCBiZSBwYXRjaGVkDQo+ID4g KyAgICBBU01fUEZYKGdQYXRjaENyMyk6DQo+ID4gKyAgICAgICAgbW92ICAgICBjcjMsIGVheA0K PiA+ICsNCj4gPiArICBDIHNvdXJjZSBjb2RlOg0KPiA+ICsNCj4gPiArICAgIFg4Nl9BU1NFTUJM WV9QQVRDSF9MQUJFTCBnUGF0Y2hDcjM7DQo+ID4gKyAgICBQYXRjaEluc3RydWN0aW9uWDg2IChn UGF0Y2hDcjMsIEFzbVJlYWRDcjMgKCksDQo+IDQpOw0KPiA+ICsNCj4gPiArICBAcGFyYW1bb3V0 XSBJbnN0cnVjdGlvbkVuZCAgUG9pbnRlciByaWdodCBwYXN0IHRoZQ0KPiBpbnN0cnVjdGlvbiB0 byBwYXRjaC4gVGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltbWVkaWF0 ZSBvcGVyYW5kIHRvDQo+IHBhdGNoIGlzIGV4cGVjdGVkIHRvDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbXByaXNlIHRoZSB0cmFpbGluZw0KPiBieXRlcyBvZiB0aGUgaW5z dHJ1Y3Rpb24uDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIEluc3RydWN0 aW9uRW5kIGlzDQo+IGNsb3NlciB0byBhZGRyZXNzIDAgdGhhbg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBWYWx1ZVNpemUgcGVybWl0cywgdGhlbg0KPiBBU1NFUlQoKS4NCj4g PiArDQo+ID4gKyAgQHBhcmFtW2luXSBQYXRjaFZhbHVlICAgICAgIFRoZSBjb25zdGFudCB0byB3 cml0ZQ0KPiB0byB0aGUgaW1tZWRpYXRlIG9wZXJhbmQuDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFRoZSBjYWxsZXIgaXMNCj4gcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIHRo YXQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0Y2hWYWx1ZSBjYW4gYmUN Cj4gcmVwcmVzZW50ZWQgaW4gdGhlIGJ5dGUsIHdvcmQsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGR3b3JkIG9yIHF3b3JkIG9wZXJhbmQNCj4gKGFzIGluZGljYXRlZCB0aHJv dWdoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlU2l6ZSk7IG90aGVy d2lzZQ0KPiBBU1NFUlQoKS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBWYWx1ZVNpemUgICAg ICAgIFRoZSBzaXplIG9mIHRoZSBvcGVyYW5kDQo+IGluIGJ5dGVzOyBtdXN0IGJlIDEsIDIsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQsIG9yIDguIEFTU0VSVCgpDQo+IG90 aGVyd2lzZS4NCj4gPiArKiovDQo+ID4gK3R5cGVkZWYNCj4gPiArVk9JRA0KPiA+ICsoRUZJQVBJ DQo+ICpVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9BU01fUEFUQ0hfSU5TVFJVQ1RJT05fWDg2KSgN Cj4gPiArICBPVVQgWDg2X0FTU0VNQkxZX1BBVENIX0xBQkVMICpJbnN0cnVjdGlvbkVuZCwNCj4g PiArICBJTiAgVUlOVDY0ICAgICAgICAgICAgICAgICAgIFBhdGNoVmFsdWUsDQo+ID4gKyAgSU4g IFVJTlROICAgICAgICAgICAgICAgICAgICBWYWx1ZVNpemUNCj4gPiArICApOw0KPiA+ICsNCj4g PiArLy8vDQo+ID4gKy8vLyBDb21tb24gc2VydmljZXMNCj4gPiArLy8vDQo+ID4gK3R5cGVkZWYg c3RydWN0IHsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9WT0lEDQo+IEVuYWJsZUlu dGVycnVwdHM7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfVk9JRA0KPiBEaXNhYmxl SW50ZXJydXB0czsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9WT0lEDQo+IEVuYWJs ZURpc2FibGVJbnRlcnJ1cHRzOw0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1JFQURf Qk9PTEVBTg0KPiBHZXRJbnRlcnJ1cHRTdGF0ZTsNCj4gPiArfSBVTklUX1RFU1RfSE9TVF9CQVNF X0xJQl9DT01NT047DQo+ID4gKw0KPiA+ICsvLy8NCj4gPiArLy8vIElBMzIvWDY0IHNlcnZpY2Vz DQo+ID4gKy8vLw0KPiA+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1Rf QkFTRV9MSUJfQVNNX0NQVUlEDQo+IEFzbUNwdWlkOw0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JB U0VfTElCX0FTTV9DUFVJRF9FWA0KPiBBc21DcHVpZEV4Ow0KPiA+ICsgIFVOSVRfVEVTVF9IT1NU X0JBU0VfTElCX1ZPSUQNCj4gQXNtRGlzYWJsZUNhY2hlOw0KPiA+ICsgIFVOSVRfVEVTVF9IT1NU X0JBU0VfTElCX1ZPSUQNCj4gQXNtRW5hYmxlQ2FjaGU7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1Rf QkFTRV9MSUJfQVNNX1JFQURfTVNSXzY0DQo+IEFzbVJlYWRNc3I2NDsNCj4gPiArICBVTklUX1RF U1RfSE9TVF9CQVNFX0xJQl9BU01fV1JJVEVfTVNSXzY0DQo+IEFzbVdyaXRlTXNyNjQ7DQo+ID4g KyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfUkVBRF9VSU5UTg0KPiBBc21SZWFkQ3IwOw0KPiA+ ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1JFQURfVUlOVE4NCj4gQXNtUmVhZENyMjsNCj4g PiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9SRUFEX1VJTlRODQo+IEFzbVJlYWRDcjM7DQo+ ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfUkVBRF9VSU5UTg0KPiBBc21SZWFkQ3I0Ow0K PiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1dSSVRFX1VJTlRODQo+IEFzbVdyaXRlQ3Iw Ow0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1dSSVRFX1VJTlRODQo+IEFzbVdyaXRl Q3IyOw0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1dSSVRFX1VJTlRODQo+IEFzbVdy aXRlQ3IzOw0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1dSSVRFX1VJTlRODQo+IEFz bVdyaXRlQ3I0Ow0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1JFQURfVUlOVE4NCj4g QXNtUmVhZERyMDsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9SRUFEX1VJTlRODQo+ IEFzbVJlYWREcjE7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfUkVBRF9VSU5UTg0K PiBBc21SZWFkRHIyOw0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1JFQURfVUlOVE4N Cj4gQXNtUmVhZERyMzsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9SRUFEX1VJTlRO DQo+IEFzbVJlYWREcjQ7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfUkVBRF9VSU5U Tg0KPiBBc21SZWFkRHI1Ow0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1JFQURfVUlO VE4NCj4gQXNtUmVhZERyNjsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9SRUFEX1VJ TlRODQo+IEFzbVJlYWREcjc7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfV1JJVEVf VUlOVE4NCj4gQXNtV3JpdGVEcjA7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfV1JJ VEVfVUlOVE4NCj4gQXNtV3JpdGVEcjE7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJf V1JJVEVfVUlOVE4NCj4gQXNtV3JpdGVEcjI7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9M SUJfV1JJVEVfVUlOVE4NCj4gQXNtV3JpdGVEcjM7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFT RV9MSUJfV1JJVEVfVUlOVE4NCj4gQXNtV3JpdGVEcjQ7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1Rf QkFTRV9MSUJfV1JJVEVfVUlOVE4NCj4gQXNtV3JpdGVEcjU7DQo+ID4gKyAgVU5JVF9URVNUX0hP U1RfQkFTRV9MSUJfV1JJVEVfVUlOVE4NCj4gQXNtV3JpdGVEcjY7DQo+ID4gKyAgVU5JVF9URVNU X0hPU1RfQkFTRV9MSUJfV1JJVEVfVUlOVE4NCj4gQXNtV3JpdGVEcjc7DQo+ID4gKyAgVU5JVF9U RVNUX0hPU1RfQkFTRV9MSUJfUkVBRF9VSU5UMTYNCj4gQXNtUmVhZENzOw0KPiA+ICsgIFVOSVRf VEVTVF9IT1NUX0JBU0VfTElCX1JFQURfVUlOVDE2DQo+IEFzbVJlYWREczsNCj4gPiArICBVTklU X1RFU1RfSE9TVF9CQVNFX0xJQl9SRUFEX1VJTlQxNg0KPiBBc21SZWFkRXM7DQo+ID4gKyAgVU5J VF9URVNUX0hPU1RfQkFTRV9MSUJfUkVBRF9VSU5UMTYNCj4gQXNtUmVhZEZzOw0KPiA+ICsgIFVO SVRfVEVTVF9IT1NUX0JBU0VfTElCX1JFQURfVUlOVDE2DQo+IEFzbVJlYWRHczsNCj4gPiArICBV TklUX1RFU1RfSE9TVF9CQVNFX0xJQl9SRUFEX1VJTlQxNg0KPiBBc21SZWFkU3M7DQo+ID4gKyAg VU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfUkVBRF9VSU5UMTYNCj4gQXNtUmVhZFRyOw0KPiA+ICsg IFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9SRUFEX0lBMzJfREVTQ1JJUFRPUg0KPiBBc21S ZWFkR2R0cjsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9BU01fV1JJVEVfSUEzMl9E RVNDUklQVE9SDQo+IEFzbVdyaXRlR2R0cjsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJ Ql9BU01fUkVBRF9JQTMyX0RFU0NSSVBUT1INCj4gQXNtUmVhZElkdHI7DQo+ID4gKyAgVU5JVF9U RVNUX0hPU1RfQkFTRV9MSUJfQVNNX1dSSVRFX0lBMzJfREVTQ1JJUFRPUg0KPiBBc21Xcml0ZUlk dHI7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfUkVBRF9VSU5UMTYNCj4gQXNtUmVh ZExkdHI7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfV1JJVEVfVUlOVDE2DQo+IEFz bVdyaXRlTGR0cjsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9BU01fUkVBRF9QTUMN Cj4gQXNtUmVhZFBtYzsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9BU01fTU9OSVRP Ug0KPiBBc21Nb25pdG9yOw0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9NV0FJ VA0KPiBBc21Nd2FpdDsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9WT0lEDQo+IEFz bVdiaW52ZDsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9WT0lEDQo+IEFzbUludmQ7 DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNNX0ZMVVNIX0NBQ0hFX0xJTkUNCj4g QXNtRmx1c2hDYWNoZUxpbmU7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNNX1BB R0lOR18zMg0KPiBBc21FbmFibGVQYWdpbmczMjsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNF X0xJQl9BU01fUEFHSU5HXzMyDQo+IEFzbURpc2FibGVQYWdpbmczMjsNCj4gPiArICBVTklUX1RF U1RfSE9TVF9CQVNFX0xJQl9BU01fRU5BQkxFX1BBR0lOR182NA0KPiBBc21FbmFibGVQYWdpbmc2 NDsNCj4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9BU01fRElTQUJMRV9QQUdJTkdfNjQN Cj4gQXNtRGlzYWJsZVBhZ2luZzY0Ow0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FT TV9HRVRfVEhVTktfMTZfUFJPUEVSVElFUw0KPiBBc21HZXRUaHVuazE2UHJvcGVydGllczsNCj4g PiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9BU01fVEhVTktfMTYNCj4gQXNtUHJlcGFyZVRo dW5rMTY7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNNX1RIVU5LXzE2DQo+IEFz bVRodW5rMTY7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNNX1RIVU5LXzE2DQo+ IEFzbVByZXBhcmVBbmRUaHVuazE2Ow0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1dS SVRFX1VJTlQxNg0KPiBBc21Xcml0ZVRyOw0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElC X1ZPSUQNCj4gQXNtTGZlbmNlOw0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9Q QVRDSF9JTlNUUlVDVElPTl9YODYNCj4gUGF0Y2hJbnN0cnVjdGlvblg4NjsNCj4gPiArfSBVTklU X1RFU1RfSE9TVF9CQVNFX0xJQl9YODY7DQo+ID4gKw0KPiA+ICsvLy8NCj4gPiArLy8vIERhdGEg c3RydWN0dXJlIHRoYXQgY29udGFpbnMgcG9pbnRlcnMgc3RydWN0dXJlcw0KPiBvZiBjb21tb24g c2VydmljZXMgYW5kIENQVQ0KPiA+ICsvLy8gYXJjaGl0Y3R1aXJlIHNwZWNpZmljIHNlcnZpY2Vz LiAgU3VwcG9ydCBmb3INCj4gYWRkaXRpb25hbCBDUFUgYXJjaGl0ZWN0dXJlcw0KPiA+ICsvLy8g Y2FuIGJlIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhpcyBzdHJ1Y3R1cmUuDQo+ID4gKy8vLw0KPiA+ ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQ09NTU9O ICAqQ29tbW9uOw0KPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1g4NiAgICAgKlg4NjsN Cj4gPiArfSBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQjsNCj4gPiArDQo+ID4gK2V4dGVybiBVTklU X1RFU1RfSE9TVF9CQVNFX0xJQiAgZ1VuaXRUZXN0SG9zdEJhc2VMaWI7DQo+ID4gKw0KPiA+ICsj ZW5kaWYNCj4gPiAtLQ0KPiA+IDIuMjEuMC53aW5kb3dzLjENCg0K