From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.20; helo=mga02.intel.com; envelope-from=ruiyu.ni@intel.com; receiver=edk2-devel@lists.01.org Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id F28982034D8CF for ; Thu, 22 Feb 2018 18:28:15 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 22 Feb 2018 18:34:16 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.47,381,1515484800"; d="scan'208";a="32143781" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by fmsmga004.fm.intel.com with ESMTP; 22 Feb 2018 18:34:16 -0800 Received: from fmsmsx121.amr.corp.intel.com (10.18.125.36) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 22 Feb 2018 18:34:15 -0800 Received: from shsmsx101.ccr.corp.intel.com (10.239.4.153) by fmsmsx121.amr.corp.intel.com (10.18.125.36) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 22 Feb 2018 18:34:14 -0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.125]) by SHSMSX101.ccr.corp.intel.com ([169.254.1.253]) with mapi id 14.03.0319.002; Fri, 23 Feb 2018 10:34:08 +0800 From: "Ni, Ruiyu" To: Sami Mujawar , "edk2-devel@lists.01.org" CC: "evan.lloyd@arm.com" , "leif.lindholm@linaro.org" , "Matteo.Carlini@arm.com" , "Stephanie.Hughes-Fitt@arm.com" , "nd@arm.com" , "Carsey, Jaben" , "Yao, Jiewen" Thread-Topic: [PATCH v3 1/1] ShellPkg: Add acpiview tool to dump ACPI tables Thread-Index: AQHTrAp59qNVacY+IE669RhOYZkgoqOxRIMw Date: Fri, 23 Feb 2018 02:34:08 +0000 Message-ID: <734D49CCEBEEF84792F5B80ED585239D5BBBE75C@SHSMSX104.ccr.corp.intel.com> References: <20180222182430.26164-1-sami.mujawar@arm.com> <20180222182430.26164-2-sami.mujawar@arm.com> In-Reply-To: <20180222182430.26164-2-sami.mujawar@arm.com> Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH v3 1/1] ShellPkg: Add acpiview tool to dump ACPI tables X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Feb 2018 02:28:16 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Rmlyc3RseSwgcHVibGljIGxpYnJhcnkgQVBJcyBzaG91bGQgaGF2ZSAiRUZJQVBJIiBkZWNvcmF0 b3IuDQpTZWNvbmRseSwgSSBhbSB3b25kZXJpbmcgaWYgaXQncyBwb3NzaWJsZSB0byBub3QgZXhw b3NlIGFueSBsaWJyYXJ5IGNsYXNzZXMNCmZvciBoYW5kbGluZyBvZiBtb3JlIEFDUEkgdGFibGVz Lg0KSSBhZ3JlZSB0byBpbXBsZW1lbnQgVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliIGluIGEg d2F5IGZvciBlYXN5DQpleHRlbnNpb24gZm9yIGhhbmRsaW5nIG9mIG1vcmUgQUNQSSB0YWJsZXMs IGJ1dCBJIHByZWZlciB0byBrZWVwIHRoZQ0KaW50ZXJmYWNlcyBpbnRlcm5hbGx5IGluc2lkZSB0 aGUgVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLg0KDQoNClRoYW5rcy9SYXkNCg0KPiAtLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBTYW1pIE11amF3YXIgW21haWx0bzpzYW1p Lm11amF3YXJAYXJtLmNvbV0NCj4gU2VudDogRnJpZGF5LCBGZWJydWFyeSAyMywgMjAxOCAyOjI1 IEFNDQo+IFRvOiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPiBDYzogZXZhbi5sbG95ZEBhcm0u Y29tOyBsZWlmLmxpbmRob2xtQGxpbmFyby5vcmc7IE1hdHRlby5DYXJsaW5pQGFybS5jb207DQo+ IFN0ZXBoYW5pZS5IdWdoZXMtRml0dEBhcm0uY29tOyBuZEBhcm0uY29tOyBDYXJzZXksIEphYmVu DQo+IDxqYWJlbi5jYXJzZXlAaW50ZWwuY29tPjsgTmksIFJ1aXl1IDxydWl5dS5uaUBpbnRlbC5j b20+OyBZYW8sIEppZXdlbg0KPiA8amlld2VuLnlhb0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFtQ QVRDSCB2MyAxLzFdIFNoZWxsUGtnOiBBZGQgYWNwaXZpZXcgdG9vbCB0byBkdW1wIEFDUEkgdGFi bGVzDQo+IA0KPiBUaGlzIHByb2dyYW0gaXMgcHJvdmlkZWQgdG8gYWxsb3cgZXhhbWluYXRpb24g b2YgQUNQSSB0YWJsZSBjb250ZW50cw0KPiBmcm9tIHRoZSBVRUZJIFNoZWxsLiAgVGhpcyBjYW4g aGVscCB3aXRoIGludmVzdGlnYXRpb25zLCBlc3BlY2lhbGx5IGF0DQo+IHRoYXQgc3RhZ2Ugd2hl cmUgdGhlIHRhYmxlcyBhcmUgbm90IGVuYWJsaW5nIGFuIE9TIHRvIGJvb3QuDQo+IFRoZSBwcm9n cmFtIGlzIG5vdCBleGhhdXN0aXZlLCBhbmQgb25seSBlbmNhcHN1bGF0ZXMgZGV0YWlsZWQga25v d2xlZGdlDQo+IG9mIGEgbGltaXRlZCBudW1iZXIgb2YgdGFibGUgdHlwZXMuDQo+IA0KPiBEZWZh dWx0IGJlaGF2aW91ciBpcyB0byBkaXNwbGF5IHRoZSBjb250ZW50IG9mIGFsbCB0YWJsZXMgaW5z dGFsbGVkLg0KPiAnS25vd24nIHRhYmxlIHR5cGVzIHdpbGwgYmUgcGFyc2VkIGFuZCBkaXNwbGF5 ZWQgd2l0aCBkZXNjcmlwdGlvbnMgYW5kDQo+IGZpZWxkIHZhbHVlcy4gIFdoZXJlIGFwcHJvcHJp YXRlIGEgZGVncmVlIG9mIGNvbnNpc3RlbmN5IGNoZWNraW5nIGlzDQo+IGRvbmUgYW5kIGVycm9y cyBtYXkgYmUgcmVwb3J0ZWQgaW4gdGhlIG91dHB1dC4NCj4gT3RoZXIgdGFibGUgdHlwZXMgd2ls bCBiZSBkaXNwbGF5ZWQgYXMgYW4gYXJyYXkgb2YgSGV4YWRlY2ltYWwgYnl0ZXMuDQo+IA0KPiBU byBmYWNpbGl0YXRlIGRlYnVnZ2luZywgdGhlIC1zIGFuZCAtZCBvcHRpb25zIGNhbiBiZSB1c2Vk IHRvIGdlbmVyYXRlIGENCj4gYmluYXJ5IGZpbGUgaW1hZ2Ugb2YgYSB0YWJsZSB0aGF0IGNhbiBi ZSBjb3BpZWQgZWxzZXdoZXJlIGZvcg0KPiBpbnZlc3RpZ2F0aW9uIHVzaW5nIHRvb2xzIHN1Y2gg YXMgdGhvc2UgcHJvdmlkZWQgYnkgYWNwaWNhLm9yZy4gIFRoaXMgaXMNCj4gZXNwZWNpYWxseSBy ZWxldmFudCBmb3IgQU1MIHR5cGUgdGFibGVzIGxpa2UgRFNEVCBhbmQgU1NEVC4NCj4gDQo+IFRo ZSBpbnNwaXJhdGlvbiBmb3IgdGhpcyBpcyB0aGUgZXhpc3Rpbmcgc21iaW9zdmlldyBEZWJ1ZzEg U2hlbGwNCj4gY29tbWFuZC4NCj4gDQo+IE1hbnkgdGFibGVzIGFyZSBub3QgZXhwbGljaXRseSBo YW5kbGVkLCBpbiBwYXJ0IGJlY2F1c2Ugbm8gZXhhbXBsZXMgYXJlDQo+IGF2YWlsYWJsZSBmb3Ig b3VyIHRlc3RpbmcuDQo+IA0KPiBUaGUgcHJvZ3JhbSBpcyBkZXNpZ25lZCB0byBiZSBleHRlbmRl ZCB0byBuZXcgdGFibGVzIHdpdGggbWluaW1hbA0KPiBlZmZvcnQsIGFuZCBjb250cmlidXRpb25z IGFyZSBpbnZpdGVkLg0KPiANCj4gQ29udHJpYnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmli dXRpb24gQWdyZWVtZW50IDEuMQ0KPiBTaWduZWQtb2ZmLWJ5OiBTYW1pIE11amF3YXIgPHNhbWku bXVqYXdhckBhcm0uY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBFdmFuIExsb3lkIDxldmFuLmxsb3lk QGFybS5jb20+DQo+IC0tLQ0KPiANCj4gTm90ZXM6DQo+ICAgICB2MzoNCj4gICAgIC0gQ2FuIHRo ZSBpbmRpdmlkdWFsICJjaGlsZCIgbGlicmFyaWVzIGJlIHBsYWNlZCBpbnRvDQo+ICAgICAgIHN1 YmRpcmVjdG9yaWVzIHVuZGVyIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYiBkaXJlY3RvcnkN Cj4gICAgICAgZm9yIGNsZWFyIHNlcGFyYXRpb24/ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgW0pBQkVOXQ0KPiAgICAgLSBQYXRjaCB1cGRhdGVkIHRvIG1vdmUgaW5k aXZpZHVhbCAiY2hpbGQiIGxpYnJhcmllcyBpbnRvDQo+ICAgICAgIHN1YmRpcmVjdG9yaWVzLiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU0FNSV0NCj4g DQo+ICAgICAtIEluIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYixjIHdoYXQncyB0aGUgbW90 aXZhdGlvbiBmb3IgYWxsDQo+ICAgICAgIHRoZSB3cmFwcGVycyBhcm91bmQgcHJpbnQ/IEkgc2Vl IHRoYXQgc29tZSBhcmUgZm9yIG1lbW9yeSBhY2Nlc3MNCj4gICAgICAgcmVzdHJpY3Rpb25zLCBi dXQgdGhlIHJlc3Q/ICBQcmludEd1aWQsIGxvb2tzIHRoZSBzYW1lIGFzIHVzaW5nDQo+ICAgICAg ICVnIHdpdGggUHJpbnQoKS4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFtKQUJFTl0NCj4gICAgIC0gVGhlIHByaW50IHdyYXBwZXJzIGVuYWJsZSBhIGNvbW1v biBzdHlsZWQgZm9ybWF0dGVkIHByaW50aW5nIGZvcg0KPiAgICAgICB0aGUgQUNQSSBmaWVsZHMu IFRoZSBBQ1BJdmlldyB0YWJsZSBwYXJzaW5nIGZyYW1ld29yayB1dGlsaXplcyBhDQo+ICAgICAg IHRhYmxlLWRyaXZlbiBhcHByb2FjaCBmb3IgcGFyc2luZyB0aGUgdGFibGVzIGFuZCB0aGVzZSBm dW5jdGlvbnMNCj4gICAgICAgYXJlIGludm9rZWQgYnkgdGhlIGZyYW1ld29yayBiYXNlZCBvbiB0 aGUgZmllbGQgc2l6ZSBhbmQgdHlwZS4NCj4gICAgICAgSG93ZXZlciB5b3UgYXJlIHJpZ2h0LCBp dCBpcyBzdXBlcmZsdW91cyBpbiB0aGUgY2FzZSBvZiBQcmludEd1aWQNCj4gICAgICAgKFdoaWNo IGhhcyBub3cgYmVlbiByZW1vdmVkIGluIHRoZSB1cGRhdGVkIHBhdGNoKS4gICAgICAgICAgICAg IFtTQU1JXQ0KPiANCj4gICAgIC0gRG8gd2Ugd2FudCB0byBjaGFuZ2UgdGhlIG1haW4gZW50cnlw b2ludCB0byBhIER5bmFtaWNDb21tYW5kDQo+ICAgICAgIHNpbmNlIHRoaXMgY29tbWFuZCBpcyBu b3QgaW4gdGhlIHNoZWxsIHNwZWM/IElmIHllcywgZG8gd2Ugd2FudA0KPiAgICAgICB0byBkbyB0 aGF0IGZpcnN0IG9yIGFmdGVyPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb SkFCRU5dDQo+ICAgICAtIFRoZSBFQ1IgMTc4NCBmb3IgQUNQSXZpZXcgYXBwZWFycyB0byBiZSAn QXBwcm92ZWQgYXMgbmV3IGNvbnRlbnQNCj4gICAgICAgZm9yIHRoZSBTaGVsbCBTcGVjLicgaW4g TWFudGlzLA0KPiAgICAgICBzZWUgaHR0cHM6Ly9tYW50aXMudWVmaS5vcmcvbWFudGlzL3ZpZXcu cGhwP2lkPTE3ODQuDQo+ICAgICAgIEFzIEkgdW5kZXJzdGFuZCBpdCwgdGhlIEVDUiBjaGFuZ2Ug bmVlZHMgdG8gYmUgcHJvcGFnYXRlZCB0byB0aGUNCj4gICAgICAgU2hlbGwgc3BlY2lmaWNhdGlv biBhbmQgaXMgcGVuZGluZy4gSW4gbGlnaHQgb2YgdGhlIGFib3ZlLCBJIHRoaW5rDQo+ICAgICAg IHRoYXQgYWRkaW5nIER5bmFtaWNDb21tYW5kIHN1cHBvcnQgaXMgbm90IG5lY2Vzc2FyeS4gUGxl YXNlIGxldCBtZQ0KPiAgICAgICBrbm93IGlmIHlvdSBmZWVsIG90aGVyd2lzZS4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NBTUldDQo+IA0KPiAgU2hlbGxQa2cvSW5jbHVk ZS9MaWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwNCj4gNDYzICsrKysrKysrKysrKw0KPiAgU2hlbGxQa2cv SW5jbHVkZS9MaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gMTI2ICsrKysNCj4gIFNoZWxsUGtnL0lu Y2x1ZGUvTGlicmFyeS9BY3BpVmlldy9BY3BpVmlldy5oICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3MQ0KPiArKw0KPiAgU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVZpZXcuYw0KPiB8IDYwMSArKysrKysr KysrKysrKysrDQo+IA0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9QYXJzZXJzL0FjcGlQYXJzZXJIZWxwZXIvDQo+IEFjcGlQYXJzZXIuYyAgICAgICAgICAg IHwgNjQ0ICsrKysrKysrKysrKysrKysrDQo+IA0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0FjcGlQYXJzZXJIZWxwZXIvDQo+IEFjcGlQYXJz ZXJIZWxwZXJMaWIuaW5mIHwgIDMyICsNCj4gDQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvQWNwaVBhcnNlckhlbHBlci8NCj4gQWNwaVRhYmxl UGFyc2VyLmMgICAgICAgfCAyMTQgKysrKysrDQo+ICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0JncnQvQmdydFBhcnNlci5jDQo+IHwgMTE3ICsr KysNCj4gDQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1Bh cnNlcnMvQmdydC9CZ3J0UGFyc2VyTGliLg0KPiBpbmYgICAgICAgICAgICAgICAgICAgfCAgMzMg Kw0KPiANCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFy c2Vycy9EYmcyL0RiZzJQYXJzZXIuYw0KPiB8IDI4MyArKysrKysrKw0KPiANCj4gU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9EYmcyL0RiZzJQYXJz ZXJMaQ0KPiBiLmluZiAgICAgICAgICAgICAgICAgICB8ICAzMyArDQo+ICBTaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0RzZHQvRHNkdFBhcnNlci5j DQo+IHwgIDkyICsrKw0KPiANCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvUGFyc2Vycy9Ec2R0L0RzZHRQYXJzZXJMaQ0KPiBiLmluZiAgICAgICAgICAgICAg ICAgICB8ICAzMyArDQo+ICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9QYXJzZXJzL0ZhZHQvRmFkdFBhcnNlci5jDQo+IHwgMzAyICsrKysrKysrDQo+IA0KPiBT aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0ZhZHQv RmFkdFBhcnNlckxpYg0KPiAuaW5mICAgICAgICAgICAgICAgICAgIHwgIDMzICsNCj4gIFNoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvR3RkdC9HdGR0 UGFyc2VyLmMNCj4gfCAzMzYgKysrKysrKysrDQo+IA0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0d0ZHQvR3RkdFBhcnNlckxpDQo+IGIuaW5m ICAgICAgICAgICAgICAgICAgIHwgIDMzICsNCj4gIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvSW9ydC9Jb3J0UGFyc2VyLmMNCj4gfCA3NDEgKysr KysrKysrKysrKysrKysrKysNCj4gDQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliL1BhcnNlcnMvSW9ydC9Jb3J0UGFyc2VyTGliLmkNCj4gbmYgICAgICAgICAg ICAgICAgICAgfCAgMzMgKw0KPiANCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmll d0NvbW1hbmRMaWIvUGFyc2Vycy9NYWR0L01hZHRQYXJzZXIuDQo+IGMgICAgICAgICAgICAgICAg ICAgICAgICB8IDM1NiArKysrKysrKysrDQo+IA0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL01hZHQvTWFkdFBhcnNlckwNCj4gaWIuaW5mICAg ICAgICAgICAgICAgICAgIHwgIDMzICsNCj4gDQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWNmZy9NY2ZnUGFyc2VyLmMNCj4gfCAxMzkgKysr Kw0KPiANCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFy c2Vycy9NY2ZnL01jZmdQYXJzZXJMaQ0KPiBiLmluZiAgICAgICAgICAgICAgICAgICB8ICAzMyAr DQo+IA0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJz ZXJzL1JzZHAvUnNkcFBhcnNlci5jDQo+IHwgMjEwICsrKysrKw0KPiANCj4gU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Sc2RwL1JzZHBQYXJzZXJM aQ0KPiBiLmluZiAgICAgICAgICAgICAgICAgICB8ICAzMyArDQo+ICBTaGVsbFBrZy9MaWJyYXJ5 L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NsaXQvU2xpdFBhcnNlci5jDQo+ IHwgMTg3ICsrKysrDQo+IA0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9QYXJzZXJzL1NsaXQvU2xpdFBhcnNlckxpYi5pbg0KPiBmICAgICAgICAgICAgICAg ICAgIHwgIDMzICsNCj4gIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL1BhcnNlcnMvU3Bjci9TcGNyUGFyc2VyLmMNCj4gfCAyMDkgKysrKysrDQo+IA0KPiBTaGVs bFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NwY3IvU3Bj clBhcnNlckxpYg0KPiAuaW5mICAgICAgICAgICAgICAgICAgIHwgIDMzICsNCj4gIFNoZWxsUGtn L0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3JhdC9TcmF0UGFy c2VyLmMNCj4gfCAzNzMgKysrKysrKysrKw0KPiANCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hl bGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcmF0L1NyYXRQYXJzZXJMaWIuaQ0KPiBuZiAg ICAgICAgICAgICAgICAgICB8ICAzMyArDQo+ICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFj cGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NzZHQvU3NkdFBhcnNlci5jDQo+IHwgIDkyICsrKw0K PiANCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vy cy9Tc2R0L1NzZHRQYXJzZXJMaWINCj4gLmluZiAgICAgICAgICAgICAgICAgICB8ICAzMyArDQo+ ICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1hz ZHQvWHNkdFBhcnNlci5jDQo+IHwgMTk3ICsrKysrKw0KPiANCj4gU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Yc2R0L1hzZHRQYXJzZXJMaWINCj4g LmluZiAgICAgICAgICAgICAgICAgICB8ICAzMyArDQo+IA0KPiBTaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbg0KPiBkTGli LmMgICAgICAgICAgICAgICAgICAgIHwgMTA2ICsrKw0KPiANCj4gU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW4NCj4gZExp Yi5oICAgICAgICAgICAgICAgICAgICB8ICAzMiArDQo+IA0KPiBTaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbg0KPiBkTGli LmluZiAgICAgICAgICAgICAgICAgIHwgIDU4ICsrDQo+IA0KPiBTaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbg0KPiBkTGli LnVuaSAgICAgICAgICAgICAgICAgIHwgMTI3ICsrKysNCj4gIFNoZWxsUGtnL1NoZWxsUGtnLmRl YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMyArLQ0KPiAgNDAgZmlsZXMgY2hhbmdlZCwgNjU3MiBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvSW5j bHVkZS9MaWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaA0KPiBiL1NoZWxsUGtnL0luY2x1ZGUv TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g aW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjBlZDk5 MjM5YTExYzhhOGYyOWM0ZjJlNDgNCj4gMmJlMGQ4Y2EyMzEwNzINCj4gLS0tIC9kZXYvbnVsbA0K PiArKysgYi9TaGVsbFBrZy9JbmNsdWRlL0xpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNlci5oDQo+ IEBAIC0wLDAgKzEsNDYzIEBADQo+ICsvKioNCj4gKyAgSGVhZGVyIGZpbGUgZm9yIEFDUEkgcGFy c2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFs bCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWlu ZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0 aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0KPiBMaWNlbnNlDQo+ICsgIHdoaWNo IGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGlj ZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vu c2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVE IFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiArICBXSVRI T1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4g RVhQUkVTUyBPUiBJTVBMSUVELg0KPiArKiovDQo+ICsNCj4gKyNpZm5kZWYgQUNQSVBBUlNFUl9I Xw0KPiArI2RlZmluZSBBQ1BJUEFSU0VSX0hfDQo+ICsNCj4gKyNkZWZpbmUgT1VUUFVUX0ZJRUxE X0NPTFVNTl9XSURUSCAgMzYNCj4gKw0KPiArLy8vIFRoZSBSU0RQIHRhYmxlIHNpZ25hdHVyZSBp cyAiUlNEIFBUUiAiICg4IGJ5dGVzKQ0KPiArLy8vIEhvd2V2ZXIgVGhlIHNpZ25hdHVyZSBmb3Ig QUNQSSB0YWJsZXMgaXMgNCBieXRlcy4NCj4gKy8vLyBUbyB3b3JrIGFyb3VuZCB0aGlzIG9kZGl0 eSBkZWZpbmUgYSBzaWduYXR1cmUgdHlwZQ0KPiArLy8vIHRoYXQgYWxsb3dzIHVzIHRvIHByb2Nl c3MgdGhlIGxvZyBvcHRpb25zLg0KPiArI2RlZmluZSBSU0RQX1RBQkxFX0lORk8gIFNJR05BVFVS RV8zMignUicsICdTJywgJ0QnLCAnUCcpDQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHJlc2V0 cyB0aGUgQUNQSSB0YWJsZSBlcnJvciBjb3VudGVyIHRvIFplcm8uDQo+ICsqLw0KPiArVk9JRA0K PiArUmVzZXRFcnJvckNvdW50ICgNCj4gKyAgVk9JRA0KPiArICApOw0KPiArDQo+ICsvKiogVGhp cyBmdW5jdGlvbiBpbmNyZW1lbnRzIHRoZSBBQ1BJIHRhYmxlIGVycm9yIGNvdW50ZXIuDQo+ICsq Lw0KPiArVk9JRA0KPiArSW5jcmVtZW50RXJyb3JDb3VudCAoDQo+ICsgIFZPSUQNCj4gKyAgKTsN Cj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgQUNQSSB0YWJsZSBlcnJvciBj b3VudC4NCj4gKw0KPiArICBAcmV0dmFsIFJldHVybnMgdGhlIGNvdW50IG9mIGVycm9ycyBkZXRl Y3RlZCBpbiB0aGUgQUNQSSB0YWJsZXMuDQo+ICsqLw0KPiArVUlOVDMyDQo+ICtHZXRFcnJvckNv dW50ICgNCj4gKyAgVk9JRA0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiByZXNl dHMgdGhlIEFDUEkgdGFibGUgd2FybmluZyBjb3VudGVyIHRvIFplcm8uDQo+ICsqLw0KPiArVk9J RA0KPiArUmVzZXRXYXJuaW5nQ291bnQgKA0KPiArICBWT0lEDQo+ICsgICk7DQo+ICsNCj4gKy8q KiBUaGlzIGZ1bmN0aW9uIGluY3JlbWVudHMgdGhlIEFDUEkgdGFibGUgd2FybmluZyBjb3VudGVy Lg0KPiArKi8NCj4gK1ZPSUQNCj4gK0luY3JlbWVudFdhcm5pbmdDb3VudCAoDQo+ICsgIFZPSUQN Cj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgQUNQSSB0YWJs ZSB3YXJuaW5nIGNvdW50Lg0KPiArDQo+ICsgIEByZXR2YWwgUmV0dXJucyB0aGUgY291bnQgb2Yg d2FybmluZyBkZXRlY3RlZCBpbiB0aGUgQUNQSSB0YWJsZXMuDQo+ICsqLw0KPiArVUlOVDMyDQo+ ICtHZXRXYXJuaW5nQ291bnQgKA0KPiArICBWT0lEDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlz IGZ1bmN0aW9uIHZlcmlmaWVzIHRoZSBBQ1BJIHRhYmxlIGNoZWNrc3VtLg0KPiArDQo+ICsgIFRo aXMgZnVuY3Rpb24gdmVyaWZpZXMgdGhlIGNoZWNrc3VtIGZvciB0aGUgQUNQSSB0YWJsZSBhbmQg b3B0aW9uYWxseQ0KPiArICBwcmludHMgdGhlIHN0YXR1cy4NCj4gKw0KPiArICBAcGFyYW0gW2lu XSBMb2cgICAgIElmIFRSVUUgbG9nIHRoZSBzdGF0dXMgb2YgdGhlIGNoZWNrc3VtLg0KPiArICBA cGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSB0YWJsZSBidWZm ZXIuDQo+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgVGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyLg0K PiArDQo+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgIFRoZSBjaGVja3N1bSBpcyBPSy4NCj4gKyAg QHJldHZhbCBGQUxTRSAgICAgICAgVGhlIGNoZWNrc3VtIGZhaWxlZC4NCj4gKyovDQo+ICtCT09M RUFODQo+ICtWZXJpZnlDaGVja3N1bSAoDQo+ICsgIElOIEJPT0xFQU4gTG9nLA0KPiArICBJTiBV SU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMyICBMZW5ndGgNCj4gKyAgKTsNCj4gKw0KPiArLyoq IFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgYSByYXcgZGF0YSBkdW1wIG9mIHRoZSBBQ1BJIHRhYmxl Lg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIHRhYmxlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICBUaGUgbGVuZ3RoIG9m IHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRHVtcFJhdyAoDQo+ICsgIElOIFVJTlQ4 KiBQdHIsDQo+ICsgIElOIFVJTlQzMiBMZW5ndGgNCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMg ZnVuY3Rpb24gdHJhY2VzIDEgYnl0ZSBvZiBkYXR1bSBhcyBzcGVjaWZpZWQgaW4gdGhlDQo+ICsg ICAgZm9ybWF0IHN0cmluZy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIFRoZSBmb3Jt YXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAg IFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiAr RHVtcFVpbnQ4ICgNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQsDQo+ICsgIElOIFVJTlQ4 KiAgICAgICAgUHRyDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyAy IGJ5dGVzIG9mIGRhdGEgYXMgc3BlY2lmaWVkIGluIHRoZQ0KPiArICAgIGZvcm1hdCBzdHJpbmcu DQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBUaGUgZm9ybWF0IHN0cmluZyBmb3IgdHJh Y2luZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBz dGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0R1bXBVaW50MTYgKA0KPiAr ICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCwNCj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4g KyAgKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDQgYnl0ZXMgb2YgZGF0YSBh cyBzcGVjaWZpZWQgaW4gdGhlDQo+ICsgICAgZm9ybWF0IHN0cmluZy4NCj4gKw0KPiArICBAcGFy YW0gW2luXSBGb3JtYXQgIFRoZSBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0K PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZm ZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRHVtcFVpbnQzMiAoDQo+ICsgIElOIENPTlNUIENIQVIx NiogRm9ybWF0LA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICApOw0KPiArDQo+ICsv KiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgOCBieXRlcyBvZiBkYXRhIGFzIHNwZWNpZmllZCBieSB0 aGUNCj4gKyAgICBmb3JtYXQgc3RyaW5nLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAg VGhlIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5d IFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtW T0lEDQo+ICtEdW1wVWludDY0ICgNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQsDQo+ICsg IElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9u IHRyYWNlcyAzIGNoYXJhY3RlcnMgd2hpY2ggY2FuIGJlIG9wdGlvbmFsbHkNCj4gKyAgIGZvcm1h dGVkIHVzaW5nIHRoZSBmb3JtYXQgc3RyaW5nIGlmIHNwZWNpZmllZC4NCj4gKw0KPiArICBJZiBu byBmb3JtYXQgc3RyaW5nIGlzIHNwZWNpZmllZCB0aGUgRm9ybWF0IG11c3QgYmUgTlVMTC4NCj4g Kw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1hdCBzdHJpbmcgZm9yIHRy YWNpbmcgdGhlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUg c3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtEdW1wM0NoYXJzICgNCj4g KyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ICsgIElOIFVJTlQ4KiAgICAg ICAgUHRyDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA0IGNoYXJh Y3RlcnMgd2hpY2ggY2FuIGJlIG9wdGlvbmFsbHkNCj4gKyAgIGZvcm1hdGVkIHVzaW5nIHRoZSBm b3JtYXQgc3RyaW5nIGlmIHNwZWNpZmllZC4NCj4gKw0KPiArICBJZiBubyBmb3JtYXQgc3RyaW5n IGlzIHNwZWNpZmllZCB0aGUgRm9ybWF0IG11c3QgYmUgTlVMTC4NCj4gKw0KPiArICBAcGFyYW0g W2luXSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEu DQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1 ZmZlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtEdW1wNENoYXJzICgNCj4gKyAgSU4gQ09OU1QgQ0hB UjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ICsgICk7 DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA2IGNoYXJhY3RlcnMgd2hpY2ggY2Fu IGJlIG9wdGlvbmFsbHkNCj4gKyAgIGZvcm1hdGVkIHVzaW5nIHRoZSBmb3JtYXQgc3RyaW5nIGlm IHNwZWNpZmllZC4NCj4gKw0KPiArICBJZiBubyBmb3JtYXQgc3RyaW5nIGlzIHNwZWNpZmllZCB0 aGUgRm9ybWF0IG11c3QgYmUgTlVMTC4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIE9w dGlvbmFsIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ICsgIEBwYXJhbSBb aW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ ICtWT0lEDQo+ICtEdW1wNkNoYXJzICgNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BU SU9OQUwsDQo+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBU aGlzIGZ1bmN0aW9uIHRyYWNlcyA4IGNoYXJhY3RlcnMgd2hpY2ggY2FuIGJlIG9wdGlvbmFsbHkN Cj4gKyAgIGZvcm1hdGVkIHVzaW5nIHRoZSBmb3JtYXQgc3RyaW5nIGlmIHNwZWNpZmllZC4NCj4g Kw0KPiArICBJZiBubyBmb3JtYXQgc3RyaW5nIGlzIHNwZWNpZmllZCB0aGUgRm9ybWF0IG11c3Qg YmUgTlVMTC4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1hdCBz dHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9p bnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtEdW1w OENoYXJzICgNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ICsgIElO IFVJTlQ4KiAgICAgICAgUHRyDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGlu ZGVudHMgYW5kIHByaW50cyB0aGUgQUNQSSB0YWJsZSBGaWVsZCBOYW1lLg0KPiArDQo+ICsgIEBw YXJhbSBbaW5dIEluZGVudCAgICAgIE51bWJlciBvZiBzcGFjZXMgdG8gYWRkIHRvIHRoZSBnbG9i YWwgdGFibGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50LiBUaGUgZ2xvYmFs IHRhYmxlIGluZGVudCBpcyAwIGJ5IGRlZmF1bHQ7DQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgIGhvd2V2ZXIgdGhpcyB2YWx1ZSBpcyB1cGRhdGVkIG9uIGVudHJ5IHRvIHRoZQ0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICBQYXJzZUFjcGkoKSBieSBhZGRpbmcgdGhlIGluZGVudCB2 YWx1ZSBwcm92aWRlZCB0bw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJzZUFjcGko KSBhbmQgcmVzdG9yZWQgYmFjayBvbiBleGl0LiBUaGVyZWZvcmUNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgdGhlIHRvdGFsIGluZGVudCBpbiB0aGUgb3V0cHV0IGlzIGRlcGVuZGVudCBv biBmcm9tDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHRoaXMgZnVuY3Rpb24g aXMgY2FsbGVkLg0KPiArICBAcGFyYW0gW2luXSBGaWVsZE5hbWUgICBQb2ludGVyIHRvIHRoZSBG aWVsZCBOYW1lLg0KPiArKi8NCj4gK1ZPSUQNCj4gK1ByaW50RmllbGROYW1lICgNCj4gKyAgSU4g VUlOVDMyICAgICAgICAgSW5kZW50LA0KPiArICBJTiBDT05TVCBDSEFSMTYqICBGaWVsZE5hbWUN Cj4gKyk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBvaW50ZXIgaXMgdGhlIHRlbXBsYXRl IGZvciBjdXN0b21pemluZyB0aGUgdHJhY2Ugb3V0cHV0DQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0g Rm9ybWF0ICBGb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhIGFzIHNwZWNpZmllZCBi eQ0KPiArICAgICAgICAgICAgICAgICAgICAgIHRoZSAnRm9ybWF0JyBtZW1iZXIgb2YgQUNQSV9Q QVJTRVIuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIGJ1ZmZlci4NCj4gKyovDQo+ICt0eXBlZGVmIFZPSUQgKCpGTlBUUl9QUklOVF9GT1JNQVRU RVIpKENPTlNUIENIQVIxNiogRm9ybWF0LA0KPiBVSU5UOCogUHRyKTsNCj4gKw0KPiArLyoqIFRo aXMgZnVuY3Rpb24gcG9pbnRlciBpcyB0aGUgdGVtcGxhdGUgZm9yIHZhbGlkYXRpbmcgYW4gQUNQ SSB0YWJsZSBmaWVsZC4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8g dGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBv aW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBhcyBzcGVjaWZpZWQNCj4gYnkN Cj4gKyAgICAgICAgICAgICAgICAgICAgICB0aGUgJ0NvbnRleHQnIG1lbWJlciBvZiB0aGUgQUNQ SV9QQVJTRVIuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgZS5nLiB0aGlzIGNvdWxkIGJlIGEg cG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArdHlwZWRlZiBWT0lE ICgqRk5QVFJfRklFTERfVkFMSURBVE9SKShVSU5UOCogUHRyLCBWT0lEKiBDb250ZXh0KTsNCj4g Kw0KPiArLyoqIFRoZSBBQ1BJX1BBUlNFUiBzdHJ1Y3R1cmUgZGVzY3JpYmVzIHRoZSBmaWVsZHMg b2YgYW4gQUNQSSB0YWJsZSBhbmQNCj4gKyAgICBwcm92aWRlcyBtZWFucyBmb3IgdGhlIHBhcnNl ciB0byBpbnRlcnByZXQgYW5kIHRyYWNlIGFwcHJvcHJpYXRlbHkuDQo+ICsNCj4gKyAgVGhlIGZp cnN0IHRocmVlIG1lbWJlcnMgYXJlIHBvcHVsYXRlZCBiYXNlZCBvbiBpbmZvcm1hdGlvbiBwcmVz ZW50IGluDQo+ICsgIGluIHRoZSBBQ1BJIHRhYmxlIHNwZWNpZmljYXRpb25zLiBUaGUgcmVtYWlu aW5nIG1lbWJlcnMgZGVzY3JpYmUgaG93DQo+ICsgIHRoZSBwYXJzZXIgc2hvdWxkIHJlcG9ydCB0 aGUgZmllbGQgaW5mb3JtYXRpb24sIHZhbGlkYXRlIHRoZSBmaWVsZCBkYXRhDQo+ICsgIGFuZC9v ciB1cGRhdGUgYW4gZXh0ZXJuYWwgcG9pbnRlciB0byB0aGUgZmllbGQgKEl0ZW1QdHIpLg0KPiAr DQo+ICsgIFBhcnNlQWNwaSgpIHVzZXMgdGhlIGZvcm1hdCBzdHJpbmcgc3BlY2lmaWVkIGJ5ICdG b3JtYXQnIGZvciB0cmFjaW5nDQo+ICsgIHRoZSBmaWVsZCBkYXRhLiBJZiB0aGUgZmllbGQgaXMg bW9yZSBjb21wbGV4IGFuZCByZXF1aXJlcyBhZGRpdGlvbmFsDQo+ICsgIHByb2Nlc3NpbmcgZm9y IGZvcm1hdHRpbmcgYW5kIHJlcHJlc2VudGF0aW9uIGEgcHJpbnQgZm9ybWF0dGVyIGZ1bmN0aW9u DQo+ICsgIGNhbiBiZSBzcGVjaWZpZWQgaW4gJ1ByaW50Rm9ybWF0dGVyJy4NCj4gKyAgVGhlIFBy aW50Rm9ybWF0dGVyIGZ1bmN0aW9uIG1heSBjaG9vc2UgdG8gdXNlIHRoZSBmb3JtYXQgc3RyaW5n DQo+ICsgIHNwZWNpZmllZCBieSAnRm9ybWF0JyBvciB1c2UgaXRzIG93biBpbnRlcm5hbCBmb3Jt YXQgc3RyaW5nLg0KPiArDQo+ICsgIFRoZSAnRm9ybWF0JyBhbmQgJ1ByaW50Rm9ybWF0dGVyJyBt ZW1iZXJzIGFsbG93IGZsZXhpYmlsaXR5IGZvcg0KPiArICByZXByZXNlbnRpbmcgdGhlIGZpZWxk IGRhdGEuDQo+ICsqLw0KPiArdHlwZWRlZiBzdHJ1Y3QgQWNwaVBhcnNlciB7DQo+ICsNCj4gKyAg Ly8vIFN0cmluZyBkZXNjcmliaW5nIHRoZSBBQ1BJIHRhYmxlIGZpZWxkDQo+ICsgIC8vLyAoRmll bGQgY29sdW1uIGZyb20gQUNQSSB0YWJsZSBzcGVjKQ0KPiArICBDT05TVCBDSEFSMTYqICAgICAg ICAgTmFtZVN0cjsNCj4gKw0KPiArICAvLy8gVGhlIGxlbmd0aCBvZiB0aGUgZmllbGQuDQo+ICsg IC8vLyAoQnl0ZSBMZW5ndGggY29sdW1uIGZyb20gQUNQSSB0YWJsZSBzcGVjKQ0KPiArICBVSU5U MzIgICAgICAgICAgICAgICAgTGVuZ3RoOw0KPiArDQo+ICsgIC8vLyBUaGUgb2Zmc2V0IG9mIHRo ZSBmaWVsZCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgdGFibGUuDQo+ICsgIC8vLyAoQnl0ZSBPZmZz ZXQgY29sdW1uIGZyb20gQUNQSSB0YWJsZSBzcGVjKQ0KPiArICBVSU5UMzIgICAgICAgICAgICAg ICAgT2Zmc2V0Ow0KPiArDQo+ICsgIC8vLyBPcHRpb25hbCBQcmludCgpIHN0eWxlIGZvcm1hdCBz dHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuIElmIG5vdA0KPiArICAvLy8gdXNlZCB0aGlzIG11 c3QgYmUgc2V0IHRvIE5VTEwuDQo+ICsgIENPTlNUIENIQVIxNiogICAgICAgICBGb3JtYXQ7DQo+ ICsNCj4gKyAgLy8vIE9wdGlvbmFsIHBvaW50ZXIgdG8gYSBwcmludCBmb3JtYXR0ZXIgZnVuY3Rp b24gd2hpY2gNCj4gKyAgLy8vIGlzIHR5cGljYWxseSB1c2VkIHRvIHRyYWNlIGNvbXBsZXggZmll bGQgaW5mb3JtYXRpb24uDQo+ICsgIC8vLyBJZiBub3QgdXNlZCB0aGlzIG11c3QgYmUgc2V0IHRv IE5VTEwuDQo+ICsgIC8vLyBUaGUgRm9ybWF0IHN0cmluZyBpcyBwYXNzZWQgdG8gdGhlIFByaW50 Rm9ybWF0dGVyIGZ1bmN0aW9uDQo+ICsgIC8vLyBidXQgbWF5IGJlIGlnbm9yZWQgYnkgdGhlIGlt cGxlbWVudGF0aW9uIGNvZGUuDQo+ICsgIEZOUFRSX1BSSU5UX0ZPUk1BVFRFUiBQcmludEZvcm1h dHRlcjsNCj4gKw0KPiArICAvLy8gT3B0aW9uYWwgcG9pbnRlciB3aGljaCBtYXkgYmUgc2V0IHRv IHJlcXVlc3QgdGhlIHBhcnNlciB0byB1cGRhdGUNCj4gKyAgLy8vIGEgcG9pbnRlciB0byB0aGUg ZmllbGQgZGF0YS4gSWYgdW51c2VkIHRoaXMgbXVzdCBiZSBzZXQgdG8gTlVMTC4NCj4gKyAgVk9J RCoqICAgICAgICAgICAgICAgIEl0ZW1QdHI7DQo+ICsNCj4gKyAgLy8vIE9wdGlvbmFsIHBvaW50 ZXIgdG8gYSBmaWVsZCB2YWxpZGF0b3IgZnVuY3Rpb24uDQo+ICsgIC8vLyBUaGUgZnVuY3Rpb24g c2hvdWxkIGRpcmVjdGx5IHJlcG9ydCBhbnkgYXBwcm9wcmlhdGUgZXJyb3Igb3Igd2FybmluZw0K PiArICAvLy8gYW5kIGludm9rZSB0aGUgYXBwcm9wcmlhdGUgY291bnRlciB1cGRhdGUgZnVuY3Rp b24uDQo+ICsgIC8vLyBJZiBub3QgdXNlZCB0aGlzIHBhcmFtZXRlciBtdXN0IGJlIHNldCB0byBO VUxMLg0KPiArICBGTlBUUl9GSUVMRF9WQUxJREFUT1IgRmllbGRWYWxpZGF0b3I7DQo+ICsNCj4g KyAgLy8vIE9wdGlvbmFsIHBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiwN Cj4gKyAgLy8vIHdoaWNoIHRoZSBGaWVsZCBWYWxpZGF0b3IgZnVuY3Rpb24gY2FuIHVzZSB0byBk ZXRlcm1pbmUNCj4gKyAgLy8vIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEFDUEkg dGFibGUgYW5kIG1ha2UNCj4gKyAgLy8vIGRlY2lzaW9ucyBhYm91dCB0aGUgZmllbGQgYmVpbmcg dmFsaWRhdGVkLg0KPiArICAvLy8gZS5nLiB0aGlzIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUg QUNQSSB0YWJsZSBoZWFkZXINCj4gKyAgVk9JRCogICAgICAgICAgICAgICAgIENvbnRleHQ7DQo+ ICt9IEFDUElfUEFSU0VSOw0KPiArDQo+ICsvKiogQSBzdHJ1Y3R1cmUgdXNlZCB0byBzdG9yZSB0 aGUgcG9pbnRlcnMgdG8gdGhlIG1lbWJlcnMgb2YgdGhlDQo+ICsgICAgQUNQSSBkZXNjcmlwdGlv biBoZWFkZXIgc3RydWN0dXJlIHRoYXQgd2FzIHBhcnNlZC4NCj4gKyovDQo+ICt0eXBlZGVmIHN0 cnVjdCBBY3BpRGVzY3JpcHRpb25IZWFkZXJJbmZvIHsNCj4gKyAgLy8vIEFDUEkgdGFibGUgc2ln bmF0dXJlDQo+ICsgIFVJTlQzMiogU2lnbmF0dXJlOw0KPiArICAvLy8gTGVuZ3RoIG9mIHRoZSBB Q1BJIHRhYmxlDQo+ICsgIFVJTlQzMiogTGVuZ3RoOw0KPiArICAvLy8gUmV2aXNpb24NCj4gKyAg VUlOVDgqICBSZXZpc2lvbjsNCj4gKyAgLy8vIENoZWNrc3VtDQo+ICsgIFVJTlQ4KiAgQ2hlY2tz dW07DQo+ICsgIC8vLyBPRU0gSWQgLSBsZW5ndGggaXMgNiBieXRlcw0KPiArICBVSU5UOCogIE9l bUlkOw0KPiArICAvLy8gT0VNIHRhYmxlIElkDQo+ICsgIFVJTlQ2NCogT2VtVGFibGVJZDsNCj4g KyAgLy8vIE9FTSByZXZpc2lvbiBJZA0KPiArICBVSU5UMzIqIE9lbVJldmlzaW9uOw0KPiArICAv Ly8gQ3JlYXRvciBJZA0KPiArICBVSU5UMzIqIENyZWF0b3JJZDsNCj4gKyAgLy8vIENyZWF0b3Ig cmV2aXNpb24NCj4gKyAgVUlOVDMyKiBDcmVhdG9yUmV2aXNpb247DQo+ICt9IEFDUElfREVTQ1JJ UFRJT05fSEVBREVSX0lORk87DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8g cGFyc2UgYW4gQUNQSSB0YWJsZSBidWZmZXIuDQo+ICsNCj4gKyAgVGhlIEFDUEkgdGFibGUgYnVm ZmVyIGlzIHBhcnNlZCB1c2luZyB0aGUgQUNQSSB0YWJsZSBwYXJzZXIgaW5mb3JtYXRpb24NCj4g KyAgc3BlY2lmaWVkIGJ5IGEgcG9pbnRlciB0byBhbiBhcnJheSBvZiBBQ1BJX1BBUlNFUiBlbGVt ZW50cy4gVGhpcyBwYXJzZXINCj4gKyAgZnVuY3Rpb24gaXRlcmF0ZXMgdGhyb3VnaCBlYWNoIGl0 ZW0gb24gdGhlIEFDUElfUEFSU0VSIGFycmF5IGFuZCBsb2dzDQo+IHRoZQ0KPiArICBBQ1BJIHRh YmxlIGZpZWxkcy4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGNhbiBvcHRpb25hbGx5IGJlIHVz ZWQgdG8gcGFyc2UgQUNQSSB0YWJsZXMgYW5kIGZldGNoIHNwZWNpZmljDQo+ICsgIGZpZWxkIHZh bHVlcy4gVGhlIEl0ZW1QdHIgbWVtYmVyIG9mIHRoZSBBQ1BJX1BBUlNFUiBzdHJ1Y3R1cmUgKHdo ZXJlDQo+IHVzZWQpDQo+ICsgIGlzIHVwZGF0ZWQgYnkgdGhpcyBwYXJzZXIgZnVuY3Rpb24gdG8g cG9pbnQgdG8gdGhlIHNlbGVjdGVkIGZpZWxkIGRhdGENCj4gKyAgKGUuZy4gdXNlZnVsIGZvciB2 YXJpYWJsZSBsZW5ndGggbmVzdGVkIGZpZWxkcykuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJh Y2UgICAgICAgIFRyYWNlIHRoZSBBQ1BJIGZpZWxkcyBUUlVFIGVsc2Ugb25seSBwYXJzZSB0aGUN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBJ bmRlbnQgICAgICAgTnVtYmVyIG9mIHNwYWNlcyB0byBpbmRlbnQgdGhlIG91dHB1dC4NCj4gKyAg QHBhcmFtIFtpbl0gQXNjaWlOYW1lICAgIE9wdGlvbmFsIHBvaW50ZXIgdG8gYW4gQVNDSUkgc3Ry aW5nIHRoYXQgZGVzY3JpYmVzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdGFi bGUgYmVpbmcgcGFyc2VkLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgUG9pbnRlciB0 byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICAgICAg IExlbmd0aCBvZiB0aGUgYnVmZmVyIHBvaW50ZWQgYnkgUHRyLg0KPiArICBAcGFyYW0gW2luXSBQ YXJzZXIgICAgICAgUG9pbnRlciB0byBhbiBhcnJheSBvZiBBQ1BJX1BBUlNFUiBzdHJ1Y3R1cmUg dGhhdA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIHRoZSB0YWJsZSBi ZWluZyBwYXJzZWQuDQo+ICsgIEBwYXJhbSBbaW5dIFBhcnNlckl0ZW1zICBOdW1iZXIgb2YgaXRl bXMgaW4gdGhlIEFDUElfUEFSU0VSIGFycmF5Lg0KPiArDQo+ICsgIEByZXR2YWwgTnVtYmVyIG9m IGJ5dGVzIHBhcnNlZC4NCj4gKyovDQo+ICtVSU5UMzINCj4gK1BhcnNlQWNwaSAoDQo+ICsgIElO IEJPT0xFQU4gICAgICAgICAgICBUcmFjZSwNCj4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgIElu ZGVudCwNCj4gKyAgSU4gQ09OU1QgQ0hBUjgqICAgICAgIEFzY2lpTmFtZSBPUFRJT05BTCwNCj4g KyAgSU4gVUlOVDgqICAgICAgICAgICAgIFB0ciwNCj4gKyAgSU4gVUlOVDMyICAgICAgICAgICAg IExlbmd0aCwNCj4gKyAgSU4gQ09OU1QgQUNQSV9QQVJTRVIqIFBhcnNlciwNCj4gKyAgSU4gVUlO VDMyICAgICAgICAgICAgIFBhcnNlckl0ZW1zDQo+ICspOw0KPiArDQo+ICsvKiogVGhpcyBpcyBh IGhlbHBlciBtYWNybyB0byBwYXNzIHBhcmFtZXRlcnMgdG8gdGhlIFBhcnNlciBmdW5jdGlvbnMu DQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUGFyc2VyIFRoZSBuYW1lIG9mIHRoZSBBQ1BJX1BBUlNF UiBhcnJheSBkZXNjcmliaW5nIHRoZQ0KPiArICAgICAgICAgICAgICBBQ1BJIHRhYmxlIGZpZWxk cy4NCj4gKyovDQo+ICsjZGVmaW5lIFBBUlNFUl9QQVJBTVMoUGFyc2VyKSBQYXJzZXIsIHNpemVv ZiAoUGFyc2VyKSAvIHNpemVvZiAoUGFyc2VyWzBdKQ0KPiArDQo+ICsvKiogVGhpcyBpcyBhIGhl bHBlciBtYWNybyBmb3IgZGVzY3JpYmluZyB0aGUgQUNQSSBoZWFkZXIgZmllbGRzLg0KPiArDQo+ ICsgIEBwYXJhbSBbb3V0XSBJbmZvICBQb2ludGVyIHRvIHJldHJpZXZlIHRoZSBBQ1BJIHRhYmxl IGhlYWRlciBpbmZvcm1hdGlvbi4NCj4gKyovDQo+ICsjZGVmaW5lIFBBUlNFX0FDUElfSEVBREVS KEluZm8pICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgeyBMIlNpZ25hdHVyZSIsIDQsIDAsIE5V TEwsIER1bXA0Q2hhcnMsICAgICAgICAgXA0KPiArICAgIChWT0lEKiopJihJbmZvKS0+U2lnbmF0 dXJlICwgTlVMTCwgTlVMTCB9LCAgICBcDQo+ICsgIHsgTCJMZW5ndGgiLCA0LCA0LCBMIiVkIiwg TlVMTCwgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAoVk9JRCoqKSYoSW5mbyktPkxlbmd0aCwg TlVMTCwgTlVMTCB9LCAgICAgICAgXA0KPiArICB7IEwiUmV2aXNpb24iLCAxLCA4LCBMIiVkIiwg TlVMTCwgICAgICAgICAgICAgICBcDQo+ICsgICAgKFZPSUQqKikmKEluZm8pLT5SZXZpc2lvbiwg TlVMTCwgTlVMTCB9LCAgICAgIFwNCj4gKyAgeyBMIkNoZWNrc3VtIiwgMSwgOSwgTCIweCVYIiwg TlVMTCwgICAgICAgICAgICAgXA0KPiArICAgIChWT0lEKiopJihJbmZvKS0+Q2hlY2tzdW0sIE5V TEwsIE5VTEwgfSwgICAgICBcDQo+ICsgIHsgTCJPZW0gSUQiLCA2LCAxMCwgTlVMTCwgRHVtcDZD aGFycywgICAgICAgICAgIFwNCj4gKyAgICAoVk9JRCoqKSYoSW5mbyktPk9lbUlkLCBOVUxMLCBO VUxMIH0sICAgICAgICAgXA0KPiArICB7IEwiT2VtIFRhYmxlIElEIiwgOCwgMTYsIE5VTEwsIER1 bXA4Q2hhcnMsICAgICBcDQo+ICsgICAgKFZPSUQqKikmKEluZm8pLT5PZW1UYWJsZUlkLCBOVUxM LCBOVUxMIH0sICAgIFwNCj4gKyAgeyBMIk9lbSBSZXZpc2lvbiIsIDQsIDI0LCBMIjB4JVgiLCBO VUxMLCAgICAgICAgXA0KPiArICAgIChWT0lEKiopJihJbmZvKS0+T2VtUmV2aXNpb24sIE5VTEws IE5VTEwgfSwgICBcDQo+ICsgIHsgTCJDcmVhdG9yIElEIiwgNCwgMjgsIE5VTEwsIER1bXA0Q2hh cnMsICAgICAgIFwNCj4gKyAgICAoVk9JRCoqKSYoSW5mbyktPkNyZWF0b3JJZCwgTlVMTCwgTlVM TCB9LCAgICAgXA0KPiArICB7IEwiQ3JlYXRvciBSZXZpc2lvbiIsIDQsIDMyLCBMIjB4JVgiLCBO VUxMLCAgICBcDQo+ICsgICAgKFZPSUQqKikmKEluZm8pLT5DcmVhdG9yUmV2aXNpb24sIE5VTEws IE5VTEwgfQ0KPiArDQo+ICsvKiogTGVuZ3RoIG9mIHRoZSBBQ1BJIEdBUyBzdHJ1Y3R1cmUuDQo+ ICsNCj4gKyAgTk9URTogVGhpcyBtaWdodCBub3JtYWxseSBiZSBkZWZpbmVkIGFzDQo+ICsgICAg ICAgIHNpemVvZiAoRUZJX0FDUElfNl8yX0dFTkVSSUNfQUREUkVTU19TVFJVQ1RVUkUpLg0KPiAr ICAgICAgICBIb3dldmVyLCB3ZSBkZWxpYmVyYXRlbHkgbWluaW1pc2UgYW55IHJlZmVyZW5jZSB0 byB0aGUgRURLMiBBQ1BJDQo+ICsgICAgICAgIGhlYWRlcnMgaW4gYW4gYXR0ZW1wdCB0byBwcm92 aWRlIGNyb3NzIGNoZWNraW5nLg0KPiArKi8NCj4gKyNkZWZpbmUgR0FTX0xFTkdUSCAgICAgICAg ICAgICAgICAgICAgIDEyDQo+ICsNCj4gKy8qKiBMZW5ndGggb2YgdGhlIEFDUEkgSGVhZGVyIHN0 cnVjdHVyZS4NCj4gKw0KPiArICBOT1RFOiBUaGlzIG1pZ2h0IG5vcm1hbGx5IGJlIGRlZmluZWQg YXMNCj4gKyAgICAgICAgc2l6ZW9mIChFRklfQUNQSV9ERVNDUklQVElPTl9IRUFERVIpLg0KPiAr ICAgICAgICBIb3dldmVyLCB3ZSBkZWxpYmVyYXRlbHkgbWluaW1pc2UgYW55IHJlZmVyZW5jZSB0 byB0aGUgRURLMiBBQ1BJDQo+ICsgICAgICAgIGhlYWRlcnMgaW4gYW4gYXR0ZW1wdCB0byBwcm92 aWRlIGNyb3NzIGNoZWNraW5nLg0KPiArKi8NCj4gKyNkZWZpbmUgQUNQSV9ERVNDUklQVElPTl9I RUFERVJfTEVOR1RIICAzNg0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBpbmRlbnRzIGFuZCB0 cmFjZXMgdGhlIEdBUyBzdHJ1Y3R1cmUgYXMgZGVzY3JpYmVkDQo+ICsgICAgYnkgdGhlIEdhc1Bh cnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0 IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIEluZGVudCAgTnVtYmVyIG9mIHNwYWNl cyB0byBpbmRlbnQgdGhlIG91dHB1dC4NCj4gKyovDQo+ICtWT0lEDQo+ICtEdW1wR2FzU3RydWN0 ICgNCj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgICAgICAgSW5k ZW50DQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyB0aGUgR0FTIHN0 cnVjdHVyZSBhcyBkZXNjcmliZWQgYnkgdGhlIEdhc1BhcnNlci4NCj4gKw0KPiArICBAcGFyYW0g W2luXSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEu DQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1 ZmZlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtEdW1wR2FzICgNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2 KiBGb3JtYXQgT1BUSU9OQUwsDQo+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ICsgICk7DQo+ ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyB0aGUgQUNQSSBoZWFkZXIgYXMgZGVzY3Jp YmVkIGJ5IHRoZQ0KPiBBY3BpSGVhZGVyUGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0 ciAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArDQo+ICsg IEByZXR2YWwgTnVtYmVyIG9mIGJ5dGVzIHBhcnNlZC4NCj4gKyovDQo+ICtVSU5UMzINCj4gK0R1 bXBBY3BpSGVhZGVyICgNCj4gKyAgSU4gVUlOVDgqIFB0cg0KPiArICApOw0KPiArDQo+ICsvKiog VGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgaGVhZGVyIGFzIGRlc2NyaWJlZCBieSB0aGUN Cj4gQWNwaUhlYWRlclBhcnNlci4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIG9wdGlvbmFsbHkg cmV0dXJucyB0aGUgU2lnbmF0dXJlLCBMZW5ndGggYW5kIHJldmlzaW9uIG9mIHRoZQ0KPiArICBB Q1BJIHRhYmxlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBQdHIgICAgICAgIFBvaW50ZXIgdG8g dGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbb3V0XSBTaWduYXR1cmUgIEdl dHMgbG9jYXRpb24gb2YgdGhlIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KPiArICBAcGFyYW0gW291 dF0gTGVuZ3RoICAgICBHZXRzIGxvY2F0aW9uIG9mIHRoZSBsZW5ndGggb2YgdGhlIEFDUEkgdGFi bGUuDQo+ICsgIEBwYXJhbSBbb3V0XSBSZXZpc2lvbiAgIEdldHMgbG9jYXRpb24gb2YgdGhlIHJl dmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgTnVtYmVyIG9mIGJ5 dGVzIHBhcnNlZC4NCj4gKyovDQo+ICtVSU5UMzINCj4gK1BhcnNlQWNwaUhlYWRlciAoDQo+ICsg IElOICBVSU5UOCogICAgICAgICBQdHIsDQo+ICsgIE9VVCBDT05TVCBVSU5UMzIqKiBTaWduYXR1 cmUsDQo+ICsgIE9VVCBDT05TVCBVSU5UMzIqKiBMZW5ndGgsDQo+ICsgIE9VVCBDT05TVCBVSU5U OCoqICBSZXZpc2lvbg0KPiArICApOw0KPiArDQo+ICsjZW5kaWYgLy8gQUNQSVBBUlNFUl9IXw0K PiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvSW5jbHVkZS9MaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJs ZVBhcnNlci5oDQo+IGIvU2hlbGxQa2cvSW5jbHVkZS9MaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJs ZVBhcnNlci5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyM2VjZjQwNzU1Njk0YmQ5NDYzZjE1Yjhi DQo+IDZkOWYyM2ZmYWE1NzU0DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hlbGxQa2cvSW5j bHVkZS9MaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oDQo+IEBAIC0wLDAgKzEsMTI2 IEBADQo+ICsvKioNCj4gKyAgSGVhZGVyIGZpbGUgZm9yIEFDUEkgdGFibGUgcGFyc2VyDQo+ICsN Cj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMg cmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlh bHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMg YW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0KPiBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFu aWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkg YmUNCj4gZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1s aWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRI RSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJB TlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBP UiBJTVBMSUVELg0KPiArKiovDQo+ICsNCj4gKyNpZm5kZWYgQUNQSVRBQkxFUEFSU0VSX0hfDQo+ ICsjZGVmaW5lIEFDUElUQUJMRVBBUlNFUl9IXw0KPiArDQo+ICsvKiogVGhlIG1heGltdW0gbnVt YmVyIG9mIEFDUEkgdGFibGUgcGFyc2Vycy4NCj4gKyovDQo+ICsjZGVmaW5lIE1BWF9BQ1BJX1RB QkxFX1BBUlNFUlMgICAgICAgICAgMTYNCj4gKw0KPiArLyoqIEFuIGludmFsaWQvTlVMTCBzaWdu YXR1cmUgdmFsdWUuDQo+ICsqLw0KPiArI2RlZmluZSBBQ1BJX1BBUlNFUl9TSUdOQVRVUkVfTlVM TCAgICAgIDANCj4gKw0KPiArLyoqIEEgZnVuY3Rpb24gdGhhdCBwYXJzZXMgdGhlIEFDUEkgdGFi bGUuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRy YWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAg IFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIEFj cGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsgIEBwYXJhbSBb aW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyov DQo+ICt0eXBlZGVmDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gKyhFRklBUEkgKiBQQVJTRV9BQ1BJ X1RBQkxFX1BST0MpICgNCj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gKyAgSU4gVUlOVDgqICBQ dHIsDQo+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICBJTiBVSU5UOCAgIEFj cGlUYWJsZVJldmlzaW9uDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGUgQUNQSSB0YWJsZSBwYXJz ZXIgaW5mb3JtYXRpb24NCj4gKyovDQo+ICt0eXBlZGVmIHN0cnVjdCBBY3BpVGFibGVQYXJzZXIg ew0KPiArICAvLy8gQUNQSSB0YWJsZSBzaWduYXR1cmUNCj4gKyAgVUlOVDMyICAgICAgICAgICAg ICAgICAgU2lnbmF0dXJlOw0KPiArDQo+ICsgIC8vLyBUaGUgQUNQSSB0YWJsZSBwYXJzZXIgZnVu Y3Rpb24uDQo+ICsgIFBBUlNFX0FDUElfVEFCTEVfUFJPQyAgIFBhcnNlcjsNCj4gK30gQUNQSV9U QUJMRV9QQVJTRVI7DQo+ICsNCj4gKy8qKiBSZWdpc3RlciB0aGUgQUNQSSB0YWJsZSBQYXJzZXIN Cj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIHJlZ2lzdGVycyB0aGUgQUNQSSB0YWJsZSBwYXJzZXIu DQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gU2lnbmF0dXJlICAgVGhlIEFDUEkgdGFibGUgc2lnbmF0 dXJlLg0KPiArICBAcGFyYW0gW2luXSBQYXJzZXJQcm9jICBUaGUgQUNQSSB0YWJsZSBwYXJzZXIu DQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBy ZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRl ciBpcyBpbnZhbGlkLg0KPiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFy c2VyIGZvciB0aGUgVGFibGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Fz IGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAg Tm8gc3BhY2UgdG8gcmVnaXN0ZXIgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBhcnNlci4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1JlZ2lzdGVy UGFyc2VyICgNCj4gKyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZSwNCj4g KyAgSU4gIFBBUlNFX0FDUElfVEFCTEVfUFJPQyAgIFBhcnNlclByb2MNCj4gKyk7DQo+ICsNCj4g Ky8qKiBEZXJlZ2lzdGVyIHRoZSBBQ1BJIHRhYmxlIFBhcnNlcg0KPiArDQo+ICsgIFRoaXMgZnVu Y3Rpb24gZGVyZWdpc3RlcnMgdGhlIEFDUEkgdGFibGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJh bSBbaW5dIFNpZ25hdHVyZSAgIFRoZSBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4NCj4gKw0KPiArICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIHdhcyBkZXJlZ2lzdGVyZWQu DQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFs aWQuDQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIEEgcmVnaXN0ZXJlZCBwYXJz ZXIgd2FzIG5vdCBmb3VuZC4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0Rl cmVnaXN0ZXJQYXJzZXIgKA0KPiArICBJTiAgVUlOVDMyICAgICAgICAgICAgICAgICAgU2lnbmF0 dXJlDQo+ICspOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlIEFDUEkg dGFibGVzLg0KPiArICBUaGlzIGZ1bmN0aW9uIGNhbGxzIFByb2Nlc3NUYWJsZVJlcG9ydE9wdGlv bnMoKSB0byBsaXN0IHRoZSBBQ1BJDQo+ICsgIHRhYmxlcywgcGVyZm9ybSBiaW5hcnkgZHVtcCBv ZiB0aGUgdGFibGVzIGFuZCBkZXRlcm1pbmUgaWYgdGhlDQo+ICsgIEFDUEkgZmllbGRzIHNob3Vs ZCBiZSB0cmFjZWQuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIGludm9rZXMgdGhlIHBh cnNlciBmb3IgdGhlIEFDUEkgdGFibGVzLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBw ZXJmb3JtcyBhIFJBVyBkdW1wIG9mIHRoZSBBQ1BJIHRhYmxlIGluY2x1ZGluZw0KPiArICB0aGUg dW5rbm93bi91bnBhcnNlZCBBQ1BJIHRhYmxlcyBhbmQgdmFsaWRhdGVzIHRoZSBjaGVja3N1bS4N Cj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUg c3RhcnQgb2YgdGhlIEFDUEkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRh YmxlIGRhdGEgYnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK1Byb2Nlc3NBY3BpVGFibGUgKA0K PiArICBJTiBVSU5UOCogUHRyDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBHZXQgdGhlIEFDUEkgdGFi bGUgUGFyc2VyDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBBQ1BJIHRhYmxl IHBhcnNlciBwcm9jIGZyb20gdGhlIGxpc3Qgb2YNCj4gKyAgcmVnaXN0ZXJlZCBwYXJzZXJzLg0K PiArDQo+ICsgIEBwYXJhbSBbaW5dICBTaWduYXR1cmUgICBUaGUgQUNQSSB0YWJsZSBzaWduYXR1 cmUuDQo+ICsgIEBwYXJhbSBbb3V0XSBQYXJzZXJQcm9jICBQb2ludGVyIHRvIGEgQUNQSSB0YWJs ZSBwYXJzZXIgcHJvYy4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBU aGUgcGFyc2VyIHdhcyByZXR1cm5lZCBzdWNjZXNzZnVsbHkuDQo+ICsgIEByZXR2YWwgRUZJX0lO VkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQuDQo+ICsgIEByZXR2YWwgRUZJ X05PVF9GT1VORCAgICAgICAgIEEgcmVnaXN0ZXJlZCBwYXJzZXIgd2FzIG5vdCBmb3VuZC4NCj4g KyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0dldFBhcnNlciAoDQo+ICsgIElOICBV SU5UMzIgICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlLA0KPiArICBPVVQgUEFSU0VfQUNQSV9U QUJMRV9QUk9DICogIFBhcnNlclByb2MNCj4gKyAgKTsNCj4gKw0KPiArI2VuZGlmIC8vIEFDUElU QUJMRVBBUlNFUl9IXw0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvSW5jbHVkZS9MaWJyYXJ5L0Fj cGlWaWV3L0FjcGlWaWV3LmgNCj4gYi9TaGVsbFBrZy9JbmNsdWRlL0xpYnJhcnkvQWNwaVZpZXcv QWNwaVZpZXcuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTFhMzYxOWNkMThmNmI5ZjgxN2E4NzE0 Zg0KPiBmOGYyNjBlMDNkMDgyZQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0lu Y2x1ZGUvTGlicmFyeS9BY3BpVmlldy9BY3BpVmlldy5oDQo+IEBAIC0wLDAgKzEsNzEgQEANCj4g Ky8qKg0KPiArICBIZWFkZXIgZmlsZSBmb3IgQWNwaVZpZXcNCj4gKw0KPiArICBDb3B5cmlnaHQg KGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAg VGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGlj ZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBv ZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmli dXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0K PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsN Cj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9O IEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNF TlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsq Ki8NCj4gKw0KPiArI2lmbmRlZiBBQ1BJVklFV19IXw0KPiArI2RlZmluZSBBQ1BJVklFV19IXw0K PiArDQo+ICsvKiogQSBtYWNybyB0byBkZWZpbmUgdGhlIG1heCBmaWxlIG5hbWUgbGVuZ3RoDQo+ ICsqLw0KPiArI2RlZmluZSBNQVhfRklMRV9OQU1FX0xFTiAgICAxMjgNCj4gKw0KPiArLyoqIE9m ZnNldCB0byB0aGUgUlNEUCByZXZpc2lvbiBmcm9tIHRoZSBzdGFydCBvZiB0aGUgUlNEUA0KPiAr Ki8NCj4gKyNkZWZpbmUgUlNEUF9SRVZJU0lPTl9PRkZTRVQgMTUNCj4gKw0KPiArLyoqIE9mZnNl dCB0byB0aGUgUlNEUCBsZW5ndGggZnJvbSB0aGUgc3RhcnQgb2YgdGhlIFJTRFANCj4gKyovDQo+ ICsjZGVmaW5lIFJTRFBfTEVOR1RIX09GRlNFVCAgIDIwDQo+ICsNCj4gKy8qKiBUaGUgRVJFUE9S VF9PUFRJT04gZW51bSBkZXNjcmliZXMgQUNQSSB0YWJsZSBSZXBvcnRpbmcgb3B0aW9ucy4NCj4g KyovDQo+ICt0eXBlZGVmIGVudW0gUmVwb3J0T3B0aW9uIHsNCj4gKyAgRVJFUE9SVF9BTEwsICAg ICAgICAgICAgLy8vPCBSZXBvcnQgQWxsIHRhYmxlcy4NCj4gKyAgRVJFUE9SVF9TRUxFQ1RFRCwg ICAgICAgLy8vPCBSZXBvcnQgU2VsZWN0ZWQgdGFibGUuDQo+ICsgIEVSRVBPUlRfVEFCTEVfTElT VCwgICAgIC8vLzwgUmVwb3J0IExpc3Qgb2YgdGFibGVzLg0KPiArICBFUkVQT1JUX0RVTVBfQklO X0ZJTEUsICAvLy88IER1bXAgc2VsZWN0ZWQgdGFibGUgdG8gYSBmaWxlLg0KPiArICBFUkVQT1JU X01BWA0KPiArfSBFUkVQT1JUX09QVElPTjsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcmV0 dXJucyB0aGUgY29sb3VyIGhpZ2hsaWdodGluZyBzdGF0dXMuDQo+ICsNCj4gKyAgQHJldHZhbCBU UlVFIGlmIGNvbG91ciBoaWdobGlnaHRpbmcgaXMgZW5hYmxlZC4NCj4gKyovDQo+ICtCT09MRUFO DQo+ICtHZXRDb2xvdXJIaWdobGlnaHRpbmcgKA0KPiArICBWT0lEDQo+ICsgICk7DQo+ICsNCj4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIGNvbG91ciBoaWdobGlnaHRpbmcgc3RhdHVzLg0K PiArDQo+ICsqLw0KPiArVk9JRA0KPiArU2V0Q29sb3VySGlnaGxpZ2h0aW5nICgNCj4gKyAgQk9P TEVBTiBIaWdobGlnaHQNCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcHJvY2Vz c2VzIHRoZSB0YWJsZSByZXBvcnRpbmcgb3B0aW9ucyBmb3IgdGhlIEFDUEkgdGFibGUuDQo+ICsN Cj4gKyAgQHBhcmFtIFtpbl0gU2lnbmF0dXJlIFRoZSBBQ1BJIHRhYmxlIFNpZ25hdHVyZS4NCj4g KyAgQHBhcmFtIFtpbl0gVGFibGVQdHIgIFBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgZGF0YS4N Cj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICAgIFRoZSBsZW5ndGggZm8gdGhlIEFDUEkgdGFibGUu DQo+ICsNCj4gKyAgQHJldHZhbCBSZXR1cm5zIFRSVUUgaWYgdGhlIEFDUEkgdGFibGUgc2hvdWxk IGJlIHRyYWNlZC4NCj4gKyovDQo+ICtCT09MRUFODQo+ICtQcm9jZXNzVGFibGVSZXBvcnRPcHRp b25zICgNCj4gKyAgSU4gQ09OU1QgVUlOVDMyICBTaWduYXR1cmUsDQo+ICsgIElOIENPTlNUIFVJ TlQ4KiAgVGFibGVQdHIsDQo+ICsgIElOIENPTlNUIFVJTlQzMiAgTGVuZ3RoDQo+ICsgICk7DQo+ ICsNCj4gKyNlbmRpZiAvLyBBQ1BJVklFV19IXw0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVZpZXcuYw0KPiBiL1NoZWxsUGtn L0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlWaWV3LmMNCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMC4uZjg4YjVjNGU1Nzc1MmMwMDkyOTg0ZTE0ZjQNCj4gNTYyZmQyMjdmZjFjMmUN Cj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9BY3BpVmlldy5jDQo+IEBAIC0wLDAgKzEsNjAxIEBADQo+ICsvKioNCj4g Kw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVy aWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJt cyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21w YW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1h eSBiZQ0KPiBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNk LWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIg VEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FS UkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNT IE9SIElNUExJRUQuDQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPExpYnJhcnkvUHJpbnRMaWIu aD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5 L1NoZWxsTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVM aWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gKyNpbmNsdWRl IDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9NZW1vcnlBbGxvY2F0 aW9uTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gKyNpbmNs dWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlWaWV3Lmg+DQo+ICsjaW5jbHVkZSAiVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliLmgiDQo+ICsNCj4gK0VGSV9ISUlfSEFORExFIGdTaGVsbEFjcGlW aWV3SGlpSGFuZGxlID0gTlVMTDsNCj4gKw0KPiArLy8gUmVwb3J0IHZhcmlhYmxlcw0KPiArU1RB VElDIFVJTlQzMiAgICAgICAgICAgICBtU2VsZWN0ZWRBY3BpVGFibGU7DQo+ICtTVEFUSUMgQ09O U1QgQ0hBUjE2KiAgICAgIG1TZWxlY3RlZEFjcGlUYWJsZU5hbWU7DQo+ICtTVEFUSUMgQk9PTEVB TiAgICAgICAgICAgIG1TZWxlY3RlZEFjcGlUYWJsZUZvdW5kOw0KPiArU1RBVElDIEVSRVBPUlRf T1BUSU9OICAgICBtUmVwb3J0VHlwZTsNCj4gK1NUQVRJQyBVSU5UMzIgICAgICAgICAgICAgbVRh YmxlQ291bnQ7DQo+ICtTVEFUSUMgVUlOVDMyICAgICAgICAgICAgIG1CaW5UYWJsZUNvdW50Ow0K PiArU1RBVElDIEJPT0xFQU4gICAgICAgICAgICBtVmVyYm9zZTsNCj4gK1NUQVRJQyBCT09MRUFO ICAgICAgICAgICAgbUNvbnNpc3RlbmN5Q2hlY2s7DQo+ICtTVEFUSUMgQk9PTEVBTiAgICAgICAg ICAgIG1Db2xvdXJIaWdobGlnaHRpbmc7DQo+ICsNCj4gKy8qKiBBbiBhcnJheSBvZiBhY3Bpdmll dyBjb21tYW5kIGxpbmUgcGFyYW1ldGVycy4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgU0hFTExf UEFSQU1fSVRFTSBQYXJhbUxpc3RbXSA9IHsNCj4gKyAge0wiLz8iLCBUeXBlRmxhZ30sDQo+ICsg IHtMIi1jIiwgVHlwZUZsYWd9LA0KPiArICB7TCItZCIsIFR5cGVGbGFnfSwNCj4gKyAge0wiLWgi LCBUeXBlVmFsdWV9LA0KPiArICB7TCItbCIsIFR5cGVGbGFnfSwNCj4gKyAge0wiLXMiLCBUeXBl VmFsdWV9LA0KPiArICB7TCItdiIsIFR5cGVGbGFnfSwNCj4gKyAge05VTEwsIFR5cGVNYXh9DQo+ ICt9Ow0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBjb2xvdXIgaGlnaGxp Z2h0aW5nIHN0YXR1cy4NCj4gKw0KPiArICBAcmV0dmFsIFRSVUUgaWYgY29sb3VyIGhpZ2hsaWdo dGluZyBpcyBlbmFibGVkLg0KPiArKi8NCj4gK0JPT0xFQU4NCj4gK0dldENvbG91ckhpZ2hsaWdo dGluZyAoDQo+ICsgIFZPSUQNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gbUNvbG91ckhpZ2hs aWdodGluZzsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgY29sb3Vy IGhpZ2hsaWdodGluZyBzdGF0dXMuDQo+ICsNCj4gKyovDQo+ICtWT0lEDQo+ICtTZXRDb2xvdXJI aWdobGlnaHRpbmcgKA0KPiArICBCT09MRUFOIEhpZ2hsaWdodA0KPiArICApDQo+ICt7DQo+ICsg IG1Db2xvdXJIaWdobGlnaHRpbmcgPSBIaWdobGlnaHQ7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlz IGZ1bmN0aW9uIHJldHVybnMgdGhlIHJlcG9ydCBvcHRpb25zLg0KPiArDQo+ICsgIEByZXR2YWwg UmV0dXJucyB0aGUgcmVwb3J0IG9wdGlvbi4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK0VSRVBPUlRf T1BUSU9ODQo+ICtHZXRSZXBvcnRPcHRpb24gKA0KPiArICBWT0lEDQo+ICsgICkNCj4gK3sNCj4g KyAgcmV0dXJuIG1SZXBvcnRUeXBlOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBy ZXR1cm5zIHRoZSBzZWxlY3RlZCBBQ1BJIHRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgUmV0dXJu cyBzaWduYXR1cmUgb2YgdGhlIHNlbGVjdGVkIEFDUEkgdGFibGUuDQo+ICsqLw0KPiArU1RBVElD DQo+ICtVSU5UMzINCj4gK0dldFNlbGVjdGVkQWNwaVRhYmxlICgNCj4gKyAgVk9JRA0KPiArICAp DQo+ICt7DQo+ICsgIHJldHVybiBtU2VsZWN0ZWRBY3BpVGFibGU7DQo+ICt9DQo+ICsNCj4gKy8q KiBUaGlzIGZ1bmN0aW9uIGR1bXBzIHRoZSBBQ1BJIHRhYmxlIHRvIGEgZmlsZS4NCj4gKyAgQHBh cmFtIFtpbl0gUHRyICAgICAgIFBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgZGF0YS4NCj4gKyAg QHBhcmFtIFtpbl0gTGVuZ3RoICAgIFRoZSBsZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsN Cj4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIFN1Y2Nlc3MuDQo+ICsgIEByZXR2YWwgRkFMU0Ug ICAgICAgICBGYWlsdXJlLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArQk9PTEVBTg0KPiArRHVtcEFj cGlUYWJsZVRvRmlsZSAoDQo+ICsgIElOIENPTlNUIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBDT05T VCBVSU5UTiAgIExlbmd0aA0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICBT dGF0dXM7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICBGaWxlTmFtZUJ1ZmZlcltNQVhfRklMRV9O QU1FX0xFTl07DQo+ICsgIFNIRUxMX0ZJTEVfSEFORExFICBEdW1wRmlsZUhhbmRsZSA9IE5VTEw7 DQo+ICsgIFVJTlROICAgICAgICAgICAgICBUcmFuc2ZlckJ5dGVzID0gTGVuZ3RoOw0KPiArDQo+ ICsgIFVuaWNvZGVTUHJpbnQgKA0KPiArICAgIEZpbGVOYW1lQnVmZmVyLA0KPiArICAgIHNpemVv ZiAoRmlsZU5hbWVCdWZmZXIpLA0KPiArICAgIEwiLlxcJXMlMDRkLmJpbiIsDQo+ICsgICAgbVNl bGVjdGVkQWNwaVRhYmxlTmFtZSwNCj4gKyAgICBtQmluVGFibGVDb3VudCsrDQo+ICsgICAgKTsN Cj4gKw0KPiArICBTdGF0dXMgPSBTaGVsbE9wZW5GaWxlQnlOYW1lICgNCj4gKyAgICAgICAgICAg ICBGaWxlTmFtZUJ1ZmZlciwNCj4gKyAgICAgICAgICAgICAmRHVtcEZpbGVIYW5kbGUsDQo+ICsg ICAgICAgICAgICAgRUZJX0ZJTEVfTU9ERV9SRUFEIHwgRUZJX0ZJTEVfTU9ERV9XUklURSB8DQo+ IEVGSV9GSUxFX01PREVfQ1JFQVRFLA0KPiArICAgICAgICAgICAgIDANCj4gKyAgICAgICAgICAg ICApOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgU2hlbGxQcmludEhp aUV4ICgNCj4gKyAgICAgIC0xLA0KPiArICAgICAgLTEsDQo+ICsgICAgICBOVUxMLA0KPiArICAg ICAgU1RSSU5HX1RPS0VOIChTVFJfR0VOX1JFQURPTkxZX01FRElBKSwNCj4gKyAgICAgIGdTaGVs bEFjcGlWaWV3SGlpSGFuZGxlLA0KPiArICAgICAgTCJhY3BpdmlldyINCj4gKyAgICAgICk7DQo+ ICsgICAgcmV0dXJuIEZBTFNFOw0KPiArICB9DQo+ICsNCj4gKyAgUHJpbnQgKEwiRHVtcGluZyBB Q1BJIHRhYmxlIHRvIDogJXMgLi4uICIsIEZpbGVOYW1lQnVmZmVyKTsNCj4gKw0KPiArICBTdGF0 dXMgPSBTaGVsbFdyaXRlRmlsZSAoDQo+ICsgICAgICAgICAgICAgRHVtcEZpbGVIYW5kbGUsDQo+ ICsgICAgICAgICAgICAgJlRyYW5zZmVyQnl0ZXMsDQo+ICsgICAgICAgICAgICAgKFZPSUQqKVB0 cg0KPiArICAgICAgICAgICAgICk7DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4g KyAgICBQcmludCAoTCJFUlJPUjogRmFpbGVkIHRvIGR1bXAgdGFibGUgdG8gYmluYXJ5IGZpbGUu XG4iKTsNCj4gKyAgICBUcmFuc2ZlckJ5dGVzID0gMDsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICBQ cmludCAoTCJET05FLlxuIik7DQo+ICsgIH0NCj4gKw0KPiArICBTaGVsbENsb3NlRmlsZSAoJkR1 bXBGaWxlSGFuZGxlKTsNCj4gKyAgcmV0dXJuIChMZW5ndGggPT0gVHJhbnNmZXJCeXRlcyk7DQo+ ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyB0aGUgdGFibGUgcmVwb3J0 aW5nIG9wdGlvbnMgZm9yIHRoZSBBQ1BJIHRhYmxlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFNp Z25hdHVyZSBUaGUgQUNQSSB0YWJsZSBTaWduYXR1cmUuDQo+ICsgIEBwYXJhbSBbaW5dIFRhYmxl UHRyICBQb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIExl bmd0aCAgICBUaGUgbGVuZ3RoIGZvIHRoZSBBQ1BJIHRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwg UmV0dXJucyBUUlVFIGlmIHRoZSBBQ1BJIHRhYmxlIHNob3VsZCBiZSB0cmFjZWQuDQo+ICsqLw0K PiArQk9PTEVBTg0KPiArUHJvY2Vzc1RhYmxlUmVwb3J0T3B0aW9ucyAoDQo+ICsgIElOIENPTlNU IFVJTlQzMiAgU2lnbmF0dXJlLA0KPiArICBJTiBDT05TVCBVSU5UOCogIFRhYmxlUHRyLA0KPiAr ICBJTiBDT05TVCBVSU5UMzIgIExlbmd0aA0KPiArICApDQo+ICt7DQo+ICsgIFVJTlROICAgT3Jp Z2luYWxBdHRyaWJ1dGU7DQo+ICsgIFVJTlQ4KiAgU2lnbmF0dXJlUHRyID0gKFVJTlQ4KikoVUlO VE4pJlNpZ25hdHVyZTsNCj4gKyAgQk9PTEVBTiBMb2cgPSBGQUxTRTsNCj4gKyAgQk9PTEVBTiBI aWdoTGlnaHQgPSBHZXRDb2xvdXJIaWdobGlnaHRpbmcgKCk7DQo+ICsgIHN3aXRjaCAoR2V0UmVw b3J0T3B0aW9uICgpKSB7DQo+ICsgICAgY2FzZSBFUkVQT1JUX0FMTDoNCj4gKyAgICAgIExvZyA9 IFRSVUU7DQo+ICsgICAgICBicmVhazsNCj4gKyAgICBjYXNlIEVSRVBPUlRfU0VMRUNURUQ6DQo+ ICsgICAgICBpZiAoU2lnbmF0dXJlID09IEdldFNlbGVjdGVkQWNwaVRhYmxlICgpKSB7DQo+ICsg ICAgICAgIExvZyA9IFRSVUU7DQo+ICsgICAgICAgIG1TZWxlY3RlZEFjcGlUYWJsZUZvdW5kID0g VFJVRTsNCj4gKyAgICAgIH0NCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIGNhc2UgRVJFUE9SVF9U QUJMRV9MSVNUOg0KPiArICAgICAgaWYgKG1UYWJsZUNvdW50ID09IDApIHsNCj4gKyAgICAgICAg aWYgKEhpZ2hMaWdodCkgew0KPiArICAgICAgICAgIE9yaWdpbmFsQXR0cmlidXRlID0gZ1NULT5D b25PdXQtPk1vZGUtPkF0dHJpYnV0ZTsNCj4gKyAgICAgICAgICBnU1QtPkNvbk91dC0+U2V0QXR0 cmlidXRlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBnU1QtPkNvbk91dCwNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICBFRklfVEVYVF9BVFRSKEVGSV9DWUFOLA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgKChPcmlnaW5hbEF0dHJpYnV0ZSYoQklUNHxCSVQ1fEJJVDYp KT4+NCkpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKyAgICAgICAgfQ0KPiAr ICAgICAgICBQcmludCAoTCJcbkluc3RhbGxlZCBUYWJsZShzKTpcbiIpOw0KPiArICAgICAgICBp ZiAoSGlnaExpZ2h0KSB7DQo+ICsgICAgICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAo Z1NULT5Db25PdXQsIE9yaWdpbmFsQXR0cmlidXRlKTsNCj4gKyAgICAgICAgfQ0KPiArICAgICAg fQ0KPiArICAgICAgUHJpbnQgKA0KPiArICAgICAgICBMIlx0JTRkLiAlYyVjJWMlY1xuIiwNCj4g KyAgICAgICAgKyttVGFibGVDb3VudCwNCj4gKyAgICAgICAgU2lnbmF0dXJlUHRyWzBdLA0KPiAr ICAgICAgICBTaWduYXR1cmVQdHJbMV0sDQo+ICsgICAgICAgIFNpZ25hdHVyZVB0clsyXSwNCj4g KyAgICAgICAgU2lnbmF0dXJlUHRyWzNdDQo+ICsgICAgICAgICk7DQo+ICsgICAgICBicmVhazsN Cj4gKyAgICBjYXNlIEVSRVBPUlRfRFVNUF9CSU5fRklMRToNCj4gKyAgICAgIGlmIChTaWduYXR1 cmUgPT0gR2V0U2VsZWN0ZWRBY3BpVGFibGUgKCkpIHsNCj4gKyAgICAgICAgbVNlbGVjdGVkQWNw aVRhYmxlRm91bmQgPSBUUlVFOw0KPiArICAgICAgICBEdW1wQWNwaVRhYmxlVG9GaWxlIChUYWJs ZVB0ciwgTGVuZ3RoKTsNCj4gKyAgICAgIH0NCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIGNhc2Ug RVJFUE9SVF9NQVg6DQo+ICsgICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgYmUgaGVyZS4NCj4gKyAg ICAgIC8vIFRoaXMgY2FzZSBpcyBvbmx5IHByZXNlbnQgdG8gcHJldmVudCBjb21waWxlciB3YXJu aW5nLg0KPiArICAgICAgYnJlYWs7DQo+ICsgIH0gLy8gc3dpdGNoDQo+ICsNCj4gKyAgaWYgKExv Zykgew0KPiArICAgIGlmIChIaWdoTGlnaHQpIHsNCj4gKyAgICAgIE9yaWdpbmFsQXR0cmlidXRl ID0gZ1NULT5Db25PdXQtPk1vZGUtPkF0dHJpYnV0ZTsNCj4gKyAgICAgIGdTVC0+Q29uT3V0LT5T ZXRBdHRyaWJ1dGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAgZ1NULT5Db25PdXQsDQo+ICsg ICAgICAgICAgICAgICAgICAgICBFRklfVEVYVF9BVFRSKEVGSV9MSUdIVEJMVUUsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICgoT3JpZ2luYWxBdHRyaWJ1dGUmKEJJVDR8QklUNXxCSVQ2KSk+ PjQpKQ0KPiArICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKyAgICB9DQo+ICsgICAgUHJpbnQg KA0KPiArICAgICAgTCJcblxuIC0tLS0tLS0tLS0tLS0tLSAlYyVjJWMlYyBUYWJsZSAtLS0tLS0t LS0tLS0tLS0gXG5cbiIsDQo+ICsgICAgICBTaWduYXR1cmVQdHJbMF0sDQo+ICsgICAgICBTaWdu YXR1cmVQdHJbMV0sDQo+ICsgICAgICBTaWduYXR1cmVQdHJbMl0sDQo+ICsgICAgICBTaWduYXR1 cmVQdHJbM10NCj4gKyAgICAgICk7DQo+ICsgICAgaWYgKEhpZ2hMaWdodCkgew0KPiArICAgICAg Z1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoZ1NULT5Db25PdXQsIE9yaWdpbmFsQXR0cmlidXRl KTsNCj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiArICByZXR1cm4gTG9nOw0KPiArfQ0KPiArDQo+ ICsvKiogVGhpcyBmdW5jdGlvbiBjb252ZXJ0cyBhIHN0cmluZyB0byBBQ1BJIHRhYmxlIHNpZ25h dHVyZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBTdHIgICBQb2ludGVyIHRvIHRoZSBzdHJpbmcg dG8gYmUgY29udmVydGVkIHRvIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICBBQ1BJIHRhYmxl IHNpZ25hdHVyZS4NCj4gKw0KPiArICBAcmV0dmFsIFRoZSBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4N Cj4gKyovDQo+ICtTVEFUSUMNCj4gK1VJTlQzMg0KPiArQ29udmVydFN0clRvQWNwaVNpZ25hdHVy ZSAoDQo+ICsgIElOICBDT05TVCBDSEFSMTYqIFN0cg0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQ4 IEluZGV4ID0gMDsNCj4gKyAgQ0hBUjggUHRyWzRdOw0KPiArDQo+ICsgIC8vIENvbnZlcnQgdG8g VXBwZXIgY2FzZSBhbmQgY29udmVydCB0byBBU0NJSQ0KPiArICB3aGlsZSAoKEluZGV4IDwgNCkg JiYgKFN0cltJbmRleF0gIT0gMCkpIHsNCj4gKyAgICBpZiAoU3RyW0luZGV4XSA+PSBMJ2EnICYm IFN0cltJbmRleF0gPD0gTCd6Jykgew0KPiArICAgICAgUHRyW0luZGV4XSA9IChDSEFSOCkoU3Ry W0luZGV4XSAtIChMJ2EnIC0gTCdBJykpOw0KPiArICAgIH0gZWxzZSB7DQo+ICsgICAgICBQdHJb SW5kZXhdID0gKENIQVI4KVN0cltJbmRleF07DQo+ICsgICAgfQ0KPiArICAgIEluZGV4Kys7DQo+ ICsgIH0NCj4gKyAgcmV0dXJuICooVUlOVDMyKilQdHI7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlz IGZ1bmN0aW9uIGl0ZXJhdGVzIHRoZSBjb25maWd1cmF0aW9uIHRhYmxlIGVudHJpZXMgaW4gdGhl DQo+ICsgICAgc3lzdGVtIHRhYmxlLCByZXRyaWV2ZXMgdGhlIFJTRFAgcG9pbnRlciBhbmQgc3Rh cnRzIHBhcnNpbmcNCj4gKyAgICB0aGUgQUNQSSB0YWJsZXMuDQo+ICsNCj4gKyAgQHBhcmFtIFtp bl0gU3lzdGVtVGFibGUgUG9pbnRlciB0byB0aGUgRUZJIHN5c3RlbSB0YWJsZS4NCj4gKw0KPiAr ICBAcmV0dmFsIFJldHVybnMgRUZJX05PVF9GT1VORCAgIGlmIHRoZSBSU0RQIHBvaW50ZXIgaXMg bm90IGZvdW5kLg0KPiArICAgICAgICAgIFJldHVybnMgRUZJX1VOU1VQUE9SVEVEIGlmIHRoZSBS U0RQIHZlcnNpb24gaXMgbGVzcyB0aGFuIDIuDQo+ICsgICAgICAgICAgUmV0dXJucyBFRklfU1VD Q0VTUyAgICAgaWYgc3VjY2Vzc2Z1bC4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK0VGSV9TVEFUVVMN Cj4gK0VGSUFQSQ0KPiArQWNwaVZpZXcgKA0KPiArICBJTiBFRklfU1lTVEVNX1RBQkxFKiBTeXN0 ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICBTdGF0 dXM7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICBJbmRleDsNCj4gKyAgRUZJX0NPTkZJ R1VSQVRJT05fVEFCTEUqIEVmaUNvbmZpZ3VyYXRpb25UYWJsZTsNCj4gKyAgQk9PTEVBTiAgICAg ICAgICAgICAgICAgIEZvdW5kQWNwaVRhYmxlOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAg ICAgT3JpZ2luYWxBdHRyaWJ1dGU7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICBQcmlu dEF0dHJpYnV0ZTsNCj4gKyAgRVJFUE9SVF9PUFRJT04gICAgICAgICAgIFJlcG9ydE9wdGlvbjsN Cj4gKyAgVUlOVDgqICAgICAgICAgICAgICAgICAgIFJzZHBQdHI7DQo+ICsgIFVJTlQzMiAgICAg ICAgICAgICAgICAgICBSc2RwTGVuZ3RoOw0KPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAg UnNkcFJldmlzaW9uOw0KPiArICBQQVJTRV9BQ1BJX1RBQkxFX1BST0MgICAgUnNkcFBhcnNlclBy b2M7DQo+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICBUcmFjZTsNCj4gKw0KPiArICAvLyBT ZWFyY2ggdGhlIHRhYmxlIGZvciBhbiBlbnRyeSB0aGF0IG1hdGNoZXMgdGhlIEFDUEkgVGFibGUg R3VpZA0KPiArICBGb3VuZEFjcGlUYWJsZSA9IEZBTFNFOw0KPiArICBmb3IgKEluZGV4ID0gMDsg SW5kZXggPCBTeXN0ZW1UYWJsZS0+TnVtYmVyT2ZUYWJsZUVudHJpZXM7IEluZGV4KyspIHsNCj4g KyAgICBpZiAoQ29tcGFyZUd1aWQgKCZnRWZpQWNwaVRhYmxlR3VpZCwNCj4gKyAgICAgICAgICAm KFN5c3RlbVRhYmxlLT5Db25maWd1cmF0aW9uVGFibGVbSW5kZXhdLlZlbmRvckd1aWQpKSkgew0K PiArICAgICAgRWZpQ29uZmlndXJhdGlvblRhYmxlID0gJlN5c3RlbVRhYmxlLT5Db25maWd1cmF0 aW9uVGFibGVbSW5kZXhdOw0KPiArICAgICAgRm91bmRBY3BpVGFibGUgPSBUUlVFOw0KPiArICAg ICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArICB9DQo+ICsNCj4gKyAgaWYgKEZvdW5kQWNwaVRhYmxl KSB7DQo+ICsgICAgUnNkcFB0ciA9IChVSU5UOCopRWZpQ29uZmlndXJhdGlvblRhYmxlLT5WZW5k b3JUYWJsZTsNCj4gKw0KPiArICAgIC8vIFRoZSBSU0RQIHJldmlzaW9uIGlzIDEgYnl0ZSBzdGFy dGluZyBhdCBvZmZzZXQgMTUNCj4gKyAgICBSc2RwUmV2aXNpb24gPSAqKFJzZHBQdHIgKyBSU0RQ X1JFVklTSU9OX09GRlNFVCk7DQo+ICsNCj4gKyAgICBpZiAoUnNkcFJldmlzaW9uIDwgMikgew0K PiArICAgICAgUHJpbnQgKA0KPiArICAgICAgICBMIkVSUk9SOiBSU0RQIHZlcnNpb24gbGVzcyB0 aGFuIDIgaXMgbm90IHN1cHBvcnRlZC5cbiINCj4gKyAgICAgICAgKTsNCj4gKyAgICAgIHJldHVy biBFRklfVU5TVVBQT1JURUQ7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgLy8gVGhlIFJTRFAgbGVu Z3RoIGlzIDQgYnl0ZXMgc3RhcnRpbmcgYXQgb2Zmc2V0IDIwDQo+ICsgICAgUnNkcExlbmd0aCA9 ICooVUlOVDMyKikoUnNkcFB0ciArIFJTRFBfTEVOR1RIX09GRlNFVCk7DQo+ICsNCj4gKyAgICBU cmFjZSA9IFByb2Nlc3NUYWJsZVJlcG9ydE9wdGlvbnMgKFJTRFBfVEFCTEVfSU5GTywgUnNkcFB0 ciwNCj4gUnNkcExlbmd0aCk7DQo+ICsNCj4gKyAgICBTdGF0dXMgPSBHZXRQYXJzZXIgKFJTRFBf VEFCTEVfSU5GTywgJlJzZHBQYXJzZXJQcm9jKTsNCj4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0 dXMpKSB7DQo+ICsgICAgICBQcmludCAoDQo+ICsgICAgICAgIEwiRVJST1I6IE5vIHJlZ2lzdGVy ZWQgcGFyc2VyIGZvdW5kIGZvciBSU0RQLlxuIg0KPiArICAgICAgICApOw0KPiArICAgICAgcmV0 dXJuIFN0YXR1czsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBSc2RwUGFyc2VyUHJvYyAoDQo+ICsg ICAgICBUcmFjZSwNCj4gKyAgICAgIFJzZHBQdHIsDQo+ICsgICAgICBSc2RwTGVuZ3RoLA0KPiAr ICAgICAgUnNkcFJldmlzaW9uDQo+ICsgICAgICApOw0KPiArDQo+ICsgIH0gZWxzZSB7DQo+ICsg ICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICBQcmludCAoDQo+ICsgICAgICBMIkVS Uk9SOiBGYWlsZWQgdG8gZmluZCBBQ1BJIFRhYmxlIEd1aWQgaW4gU3lzdGVtIENvbmZpZ3VyYXRp b24NCj4gVGFibGUuXG4iDQo+ICsgICAgICApOw0KPiArICAgIHJldHVybiBFRklfTk9UX0ZPVU5E Ow0KPiArICB9DQo+ICsNCj4gKyAgUmVwb3J0T3B0aW9uID0gR2V0UmVwb3J0T3B0aW9uICgpOw0K PiArICBpZiAoRVJFUE9SVF9UQUJMRV9MSVNUICE9IFJlcG9ydE9wdGlvbikgew0KPiArICAgIGlm ICgoKEVSRVBPUlRfU0VMRUNURUQgPT0gUmVwb3J0T3B0aW9uKSAgfHwNCj4gKyAgICAgICAgIChF UkVQT1JUX0RVTVBfQklOX0ZJTEUgPT0gUmVwb3J0T3B0aW9uKSkgJiYNCj4gKyAgICAgICAgKCFt U2VsZWN0ZWRBY3BpVGFibGVGb3VuZCkpIHsNCj4gKyAgICAgIFByaW50IChMIlxuUmVxdWVzdGVk IEFDUEkgVGFibGUgbm90IGZvdW5kLlxuIik7DQo+ICsgICAgfSBlbHNlIGlmIChFUkVQT1JUX0RV TVBfQklOX0ZJTEUgIT0gUmVwb3J0T3B0aW9uKSB7DQo+ICsgICAgICBPcmlnaW5hbEF0dHJpYnV0 ZSA9IGdTVC0+Q29uT3V0LT5Nb2RlLT5BdHRyaWJ1dGU7DQo+ICsNCj4gKyAgICAgIFByaW50IChM IlxuVGFibGUgU3RhdGlzdGljczpcbiIpOw0KPiArDQo+ICsgICAgICBpZiAoR2V0Q29sb3VySGln aGxpZ2h0aW5nICgpKSB7DQo+ICsgICAgICAgIFByaW50QXR0cmlidXRlID0gKEdldEVycm9yQ291 bnQgKCkgPiAwKSA/DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1RFWFRfQVRU UiAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfUkVELA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKChPcmlnaW5hbEF0dHJpYnV0ZSYoQklUNHxCSVQ1fEJJ VDYpKT4+NCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOg0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE9yaWdpbmFsQXR0cmlidXRlOw0KPiArICAgICAgICBnU1Qt PkNvbk91dC0+U2V0QXR0cmlidXRlIChnU1QtPkNvbk91dCwgUHJpbnRBdHRyaWJ1dGUpOw0KPiAr ICAgICAgfQ0KPiArICAgICAgUHJpbnQgKEwiXHQlZCBFcnJvcihzKVxuIiwgR2V0RXJyb3JDb3Vu dCAoKSk7DQo+ICsNCj4gKyAgICAgIGlmIChHZXRDb2xvdXJIaWdobGlnaHRpbmcgKCkpIHsNCj4g KyAgICAgICAgUHJpbnRBdHRyaWJ1dGUgPSAoR2V0V2FybmluZ0NvdW50ICgpID4gMCkgPw0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9URVhUX0FUVFIgKA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRUZJX1JFRCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgoT3JpZ2luYWxBdHRyaWJ1dGUmKEJJVDR8QklUNXxCSVQ2KSk+PjQpDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICApIDoNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPcmlnaW5hbEF0dHJpYnV0ZTsNCj4gKw0KPiArICAgICAgICBnU1QtPkNvbk91dC0+U2V0 QXR0cmlidXRlIChnU1QtPkNvbk91dCwgUHJpbnRBdHRyaWJ1dGUpOw0KPiArICAgICAgfQ0KPiAr ICAgICAgUHJpbnQgKEwiXHQlZCBXYXJuaW5nKHMpXG4iLCBHZXRXYXJuaW5nQ291bnQgKCkpOw0K PiArDQo+ICsgICAgICBpZiAoR2V0Q29sb3VySGlnaGxpZ2h0aW5nICgpKSB7DQo+ICsgICAgICAg IGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKGdTVC0+Q29uT3V0LCBPcmlnaW5hbEF0dHJpYnV0 ZSk7DQo+ICsgICAgICB9DQo+ICsgICAgfQ0KPiArICB9DQo+ICsgIHJldHVybiBFRklfU1VDQ0VT UzsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIEZ1bmN0aW9uIGZvciAnYWNwaXZpZXcnIGNvbW1h bmQuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBJbWFnZUhhbmRsZSAgSGFuZGxlIHRvIHRoZSBJbWFn ZSAoTlVMTCBpZiBJbnRlcm5hbCkuDQo+ICsgIEBwYXJhbVtpbl0gU3lzdGVtVGFibGUgIFBvaW50 ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZSAoTlVMTCBpZiBJbnRlcm5hbCkuDQo+ICsqLw0KPiArU0hF TExfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1NoZWxsQ29tbWFuZFJ1bkFjcGlWaWV3ICgNCj4gKyAg SU4gRUZJX0hBTkRMRSAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElOIEVGSV9TWVNURU1fVEFC TEUqIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgICAgICAgIFN0 YXR1czsNCj4gKyAgU0hFTExfU1RBVFVTICAgICAgIFNoZWxsU3RhdHVzID0gU0hFTExfU1VDQ0VT UzsNCj4gKyAgTElTVF9FTlRSWSogICAgICAgIFBhY2thZ2UgPSBOVUxMOw0KPiArICBDSEFSMTYq ICAgICAgICAgICAgUHJvYmxlbVBhcmFtOw0KPiArICBDT05TVCBDSEFSMTYqICAgICAgVGVtcDsN Cj4gKyAgQ0hBUjggICAgICAgICAgICAgIENvbG91ck9wdGlvbls4XTsNCj4gKyAgU0hFTExfRklM RV9IQU5ETEUgIFRtcER1bXBGaWxlSGFuZGxlID0gTlVMTDsNCj4gKw0KPiArICAvLyBTZXQgRGVm YXVsdHMNCj4gKyAgbVJlcG9ydFR5cGUgPSBFUkVQT1JUX0FMTDsNCj4gKyAgbVRhYmxlQ291bnQg PSAwOw0KPiArICBtQmluVGFibGVDb3VudCA9IDA7DQo+ICsgIG1TZWxlY3RlZEFjcGlUYWJsZSA9 IDA7DQo+ICsgIG1TZWxlY3RlZEFjcGlUYWJsZU5hbWUgPSBOVUxMOw0KPiArICBtU2VsZWN0ZWRB Y3BpVGFibGVGb3VuZCA9IEZBTFNFOw0KPiArICBtVmVyYm9zZSA9IFRSVUU7DQo+ICsgIG1Db25z aXN0ZW5jeUNoZWNrID0gVFJVRTsNCj4gKw0KPiArICAvLyBSZXNldCBUaGUgZXJyb3Ivd2Fybmlu ZyBjb3VudGVycw0KPiArICBSZXNldEVycm9yQ291bnQgKCk7DQo+ICsgIFJlc2V0V2FybmluZ0Nv dW50ICgpOw0KPiArDQo+ICsgIFN0YXR1cyA9IFNoZWxsQ29tbWFuZExpbmVQYXJzZSAoUGFyYW1M aXN0LCAmUGFja2FnZSwgJlByb2JsZW1QYXJhbSwNCj4gVFJVRSk7DQo+ICsgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gKyAgICBpZiAoU3RhdHVzID09IEVGSV9WT0xVTUVfQ09SUlVQVEVE ICYmIFByb2JsZW1QYXJhbSAhPSBOVUxMKSB7DQo+ICsgICAgICBTaGVsbFByaW50SGlpRXggKA0K PiArICAgICAgICAtMSwNCj4gKyAgICAgICAgLTEsDQo+ICsgICAgICAgIE5VTEwsDQo+ICsgICAg ICAgIFNUUklOR19UT0tFTiAoU1RSX0dFTl9QUk9CTEVNKSwNCj4gKyAgICAgICAgZ1NoZWxsQWNw aVZpZXdIaWlIYW5kbGUsDQo+ICsgICAgICAgIEwiYWNwaXZpZXciLA0KPiArICAgICAgICBQcm9i bGVtUGFyYW0NCj4gKyAgICAgICAgKTsNCj4gKyAgICAgIEZyZWVQb29sIChQcm9ibGVtUGFyYW0p Ow0KPiArICAgIH0gZWxzZSB7DQo+ICsgICAgICBQcmludCAoTCJhY3BpdmlldzogRXJyb3IgcHJv Y2Vzc2luZyBpbnB1dCBwYXJhbWV0ZXIocylcbiIpOw0KPiArICAgIH0NCj4gKyAgICBTaGVsbFN0 YXR1cyA9IFNIRUxMX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICB9IGVsc2Ugew0KPiArICAgIGlm IChTaGVsbENvbW1hbmRMaW5lR2V0Q291bnQgKFBhY2thZ2UpID4gMSkgew0KPiArICAgICAgU2hl bGxQcmludEhpaUV4ICgNCj4gKyAgICAgICAgLTEsDQo+ICsgICAgICAgIC0xLA0KPiArICAgICAg ICBOVUxMLA0KPiArICAgICAgICBTVFJJTkdfVE9LRU4gKFNUUl9HRU5fVE9PX01BTlkpLA0KPiAr ICAgICAgICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCj4gKyAgICAgICAgTCJhY3BpdmlldyIN Cj4gKyAgICAgICAgKTsNCj4gKyAgICAgIFNoZWxsU3RhdHVzID0gU0hFTExfSU5WQUxJRF9QQVJB TUVURVI7DQo+ICsgICAgfSBlbHNlIGlmIChTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFja2Fn ZSwgTCItPyIpKSB7DQo+ICsgICAgICBTaGVsbFByaW50SGlpRXggKA0KPiArICAgICAgICAtMSwN Cj4gKyAgICAgICAgLTEsDQo+ICsgICAgICAgIE5VTEwsDQo+ICsgICAgICAgIFNUUklOR19UT0tF TiAoU1RSX0dFVF9IRUxQX0FDUElWSUVXKSwNCj4gKyAgICAgICAgZ1NoZWxsQWNwaVZpZXdIaWlI YW5kbGUsDQo+ICsgICAgICAgIEwiYWNwaXZpZXciDQo+ICsgICAgICAgICk7DQo+ICsgICAgfSBl bHNlIGlmIChTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFja2FnZSwgTCItcyIpICYmDQo+ICsg ICAgICAgICAgICAgICBTaGVsbENvbW1hbmRMaW5lR2V0VmFsdWUgKFBhY2thZ2UsIEwiLXMiKSA9 PSBOVUxMKSB7DQo+ICsgICAgICBTaGVsbFByaW50SGlpRXggKA0KPiArICAgICAgICAtMSwNCj4g KyAgICAgICAgLTEsDQo+ICsgICAgICAgIE5VTEwsDQo+ICsgICAgICAgIFNUUklOR19UT0tFTiAo U1RSX0dFTl9OT19WQUxVRSksDQo+ICsgICAgICAgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlLA0K PiArICAgICAgICBMImFjcGl2aWV3IiwNCj4gKyAgICAgICAgTCItcyINCj4gKyAgICAgICAgKTsN Cj4gKyAgICAgIFNoZWxsU3RhdHVzID0gU0hFTExfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgICAg fSBlbHNlIGlmICgoU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhY2thZ2UsIEwiLXMiKSAmJg0K PiArICAgICAgICAgICAgICAgIFNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYWNrYWdlLCBMIi1s IikpKSB7DQo+ICsgICAgICBTaGVsbFByaW50SGlpRXggKA0KPiArICAgICAgICAtMSwNCj4gKyAg ICAgICAgLTEsDQo+ICsgICAgICAgIE5VTEwsDQo+ICsgICAgICAgIFNUUklOR19UT0tFTiAoU1RS X0dFTl9UT09fTUFOWSksDQo+ICsgICAgICAgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlLA0KPiAr ICAgICAgICBMImFjcGl2aWV3Ig0KPiArICAgICAgICApOw0KPiArICAgICAgU2hlbGxTdGF0dXMg PSBTSEVMTF9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgICB9IGVsc2UgaWYgKFNoZWxsQ29tbWFu ZExpbmVHZXRGbGFnIChQYWNrYWdlLCBMIi1oIikgJiYNCj4gKyAgICAgICAgICAgICAgIFNoZWxs Q29tbWFuZExpbmVHZXRWYWx1ZSAoUGFja2FnZSwgTCItaCIpID09IE5VTEwpIHsNCj4gKyAgICAg ICAgU2hlbGxQcmludEhpaUV4ICgNCj4gKyAgICAgICAgICAtMSwNCj4gKyAgICAgICAgICAtMSwN Cj4gKyAgICAgICAgICBOVUxMLA0KPiArICAgICAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dFTl9O T19WQUxVRSksDQo+ICsgICAgICAgICAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUsDQo+ICsgICAg ICAgICAgTCJhY3BpdmlldyIsDQo+ICsgICAgICAgICAgTCItaCINCj4gKyAgICAgICAgICApOw0K PiArICAgICAgICBTaGVsbFN0YXR1cyA9IFNIRUxMX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICAg IH0gZWxzZSBpZiAoU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhY2thZ2UsIEwiLWQiKSAmJg0K PiArICAgICAgICAgICAgICAgIVNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYWNrYWdlLCBMIi1z IikpIHsNCj4gKyAgICAgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gKyAgICAgICAgICAtMSwNCj4g KyAgICAgICAgICAtMSwNCj4gKyAgICAgICAgICBOVUxMLA0KPiArICAgICAgICAgIFNUUklOR19U T0tFTiAoU1RSX0dFTl9NSVNTSU5HX09QVElPTiksDQo+ICsgICAgICAgICAgZ1NoZWxsQWNwaVZp ZXdIaWlIYW5kbGUsDQo+ICsgICAgICAgICAgTCJhY3BpdmlldyIsDQo+ICsgICAgICAgICAgTCIt cyIsDQo+ICsgICAgICAgICAgTCItZCINCj4gKyAgICAgICAgICApOw0KPiArICAgICAgICBTaGVs bFN0YXR1cyA9IFNIRUxMX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICAgIH0gZWxzZSB7DQo+ICsg ICAgICAvLyBDaGVjayBpZiB0aGUgY29sb3VyIG9wdGlvbiBpcyBzZXQNCj4gKyAgICAgIFRlbXAg PSBTaGVsbENvbW1hbmRMaW5lR2V0VmFsdWUgKFBhY2thZ2UsIEwiLWgiKTsNCj4gKyAgICAgIGlm IChUZW1wICE9IE5VTEwpIHsNCj4gKyAgICAgICAgVW5pY29kZVN0clRvQXNjaWlTdHJTIChUZW1w LCBDb2xvdXJPcHRpb24sIHNpemVvZiAoQ29sb3VyT3B0aW9uKSk7DQo+ICsgICAgICAgIGlmICgo QXNjaWlTdHJpQ21wIChDb2xvdXJPcHRpb24sICJPTiIpID09IDApIHx8DQo+ICsgICAgICAgICAg ICAoQXNjaWlTdHJpQ21wIChDb2xvdXJPcHRpb24sICJUUlVFIikgPT0gMCkpIHsNCj4gKyAgICAg ICAgICBTZXRDb2xvdXJIaWdobGlnaHRpbmcgKFRSVUUpOw0KPiArICAgICAgICB9IGVsc2UgaWYg KChBc2NpaVN0cmlDbXAgKENvbG91ck9wdGlvbiwgIk9GRiIpID09IDApIHx8DQo+ICsgICAgICAg ICAgICAgICAgICAgKEFzY2lpU3RyaUNtcCAoQ29sb3VyT3B0aW9uLCAiRkFMU0UiKSA9PSAwKSkg ew0KPiArICAgICAgICAgIFNldENvbG91ckhpZ2hsaWdodGluZyAoRkFMU0UpOw0KPiArICAgICAg ICB9DQo+ICsgICAgICB9DQo+ICsNCj4gKyAgICAgIGlmIChTaGVsbENvbW1hbmRMaW5lR2V0Rmxh ZyAoUGFja2FnZSwgTCItbCIpKSB7DQo+ICsgICAgICAgIG1SZXBvcnRUeXBlID0gRVJFUE9SVF9U QUJMRV9MSVNUOw0KPiArICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgbVNlbGVjdGVkQWNwaVRh YmxlTmFtZSA9IFNoZWxsQ29tbWFuZExpbmVHZXRWYWx1ZSAoUGFja2FnZSwgTCItDQo+IHMiKTsN Cj4gKyAgICAgICAgaWYgKG1TZWxlY3RlZEFjcGlUYWJsZU5hbWUgIT0gTlVMTCkgew0KPiArICAg ICAgICAgIG1TZWxlY3RlZEFjcGlUYWJsZSA9IChVSU5UMzIpQ29udmVydFN0clRvQWNwaVNpZ25h dHVyZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TZWxl Y3RlZEFjcGlUYWJsZU5hbWUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKTsNCj4gKyAgICAgICAgICBtUmVwb3J0VHlwZSA9IEVSRVBPUlRfU0VMRUNURUQ7DQo+ ICsNCj4gKyAgICAgICAgICBpZiAoU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhY2thZ2UsIEwi LWQiKSkgIHsNCj4gKyAgICAgICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlIHRvIGNo ZWNrIGlmIHRoZSBtZWRpYSBpcyB3cml0YWJsZS4NCj4gKyAgICAgICAgICAgIENIQVIxNiBGaWxl TmFtZUJ1ZmZlcltNQVhfRklMRV9OQU1FX0xFTl07DQo+ICsgICAgICAgICAgICBtUmVwb3J0VHlw ZSA9IEVSRVBPUlRfRFVNUF9CSU5fRklMRTsNCj4gKw0KPiArICAgICAgICAgICAgVW5pY29kZVNQ cmludCAoDQo+ICsgICAgICAgICAgICAgIEZpbGVOYW1lQnVmZmVyLA0KPiArICAgICAgICAgICAg ICBzaXplb2YgKEZpbGVOYW1lQnVmZmVyKSwNCj4gKyAgICAgICAgICAgICAgTCIuXFwlcyUwNGQu dG1wIiwNCj4gKyAgICAgICAgICAgICAgbVNlbGVjdGVkQWNwaVRhYmxlTmFtZSwNCj4gKyAgICAg ICAgICAgICAgbUJpblRhYmxlQ291bnQNCj4gKyAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICAg ICAgICAgICAgU3RhdHVzID0gU2hlbGxPcGVuRmlsZUJ5TmFtZSAoDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgIEZpbGVOYW1lQnVmZmVyLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAmVG1w RHVtcEZpbGVIYW5kbGUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIEVGSV9GSUxFX01PREVf UkVBRCB8IEVGSV9GSUxFX01PREVfV1JJVEUgfA0KPiArICAgICAgICAgICAgICAgICAgICAgICBF RklfRklMRV9NT0RFX0NSRUFURSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgMA0KPiArICAg ICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgICAgICAgICAgICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+ICsgICAgICAgICAgICAgIFNoZWxsU3RhdHVzID0gU0hFTExfSU5WQUxJ RF9QQVJBTUVURVI7DQo+ICsgICAgICAgICAgICAgIFRtcER1bXBGaWxlSGFuZGxlID0gTlVMTDsN Cj4gKyAgICAgICAgICAgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gKyAgICAgICAgICAgICAgICAt MSwNCj4gKyAgICAgICAgICAgICAgICAtMSwNCj4gKyAgICAgICAgICAgICAgICBOVUxMLA0KPiAr ICAgICAgICAgICAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dFTl9SRUFET05MWV9NRURJQSksDQo+ ICsgICAgICAgICAgICAgICAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUsDQo+ICsgICAgICAgICAg ICAgICAgTCJhY3BpdmlldyINCj4gKyAgICAgICAgICAgICAgICApOw0KPiArICAgICAgICAgICAg ICBnb3RvIERvbmU7DQo+ICsgICAgICAgICAgICB9DQo+ICsgICAgICAgICAgICAvLyBEZWxldGUg VGVtcG9yYXJ5IGZpbGUuDQo+ICsgICAgICAgICAgICBTaGVsbERlbGV0ZUZpbGUgKCZUbXBEdW1w RmlsZUhhbmRsZSk7DQo+ICsgICAgICAgICAgfSAvLyAtZA0KPiArICAgICAgICB9IC8vIC1zDQo+ ICsgICAgICB9DQo+ICsNCj4gKyAgICAgIC8vIFBhcnNlIEFDUEkgVGFibGUgaW5mb3JtYXRpb24N Cj4gKyAgICAgIFN0YXR1cyA9IEFjcGlWaWV3IChTeXN0ZW1UYWJsZSk7DQo+ICsgICAgICBpZiAo RUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgICAgIFNoZWxsU3RhdHVzID0gU0hFTExfTk9U X0ZPVU5EOw0KPiArICAgICAgfQ0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICtEb25lOg0KPiAr ICBpZiAoUGFja2FnZSAhPSBOVUxMKSB7DQo+ICsgICAgU2hlbGxDb21tYW5kTGluZUZyZWVWYXJM aXN0IChQYWNrYWdlKTsNCj4gKyAgfQ0KPiArICByZXR1cm4gU2hlbGxTdGF0dXM7DQo+ICt9DQo+ IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9QYXJzZXJzL0FjcGlQYXJzZXJIZWxwZQ0KPiByL0FjcGlQYXJzZXIuYw0KPiBiL1NoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvQWNwaVBhcnNl ckhlbHBlDQo+IHIvQWNwaVBhcnNlci5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4 DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4YTEyNjBjMDE4 NDcwYzA5ZGU3ZDNkZTYNCj4gOWExODZhYzM4NWI1MWY5DQo+IC0tLSAvZGV2L251bGwNCj4gKysr DQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vy cy9BY3BpUGFyc2VySGVscGUNCj4gci9BY3BpUGFyc2VyLmMNCj4gQEAgLTAsMCArMSw2NDQgQEAN Cj4gKy8qKg0KPiArICBBQ1BJIHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAt IDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dy YW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQg bWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QN Cj4gTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRo ZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsgIGh0dHA6 Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUg UFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElT Ig0KPiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBP RiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyoqLw0KPiArDQo+ ICsjaW5jbHVkZSA8VWVmaS5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiAr I2luY2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ICsjaW5jbHVk ZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9B Y3BpVmlldy9BY3BpVmlldy5oPg0KPiArDQo+ICtTVEFUSUMgVUlOVDMyICAgZ0luZGVudDsNCj4g K1NUQVRJQyBVSU5UMzIgICBtVGFibGVFcnJvckNvdW50Ow0KPiArU1RBVElDIFVJTlQzMiAgIG1U YWJsZVdhcm5pbmdDb3VudDsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcmVzZXRzIHRoZSBB Q1BJIHRhYmxlIGVycm9yIGNvdW50ZXIgdG8gWmVyby4NCj4gKyovDQo+ICtWT0lEDQo+ICtSZXNl dEVycm9yQ291bnQgKA0KPiArICBWT0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgbVRhYmxlRXJyb3JD b3VudCA9IDA7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGluY3JlbWVudHMgdGhl IEFDUEkgdGFibGUgZXJyb3IgY291bnRlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtJbmNyZW1lbnRF cnJvckNvdW50ICgNCj4gKyAgVk9JRA0KPiArICApDQo+ICt7DQo+ICsgIG1UYWJsZUVycm9yQ291 bnQrKzsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgQUNQSSB0 YWJsZSBlcnJvciBjb3VudC4NCj4gKw0KPiArICBAcmV0dmFsIFJldHVybnMgdGhlIGNvdW50IG9m IGVycm9ycyBkZXRlY3RlZCBpbiB0aGUgQUNQSSB0YWJsZXMuDQo+ICsqLw0KPiArVUlOVDMyDQo+ ICtHZXRFcnJvckNvdW50ICgNCj4gKyAgVk9JRA0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBt VGFibGVFcnJvckNvdW50Ow0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiByZXNldHMg dGhlIEFDUEkgdGFibGUgd2FybmluZyBjb3VudGVyIHRvIFplcm8uDQo+ICsqLw0KPiArVk9JRA0K PiArUmVzZXRXYXJuaW5nQ291bnQgKA0KPiArICBWT0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgbVRh YmxlV2FybmluZ0NvdW50ID0gMDsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gaW5j cmVtZW50cyB0aGUgQUNQSSB0YWJsZSB3YXJuaW5nIGNvdW50ZXIuDQo+ICsqLw0KPiArVk9JRA0K PiArSW5jcmVtZW50V2FybmluZ0NvdW50ICgNCj4gKyAgVk9JRA0KPiArICApDQo+ICt7DQo+ICsg IG1UYWJsZVdhcm5pbmdDb3VudCsrOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBy ZXR1cm5zIHRoZSBBQ1BJIHRhYmxlIHdhcm5pbmcgY291bnQuDQo+ICsNCj4gKyAgQHJldHZhbCBS ZXR1cm5zIHRoZSBjb3VudCBvZiB3YXJuaW5nIGRldGVjdGVkIGluIHRoZSBBQ1BJIHRhYmxlcy4N Cj4gKyovDQo+ICtVSU5UMzINCj4gK0dldFdhcm5pbmdDb3VudCAoDQo+ICsgIFZPSUQNCj4gKyAg KQ0KPiArew0KPiArICByZXR1cm4gbVRhYmxlV2FybmluZ0NvdW50Ow0KPiArfQ0KPiArDQo+ICsv KiogVGhpcyBmdW5jdGlvbiB2ZXJpZmllcyB0aGUgQUNQSSB0YWJsZSBjaGVja3N1bS4NCj4gKw0K PiArICBUaGlzIGZ1bmN0aW9uIHZlcmlmaWVzIHRoZSBjaGVja3N1bSBmb3IgdGhlIEFDUEkgdGFi bGUgYW5kIG9wdGlvbmFsbHkNCj4gKyAgcHJpbnRzIHRoZSBzdGF0dXMuDQo+ICsNCj4gKyAgQHBh cmFtIFtpbl0gTG9nICAgICBJZiBUUlVFIGxvZyB0aGUgc3RhdHVzIG9mIHRoZSBjaGVja3N1bS4N Cj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgdGFi bGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBMZW5ndGggIFRoZSBsZW5ndGggb2YgdGhlIGJ1 ZmZlci4NCj4gKw0KPiArICBAcmV0dmFsIFRSVUUgICAgICAgIFRoZSBjaGVja3N1bSBpcyBPSy4N Cj4gKyAgQHJldHZhbCBGQUxTRSAgICAgICBUaGUgY2hlY2tzdW0gZmFpbGVkLg0KPiArKi8NCj4g K0JPT0xFQU4NCj4gK1ZlcmlmeUNoZWNrc3VtICgNCj4gKyAgSU4gQk9PTEVBTiBMb2csDQo+ICsg IElOIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBVSU5UMzIgIExlbmd0aA0KPiArICApDQo+ICt7DQo+ ICsgIFVJTlROIEJ5dGVDb3VudCA9IDA7DQo+ICsgIFVJTlQ4IENoZWNrc3VtID0gMDsNCj4gKyAg VUlOVE4gT3JpZ2luYWxBdHRyaWJ1dGU7DQo+ICsNCj4gKyAgd2hpbGUgKEJ5dGVDb3VudCA8IExl bmd0aCkgew0KPiArICAgIENoZWNrc3VtICs9ICooUHRyKyspOw0KPiArICAgIEJ5dGVDb3VudCsr Ow0KPiArICB9DQo+ICsNCj4gKyAgaWYgKExvZykgew0KPiArICAgIE9yaWdpbmFsQXR0cmlidXRl ID0gZ1NULT5Db25PdXQtPk1vZGUtPkF0dHJpYnV0ZTsNCj4gKyAgICBpZiAoQ2hlY2tzdW0gPT0g MCkgew0KPiArICAgICAgaWYgKEdldENvbG91ckhpZ2hsaWdodGluZyAoKSkgew0KPiArICAgICAg ICBnU1QtPkNvbk91dC0+U2V0QXR0cmlidXRlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg Z1NULT5Db25PdXQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIEVGSV9URVhUX0FUVFIgKEVG SV9HUkVFTiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAoKE9yaWdpbmFsQXR0cmlidXRl JihCSVQ0fEJJVDV8QklUNikpPj40KSkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4g KyAgICAgIH0NCj4gKyAgICAgIFByaW50IChMIlxuXG5UYWJsZSBDaGVja3N1bSA6IE9LXG5cbiIp Ow0KPiArICAgIH0gZWxzZSB7DQo+ICsgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiAr ICAgICAgaWYgKEdldENvbG91ckhpZ2hsaWdodGluZyAoKSkgew0KPiArICAgICAgICBnU1QtPkNv bk91dC0+U2V0QXR0cmlidXRlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZ1NULT5Db25P dXQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIEVGSV9URVhUX0FUVFIgKEVGSV9SRUQsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgKChPcmlnaW5hbEF0dHJpYnV0ZSYoQklUNHxCSVQ1 fEJJVDYpKT4+NCkpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsgICAgICB9DQo+ ICsgICAgICBQcmludCAoTCJcblxuVGFibGUgQ2hlY2tzdW0gOiBGQUlMRUQgKDB4JVgpXG5cbiIs IENoZWNrc3VtKTsNCj4gKyAgICB9DQo+ICsgICAgaWYgKEdldENvbG91ckhpZ2hsaWdodGluZyAo KSkgew0KPiArICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoZ1NULT5Db25PdXQsIE9y aWdpbmFsQXR0cmlidXRlKTsNCj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiArICByZXR1cm4gKENo ZWNrc3VtID09IDApOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyBh IHJhdyBkYXRhIGR1bXAgb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0g UHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgdGFibGUgYnVmZmVyLg0KPiArICBA cGFyYW0gW2luXSBMZW5ndGggIFRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtW T0lEDQo+ICtEdW1wUmF3ICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVUlOVDMyIExl bmd0aA0KPiArICApDQo+ICt7DQo+ICsgIFVJTlROIEJ5dGVDb3VudCA9IDA7DQo+ICsgIFVJTlRO IFBhcnRMaW5lQ2hhcnM7DQo+ICsgIFVJTlROIEFzY2lpQnVmZmVySW5kZXggPSAwOw0KPiArICBD SEFSOCBBc2NpaUJ1ZmZlclsxN107DQo+ICsNCj4gKyAgUHJpbnQgKEwiQWRkcmVzcyAgOiAweCVw XG4iLCBQdHIpOw0KPiArICBQcmludCAoTCJMZW5ndGggICA6ICVkXG4iLCBMZW5ndGgpOw0KPiAr DQo+ICsgIHdoaWxlIChCeXRlQ291bnQgPCBMZW5ndGgpIHsNCj4gKyAgICBpZiAoKEJ5dGVDb3Vu dCAmIDB4MEYpID09IDApIHsNCj4gKyAgICAgIEFzY2lpQnVmZmVyW0FzY2lpQnVmZmVySW5kZXhd ID0gJ1wwJzsNCj4gKyAgICAgIFByaW50IChMIiAgJWFcbiUwOFggOiAiLCBBc2NpaUJ1ZmZlciwg Qnl0ZUNvdW50KTsNCj4gKyAgICAgIEFzY2lpQnVmZmVySW5kZXggPSAwOw0KPiArICAgIH0gZWxz ZSBpZiAoKEJ5dGVDb3VudCAmIDB4MDcpID09IDApIHsNCj4gKyAgICAgIFByaW50IChMIi0gIik7 DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgaWYgKCgqUHRyID49ICcgJykgJiYgKCpQdHIgPCAweDdG KSkgew0KPiArICAgICAgQXNjaWlCdWZmZXJbQXNjaWlCdWZmZXJJbmRleCsrXSA9ICpQdHI7DQo+ ICsgICAgfSBlbHNlIHsNCj4gKyAgICAgIEFzY2lpQnVmZmVyW0FzY2lpQnVmZmVySW5kZXgrK10g PSAnLic7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgUHJpbnQgKEwiJTAyWCAiLCAqUHRyKyspOw0K PiArDQo+ICsgICAgQnl0ZUNvdW50Kys7DQo+ICsgIH0NCj4gKw0KPiArICAvLyBKdXN0aWZ5IHRo ZSBmaW5hbCBsaW5lIHVzaW5nIHNwYWNlcyBiZWZvcmUgcHJpbnRpbmcNCj4gKyAgLy8gdGhlIEFT Q0lJIGRhdGEuDQo+ICsgIFBhcnRMaW5lQ2hhcnMgPSAoTGVuZ3RoICYgMHgwRik7DQo+ICsgIGlm IChQYXJ0TGluZUNoYXJzICE9IDApIHsNCj4gKyAgICBQYXJ0TGluZUNoYXJzID0gNDggLSAoUGFy dExpbmVDaGFycyAqIDMpOw0KPiArICAgIGlmICgoTGVuZ3RoICYgMHgwRikgPD0gOCkgew0KPiAr ICAgICAgUGFydExpbmVDaGFycyArPSAyOw0KPiArICAgIH0NCj4gKyAgICB3aGlsZSAoUGFydExp bmVDaGFycyA+IDApIHsNCj4gKyAgICAgIFByaW50IChMIiAiKTsNCj4gKyAgICAgIFBhcnRMaW5l Q2hhcnMtLTsNCj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiArICAvLyBQcmludCBBU0NJSSBkYXRh IGZvciB0aGUgZmluYWwgbGluZS4NCj4gKyAgQXNjaWlCdWZmZXJbQXNjaWlCdWZmZXJJbmRleF0g PSAnXDAnOw0KPiArICBQcmludCAoTCIgICVhIiwgQXNjaWlCdWZmZXIpOw0KPiArfQ0KPiArDQo+ ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgMSBieXRlIG9mIGRhdGEgYXMgc3BlY2lmaWVkIGlu IHRoZQ0KPiArICAgIGZvcm1hdCBzdHJpbmcuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0 ICBUaGUgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtp bl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4g K1ZPSUQNCj4gK0R1bXBVaW50OCAoDQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0LA0KPiAr ICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICApDQo+ICt7DQo+ICsgIFByaW50IChGb3JtYXQs ICpQdHIpOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgMiBieXRlcyBv ZiBkYXRhIGFzIHNwZWNpZmllZCBpbiB0aGUNCj4gKyAgICBmb3JtYXQgc3RyaW5nLg0KPiArDQo+ ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgVGhlIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhl IGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtEdW1wVWludDE2ICgNCj4gKyAgSU4gQ09O U1QgQ0hBUjE2KiBGb3JtYXQsDQo+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ICsgICkNCj4g K3sNCj4gKyAgUHJpbnQgKEZvcm1hdCwgKihVSU5UMTYqKVB0cik7DQo+ICt9DQo+ICsNCj4gKy8q KiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA0IGJ5dGVzIG9mIGRhdGEgYXMgc3BlY2lmaWVkIGluIHRo ZQ0KPiArICAgIGZvcm1hdCBzdHJpbmcuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBU aGUgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0g UHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZP SUQNCj4gK0R1bXBVaW50MzIgKA0KPiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCwNCj4gKyAg SU4gVUlOVDgqICAgICAgICBQdHINCj4gKyAgKQ0KPiArew0KPiArICBQcmludCAoRm9ybWF0LCAq KFVJTlQzMiopUHRyKTsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDgg Ynl0ZXMgb2YgZGF0YSBhcyBzcGVjaWZpZWQgYnkgdGhlDQo+ICsgICAgZm9ybWF0IHN0cmluZy4N Cj4gKw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIFRoZSBmb3JtYXQgc3RyaW5nIGZvciB0cmFj aW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0 YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRHVtcFVpbnQ2NCAoDQo+ICsg IElOIENPTlNUIENIQVIxNiogRm9ybWF0LA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiAr ICApDQo+ICt7DQo+ICsgIC8vIFNvbWUgZmllbGRzIGFyZSBub3QgYWxpZ25lZCBhbmQgdGhpcyBj YXVzZXMgYWxpZ25tZW50IGZhdWx0cw0KPiArICAvLyBvbiBBUk0gcGxhdGZvcm1zIGlmIHRoZSBj b21waWxlciBnZW5lcmF0ZXMgTERSRCBpbnN0cnVjdGlvbnMuDQo+ICsgIC8vIFBlcmZvcm0gd29y ZCBhY2Nlc3Mgc28gdGhhdCBMRFJEIGluc3RydWN0aW9ucyBhcmUgbm90IGdlbmVyYXRlZC4NCj4g KyAgVUlOVDY0IFZhbCA9ICooVUlOVDMyKikoUHRyICsgc2l6ZW9mIChVSU5UMzIpKTsNCj4gKyAg VmFsIDw8PSAzMjsNCj4gKyAgVmFsIHw9ICooVUlOVDMyKilQdHI7DQo+ICsNCj4gKyAgUHJpbnQg KEZvcm1hdCwgVmFsKTsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDMg Y2hhcmFjdGVycyB3aGljaCBjYW4gYmUgb3B0aW9uYWxseQ0KPiArICAgZm9ybWF0ZWQgdXNpbmcg dGhlIGZvcm1hdCBzdHJpbmcgaWYgc3BlY2lmaWVkLg0KPiArDQo+ICsgIElmIG5vIGZvcm1hdCBz dHJpbmcgaXMgc3BlY2lmaWVkIHRoZSBGb3JtYXQgbXVzdCBiZSBOVUxMLg0KPiArDQo+ICsgIEBw YXJhbSBbaW5dIEZvcm1hdCAgT3B0aW9uYWwgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUg ZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0 aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0R1bXAzQ2hhcnMgKA0KPiArICBJTiBDT05T VCBDSEFSMTYqIEZvcm1hdCBPUFRJT05BTCwNCj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4g KyAgKQ0KPiArew0KPiArICBQcmludCAoDQo+ICsgICAgKEZvcm1hdCAhPSBOVUxMKSA/IEZvcm1h dCA6IEwiJWMlYyVjIiwNCj4gKyAgICBQdHJbMF0sDQo+ICsgICAgUHRyWzFdLA0KPiArICAgIFB0 clsyXQ0KPiArICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA0 IGNoYXJhY3RlcnMgd2hpY2ggY2FuIGJlIG9wdGlvbmFsbHkNCj4gKyAgIGZvcm1hdGVkIHVzaW5n IHRoZSBmb3JtYXQgc3RyaW5nIGlmIHNwZWNpZmllZC4NCj4gKw0KPiArICBJZiBubyBmb3JtYXQg c3RyaW5nIGlzIHNwZWNpZmllZCB0aGUgRm9ybWF0IG11c3QgYmUgTlVMTC4NCj4gKw0KPiArICBA cGFyYW0gW2luXSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhl IGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtEdW1wNENoYXJzICgNCj4gKyAgSU4gQ09O U1QgQ0hBUjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ ICsgICkNCj4gK3sNCj4gKyAgUHJpbnQgKA0KPiArICAgIChGb3JtYXQgIT0gTlVMTCkgPyBGb3Jt YXQgOiBMIiVjJWMlYyVjIiwNCj4gKyAgICBQdHJbMF0sDQo+ICsgICAgUHRyWzFdLA0KPiArICAg IFB0clsyXSwNCj4gKyAgICBQdHJbM10NCj4gKyAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogVGhp cyBmdW5jdGlvbiB0cmFjZXMgNiBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5DQo+ ICsgICBmb3JtYXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVjaWZpZWQuDQo+ICsN Cj4gKyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJl IE5VTEwuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3Ry aW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50 ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRHVtcDZD aGFycyAoDQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFMLA0KPiArICBJTiBV SU5UOCogICAgICAgIFB0cg0KPiArICApDQo+ICt7DQo+ICsgIFByaW50ICgNCj4gKyAgICAoRm9y bWF0ICE9IE5VTEwpID8gRm9ybWF0IDogTCIlYyVjJWMlYyVjJWMiLA0KPiArICAgIFB0clswXSwN Cj4gKyAgICBQdHJbMV0sDQo+ICsgICAgUHRyWzJdLA0KPiArICAgIFB0clszXSwNCj4gKyAgICBQ dHJbNF0sDQo+ICsgICAgUHRyWzVdDQo+ICsgICAgKTsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMg ZnVuY3Rpb24gdHJhY2VzIDggY2hhcmFjdGVycyB3aGljaCBjYW4gYmUgb3B0aW9uYWxseQ0KPiAr ICAgZm9ybWF0ZWQgdXNpbmcgdGhlIGZvcm1hdCBzdHJpbmcgaWYgc3BlY2lmaWVkLg0KPiArDQo+ ICsgIElmIG5vIGZvcm1hdCBzdHJpbmcgaXMgc3BlY2lmaWVkIHRoZSBGb3JtYXQgbXVzdCBiZSBO VUxMLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgT3B0aW9uYWwgZm9ybWF0IHN0cmlu ZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0R1bXA4Q2hh cnMgKA0KPiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCBPUFRJT05BTCwNCj4gKyAgSU4gVUlO VDgqICAgICAgICBQdHINCj4gKyAgKQ0KPiArew0KPiArICBQcmludCAoDQo+ICsgICAgKEZvcm1h dCAhPSBOVUxMKSA/IEZvcm1hdCA6IEwiJWMlYyVjJWMlYyVjJWMlYyIsDQo+ICsgICAgUHRyWzBd LA0KPiArICAgIFB0clsxXSwNCj4gKyAgICBQdHJbMl0sDQo+ICsgICAgUHRyWzNdLA0KPiArICAg IFB0cls0XSwNCj4gKyAgICBQdHJbNV0sDQo+ICsgICAgUHRyWzZdLA0KPiArICAgIFB0cls3XQ0K PiArICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGluZGVudHMgYW5kIHBy aW50cyB0aGUgQUNQSSB0YWJsZSBGaWVsZCBOYW1lLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIElu ZGVudCAgICAgIE51bWJlciBvZiBzcGFjZXMgdG8gYWRkIHRvIHRoZSBnbG9iYWwgdGFibGUgaW5k ZW50Lg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZ2xvYmFsIHRhYmxlIGluZGVu dCBpcyAwIGJ5IGRlZmF1bHQ7IGhvd2V2ZXINCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg dGhpcyB2YWx1ZSBpcyB1cGRhdGVkIG9uIGVudHJ5IHRvIHRoZSBQYXJzZUFjcGkoKQ0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICBieSBhZGRpbmcgdGhlIGluZGVudCB2YWx1ZSBwcm92aWRl ZCB0byBQYXJzZUFjcGkoKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgcmVzdG9y ZWQgYmFjayBvbiBleGl0Lg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVyZWZvcmUg dGhlIHRvdGFsIGluZGVudCBpbiB0aGUgb3V0cHV0IGlzDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgIGRlcGVuZGVudCBvbiBmcm9tIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLg0K PiArICBAcGFyYW0gW2luXSBGaWVsZE5hbWUgICBQb2ludGVyIHRvIHRoZSBGaWVsZCBOYW1lLg0K PiArKi8NCj4gK1ZPSUQNCj4gK1ByaW50RmllbGROYW1lICgNCj4gKyAgSU4gVUlOVDMyICAgICAg ICAgSW5kZW50LA0KPiArICBJTiBDT05TVCBDSEFSMTYqICBGaWVsZE5hbWUNCj4gKykNCj4gK3sN Cj4gKyAgUHJpbnQgKA0KPiArICAgIEwiJSphJS0qcyA6ICIsDQo+ICsgICAgZ0luZGVudCArIElu ZGVudCwNCj4gKyAgICAiIiwNCj4gKyAgICAoT1VUUFVUX0ZJRUxEX0NPTFVNTl9XSURUSCAtIGdJ bmRlbnQgLSBJbmRlbnQpLA0KPiArICAgIEZpZWxkTmFtZQ0KPiArICAgICk7DQo+ICt9DQo+ICsN Cj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcGFyc2UgYW4gQUNQSSB0YWJsZSBidWZm ZXIuDQo+ICsNCj4gKyAgVGhlIEFDUEkgdGFibGUgYnVmZmVyIGlzIHBhcnNlZCB1c2luZyB0aGUg QUNQSSB0YWJsZSBwYXJzZXIgaW5mb3JtYXRpb24NCj4gKyAgc3BlY2lmaWVkIGJ5IGEgcG9pbnRl ciB0byBhbiBhcnJheSBvZiBBQ1BJX1BBUlNFUiBlbGVtZW50cy4gVGhpcyBwYXJzZXINCj4gKyAg ZnVuY3Rpb24gaXRlcmF0ZXMgdGhyb3VnaCBlYWNoIGl0ZW0gb24gdGhlIEFDUElfUEFSU0VSIGFy cmF5IGFuZCBsb2dzDQo+IHRoZQ0KPiArICBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBU aGlzIGZ1bmN0aW9uIGNhbiBvcHRpb25hbGx5IGJlIHVzZWQgdG8gcGFyc2UgQUNQSSB0YWJsZXMg YW5kIGZldGNoIHNwZWNpZmljDQo+ICsgIGZpZWxkIHZhbHVlcy4gVGhlIEl0ZW1QdHIgbWVtYmVy IG9mIHRoZSBBQ1BJX1BBUlNFUiBzdHJ1Y3R1cmUgKHdoZXJlDQo+IHVzZWQpDQo+ICsgIGlzIHVw ZGF0ZWQgYnkgdGhpcyBwYXJzZXIgZnVuY3Rpb24gdG8gcG9pbnQgdG8gdGhlIHNlbGVjdGVkIGZp ZWxkIGRhdGENCj4gKyAgKGUuZy4gdXNlZnVsIGZvciB2YXJpYWJsZSBsZW5ndGggbmVzdGVkIGZp ZWxkcykuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgIFRyYWNlIHRoZSBBQ1BJ IGZpZWxkcyBUUlVFIGVsc2Ugb25seSBwYXJzZSB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBJbmRlbnQgICAgICAgTnVtYmVyIG9mIHNw YWNlcyB0byBpbmRlbnQgdGhlIG91dHB1dC4NCj4gKyAgQHBhcmFtIFtpbl0gQXNjaWlOYW1lICAg IE9wdGlvbmFsIHBvaW50ZXIgdG8gYW4gQVNDSUkgc3RyaW5nIHRoYXQgZGVzY3JpYmVzDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdGFibGUgYmVpbmcgcGFyc2VkLg0KPiArICBA cGFyYW0gW2luXSBQdHIgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZl ci4NCj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICAgICAgIExlbmd0aCBvZiB0aGUgYnVmZmVyIHBv aW50ZWQgYnkgUHRyLg0KPiArICBAcGFyYW0gW2luXSBQYXJzZXIgICAgICAgUG9pbnRlciB0byBh biBhcnJheSBvZiBBQ1BJX1BBUlNFUiBzdHJ1Y3R1cmUgdGhhdA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGVzY3JpYmVzIHRoZSB0YWJsZSBiZWluZyBwYXJzZWQuDQo+ICsgIEBwYXJh bSBbaW5dIFBhcnNlckl0ZW1zICBOdW1iZXIgb2YgaXRlbXMgaW4gdGhlIEFDUElfUEFSU0VSIGFy cmF5Lg0KPiArDQo+ICsgIEByZXR2YWwgTnVtYmVyIG9mIGJ5dGVzIHBhcnNlZC4NCj4gKyovDQo+ ICtVSU5UMzINCj4gK1BhcnNlQWNwaSAoDQo+ICsgIElOIEJPT0xFQU4gICAgICAgICAgICBUcmFj ZSwNCj4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgIEluZGVudCwNCj4gKyAgSU4gQ09OU1QgQ0hB UjgqICAgICAgIEFzY2lpTmFtZSBPUFRJT05BTCwNCj4gKyAgSU4gVUlOVDgqICAgICAgICAgICAg IFB0ciwNCj4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgIExlbmd0aCwNCj4gKyAgSU4gQ09OU1Qg QUNQSV9QQVJTRVIqIFBhcnNlciwNCj4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgIFBhcnNlckl0 ZW1zDQo+ICspDQo+ICt7DQo+ICsgIFVJTlQzMiAgSW5kZXg7DQo+ICsgIFVJTlQzMiAgT2Zmc2V0 ID0gMDsNCj4gKw0KPiArICAvLyBJbmNyZW1lbnQgdGhlIEluZGVudA0KPiArICBnSW5kZW50ICs9 IEluZGVudDsNCj4gKw0KPiArICBpZiAoVHJhY2UgJiYgKEFzY2lpTmFtZSAhPSBOVUxMKSl7DQo+ ICsgICAgQk9PTEVBTiBIaWdoTGlnaHQgPSBHZXRDb2xvdXJIaWdobGlnaHRpbmcgKCk7DQo+ICsg ICAgVUlOVE4gICBPcmlnaW5hbEF0dHJpYnV0ZTsNCj4gKw0KPiArICAgIGlmIChIaWdoTGlnaHQp IHsNCj4gKyAgICAgIE9yaWdpbmFsQXR0cmlidXRlID0gZ1NULT5Db25PdXQtPk1vZGUtPkF0dHJp YnV0ZTsNCj4gKyAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKA0KPiArICAgICAgICAg ICAgICAgICAgICAgZ1NULT5Db25PdXQsDQo+ICsgICAgICAgICAgICAgICAgICAgICBFRklfVEVY VF9BVFRSKEVGSV9ZRUxMT1csDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICgoT3JpZ2luYWxB dHRyaWJ1dGUmKEJJVDR8QklUNXxCSVQ2KSk+PjQpKQ0KPiArICAgICAgICAgICAgICAgICAgICAg KTsNCj4gKyAgICB9DQo+ICsgICAgUHJpbnQgKA0KPiArICAgICAgTCIlKmElLSphIDpcbiIsDQo+ ICsgICAgICBnSW5kZW50LA0KPiArICAgICAgIiIsDQo+ICsgICAgICAoT1VUUFVUX0ZJRUxEX0NP TFVNTl9XSURUSCAtIGdJbmRlbnQpLA0KPiArICAgICAgQXNjaWlOYW1lDQo+ICsgICAgICApOw0K PiArICAgIGlmIChIaWdoTGlnaHQpIHsNCj4gKyAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1 dGUgKGdTVC0+Q29uT3V0LCBPcmlnaW5hbEF0dHJpYnV0ZSk7DQo+ICsgICAgfQ0KPiArICB9DQo+ ICsNCj4gKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgUGFyc2VySXRlbXM7IEluZGV4KyspIHsN Cj4gKyAgICBpZiAoKE9mZnNldCArIFBhcnNlcltJbmRleF0uTGVuZ3RoKSA+IExlbmd0aCkgew0K PiArICAgICAgLy8gV2UgZG9uJ3QgcGFyc2UgcGFzdCB0aGUgZW5kIG9mIHRoZSBtYXggbGVuZ3Ro IHNwZWNpZmllZA0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgaWYgKE9m ZnNldCAhPSBQYXJzZXJbSW5kZXhdLk9mZnNldCkgew0KPiArICAgICAgSW5jcmVtZW50RXJyb3JD b3VudCAoKTsNCj4gKyAgICAgIFByaW50ICgNCj4gKyAgICAgICAgTCJcbkVSUk9SOiAlYTogT2Zm c2V0IE1pc21hdGNoIGZvciAlc1xuIg0KPiArICAgICAgICAgICJDdXJyZW50T2Zmc2V0ID0gJWQg RmllbGRPZmZzZXQgPSAlZFxuIiwNCj4gKyAgICAgICAgQXNjaWlOYW1lLA0KPiArICAgICAgICBQ YXJzZXJbSW5kZXhdLk5hbWVTdHIsDQo+ICsgICAgICAgIE9mZnNldCwNCj4gKyAgICAgICAgUGFy c2VyW0luZGV4XS5PZmZzZXQNCj4gKyAgICAgICAgKTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBp ZiAoVHJhY2UpIHsNCj4gKyAgICAgIC8vIGlmIHRoZXJlIGlzIGEgRm9ybWF0dGVyIGZ1bmN0aW9u IGxldCB0aGUgZnVuY3Rpb24gaGFuZGxlDQo+ICsgICAgICAvLyB0aGUgcHJpbnRpbmcgZWxzZSBp ZiBhIEZvcm1hdCBpcyBzcGVjaWZpZWQgaW4gdGhlIHRhYmxlIHVzZQ0KPiArICAgICAgLy8gdGhl IEZvcm1hdCBmb3IgcHJpbnRpbmcNCj4gKyAgICAgIFByaW50RmllbGROYW1lICgyLCBQYXJzZXJb SW5kZXhdLk5hbWVTdHIpOw0KPiArICAgICAgaWYgKFBhcnNlcltJbmRleF0uUHJpbnRGb3JtYXR0 ZXIgIT0gTlVMTCkgew0KPiArICAgICAgICBQYXJzZXJbSW5kZXhdLlByaW50Rm9ybWF0dGVyIChQ YXJzZXJbSW5kZXhdLkZvcm1hdCwgUHRyKTsNCj4gKyAgICAgIH0gZWxzZSBpZiAoUGFyc2VyW0lu ZGV4XS5Gb3JtYXQgIT0gTlVMTCkgew0KPiArICAgICAgICBzd2l0Y2ggKFBhcnNlcltJbmRleF0u TGVuZ3RoKSB7DQo+ICsgICAgICAgICAgY2FzZSAxOg0KPiArICAgICAgICAgICAgRHVtcFVpbnQ4 IChQYXJzZXJbSW5kZXhdLkZvcm1hdCwgUHRyKTsNCj4gKyAgICAgICAgICAgIGJyZWFrOw0KPiAr ICAgICAgICAgIGNhc2UgMjoNCj4gKyAgICAgICAgICAgIER1bXBVaW50MTYgKFBhcnNlcltJbmRl eF0uRm9ybWF0LCBQdHIpOw0KPiArICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgY2Fz ZSA0Og0KPiArICAgICAgICAgICAgRHVtcFVpbnQzMiAoUGFyc2VyW0luZGV4XS5Gb3JtYXQsIFB0 cik7DQo+ICsgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAgICBjYXNlIDg6DQo+ICsgICAg ICAgICAgICBEdW1wVWludDY0IChQYXJzZXJbSW5kZXhdLkZvcm1hdCwgUHRyKTsNCj4gKyAgICAg ICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgIGRlZmF1bHQ6DQo+ICsgICAgICAgICAgICBQcmlu dCAoDQo+ICsgICAgICAgICAgICAgIEwiXG5FUlJPUjogJWE6IENBTk5PVCBQQVJTRSBUSElTIEZJ RUxELCBGaWVsZCBMZW5ndGggPSAlZFxuIiwNCj4gKyAgICAgICAgICAgICAgQXNjaWlOYW1lLA0K PiArICAgICAgICAgICAgICBQYXJzZXJbSW5kZXhdLkxlbmd0aA0KPiArICAgICAgICAgICAgICAp Ow0KPiArICAgICAgICB9IC8vIHN3aXRjaA0KPiArDQo+ICsgICAgICAgIC8vIFZhbGlkYXRpbmcg b25seSBtYWtlcyBzZW5zZSBpZiB3ZSBhcmUgdHJhY2luZw0KPiArICAgICAgICAvLyB0aGUgcGFy c2VkIHRhYmxlIGVudHJpZXMsIHRvIHJlcG9ydCBieSB0YWJsZSBuYW1lLg0KPiArICAgICAgICBp ZiAoUGFyc2VyW0luZGV4XS5GaWVsZFZhbGlkYXRvciAhPSBOVUxMKSB7DQo+ICsgICAgICAgICAg UGFyc2VyW0luZGV4XS5GaWVsZFZhbGlkYXRvciAoUHRyLCBQYXJzZXJbSW5kZXhdLkNvbnRleHQp Ow0KPiArICAgICAgICB9DQo+ICsgICAgICB9DQo+ICsgICAgICBQcmludCAoTCJcbiIpOw0KPiAr ICAgIH0gLy8gaWYgKFRyYWNlKQ0KPiArDQo+ICsgICAgaWYgKFBhcnNlcltJbmRleF0uSXRlbVB0 ciAhPSBOVUxMKSB7DQo+ICsgICAgICAqUGFyc2VyW0luZGV4XS5JdGVtUHRyID0gKFZPSUQqKVB0 cjsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBQdHIgKz0gUGFyc2VyW0luZGV4XS5MZW5ndGg7DQo+ ICsgICAgT2Zmc2V0ICs9IFBhcnNlcltJbmRleF0uTGVuZ3RoOw0KPiArICB9IC8vIGZvcg0KPiAr DQo+ICsgIC8vIERlY3JlbWVudCB0aGUgSW5kZW50DQo+ICsgIGdJbmRlbnQgLT0gSW5kZW50Ow0K PiArICByZXR1cm4gT2Zmc2V0Ow0KPiArfQ0KPiArDQo+ICsvKiogQW4gYXJyYXkgZGVzY3JpYmlu ZyB0aGUgQUNQSSBHZW5lcmljIEFkZHJlc3MgU3RydWN0dXJlLg0KPiArICBUaGUgR2FzUGFyc2Vy IGFycmF5IGlzIHVzZWQgYnkgdGhlIFBhcnNlQWNwaSBmdW5jdGlvbiB0byBwYXJzZSBhbmQvb3IN Cj4gdHJhY2UNCj4gKyAgdGhlIEdBUyBzdHJ1Y3R1cmUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNU IEFDUElfUEFSU0VSIEdhc1BhcnNlcltdID0gew0KPiArICB7TCJBZGRyZXNzIFNwYWNlIElEIiwg MSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlZ2lzdGVy IEJpdCBXaWR0aCIsIDEsIDEsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiAr ICB7TCJSZWdpc3RlciBCaXQgT2Zmc2V0IiwgMSwgMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ICsgIHtMIkFkZHJlc3MgU2l6ZSIsIDEsIDMsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJBZGRyZXNzIiwgOCwgNCwgTCIweCVseCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBpbmRl bnRzIGFuZCB0cmFjZXMgdGhlIEdBUyBzdHJ1Y3R1cmUgYXMgZGVzY3JpYmVkDQo+ICsgICAgYnkg dGhlIEdhc1BhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8g dGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIEluZGVudCAgTnVtYmVy IG9mIHNwYWNlcyB0byBpbmRlbnQgdGhlIG91dHB1dC4NCj4gKyovDQo+ICtWT0lEDQo+ICtEdW1w R2FzU3RydWN0ICgNCj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHIsDQo+ICsgIElOIFVJTlQzMiAg ICAgICAgSW5kZW50DQo+ICsgICkNCj4gK3sNCj4gKyAgUHJpbnQgKEwiXG4iKTsNCj4gKyAgUGFy c2VBY3BpICgNCj4gKyAgICBUUlVFLA0KPiArICAgIEluZGVudCwNCj4gKyAgICBOVUxMLA0KPiAr ICAgIFB0ciwNCj4gKyAgICBHQVNfTEVOR1RILA0KPiArICAgIFBBUlNFUl9QQVJBTVMgKEdhc1Bh cnNlcikNCj4gKyAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMg dGhlIEdBUyBzdHJ1Y3R1cmUgYXMgZGVzY3JpYmVkIGJ5IHRoZSBHYXNQYXJzZXIuDQo+ICsNCj4g KyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5n IHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0 IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRHVtcEdhcyAoDQo+ICsgIElOIENP TlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFMLA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0K PiArICApDQo+ICt7DQo+ICsgIER1bXBHYXNTdHJ1Y3QgKFB0ciwgMik7DQo+ICt9DQo+ICsNCj4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyB0aGUgQUNQSSBoZWFkZXIgYXMgZGVzY3JpYmVkIGJ5 IHRoZQ0KPiBBY3BpSGVhZGVyUGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAg ICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArDQo+ICsgIEByZXR2 YWwgTnVtYmVyIG9mIGJ5dGVzIHBhcnNlZC4NCj4gKyovDQo+ICtVSU5UMzINCj4gK0R1bXBBY3Bp SGVhZGVyICgNCj4gKyAgSU4gVUlOVDgqIFB0cg0KPiArICApDQo+ICt7DQo+ICsgIEFDUElfREVT Q1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ICsgIEFDUElfUEFSU0VSIEFjcGlI ZWFkZXJQYXJzZXJbXSA9IHsNCj4gKyAgICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlIZHJJbmZv KQ0KPiArICB9Ow0KPiArDQo+ICsgIHJldHVybiBQYXJzZUFjcGkgKA0KPiArICAgICAgICAgICBU UlVFLA0KPiArICAgICAgICAgICAwLA0KPiArICAgICAgICAgICAiQUNQSSBUYWJsZSBIZWFkZXIi LA0KPiArICAgICAgICAgICBQdHIsDQo+ICsgICAgICAgICAgIEFDUElfREVTQ1JJUFRJT05fSEVB REVSX0xFTkdUSCwNCj4gKyAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoQWNwaUhlYWRlclBhcnNl cikNCj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFy c2VzIHRoZSBBQ1BJIGhlYWRlciBhcyBkZXNjcmliZWQgYnkgdGhlDQo+IEFjcGlIZWFkZXJQYXJz ZXIuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBvcHRpb25hbGx5IHJldHVybnMgdGhlIHNpZ25h dHVyZSwgbGVuZ3RoIGFuZCByZXZpc2lvbiBvZiB0aGUNCj4gKyAgQUNQSSB0YWJsZS4NCj4gKw0K PiArICBAcGFyYW0gW2luXSAgUHRyICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUg YnVmZmVyLg0KPiArICBAcGFyYW0gW291dF0gU2lnbmF0dXJlICBHZXRzIGxvY2F0aW9uIG9mIHRo ZSBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4NCj4gKyAgQHBhcmFtIFtvdXRdIExlbmd0aCAgICAgR2V0 cyBsb2NhdGlvbiBvZiB0aGUgbGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0g W291dF0gUmV2aXNpb24gICBHZXRzIGxvY2F0aW9uIG9mIHRoZSByZXZpc2lvbiBvZiB0aGUgQUNQ SSB0YWJsZS4NCj4gKw0KPiArICBAcmV0dmFsIE51bWJlciBvZiBieXRlcyBwYXJzZWQuDQo+ICsq Lw0KPiArVUlOVDMyDQo+ICtQYXJzZUFjcGlIZWFkZXIgKA0KPiArICBJTiAgVUlOVDgqICAgICAg ICAgUHRyLA0KPiArICBPVVQgQ09OU1QgVUlOVDMyKiogU2lnbmF0dXJlLA0KPiArICBPVVQgQ09O U1QgVUlOVDMyKiogTGVuZ3RoLA0KPiArICBPVVQgQ09OU1QgVUlOVDgqKiAgUmV2aXNpb24NCj4g KyAgKQ0KPiArew0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICBCeXRlc1BhcnNl ZDsNCj4gKyAgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyAgQWNwaUhkckluZm87DQo+ICsg IEFDUElfUEFSU0VSIEFjcGlIZWFkZXJQYXJzZXJbXSA9IHsNCj4gKyAgICBQQVJTRV9BQ1BJX0hF QURFUiAoJkFjcGlIZHJJbmZvKQ0KPiArICB9Ow0KPiArDQo+ICsgIEJ5dGVzUGFyc2VkID0gUGFy c2VBY3BpICgNCj4gKyAgICAgICAgICAgICAgICAgIEZBTFNFLA0KPiArICAgICAgICAgICAgICAg ICAgMCwNCj4gKyAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ICsgICAgICAgICAgICAgICAgICBQ dHIsDQo+ICsgICAgICAgICAgICAgICAgICBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9MRU5HVEgs DQo+ICsgICAgICAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChBY3BpSGVhZGVyUGFyc2VyKQ0K PiArICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICAqU2lnbmF0dXJlID0gQWNwaUhkcklu Zm8uU2lnbmF0dXJlOw0KPiArICAqTGVuZ3RoID0gQWNwaUhkckluZm8uTGVuZ3RoOw0KPiArICAq UmV2aXNpb24gPSBBY3BpSGRySW5mby5SZXZpc2lvbjsNCj4gKw0KPiArICByZXR1cm4gQnl0ZXNQ YXJzZWQ7DQo+ICt9DQo+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0FjcGlQYXJzZXJIZWxwZQ0KPiByL0FjcGlQYXJz ZXJIZWxwZXJMaWIuaW5mDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvUGFyc2Vycy9BY3BpUGFyc2VySGVscGUNCj4gci9BY3BpUGFyc2VySGVscGVyTGli LmluZg0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTViNTk1YmMyMmIwZWJiNDFjNmY4NTBhDQo+IDcz MmE5MjcwMzlkODVhZQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJh cnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvQWNwaVBhcnNlckhlbHBlDQo+ IHIvQWNwaVBhcnNlckhlbHBlckxpYi5pbmYNCj4gQEAgLTAsMCArMSwzMiBAQA0KPiArIyMgQGZp bGUNCj4gKyMNCj4gKyMgIENvcHlyaWdodCAoYykgMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdo dHMgcmVzZXJ2ZWQuDQo+ICsjDQo+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlp bmcgbWF0ZXJpYWxzDQo+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVy IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gKyMgIHdo aWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUg bGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9s aWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKyMNCj4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RS SUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiAr IyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlU SEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyMjDQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiAr ICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4gKyAgQkFTRV9OQU1FICAgICAgPSBBY3Bp UGFyc2VySGVscGVyTGliDQo+ICsgIEZJTEVfR1VJRCAgICAgID0gQTFEMDBGRTItRTg1Mi00MkJF LTgzOUQtMUE2MzBCRTBGRUJDDQo+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4wDQo+ICsgIE1PRFVM RV9UWVBFICAgID0gQkFTRQ0KPiArICBMSUJSQVJZX0NMQVNTICA9IEFjcGlQYXJzZXJMaWINCj4g Kw0KPiArW1NvdXJjZXNdDQo+ICsgIEFjcGlQYXJzZXIuYw0KPiArICBBY3BpVGFibGVQYXJzZXIu Yw0KPiArDQo+ICtbUGFja2FnZXNdDQo+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ICsgIFNoZWxs UGtnL1NoZWxsUGtnLmRlYw0KPiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiAr DQo+ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsgIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0K PiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvUGFyc2Vycy9BY3BpUGFyc2VySGVscGUNCj4gci9BY3BpVGFibGVQYXJzZXIuYw0KPiBi L1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvQWNw aVBhcnNlckhlbHBlDQo+IHIvQWNwaVRhYmxlUGFyc2VyLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u M2U4NDY3NmIyNDNjNjZhY2NmNzNjN2RmMzMNCj4gYmYzZmRkYjQ5OGM4OTUNCj4gLS0tIC9kZXYv bnVsbA0KPiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9QYXJzZXJzL0FjcGlQYXJzZXJIZWxwZQ0KPiByL0FjcGlUYWJsZVBhcnNlci5jDQo+IEBA IC0wLDAgKzEsMjE0IEBADQo+ICsvKioNCj4gKyAgQUNQSSB0YWJsZSBwYXJzZXINCj4gKw0KPiAr ICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNl cnZlZC4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0K PiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQg Y29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMg dGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0K PiBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vu c2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJT RCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElF UyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElN UExJRUQuDQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPFVlZmkuaD4NCj4gKyNpbmNsdWRlIDxJ bmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4N Cj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gKyNpbmNsdWRl IDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oPg0KPiArI2luY2x1ZGUgPExpYnJh cnkvQWNwaVZpZXcvQWNwaVZpZXcuaD4NCj4gKw0KPiArLyoqIEEgbGlzdCBvZiByZWdpc3RlcmVk IEFDUEkgdGFibGUgcGFyc2Vycy4NCj4gKyovDQo+ICtTVEFUSUMgQUNQSV9UQUJMRV9QQVJTRVIN Cj4gbVRhYmxlUGFyc2VyTGlzdFtNQVhfQUNQSV9UQUJMRV9QQVJTRVJTXTsNCj4gKw0KPiArLyoq IFJlZ2lzdGVyIHRoZSBBQ1BJIHRhYmxlIFBhcnNlcg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24g cmVnaXN0ZXJzIHRoZSBBQ1BJIHRhYmxlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBT aWduYXR1cmUgICBUaGUgQUNQSSB0YWJsZSBzaWduYXR1cmUuDQo+ICsgIEBwYXJhbSBbaW5dIFBh cnNlclByb2MgIFRoZSBBQ1BJIHRhYmxlIHBhcnNlci4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwg RUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQuDQo+ICsgIEByZXR2 YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBUYWJsZQ0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KPiAr ICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0KPiArKi8NCj4gK0VG SV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArUmVnaXN0ZXJQYXJzZXIgKA0KPiArICBJTiAgVUlOVDMy ICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlLA0KPiArICBJTiAgUEFSU0VfQUNQSV9UQUJMRV9Q Uk9DICAgUGFyc2VyUHJvYw0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQzMiBpbmRleDsNCj4gKw0K PiArICBpZiAoKFBhcnNlclByb2MgPT0gTlVMTCkgfHwgKFNpZ25hdHVyZSA9PQ0KPiBBQ1BJX1BB UlNFUl9TSUdOQVRVUkVfTlVMTCkpIHsNCj4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1F VEVSOw0KPiArICB9DQo+ICsNCj4gKyAgLy8gU2VhcmNoIGlmIGEgcGFyc2VyIGlzIGFscmVhZHkg aW5zdGFsbGVkDQo+ICsgIGZvciAoaW5kZXggPSAwOw0KPiArICAgICAgIGluZGV4IDwgKHNpemVv ZiAobVRhYmxlUGFyc2VyTGlzdCkgLyBzaXplb2YgKG1UYWJsZVBhcnNlckxpc3RbMF0pKTsNCj4g KyAgICAgICBpbmRleCsrKQ0KPiArICB7DQo+ICsgICAgaWYgKFNpZ25hdHVyZSA9PSBtVGFibGVQ YXJzZXJMaXN0W2luZGV4XS5TaWduYXR1cmUpIHsNCj4gKyAgICAgIGlmIChtVGFibGVQYXJzZXJM aXN0W2luZGV4XS5QYXJzZXIgIT0gTlVMTCkgew0KPiArICAgICAgICByZXR1cm4gRUZJX0FMUkVB RFlfU1RBUlRFRDsNCj4gKyAgICAgIH0NCj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiArICAvLyBG aW5kIHRoZSBmaXJzdCBmcmVlIHNsb3QgYW5kIHJlZ2lzdGVyIHRoZSBwYXJzZXINCj4gKyAgZm9y IChpbmRleCA9IDA7DQo+ICsgICAgICBpbmRleCA8IChzaXplb2YgKG1UYWJsZVBhcnNlckxpc3Qp IC8gc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0WzBdKSk7DQo+ICsgICAgICBpbmRleCsrKQ0KPiAr ICB7DQo+ICsgICAgaWYgKG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlNpZ25hdHVyZSA9PQ0KPiBB Q1BJX1BBUlNFUl9TSUdOQVRVUkVfTlVMTCkgew0KPiArICAgICAgbVRhYmxlUGFyc2VyTGlzdFtp bmRleF0uU2lnbmF0dXJlID0gU2lnbmF0dXJlOw0KPiArICAgICAgbVRhYmxlUGFyc2VyTGlzdFtp bmRleF0uUGFyc2VyID0gUGFyc2VyUHJvYzsNCj4gKyAgICAgIHJldHVybiBFRklfU1VDQ0VTUzsN Cj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiArICAvLyBObyBmcmVlIHNsb3QgZm91bmQNCj4gKyAg cmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiArfQ0KPiArDQo+ICsvKiogRGVyZWdpc3Rl ciB0aGUgQUNQSSB0YWJsZSBQYXJzZXINCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGRlcmVnaXN0 ZXJzIHRoZSBBQ1BJIHRhYmxlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBTaWduYXR1 cmUgICBUaGUgQUNQSSB0YWJsZSBzaWduYXR1cmUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgICAgICAgVGhlIHBhcnNlciB3YXMgZGVyZWdpc3RlcmVkLg0KPiArICBAcmV0dmFs IEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkLg0KPiArICBAcmV0 dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBBIHJlZ2lzdGVyZWQgcGFyc2VyIHdhcyBub3QgZm91 bmQuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtEZXJlZ2lzdGVyUGFyc2Vy ICgNCj4gKyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZQ0KPiArICApDQo+ ICt7DQo+ICsgIFVJTlQzMiBpbmRleDsNCj4gKw0KPiArICBpZiAoU2lnbmF0dXJlID09IEFDUElf UEFSU0VSX1NJR05BVFVSRV9OVUxMKSB7DQo+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFN RVRFUjsNCj4gKyAgfQ0KPiArDQo+ICsgIGZvciAoaW5kZXggPSAwOw0KPiArICAgICAgIGluZGV4 IDwgKHNpemVvZiAobVRhYmxlUGFyc2VyTGlzdCkgLyBzaXplb2YgKG1UYWJsZVBhcnNlckxpc3Rb MF0pKTsNCj4gKyAgICAgICBpbmRleCsrKQ0KPiArICB7DQo+ICsgICAgaWYgKFNpZ25hdHVyZSA9 PSBtVGFibGVQYXJzZXJMaXN0W2luZGV4XS5TaWduYXR1cmUpIHsNCj4gKyAgICAgIG1UYWJsZVBh cnNlckxpc3RbaW5kZXhdLlNpZ25hdHVyZSA9IEFDUElfUEFSU0VSX1NJR05BVFVSRV9OVUxMOw0K PiArICAgICAgbVRhYmxlUGFyc2VyTGlzdFtpbmRleF0uUGFyc2VyID0gTlVMTDsNCj4gKyAgICAg IHJldHVybiBFRklfU1VDQ0VTUzsNCj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiArICAvLyBObyBt YXRjaGluZyByZWdpc3RlcmVkIHBhcnNlciBmb3VuZC4NCj4gKyAgcmV0dXJuIEVGSV9OT1RfRk9V TkQ7DQo+ICt9DQo+ICsNCj4gKy8qKiBHZXQgdGhlIEFDUEkgdGFibGUgUGFyc2VyDQo+ICsNCj4g KyAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBBQ1BJIHRhYmxlIHBhcnNlciBwcm9jIGZyb20g dGhlIGxpc3Qgb2YNCj4gKyAgcmVnaXN0ZXJlZCBwYXJzZXJzLg0KPiArDQo+ICsgIEBwYXJhbSBb aW5dICBTaWduYXR1cmUgICBUaGUgQUNQSSB0YWJsZSBzaWduYXR1cmUuDQo+ICsgIEBwYXJhbSBb b3V0XSBQYXJzZXJQcm9jICBQb2ludGVyIHRvIGEgQUNQSSB0YWJsZSBwYXJzZXIgcHJvYy4NCj4g Kw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIHdhcyByZXR1 cm5lZCBzdWNjZXNzZnVsbHkuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEg cGFyYW1ldGVyIGlzIGludmFsaWQuDQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAg IEEgcmVnaXN0ZXJlZCBwYXJzZXIgd2FzIG5vdCBmb3VuZC4NCj4gKyovDQo+ICtFRklfU1RBVFVT DQo+ICtFRklBUEkNCj4gK0dldFBhcnNlciAoDQo+ICsgIElOICBVSU5UMzIgICAgICAgICAgICAg ICAgICAgU2lnbmF0dXJlLA0KPiArICBPVVQgUEFSU0VfQUNQSV9UQUJMRV9QUk9DICogIFBhcnNl clByb2MNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UMzIgaW5kZXg7DQo+ICsNCj4gKyAgaWYgKChQ YXJzZXJQcm9jID09IE5VTEwpIHx8IChTaWduYXR1cmUgPT0NCj4gQUNQSV9QQVJTRVJfU0lHTkFU VVJFX05VTEwpKSB7DQo+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAg fQ0KPiArDQo+ICsgIGZvciAoaW5kZXggPSAwOw0KPiArICAgICAgIGluZGV4IDwgKHNpemVvZiAo bVRhYmxlUGFyc2VyTGlzdCkgLyBzaXplb2YgKG1UYWJsZVBhcnNlckxpc3RbMF0pKTsNCj4gKyAg ICAgICBpbmRleCsrKQ0KPiArICB7DQo+ICsgICAgaWYgKFNpZ25hdHVyZSA9PSBtVGFibGVQYXJz ZXJMaXN0W2luZGV4XS5TaWduYXR1cmUpIHsNCj4gKyAgICAgICpQYXJzZXJQcm9jID0gbVRhYmxl UGFyc2VyTGlzdFtpbmRleF0uUGFyc2VyOw0KPiArICAgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0K PiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgIC8vIE5vIG1hdGNoaW5nIHJlZ2lzdGVyZWQgcGFy c2VyIGZvdW5kLg0KPiArICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4gK30NCj4gKw0KPiArLyoq IFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSBBQ1BJIHRhYmxlcy4NCj4gKyAgVGhpcyBmdW5j dGlvbiBjYWxscyBQcm9jZXNzVGFibGVSZXBvcnRPcHRpb25zKCkgdG8gbGlzdCB0aGUgQUNQSQ0K PiArICB0YWJsZXMsIHBlcmZvcm0gYmluYXJ5IGR1bXAgb2YgdGhlIHRhYmxlcyBhbmQgZGV0ZXJt aW5lIGlmIHRoZQ0KPiArICBBQ1BJIGZpZWxkcyBzaG91bGQgYmUgdHJhY2VkLg0KPiArDQo+ICsg IFRoaXMgZnVuY3Rpb24gYWxzbyBpbnZva2VzIHRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIHRhYmxl cy4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgYSBSQVcgZHVtcCBvZiB0 aGUgQUNQSSB0YWJsZSBpbmNsdWRpbmcNCj4gKyAgdGhlIHVua25vd24vdW5wYXJzZWQgQUNQSSB0 YWJsZXMgYW5kIHZhbGlkYXRlcyB0aGUgY2hlY2tzdW0uDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0g UHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBBQ1BJDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZSBkYXRhIGJ1ZmZlci4NCj4gKyov DQo+ICtWT0lEDQo+ICtQcm9jZXNzQWNwaVRhYmxlICgNCj4gKyAgSU4gVUlOVDgqIFB0cg0KPiAr ICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICAgU3RhdHVzOw0KPiArICBCT09MRUFOICAgICAg IFRyYWNlOw0KPiArICBDT05TVCBVSU5UMzIqIEFjcGlUYWJsZVNpZ25hdHVyZTsNCj4gKyAgQ09O U1QgVUlOVDMyKiBBY3BpVGFibGVMZW5ndGg7DQo+ICsgIENPTlNUIFVJTlQ4KiAgQWNwaVRhYmxl UmV2aXNpb247DQo+ICsgIFBBUlNFX0FDUElfVEFCTEVfUFJPQyBQYXJzZXJQcm9jOw0KPiArDQo+ ICsgIFBhcnNlQWNwaUhlYWRlciAoDQo+ICsgICAgUHRyLA0KPiArICAgICZBY3BpVGFibGVTaWdu YXR1cmUsDQo+ICsgICAgJkFjcGlUYWJsZUxlbmd0aCwNCj4gKyAgICAmQWNwaVRhYmxlUmV2aXNp b24NCj4gKyAgICApOw0KPiArDQo+ICsgIFRyYWNlID0gUHJvY2Vzc1RhYmxlUmVwb3J0T3B0aW9u cyAoDQo+ICsgICAgICAgICAgICAqQWNwaVRhYmxlU2lnbmF0dXJlLA0KPiArICAgICAgICAgICAg UHRyLA0KPiArICAgICAgICAgICAgKkFjcGlUYWJsZUxlbmd0aA0KPiArICAgICAgICAgICAgKTsN Cj4gKw0KPiArICBpZiAoVHJhY2UpIHsNCj4gKyAgICBEdW1wUmF3IChQdHIsICpBY3BpVGFibGVM ZW5ndGgpOw0KPiArICAgIFZlcmlmeUNoZWNrc3VtIChUUlVFLCBQdHIsICpBY3BpVGFibGVMZW5n dGgpOw0KPiArICB9DQo+ICsNCj4gKyAgU3RhdHVzID0gR2V0UGFyc2VyICgqQWNwaVRhYmxlU2ln bmF0dXJlLCAmUGFyc2VyUHJvYyk7DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4g KyAgICAvLyBObyByZWdpc3RlcmVkIHBhcnNlciBmb3VuZCwgZG8gZGVmYXVsdCBoYW5kbGluZy4N Cj4gKyAgICBpZiAoVHJhY2UpIHsNCj4gKyAgICAgIER1bXBBY3BpSGVhZGVyIChQdHIpOw0KPiAr ICAgIH0NCj4gKyAgICByZXR1cm47DQo+ICsgIH0NCj4gKw0KPiArICBQYXJzZXJQcm9jICgNCj4g KyAgICBUcmFjZSwNCj4gKyAgICBQdHIsDQo+ICsgICAgKkFjcGlUYWJsZUxlbmd0aCwNCj4gKyAg ICAqQWNwaVRhYmxlUmV2aXNpb24NCj4gKyAgICApOw0KPiArfQ0KPiBkaWZmIC0tZ2l0DQo+IGEv U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9CZ3J0 L0JncnRQYXJzZXIuDQo+IGMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9QYXJzZXJzL0JncnQvQmdydFBhcnNlci4NCj4gYw0KPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwLi5jNjZlODIwYmE3ODhhMGZiNzgxMDYxZGJhDQo+IGQxZjU3ZjkwYWNlZjc4Yw0KPiAtLS0g L2Rldi9udWxsDQo+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliL1BhcnNlcnMvQmdydC9CZ3J0UGFyc2VyLg0KPiBjDQo+IEBAIC0wLDAgKzEsMTE3 IEBADQo+ICsvKioNCj4gKyAgQkdSVCB0YWJsZSBwYXJzZXINCj4gKw0KPiArICBDb3B5cmlnaHQg KGMpIDIwMTcgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAg VGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGlj ZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBv ZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmli dXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0K PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsN Cj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9O IEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNF TlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsN Cj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ICsgICAgLSBBQ1BJIDYuMiBTcGVjaWZpY2F0aW9u IC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3DQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPElu ZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0K PiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNlci5oPg0KPiArI2luY2x1ZGUg PExpYnJhcnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+DQo+ICsNCj4gKy8vIExvY2FsIHZh cmlhYmxlcw0KPiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkcklu Zm87DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJ IEJEUlQgVGFibGUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEJncnRQYXJz ZXJbXSA9IHsNCj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbyksDQo+ICsgIHtM IlZlcnNpb24iLCAyLCAzNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIlN0YXR1cyIsIDEsIDM4LCBMIjB4JXgiLCBOVUxMLCAgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ICsgIHtMIkltYWdlIFR5cGUiLCAxLCAzOSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIkltYWdlIEFkZHJlc3MiLCA4LCA0MCwgTCIweCVseCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiArICB7TCJJbWFnZSBPZmZzZXQgWCIsIDQsIDQ4LCBMIiVkIiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkltYWdlIE9mZnNldCBZIiwgNCwgNTIsIEwi JWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIFRoaXMgZnVu Y3Rpb24gcGFyc2VzIHRoZSBBQ1BJIEJHUlQgdGFibGUuDQo+ICsgIFdoZW4gdHJhY2UgaXMgZW5h YmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQkdSVCB0YWJsZSBhbmQNCj4gKyAgdHJhY2Vz IHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGFy c2VzIHRoZSBBQ1BJIGhlYWRlciBmb3IgdGhlIERTRFQgdGFibGUgYW5kDQo+ICsgIGludm9rZXMg dGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgRFNEVCB0YWJsZS4NCj4gKw0KPiArICBUaGlzIGZ1bmN0 aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRo ZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50 ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJs ZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsgIEBwYXJhbSBbaW5dIEFj cGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyovDQo+ICtW T0lEDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaUJncnQgKA0KPiArICBJTiBCT09MRUFOIFRyYWNl LA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgs DQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gKyAgKQ0KPiArew0KPiArICBp ZiAoIVRyYWNlKSB7DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsNCj4gKyAgUGFyc2VBY3Bp ICgNCj4gKyAgICBUcmFjZSwNCj4gKyAgICAwLA0KPiArICAgICJCR1JUIiwNCj4gKyAgICBQdHIs DQo+ICsgICAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICAgIFBBUlNFUl9QQVJBTVMgKEJncnRQYXJz ZXIpDQo+ICsgICAgKTsNCj4gK30NCj4gKw0KPiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ ICsNCj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFn ZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0g VGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNl ciBpcyByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUg cGFyc2VyIGZvciB0aGUgQUNQSSBUYWJsZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB3YXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BB UkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkDQo+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9S RVNPVVJDRVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRoZQ0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwYXJzZXIuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ ICtCZ3J0UGFyc2VyTGliQ29uc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAg ICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxF ICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJlZ2lzdGVy UGFyc2VyICgNCj4gKyAgICAgICAgICAgRUZJX0FDUElfNl8yX0JPT1RfR1JBUEhJQ1NfUkVTT1VS Q0VfVEFCTEVfU0lHTkFUVVJFLA0KPiArICAgICAgICAgICBQYXJzZUFjcGlCZ3J0DQo+ICsgICAg ICAgICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsN Cj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4N Cj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFi bGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBp cyBkZXJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBw YXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQ SQ0KPiArQmdydFBhcnNlckxpYkRlc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExF ICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RB QkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIERlcmVn aXN0ZXJQYXJzZXIgKA0KPiArICAgICAgICAgICBFRklfQUNQSV82XzJfQk9PVF9HUkFQSElDU19S RVNPVVJDRV9UQUJMRV9TSUdOQVRVUkUNCj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4gZGlmZiAt LWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1Bh cnNlcnMvQmdydC9CZ3J0UGFyc2VyTGkNCj4gYi5pbmYNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0JncnQvQmdydFBhcnNlckwNCj4gaWIu aW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0NjU5ZGExYWE4YzkyYzhhMzU5NTdiY2M4DQo+IDgz ZmJlMmM0Mzk0NTZlDQo+IC0tLSAvZGV2L251bGwNCj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9CZ3J0L0JncnRQYXJzZXJMDQo+ IGliLmluZg0KPiBAQCAtMCwwICsxLDMzIEBADQo+ICsjIyBAZmlsZQ0KPiArIw0KPiArIyAgQ29w eXJpZ2h0IChjKSAyMDE3IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu DQo+ICsjDQo+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxz DQo+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBh bmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gKyMgIHdoaWNoIGFjY29tcGFu aWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkg YmUNCj4gZm91bmQgYXQNCj4gKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2Qt bGljZW5zZS5waHANCj4gKyMNCj4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVS IFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiArIyAgV0lUSE9VVCBX QVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJF U1MgT1IgSU1QTElFRC4NCj4gKyMjDQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lP TiAgICA9IDB4MDAwMTAwMTkNCj4gKyAgQkFTRV9OQU1FICAgICAgPSBCZ3J0UGFyc2VyTGliDQo+ ICsgIEZJTEVfR1VJRCAgICAgID0gQzRDQ0Q5QjYtRjYyRi00QjA2LUEyNUQtRjgxNTUwN0I0OUUw DQo+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4wDQo+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RS SVZFUg0KPiArICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiArICBDT05TVFJV Q1RPUiAgICA9IEJncnRQYXJzZXJMaWJDb25zdHJ1Y3Rvcg0KPiArICBERVNUUlVDVE9SICAgICA9 IEJncnRQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ICsNCj4gK1tTb3VyY2VzXQ0KPiArICBCZ3J0UGFy c2VyLmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBT aGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMN Cj4gKw0KPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiArICBBY3BpUGFyc2VyTGliDQo+IGRpZmYgLS1n aXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJz ZXJzL0RiZzIvRGJnMlBhcnNlDQo+IHIuYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRGJnMi9EYmcyUGFyc2UNCj4gci5jDQo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAuLjg0Y2YxOThhZmIzMjU0NzVmMTcxOTA1N2UyDQo+IDZmMTRiMzUxYWM0YWQ4 DQo+IC0tLSAvZGV2L251bGwNCj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9EYmcyL0RiZzJQYXJzZQ0KPiByLmMNCj4gQEAgLTAs MCArMSwyODMgQEANCj4gKy8qKg0KPiArICBEQkcyIHRhYmxlIHBhcnNlcg0KPiArDQo+ICsgIENv cHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk Lg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsg IGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25k aXRpb25zIG9mIHRoZSBCU0QNCj4gTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlz IGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZv dW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5w aHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJ Q0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9S IFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElF RC4NCj4gKw0KPiArICBAcGFyIFJlZmVyZW5jZShzKToNCj4gKyAgICAtIE1pY3Jvc29mdCBEZWJ1 ZyBQb3J0IFRhYmxlIDIgKERCRzIpIFNwZWNpZmljYXRpb24gLSBEZWNlbWJlciAxMCwgMjAxNS4N Cj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9EZWJ1Z1BvcnQyVGFi bGUuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJy YXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3 L0FjcGlUYWJsZVBhcnNlci5oPg0KPiArDQo+ICsvLyBMb2NhbCB2YXJpYWJsZXMgcG9pbnRpbmcg dG8gdGhlIHRhYmxlIGZpZWxkcw0KPiArU1RBVElDIENPTlNUIFVJTlQzMiogT2Zmc2V0RGJnRGV2 aWNlSW5mbzsNCj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIE51bWJlckRiZ0RldmljZUluZm87DQo+ ICtTVEFUSUMgQ09OU1QgVUlOVDE2KiBEYmdEZXZJbmZvTGVuOw0KPiArU1RBVElDIENPTlNUIFVJ TlQ4KiAgR2FzQ291bnQ7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDE2KiBOYW1lU3BhY2VTdHJpbmdM ZW5ndGg7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDE2KiBOYW1lU3BhY2VTdHJpbmdPZmZzZXQ7DQo+ ICtTVEFUSUMgQ09OU1QgVUlOVDE2KiBPRU1EYXRhTGVuZ3RoOw0KPiArU1RBVElDIENPTlNUIFVJ TlQxNiogT0VNRGF0YU9mZnNldDsNCj4gK1NUQVRJQyBDT05TVCBVSU5UMTYqIEJhc2VBZGRyUmVn T2Zmc2V0Ow0KPiArU1RBVElDIENPTlNUIFVJTlQxNiogQWRkclNpemVPZmZzZXQ7DQo+ICtTVEFU SUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4gKw0KPiArLyoq IFRoaXMgZnVuY3Rpb24gVmFsaWRhdGVzIHRoZSBOYW1lU3BhY2Ugc3RyaW5nIGxlbmd0aC4NCj4g Kw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBi dWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNp ZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxk IGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElD DQo+ICtWT0lEDQo+ICtWYWxpZGF0ZU5hbWVTcGFjZVN0ckxlbiAoDQo+ICsgIElOICBVSU5UOCog UHRyLA0KPiArICBJTiAgVk9JRCogIENvbnRleHQNCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMg ZnVuY3Rpb24gcGFyc2VzIHRoZSBkZWJ1ZyBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0dXJlLg0K PiArDQo+ICsgIEBwYXJhbSBbaW5dICBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRo ZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbb3V0XSBMZW5ndGggIFBvaW50ZXIgaW4gd2hpY2ggdGhl IGxlbmd0aCBvZiB0aGUgZGVidWcNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlIGlu Zm9ybWF0aW9uIGlzIHJldHVybmVkLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRHVt cERiZ0RldmljZUluZm8gKA0KPiArICBJTiAgVUlOVDgqICBQdHIsDQo+ICsgIE9VVCBVSU5UMzIq IExlbmd0aA0KPiArICApOw0KPiArDQo+ICsvLy8gQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3Jp YmluZyB0aGUgQUNQSSBEQkcyIHRhYmxlLg0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIERi ZzJQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbyksDQo+ ICsgIHtMIk9mZnNldERiZ0RldmljZUluZm8iLCA0LCAzNiwgTCIweCV4IiwgTlVMTCwNCj4gKyAg IChWT0lEKiopJk9mZnNldERiZ0RldmljZUluZm8sIE5VTEwsIE5VTEx9LA0KPiArICB7TCJOdW1i ZXJEYmdEZXZpY2VJbmZvIiwgNCwgNDAsIEwiJWQiLCBOVUxMLA0KPiArICAgKFZPSUQqKikmTnVt YmVyRGJnRGV2aWNlSW5mbywgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8vLyBBbiBBQ1BJ X1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBkZWJ1ZyBkZXZpY2UgaW5mb3JtYXRpb24uDQo+ ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgRGJnRGV2SW5mb1BhcnNlcltdID0gew0KPiArICB7 TCJSZXZpc2lvbiIsIDEsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiAr ICB7TCJMZW5ndGgiLCAyLCAxLCBMIiVkIiwgTlVMTCwgKFZPSUQqKikmRGJnRGV2SW5mb0xlbiwg TlVMTCwgTlVMTH0sDQo+ICsNCj4gKyAge0wiR2VuZXJpYyBBZGRyZXNzIFJlZ2lzdGVycyBDb3Vu dCIsIDEsIDMsIEwiMHgleCIsIE5VTEwsDQo+ICsgICAoVk9JRCoqKSZHYXNDb3VudCwgTlVMTCwg TlVMTH0sDQo+ICsgIHtMIk5hbWVTcGFjZSBTdHJpbmcgTGVuZ3RoIiwgMiwgNCwgTCIlZCIsIE5V TEwsDQo+ICsgICAoVk9JRCoqKSZOYW1lU3BhY2VTdHJpbmdMZW5ndGgsIFZhbGlkYXRlTmFtZVNw YWNlU3RyTGVuLCBOVUxMfSwNCj4gKyAge0wiTmFtZVNwYWNlIFN0cmluZyBPZmZzZXQiLCAyLCA2 LCBMIjB4JXgiLCBOVUxMLA0KPiArICAgKFZPSUQqKikmTmFtZVNwYWNlU3RyaW5nT2Zmc2V0LCBO VUxMLCBOVUxMfSwNCj4gKyAge0wiT0VNIERhdGEgTGVuZ3RoIiwgMiwgOCwgTCIlZCIsIE5VTEws IChWT0lEKiopJk9FTURhdGFMZW5ndGgsDQo+ICsgICBOVUxMLCBOVUxMfSwNCj4gKyAge0wiT0VN IERhdGEgT2Zmc2V0IiwgMiwgMTAsIEwiMHgleCIsIE5VTEwsIChWT0lEKiopJk9FTURhdGFPZmZz ZXQsDQo+ICsgICBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJQb3J0IFR5cGUiLCAyLCAxMiwg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBvcnQgU3ViVHlwZSIs IDIsIDE0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2 ZWQiLCAyLCAxNiwgTCIleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsgIHtM IkJhc2UgQWRkcmVzcyBSZWdpc3RlciBPZmZzZXQiLCAyLCAxOCwgTCIweCV4IiwgTlVMTCwNCj4g KyAgIChWT0lEKiopJkJhc2VBZGRyUmVnT2Zmc2V0LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQWRk cmVzcyBTaXplIE9mZnNldCIsIDIsIDIwLCBMIjB4JXgiLCBOVUxMLA0KPiArICAgKFZPSUQqKikm QWRkclNpemVPZmZzZXQsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogVGhpcyBmdW5j dGlvbiB2YWxpZGF0ZXMgdGhlIE5hbWVTcGFjZSBzdHJpbmcgbGVuZ3RoLg0KPiArDQo+ICsgIEBw YXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4g KyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3Jt YXRpb24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2lu dGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQN Cj4gK1ZhbGlkYXRlTmFtZVNwYWNlU3RyTGVuICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAg SU4gVk9JRCogIENvbnRleHQNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UMTYgTmFtZVNwYWNlU3Ry TGVuID0gKihVSU5UMTYqKVB0cjsNCj4gKyAgaWYgKE5hbWVTcGFjZVN0ckxlbiA8IDIpIHsNCj4g KyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgIFByaW50ICgNCj4gKyAgICAgIEwi XG5FUlJPUjogTmFtZXNwYWNlU3RyaW5nIExlbmd0aCA9ICVkLiBJZiBubyBOYW1lc3BhY2UgZGV2 aWNlDQo+IGV4aXN0cyxcbiINCj4gKyAgICAgICAiICAgIHRoZW4gTmFtZXNwYWNlU3RyaW5nW10g bXVzdCBjb250YWluIGEgcGVyaW9kICcuJyIsDQo+ICsgICAgICBOYW1lU3BhY2VTdHJMZW4NCj4g KyAgICAgICk7DQo+ICsgIH0NCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2Vz IHRoZSBkZWJ1ZyBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJh bSBbaW5dICBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsg IEBwYXJhbSBbb3V0XSBQdHIgICAgIFBvaW50ZXIgaW4gd2hpY2ggdGhlIGxlbmd0aCBvZiB0aGUg ZGVidWcNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlIGluZm9ybWF0aW9uIGlzIHJl dHVybmVkLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRHVtcERiZ0RldmljZUluZm8g KA0KPiArICBJTiAgVUlOVDgqICBQdHIsDQo+ICsgIE9VVCBVSU5UMzIqIExlbmd0aA0KPiArICAp DQo+ICt7DQo+ICsgIFVJTlQxNiAgSW5kZXg7DQo+ICsgIFVJTlQ4KiAgRGF0YVB0cjsNCj4gKyAg VUlOVDMyKiBBZGRyU2l6ZTsNCj4gKw0KPiArICAvLyBQYXJzZSB0aGUgZGVidWcgZGV2aWNlIGlu Zm8gdG8gZ2V0IHRoZSBMZW5ndGgNCj4gKyAgUGFyc2VBY3BpICgNCj4gKyAgICBGQUxTRSwNCj4g KyAgICAwLA0KPiArICAgICJEZWJ1ZyBEZXZpY2UgSW5mbyIsDQo+ICsgICAgUHRyLA0KPiArICAg IDMsICAvLyBMZW5ndGggaXMgMiBieXRlcyBzdGFydGluZyBhdCBvZmZzZXQgMQ0KPiArICAgIFBB UlNFUl9QQVJBTVMgKERiZ0RldkluZm9QYXJzZXIpDQo+ICsgICAgKTsNCj4gKw0KPiArICBQYXJz ZUFjcGkgKA0KPiArICAgIFRSVUUsDQo+ICsgICAgMiwNCj4gKyAgICAiRGVidWcgRGV2aWNlIElu Zm8iLA0KPiArICAgIFB0ciwNCj4gKyAgICAqRGJnRGV2SW5mb0xlbiwNCj4gKyAgICBQQVJTRVJf UEFSQU1TIChEYmdEZXZJbmZvUGFyc2VyKQ0KPiArICAgICk7DQo+ICsNCj4gKyAgLy8gR0FTIGFu ZCBBZGRyZXNzIFNpemUNCj4gKyAgSW5kZXggPSAwOw0KPiArICBEYXRhUHRyID0gUHRyICsgKCpC YXNlQWRkclJlZ09mZnNldCk7DQo+ICsgIEFkZHJTaXplID0gKFVJTlQzMiopKFB0ciArICgqQWRk clNpemVPZmZzZXQpKTsNCj4gKyAgd2hpbGUgKEluZGV4IDwgKCpHYXNDb3VudCkpIHsNCj4gKyAg ICBQcmludEZpZWxkTmFtZSAoNCwgTCJCYXNlQWRkcmVzc1JlZ2lzdGVyIik7DQo+ICsgICAgRHVt cEdhc1N0cnVjdCAoRGF0YVB0ciwgNCk7DQo+ICsgICAgUHJpbnRGaWVsZE5hbWUgKDQsIEwiQWRk cmVzcyBTaXplIik7DQo+ICsgICAgUHJpbnQgKEwiMHgleFxuIiwgQWRkclNpemVbSW5kZXhdKTsN Cj4gKyAgICBEYXRhUHRyICs9IEdBU19MRU5HVEg7DQo+ICsgICAgSW5kZXgrKzsNCj4gKyAgfQ0K PiArDQo+ICsgIC8vIE5hbWVTcGFjZSBTdHJpbmcNCj4gKyAgSW5kZXggPSAwOw0KPiArICBEYXRh UHRyID0gUHRyICsgKCpOYW1lU3BhY2VTdHJpbmdPZmZzZXQpOw0KPiArICBQcmludEZpZWxkTmFt ZSAoNCwgTCJOYW1lU3BhY2UgU3RyaW5nIik7DQo+ICsgIHdoaWxlIChJbmRleCA8ICgqTmFtZVNw YWNlU3RyaW5nTGVuZ3RoKSkgew0KPiArICAgIFByaW50IChMIiVjIiwgRGF0YVB0cltJbmRleCsr XSk7DQo+ICsgIH0NCj4gKyAgUHJpbnQgKEwiXG4iKTsNCj4gKw0KPiArICAvLyBPRU0gRGF0YQ0K PiArICBJbmRleCA9IDA7DQo+ICsgIERhdGFQdHIgPSBQdHIgKyAoKk9FTURhdGFPZmZzZXQpOw0K PiArICBQcmludEZpZWxkTmFtZSAoNCwgTCJPRU0gRGF0YSIpOw0KPiArICB3aGlsZSAoSW5kZXgg PCAoKk9FTURhdGFMZW5ndGgpKSB7DQo+ICsgICAgUHJpbnQgKEwiJXggIiwgRGF0YVB0cltJbmRl eCsrXSk7DQo+ICsgICAgaWYgKChJbmRleCAmIDcpID09IDApIHsNCj4gKyAgICAgIFByaW50IChM IlxuJS0qcyAgICIsIE9VVFBVVF9GSUVMRF9DT0xVTU5fV0lEVEgsIEwiIik7DQo+ICsgICAgfQ0K PiArICB9DQo+ICsNCj4gKyAgKkxlbmd0aCA9ICpEYmdEZXZJbmZvTGVuOw0KPiArfQ0KPiArDQo+ ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgREJHMiB0YWJsZS4NCj4gKyAgV2hl biB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBEQkcyIHRhYmxlIGFu ZA0KPiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ICsgIFRoaXMgZnVu Y3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4N Cj4gKw0KPiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2Ug dGhlIEFDUEkgZmllbGRzLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9p bnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRh YmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0g QWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8NCj4g K1ZPSUQNCj4gK0VGSUFQSQ0KPiArUGFyc2VBY3BpRGJnMiAoDQo+ICsgIElOIEJPT0xFQU4gVHJh Y2UsDQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0 aCwNCj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiArICApDQo+ICt7DQo+ICsg IFVJTlQzMiBPZmZzZXQ7DQo+ICsgIFVJTlQzMiBEYmdEZXZpY2VJbmZvTGVuZ3RoOw0KPiArICBV SU5UOCogRGV2SW5mb1B0cjsNCj4gKw0KPiArICBpZiAoIVRyYWNlKSB7DQo+ICsgICAgcmV0dXJu Ow0KPiArICB9DQo+ICsNCj4gKyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICAg ICBUUlVFLA0KPiArICAgICAgICAgICAgIDAsDQo+ICsgICAgICAgICAgICAgIkRCRzIiLA0KPiAr ICAgICAgICAgICAgIFB0ciwNCj4gKyAgICAgICAgICAgICBBY3BpVGFibGVMZW5ndGgsDQo+ICsg ICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoRGJnMlBhcnNlcikNCj4gKyAgICAgICAgICAgICAp Ow0KPiArICBEZXZJbmZvUHRyID0gUHRyICsgT2Zmc2V0Ow0KPiArDQo+ICsgIHdoaWxlIChPZmZz ZXQgPCBBY3BpVGFibGVMZW5ndGgpIHsNCj4gKyAgICBEdW1wRGJnRGV2aWNlSW5mbyAoDQo+ICsg ICAgICBEZXZJbmZvUHRyLA0KPiArICAgICAgJkRiZ0RldmljZUluZm9MZW5ndGgNCj4gKyAgICAg ICk7DQo+ICsgICAgT2Zmc2V0ICs9IERiZ0RldmljZUluZm9MZW5ndGg7DQo+ICsgICAgRGV2SW5m b1B0ciArPSBEYmdEZXZpY2VJbmZvTGVuZ3RoOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBS ZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAg VGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAg UG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklf QUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gKyAg QHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiAr ICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0KPiArKi8NCj4gK0VG SV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArRGJnMlBhcnNlckxpYkNvbnN0cnVjdG9yICgNCj4gKyAg SU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4g ICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7 DQo+ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZf Ml9ERUJVR19QT1JUXzJfVEFCTEVfU0lHTkFUVVJFLA0KPiArICAgICAgICAgICBQYXJzZUFjcGlE YmcyDQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBw YXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRv IHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRo ZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAg VGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAg ICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiArKi8NCj4gK0VGSV9TVEFU VVMNCj4gK0VGSUFQSQ0KPiArRGJnMlBhcnNlckxpYkRlc3RydWN0b3IgKA0KPiArICBJTiBDT05T VCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBF RklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAg cmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KPiArICAgICAgICAgICBFRklfQUNQSV82XzJfREVC VUdfUE9SVF8yX1RBQkxFX1NJR05BVFVSRQ0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiBkaWZm IC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv UGFyc2Vycy9EYmcyL0RiZzJQYXJzZQ0KPiByTGliLmluZg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRGJnMi9EYmcyUGFyc2UNCj4gckxp Yi5pbmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4Y2JkNzFhZTJkNWVkYzcxY2Q4ZjFkOA0KPiAx MmRiYTFmNGY2YWRhNGENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysNCj4gYi9TaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0RiZzIvRGJnMlBhcnNlDQo+ IHJMaWIuaW5mDQo+IEBAIC0wLDAgKzEsMzMgQEANCj4gKyMjIEBmaWxlDQo+ICsjDQo+ICsjICBD b3B5cmlnaHQgKGMpIDIwMTcgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4NCj4gKyMNCj4gKyMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlh bHMNCj4gKyMgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1z IGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KPiBCU0QgTGljZW5zZQ0KPiArIyAgd2hpY2ggYWNjb21w YW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1h eSBiZQ0KPiBmb3VuZCBhdA0KPiArIyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2Jz ZC1saWNlbnNlLnBocA0KPiArIw0KPiArIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5E RVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsjICBXSVRIT1VU IFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQ UkVTUyBPUiBJTVBMSUVELg0KPiArIyMNCj4gKw0KPiArW0RlZmluZXNdDQo+ICsgIElORl9WRVJT SU9OICAgID0gMHgwMDAxMDAxOQ0KPiArICBCQVNFX05BTUUgICAgICA9IERiZzJQYXJzZXJMaWIN Cj4gKyAgRklMRV9HVUlEICAgICAgPSBGQjFGMTFBQS1GMkYwLTRENTgtOEQwNi0zNjVEQ0I2M0E2 MTQNCj4gKyAgVkVSU0lPTl9TVFJJTkcgPSAxLjANCj4gKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVf RFJJVkVSDQo+ICsgIExJQlJBUllfQ0xBU1MgID0gTlVMTHxEWEVfRFJJVkVSDQo+ICsgIENPTlNU UlVDVE9SICAgID0gRGJnMlBhcnNlckxpYkNvbnN0cnVjdG9yDQo+ICsgIERFU1RSVUNUT1IgICAg ID0gRGJnMlBhcnNlckxpYkRlc3RydWN0b3INCj4gKw0KPiArW1NvdXJjZXNdDQo+ICsgIERiZzJQ YXJzZXIuYw0KPiArDQo+ICtbUGFja2FnZXNdDQo+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ICsg IFNoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRl Yw0KPiArDQo+ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsgIEFjcGlQYXJzZXJMaWINCj4gZGlmZiAt LWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1Bh cnNlcnMvRHNkdC9Ec2R0UGFyc2VyDQo+IC5jDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hl bGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Ec2R0L0RzZHRQYXJzZXINCj4gLmMNCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMC4uYzc2Y2M3ZTg3NzdlNzVmMzk4M2NhMzEwY2INCj4gM2MwZDQzZmVkMDNi ZjUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0RzZHQvRHNkdFBhcnNlcg0KPiAuYw0KPiBAQCAt MCwwICsxLDkyIEBADQo+ICsvKioNCj4gKyAgRFNEVCB0YWJsZSBwYXJzZXINCj4gKw0KPiArICBD b3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiAr ICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29u ZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhp cyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBm b3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2Uu cGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBM SUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBP UiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJ RUQuDQo+ICsNCj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ICsgICAgLSBBQ1BJIDYuMiBTcGVj aWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3DQo+ICsqKi8NCj4gKw0KPiArI2lu Y2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVm aUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNlci5oPg0KPiAr I2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+DQo+ICsNCj4gKy8q KiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBEU0RUIHRhYmxlLg0KPiArICBXaGVuIHRy YWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIERTRFQgdGFibGUgYW5kDQo+ ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsgIEZvciB0aGUgRFNEVCB0YWJs ZSBvbmx5IHRoZSBBQ1BJIGhlYWRlciBmaWVsZHMgYXJlIHBhcnNlZCBhbmQNCj4gKyAgdHJhY2Vk Lg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFj ZSB0aGUgQUNQSSBmaWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQ b2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBBY3Bp VGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0gW2lu XSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsqLw0K PiArVk9JRA0KPiArRUZJQVBJDQo+ICtQYXJzZUFjcGlEc2R0ICgNCj4gKyAgSU4gQk9PTEVBTiBU cmFjZSwNCj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVu Z3RoLA0KPiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICkNCj4gK3sNCj4g KyAgaWYgKCFUcmFjZSkgew0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIER1bXBB Y3BpSGVhZGVyIChQdHIpOw0KPiArfQ0KPiArDQo+ICsvKiogUmVnaXN0ZXIgdGhlIHBhcnNlci4N Cj4gKw0KPiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGlt YWdlLg0KPiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3Rl bSBUYWJsZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFy c2VyIGlzIHJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRo ZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIFRhYmxlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURf UEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQNCj4gKyAgQHJldHZhbCBFRklfT1VUX09G X1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0ZXIgdGhlDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBhcnNlci4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkN Cj4gK0RzZHRQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUg ICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFC TEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gUmVnaXN0 ZXJQYXJzZXIgKA0KPiArDQo+IEVGSV9BQ1BJXzZfMl9ESUZGRVJFTlRJQVRFRF9TWVNURU1fREVT Q1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFLA0KPiArICAgICAgICAgICBQYXJzZUFjcGlEc2R0DQo+ ICsgICAgICAgICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIu DQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBp bWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0 ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBh cnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAg IFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4g K0VGSUFQSQ0KPiArRHNkdFBhcnNlckxpYkRlc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklf SEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lT VEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJu IERlcmVnaXN0ZXJQYXJzZXIgKA0KPiArDQo+IEVGSV9BQ1BJXzZfMl9ESUZGRVJFTlRJQVRFRF9T WVNURU1fREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFDQo+ICsgICAgICAgICAgICk7DQo+ICt9 DQo+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9QYXJzZXJzL0RzZHQvRHNkdFBhcnNlcg0KPiBMaWIuaW5mDQo+IGIvU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Ec2R0L0RzZHRQYXJz ZXINCj4gTGliLmluZg0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjgxNjc5NWZlYjNlYzgzMmRjZTAy Zjc0Mg0KPiBjMTg4ODgyZjQ2MjM5MQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1NoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRHNkdC9Ec2R0 UGFyc2VyDQo+IExpYi5pbmYNCj4gQEAgLTAsMCArMSwzMyBAQA0KPiArIyMgQGZpbGUNCj4gKyMN Cj4gKyMgIENvcHlyaWdodCAoYykgMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2 ZWQuDQo+ICsjDQo+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJp YWxzDQo+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJt cyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gKyMgIHdoaWNoIGFjY29t cGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBt YXkgYmUNCj4gZm91bmQgYXQNCj4gKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9i c2QtbGljZW5zZS5waHANCj4gKyMNCj4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVO REVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiArIyAgV0lUSE9V VCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVY UFJFU1MgT1IgSU1QTElFRC4NCj4gKyMjDQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVS U0lPTiAgICA9IDB4MDAwMTAwMTkNCj4gKyAgQkFTRV9OQU1FICAgICAgPSBEc2R0UGFyc2VyTGli DQo+ICsgIEZJTEVfR1VJRCAgICAgID0gMzA0Nzg0MkItOUZBNi00Q0EyLTk1MTMtRDdGRDZBRDA5 NTc0DQo+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4wDQo+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhF X0RSSVZFUg0KPiArICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiArICBDT05T VFJVQ1RPUiAgICA9IERzZHRQYXJzZXJMaWJDb25zdHJ1Y3Rvcg0KPiArICBERVNUUlVDVE9SICAg ICA9IERzZHRQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ICsNCj4gK1tTb3VyY2VzXQ0KPiArICBEc2R0 UGFyc2VyLmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiAr ICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5k ZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiArICBBY3BpUGFyc2VyTGliDQo+IGRpZmYg LS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Q YXJzZXJzL0ZhZHQvRmFkdFBhcnNlci4NCj4gYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRmFkdC9GYWR0UGFyc2VyLg0KPiBjDQo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAuLmI4YmU0MWU1ZmZlODkzODRlM2IzZmY1NTRkDQo+IGM0YzU5YzRhYzli M2UzDQo+IC0tLSAvZGV2L251bGwNCj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hl bGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9GYWR0L0ZhZHRQYXJzZXIuDQo+IGMNCj4gQEAg LTAsMCArMSwzMDIgQEANCj4gKy8qKg0KPiArICBGQURUIHRhYmxlIHBhcnNlcg0KPiArDQo+ICsg IENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBj b25kaXRpb25zIG9mIHRoZSBCU0QNCj4gTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0 aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+ IGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5z ZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNE IExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVT IE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1Q TElFRC4NCj4gKw0KPiArICBAcGFyIFJlZmVyZW5jZShzKToNCj4gKyAgICAtIEFDUEkgNi4yIFNw ZWNpZmljYXRpb24gLSBFcnJhdGEgQSwgU2VwdGVtYmVyIDIwMTcNCj4gKyoqLw0KPiArDQo+ICsj aW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9V ZWZpTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gKw0KPiAr Ly8gTG9jYWwgdmFyaWFibGVzDQo+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBEc2R0QWRkcmVzczsN Cj4gK1NUQVRJQyBDT05TVCBVSU5UNjQqIFhfRHNkdEFkZHJlc3M7DQo+ICtTVEFUSUMgQ09OU1Qg VUlOVDgqICBGYWR0TWlub3JSZXZpc2lvbjsNCj4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hF QURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KPiArDQo+ICsvKiogQSBtYWNybyBkZWZpbmluZyB0aGUg SGFyZHdhcmUgcmVkdWNlZCBBQ1BJIGZsYWcNCj4gKyovDQo+ICsjZGVmaW5lIEhXX1JFRFVDRURf QUNQSSAgIEJJVDIwDQo+ICsNCj4gKy8vIEZvcndhcmQgZGVjbGFyYXRpb25zDQo+ICtDT05TVCBB Q1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPKiBDT05TVA0KPiArR2V0QWNwaVhzZHRIZWFkZXJJ bmZvICgNCj4gKyAgVk9JRA0KPiArKTsNCj4gKw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtWYWxp ZGF0ZUZpcm13YXJlQ3RybCAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBD b250ZXh0DQo+ICspOw0KPiArDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK1ZhbGlkYXRlWEZpcm13 YXJlQ3RybCAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ ICspOw0KPiArDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK1ZhbGlkYXRlRmxhZ3MgKA0KPiArICBJ TiBVSU5UOCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArKTsNCj4gKw0KPiArLyoq IEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEFDUEkgRkFEVCBUYWJsZS4NCj4g KyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgRmFkdFBhcnNlcltdID0gew0KPiArICBQ QVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlIZHJJbmZvKSwNCj4gKyAge0wiRklSTVdBUkVfQ1RSTCIs IDQsIDM2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBWYWxpZGF0ZUZpcm13YXJlQ3RybCwNCj4gTlVM TH0sDQo+ICsgIHtMIkRTRFQiLCA0LCA0MCwgTCIweCV4IiwgTlVMTCwgKFZPSUQqKikmRHNkdEFk ZHJlc3MsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDEsIDQ0LCBMIiV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlByZWZlcnJlZF9QTV9Qcm9maWxlIiwgMSwg NDUsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJTQ0lfSU5UIiwg MiwgNDYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJTTUlfQ01E IiwgNCwgNDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJBQ1BJ X0VOQUJMRSIsIDEsIDUyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAg e0wiQUNQSV9ESVNBQkxFIiwgMSwgNTMsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiArICB7TCJTNEJJT1NfUkVRIiwgMSwgNTQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJQU1RBVEVfQ05UIiwgMSwgNTUsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiArICB7TCJQTTFhX0VWVF9CTEsiLCA0LCA1NiwgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBNMWJfRVZUX0JMSyIsIDQsIDYwLCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUE0xYV9DTlRfQkxLIiwgNCwg NjQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQTTFiX0NOVF9C TEsiLCA0LCA2OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBN Ml9DTlRfQkxLIiwgNCwgNzIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiAr ICB7TCJQTV9UTVJfQkxLIiwgNCwgNzYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiArICB7TCJHUEUwX0JMSyIsIDQsIDgwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gKyAge0wiR1BFMV9CTEsiLCA0LCA4NCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ICsgIHtMIlBNMV9FVlRfTEVOIiwgMSwgODgsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQTTFfQ05UX0xFTiIsIDEsIDg5LCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUE0yX0NOVF9MRU4iLCAxLCA5MCwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBNX1RNUl9MRU4iLCAxLCA5 MSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkdQRTBfQkxLX0xF TiIsIDEsIDkyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiR1BF MV9CTEtfTEVOIiwgMSwgOTMsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiAr ICB7TCJHUEUxX0JBU0UiLCAxLCA5NCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIkNTVF9DTlQiLCAxLCA5NSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIlBfTFZMMl9MQVQiLCAyLCA5NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ICsgIHtMIlBfTFZMM19MQVQiLCAyLCA5OCwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkZMVVNIX1NJWkUiLCAyLCAxMDAsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJGTFVTSF9TVFJJREUiLCAyLCAxMDIsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJEVVRZX09GRlNFVCIsIDEs IDEwNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkRVVFlfV0lE VEgiLCAxLCAxMDUsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJE QVlfQUxSTSIsIDEsIDEwNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIk1PTl9BTFJNIiwgMSwgMTA3LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gKyAge0wiQ0VOVFVSWSIsIDEsIDEwOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIklBUENfQk9PVF9BUkNIIiwgMiwgMTA5LCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAxLCAxMTEsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJGbGFncyIsIDQsIDExMiwgTCIweCV4IiwgTlVM TCwgTlVMTCwgVmFsaWRhdGVGbGFncywgTlVMTH0sDQo+ICsgIHtMIlJFU0VUX1JFRyIsIDEyLCAx MTYsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSRVNFVF9WQUxV RSIsIDEsIDEyOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkFS TV9CT09UX0FSQ0giLCAyLCAxMjksIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCJGQURUIE1pbm9yIFZlcnNpb24iLCAxLCAxMzEsIEwiMHgleCIsIE5VTEwsDQo+IChW T0lEKiopJkZhZHRNaW5vclJldmlzaW9uLA0KPiArICAgIE5VTEwsIE5VTEx9LA0KPiArICB7TCJY X0ZJUk1XQVJFX0NUUkwiLCA4LCAxMzIsIEwiMHglbHgiLCBOVUxMLCBOVUxMLA0KPiArICAgIFZh bGlkYXRlWEZpcm13YXJlQ3RybCwgTlVMTH0sDQo+ICsgIHtMIlhfRFNEVCIsIDgsIDE0MCwgTCIw eCVseCIsIE5VTEwsIChWT0lEKiopJlhfRHNkdEFkZHJlc3MsIE5VTEwsDQo+IE5VTEx9LA0KPiAr ICB7TCJYX1BNMWFfRVZUX0JMSyIsIDEyLCAxNDgsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJYX1BNMWJfRVZUX0JMSyIsIDEyLCAxNjAsIE5VTEwsIER1bXBHYXMs IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJYX1BNMWFfQ05UX0JMSyIsIDEyLCAxNzIsIE5V TEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJYX1BNMWJfQ05UX0JMSyIs IDEyLCAxODQsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJYX1BN Ml9DTlRfQkxLIiwgMTIsIDE5NiwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ICsgIHtMIlhfUE1fVE1SX0JMSyIsIDEyLCAyMDgsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJYX0dQRTBfQkxLIiwgMTIsIDIyMCwgTlVMTCwgRHVtcEdhcywgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlhfR1BFMV9CTEsiLCAxMiwgMjMyLCBOVUxMLCBEdW1w R2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiU0xFRVBfQ09OVFJPTF9SRUciLCAxMiwg MjQ0LCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiU0xFRVBfU1RB VFVTX1JFRyIsIDEyLCAyNTYsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiAr ICB7TCJIeXBlcnZpc29yIFZlbmRvcklkZW50aXR5IiwgOCwgMjY4LCBMIiVseCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0 ZXMgdGhlIEZpcm13YXJlIENvbnRyb2wgRmllbGQuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRy ICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gKyAgQHBhcmFt IFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5n LiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRo ZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK1ZhbGlk YXRlRmlybXdhcmVDdHJsICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVk9JRCogIENv bnRleHQNCj4gKykNCj4gK3sNCj4gKyNpZiBkZWZpbmVkIChNREVfQ1BVX0FSTSkgfHwgZGVmaW5l ZCAoTURFX0NQVV9BQVJDSDY0KQ0KPiArICBpZiAoKihVSU5UMzIqKVB0ciAhPSAwKSB7DQo+ICsg ICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICBQcmludCAoDQo+ICsgICAgICBMIlxu RVJST1I6IEZpcm13YXJlIENvbnRyb2wgbXVzdCBiZSB6ZXJvIGZvciBBUk0gcGxhdGZvcm1zLiIN Cj4gKyAgICApOw0KPiArICB9DQo+ICsjZW5kaWYNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVu Y3Rpb24gdmFsaWRhdGVzIHRoZSBYX0Zpcm13YXJlIENvbnRyb2wgRmllbGQuDQo+ICsNCj4gKyAg QHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0 YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMg aW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUg YSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4g K1ZPSUQNCj4gK1ZhbGlkYXRlWEZpcm13YXJlQ3RybCAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICspDQo+ICt7DQo+ICsjaWYgZGVmaW5lZCAoTURFX0NQ VV9BUk0pIHx8IGRlZmluZWQgKE1ERV9DUFVfQUFSQ0g2NCkNCj4gKyAgaWYgKCooVUlOVDY0KilQ dHIgIT0gMCkgew0KPiArICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgUHJpbnQg KA0KPiArICAgICAgTCJcbkVSUk9SOiBYIEZpcm13YXJlIENvbnRyb2wgbXVzdCBiZSB6ZXJvIGZv ciBBUk0gcGxhdGZvcm1zLiINCj4gKyAgICApOw0KPiArICB9DQo+ICsjZW5kaWYNCj4gK30NCj4g Kw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBmbGFncy4NCj4gKw0KPiArICBA cGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRh Lg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBp bmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBh IHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiAr Vk9JRA0KPiArVmFsaWRhdGVGbGFncyAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZP SUQqICBDb250ZXh0DQo+ICspDQo+ICt7DQo+ICsjaWYgZGVmaW5lZCAoTURFX0NQVV9BUk0pIHx8 IGRlZmluZWQgKE1ERV9DUFVfQUFSQ0g2NCkNCj4gKyAgaWYgKCgoKihVSU5UMzIqKVB0cikgJiBI V19SRURVQ0VEX0FDUEkpID09IDApIHsNCj4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0K PiArICAgIFByaW50ICgNCj4gKyAgICAgIEwiXG5FUlJPUjogSFdfUkVEVUNFRF9BQ1BJIGZsYWcg bXVzdCBiZSBzZXQgZm9yIEFSTSBwbGF0Zm9ybXMuIg0KPiArICAgICk7DQo+ICsgIH0NCj4gKyNl bmRpZg0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgRkFE VCB0YWJsZS4NCj4gKyAgVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEZBRFQgdGFibGUgYW5kIG9w dGlvbmFsbHkgdHJhY2VzIHRoZSBBQ1BJDQo+ICsgIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBU aGlzIGZ1bmN0aW9uIGFsc28gcGFyc2VzIHRoZSBBQ1BJIGhlYWRlciBmb3IgdGhlIERTRFQgdGFi bGUgYW5kDQo+ICsgIGludm9rZXMgdGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgRFNEVCB0YWJsZS4N Cj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUg QUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAg ICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRy ICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsg IEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUu DQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQ SSB0YWJsZS4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaUZhZHQgKA0K PiArICBJTiBCT09MRUFOIFRyYWNlLA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlO VDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24N Cj4gKyAgKQ0KPiArew0KPiArICBVSU5UOCogIERzZHRQdHI7DQo+ICsNCj4gKyAgUGFyc2VBY3Bp ICgNCj4gKyAgICBUcmFjZSwNCj4gKyAgICAwLA0KPiArICAgICJGQURUIiwNCj4gKyAgICBQdHIs DQo+ICsgICAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICAgIFBBUlNFUl9QQVJBTVMgKEZhZHRQYXJz ZXIpDQo+ICsgICAgKTsNCj4gKw0KPiArICBpZiAoVHJhY2UpIHsNCj4gKyAgICBQcmludCAoTCJc blN1bW1hcnk6XG4iKTsNCj4gKyAgICBQcmludEZpZWxkTmFtZSAoMiwgTCJGQURUIFZlcnNpb24i KTsNCj4gKyAgICBQcmludCAoTCIlZC4lZFxuIiwgICpBY3BpSGRySW5mby5SZXZpc2lvbiwgKkZh ZHRNaW5vclJldmlzaW9uKTsNCj4gKw0KPiArICAgIGlmICgqR2V0QWNwaVhzZHRIZWFkZXJJbmZv ICgpLT5PZW1UYWJsZUlkICE9ICpBY3BpSGRySW5mby5PZW1UYWJsZUlkKQ0KPiB7DQo+ICsgICAg ICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgICAgUHJpbnQgKEwiRVJST1I6IE9FTSBU YWJsZSBJZCBkb2VzIG5vdCBtYXRjaCB3aXRoIFJTRFQvWFNEVC5cbiIpOw0KPiArICAgIH0NCj4g KyAgfQ0KPiArDQo+ICsgIC8vIElmIFhfRFNEVCBpcyBub3QgemVybyB0aGVuIHVzZSBYX0RTRFQg YW5kIGlnbm9yZSBEU0RULA0KPiArICAvLyBlbHNlIHVzZSBEU0RULg0KPiArICBpZiAoKlhfRHNk dEFkZHJlc3MgIT0gMCkgew0KPiArICAgIERzZHRQdHIgPSAoVUlOVDgqKShVSU5UTikoKlhfRHNk dEFkZHJlc3MpOw0KPiArICB9IGVsc2UgaWYgKCpEc2R0QWRkcmVzcyAhPSAwKSB7DQo+ICsgICAg RHNkdFB0ciA9IChVSU5UOCopKFVJTlROKSgqRHNkdEFkZHJlc3MpOw0KPiArICB9IGVsc2Ugew0K PiArICAgIC8vIEJvdGggRFNEVCBhbmQgWF9EU0RUIGNhbm5vdCBiZSB6ZXJvLg0KPiArI2lmIGRl ZmluZWQgKE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVkIChNREVfQ1BVX0FBUkNINjQpDQo+ICsgICAg aWYgKFRyYWNlKSB7DQo+ICsgICAgICAvLyBUaGUgRFNEVCBUYWJsZSBpcyBtYW5kYXRvcnkgZm9y IEFSTSBzeXN0ZW1zDQo+ICsgICAgICAvLyBhcyB0aGUgQ1BVIGluZm9ybWF0aW9uIE1VU1QgYmUg cHJlc2VudGVkIGluDQo+ICsgICAgICAvLyB0aGUgRFNEVC4NCj4gKyAgICAgIEluY3JlbWVudEVy cm9yQ291bnQgKCk7DQo+ICsgICAgICBQcmludCAoTCJFUlJPUjogQm90aCBYX0RTRFQgYW5kIERT RFQgYXJlIE5VTEwuXG4iKTsNCj4gKyAgICB9DQo+ICsjZW5kaWYNCj4gKyAgICByZXR1cm47DQo+ ICsgIH0NCj4gKw0KPiArICBQcm9jZXNzQWNwaVRhYmxlIChEc2R0UHRyKTsNCj4gK30NCj4gKw0K PiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIEltYWdl SGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5c3Rl bVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0KPiArICBAcmV0 dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgQUNQSSBUYWJsZQ0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXMgYWxyZWFkeSByZWdpc3RlcmVk Lg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZh bGlkDQo+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIE5vIHNwYWNlIHRvIHJlZ2lz dGVyIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuDQo+ICsq Lw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtGYWR0UGFyc2VyTGliQ29uc3RydWN0b3Ig KA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0K PiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ICsg ICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgICAgICAgICAgRUZJ X0FDUElfNl8yX0ZJWEVEX0FDUElfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFLA0KPiArICAg ICAgICAgICBQYXJzZUFjcGlGYWR0DQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+ICsNCj4gKy8q KiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFu ZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRh YmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2 YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0K PiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArRmFkdFBhcnNlckxpYkRlc3RydWN0 b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxl LA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KPiArICAgICAgICAg ICBFRklfQUNQSV82XzJfRklYRURfQUNQSV9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUNCj4g KyAgICAgICAgICAgKTsNCj4gK30NCj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRmFkdC9GYWR0UGFyc2VyDQo+IExp Yi5pbmYNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Q YXJzZXJzL0ZhZHQvRmFkdFBhcnNlcg0KPiBMaWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3 NWVlZDUzOGI5ZTAwYmU1YmMzMzZlOA0KPiAwNjg2MDJmZmZiOTcwMzdlDQo+IC0tLSAvZGV2L251 bGwNCj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvUGFyc2Vycy9GYWR0L0ZhZHRQYXJzZXINCj4gTGliLmluZg0KPiBAQCAtMCwwICsxLDMzIEBA DQo+ICsjIyBAZmlsZQ0KPiArIw0KPiArIyAgQ29weXJpZ2h0IChjKSAyMDE3IC0gMjAxOCwgQVJN IExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsjDQo+ICsjICBUaGlzIHByb2dyYW0g YW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1h ZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNE IExpY2Vuc2UNCj4gKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhl IGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyMgIGh0dHA6 Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKyMNCj4gKyMgIFRI RSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMg SVMiDQo+IEJBU0lTLA0KPiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9O UyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyMjDQo+ICsN Cj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4gKyAgQkFT RV9OQU1FICAgICAgPSBGYWR0UGFyc2VyTGliDQo+ICsgIEZJTEVfR1VJRCAgICAgID0gMTUwN0VD OEEtMkJENC00NjBCLTk4MzAtRDc4RDBCRDdFMEU2DQo+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4w DQo+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZFUg0KPiArICBMSUJSQVJZX0NMQVNTICA9 IE5VTEx8RFhFX0RSSVZFUg0KPiArICBDT05TVFJVQ1RPUiAgICA9IEZhZHRQYXJzZXJMaWJDb25z dHJ1Y3Rvcg0KPiArICBERVNUUlVDVE9SICAgICA9IEZhZHRQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ ICsNCj4gK1tTb3VyY2VzXQ0KPiArICBGYWR0UGFyc2VyLmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0K PiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gKyAg TWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFzc2VzXQ0K PiArICBBY3BpUGFyc2VyTGliDQo+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0d0ZHQvR3RkdFBhcnNlcg0KPiAuYw0K PiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMv R3RkdC9HdGR0UGFyc2VyDQo+IC5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4DQo+ IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjMzhmOWQ1ZmU3NWY1 MmJhNzIyODY3YWM5DQo+IGMxYmIwZjYzZjQxNjM0DQo+IC0tLSAvZGV2L251bGwNCj4gKysrDQo+ IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9H dGR0L0d0ZHRQYXJzZXINCj4gLmMNCj4gQEAgLTAsMCArMSwzMzYgQEANCj4gKy8qKg0KPiArICBH VERUIHRhYmxlIHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFS TSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRo ZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFp bGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QNCj4gTGljZW5z ZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRl eHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291 cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJ UyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJ UywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lO RCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKw0KPiArICBAcGFyIFJlZmVyZW5j ZShzKToNCj4gKyAgICAtIEFDUEkgNi4yIFNwZWNpZmljYXRpb24gLSBFcnJhdGEgQSwgU2VwdGVt YmVyIDIwMTcNCj4gKyAgKiovDQo+ICsNCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0Fj cGkuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJy YXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3 L0FjcGlUYWJsZVBhcnNlci5oPg0KPiArDQo+ICsvLyBMb2NhbCB2YXJpYWJsZXMNCj4gK1NUQVRJ QyBDT05TVCBVSU5UMzIqIEd0ZHRQbGF0Zm9ybVRpbWVyQ291bnQ7DQo+ICtTVEFUSUMgQ09OU1Qg VUlOVDMyKiBHdGR0UGxhdGZvcm1UaW1lck9mZnNldDsNCj4gK1NUQVRJQyBDT05TVCBVSU5UOCog IFBsYXRmb3JtVGltZXJUeXBlOw0KPiArU1RBVElDIENPTlNUIFVJTlQxNiogUGxhdGZvcm1UaW1l ckxlbmd0aDsNCj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIEd0QmxvY2tUaW1lckNvdW50Ow0KPiAr U1RBVElDIENPTlNUIFVJTlQzMiogR3RCbG9ja1RpbWVyT2Zmc2V0Ow0KPiArU1RBVElDIENPTlNU IFVJTlQxNiogR3RCbG9ja0xlbmd0aDsNCj4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURF Ul9JTkZPIEFjcGlIZHJJbmZvOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMg dGhlIEdUIEJsb2NrIHRpbWVyIGNvdW50Lg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAg UG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5d IENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhp cw0KPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQ SSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtWYWxpZGF0ZUd0 QmxvY2tUaW1lckNvdW50ICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVk9JRCogIENv bnRleHQNCj4gKyAgKTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJp bmcgdGhlIEFDUEkgR1REVCBUYWJsZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJT RVIgR3RkdFBhcnNlcltdID0gew0KPiArICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlIZHJJbmZv KSwNCj4gKyAge0wiQ250Q29udHJvbEJhc2UgUGh5c2ljYWwgQWRkcmVzcyIsIDgsIDM2LCBMIjB4 JWx4IiwgTlVMTCwgTlVMTCwNCj4gKyAgIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIs IDQsIDQ0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiU2VjdXJl IEVMMSB0aW1lciBHU0lWIiwgNCwgNDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiArICB7TCJTZWN1cmUgRUwxIHRpbWVyIEZMQUdTIiwgNCwgNTIsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsgIHtMIk5vbi1TZWN1cmUgRUwxIHRpbWVyIEdT SVYiLCA0LCA1NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIk5v bi1TZWN1cmUgRUwxIHRpbWVyIEZMQUdTIiwgNCwgNjAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArDQo+ICsgIHtMIlZpcnR1YWwgdGltZXIgR1NJViIsIDQsIDY0LCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiVmlydHVhbCB0aW1lciBGTEFH UyIsIDQsIDY4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7 TCJOb24tU2VjdXJlIEVMMiB0aW1lciBHU0lWIiwgNCwgNzIsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiArICB7TCJOb24tU2VjdXJlIEVMMiB0aW1lciBGTEFHUyIsIDQsIDc2 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJDbnRSZWFk QmFzZSBQaHlzaWNhbCBhZGRyZXNzIiwgOCwgODAsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxM LA0KPiBOVUxMfSwNCj4gKyAge0wiUGxhdGZvcm0gVGltZXIgQ291bnQiLCA0LCA4OCwgTCIlZCIs IE5VTEwsDQo+ICsgICAoVk9JRCoqKSZHdGR0UGxhdGZvcm1UaW1lckNvdW50LCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiUGxhdGZvcm0gVGltZXIgT2Zmc2V0IiwgNCwgOTIsIEwiMHgleCIsIE5VTEws DQo+ICsgICAoVk9JRCoqKSZHdGR0UGxhdGZvcm1UaW1lck9mZnNldCwgTlVMTCwgTlVMTH0NCj4g K307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBQbGF0 Zm9ybSB0aW1lciBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEd0 UGxhdGZvcm1UaW1lckhlYWRlclBhcnNlcltdID0gew0KPiArICB7TCJUeXBlIiwgMSwgMCwgTlVM TCwgTlVMTCwgKFZPSUQqKikmUGxhdGZvcm1UaW1lclR5cGUsIE5VTEwsIE5VTEx9LA0KPiArICB7 TCJMZW5ndGgiLCAyLCAxLCBOVUxMLCBOVUxMLCAoVk9JRCoqKSZQbGF0Zm9ybVRpbWVyTGVuZ3Ro LCBOVUxMLA0KPiBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAxLCAzLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5 IGRlc2NyaWJpbmcgdGhlIFBsYXRmb3JtIEdUIEJsb2NrLg0KPiArKi8NCj4gK1NUQVRJQyBDT05T VCBBQ1BJX1BBUlNFUiBHdEJsb2NrUGFyc2VyW10gPSB7DQo+ICsgIHtMIlR5cGUiLCAxLCAwLCBM IiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxlbmd0aCIsIDIsIDEsIEwi JWQiLCBOVUxMLCAoVk9JRCoqKSZHdEJsb2NrTGVuZ3RoLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wi UmVzZXJ2ZWQiLCAxLCAzLCBMIiV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtM IlBoeXNpY2FsIGFkZHJlc3MgKENudEN0bEJhc2UpIiwgOCwgNCwgTCIweCVseCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJUaW1lciBDb3VudCIsIDQsIDEyLCBMIiVkIiwgTlVM TCwgKFZPSUQqKikmR3RCbG9ja1RpbWVyQ291bnQsDQo+ICsgICBWYWxpZGF0ZUd0QmxvY2tUaW1l ckNvdW50LCBOVUxMfSwNCj4gKyAge0wiVGltZXIgT2Zmc2V0IiwgNCwgMTYsIEwiJWQiLCBOVUxM LCAoVk9JRCoqKSZHdEJsb2NrVGltZXJPZmZzZXQsIE5VTEwsDQo+ICsgICAgTlVMTH0NCj4gK307 DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBHVCBCbG9j ayB0aW1lci4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgR3RCbG9ja1RpbWVy UGFyc2VyW10gPSB7DQo+ICsgIHtMIkZyYW1lIE51bWJlciIsIDEsIDAsIEwiJWQiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAzLCAxLCBMIiV4ICV4ICV4Iiwg RHVtcDNDaGFycywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBoeXNpY2FsIGFkZHJlc3Mg KENudEJhc2VYKSIsIDgsIDQsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g KyAge0wiUGh5c2ljYWwgYWRkcmVzcyAoQ250RUwwQmFzZVgpIiwgOCwgMTIsIEwiMHglbHgiLCBO VUxMLCBOVUxMLCBOVUxMLA0KPiArICAgIE5VTEx9LA0KPiArICB7TCJQaHlzaWNhbCBUaW1lciBH U0lWIiwgNCwgMjAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQ aHlzaWNhbCBUaW1lciBGbGFncyIsIDQsIDI0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gKyAge0wiVmlydHVhbCBUaW1lciBHU0lWIiwgNCwgMjgsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJWaXJ0dWFsIFRpbWVyIEZsYWdzIiwgNCwgMzIs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJDb21tb24gRmxhZ3Mi LCA0LCAzNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4g Ky8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBQbGF0Zm9ybSBXYXRjaGRv Zy4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgU0JTQUdlbmVyaWNXYXRjaGRv Z1BhcnNlcltdID0gew0KPiArICB7TCJUeXBlIiwgMSwgMCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArICB7TCJMZW5ndGgiLCAyLCAxLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgMSwgMywgTCIleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArICB7TCJSZWZyZXNoRnJhbWUgUGh5c2ljYWwgYWRkcmVzcyIsIDgsIDQs IEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLA0KPiBOVUxMfSwNCj4gKyAge0wiQ29udHJvbEZy YW1lIFBoeXNpY2FsIGFkZHJlc3MiLCA4LCAxMiwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEws DQo+IE5VTEx9LA0KPiArICB7TCJXYXRjaGRvZyBUaW1lciBHU0lWIiwgNCwgMjAsIEwiMHgleCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJXYXRjaGRvZyBUaW1lciBGbGFncyIs IDQsIDI0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiAr LyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBHVCBCbG9jayB0aW1lciBjb3VudC4NCj4g Kw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBm aWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBz cGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICBj b3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NU QVRJQw0KPiArVk9JRA0KPiArVmFsaWRhdGVHdEJsb2NrVGltZXJDb3VudCAoDQo+ICsgIElOIFVJ TlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsgICkNCj4gK3sNCj4gKyAgVUlO VDMyIEJsb2NrVGltZXJDb3VudCA9ICooVUlOVDMyKilQdHI7DQo+ICsgIGlmIChCbG9ja1RpbWVy Q291bnQgPiA4KSB7DQo+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICBQcmlu dCAoDQo+ICsgICAgICBMIlxuRVJST1I6IFRpbWVyIENvdW50ID0gJWQuIE1heCBUaW1lciBDb3Vu dCBpcyA4LiIsDQo+ICsgICAgICBCbG9ja1RpbWVyQ291bnQNCj4gKyAgICAgICk7DQo+ICsgIH0N Cj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBQbGF0Zm9ybSBHVCBC bG9jay4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0 IG9mIHRoZSBHVCBCbG9jayBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBMZW5ndGggIExlbmd0aCBv ZiB0aGUgR1QgQmxvY2sgc3RydWN0dXJlLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiAr RHVtcEdUQmxvY2sgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBVSU5UMTYgTGVuZ3Ro DQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyIEluZGV4Ow0KPiArICBVSU5UMzIgT2Zmc2V0Ow0K PiArICBVSU5UMTYgR1RCbG9ja1RpbWVyTGVuZ3RoOw0KPiArDQo+ICsgIE9mZnNldCA9IFBhcnNl QWNwaSAoDQo+ICsgICAgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAgICAyLA0KPiArICAg ICAgICAgICAgICJHVCBCbG9jayIsDQo+ICsgICAgICAgICAgICAgUHRyLA0KPiArICAgICAgICAg ICAgIExlbmd0aCwNCj4gKyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChHdEJsb2NrUGFyc2Vy KQ0KPiArICAgICAgICAgICAgICk7DQo+ICsgIEdUQmxvY2tUaW1lckxlbmd0aCA9ICgqR3RCbG9j a0xlbmd0aCAtIE9mZnNldCkgLyAoKkd0QmxvY2tUaW1lckNvdW50KTsNCj4gKyAgTGVuZ3RoIC09 IE9mZnNldDsNCj4gKw0KPiArICBpZiAoKkd0QmxvY2tUaW1lckNvdW50ICE9IDApIHsNCj4gKyAg ICBQdHIgKz0gKCpHdEJsb2NrVGltZXJPZmZzZXQpOw0KPiArICAgIEluZGV4ID0gMDsNCj4gKyAg ICB3aGlsZSAoKEluZGV4IDwgKCpHdEJsb2NrVGltZXJDb3VudCkpICYmIChMZW5ndGggPj0NCj4g R1RCbG9ja1RpbWVyTGVuZ3RoKSkgew0KPiArICAgICAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4g KyAgICAgICAgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAgICAgICAgMiwNCj4gKyAgICAg ICAgICAgICAgICAgIkdUIEJsb2NrIFRpbWVyIiwNCj4gKyAgICAgICAgICAgICAgICAgUHRyLA0K PiArICAgICAgICAgICAgICAgICBHVEJsb2NrVGltZXJMZW5ndGgsDQo+ICsgICAgICAgICAgICAg ICAgIFBBUlNFUl9QQVJBTVMgKEd0QmxvY2tUaW1lclBhcnNlcikNCj4gKyAgICAgICAgICAgICAg ICAgKTsNCj4gKyAgICAgIC8vIEluY3JlbWVudCBieSBHVCBCbG9jayBUaW1lciBzdHJ1Y3R1cmUg c2l6ZQ0KPiArICAgICAgUHRyICs9IE9mZnNldDsNCj4gKyAgICAgIExlbmd0aCAtPSBPZmZzZXQ7 DQo+ICsgICAgICBJbmRleCsrOw0KPiArICAgIH0NCj4gKw0KPiArICAgIGlmIChMZW5ndGggIT0g MCkgew0KPiArICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICAgIFByaW50ICgN Cj4gKyAgICAgICAgTCJFUlJPUjpHVCBCbG9jayBUaW1lciBsZW5ndGggbWlzbWF0Y2guIFVucGFy c2VkICVkIGJ5dGVzLlxuIiwNCj4gKyAgICAgICAgTGVuZ3RoDQo+ICsgICAgICAgICk7DQo+ICsg ICAgfQ0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUg UGxhdGZvcm0gV2F0Y2hkb2cgdGltZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQ b2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgd2F0Y2hkb2cgdGltZXIgZGF0YS4NCj4gKyAgQHBh cmFtIFtpbl0gTGVuZ3RoICBMZW5ndGggb2YgdGhlIHdhdGNoZG9nIHRpbWVyIHN0cnVjdHVyZS4N Cj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0R1bXBXYXRjaGRvZ1RpbWVyICgNCj4gKyAg SU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVUlOVDE2IExlbmd0aA0KPiArICApDQo+ICt7DQo+ICsg IFBhcnNlQWNwaSAoDQo+ICsgICAgVFJVRSwNCj4gKyAgICAyLA0KPiArICAgICJTQlNBIEdlbmVy aWMgV2F0Y2hkb2ciLA0KPiArICAgIFB0ciwNCj4gKyAgICBMZW5ndGgsDQo+ICsgICAgUEFSU0VS X1BBUkFNUyAoU0JTQUdlbmVyaWNXYXRjaGRvZ1BhcnNlcikNCj4gKyAgICApOw0KPiArfQ0KPiAr DQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgR1REVCB0YWJsZS4NCj4gKyAg V2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBHVERUIHRhYmxl IGFuZA0KPiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ICsgIFRoaXMg ZnVuY3Rpb24gYWxzbyBwYXJzZXMgdGhlIGZvbGxvd2luZyBwbGF0Zm9ybSB0aW1lciBzdHJ1Y3R1 cmVzOg0KPiArICAgIC0gR1QgQmxvY2sgdGltZXINCj4gKyAgICAtIFdhdGNoZG9nIHRpbWVyDQo+ ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFD UEkgdGFibGUgZmllbGRzLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAg ICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAg ICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBA cGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0K PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkg dGFibGUuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtQYXJzZUFjcGlHdGR0ICgNCj4g KyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQz MiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyIEluZGV4Ow0KPiArICBVSU5UOCogVGltZXJQdHI7DQo+ ICsNCj4gKyAgaWYgKCFUcmFjZSkgew0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsg IFBhcnNlQWNwaSAoDQo+ICsgICAgVFJVRSwNCj4gKyAgICAwLA0KPiArICAgICJHVERUIiwNCj4g KyAgICBQdHIsDQo+ICsgICAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICAgIFBBUlNFUl9QQVJBTVMg KEd0ZHRQYXJzZXIpDQo+ICsgICAgKTsNCj4gKw0KPiArICBpZiAoKkd0ZHRQbGF0Zm9ybVRpbWVy Q291bnQgIT0gMCkgew0KPiArICAgIFRpbWVyUHRyID0gUHRyICsgKCpHdGR0UGxhdGZvcm1UaW1l ck9mZnNldCk7DQo+ICsgICAgSW5kZXggPSAwOw0KPiArICAgIGRvIHsNCj4gKyAgICAgIC8vIFBh cnNlIHRoZSBQbGF0Zm9ybSBUaW1lciBIZWFkZXINCj4gKyAgICAgIFBhcnNlQWNwaSAoDQo+ICsg ICAgICAgIEZBTFNFLA0KPiArICAgICAgICAwLA0KPiArICAgICAgICBOVUxMLA0KPiArICAgICAg ICBUaW1lclB0ciwNCj4gKyAgICAgICAgNCwgIC8vIEdUIFBsYXRmb3JtIFRpbWVyIHN0cnVjdHVy ZSBoZWFkZXIgbGVuZ3RoLg0KPiArICAgICAgICBQQVJTRVJfUEFSQU1TIChHdFBsYXRmb3JtVGlt ZXJIZWFkZXJQYXJzZXIpDQo+ICsgICAgICAgICk7DQo+ICsgICAgICBzd2l0Y2ggKCpQbGF0Zm9y bVRpbWVyVHlwZSkgew0KPiArICAgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9HVERUX0dUX0JMT0NL Og0KPiArICAgICAgICAgIER1bXBHVEJsb2NrIChUaW1lclB0ciwgKlBsYXRmb3JtVGltZXJMZW5n dGgpOw0KPiArICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9H VERUX1NCU0FfR0VORVJJQ19XQVRDSERPRzoNCj4gKyAgICAgICAgICBEdW1wV2F0Y2hkb2dUaW1l ciAoVGltZXJQdHIsICpQbGF0Zm9ybVRpbWVyTGVuZ3RoKTsNCj4gKyAgICAgICAgICBicmVhazsN Cj4gKyAgICAgICAgZGVmYXVsdDoNCj4gKyAgICAgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgp Ow0KPiArICAgICAgICAgIFByaW50ICgNCj4gKyAgICAgICAgICAgIEwiRVJST1I6IElOVkFMSUQg UGxhdGZvcm0gVGltZXIgVHlwZSA9ICVkXG4iLA0KPiArICAgICAgICAgICAgKlBsYXRmb3JtVGlt ZXJUeXBlDQo+ICsgICAgICAgICAgICApOw0KPiArICAgICAgICAgIGJyZWFrOw0KPiArICAgICAg fSAvLyBzd2l0Y2gNCj4gKyAgICAgIFRpbWVyUHRyICs9ICgqUGxhdGZvcm1UaW1lckxlbmd0aCk7 DQo+ICsgICAgICBJbmRleCsrOw0KPiArICAgIH0gd2hpbGUgKEluZGV4IDwgKkd0ZHRQbGF0Zm9y bVRpbWVyQ291bnQpOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBSZWdpc3RlciB0aGUgcGFy c2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0 aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUg U3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRo ZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVE ICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfSU5W QUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiArICBAcmV0dmFsIEVGSV9P VVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VG SUFQSQ0KPiArR3RkdFBhcnNlckxpYkNvbnN0cnVjdG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hB TkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RF TV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBS ZWdpc3RlclBhcnNlciAoDQo+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9HRU5FUklDX1RJTUVS X0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gKyAgICAgICAgICAgUGFyc2VBY3BpR3Rk dA0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogRGVyZWdpc3RlciB0aGUgcGFy c2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0 aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUg U3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRo ZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAg ICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4NCj4gKyovDQo+ICtFRklfU1RBVFVT DQo+ICtFRklBUEkNCj4gK0d0ZHRQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4gKyAgSU4gQ09OU1Qg RUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gICAgICAgRUZJ X1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIHJl dHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgICAgICAgICAgRUZJX0FDUElfNl8yX0dFTkVS SUNfVElNRVJfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFDQo+ICsgICAgICAgICAgICk7DQo+ ICt9DQo+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9QYXJzZXJzL0d0ZHQvR3RkdFBhcnNlcg0KPiBMaWIuaW5mDQo+IGIvU2hlbGxQ a2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9HdGR0L0d0ZHRQ YXJzZXINCj4gTGliLmluZg0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYmY5YmM5MzRlZjcxMTllNjM5 Nzk3ZmZhNQ0KPiBhZDI0MmM1ZTE5YjBmNQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1No ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvR3RkdC9H dGR0UGFyc2VyDQo+IExpYi5pbmYNCj4gQEAgLTAsMCArMSwzMyBAQA0KPiArIyMgQGZpbGUNCj4g KyMNCj4gKyMgIENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmln aHRzIHJlc2VydmVkLg0KPiArIw0KPiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55 aW5nIG1hdGVyaWFscw0KPiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRl ciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ICsjICB3 aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhl IGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcv bGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsjDQo+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNU UklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4g KyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJ VEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsjIw0KPiArDQo+ICtbRGVmaW5lc10NCj4g KyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ICsgIEJBU0VfTkFNRSAgICAgID0gR3Rk dFBhcnNlckxpYg0KPiArICBGSUxFX0dVSUQgICAgICA9IDQ2MzhBNTcyLTU5QzAtNEFBRi1COTkw LUI5NUZBNjdEOTY1Ng0KPiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiArICBNT0RVTEVfVFlQ RSAgICA9IERYRV9EUklWRVINCj4gKyAgTElCUkFSWV9DTEFTUyAgPSBOVUxMfERYRV9EUklWRVIN Cj4gKyAgQ09OU1RSVUNUT1IgICAgPSBHdGR0UGFyc2VyTGliQ29uc3RydWN0b3INCj4gKyAgREVT VFJVQ1RPUiAgICAgPSBHdGR0UGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiArDQo+ICtbU291cmNlc10N Cj4gKyAgR3RkdFBhcnNlci5jDQo+ICsNCj4gK1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBr Zy5kZWMNCj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVN b2R1bGVQa2cuZGVjDQo+ICsNCj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gKyAgQWNwaVBhcnNlckxp Yg0KPiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvUGFyc2Vycy9Jb3J0L0lvcnRQYXJzZXIuYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvSW9ydC9Jb3J0UGFyc2VyLmMNCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMC4uMDVjMmVlNTNjNDQ5OGUxYmNkM2RmYWJlMQ0KPiA0MzczOTZkMWM4 MDcyNTYNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0lvcnQvSW9ydFBhcnNlci5jDQo+IEBAIC0w LDAgKzEsNzQxIEBADQo+ICsvKioNCj4gKyAgSU9SVCB0YWJsZSBwYXJzZXINCj4gKw0KPiArICBD b3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiAr ICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29u ZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhp cyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBm b3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2Uu cGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBM SUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBP UiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJ RUQuDQo+ICsNCj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ICsgICAgLSBJTyBSZW1hcHBpbmcg VGFibGUsIFBsYXRmb3JtIERlc2lnbiBEb2N1bWVudCwgUmV2aXNpb24gQywgMTUgTWF5DQo+IDIw MTcNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9Jb1JlbWFwcGlu Z1RhYmxlLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9QcmludExpYi5oPg0KPiArI2luY2x1ZGUg PExpYnJhcnkvVWVmaUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVBh cnNlci5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+ DQo+ICsNCj4gKy8vIExvY2FsIHZhcmlhYmxlcw0KPiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05f SEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ICsNCj4gKy8qKiBUaGUgRUlPUlRfTk9ERSBlbnVt IGRlc2NyaWJlcyB0aGUgSU9SVCBOb2RlIHR5cGVzLg0KPiArKi8NCj4gK3R5cGVkZWYgZW51bSBJ b3J0Tm9kZSB7DQo+ICsgIEVJT1JUX05PREVfSVRTX0dST1VQLCAgICAgICAgLy8vPCBJVFMgR3Jv dXAgbm9kZQ0KPiArICBFSU9SVF9OT0RFX05BTUVEX0NPTVBPTkVOVCwgIC8vLzwgTmFtZWQgQ29t cG9uZW50IG5vZGUNCj4gKyAgRUlPUlRfTk9ERV9ST09UX0NPTVBMRVgsICAgICAvLy88IFJvb3Qg Q29tcGxleCBub2RlDQo+ICsgIEVJT1JUX05PREVfU01NVVYxX1YyLCAgICAgICAgLy8vPCBTTU1V IHYxL3YyIG5vZGUNCj4gKyAgRUlPUlRfTk9ERV9TTU1VVjMsICAgICAgICAgICAvLy88IFNNTVUg djMgbm9kZQ0KPiArICBFSU9SVF9OT0RFX1BNQ0csICAgICAgICAgICAgIC8vLzwgUE1DIGdyb3Vw IG5vZGUNCj4gKyAgRUlPUlRfTk9ERV9NQVgNCj4gK30gRUlPUlRfTk9ERTsNCj4gKw0KPiArLy8g TG9jYWwgVmFyaWFibGVzDQo+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBJb3J0Tm9kZUNvdW50Ow0K PiArU1RBVElDIENPTlNUIFVJTlQzMiogSW9ydE5vZGVPZmZzZXQ7DQo+ICsNCj4gK1NUQVRJQyBD T05TVCBVSU5UOCogSW9ydE5vZGVUeXBlOw0KPiArU1RBVElDIENPTlNUIFVJTlQxNiogSW9ydE5v ZGVMZW5ndGg7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBJb3J0SWRNYXBwaW5nQ291bnQ7DQo+ ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBJb3J0SWRNYXBwaW5nT2Zmc2V0Ow0KPiArDQo+ICtTVEFU SUMgQ09OU1QgVUlOVDMyKiBJbnRlcnJ1cHRDb250ZXh0Q291bnQ7DQo+ICtTVEFUSUMgQ09OU1Qg VUlOVDMyKiBJbnRlcnJ1cHRDb250ZXh0T2Zmc2V0Ow0KPiArU1RBVElDIENPTlNUIFVJTlQzMiog UG11SW50ZXJydXB0Q291bnQ7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBQbXVJbnRlcnJ1cHRP ZmZzZXQ7DQo+ICsNCj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIEl0c0NvdW50Ow0KPiArDQo+ICsv KiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIElEIE1hcHBpbmcgYXJyYXkgY291bnQgZm9y IHRoZSBJVFMgbm9kZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8g dGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBv aW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAg ICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVh ZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArVmFsaWRhdGVJdHNJZE1hcHBpbmdD b3VudCAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsg ICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgSUQgTWFwcGluZyBh cnJheSBvZmZzZXQgZm9yIHRoZSBJVFMgbm9kZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIg ICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0g W2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcu IHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhl IEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArVmFsaWRh dGVJdHNJZEFycmF5UmVmZXJlbmNlICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVk9J RCogIENvbnRleHQNCj4gKyAgKTsNCj4gKw0KPiArLyoqIEhlbHBlciBNYWNybyBmb3IgcG9wdWxh dGluZyB0aGUgSU9SVCBOb2RlIGhlYWRlciBpbiB0aGUgQUNQSV9QQVJTRVINCj4gKyAgICBhcnJh eS4NCj4gKw0KPiArICBAcGFyYW0gW291dF0gVmFsaWRhdGVJZE1hcHBpbmdDb3VudCAgICBPcHRp b25hbCBwb2ludGVyIHRvIGEgZnVuY3Rpb24gZm9yDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpbmcgdGhlIElEIE1hcHBpbmcgY291bnQuDQo+ICsg IEBwYXJhbSBbb3V0XSBWYWxpZGF0ZUlkQXJyYXlSZWZlcmVuY2UgIE9wdGlvbmFsIHBvaW50ZXIg dG8gYSBmdW5jdGlvbiBmb3INCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRhdGluZyB0aGUgSUQgQXJyYXkgcmVmZXJlbmNlLg0KPiArKi8NCj4gKyNkZWZp bmUgUEFSU0VfSU9SVF9OT0RFX0hFQURFUihWYWxpZGF0ZUlkTWFwcGluZ0NvdW50LCAgICAgICAg ICAgICAgICAgICBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVJ ZEFycmF5UmVmZXJlbmNlKSAgICAgICAgICAgICAgICAgXA0KPiArICB7IEwiVHlwZSIsIDEsIDAs IEwiJWQiLCBOVUxMLCAoVk9JRCoqKSZJb3J0Tm9kZVR5cGUsIE5VTEwsIE5VTEwgfSwgICAgIFwN Cj4gKyAgeyBMIkxlbmd0aCIsIDIsIDEsIEwiJWQiLCBOVUxMLCAoVk9JRCoqKSZJb3J0Tm9kZUxl bmd0aCwgTlVMTCwgTlVMTCB9LCBcDQo+ICsgIHsgTCJSZXZpc2lvbiIsIDEsIDMsIEwiJWQiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMIH0sICAgICAgICAgICAgICAgICAgXA0KPiArICB7IEwiUmVz ZXJ2ZWQiLCA0LCA0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMIH0sICAgICAgICAg ICAgICAgIFwNCj4gKyAgeyBMIk51bWJlciBvZiBJRCBtYXBwaW5ncyIsIDQsIDgsIEwiJWQiLCBO VUxMLCAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgKFZPSUQqKikmSW9ydElkTWFw cGluZ0NvdW50LCBWYWxpZGF0ZUlkTWFwcGluZ0NvdW50LCBOVUxMIH0sICAgICAgICAgXA0KPiAr ICB7IEwiUmVmZXJlbmNlIHRvIElEIEFycmF5IiwgNCwgMTIsIEwiMHgleCIsIE5VTEwsICAgICAg ICAgICAgICAgICAgICAgIFwNCj4gKyAgICAoVk9JRCoqKSZJb3J0SWRNYXBwaW5nT2Zmc2V0LCBW YWxpZGF0ZUlkQXJyYXlSZWZlcmVuY2UsIE5VTEwgfQ0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJT RVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgQUNQSSBJT1JUIFRhYmxlDQo+ICsqLw0KPiArU1RBVElD IENPTlNUIEFDUElfUEFSU0VSIElvcnRQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfQUNQSV9IRUFE RVIgKCZBY3BpSGRySW5mbyksDQo+ICsgIHtMIk51bWJlciBvZiBJT1JUIE5vZGVzIiwgNCwgMzYs IEwiJWQiLCBOVUxMLA0KPiArICAgKFZPSUQqKikmSW9ydE5vZGVDb3VudCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIk9mZnNldCB0byBBcnJheSBvZiBJT1JUIE5vZGVzIiwgNCwgNDAsIEwiMHgleCIs IE5VTEwsDQo+ICsgICAoVk9JRCoqKSZJb3J0Tm9kZU9mZnNldCwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIlJlc2VydmVkIiwgNCwgNDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSU9S VCBub2RlIGhlYWRlciBzdHJ1Y3R1cmUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFS U0VSIElvcnROb2RlSGVhZGVyUGFyc2VyW10gPSB7DQo+ICsgIFBBUlNFX0lPUlRfTk9ERV9IRUFE RVIgKE5VTEwsIE5VTEwpDQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkg ZGVzY3JpYmluZyB0aGUgSU9SVCBTTU1VdjEvMiBub2RlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05T VCBBQ1BJX1BBUlNFUiBJb3J0Tm9kZVNtbXVWMVYyUGFyc2VyW10gPSB7DQo+ICsgIFBBUlNFX0lP UlRfTk9ERV9IRUFERVIgKE5VTEwsIE5VTEwpLA0KPiArICB7TCJCYXNlIEFkZHJlc3MiLCA4LCAx NiwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJTcGFuIiwgOCwg MjQsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTW9kZWwiLCA0 LCAzMiwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJGbGFncyIsIDQs IDM2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVmZXJlbmNl IHRvIEdsb2JhbCBJbnRlcnJ1cHQgQXJyYXkiLCA0LCA0MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwNCj4gKyAgIE5VTEx9LA0KPiArICB7TCJOdW1iZXIgb2YgY29udGV4dCBpbnRlcnJ1cHRz IiwgNCwgNDQsIEwiJWQiLCBOVUxMLA0KPiArICAgKFZPSUQqKikmSW50ZXJydXB0Q29udGV4dENv dW50LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVmZXJlbmNlIHRvIENvbnRleHQgSW50ZXJydXB0 IEFycmF5IiwgNCwgNDgsIEwiMHgleCIsIE5VTEwsDQo+ICsgICAoVk9JRCoqKSZJbnRlcnJ1cHRD b250ZXh0T2Zmc2V0LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTnVtYmVyIG9mIFBNVSBJbnRlcnJ1 cHRzIiwgNCwgNTIsIEwiJWQiLCBOVUxMLA0KPiArICAgKFZPSUQqKikmUG11SW50ZXJydXB0Q291 bnQsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZWZlcmVuY2UgdG8gUE1VIEludGVycnVwdCBBcnJh eSIsIDQsIDU2LCBMIjB4JXgiLCBOVUxMLA0KPiArICAgKFZPSUQqKikmUG11SW50ZXJydXB0T2Zm c2V0LCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICAvLyBJbnRlcnJ1cHQgQXJyYXkNCj4gKyAge0wi U01NVV9OU2dJcnB0IiwgNCwgNjAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCJTTU1VX05TZ0lycHQgaW50ZXJydXB0IGZsYWdzIiwgNCwgNjQsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsDQo+IE5VTEx9LA0KPiArICB7TCJTTU1VX05TZ0NmZ0lycHQiLCA0LCA2 OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlNNTVVfTlNnQ2Zn SXJwdCBpbnRlcnJ1cHQgZmxhZ3MiLCA0LCA3MiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwN Cj4gTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmli aW5nIHRoZSBTTU1VdjEvMiBOb2RlIEludGVycnVwdCBBcnJheS4NCj4gKyovDQo+ICtTVEFUSUMg Q09OU1QgQUNQSV9QQVJTRVIgSW50ZXJydXB0QXJyYXlQYXJzZXJbXSA9IHsNCj4gKyAge0wiICBJ bnRlcnJ1cHQgR1NJViIsIDQsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCIgIEZsYWdzIiwgNCwgNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0N Cj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBJ T1JUIElEIE1hcHBpbmcuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIElvcnRO b2RlSWRNYXBwaW5nUGFyc2VyW10gPSB7DQo+ICsgIHtMIiAgSW5wdXQgYmFzZSIsIDQsIDAsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCIgIE51bWJlciBvZiBJRHMi LCA0LCA0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiICBPdXRw dXQgYmFzZSIsIDQsIDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7 TCIgIE91dHB1dCByZWZlcmVuY2UiLCA0LCAxMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ICsgIHtMIiAgRmxhZ3MiLCA0LCAxNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmli aW5nIHRoZSBJT1JUIFNNTVV2MyBub2RlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BB UlNFUiBJb3J0Tm9kZVNtbXVWM1BhcnNlcltdID0gew0KPiArICBQQVJTRV9JT1JUX05PREVfSEVB REVSIChOVUxMLCBOVUxMKSwNCj4gKyAge0wiQmFzZSBBZGRyZXNzIiwgOCwgMTYsIEwiMHglbHgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiRmxhZ3MiLCA0LCAyNCwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgNCwgMjgsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJWQVRPUyBBZGRyZXNzIiwg OCwgMzIsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTW9kZWwi LCA0LCA0MCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJFdmVudCIs IDQsIDQ0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUFJJIiwg NCwgNDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJHRVJSIiwg NCwgNTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJTeW5jIiwg NCwgNTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsv KiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSU9SVCBJVFMgbm9kZS4NCj4g KyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgSW9ydE5vZGVJdHNQYXJzZXJbXSA9IHsN Cj4gKyAgUEFSU0VfSU9SVF9OT0RFX0hFQURFUiAoDQo+ICsgICAgVmFsaWRhdGVJdHNJZE1hcHBp bmdDb3VudCwNCj4gKyAgICBWYWxpZGF0ZUl0c0lkQXJyYXlSZWZlcmVuY2UNCj4gKyAgICApLA0K PiArICB7TCIgIE51bWJlciBvZiBJVFNzIiwgNCwgMTYsIEwiJWQiLCBOVUxMLCAoVk9JRCoqKSZJ dHNDb3VudCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBk ZXNjcmliaW5nIHRoZSBJVFMgSUQuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VS IEl0c0lkUGFyc2VyW10gPSB7DQo+ICsgIHsgTCIgIEdJQyBJVFMgSWRlbnRpZmllciIsIDQsIDAs IEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMIH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BB UlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBJT1JUIE5hbWVzIENvbXBvbmVudCBub2RlLg0KPiAr Ki8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJb3J0Tm9kZU5hbWVkQ29tcG9uZW50UGFy c2VyW10gPSB7DQo+ICsgIFBBUlNFX0lPUlRfTk9ERV9IRUFERVIgKE5VTEwsIE5VTEwpLA0KPiAr ICB7TCJOb2RlIEZsYWdzIiwgNCwgMTYsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gKyAge0wiTWVtb3J5IGFjY2VzcyBwcm9wZXJ0aWVzIiwgOCwgMjAsIEwiMHglbHgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiRGV2aWNlIG1lbW9yeSBhZGRyZXNzIHNpemUg bGltaXQiLCAxLCAyOCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsDQo+IE5VTEx9DQo+ICt9Ow0K PiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSU9SVCBSb290 IENvbXBsZXggbm9kZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgSW9ydE5v ZGVSb290Q29tcGxleFBhcnNlcltdID0gew0KPiArICBQQVJTRV9JT1JUX05PREVfSEVBREVSIChO VUxMLCBOVUxMKSwNCj4gKyAge0wiTWVtb3J5IGFjY2VzcyBwcm9wZXJ0aWVzIiwgOCwgMTYsIEwi MHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQVRTIEF0dHJpYnV0ZSIs IDQsIDI0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUENJIFNl Z21lbnQgbnVtYmVyIiwgNCwgMjgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSU9S VCBQTUNHIG5vZGUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIElvcnROb2Rl UG1jZ1BhcnNlcltdID0gew0KPiArICBQQVJTRV9JT1JUX05PREVfSEVBREVSIChOVUxMLCBOVUxM KSwNCj4gKyAge0wiQmFzZSBBZGRyZXNzIiwgOCwgMTYsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gKyAge0wiT3ZlcmZsb3cgaW50ZXJydXB0IEdTSVYiLCA0LCAyNCwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIk5vZGUgcmVmZXJlbmNlIiwg NCwgMjgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArfTsNCj4gKw0KPiAr LyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBJRCBNYXBwaW5nIGFycmF5IGNvdW50IGZv ciB0aGUgSVRTIG5vZGUuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRv IHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQ b2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhl YWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK1ZhbGlkYXRlSXRzSWRNYXBwaW5n Q291bnQgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBWT0lEKiAgICAgQ29udGV4dA0KPiAr ICApDQo+ICt7DQo+ICsgIGlmICgqKFVJTlQzMiopUHRyICE9IDApIHsNCj4gKyAgICBJbmNyZW1l bnRFcnJvckNvdW50ICgpOw0KPiArICAgIFByaW50IChMIlxuRVJST1I6IElPUlQgSUQgTWFwcGlu ZyBjb3VudCBtdXN0IGJlIHplcm8uIik7DQo+ICsgIH0NCj4gK30NCj4gKw0KPiArLyoqIFRoaXMg ZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBJRCBNYXBwaW5nIGFycmF5IG9mZnNldCBmb3IgdGhlIElU UyBub2RlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3Rh cnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0 byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiArICAgICAgICAgICAg ICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtWYWxpZGF0ZUl0c0lkQXJyYXlSZWZlcmVuY2Ug KA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArICApDQo+ ICt7DQo+ICsgIGlmICgqKFVJTlQzMiopUHRyICE9IDApIHsNCj4gKyAgICBJbmNyZW1lbnRFcnJv ckNvdW50ICgpOw0KPiArICAgIFByaW50IChMIlxuRVJST1I6IElPUlQgSUQgTWFwcGluZyBvZmZz ZXQgbXVzdCBiZSB6ZXJvLiIpOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0 aW9uIHBhcnNlcyB0aGUgSU9SVCBOb2RlIElkIE1hcHBpbmcgYXJyYXkuDQo+ICsNCj4gKyAgQHBh cmFtIFtpbl0gUHRyICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIElPUlQg VGFibGUuDQo+ICsgIEBwYXJhbSBbaW5dIE1hcHBpbmdDb3VudCAgIFRoZSBJRCBNYXBwaW5nIGNv dW50Lg0KPiArICBAcGFyYW0gW2luXSBNYXBwaW5nT2Zmc2V0ICBUaGUgb2Zmc2V0IG9mIHRoZSBJ RCBNYXBwaW5nIGFycmF5DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhl IHN0YXJ0IG9mIHRoZSBJT1JUIHRhYmxlLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiAr RHVtcElvcnROb2RlSWRNYXBwaW5ncyAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFVJ TlQzMiBNYXBwaW5nQ291bnQsDQo+ICsgIElOIFVJTlQzMiBNYXBwaW5nT2Zmc2V0DQo+ICsgICkN Cj4gK3sNCj4gKyAgVUlOVDgqIElkTWFwcGluZ1B0cjsNCj4gKyAgVUlOVDMyIEluZGV4Ow0KPiAr ICBVSU5UMzIgT2Zmc2V0Ow0KPiArICBDSEFSOCAgQnVmZmVyWzQwXTsgIC8vIFVzZWQgZm9yIEFz Y2lpTmFtZSBwYXJhbSBvZiBQYXJzZUFjcGkNCj4gKw0KPiArICBJZE1hcHBpbmdQdHIgPSBQdHIg KyBNYXBwaW5nT2Zmc2V0Ow0KPiArICBJbmRleCA9IDA7DQo+ICsgIHdoaWxlIChJbmRleCA8IE1h cHBpbmdDb3VudCkgew0KPiArICAgIEFzY2lpU1ByaW50ICgNCj4gKyAgICAgIEJ1ZmZlciwNCj4g KyAgICAgIHNpemVvZiAoQnVmZmVyKSwNCj4gKyAgICAgICJJRCBNYXBwaW5nIFslZF0iLA0KPiAr ICAgICAgSW5kZXgNCj4gKyAgICAgICk7DQo+ICsgICAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4g KyAgICAgICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAgICAgICAgICA0LA0KPiArICAgICAgICAg ICAgICAgQnVmZmVyLA0KPiArICAgICAgICAgICAgICAgSWRNYXBwaW5nUHRyLA0KPiArICAgICAg ICAgICAgICAgMjAsDQo+ICsgICAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChJb3J0Tm9kZUlk TWFwcGluZ1BhcnNlcikNCj4gKyAgICAgICAgICAgICAgICk7DQo+ICsgICAgSWRNYXBwaW5nUHRy ICs9IE9mZnNldDsNCj4gKyAgICBJbmRleCsrOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBU aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgSU9SVCBTTU1VdjEvMiBub2RlLg0KPiArDQo+ICsgIEBw YXJhbSBbaW5dIFB0ciAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZm ZXIuDQo+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICAgICAgIExlbmd0aCBvZiB0aGUgYnVmZmVy Lg0KPiArICBAcGFyYW0gW2luXSBNYXBwaW5nQ291bnQgICBUaGUgSUQgTWFwcGluZyBjb3VudC4N Cj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ09mZnNldCAgVGhlIG9mZnNldCBvZiB0aGUgSUQgTWFw cGluZyBhcnJheQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBzdGFy dCBvZiB0aGUgSU9SVCB0YWJsZS4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0R1bXBJ b3J0Tm9kZVNtbXVWMVYyICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVUlOVDE2IExl bmd0aCwNCj4gKyAgSU4gVUlOVDMyIE1hcHBpbmdDb3VudCwNCj4gKyAgSU4gVUlOVDMyIE1hcHBp bmdPZmZzZXQNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UMzIgSW5kZXg7DQo+ICsgIFVJTlQzMiBP ZmZzZXQ7DQo+ICsgIENIQVI4ICBCdWZmZXJbNTBdOyAgLy8gVXNlZCBmb3IgQXNjaWlOYW1lIHBh cmFtIG9mIFBhcnNlQWNwaQ0KPiArDQo+ICsgIFVJTlQ4KiBBcnJheVB0cjsNCj4gKw0KPiArICBQ YXJzZUFjcGkgKA0KPiArICAgIFRSVUUsDQo+ICsgICAgMiwNCj4gKyAgICAiU01NVXYxIG9yIFNN TVV2MiBOb2RlIiwNCj4gKyAgICBQdHIsDQo+ICsgICAgTGVuZ3RoLA0KPiArICAgIFBBUlNFUl9Q QVJBTVMgKElvcnROb2RlU21tdVYxVjJQYXJzZXIpDQo+ICsgICAgKTsNCj4gKw0KPiArICBBcnJh eVB0ciA9IFB0ciArICpJbnRlcnJ1cHRDb250ZXh0T2Zmc2V0Ow0KPiArICBJbmRleCA9IDA7DQo+ ICsgIHdoaWxlIChJbmRleCA8ICpJbnRlcnJ1cHRDb250ZXh0Q291bnQpIHsNCj4gKyAgICBBc2Np aVNQcmludCAoDQo+ICsgICAgICBCdWZmZXIsDQo+ICsgICAgICBzaXplb2YgKEJ1ZmZlciksDQo+ ICsgICAgICAiQ29udGV4dCBJbnRlcnJ1cHRzIEFycmF5IFslZF0iLA0KPiArICAgICAgSW5kZXgN Cj4gKyAgICAgICk7DQo+ICsgICAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICAg ICAgIFRSVUUsDQo+ICsgICAgICAgICAgICAgICA0LA0KPiArICAgICAgICAgICAgICAgQnVmZmVy LA0KPiArICAgICAgICAgICAgICAgQXJyYXlQdHIsDQo+ICsgICAgICAgICAgICAgICA4LA0KPiAr ICAgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoSW50ZXJydXB0QXJyYXlQYXJzZXIpDQo+ICsg ICAgICAgICAgICAgICApOw0KPiArICAgIEFycmF5UHRyICs9IE9mZnNldDsNCj4gKyAgICBJbmRl eCsrOw0KPiArICB9DQo+ICsNCj4gKyAgQXJyYXlQdHIgPSBQdHIgKyAqUG11SW50ZXJydXB0T2Zm c2V0Ow0KPiArICBJbmRleCA9IDA7DQo+ICsgIHdoaWxlIChJbmRleCA8ICpQbXVJbnRlcnJ1cHRD b3VudCkgew0KPiArICAgIEFzY2lpU1ByaW50ICgNCj4gKyAgICAgIEJ1ZmZlciwNCj4gKyAgICAg IHNpemVvZiAoQnVmZmVyKSwNCj4gKyAgICAgICJQTVUgSW50ZXJydXB0cyBBcnJheSBbJWRdIiwN Cj4gKyAgICAgIEluZGV4DQo+ICsgICAgICApOw0KPiArICAgIE9mZnNldCA9IFBhcnNlQWNwaSAo DQo+ICsgICAgICAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgICAgICAgNCwNCj4gKyAgICAg ICAgICAgICAgIEJ1ZmZlciwNCj4gKyAgICAgICAgICAgICAgIEFycmF5UHRyLA0KPiArICAgICAg ICAgICAgICAgOCwNCj4gKyAgICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEludGVycnVwdEFy cmF5UGFyc2VyKQ0KPiArICAgICAgICAgICAgICAgKTsNCj4gKyAgICBBcnJheVB0ciArPSBPZmZz ZXQ7DQo+ICsgICAgSW5kZXgrKzsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmICgqSW9ydElkTWFwcGlu Z0NvdW50ICE9IDApIHsNCj4gKyAgICBEdW1wSW9ydE5vZGVJZE1hcHBpbmdzIChQdHIsIE1hcHBp bmdDb3VudCwgTWFwcGluZ09mZnNldCk7DQo+ICsgIH0NCj4gK30NCj4gKw0KPiArLyoqIFRoaXMg ZnVuY3Rpb24gcGFyc2VzIHRoZSBJT1JUIFNNTVV2MyBub2RlLg0KPiArDQo+ICsgIEBwYXJhbSBb aW5dIFB0ciAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICAgICAgIExlbmd0aCBvZiB0aGUgYnVmZmVyLg0KPiAr ICBAcGFyYW0gW2luXSBNYXBwaW5nQ291bnQgICBUaGUgSUQgTWFwcGluZyBjb3VudC4NCj4gKyAg QHBhcmFtIFtpbl0gTWFwcGluZ09mZnNldCAgVGhlIG9mZnNldCBvZiB0aGUgSUQgTWFwcGluZyBh cnJheQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBzdGFydCBvZiB0 aGUgSU9SVCB0YWJsZS4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0R1bXBJb3J0Tm9k ZVNtbXVWMyAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFVJTlQxNiBMZW5ndGgsDQo+ ICsgIElOIFVJTlQzMiBNYXBwaW5nQ291bnQsDQo+ICsgIElOIFVJTlQzMiBNYXBwaW5nT2Zmc2V0 DQo+ICsgICkNCj4gK3sNCj4gKyAgUGFyc2VBY3BpICgNCj4gKyAgICBUUlVFLA0KPiArICAgIDIs DQo+ICsgICAgIlNNTVVWMyBOb2RlIiwNCj4gKyAgICBQdHIsDQo+ICsgICAgTGVuZ3RoLA0KPiAr ICAgIFBBUlNFUl9QQVJBTVMgKElvcnROb2RlU21tdVYzUGFyc2VyKQ0KPiArICAgICk7DQo+ICsN Cj4gKyAgaWYgKCpJb3J0SWRNYXBwaW5nQ291bnQgIT0gMCkgew0KPiArICAgIER1bXBJb3J0Tm9k ZUlkTWFwcGluZ3MgKFB0ciwgTWFwcGluZ0NvdW50LCBNYXBwaW5nT2Zmc2V0KTsNCj4gKyAgfQ0K PiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIElPUlQgSVRTIG5vZGUu DQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3Rh cnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICAgICAgICAgTGVuZ3Ro IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtEdW1wSW9ydE5v ZGVJdHMgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBVSU5UMTYgTGVuZ3RoDQo+ICsg ICkNCj4gK3sNCj4gKyAgVUlOVDMyIE9mZnNldDsNCj4gKyAgVUlOVDMyIEluZGV4Ow0KPiArICBV SU5UOCogSXRzSWRQdHI7DQo+ICsgIENIQVI4ICBCdWZmZXJbODBdOyAgLy8gVXNlZCBmb3IgQXNj aWlOYW1lIHBhcmFtIG9mIFBhcnNlQWNwaQ0KPiArDQo+ICsgIE9mZnNldCA9IFBhcnNlQWNwaSAo DQo+ICsgICAgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAgICAyLA0KPiArICAgICAgICAg ICAgICJJVFMgTm9kZSIsDQo+ICsgICAgICAgICAgICAgUHRyLA0KPiArICAgICAgICAgICAgIExl bmd0aCwNCj4gKyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChJb3J0Tm9kZUl0c1BhcnNlcikN Cj4gKyAgICAgICAgICAgICApOw0KPiArDQo+ICsgIEl0c0lkUHRyID0gUHRyICsgT2Zmc2V0Ow0K PiArICBJbmRleCA9IDA7DQo+ICsgIHdoaWxlIChJbmRleCA8ICpJdHNDb3VudCkgew0KPiArICAg IEFzY2lpU1ByaW50ICgNCj4gKyAgICAgIEJ1ZmZlciwNCj4gKyAgICAgIHNpemVvZiAoQnVmZmVy KSwNCj4gKyAgICAgICJHSUMgSVRTIElkZW50aWZpZXIgQXJyYXkgWyVkXSIsDQo+ICsgICAgICBJ bmRleA0KPiArICAgICAgKTsNCj4gKyAgICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiArICAgICAg ICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAgICAgIDQsDQo+ICsgICAgICAgICAgICAgICBC dWZmZXIsDQo+ICsgICAgICAgICAgICAgICBJdHNJZFB0ciwNCj4gKyAgICAgICAgICAgICAgIDQs DQo+ICsgICAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChJdHNJZFBhcnNlcikNCj4gKyAgICAg ICAgICAgICAgICk7DQo+ICsgICAgSXRzSWRQdHIgKz0gT2Zmc2V0Ow0KPiArICAgIEluZGV4Kys7 DQo+ICsgIH0NCj4gKw0KPiArICAvLyBOb3RlOiBJVFMgZG9lcyBub3QgaGF2ZSB0aGUgSUQgTWFw cGluZ3MgQXJyYXkNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJ T1JUIE5hbWVkIENvbXBvbmVudCBub2RlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAg ICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBb aW5dIExlbmd0aCAgICAgICAgIExlbmd0aCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2lu XSBNYXBwaW5nQ291bnQgICBUaGUgSUQgTWFwcGluZyBjb3VudC4NCj4gKyAgQHBhcmFtIFtpbl0g TWFwcGluZ09mZnNldCAgVGhlIG9mZnNldCBvZiB0aGUgSUQgTWFwcGluZyBhcnJheQ0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBzdGFydCBvZiB0aGUgSU9SVCB0YWJs ZS4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0R1bXBJb3J0Tm9kZU5hbWVkQ29tcG9u ZW50ICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVUlOVDE2IExlbmd0aCwNCj4gKyAg SU4gVUlOVDMyIE1hcHBpbmdDb3VudCwNCj4gKyAgSU4gVUlOVDMyIE1hcHBpbmdPZmZzZXQNCj4g KyAgKQ0KPiArew0KPiArICBVSU5UMzIgT2Zmc2V0Ow0KPiArICBVSU5UMzIgSW5kZXg7DQo+ICsg IFVJTlQ4KiBEZXZpY2VOYW1lUHRyOw0KPiArICBVSU5UMzIgRGV2aWNlTmFtZUxlbmd0aDsNCj4g Kw0KPiArICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiArICAgICAgICAgICAgIFRSVUUsDQo+ICsg ICAgICAgICAgICAgMiwNCj4gKyAgICAgICAgICAgICAiTmFtZWQgQ29tcG9uZW50IE5vZGUiLA0K PiArICAgICAgICAgICAgIFB0ciwNCj4gKyAgICAgICAgICAgICBMZW5ndGgsDQo+ICsgICAgICAg ICAgICAgUEFSU0VSX1BBUkFNUyAoSW9ydE5vZGVOYW1lZENvbXBvbmVudFBhcnNlcikNCj4gKyAg ICAgICAgICAgICApOw0KPiArDQo+ICsgIERldmljZU5hbWVQdHIgPSBQdHIgKyBPZmZzZXQ7DQo+ ICsgIC8vIEVzdGltYXRlIHRoZSBEZXZpY2UgTmFtZSBsZW5ndGgNCj4gKyAgRGV2aWNlTmFtZUxl bmd0aCA9IExlbmd0aCAtIE9mZnNldCAtIChNYXBwaW5nQ291bnQgKiAyMCk7DQo+ICsgIFByaW50 RmllbGROYW1lICgyLCBMIkRldmljZSBPYmplY3QgTmFtZSIpOw0KPiArICBJbmRleCA9IDA7DQo+ ICsgIHdoaWxlICgoSW5kZXggPCBEZXZpY2VOYW1lTGVuZ3RoKSAmJiAoRGV2aWNlTmFtZVB0cltJ bmRleF0gIT0gMCkpIHsNCj4gKyAgICBQcmludCAoTCIlYyIsIERldmljZU5hbWVQdHJbSW5kZXgr K10pOw0KPiArICB9DQo+ICsgIFByaW50IChMIlxuIik7DQo+ICsNCj4gKyAgaWYgKCpJb3J0SWRN YXBwaW5nQ291bnQgIT0gMCkgew0KPiArICAgIER1bXBJb3J0Tm9kZUlkTWFwcGluZ3MgKFB0ciwg TWFwcGluZ0NvdW50LCBNYXBwaW5nT2Zmc2V0KTsNCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsvKiog VGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIElPUlQgUm9vdCBDb21wbGV4IG5vZGUuDQo+ICsNCj4g KyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhl IGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICAgICAgICAgTGVuZ3RoIG9mIHRoZSBi dWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIE1hcHBpbmdDb3VudCAgIFRoZSBJRCBNYXBwaW5nIGNv dW50Lg0KPiArICBAcGFyYW0gW2luXSBNYXBwaW5nT2Zmc2V0ICBUaGUgb2Zmc2V0IG9mIHRoZSBJ RCBNYXBwaW5nIGFycmF5DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhl IHN0YXJ0IG9mIHRoZSBJT1JUIHRhYmxlLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiAr RHVtcElvcnROb2RlUm9vdENvbXBsZXggKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBV SU5UMTYgTGVuZ3RoLA0KPiArICBJTiBVSU5UMzIgTWFwcGluZ0NvdW50LA0KPiArICBJTiBVSU5U MzIgTWFwcGluZ09mZnNldA0KPiArICApDQo+ICt7DQo+ICsgIFBhcnNlQWNwaSAoDQo+ICsgICAg VFJVRSwNCj4gKyAgICAyLA0KPiArICAgICJSb290IENvbXBsZXggTm9kZSIsDQo+ICsgICAgUHRy LA0KPiArICAgIExlbmd0aCwNCj4gKyAgICBQQVJTRVJfUEFSQU1TIChJb3J0Tm9kZVJvb3RDb21w bGV4UGFyc2VyKQ0KPiArICAgICk7DQo+ICsNCj4gKyAgaWYgKCpJb3J0SWRNYXBwaW5nQ291bnQg IT0gMCkgew0KPiArICAgIER1bXBJb3J0Tm9kZUlkTWFwcGluZ3MgKFB0ciwgTWFwcGluZ0NvdW50 LCBNYXBwaW5nT2Zmc2V0KTsNCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlv biBwYXJzZXMgdGhlIElPUlQgUE1DRyBub2RlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAg ICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJh bSBbaW5dIExlbmd0aCAgICAgICAgIExlbmd0aCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0g W2luXSBNYXBwaW5nQ291bnQgICBUaGUgSUQgTWFwcGluZyBjb3VudC4NCj4gKyAgQHBhcmFtIFtp bl0gTWFwcGluZ09mZnNldCAgVGhlIG9mZnNldCBvZiB0aGUgSUQgTWFwcGluZyBhcnJheQ0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBzdGFydCBvZiB0aGUgSU9SVCB0 YWJsZS4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0R1bXBJb3J0Tm9kZVBtY2cgKA0K PiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBVSU5UMTYgTGVuZ3RoLA0KPiArICBJTiBVSU5U MzIgTWFwcGluZ0NvdW50LA0KPiArICBJTiBVSU5UMzIgTWFwcGluZ09mZnNldA0KPiArKQ0KPiAr ew0KPiArICBQYXJzZUFjcGkgKA0KPiArICAgIFRSVUUsDQo+ICsgICAgMiwNCj4gKyAgICAiUE1D RyBOb2RlIiwNCj4gKyAgICBQdHIsDQo+ICsgICAgTGVuZ3RoLA0KPiArICAgIFBBUlNFUl9QQVJB TVMgKElvcnROb2RlUG1jZ1BhcnNlcikNCj4gKyAgKTsNCj4gKw0KPiArICBpZiAoKklvcnRJZE1h cHBpbmdDb3VudCAhPSAwKSB7DQo+ICsgICAgRHVtcElvcnROb2RlSWRNYXBwaW5ncyAoUHRyLCBN YXBwaW5nQ291bnQsIE1hcHBpbmdPZmZzZXQpOw0KPiArICB9DQo+ICsNCj4gKyAgaWYgKCpJb3J0 SWRNYXBwaW5nQ291bnQgPiAxKSB7DQo+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4g KyAgICBQcmludCAoDQo+ICsgICAgICBMIkVSUk9SOiBJRCBtYXBwaW5nIG11c3Qgbm90IGJlIGdy ZWF0ZXIgdGhhbiAxLiBJZCBNYXBwaW5nIENvdW50DQo+ID0lZFxuIiwNCj4gKyAgICAgICpJb3J0 SWRNYXBwaW5nQ291bnQNCj4gKyAgICAgICk7DQo+ICsgIH0NCj4gK30NCj4gKw0KPiArLyoqIFRo aXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIElPUlQgdGFibGUuDQo+ICsgIFdoZW4gdHJhY2Ug aXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgSU9SVCB0YWJsZSBhbmQNCj4gKyAg dHJhY2VzIHRoZSBBQ1BJIGZpZWxkcy4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGFy c2VzIHRoZSBmb2xsb3dpbmcgbm9kZXM6DQo+ICsgICAgLSBJVFMgR3JvdXANCj4gKyAgICAtIE5h bWVkIENvbXBvbmVudA0KPiArICAgIC0gUm9vdCBDb21wbGV4DQo+ICsgICAgLSBTTU1VdjEvMg0K PiArICAgIC0gU01NVXYzDQo+ICsgICAgLSBQTUNHDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBh bHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQ SSBmaWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRv IHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5n dGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFi bGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsqLw0KPiArVk9JRA0K PiArRUZJQVBJDQo+ICtQYXJzZUFjcGlJb3J0ICgNCj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4g KyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiAr ICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMy IE9mZnNldDsNCj4gKyAgVUlOVDMyIEluZGV4Ow0KPiArICBVSU5UOCogTm9kZVB0cjsNCj4gKw0K PiArICBpZiAoIVRyYWNlKSB7DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsNCj4gKyAgUGFy c2VBY3BpICgNCj4gKyAgICBUUlVFLA0KPiArICAgIDAsDQo+ICsgICAgIklPUlQiLA0KPiArICAg IFB0ciwNCj4gKyAgICBBY3BpVGFibGVMZW5ndGgsDQo+ICsgICAgUEFSU0VSX1BBUkFNUyAoSW9y dFBhcnNlcikNCj4gKyAgICApOw0KPiArICBPZmZzZXQgPSAqSW9ydE5vZGVPZmZzZXQ7DQo+ICsg IE5vZGVQdHIgPSBQdHIgKyBPZmZzZXQ7DQo+ICsgIEluZGV4ID0gMDsNCj4gKw0KPiArICB3aGls ZSAoKEluZGV4IDwgKklvcnROb2RlQ291bnQpICYmIChPZmZzZXQgPCBBY3BpVGFibGVMZW5ndGgp KSB7DQo+ICsgICAgLy8gUGFyc2UgdGhlIElPUlQgTm9kZSBIZWFkZXINCj4gKyAgICBQYXJzZUFj cGkgKA0KPiArICAgICAgRkFMU0UsDQo+ICsgICAgICAwLA0KPiArICAgICAgIklPUlQgTm9kZSBI ZWFkZXIiLA0KPiArICAgICAgTm9kZVB0ciwNCj4gKyAgICAgIDE2LA0KPiArICAgICAgUEFSU0VS X1BBUkFNUyAoSW9ydE5vZGVIZWFkZXJQYXJzZXIpDQo+ICsgICAgICApOw0KPiArICAgIGlmICgq SW9ydE5vZGVMZW5ndGggPT0gMCkgew0KPiArICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsN Cj4gKyAgICAgIFByaW50IChMIkVSUk9SOiBQYXJzZXIgZXJyb3IuIEludmFsaWQgdGFibGUgZGF0 YS5cbiIpOw0KPiArICAgICAgcmV0dXJuOw0KPiArICAgIH0NCj4gKw0KPiArICAgIFByaW50Rmll bGROYW1lICgyLCBMIiogTm9kZSBPZmZzZXQgKiIpOw0KPiArICAgIFByaW50IChMIjB4JXhcbiIs IE9mZnNldCk7DQo+ICsNCj4gKyAgICBzd2l0Y2ggKCpJb3J0Tm9kZVR5cGUpIHsNCj4gKyAgICAg IGNhc2UgRUlPUlRfTk9ERV9JVFNfR1JPVVA6DQo+ICsgICAgICAgIER1bXBJb3J0Tm9kZUl0cyAo DQo+ICsgICAgICAgICAgTm9kZVB0ciwNCj4gKyAgICAgICAgICAqSW9ydE5vZGVMZW5ndGgNCj4g KyAgICAgICAgICApOw0KPiArICAgICAgICBicmVhazsNCj4gKyAgICAgIGNhc2UgRUlPUlRfTk9E RV9OQU1FRF9DT01QT05FTlQ6DQo+ICsgICAgICAgIER1bXBJb3J0Tm9kZU5hbWVkQ29tcG9uZW50 ICgNCj4gKyAgICAgICAgICBOb2RlUHRyLA0KPiArICAgICAgICAgICpJb3J0Tm9kZUxlbmd0aCwN Cj4gKyAgICAgICAgICAqSW9ydElkTWFwcGluZ0NvdW50LA0KPiArICAgICAgICAgICpJb3J0SWRN YXBwaW5nT2Zmc2V0DQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAg ICBjYXNlIEVJT1JUX05PREVfUk9PVF9DT01QTEVYOg0KPiArICAgICAgICBEdW1wSW9ydE5vZGVS b290Q29tcGxleCAoDQo+ICsgICAgICAgICAgTm9kZVB0ciwNCj4gKyAgICAgICAgICAqSW9ydE5v ZGVMZW5ndGgsDQo+ICsgICAgICAgICAgKklvcnRJZE1hcHBpbmdDb3VudCwNCj4gKyAgICAgICAg ICAqSW9ydElkTWFwcGluZ09mZnNldA0KPiArICAgICAgICAgICk7DQo+ICsgICAgICAgIGJyZWFr Ow0KPiArICAgICAgY2FzZSBFSU9SVF9OT0RFX1NNTVVWMV9WMjoNCj4gKyAgICAgICAgRHVtcElv cnROb2RlU21tdVYxVjIgKA0KPiArICAgICAgICAgIE5vZGVQdHIsDQo+ICsgICAgICAgICAgKklv cnROb2RlTGVuZ3RoLA0KPiArICAgICAgICAgICpJb3J0SWRNYXBwaW5nQ291bnQsDQo+ICsgICAg ICAgICAgKklvcnRJZE1hcHBpbmdPZmZzZXQNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgICBi cmVhazsNCj4gKyAgICAgIGNhc2UgRUlPUlRfTk9ERV9TTU1VVjM6DQo+ICsgICAgICAgIER1bXBJ b3J0Tm9kZVNtbXVWMyAoDQo+ICsgICAgICAgICAgTm9kZVB0ciwNCj4gKyAgICAgICAgICAqSW9y dE5vZGVMZW5ndGgsDQo+ICsgICAgICAgICAgKklvcnRJZE1hcHBpbmdDb3VudCwNCj4gKyAgICAg ICAgICAqSW9ydElkTWFwcGluZ09mZnNldA0KPiArICAgICAgICAgICk7DQo+ICsgICAgICAgIGJy ZWFrOw0KPiArICAgICAgY2FzZSBFSU9SVF9OT0RFX1BNQ0c6DQo+ICsgICAgICAgIER1bXBJb3J0 Tm9kZVBtY2cgKA0KPiArICAgICAgICAgIE5vZGVQdHIsDQo+ICsgICAgICAgICAgKklvcnROb2Rl TGVuZ3RoLA0KPiArICAgICAgICAgICpJb3J0SWRNYXBwaW5nQ291bnQsDQo+ICsgICAgICAgICAg KklvcnRJZE1hcHBpbmdPZmZzZXQNCj4gKyAgICAgICAgKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ ICsNCj4gKyAgICAgIGRlZmF1bHQ6DQo+ICsgICAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7 DQo+ICsgICAgICAgIFByaW50IChMIkVSUk9SOiBVbnN1cHBvcnRlZCBJT1JUIE5vZGUgdHlwZSA9 ICVkXG4iLCAqSW9ydE5vZGVUeXBlKTsNCj4gKyAgICB9IC8vIHN3aXRjaA0KPiArDQo+ICsgICAg Tm9kZVB0ciArPSAoKklvcnROb2RlTGVuZ3RoKTsNCj4gKyAgICBPZmZzZXQgKz0gKCpJb3J0Tm9k ZUxlbmd0aCk7DQo+ICsgIH0gLy8gd2hpbGUNCj4gK30NCj4gKw0KPiArLyoqIFJlZ2lzdGVyIHRo ZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxl IHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRv IHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAg ICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NU QVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgQUNQSSBUYWJsZQ0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB3YXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVG SV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkDQo+ICsgIEByZXR2YWwg RUZJX09VVF9PRl9SRVNPVVJDRVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRoZQ0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0K PiArRUZJQVBJDQo+ICtJb3J0UGFyc2VyTGliQ29uc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBF RklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklf U1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0 dXJuIFJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgICAgICAgICAgRUZJX0FDUElfNl8yX0lPX1JFTUFQ UElOR19UQUJMRV9TSUdOQVRVUkUsDQo+ICsgICAgICAgICAgIFBhcnNlQWNwaUlvcnQNCj4gKyAg ICAgICAgICAgKTsNCj4gK30NCj4gKw0KPiArLyoqIERlcmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4g Kw0KPiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdl Lg0KPiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBU YWJsZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2Vy IGlzIGRlcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhl IHBhcnNlciB3YXMgbm90IHJlZ2lzdGVyZWQuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJ QVBJDQo+ICtJb3J0UGFyc2VyTGliRGVzdHJ1Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5E TEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1f VEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gRGVy ZWdpc3RlclBhcnNlciAoDQo+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9JT19SRU1BUFBJTkdf VEFCTEVfU0lHTkFUVVJFDQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+IGRpZmYgLS1naXQNCj4g YS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0lv cnQvSW9ydFBhcnNlckxpDQo+IGIuaW5mDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Jb3J0L0lvcnRQYXJzZXJMaQ0KPiBiLmluZg0KPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwLi4zZWNjYzNiZWYzNDA0MDI3MTdmMjllODI2OA0KPiA0ZmRlNTA2YmI1 ZjIyZA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvSW9ydC9Jb3J0UGFyc2VyTGkNCj4gYi5pbmYN Cj4gQEAgLTAsMCArMSwzMyBAQA0KPiArIyMgQGZpbGUNCj4gKyMNCj4gKyMgIENvcHlyaWdodCAo YykgMjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArIw0K PiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArIyAg YXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRp dGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlz IGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZv dW5kIGF0DQo+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2Uu cGhwDQo+ICsjDQo+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNE IExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gKyMgIFdJVEhPVVQgV0FSUkFOVElF UyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElN UExJRUQuDQo+ICsjIw0KPiArDQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04gICAgPSAw eDAwMDEwMDE5DQo+ICsgIEJBU0VfTkFNRSAgICAgID0gSW9ydFBhcnNlckxpYg0KPiArICBGSUxF X0dVSUQgICAgICA9IDMxQ0Y5QTUwLTBCMkEtNEYzMy1CRDJDLTM2MDZFMzVBQTlFRg0KPiArICBW RVJTSU9OX1NUUklORyA9IDEuMA0KPiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4g KyAgTElCUkFSWV9DTEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4gKyAgQ09OU1RSVUNUT1IgICAg PSBJb3J0UGFyc2VyTGliQ29uc3RydWN0b3INCj4gKyAgREVTVFJVQ1RPUiAgICAgPSBJb3J0UGFy c2VyTGliRGVzdHJ1Y3Rvcg0KPiArDQo+ICtbU291cmNlc10NCj4gKyAgSW9ydFBhcnNlci5jDQo+ ICsNCj4gK1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgU2hlbGxQa2cv U2hlbGxQa2cuZGVjDQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ICsNCj4g K1tMaWJyYXJ5Q2xhc3Nlc10NCj4gKyAgQWNwaVBhcnNlckxpYg0KPiBkaWZmIC0tZ2l0DQo+IGEv U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NYWR0 L01hZHRQYXJzDQo+IGVyLmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9QYXJzZXJzL01hZHQvTWFkdFBhcnMNCj4gZXIuYw0KPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwLi42MDAzNjg4NGUyMzYwOGU1ZjQ3ZmVjNjViYw0KPiA4YTA2ZDYzOWJhODczOQ0KPiAtLS0g L2Rldi9udWxsDQo+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliL1BhcnNlcnMvTWFkdC9NYWR0UGFycw0KPiBlci5jDQo+IEBAIC0wLDAgKzEsMzU2 IEBADQo+ICsvKioNCj4gKyAgTUFEVCB0YWJsZSBwYXJzZXINCj4gKw0KPiArICBDb3B5cmlnaHQg KGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAg VGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGlj ZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBv ZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmli dXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0K PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsN Cj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9O IEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNF TlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsN Cj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ICsgICAgLSBBQ1BJIDYuMiBTcGVjaWZpY2F0aW9u IC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3DQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPElu ZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0K PiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNlci5oPg0KPiArI2luY2x1ZGUg PExpYnJhcnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+DQo+ICsNCj4gKy8vIExvY2FsIFZh cmlhYmxlcw0KPiArU1RBVElDIENPTlNUIFVJTlQ4KiBNYWR0SW50ZXJydXB0Q29udHJvbGxlclR5 cGU7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDgqIE1hZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3Ro Ow0KPiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ ICsNCj4gKy8vIEZvcndhcmQgZGVjbGFyYXRpb25zDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK1Zh bGlkYXRlR0lDRFN5c3RlbVZlY3RvckJhc2UgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJ TiBWT0lEKiAgQ29udGV4dA0KPiArKTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5 IGRlc2NyaWJpbmcgdGhlIEdJQ0MgSW50ZXJydXB0DQo+ICsgICAgQ29udHJvbGxlciBTdHJ1Y3R1 cmUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEdpY0NQYXJzZXJbXSA9IHsN Cj4gKyAge0wiVHlwZSIsIDEsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCJMZW5ndGgiLCAxLCAxLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ICsgIHtMIlJlc2VydmVkIiwgMiwgMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsNCj4gKyAge0wiQ1BVIEludGVyZmFjZSBOdW1iZXIiLCA0LCA0LCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQUNQSSBQcm9jZXNzb3IgVUlEIiwgNCwgOCwg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkZsYWdzIiwgNCwgMTIs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQYXJraW5nIFByb3Rv Y29sIFZlcnNpb24iLCA0LCAxNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ICsNCj4gKyAge0wiUGVyZm9ybWFuY2UgSW50ZXJydXB0IEdTSVYiLCA0LCAyMCwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBhcmtlZCBBZGRyZXNzIiwgOCwgMjQs IEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUGh5c2ljYWwgQmFz ZSBBZGRyZXNzIiwgOCwgMzIsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g KyAge0wiR0lDViIsIDgsIDQwLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ICsgIHtMIkdJQ0giLCA4LCA0OCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCJWR0lDIE1haW50ZW5hbmNlIGludGVycnVwdCIsIDQsIDU2LCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiR0lDUiBCYXNlIEFkZHJlc3MiLCA4LCA2MCwg TCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJNUElEUiIsIDgsIDY4 LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlByb2Nlc3NvciBQ b3dlciBFZmZpY2llbmN5IENsYXNzIiwgMSwgNzYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws DQo+ICsgICBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAzLCA3NywgTCIleCAleCAleCIsIER1 bXAzQ2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9Q QVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgR0lDRCBJbnRlcnJ1cHQNCj4gKyAgICBDb250cm9s bGVyIFN0cnVjdHVyZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgR2ljRFBh cnNlcltdID0gew0KPiArICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAyLCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJHSUMgSUQiLCA0LCA0LCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUGh5c2ljYWwgQmFzZSBBZGRyZXNzIiwgOCwgOCwg TCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJTeXN0ZW0gVmVjdG9y IEJhc2UiLCA0LCAxNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwNCj4gKyAgICBWYWxpZGF0ZUdJQ0RT eXN0ZW1WZWN0b3JCYXNlLCBOVUxMfSwNCj4gKyAge0wiR0lDIFZlcnNpb24iLCAxLCAyMCwgTCIl ZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDMsIDIxLCBM IiV4ICV4ICV4IiwgRHVtcDNDaGFycywgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4g Ky8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBNU0kgRnJhbWUgSW50ZXJy dXB0DQo+ICsgICAgQ29udHJvbGxlciBTdHJ1Y3R1cmUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNU IEFDUElfUEFSU0VSIEdpY01TSUZyYW1lUGFyc2VyW10gPSB7DQo+ICsgIHtMIlR5cGUiLCAxLCAw LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3RoIiwgMSwg MSwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDIs IDIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsgIHtMIk1TSSBG cmFtZSBJRCIsIDQsIDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7 TCJQaHlzaWNhbCBCYXNlIEFkZHJlc3MiLCA4LCA4LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ICsgIHtMIkZsYWdzIiwgNCwgMTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArDQo+ICsgIHtMIlNQSSBDb3VudCIsIDIsIDIwLCBMIiVkIiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlNQSSBCYXNlIiwgMiwgMjIsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIg YXJyYXkgZGVzY3JpYmluZyB0aGUgR0lDUiBJbnRlcnJ1cHQNCj4gKyAgICBDb250cm9sbGVyIFN0 cnVjdHVyZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgR2ljUlBhcnNlcltd ID0gew0KPiArICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAyLCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gKw0KPiArICB7TCJEaXNjb3ZlcnkgUmFuZ2UgQmFzZSBBZGRyZXNzIiwgOCwgNCwg TCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsDQo+ICsgICBOVUxMfSwNCj4gKyAge0wiRGlzY292 ZXJ5IFJhbmdlIExlbmd0aCIsIDQsIDEyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhl IEdJQyBJVFMgSW50ZXJydXB0DQo+ICsgICAgQ29udHJvbGxlciBTdHJ1Y3R1cmUuDQo+ICsqLw0K PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEdpY0lUU1BhcnNlcltdID0gew0KPiArICB7TCJU eXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxl bmd0aCIsIDEsIDEsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVz ZXJ2ZWQiLCAyLCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiAr ICB7TCJHSUMgSVRTIElEIiwgNCwgNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIlBoeXNpY2FsIEJhc2UgQWRkcmVzcyIsIDgsIDgsIEwiMHglbHgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCA0LCAxNiwgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBh cnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIE1BRFQgVGFibGUuDQo+ICsqLw0KPiArU1RBVElDIENP TlNUIEFDUElfUEFSU0VSIE1hZHRQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfQUNQSV9IRUFERVIg KCZBY3BpSGRySW5mbyksDQo+ICsgIHtMIkxvY2FsIEludGVycnVwdCBDb250cm9sbGVyIEFkZHJl c3MiLCA0LCAzNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwNCj4gKyAgIE5VTEx9LA0KPiAr ICB7TCJGbGFncyIsIDQsIDQwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiAr fTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIE1BRFQg SW50ZXJydXB0DQo+ICsgICAgQ29udHJvbGxlciBTdHJ1Y3R1cmUgSGVhZGVyIFN0cnVjdHVyZS4N Cj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgTWFkdEludGVycnVwdENvbnRyb2xs ZXJIZWFkZXJQYXJzZXJbXSA9IHsNCj4gKyAge05VTEwsIDEsIDAsIE5VTEwsIE5VTEwsIChWT0lE KiopJk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyVHlwZSwgTlVMTCwNCj4gTlVMTH0sDQo+ICsgIHtM Ikxlbmd0aCIsIDEsIDEsIE5VTEwsIE5VTEwsIChWT0lEKiopJk1hZHRJbnRlcnJ1cHRDb250cm9s bGVyTGVuZ3RoLA0KPiBOVUxMLA0KPiArICAgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgMiwg MiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBUaGlz IGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgU3lzdGVtIFZlY3RvciBCYXNlIGluIHRoZSBHSUNELg0K PiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhl IGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0 IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAg IGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiAr U1RBVElDDQo+ICtWT0lEDQo+ICtWYWxpZGF0ZUdJQ0RTeXN0ZW1WZWN0b3JCYXNlICgNCj4gKyAg SU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gKykNCj4gK3sNCj4gKyAg aWYgKCooVUlOVDMyKilQdHIgIT0gMCkgew0KPiArICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7 DQo+ICsgICAgUHJpbnQgKA0KPiArICAgICAgTCJcbkVSUk9SOiBTeXN0ZW0gVmVjdG9yIEJhc2Ug bXVzdCBiZSB6ZXJvLiINCj4gKyAgICApOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlz IGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBNQURUIHRhYmxlLg0KPiArICBXaGVuIHRyYWNlIGlz IGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIE1BRFQgdGFibGUgYW5kDQo+ICsgIHRy YWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBjdXJy ZW50bHkgcGFyc2VzIHRoZSBmb2xsb3dpbmcgSW50ZXJydXB0IENvbnRyb2xsZXINCj4gKyAgU3Ry dWN0dXJlczoNCj4gKyAgICAtIEdJQ0MNCj4gKyAgICAtIEdJQ0QNCj4gKyAgICAtIEdJQyBNU0kg RnJhbWUNCj4gKyAgICAtIEdJQ1INCj4gKyAgICAtIEdJQyBJVFMNCj4gKw0KPiArICBUaGlzIGZ1 bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBmaWVsZHMu DQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNl IHRoZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBv aW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlU YWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsgIEBwYXJhbSBbaW5d IEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyovDQo+ ICtWT0lEDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaU1hZHQgKA0KPiArICBJTiBCT09MRUFOIFRy YWNlLA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5n dGgsDQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gKyAgKQ0KPiArew0KPiAr ICBVSU5UMzIgT2Zmc2V0Ow0KPiArICBVSU5UOCogSW50ZXJydXB0Q29udG9sbGVyUHRyOw0KPiAr ICBVSU5UMzIgR0lDRENvdW50ID0gMDsNCj4gKw0KPiArICBpZiAoIVRyYWNlKSB7DQo+ICsgICAg cmV0dXJuOw0KPiArICB9DQo+ICsNCj4gKyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gKyAgICAg ICAgICAgICBUUlVFLA0KPiArICAgICAgICAgICAgIDAsDQo+ICsgICAgICAgICAgICAgIk1BRFQi LA0KPiArICAgICAgICAgICAgIFB0ciwNCj4gKyAgICAgICAgICAgICBBY3BpVGFibGVMZW5ndGgs DQo+ICsgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoTWFkdFBhcnNlcikNCj4gKyAgICAgICAg ICAgICApOw0KPiArICBJbnRlcnJ1cHRDb250b2xsZXJQdHIgPSBQdHIgKyBPZmZzZXQ7DQo+ICsN Cj4gKyAgd2hpbGUgKE9mZnNldCA8IEFjcGlUYWJsZUxlbmd0aCkgew0KPiArICAgIC8vIFBhcnNl IEludGVycnVwdCBDb250cm9sbGVyIFN0cnVjdHVyZSB0byBvYnRhaW4gTGVuZ3RoLg0KPiArICAg IFBhcnNlQWNwaSAoDQo+ICsgICAgICBGQUxTRSwNCj4gKyAgICAgIDAsDQo+ICsgICAgICBOVUxM LA0KPiArICAgICAgSW50ZXJydXB0Q29udG9sbGVyUHRyLA0KPiArICAgICAgMiwgIC8vICBMZW5n dGggaXMgMSBieXRlIGF0IG9mZnNldCAxDQo+ICsgICAgICBQQVJTRVJfUEFSQU1TIChNYWR0SW50 ZXJydXB0Q29udHJvbGxlckhlYWRlclBhcnNlcikNCj4gKyAgICAgICk7DQo+ICsNCj4gKyAgICBp ZiAoKChPZmZzZXQgKyAoKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3RoKSkgPiBBY3BpVGFi bGVMZW5ndGgpIHx8DQo+ICsgICAgICAgICgqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGgg PCA0KSkgew0KPiArICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICAgIFByaW50 ICgNCj4gKyAgICAgICAgIEwiRVJST1I6IEludmFsaWQgSW50ZXJydXB0IENvbnRyb2xsZXIgTGVu Z3RoLCINCj4gKyAgICAgICAgICAiIFR5cGUgPSAlZCwgTGVuZ3RoID0gJWRcbiIsDQo+ICsgICAg ICAgICAqTWFkdEludGVycnVwdENvbnRyb2xsZXJUeXBlLA0KPiArICAgICAgICAgKk1hZHRJbnRl cnJ1cHRDb250cm9sbGVyTGVuZ3RoDQo+ICsgICAgICAgICApOw0KPiArICAgICAgYnJlYWs7DQo+ ICsgICAgfQ0KPiArDQo+ICsgICAgc3dpdGNoICgqTWFkdEludGVycnVwdENvbnRyb2xsZXJUeXBl KSB7DQo+ICsgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9HSUM6IHsNCj4gKyAgICAgICAgUGFyc2VB Y3BpICgNCj4gKyAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgIDIsDQo+ICsgICAgICAgICAg IkdJQ0MiLA0KPiArICAgICAgICAgIEludGVycnVwdENvbnRvbGxlclB0ciwNCj4gKyAgICAgICAg ICAqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGgsDQo+ICsgICAgICAgICAgUEFSU0VSX1BB UkFNUyAoR2ljQ1BhcnNlcikNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgICBicmVhazsNCj4g KyAgICAgIH0NCj4gKw0KPiArICAgICAgY2FzZSBFRklfQUNQSV82XzJfR0lDRDogew0KPiArICAg ICAgICBpZiAoKytHSUNEQ291bnQgPiAxKSB7DQo+ICsgICAgICAgICAgSW5jcmVtZW50RXJyb3JD b3VudCAoKTsNCj4gKyAgICAgICAgICBQcmludCAoDQo+ICsgICAgICAgICAgICBMIkVSUk9SOiBP bmx5IG9uZSBHSUNEIG11c3QgYmUgcHJlc2VudCwiDQo+ICsgICAgICAgICAgICAgICIgR0lDRENv dW50ID0gJWRcbiIsDQo+ICsgICAgICAgICAgICBHSUNEQ291bnQNCj4gKyAgICAgICAgICAgICk7 DQo+ICsgICAgICAgIH0NCj4gKyAgICAgICAgUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICBUUlVF LA0KPiArICAgICAgICAgIDIsDQo+ICsgICAgICAgICAgIkdJQ0QiLA0KPiArICAgICAgICAgIElu dGVycnVwdENvbnRvbGxlclB0ciwNCj4gKyAgICAgICAgICAqTWFkdEludGVycnVwdENvbnRyb2xs ZXJMZW5ndGgsDQo+ICsgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoR2ljRFBhcnNlcikNCj4gKyAg ICAgICAgICApOw0KPiArICAgICAgICBicmVhazsNCj4gKyAgICAgIH0NCj4gKw0KPiArICAgICAg Y2FzZSBFRklfQUNQSV82XzJfR0lDX01TSV9GUkFNRTogew0KPiArICAgICAgICBQYXJzZUFjcGkg KA0KPiArICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAgICAgMiwNCj4gKyAgICAgICAgICAiR0lD IE1TSSBGcmFtZSIsDQo+ICsgICAgICAgICAgSW50ZXJydXB0Q29udG9sbGVyUHRyLA0KPiArICAg ICAgICAgICpNYWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aCwNCj4gKyAgICAgICAgICBQQVJT RVJfUEFSQU1TIChHaWNNU0lGcmFtZVBhcnNlcikNCj4gKyAgICAgICAgICApOw0KPiArICAgICAg ICBicmVhazsNCj4gKyAgICAgIH0NCj4gKw0KPiArICAgICAgY2FzZSBFRklfQUNQSV82XzJfR0lD Ujogew0KPiArICAgICAgICBQYXJzZUFjcGkgKA0KPiArICAgICAgICAgIFRSVUUsDQo+ICsgICAg ICAgICAgMiwNCj4gKyAgICAgICAgICAiR0lDUiIsDQo+ICsgICAgICAgICAgSW50ZXJydXB0Q29u dG9sbGVyUHRyLA0KPiArICAgICAgICAgICpNYWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aCwN Cj4gKyAgICAgICAgICBQQVJTRVJfUEFSQU1TIChHaWNSUGFyc2VyKQ0KPiArICAgICAgICAgICk7 DQo+ICsgICAgICAgIGJyZWFrOw0KPiArICAgICAgfQ0KPiArDQo+ICsgICAgICBjYXNlIEVGSV9B Q1BJXzZfMl9HSUNfSVRTOiB7DQo+ICsgICAgICAgIFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAg VFJVRSwNCj4gKyAgICAgICAgICAyLA0KPiArICAgICAgICAgICJHSUMgSVRTIiwNCj4gKyAgICAg ICAgICBJbnRlcnJ1cHRDb250b2xsZXJQdHIsDQo+ICsgICAgICAgICAgKk1hZHRJbnRlcnJ1cHRD b250cm9sbGVyTGVuZ3RoLA0KPiArICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEdpY0lUU1BhcnNl cikNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgICBicmVhazsNCj4gKyAgICAgIH0NCj4gKw0K PiArICAgICAgZGVmYXVsdDogew0KPiArICAgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0K PiArICAgICAgICBQcmludCAoDQo+ICsgICAgICAgICAgTCJFUlJPUjogVW5rbm93biBJbnRlcnJ1 cHQgQ29udHJvbGxlciBTdHJ1Y3R1cmUsIg0KPiArICAgICAgICAgICAgIiBUeXBlID0gJWQsIExl bmd0aCA9ICVkXG4iLA0KPiArICAgICAgICAgICpNYWR0SW50ZXJydXB0Q29udHJvbGxlclR5cGUs DQo+ICsgICAgICAgICAgKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3RoDQo+ICsgICAgICAg ICAgKTsNCj4gKyAgICAgIH0NCj4gKyAgICB9IC8vIHN3aXRjaA0KPiArDQo+ICsgICAgSW50ZXJy dXB0Q29udG9sbGVyUHRyICs9ICpNYWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aDsNCj4gKyAg ICBPZmZzZXQgKz0gKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3RoOw0KPiArICB9IC8vIHdo aWxlDQo+ICt9DQo+ICsNCj4gKy8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBw YXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBw YXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiAr DQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0 ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3Ig dGhlIEFDUEkgVGFibGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFs cmVhZHkgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBw YXJhbWV0ZXIgaXMgaW52YWxpZA0KPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBO byBzcGFjZSB0byByZWdpc3RlciB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGFyc2VyLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArTWFkdFBhcnNl ckxpYkNvbnN0cnVjdG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAg ICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBT eXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9NVUxUSVBMRV9BUElDX0RFU0NSSVBUSU9OX1RBQkxF X1NJR05BVFVSRSwNCj4gKyAgICAgICAgICAgUGFyc2VBY3BpTWFkdA0KPiArICAgICAgICAgICAp Ow0KPiArfQ0KPiArDQo+ICsvKiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBw YXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBw YXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiAr DQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdp c3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdh cyBub3QgcmVnaXN0ZXJlZC4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK01h ZHRQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAg ICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBD T05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFy c2VyICgNCj4gKyAgICAgICAgICAgRUZJX0FDUElfNl8yX01VTFRJUExFX0FQSUNfREVTQ1JJUFRJ T05fVEFCTEVfU0lHTkFUVVJFDQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+IGRpZmYgLS1naXQN Cj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJz L01hZHQvTWFkdFBhcnMNCj4gZXJMaWIuaW5mDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hl bGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NYWR0L01hZHRQYXJzDQo+IGVyTGliLmluZg0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwLi5hZjI3ZGI1NjVmYTQ3N2EzYjdmZTNkZmI5MA0KPiBkODI4Y2Nm ZTNkZGIzOQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWFkdC9NYWR0UGFycw0KPiBlckxpYi5p bmYNCj4gQEAgLTAsMCArMSwzMyBAQA0KPiArIyMgQGZpbGUNCj4gKyMNCj4gKyMgIENvcHlyaWdo dCAoYykgMjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiAr Iw0KPiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiAr IyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNv bmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0 aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+ IGZvdW5kIGF0DQo+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vu c2UucGhwDQo+ICsjDQo+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUg QlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gKyMgIFdJVEhPVVQgV0FSUkFO VElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9S IElNUExJRUQuDQo+ICsjIw0KPiArDQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04gICAg PSAweDAwMDEwMDE5DQo+ICsgIEJBU0VfTkFNRSAgICAgID0gTWFkdFBhcnNlckxpYg0KPiArICBG SUxFX0dVSUQgICAgICA9IENBMEE2QUUxLTExQTEtNDhDOC1BNTYxLUQyQ0ZBOTE3OTYyQQ0KPiAr ICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVIN Cj4gKyAgTElCUkFSWV9DTEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4gKyAgQ09OU1RSVUNUT1Ig ICAgPSBNYWR0UGFyc2VyTGliQ29uc3RydWN0b3INCj4gKyAgREVTVFJVQ1RPUiAgICAgPSBNYWR0 UGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiArDQo+ICtbU291cmNlc10NCj4gKyAgTWFkdFBhcnNlci5j DQo+ICsNCj4gK1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgU2hlbGxQ a2cvU2hlbGxQa2cuZGVjDQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ICsN Cj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gKyAgQWNwaVBhcnNlckxpYg0KPiBkaWZmIC0tZ2l0DQo+ IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9N Y2ZnL01jZmdQYXJzZQ0KPiByLmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9QYXJzZXJzL01jZmcvTWNmZ1BhcnNlDQo+IHIuYw0KPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwLi4xMGJmZWM5MDFhN2M1MDRlNzAyMmMyMWFhZg0KPiBiYWM0Yzg3NWQ4ODg2Yw0KPiAt LS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliL1BhcnNlcnMvTWNmZy9NY2ZnUGFyc2UNCj4gci5jDQo+IEBAIC0wLDAgKzEs MTM5IEBADQo+ICsvKioNCj4gKyAgTUNGRyB0YWJsZSBwYXJzZXINCj4gKw0KPiArICBDb3B5cmln aHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4g KyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUg bGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9u cyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0 cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBh dA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNF IE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBS RVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ ICsNCj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ICsgICAgLSBQQ0kgRmlybXdhcmUgU3BlY2lm aWNhdGlvbiAtIFJldmlzaW9uIDMuMiwgSmFudWFyeSAyNiwgMjAxNS4NCj4gKyoqLw0KPiArDQo+ ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFy eS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+ DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gKw0K PiArLy8gTG9jYWwgdmFyaWFibGVzDQo+ICtTVEFUSUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJf SU5GTyBBY3BpSGRySW5mbzsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2Ny aWJpbmcgdGhlIEFDUEkgTUNGRyBUYWJsZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9Q QVJTRVIgTWNmZ1BhcnNlcltdID0gew0KPiArICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlIZHJJ bmZvKSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCA4LCAzNiwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2Ny aWJpbmcgdGhlIFBDSSBjb25maWd1cmF0aW9uIFNwYWNlDQo+ICsgICAgQmFzZSBBZGRyZXNzIHN0 cnVjdHVyZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgUGNpQ2ZnU3BhY2VC YXNlQWRkclBhcnNlcltdID0gew0KPiArICB7TCJCYXNlIEFkZHJlc3MiLCA4LCAwLCBMIjB4JWx4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBDSSBTZWdtZW50IEdyb3VwIE5v LiIsIDIsIDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJTdGFy dCBCdXMgTm8uIiwgMSwgMTAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiAr ICB7TCJFbmQgQnVzIE5vLiIsIDEsIDExLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCA0LCAxMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBN Q0ZHIHRhYmxlLg0KPiArICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJz ZXMgdGhlIE1DRkcgdGFibGUgYW5kDQo+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMu DQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhl IEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAg ICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0 ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiAr ICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxl Lg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFD UEkgdGFibGUuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtQYXJzZUFjcGlNY2ZnICgN Cj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJ TlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9u DQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyIE9mZnNldDsNCj4gKyAgVUlOVDMyIFBjaUNmZ09m ZnNldDsNCj4gKyAgVUlOVDgqIFBjaUNmZ1NwYWNlUHRyOw0KPiArDQo+ICsgIGlmICghVHJhY2Up IHsNCj4gKyAgICByZXR1cm47DQo+ICsgIH0NCj4gKw0KPiArICBPZmZzZXQgPSBQYXJzZUFjcGkg KA0KPiArICAgICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAgICAgICAgMCwNCj4gKyAgICAgICAg ICAgICAiTUNGRyIsDQo+ICsgICAgICAgICAgICAgUHRyLA0KPiArICAgICAgICAgICAgIEFjcGlU YWJsZUxlbmd0aCwNCj4gKyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChNY2ZnUGFyc2VyKQ0K PiArICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgUGNpQ2ZnU3BhY2VQdHIgPSBQdHIgKyBPZmZz ZXQ7DQo+ICsNCj4gKyAgd2hpbGUgKE9mZnNldCA8IEFjcGlUYWJsZUxlbmd0aCkgew0KPiArICAg IFBjaUNmZ09mZnNldCA9IFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICBUUlVF LA0KPiArICAgICAgICAgICAgICAgICAgICAgMiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICJQ Q0kgQ29uZmlndXJhdGlvbiBTcGFjZSIsDQo+ICsgICAgICAgICAgICAgICAgICAgICBQY2lDZmdT cGFjZVB0ciwNCj4gKyAgICAgICAgICAgICAgICAgICAgIChBY3BpVGFibGVMZW5ndGggLSBPZmZz ZXQpLA0KPiArICAgICAgICAgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoUGNpQ2ZnU3BhY2VC YXNlQWRkclBhcnNlcikNCj4gKyAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsgICAgUGNpQ2Zn U3BhY2VQdHIgKz0gUGNpQ2ZnT2Zmc2V0Ow0KPiArICAgIE9mZnNldCArPSBQY2lDZmdPZmZzZXQ7 DQo+ICsgIH0NCj4gK30NCj4gKw0KPiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4g KyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4g KyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUu DQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBy ZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2Vy IGZvciB0aGUgQUNQSSBUYWJsZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3 YXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRF UiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkDQo+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJD RVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwYXJzZXIuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtNY2Zn UGFyc2VyTGliQ29uc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAg ICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENP TlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2Vy ICgNCj4gKw0KPiBFRklfQUNQSV82XzJfUENJX0VYUFJFU1NfTUVNT1JZX01BUFBFRF9DT05GSUdV UkFUSU9OX1NQQUNFDQo+IF9CQVNFX0FERFJFU1NfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJF LA0KPiArICAgICAgICAgICBQYXJzZUFjcGlNY2ZnDQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+ ICsNCj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0g IEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0g IFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdp c3RlcmVkLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArTWNmZ1BhcnNlckxp YkRlc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIElt YWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3Rl bVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KPiAr DQo+IEVGSV9BQ1BJXzZfMl9QQ0lfRVhQUkVTU19NRU1PUllfTUFQUEVEX0NPTkZJR1VSQVRJT05f U1BBQ0UNCj4gX0JBU0VfQUREUkVTU19ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUNCj4gKyAg ICAgICAgICAgKTsNCj4gK30NCj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWNmZy9NY2ZnUGFyc2UNCj4gckxpYi5p bmYNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJz ZXJzL01jZmcvTWNmZ1BhcnNlDQo+IHJMaWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkZGE1 YTNlNTRiNDYxNTFhOGVkMTljZmYNCj4gZTZmMWEzMzZjOTU1NjY1DQo+IC0tLSAvZGV2L251bGwN Cj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv UGFyc2Vycy9NY2ZnL01jZmdQYXJzZQ0KPiByTGliLmluZg0KPiBAQCAtMCwwICsxLDMzIEBADQo+ ICsjIyBAZmlsZQ0KPiArIw0KPiArIyAgQ29weXJpZ2h0IChjKSAyMDE3IC0gMjAxOCwgQVJNIExp bWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsjDQo+ICsjICBUaGlzIHByb2dyYW0gYW5k IHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUg YXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExp Y2Vuc2UNCj4gKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1 bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyMgIGh0dHA6Ly9v cGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKyMNCj4gKyMgIFRIRSBQ Uk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMi DQo+IEJBU0lTLA0KPiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBP RiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyMjDQo+ICsNCj4g K1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4gKyAgQkFTRV9O QU1FICAgICAgPSBNY2ZnUGFyc2VyTGliDQo+ICsgIEZJTEVfR1VJRCAgICAgID0gNDdFOEMxMEQt NkNFMC00NTVDLUE3QkMtODNBN0IwODk1QzlGDQo+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4wDQo+ ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZFUg0KPiArICBMSUJSQVJZX0NMQVNTICA9IE5V TEx8RFhFX0RSSVZFUg0KPiArICBDT05TVFJVQ1RPUiAgICA9IE1jZmdQYXJzZXJMaWJDb25zdHJ1 Y3Rvcg0KPiArICBERVNUUlVDVE9SICAgICA9IE1jZmdQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ICsN Cj4gK1tTb3VyY2VzXQ0KPiArICBNY2ZnUGFyc2VyLmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiAr ICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gKyAgTWRl TW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiAr ICBBY3BpUGFyc2VyTGliDQo+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1JzZHAvUnNkcFBhcnNlDQo+IHIuYw0KPiBi L1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvUnNk cC9Sc2RwUGFyc2UNCj4gci5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4DQo+IDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhMTk3ZWUxNTAxZGVjNTIy ZmNkYWRjYmUNCj4gZDM1NTg5Y2RhMGI4N2NmDQo+IC0tLSAvZGV2L251bGwNCj4gKysrDQo+IGIv U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Sc2Rw L1JzZHBQYXJzZQ0KPiByLmMNCj4gQEAgLTAsMCArMSwyMTAgQEANCj4gKy8qKg0KPiArICBSU0RQ IHRhYmxlIHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBM aW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBh Y2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFi bGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QNCj4gTGljZW5zZQ0K PiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQg b2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNl Lm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBE SVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywN Cj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwg RUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKw0KPiArICBAcGFyIFJlZmVyZW5jZShz KToNCj4gKyAgICAtIEFDUEkgNi4yIFNwZWNpZmljYXRpb24gLSBFcnJhdGEgQSwgU2VwdGVtYmVy IDIwMTcNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ICsj aW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ICsjaW5jbHVkZSA8TGli cmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gKw0KPiArLy8gTG9jYWwgVmFyaWFi bGVzDQo+ICtTVEFUSUMgQ09OU1QgVUlOVDY0KiBYc2R0QWRkcmVzczsNCj4gKw0KPiArLyoqIFRo aXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBSU0RUIEFkZHJlc3MuDQo+ICsNCj4gKyAgQHBhcmFt IFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4g KyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3Jt YXRpb24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2lu dGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQN Cj4gK1ZhbGlkYXRlUnNkdEFkZHJlc3MgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBW T0lEKiAgQ29udGV4dA0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0 ZXMgdGhlIFhTRFQgQWRkcmVzcy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50 ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250 ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4g KyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFi bGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArVmFsaWRhdGVYc2R0QWRk cmVzcyAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsg ICk7DQo+ICsNCj4gKy8qKiBBbiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIFJTRFAgVGFibGUu DQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFJzZHBQYXJzZXJbXSA9IHsNCj4g KyAge0wiU2lnbmF0dXJlIiwgOCwgMCwgTlVMTCwgRHVtcDhDaGFycywgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIkNoZWNrc3VtIiwgMSwgOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ICsgIHtMIk9lbSBJRCIsIDYsIDksIE5VTEwsIER1bXA2Q2hhcnMsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArICB7TCJSZXZpc2lvbiIsIDEsIDE1LCBMIiVkIiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJTRFQgQWRkcmVzcyIsIDQsIDE2LCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBWYWxpZGF0ZVJzZHRBZGRyZXNzLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3RoIiwgNCwg MjAsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiWFNEVCBBZGRyZXNz IiwgOCwgMjQsIEwiMHglbHgiLCBOVUxMLCAoVk9JRCoqKSZYc2R0QWRkcmVzcywNCj4gKyAgIFZh bGlkYXRlWHNkdEFkZHJlc3MsIE5VTEx9LA0KPiArICB7TCJFeHRlbmRlZCBDaGVja3N1bSIsIDEs IDMyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQi LCAzLCAzMywgTCIleCAleCAleCIsIER1bXAzQ2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9 Ow0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIFJTRFQgQWRkcmVzcy4N Cj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRo ZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4 dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAg ICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4g K1NUQVRJQw0KPiArVk9JRA0KPiArVmFsaWRhdGVSc2R0QWRkcmVzcyAoDQo+ICsgIElOIFVJTlQ4 KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsgICkNCj4gK3sNCj4gKyNpZiBkZWZp bmVkKE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVkIChNREVfQ1BVX0FBUkNINjQpDQo+ICsgIC8vIFJl ZmVyZW5jZTogU2VydmVyIEJhc2UgQm9vdCBSZXF1aXJlbWVudHMgU3lzdGVtIFNvZnR3YXJlIG9u IEFSTQ0KPiBQbGF0Zm9ybXMNCj4gKyAgLy8gU2VjdGlvbjogNC4yLjEuMSBSU0RQDQo+ICsgIC8v IFJvb3QgU3lzdGVtIERlc2NyaXB0aW9uIFBvaW50ZXIgKFJTRFApLCBBQ1BJIO+/vSA1LjIuNS4N Cj4gKyAgLy8gICAtIFdpdGhpbiB0aGUgUlNEUCwgdGhlIFJzZHRBZGRyZXNzIGZpZWxkIG11c3Qg YmUgbnVsbCAoemVybykgYW5kIHRoZQ0KPiArICAvLyAgICAgWHNkdEFkZHJlc3NzIE1VU1QgYmUg YSB2YWxpZCwgbm9uLW51bGwsIDY0LWJpdCB2YWx1ZS4NCj4gKyAgVUlOVDMyIFJzZHRBZGRyID0g KihVSU5UMzIqKVB0cjsNCj4gKyAgaWYgKFJzZHRBZGRyICE9IDApIHsNCj4gKyAgICBJbmNyZW1l bnRFcnJvckNvdW50ICgpOw0KPiArICAgIFByaW50ICgNCj4gKyAgICAgIEwiXG5FUlJPUjogUnNk dCBBZGRyZXNzID0gMHglcC4gVGhpcyBtdXN0IGJlIE5VTEwgb24gQVJNIFBsYXRmb3Jtcy4iLA0K PiArICAgICAgUnNkdEFkZHINCj4gKyAgICAgICk7DQo+ICsgIH0NCj4gKyNlbmRpZg0KPiArfQ0K PiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIFhTRFQgQWRkcmVzcy4NCj4g Kw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBm aWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBz cGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICBj b3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NU QVRJQw0KPiArVk9JRA0KPiArVmFsaWRhdGVYc2R0QWRkcmVzcyAoDQo+ICsgIElOIFVJTlQ4KiBQ dHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsgICkNCj4gK3sNCj4gKyNpZiBkZWZpbmVk KE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVkIChNREVfQ1BVX0FBUkNINjQpDQo+ICsgIC8vIFJlZmVy ZW5jZTogU2VydmVyIEJhc2UgQm9vdCBSZXF1aXJlbWVudHMgU3lzdGVtIFNvZnR3YXJlIG9uIEFS TQ0KPiBQbGF0Zm9ybXMNCj4gKyAgLy8gU2VjdGlvbjogNC4yLjEuMSBSU0RQDQo+ICsgIC8vIFJv b3QgU3lzdGVtIERlc2NyaXB0aW9uIFBvaW50ZXIgKFJTRFApLCBBQ1BJIO+/vSA1LjIuNS4NCj4g KyAgLy8gICAtIFdpdGhpbiB0aGUgUlNEUCwgdGhlIFJzZHRBZGRyZXNzIGZpZWxkIG11c3QgYmUg bnVsbCAoemVybykgYW5kIHRoZQ0KPiArICAvLyAgICAgWHNkdEFkZHJlc3NzIE1VU1QgYmUgYSB2 YWxpZCwgbm9uLW51bGwsIDY0LWJpdCB2YWx1ZS4NCj4gKyAgVUlOVDY0IFhzZHRBZGRyID0gKihV SU5UNjQqKVB0cjsNCj4gKyAgaWYgKFhzZHRBZGRyID09IDApIHsNCj4gKyAgICBJbmNyZW1lbnRF cnJvckNvdW50ICgpOw0KPiArICAgIFByaW50ICgNCj4gKyAgICAgIEwiXG5FUlJPUjogWHNkdCBB ZGRyZXNzID0gMHglcC4gVGhpcyBtdXN0IG5vdCBiZSBOVUxMIG9uIEFSTQ0KPiBQbGF0Zm9ybXMu IiwNCj4gKyAgICAgIFhzZHRBZGRyDQo+ICsgICAgICApOw0KPiArICB9DQo+ICsjZW5kaWYNCj4g K30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIFJTRFAgdGFibGUu DQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBpbnZva2VzIHRoZSBwYXJzZXIgZm9yIHRoZSBYU0RU IHRhYmxlLg0KPiArICAqIE5vdGUgLSBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHN1cHBvcnQgcGFy c2luZyBvZiBSU0RUIHRhYmxlLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3Jt cyBhIFJBVyBkdW1wIG9mIHRoZSBBQ1BJIHRhYmxlIGFuZA0KPiArICB2YWxpZGF0ZXMgdGhlIGNo ZWNrc3VtLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVF LCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAg ICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2lu XSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFy YW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtQYXJzZUFjcGlSc2RwICgNCj4gKyAgSU4gQk9P TEVBTiBUcmFjZSwNCj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgQWNwaVRh YmxlTGVuZ3RoLA0KPiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICkNCj4g K3sNCj4gKyAgaWYgKFRyYWNlKSB7DQo+ICsgICAgRHVtcFJhdyAoUHRyLCBBY3BpVGFibGVMZW5n dGgpOw0KPiArICAgIFZlcmlmeUNoZWNrc3VtIChUUlVFLCBQdHIsIEFjcGlUYWJsZUxlbmd0aCk7 DQo+ICsgIH0NCj4gKw0KPiArICBQYXJzZUFjcGkgKFRyYWNlLCAwLCAiUlNEUCIsIFB0ciwgQWNw aVRhYmxlTGVuZ3RoLCBQQVJTRVJfUEFSQU1TDQo+IChSc2RwUGFyc2VyKSk7DQo+ICsNCj4gKyAg Ly8gVGhpcyBjb2RlIGN1cnJlbnRseSBzdXBwb3J0cyBwYXJzaW5nIG9mIFhTRFQgdGFibGUgb25s eQ0KPiArICAvLyBhbmQgZG9lcyBub3QgcGFyc2UgdGhlIFJTRFQgdGFibGUuIFBsYXRmb3JtcyBw cm92aWRlIHRoZQ0KPiArICAvLyBSU0RUIHRvIGVuYWJsZSBjb21wYXRpYmlsaXR5IHdpdGggQUNQ SSAxLjAgb3BlcmF0aW5nIHN5c3RlbXMuDQo+ICsgIC8vIFRoZXJlZm9yZSB0aGUgUlNEVCBzaG91 bGQgbm90IGJlIHVzZWQgb24gQVJNIHBsYXRmb3Jtcy4NCj4gKyAgaWYgKCgqWHNkdEFkZHJlc3Mp ID09IDApIHsNCj4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgIFByaW50IChM IkVSUk9SOiBYU0RUIFBvaW50ZXIgaXMgbm90IHNldC5cbiIpOw0KPiArICAgIHJldHVybjsNCj4g KyAgfQ0KPiArDQo+ICsgIFByb2Nlc3NBY3BpVGFibGUgKChVSU5UOCopKFVJTlROKSgqWHNkdEFk ZHJlc3MpKTsNCj4gK30NCj4gKw0KPiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4g KyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4g KyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUu DQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBy ZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2Vy IGZvciB0aGUgQUNQSSBUYWJsZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3 YXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRF UiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkDQo+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJD RVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwYXJzZXIuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtSc2Rw UGFyc2VyTGliQ29uc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAg ICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENP TlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2Vy ICgNCj4gKyAgICAgICAgICAgUlNEUF9UQUJMRV9JTkZPLA0KPiArICAgICAgICAgICBQYXJzZUFj cGlSc2RwDQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBEZXJlZ2lzdGVyIHRo ZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxl IHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRv IHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAg ICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VO RCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiArKi8NCj4gK0VGSV9T VEFUVVMNCj4gK0VGSUFQSQ0KPiArUnNkcFBhcnNlckxpYkRlc3RydWN0b3IgKA0KPiArICBJTiBD T05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAg ICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4g KyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KPiArICAgICAgICAgICBSU0RQX1RBQkxFX0lO Rk8NCj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvUnNkcC9Sc2RwUGFyc2UN Cj4gckxpYi5pbmYNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9QYXJzZXJzL1JzZHAvUnNkcFBhcnNlDQo+IHJMaWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAuLjg0NmU0OTg0MWYyZGUxZTU5OTU0MDAxMmQNCj4gNTBhMDk0ZTZmMjA2Y2YzDQo+IC0tLSAv ZGV2L251bGwNCj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvUGFyc2Vycy9Sc2RwL1JzZHBQYXJzZQ0KPiByTGliLmluZg0KPiBAQCAtMCwwICsx LDMzIEBADQo+ICsjIyBAZmlsZQ0KPiArIw0KPiArIyAgQ29weXJpZ2h0IChjKSAyMDE4LCBBUk0g TGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyMNCj4gKyMgIFRoaXMgcHJvZ3JhbSBh bmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyMgIGFyZSBsaWNlbnNlZCBhbmQgbWFk ZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KPiBCU0Qg TGljZW5zZQ0KPiArIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUg ZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiArIyAgaHR0cDov L29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArIw0KPiArIyAgVEhF IFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJ UyINCj4gQkFTSVMsDQo+ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05T IE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArIyMNCj4gKw0K PiArW0RlZmluZXNdDQo+ICsgIElORl9WRVJTSU9OICAgID0gMHgwMDAxMDAxOQ0KPiArICBCQVNF X05BTUUgICAgICA9IFJzZHBQYXJzZXJMaWINCj4gKyAgRklMRV9HVUlEICAgICAgPSA5MzY1Q0VC My01MkRDLTQ4OEQtOUUyRS1DNEUxRTMwNjJGQTkNCj4gKyAgVkVSU0lPTl9TVFJJTkcgPSAxLjAN Cj4gKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJVkVSDQo+ICsgIExJQlJBUllfQ0xBU1MgID0g TlVMTHxEWEVfRFJJVkVSDQo+ICsgIENPTlNUUlVDVE9SICAgID0gUnNkcFBhcnNlckxpYkNvbnN0 cnVjdG9yDQo+ICsgIERFU1RSVUNUT1IgICAgID0gUnNkcFBhcnNlckxpYkRlc3RydWN0b3INCj4g Kw0KPiArW1NvdXJjZXNdDQo+ICsgIFJzZHBQYXJzZXIuYw0KPiArDQo+ICtbUGFja2FnZXNdDQo+ ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ICsgIFNoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiArICBN ZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiArDQo+ICtbTGlicmFyeUNsYXNzZXNdDQo+ ICsgIEFjcGlQYXJzZXJMaWINCj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU2xpdC9TbGl0UGFyc2VyLmMNCj4gYi9T aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NsaXQv U2xpdFBhcnNlci5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4DQo+IDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2YTRjNDE2YWEyNTlhZjE2YWEwYjc3 NmRjDQo+IGMwNTg2MDRiNWMxN2MyDQo+IC0tLSAvZGV2L251bGwNCj4gKysrDQo+IGIvU2hlbGxQ a2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TbGl0L1NsaXRQ YXJzZXIuYw0KPiBAQCAtMCwwICsxLDE4NyBAQA0KPiArLyoqDQo+ICsgIFNMSVQgdGFibGUgcGFy c2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFs bCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWlu ZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0 aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0KPiBMaWNlbnNlDQo+ICsgIHdoaWNo IGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGlj ZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vu c2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVE IFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiArICBXSVRI T1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4g RVhQUkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiArICAg IC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1iZXIgMjAxNw0KPiAr KiovDQo+ICsNCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gKyNpbmNs dWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+ DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ICsjaW5jbHVk ZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gKw0KPiArLy8gTG9jYWwg VmFyaWFibGVzDQo+ICtTVEFUSUMgQ09OU1QgVUlOVDY0KiBTbGl0U3lzdGVtTG9jYWxpdHlDb3Vu dDsNCj4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJbmZvOw0K PiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgQUNQSSBTTElU IHRhYmxlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBTbGl0UGFyc2VyW10g PSB7DQo+ICsgIFBBUlNFX0FDUElfSEVBREVSICgmQWNwaUhkckluZm8pLA0KPiArICB7TCJOdW1i ZXIgb2YgU3lzdGVtIExvY2FsaXRpZXMiLCA4LCAzNiwgTCIweCVseCIsIE5VTEwsDQo+ICsgICAo Vk9JRCoqKSZTbGl0U3lzdGVtTG9jYWxpdHlDb3VudCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsN Cj4gKy8qKiBNYWNybyB0byBnZXQgdGhlIHZhbHVlIG9mIGEgU3lzdGVtIExvY2FsaXR5DQo+ICsq Lw0KPiArI2RlZmluZSBTTElUX0VMRU1FTlQoUHRyLCBpLCBqKSAqKFB0ciArIChpICogTG9jYWxp dHlDb3VudCkgKyBqKQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkg U0xJVCB0YWJsZS4NCj4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFy c2VzIHRoZSBTTElUIHRhYmxlIGFuZA0KPiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRz Lg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyB2YWxpZGF0ZXMgU3lzdGVtIExvY2FsaXRp ZXMgZm9yIHRoZSBmb2xsb3dpbmc6DQo+ICsgICAgLSBEaWFnb25hbCBlbGVtZW50cyBoYXZlIGEg bm9ybWFsaXplZCB2YWx1ZSBvZiAxMA0KPiArICAgIC0gUmVsYXRpdmUgZGlzdGFuY2UgZnJvbSBT eXN0ZW0gTG9jYWxpdHkgYXQgaSpOK2ogaXMgc2FtZSBhcw0KPiArICAgICAgaipOK2kNCj4gKw0K PiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFD UEkgZmllbGRzLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0 byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVu Z3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRh YmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8NCj4gK1ZPSUQN Cj4gK0VGSUFQSQ0KPiArUGFyc2VBY3BpU2xpdCAoDQo+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4g KyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQz MiBPZmZzZXQ7DQo+ICsgIFVJTlQ2NCBpOw0KPiArICBVSU5UNjQgajsNCj4gKyAgVUlOVDY0IExv Y2FsaXR5Q291bnQ7DQo+ICsgIFVJTlQ4KiBMb2NhbGl0eVB0cjsNCj4gKyAgQ0hBUjE2IEJ1ZmZl cls4MF07ICAvLyBVc2VkIGZvciBBc2NpaU5hbWUgcGFyYW0gb2YgUGFyc2VBY3BpDQo+ICsNCj4g KyAgaWYgKCFUcmFjZSkgew0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIE9mZnNl dCA9IFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAgICAw LA0KPiArICAgICAgICAgICAgICJTTElUIiwNCj4gKyAgICAgICAgICAgICBQdHIsDQo+ICsgICAg ICAgICAgICAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMg KFNsaXRQYXJzZXIpDQo+ICsgICAgICAgICAgICAgKTsNCj4gKyAgTG9jYWxpdHlQdHIgPSBQdHIg KyBPZmZzZXQ7DQo+ICsNCj4gKyAgTG9jYWxpdHlDb3VudCA9ICpTbGl0U3lzdGVtTG9jYWxpdHlD b3VudDsNCj4gKyAgLy8gV2Ugb25seSBwcmludCB0aGUgTG9jYWxpdGllcyBpZiB0aGUgY291bnQg aXMgbGVzcyB0aGFuIDE2DQo+ICsgIC8vIElmIHRoZSBsb2NhbGl0eSBjb3VudCBpcyBtb3JlIHRo YW4gMTYgdGhlbiByZWZlciB0byB0aGUNCj4gKyAgLy8gcmF3IGRhdGEgZHVtcC4NCj4gKyAgaWYg KExvY2FsaXR5Q291bnQgPCAxNikgew0KPiArICAgIFVuaWNvZGVTUHJpbnQgKA0KPiArICAgICAg QnVmZmVyLA0KPiArICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KPiArICAgICAgTCJFbnRyeVsweCVs eF1bMHglbHhdIiwNCj4gKyAgICAgIExvY2FsaXR5Q291bnQsDQo+ICsgICAgICBMb2NhbGl0eUNv dW50DQo+ICsgICAgICApOw0KPiArICAgIFByaW50RmllbGROYW1lICgwLCBCdWZmZXIpOw0KPiAr ICAgIFByaW50IChMIlxuIik7DQo+ICsgICAgUHJpbnQgKEwiICAgICAgICIpOw0KPiArICAgIGZv ciAoaiA9IDA7IGogPCBMb2NhbGl0eUNvdW50OyBqKyspIHsNCj4gKyAgICAgIFByaW50IChMIiAo JTNkKSAiLCBqKTsNCj4gKyAgICB9DQo+ICsgICAgUHJpbnQgKEwiXG4iKTsNCj4gKyAgICBmb3Ig KGkgPSAwOyBpIDwgTG9jYWxpdHlDb3VudDsgaSsrKSB7DQo+ICsgICAgICBQcmludCAoTCIgKCUz ZCkgIiwgaSk7DQo+ICsgICAgICBmb3IgKGogPSAwOyBqIDwgTG9jYWxpdHlDb3VudDsgaisrKSB7 DQo+ICsgICAgICAgIFByaW50IChMIiAgJTNkICAiLCBTTElUX0VMRU1FTlQgKExvY2FsaXR5UHRy LCBpLCBqKSk7DQo+ICsgICAgICB9DQo+ICsgICAgICBQcmludCAoTCJcbiIpOw0KPiArICAgIH0N Cj4gKyAgfQ0KPiArDQo+ICsgIC8vIFZhbGlkYXRlDQo+ICsgIGZvciAoaSA9IDA7IGkgPCBMb2Nh bGl0eUNvdW50OyBpKyspIHsNCj4gKyAgICBmb3IgKGogPSAwOyBqIDwgTG9jYWxpdHlDb3VudDsg aisrKSB7DQo+ICsgICAgICAvLyBFbGVtZW50W3hdW3hdIG11c3QgYmUgZXF1YWwgdG8gMTANCj4g KyAgICAgIGlmICgoaSA9PSBqKSAmJiAoU0xJVF9FTEVNRU5UIChMb2NhbGl0eVB0ciwgaSwgaikg IT0gMTApKSB7DQo+ICsgICAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgICAg IFByaW50ICgNCj4gKyAgICAgICAgICBMIkVSUk9SOiBEaWFnb25hbCBFbGVtZW50WzB4JWx4XVsw eCVseF0gKCUzZCkuIg0KPiArICAgICAgICAgICAgIiBOb3JtYWxpemVkIFZhbHVlIGlzIG5vdCAx MFxuIiwNCj4gKyAgICAgICAgICBpLA0KPiArICAgICAgICAgIGosDQo+ICsgICAgICAgICAgU0xJ VF9FTEVNRU5UIChMb2NhbGl0eVB0ciwgaSwgaikNCj4gKyAgICAgICAgICApOw0KPiArICAgICAg fQ0KPiArICAgICAgLy8gRWxlbWVudFtpXVtqXSBtdXN0IGJlIGVxdWFsIHRvIEVsZW1lbnRbal1b aV0NCj4gKyAgICAgIGlmIChTTElUX0VMRU1FTlQgKExvY2FsaXR5UHRyLCBpLCBqKSAhPQ0KPiAr ICAgICAgICAgIFNMSVRfRUxFTUVOVCAoTG9jYWxpdHlQdHIsIGosIGkpKSB7DQo+ICsgICAgICAg IEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgICAgIFByaW50ICgNCj4gKyAgICAgICAg ICBMIkVSUk9SOiBSZWxhdGl2ZSBkaXN0YW5jZXMgZm9yIEVsZW1lbnRbMHglbHhdWzB4JWx4XSAo JTNkKSBhbmQgXG4iDQo+ICsgICAgICAgICAgICJFbGVtZW50WzB4JWx4XVsweCVseF0gKCUzZCkg ZG8gbm90IG1hdGNoLlxuIiwNCj4gKyAgICAgICAgICBpLA0KPiArICAgICAgICAgIGosDQo+ICsg ICAgICAgICAgU0xJVF9FTEVNRU5UIChMb2NhbGl0eVB0ciwgaSwgaiksDQo+ICsgICAgICAgICAg aiwNCj4gKyAgICAgICAgICBpLA0KPiArICAgICAgICAgIFNMSVRfRUxFTUVOVCAoTG9jYWxpdHlQ dHIsIGosIGkpDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgIH0NCj4gKyAgICB9DQo+ICsgIH0N Cj4gK30NCj4gKw0KPiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFt IFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFt IFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4g KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVk Lg0KPiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUg QUNQSSBUYWJsZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXMgYWxyZWFk eSByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFt ZXRlciBpcyBpbnZhbGlkDQo+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIE5vIHNw YWNlIHRvIHJlZ2lzdGVyIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw YXJzZXIuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtTbGl0UGFyc2VyTGli Q29uc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIElt YWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3Rl bVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2VyICgNCj4gKw0K PiBFRklfQUNQSV82XzJfU1lTVEVNX0xPQ0FMSVRZX0lORk9STUFUSU9OX1RBQkxFX1NJR05BVFVS RSwNCj4gKyAgICAgICAgICAgUGFyc2VBY3BpU2xpdA0KPiArICAgICAgICAgICApOw0KPiArfQ0K PiArDQo+ICsvKiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5d ICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5d ICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0K PiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVn aXN0ZXJlZC4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1NsaXRQYXJzZXJM aWJEZXN0cnVjdG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJ bWFnZUhhbmRsZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0 ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4g Kw0KPiBFRklfQUNQSV82XzJfU1lTVEVNX0xPQ0FMSVRZX0lORk9STUFUSU9OX1RBQkxFX1NJR05B VFVSRQ0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TbGl0L1NsaXRQYXJz ZXJMaWIuDQo+IGluZg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL1BhcnNlcnMvU2xpdC9TbGl0UGFyc2VyTGliLg0KPiBpbmYNCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMC4uOTg5MDE2ODFhNjk2MTE3YzJlZTc1YzA5Yg0KPiBlZWExOGJlMWUwMjM0YTYNCj4gLS0t IC9kZXYvbnVsbA0KPiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9QYXJzZXJzL1NsaXQvU2xpdFBhcnNlckxpYi4NCj4gaW5mDQo+IEBAIC0wLDAg KzEsMzMgQEANCj4gKyMjIEBmaWxlDQo+ICsjDQo+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTcgLSAy MDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyMNCj4gKyMgIFRoaXMg cHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyMgIGFyZSBsaWNlbnNl ZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRo ZQ0KPiBCU0QgTGljZW5zZQ0KPiArIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRp b24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiAr IyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArIw0K PiArIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9O IEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVT RU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiAr IyMNCj4gKw0KPiArW0RlZmluZXNdDQo+ICsgIElORl9WRVJTSU9OICAgID0gMHgwMDAxMDAxOQ0K PiArICBCQVNFX05BTUUgICAgICA9IFNsaXRQYXJzZXJMaWINCj4gKyAgRklMRV9HVUlEICAgICAg PSAzRENGNzMzMy0zNjdCLTRENDAtODU2QS1GRjBGNzNGQjZCNDkNCj4gKyAgVkVSU0lPTl9TVFJJ TkcgPSAxLjANCj4gKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJVkVSDQo+ICsgIExJQlJBUllf Q0xBU1MgID0gTlVMTHxEWEVfRFJJVkVSDQo+ICsgIENPTlNUUlVDVE9SICAgID0gU2xpdFBhcnNl ckxpYkNvbnN0cnVjdG9yDQo+ICsgIERFU1RSVUNUT1IgICAgID0gU2xpdFBhcnNlckxpYkRlc3Ry dWN0b3INCj4gKw0KPiArW1NvdXJjZXNdDQo+ICsgIFNsaXRQYXJzZXIuYw0KPiArDQo+ICtbUGFj a2FnZXNdDQo+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ICsgIFNoZWxsUGtnL1NoZWxsUGtnLmRl Yw0KPiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiArDQo+ICtbTGlicmFyeUNs YXNzZXNdDQo+ICsgIEFjcGlQYXJzZXJMaWINCj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3Bjci9TcGNyUGFyc2Vy Lg0KPiBjDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv UGFyc2Vycy9TcGNyL1NwY3JQYXJzZXIuDQo+IGMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g aW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDMxOWI5 NjQxOTgyZTA2MDFiMmJjMWMzYw0KPiA5ODk2YTMwNzdiN2ZjMDENCj4gLS0tIC9kZXYvbnVsbA0K PiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Q YXJzZXJzL1NwY3IvU3BjclBhcnNlci4NCj4gYw0KPiBAQCAtMCwwICsxLDIwOSBAQA0KPiArLyoq DQo+ICsgIFNQQ1IgdGFibGUgcGFyc2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0g MjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3Jh bSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBt YWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0K PiBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhl IGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyAgaHR0cDov L29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQ Uk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMi DQo+IEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9G IEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ICsgIEBwYXIg UmVmZXJlbmNlKHMpOg0KPiArICAgIC0gTWljcm9zb2Z0IFNlcmlhbCBQb3J0IENvbnNvbGUgUmVk aXJlY3Rpb24gVGFibGUNCj4gKyAgICAgIFNwZWNpZmljYXRpb24gLSBWZXJzaW9uIDEuMDMgLSBB dWd1c3QgMTAsIDIwMTUuDQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRh cmQvQWNwaS5oPg0KPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvU2VyaWFsUG9ydENvbnNv bGVSZWRpcmVjdGlvblRhYmxlLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ICsjaW5jbHVkZSA8 TGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gKw0KPiArLy8gTG9jYWwgdmFy aWFibGVzDQo+ICtTVEFUSUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5m bzsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBJbnRlcnJ1cHQgVHlw ZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9m IHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29u dGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAg ICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8N Cj4gK1NUQVRJQw0KPiArVk9JRA0KPiArVmFsaWRhdGVJbnRlcnJ1cHRUeXBlICgNCj4gKyAgSU4g VUlOVDgqIFB0ciwNCj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gKyAgKTsNCj4gKw0KPiArLyoq IFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBJcnEuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0g UHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gKyAgQHBh cmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24g ZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRv IHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK1Zh bGlkYXRlSXJxICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVk9JRCogIENvbnRleHQN Cj4gKyAgKTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhl IEFDUEkgU1BDUiBUYWJsZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgU3Bj clBhcnNlcltdID0gew0KPiArICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlIZHJJbmZvKSwNCj4g KyAge0wiSW50ZXJmYWNlIFR5cGUiLCAxLCAzNiwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDMsIDM3LCBMIiV4ICV4ICV4IiwgRHVtcDNDaGFycywg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkJhc2UgQWRkcmVzcyIsIDEyLCA0MCwgTlVMTCwg RHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkludGVycnVwdCBUeXBlIiwgMSwg NTIsIEwiJWQiLCBOVUxMLCBOVUxMLCBWYWxpZGF0ZUludGVycnVwdFR5cGUsIE5VTEx9LA0KPiAr ICB7TCJJUlEiLCAxLCA1MywgTCIlZCIsIE5VTEwsIE5VTEwsIFZhbGlkYXRlSXJxLCBOVUxMfSwN Cj4gKyAge0wiR2xvYmFsIFN5c3RlbSBJbnRlcnJ1cHQiLCA0LCA1NCwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkJhdWQgUmF0ZSIsIDEsIDU4LCBMIiVkIiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBhcml0eSIsIDEsIDU5LCBMIiVkIiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlN0b3AgQml0cyIsIDEsIDYwLCBMIiVkIiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkZsb3cgQ29udHJvbCIsIDEsIDYxLCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiVGVybWluYWwgVHlwZSIs IDEsIDYyLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVk IiwgMSwgNjMsIEwiJXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJQ Q0kgRGV2aWNlIElEIiwgMiwgNjQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCJQQ0kgVmVuZG9yIElEIiwgMiwgNjYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJQQ0kgQnVzIE51bWJlciIsIDEsIDY4LCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUENJIERldmljZSBOdW1iZXIiLCAxLCA2OSwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBDSSBGdW5jdGlvbiBOdW1i ZXIiLCAxLCA3MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBD SSBGbGFncyIsIDQsIDcxLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAg e0wiUENJIFNlZ21lbnQiLCAxLCA3NSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIlJlc2VydmVkIiwgNCwgNzYsIEwiJXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fQ0KPiArfTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBJbnRlcnJ1 cHQgVHlwZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0 YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIg dG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAg ICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0K PiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArVmFsaWRhdGVJbnRlcnJ1cHRUeXBlICgNCj4g KyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gKyAgKQ0KPiArew0K PiArI2lmIGRlZmluZWQgKE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVkIChNREVfQ1BVX0FBUkNINjQp DQo+ICsgIFVJTlQ4IEludGVycnVwdFR5cGUgPSAqUHRyOw0KPiArICBpZiAoSW50ZXJydXB0VHlw ZSAhPQ0KPiArDQo+IEVGSV9BQ1BJX1NFUklBTF9QT1JUX0NPTlNPTEVfUkVESVJFQ1RJT05fVEFC TEVfSU5URVJSVVBUX1RZUEVfDQo+IEdJQykgew0KPiArICAgIEluY3JlbWVudEVycm9yQ291bnQg KCk7DQo+ICsgICAgUHJpbnQgKA0KPiArICAgICAgTCJcbkVSUk9SOiBJbnRlcnJ1cHRUeXBlID0g JWQuIFRoaXMgbXVzdCBiZSA4IG9uIEFSTSBQbGF0Zm9ybXMiLA0KPiArICAgICAgSW50ZXJydXB0 VHlwZQ0KPiArICAgICAgKTsNCj4gKyAgfQ0KPiArI2VuZGlmDQo+ICt9DQo+ICsNCj4gKy8qKiBU aGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgSXJxLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0 ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJh bSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUu Zy4gdGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0 aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtWYWxp ZGF0ZUlycSAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ ICsgICkNCj4gK3sNCj4gKyNpZiBkZWZpbmVkIChNREVfQ1BVX0FSTSkgfHwgZGVmaW5lZCAoTURF X0NQVV9BQVJDSDY0KQ0KPiArICBVSU5UOCBJcnEgPSAqUHRyOw0KPiArICBpZiAoSXJxICE9IDAp IHsNCj4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgIFByaW50ICgNCj4gKyAg ICAgIEwiXG5FUlJPUjogSXJxID0gJWQuIFRoaXMgbXVzdCBiZSB6ZXJvIG9uIEFSTSBQbGF0Zm9y bXNcbiIsDQo+ICsgICAgICBJcnENCj4gKyAgICAgICk7DQo+ICsgIH0NCj4gKyNlbmRpZg0KPiAr fQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgU1BDUiB0YWJsZS4N Cj4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBTUENS IHRhYmxlIGFuZA0KPiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ICsg IFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9ucyBvZiB0aGUgQUNQSSB0YWJs ZSBmaWVsZHMuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRS VUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAg ICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBb aW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsgIEBw YXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4N Cj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaVNwY3IgKA0KPiArICBJTiBC T09MRUFOIFRyYWNlLA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMyICBBY3Bp VGFibGVMZW5ndGgsDQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gKyAgKQ0K PiArew0KPiArICBpZiAoIVRyYWNlKSB7DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsNCj4g KyAgLy8gRHVtcCB0aGUgU1BDUg0KPiArICBQYXJzZUFjcGkgKA0KPiArICAgIFRSVUUsDQo+ICsg ICAgMCwNCj4gKyAgICAiU1BDUiIsDQo+ICsgICAgUHRyLA0KPiArICAgIEFjcGlUYWJsZUxlbmd0 aCwNCj4gKyAgICBQQVJTRVJfUEFSQU1TIChTcGNyUGFyc2VyKQ0KPiArICAgICk7DQo+ICt9DQo+ ICsNCj4gKy8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJ bWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBT eXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gKyAg QHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFi bGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0 ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMg aW52YWxpZA0KPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byBy ZWdpc3RlciB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0K PiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArU3BjclBhcnNlckxpYkNvbnN0cnVj dG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRs ZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0K PiArICApDQo+ICt7DQo+ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ICsNCj4gRUZJX0FD UElfNl8yX1NFUklBTF9QT1JUX0NPTlNPTEVfUkVESVJFQ1RJT05fVEFCTEVfU0lHTkFUVVJFLA0K PiArICAgICAgICAgICBQYXJzZUFjcGlTcGNyDQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+ICsN Cj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIElt YWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5 c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJldHZh bCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ICsg IEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3Rl cmVkLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArU3BjclBhcnNlckxpYkRl c3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdl SGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRh YmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KPiArDQo+ IEVGSV9BQ1BJXzZfMl9TRVJJQUxfUE9SVF9DT05TT0xFX1JFRElSRUNUSU9OX1RBQkxFX1NJR05B VFVSRQ0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcGNyL1NwY3JQYXJz ZXJMDQo+IGliLmluZg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL1BhcnNlcnMvU3Bjci9TcGNyUGFyc2VyTA0KPiBpYi5pbmYNCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMC4uNzIzNTc0OGZhZTIxMjI5MTZkODc2NzUwNzgNCj4gMTUwNzc0YzYyN2FmMzUNCj4gLS0t IC9kZXYvbnVsbA0KPiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9QYXJzZXJzL1NwY3IvU3BjclBhcnNlckwNCj4gaWIuaW5mDQo+IEBAIC0wLDAg KzEsMzMgQEANCj4gKyMjIEBmaWxlDQo+ICsjDQo+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTcgLSAy MDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyMNCj4gKyMgIFRoaXMg cHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyMgIGFyZSBsaWNlbnNl ZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRo ZQ0KPiBCU0QgTGljZW5zZQ0KPiArIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRp b24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiAr IyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArIw0K PiArIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9O IEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVT RU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiAr IyMNCj4gKw0KPiArW0RlZmluZXNdDQo+ICsgIElORl9WRVJTSU9OICAgID0gMHgwMDAxMDAxOQ0K PiArICBCQVNFX05BTUUgICAgICA9IFNwY3JQYXJzZXJMaWINCj4gKyAgRklMRV9HVUlEICAgICAg PSAwOEMxN0M0Qy1FNjJELTRBRTQtOTVDNS1ERUY0MkEyNEE1NkMNCj4gKyAgVkVSU0lPTl9TVFJJ TkcgPSAxLjANCj4gKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJVkVSDQo+ICsgIExJQlJBUllf Q0xBU1MgID0gTlVMTHxEWEVfRFJJVkVSDQo+ICsgIENPTlNUUlVDVE9SICAgID0gU3BjclBhcnNl ckxpYkNvbnN0cnVjdG9yDQo+ICsgIERFU1RSVUNUT1IgICAgID0gU3BjclBhcnNlckxpYkRlc3Ry dWN0b3INCj4gKw0KPiArW1NvdXJjZXNdDQo+ICsgIFNwY3JQYXJzZXIuYw0KPiArDQo+ICtbUGFj a2FnZXNdDQo+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ICsgIFNoZWxsUGtnL1NoZWxsUGtnLmRl Yw0KPiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiArDQo+ICtbTGlicmFyeUNs YXNzZXNdDQo+ICsgIEFjcGlQYXJzZXJMaWINCj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3JhdC9TcmF0UGFyc2Vy LmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJz ZXJzL1NyYXQvU3JhdFBhcnNlci5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4DQo+ IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2ZDk3M2M5ODk4YTA1 OTMwOGNjM2Q1OGINCj4gYmU2YjRhZmMwNjdiOWJlDQo+IC0tLSAvZGV2L251bGwNCj4gKysrDQo+ IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9T cmF0L1NyYXRQYXJzZXIuYw0KPiBAQCAtMCwwICsxLDM3MyBAQA0KPiArLyoqDQo+ICsgIFNSQVQg dGFibGUgcGFyc2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExp bWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFj Y29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJs ZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0KPiBMaWNlbnNlDQo+ ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBv ZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uu b3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJ U1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0K PiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBF SVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ICsgIEBwYXIgUmVmZXJlbmNlKHMp Og0KPiArICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1iZXIg MjAxNw0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4N Cj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9V ZWZpTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gKw0KPiAr Ly8gTG9jYWwgVmFyaWFibGVzDQo+ICtTVEFUSUMgQ09OU1QgVUlOVDgqIFNyYXRSQVR5cGU7DQo+ ICtTVEFUSUMgQ09OU1QgVUlOVDgqIFNyYXRSQUxlbmd0aDsNCj4gK1NUQVRJQyBBQ1BJX0RFU0NS SVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlv biB2YWxpZGF0ZXMgdGhlIFJlc2VydmVkIGZpZWxkIGluIHRoZSBTUkFUIHRhYmxlIGhlYWRlci4N Cj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRo ZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4 dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAg ICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4g K1NUQVRJQw0KPiArVk9JRA0KPiArVmFsaWRhdGVTcmF0UmVzZXJ2ZWQgKA0KPiArICBJTiBVSU5U OCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArICApOw0KPiArDQo+ICsvKiogVGhp cyBmdW5jdGlvbiB0cmFjZXMgdGhlIEFQSUMgUHJveGltaXR5IERvbWFpbiBmaWVsZC4NCj4gKw0K PiArICBAcGFyYW0gW2luXSBGb3JtYXQgIEZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRh dGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhl IGJ1ZmZlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0R1bXBTcmF0QXBpY1Byb3hp bWl0eSAoDQo+ICsgIElOICBDT05TVCBDSEFSMTYqICBGb3JtYXQsDQo+ICsgIElOICBVSU5UOCog ICAgICAgICBQdHINCj4gKyAgKTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRl c2NyaWJpbmcgdGhlIFNSQVQgVGFibGUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFS U0VSIFNyYXRQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5m byksDQo+ICsgIHtMIlJlc2VydmVkIiwgNCwgMzYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIFZhbGlk YXRlU3JhdFJlc2VydmVkLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCA4LCA0MCwgTCIweCVs eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9Q QVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgUmVzb3VyY2UgQWxsb2NhdGlvbg0KPiArICAgIHN0 cnVjdHVyZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFNyYXRS ZXNvdXJjZUFsbG9jYXRpb25QYXJzZXJbXSA9IHsNCj4gKyAge0wiVHlwZSIsIDEsIDAsIE5VTEws IE5VTEwsIChWT0lEKiopJlNyYXRSQVR5cGUsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJMZW5ndGgi LCAxLCAxLCBOVUxMLCBOVUxMLCAoVk9JRCoqKSZTcmF0UkFMZW5ndGgsIE5VTEwsIE5VTEx9DQo+ ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgR0lD QyBBZmZpbml0eSBzdHJ1Y3R1cmUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VS IFNyYXRHaWNDQWZmaW5pdHlQYXJzZXJbXSA9IHsNCj4gKyAge0wiVHlwZSIsIDEsIDAsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJMZW5ndGgiLCAxLCAxLCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJQcm94aW1pdHkgRG9t YWluIiwgNCwgMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkFD UEkgUHJvY2Vzc29yIFVJRCIsIDQsIDYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiArICB7TCJGbGFncyIsIDQsIDEwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiQ2xvY2sgRG9tYWluIiwgNCwgMTQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3Jp YmluZyB0aGUgR0lDIElUUyBBZmZpbml0eSBzdHJ1Y3R1cmUuDQo+ICsqLw0KPiArU1RBVElDIENP TlNUIEFDUElfUEFSU0VSIFNyYXRHaWNJVFNBZmZpbml0eVBhcnNlcltdID0gew0KPiArICB7TCJU eXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxl bmd0aCIsIDEsIDEsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsg IHtMIlByb3hpbWl0eSBEb21haW4iLCA0LCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAyLCA2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gKyAge0wiSVRTIElkIiwgNCwgOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3Jp YmluZyB0aGUgTWVtb3J5IEFmZmluaXR5IHN0cnVjdHVyZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09O U1QgQUNQSV9QQVJTRVIgU3JhdE1lbUFmZmluaXR5UGFyc2VyW10gPSB7DQo+ICsgIHtMIlR5cGUi LCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3Ro IiwgMSwgMSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsNCj4gKyAge0wi UHJveGltaXR5IERvbWFpbiIsIDQsIDIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiArICB7TCJSZXNlcnZlZCIsIDIsIDYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiArICB7TCJCYXNlIEFkZHJlc3MgTG93IiwgNCwgOCwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkJhc2UgQWRkcmVzcyBIaWdoIiwgNCwgMTIsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJMZW5ndGggTG93IiwgNCwgMTYs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJMZW5ndGggSGlnaCIs IDQsIDIwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2 ZWQiLCA0LCAyNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkZs YWdzIiwgNCwgMjgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJS ZXNlcnZlZCIsIDgsIDMyLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307 DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBUElDL1NB UElDIEFmZmluaXR5IHN0cnVjdHVyZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJT RVIgU3JhdEFwY2lTYXBpY0FmZmluaXR5UGFyc2VyW10gPSB7DQo+ICsgIHtMIlR5cGUiLCAxLCAw LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3RoIiwgMSwg MSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsNCj4gKyAge0wiUHJveGlt aXR5IERvbWFpbiBbNzowXSIsIDEsIDIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiArICB7TCJBUElDIElEIiwgMSwgMywgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIkZsYWdzIiwgNCwgNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIkxvY2FsIFNBUElDIEVJRCIsIDEsIDgsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiArICB7TCJQcm94aW1pdHkgRG9tYWluIFszMTo4XSIsIDMsIDksIEwi MHgleCIsIER1bXBTcmF0QXBpY1Byb3hpbWl0eSwNCj4gKyAgIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCJDbG9jayBEb21haW4iLCA0LCAxMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5n IHRoZSBQcm9jZXNzb3IgTG9jYWwgeDJBUElDDQo+ICsgICAgQWZmaW5pdHkgc3RydWN0dXJlLg0K PiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBTcmF0WDJBcGNpQWZmaW5pdHlQYXJz ZXJbXSA9IHsNCj4gKyAge0wiVHlwZSIsIDEsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJMZW5ndGgiLCAxLCAxLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gKw0KPiArICB7TCJSZXNlcnZlZCIsIDIsIDIsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQcm94aW1pdHkgRG9tYWluIiwgNCwgNCwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlgyQVBJQyBJRCIsIDQsIDgsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJGbGFncyIsIDQsIDEyLCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQ2xvY2sgRG9tYWluIiwg NCwgMTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZl ZCIsIDQsIDIwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0K PiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBSZXNlcnZlZCBmaWVsZCBpbiB0aGUg U1JBVCB0YWJsZSBoZWFkZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4 dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxl IGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK1ZhbGlkYXRlU3JhdFJlc2Vy dmVkICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gKyAg KQ0KPiArew0KPiArICBpZiAoKihVSU5UMzIqKVB0ciAhPSAxKSB7DQo+ICsgICAgSW5jcmVtZW50 RXJyb3JDb3VudCAoKTsNCj4gKyAgICBQcmludCAoTCJcbkVSUk9SOiBSZXNlcnZlZCBzaG91bGQg YmUgMSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS5cbiIpOw0KPiArICB9DQo+ICt9DQo+ICsN Cj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyB0aGUgQVBJQyBQcm94aW1pdHkgRG9tYWluIGZp ZWxkLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgRm9ybWF0IHN0cmluZyBmb3IgdHJh Y2luZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBz dGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRHVtcFNy YXRBcGljUHJveGltaXR5ICgNCj4gKyBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCwNCj4gKyBJTiBV SU5UOCogICAgICAgIFB0cg0KPiArICkNCj4gK3sNCj4gKyAgVUlOVDMyIFByb3hpbWl0eURvbWFp biA9IFB0clswXSB8IChQdHJbMV0gPDwgOCkgfCAoUHRyWzJdIDw8IDE2KTsNCj4gKyAgUHJpbnQg KEZvcm1hdCwgUHJveGltaXR5RG9tYWluKTsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rp b24gcGFyc2VzIHRoZSBBQ1BJIFNSQVQgdGFibGUuDQo+ICsgIFdoZW4gdHJhY2UgaXMgZW5hYmxl ZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgU1JBVCB0YWJsZSBhbmQNCj4gKyAgdHJhY2VzIHRo ZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUg Zm9sbG93aW5nIFJlc291cmNlIEFsbG9jYXRpb24gU3RydWN0dXJlczoNCj4gKyAgICAtIFByb2Nl c3NvciBMb2NhbCBBUElDL1NBUElDIEFmZmluaXR5IFN0cnVjdHVyZQ0KPiArICAgIC0gTWVtb3J5 IEFmZmluaXR5IFN0cnVjdHVyZQ0KPiArICAgIC0gUHJvY2Vzc29yIExvY2FsIHgyQVBJQyBBZmZp bml0eSBTdHJ1Y3R1cmUNCj4gKyAgICAtIEdJQ0MgQWZmaW5pdHkgU3RydWN0dXJlDQo+ICsNCj4g KyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkgdGFi bGUgZmllbGRzLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBU UlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAg ICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0g W2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBA cGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUu DQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtQYXJzZUFjcGlTcmF0ICgNCj4gKyAgSU4g Qk9PTEVBTiBUcmFjZSwNCj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgQWNw aVRhYmxlTGVuZ3RoLA0KPiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICkN Cj4gK3sNCj4gKyAgVUlOVDMyIE9mZnNldDsNCj4gKyAgVUlOVDgqIFJlc291cmNlUHRyOw0KPiAr ICBVSU5UMzIgR2ljQ0FmZmluaXR5SW5kZXggPSAwOw0KPiArICBVSU5UMzIgR2ljSVRTQWZmaW5p dHlJbmRleCA9IDA7DQo+ICsgIFVJTlQzMiBNZW1vcnlBZmZpbml0eUluZGV4ID0gMDsNCj4gKyAg VUlOVDMyIEFwaWNTYXBpY0FmZmluaXR5SW5kZXggPSAwOw0KPiArICBVSU5UMzIgWDJBcGljQWZm aW5pdHlJbmRleCA9IDA7DQo+ICsgIENIQVI4ICBCdWZmZXJbODBdOyAgLy8gVXNlZCBmb3IgQXNj aWlOYW1lIHBhcmFtIG9mIFBhcnNlQWNwaQ0KPiArDQo+ICsgIGlmICghVHJhY2UpIHsNCj4gKyAg ICByZXR1cm47DQo+ICsgIH0NCj4gKw0KPiArICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiArICAg ICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAgICAgICAgMCwNCj4gKyAgICAgICAgICAgICAiU1JB VCIsDQo+ICsgICAgICAgICAgICAgUHRyLA0KPiArICAgICAgICAgICAgIEFjcGlUYWJsZUxlbmd0 aCwNCj4gKyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChTcmF0UGFyc2VyKQ0KPiArICAgICAg ICAgICAgICk7DQo+ICsgIFJlc291cmNlUHRyID0gUHRyICsgT2Zmc2V0Ow0KPiArDQo+ICsgIHdo aWxlIChPZmZzZXQgPCBBY3BpVGFibGVMZW5ndGgpIHsNCj4gKyAgICBQYXJzZUFjcGkgKA0KPiAr ICAgICAgRkFMU0UsDQo+ICsgICAgICAwLA0KPiArICAgICAgTlVMTCwNCj4gKyAgICAgIFJlc291 cmNlUHRyLA0KPiArICAgICAgMiwgIC8vIFRoZSBsZW5ndGggaXMgMSBieXRlIGF0IG9mZnNldCAx DQo+ICsgICAgICBQQVJTRVJfUEFSQU1TIChTcmF0UmVzb3VyY2VBbGxvY2F0aW9uUGFyc2VyKQ0K PiArICAgICAgKTsNCj4gKw0KPiArICAgIHN3aXRjaCAoKlNyYXRSQVR5cGUpIHsNCj4gKyAgICAg IGNhc2UgRUZJX0FDUElfNl8yX0dJQ0NfQUZGSU5JVFk6DQo+ICsgICAgICAgIEFzY2lpU1ByaW50 ICgNCj4gKyAgICAgICAgICBCdWZmZXIsDQo+ICsgICAgICAgICAgc2l6ZW9mIChCdWZmZXIpLA0K PiArICAgICAgICAgICJHSUNDIEFmZmluaXR5IFN0cnVjdHVyZSBbJWRdIiwNCj4gKyAgICAgICAg ICBHaWNDQWZmaW5pdHlJbmRleCsrDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgICAgUGFyc2VB Y3BpICgNCj4gKyAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgIDIsDQo+ICsgICAgICAgICAg QnVmZmVyLA0KPiArICAgICAgICAgIFJlc291cmNlUHRyLA0KPiArICAgICAgICAgICpTcmF0UkFM ZW5ndGgsDQo+ICsgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoU3JhdEdpY0NBZmZpbml0eVBhcnNl cikNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgICBicmVhazsNCj4gKw0KPiArICAgICAgY2Fz ZSBFRklfQUNQSV82XzJfR0lDX0lUU19BRkZJTklUWToNCj4gKyAgICAgICAgQXNjaWlTUHJpbnQg KA0KPiArICAgICAgICAgIEJ1ZmZlciwNCj4gKyAgICAgICAgICBzaXplb2YgKEJ1ZmZlciksDQo+ ICsgICAgICAgICAgIkdJQyBJVFMgQWZmaW5pdHkgU3RydWN0dXJlIFslZF0iLA0KPiArICAgICAg ICAgIEdpY0lUU0FmZmluaXR5SW5kZXgrKw0KPiArICAgICAgICApOw0KPiArICAgICAgICBQYXJz ZUFjcGkgKA0KPiArICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAgICAgMiwNCj4gKyAgICAgICAg ICBCdWZmZXIsDQo+ICsgICAgICAgICAgUmVzb3VyY2VQdHIsDQo+ICsgICAgICAgICAgKlNyYXRS QUxlbmd0aCwNCj4gKyAgICAgICAgICBQQVJTRVJfUEFSQU1TIChTcmF0R2ljSVRTQWZmaW5pdHlQ YXJzZXIpDQo+ICsgICAgICAgICk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAgICBj YXNlIEVGSV9BQ1BJXzZfMl9NRU1PUllfQUZGSU5JVFk6DQo+ICsgICAgICAgIEFzY2lpU1ByaW50 ICgNCj4gKyAgICAgICAgICBCdWZmZXIsDQo+ICsgICAgICAgICAgc2l6ZW9mIChCdWZmZXIpLA0K PiArICAgICAgICAgICJNZW1vcnkgQWZmaW5pdHkgU3RydWN0dXJlIFslZF0iLA0KPiArICAgICAg ICAgIE1lbW9yeUFmZmluaXR5SW5kZXgrKw0KPiArICAgICAgICAgICk7DQo+ICsgICAgICAgIFBh cnNlQWNwaSAoDQo+ICsgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAyLA0KPiArICAgICAg ICAgIEJ1ZmZlciwNCj4gKyAgICAgICAgICBSZXNvdXJjZVB0ciwNCj4gKyAgICAgICAgICAqU3Jh dFJBTGVuZ3RoLA0KPiArICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKFNyYXRNZW1BZmZpbml0eVBh cnNlcikNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgICBicmVhazsNCj4gKw0KPiArICAgICAg Y2FzZSBFRklfQUNQSV82XzJfUFJPQ0VTU09SX0xPQ0FMX0FQSUNfU0FQSUNfQUZGSU5JVFk6DQo+ ICsgICAgICAgIEFzY2lpU1ByaW50ICgNCj4gKyAgICAgICAgICBCdWZmZXIsDQo+ICsgICAgICAg ICAgc2l6ZW9mIChCdWZmZXIpLA0KPiArICAgICAgICAgICJBUElDL1NBUElDIEFmZmluaXR5IFN0 cnVjdHVyZSBbJWRdIiwNCj4gKyAgICAgICAgICBBcGljU2FwaWNBZmZpbml0eUluZGV4KysNCj4g KyAgICAgICAgICApOw0KPiArICAgICAgICBQYXJzZUFjcGkgKA0KPiArICAgICAgICAgIFRSVUUs DQo+ICsgICAgICAgICAgMiwNCj4gKyAgICAgICAgICBCdWZmZXIsDQo+ICsgICAgICAgICAgUmVz b3VyY2VQdHIsDQo+ICsgICAgICAgICAgKlNyYXRSQUxlbmd0aCwNCj4gKyAgICAgICAgICBQQVJT RVJfUEFSQU1TIChTcmF0QXBjaVNhcGljQWZmaW5pdHlQYXJzZXIpDQo+ICsgICAgICAgICAgKTsN Cj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICAgIGNhc2UgRUZJX0FDUElfNl8yX1BST0NF U1NPUl9MT0NBTF9YMkFQSUNfQUZGSU5JVFk6DQo+ICsgICAgICAgIEFzY2lpU1ByaW50ICgNCj4g KyAgICAgICAgICBCdWZmZXIsDQo+ICsgICAgICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KPiArICAg ICAgICAgICJYMkFQSUMgQWZmaW5pdHkgU3RydWN0dXJlIFslZF0iLA0KPiArICAgICAgICAgIFgy QXBpY0FmZmluaXR5SW5kZXgrKw0KPiArICAgICAgICAgICk7DQo+ICsgICAgICAgIFBhcnNlQWNw aSAoDQo+ICsgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAyLA0KPiArICAgICAgICAgIEJ1 ZmZlciwNCj4gKyAgICAgICAgICBSZXNvdXJjZVB0ciwNCj4gKyAgICAgICAgICAqU3JhdFJBTGVu Z3RoLA0KPiArICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKFNyYXRYMkFwY2lBZmZpbml0eVBhcnNl cikNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgICBicmVhazsNCj4gKw0KPiArICAgICAgZGVm YXVsdDoNCj4gKyAgICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICAgICAgUHJp bnQgKEwiRVJST1I6IFVua25vd24gU1JBVCBBZmZpbml0eSB0eXBlID0gMHgleFxuIiwgKlNyYXRS QVR5cGUpOw0KPiArICAgICAgICBicmVhazsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBSZXNvdXJj ZVB0ciArPSAoKlNyYXRSQUxlbmd0aCk7DQo+ICsgICAgT2Zmc2V0ICs9ICgqU3JhdFJBTGVuZ3Ro KTsNCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsvKiogUmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0K PiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0K PiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJs ZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlz IHJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJz ZXIgZm9yIHRoZSBBQ1BJIFRhYmxlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1F VEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQNCj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09V UkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0ZXIgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBhcnNlci4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1Ny YXRQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAg ICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICog Q09OU1QgU3lzdGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gUmVnaXN0ZXJQYXJz ZXIgKA0KPiArICAgICAgICAgICBFRklfQUNQSV82XzJfU1lTVEVNX1JFU09VUkNFX0FGRklOSVRZ X1RBQkxFX1NJR05BVFVSRSwNCj4gKyAgICAgICAgICAgUGFyc2VBY3BpU3JhdA0KPiArICAgICAg ICAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxl Lg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMg ZGVyZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFy c2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkN Cj4gK1NyYXRQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAg ICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJM RSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBEZXJlZ2lz dGVyUGFyc2VyICgNCj4gKyAgICAgICAgICAgRUZJX0FDUElfNl8yX1NZU1RFTV9SRVNPVVJDRV9B RkZJTklUWV9UQUJMRV9TSUdOQVRVUkUNCj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4gZGlmZiAt LWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1Bh cnNlcnMvU3JhdC9TcmF0UGFyc2VyTGkNCj4gYi5pbmYNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NyYXQvU3JhdFBhcnNlckxpDQo+IGIu aW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlNjEyOTUyNTM2NzZlN2Y4MWU0ZTdlMWVmDQo+IGRl NWFjY2Y2NWI3OTAwDQo+IC0tLSAvZGV2L251bGwNCj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcmF0L1NyYXRQYXJzZXJMaQ0K PiBiLmluZg0KPiBAQCAtMCwwICsxLDMzIEBADQo+ICsjIyBAZmlsZQ0KPiArIw0KPiArIyAgQ29w eXJpZ2h0IChjKSAyMDE3IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu DQo+ICsjDQo+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxz DQo+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBh bmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gKyMgIHdoaWNoIGFjY29tcGFu aWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkg YmUNCj4gZm91bmQgYXQNCj4gKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2Qt bGljZW5zZS5waHANCj4gKyMNCj4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVS IFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiArIyAgV0lUSE9VVCBX QVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJF U1MgT1IgSU1QTElFRC4NCj4gKyMjDQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lP TiAgICA9IDB4MDAwMTAwMTkNCj4gKyAgQkFTRV9OQU1FICAgICAgPSBTcmF0UGFyc2VyTGliDQo+ ICsgIEZJTEVfR1VJRCAgICAgID0gMTA2QjIyQ0MtMTQ5OS00NkQ0LUI2RkItMzQxQkI4NzhGQkM1 DQo+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4wDQo+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RS SVZFUg0KPiArICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiArICBDT05TVFJV Q1RPUiAgICA9IFNyYXRQYXJzZXJMaWJDb25zdHJ1Y3Rvcg0KPiArICBERVNUUlVDVE9SICAgICA9 IFNyYXRQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ICsNCj4gK1tTb3VyY2VzXQ0KPiArICBTcmF0UGFy c2VyLmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBT aGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMN Cj4gKw0KPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiArICBBY3BpUGFyc2VyTGliDQo+IGRpZmYgLS1n aXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJz ZXJzL1NzZHQvU3NkdFBhcnNlci4NCj4gYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3NkdC9Tc2R0UGFyc2VyLg0KPiBjDQo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAuLjRjNTYyNDJiMzUxYzhjMDRkMzEyMzQ5MDg2DQo+IGUzNTNjOTRlNDMwZjMy DQo+IC0tLSAvZGV2L251bGwNCj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Tc2R0L1NzZHRQYXJzZXIuDQo+IGMNCj4gQEAgLTAs MCArMSw5MiBAQA0KPiArLyoqDQo+ICsgIFNTRFQgdGFibGUgcGFyc2VyDQo+ICsNCj4gKyAgQ29w eXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu DQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAg YXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRp dGlvbnMgb2YgdGhlIEJTRA0KPiBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMg ZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91 bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBo cA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElD RU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig UkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVE Lg0KPiArDQo+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiArICAgIC0gQUNQSSA2LjIgU3BlY2lm aWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1iZXIgMjAxNw0KPiArKiovDQo+ICsNCj4gKyNpbmNs dWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlM aWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gKyNp bmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oPg0KPiArDQo+ICsvKiog VGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgU1NEVCB0YWJsZS4NCj4gKyAgV2hlbiB0cmFj ZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBTU0RUIHRhYmxlIGFuZA0KPiAr ICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiArICBGb3IgdGhlIFNTRFQgdGFibGUg b25seSB0aGUgQUNQSSBoZWFkZXIgZmllbGRzIGFyZQ0KPiArICBwYXJzZWQgYW5kIHRyYWNlZC4N Cj4gKw0KPiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2Ug dGhlIEFDUEkgZmllbGRzLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9p bnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRh YmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0g QWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8NCj4g K1ZPSUQNCj4gK0VGSUFQSQ0KPiArUGFyc2VBY3BpU3NkdCAoDQo+ICsgIElOIEJPT0xFQU4gVHJh Y2UsDQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0 aCwNCj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiArICApDQo+ICt7DQo+ICsg IGlmICghVHJhY2UpIHsNCj4gKyAgICByZXR1cm47DQo+ICsgIH0NCj4gKw0KPiArICBEdW1wQWNw aUhlYWRlciAoUHRyKTsNCj4gK30NCj4gKw0KPiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ ICsNCj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFn ZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0g VGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNl ciBpcyByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUg cGFyc2VyIGZvciB0aGUgQUNQSSBUYWJsZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB3YXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BB UkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkDQo+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9S RVNPVVJDRVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRoZQ0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwYXJzZXIuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ ICtTc2R0UGFyc2VyTGliQ29uc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAg ICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxF ICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJlZ2lzdGVy UGFyc2VyICgNCj4gKw0KPiBFRklfQUNQSV82XzJfU0VDT05EQVJZX1NZU1RFTV9ERVNDUklQVElP Tl9UQUJMRV9TSUdOQVRVUkUsDQo+ICsgICAgICAgICAgIFBhcnNlQWNwaVNzZHQNCj4gKyAgICAg ICAgICAgKTsNCj4gK30NCj4gKw0KPiArLyoqIERlcmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0K PiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0K PiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJs ZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlz IGRlcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlIHBh cnNlciB3YXMgbm90IHJlZ2lzdGVyZWQuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJ DQo+ICtTc2R0UGFyc2VyTGliRGVzdHJ1Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUg ICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFC TEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gRGVyZWdp c3RlclBhcnNlciAoDQo+ICsNCj4gRUZJX0FDUElfNl8yX1NFQ09OREFSWV9TWVNURU1fREVTQ1JJ UFRJT05fVEFCTEVfU0lHTkFUVVJFDQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+IGRpZmYgLS1n aXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJz ZXJzL1NzZHQvU3NkdFBhcnNlckwNCj4gaWIuaW5mDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Tc2R0L1NzZHRQYXJzZXJMDQo+IGliLmlu Zg0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzEzZTQ5MzZjMzBmZGQ3OTQwODQzMDFkDQo+IDNkYzkz OWM0OGIwZmZkMg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3NkdC9Tc2R0UGFyc2VyTA0KPiBp Yi5pbmYNCj4gQEAgLTAsMCArMSwzMyBAQA0KPiArIyMgQGZpbGUNCj4gKyMNCj4gKyMgIENvcHly aWdodCAoYykgMjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0K PiArIw0KPiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0K PiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5k IGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ICsjICB3aGljaCBhY2NvbXBhbmll cyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJl DQo+IGZvdW5kIGF0DQo+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxp Y2Vuc2UucGhwDQo+ICsjDQo+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBU SEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gKyMgIFdJVEhPVVQgV0FS UkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNT IE9SIElNUExJRUQuDQo+ICsjIw0KPiArDQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04g ICAgPSAweDAwMDEwMDE5DQo+ICsgIEJBU0VfTkFNRSAgICAgID0gU3NkdFBhcnNlckxpYg0KPiAr ICBGSUxFX0dVSUQgICAgICA9IEJDMkZGNTM4LThGRUItNDhFMy05MkQxLUVDQTAxQjI3N0IyQw0K PiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklW RVINCj4gKyAgTElCUkFSWV9DTEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4gKyAgQ09OU1RSVUNU T1IgICAgPSBTc2R0UGFyc2VyTGliQ29uc3RydWN0b3INCj4gKyAgREVTVFJVQ1RPUiAgICAgPSBT c2R0UGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiArDQo+ICtbU291cmNlc10NCj4gKyAgU3NkdFBhcnNl ci5jDQo+ICsNCj4gK1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgU2hl bGxQa2cvU2hlbGxQa2cuZGVjDQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ ICsNCj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gKyAgQWNwaVBhcnNlckxpYg0KPiBkaWZmIC0tZ2l0 DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vy cy9Yc2R0L1hzZHRQYXJzZXIuDQo+IGMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFj cGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1hzZHQvWHNkdFBhcnNlci4NCj4gYw0KPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwLi4wYWZiNDNlZTc4NDliOGZhMWRkMTFkY2I3DQo+IGVjYjJkMDM0ZTNlZjMxOA0K PiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL1BhcnNlcnMvWHNkdC9Yc2R0UGFyc2VyLg0KPiBjDQo+IEBAIC0wLDAg KzEsMTk3IEBADQo+ICsvKioNCj4gKyAgWFNEVCB0YWJsZSBwYXJzZXINCj4gKw0KPiArICBDb3B5 cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4N Cj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBh cmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0 aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBk aXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3Vu ZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhw DQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNF TlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBS RVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQu DQo+ICsNCj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ICsgICAgLSBBQ1BJIDYuMiBTcGVjaWZp Y2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3DQo+ICsqKi8NCj4gKw0KPiArI2luY2x1 ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxp Yi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvUHJpbnRMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJy YXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3 L0FjcGlUYWJsZVBhcnNlci5oPg0KPiArDQo+ICsvLyBMb2NhbCB2YXJpYWJsZXMNCj4gK1NUQVRJ QyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KPiArDQo+ICsvKiog QW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgQUNQSSBYU0RUIHRhYmxlLg0KPiAr Ki8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBYc2R0UGFyc2VyW10gPSB7DQo+ICsgIFBB UlNFX0FDUElfSEVBREVSICgmQWNwaUhkckluZm8pDQo+ICt9Ow0KPiArDQo+ICtDT05TVCBBQ1BJ X0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPKiBDT05TVA0KPiArR2V0QWNwaVhzZHRIZWFkZXJJbmZv ICgNCj4gKyAgVk9JRA0KPiArKQ0KPiArew0KPiArICByZXR1cm4gJkFjcGlIZHJJbmZvOw0KPiAr fQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgWFNEVCB0YWJsZQ0K PiArICBhbmQgb3B0aW9uYWxseSB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBYU0RUIHRh YmxlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0 cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAg ICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBB Y3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0g W2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsq Lw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtQYXJzZUFjcGlYc2R0ICgNCj4gKyAgSU4gQk9PTEVB TiBUcmFjZSwNCj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxl TGVuZ3RoLA0KPiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICkNCj4gK3sN Cj4gKyAgVUlOVDMyICAgICAgICBPZmZzZXQ7DQo+ICsgIFVJTlQzMiAgICAgICAgVGFibGVPZmZz ZXQ7DQo+ICsgIFVJTlQ2NCogICAgICAgVGFibGVQb2ludGVyOw0KPiArICBVSU5UTiAgICAgICAg IEVudHJ5SW5kZXg7DQo+ICsgIENIQVIxNiAgICAgICAgQnVmZmVyWzMyXTsNCj4gKw0KPiArICAv LyBQYXJzZSB0aGUgQUNQSSBoZWFkZXIgdG8gZ2V0IHRoZSBsZW5ndGgNCj4gKyAgUGFyc2VBY3Bp ICgNCj4gKyAgICBGQUxTRSwNCj4gKyAgICAwLA0KPiArICAgICJYU0RUIiwNCj4gKyAgICBQdHIs DQo+ICsgICAgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfTEVOR1RILA0KPiArICAgIFBBUlNFUl9Q QVJBTVMgKFhzZHRQYXJzZXIpDQo+ICsgICAgKTsNCj4gKw0KPiArICBPZmZzZXQgPSBQYXJzZUFj cGkgKA0KPiArICAgICAgICAgICAgIFRyYWNlLA0KPiArICAgICAgICAgICAgIDAsDQo+ICsgICAg ICAgICAgICAgIlhTRFQiLA0KPiArICAgICAgICAgICAgIFB0ciwNCj4gKyAgICAgICAgICAgICAq QWNwaUhkckluZm8uTGVuZ3RoLA0KPiArICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKFhzZHRQ YXJzZXIpDQo+ICsgICAgICAgICAgICAgKTsNCj4gKw0KPiArICBUYWJsZU9mZnNldCA9IE9mZnNl dDsNCj4gKw0KPiArICBpZiAoVHJhY2UpIHsNCj4gKyAgICBFbnRyeUluZGV4ID0gMDsNCj4gKyAg ICBUYWJsZVBvaW50ZXIgPSAoVUlOVDY0KikoUHRyICsgVGFibGVPZmZzZXQpOw0KPiArICAgIHdo aWxlIChPZmZzZXQgPCAoKkFjcGlIZHJJbmZvLkxlbmd0aCkpIHsNCj4gKyAgICAgIENPTlNUIFVJ TlQzMiogU2lnbmF0dXJlOw0KPiArICAgICAgQ09OU1QgVUlOVDMyKiBMZW5ndGg7DQo+ICsgICAg ICBDT05TVCBVSU5UOCogIFJldmlzaW9uOw0KPiArDQo+ICsgICAgICBpZiAoKFVJTlQ2NCopKFVJ TlROKSgqVGFibGVQb2ludGVyKSAhPSBOVUxMKSB7DQo+ICsgICAgICAgIFVJTlQ4KiAgICAgIFB0 cjsNCj4gKw0KPiArICAgICAgICBQYXJzZUFjcGlIZWFkZXIgKA0KPiArICAgICAgICAgIChVSU5U OCopKFVJTlROKSgqVGFibGVQb2ludGVyKSwNCj4gKyAgICAgICAgICAmU2lnbmF0dXJlLA0KPiAr ICAgICAgICAgICZMZW5ndGgsDQo+ICsgICAgICAgICAgJlJldmlzaW9uDQo+ICsgICAgICAgICAg KTsNCj4gKw0KPiArICAgICAgICBQdHIgPSAoVUlOVDgqKVNpZ25hdHVyZTsNCj4gKw0KPiArICAg ICAgICBVbmljb2RlU1ByaW50ICgNCj4gKyAgICAgICAgICBCdWZmZXIsDQo+ICsgICAgICAgICAg c2l6ZW9mIChCdWZmZXIpLA0KPiArICAgICAgICAgIEwiRW50cnlbJWRdIC0gJWMlYyVjJWMiLA0K PiArICAgICAgICAgIEVudHJ5SW5kZXgrKywNCj4gKyAgICAgICAgICBQdHJbMF0sDQo+ICsgICAg ICAgICAgUHRyWzFdLA0KPiArICAgICAgICAgIFB0clsyXSwNCj4gKyAgICAgICAgICBQdHJbM10N Cj4gKyAgICAgICAgICApOw0KPiArICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgVW5pY29kZVNQ cmludCAoDQo+ICsgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAgIHNpemVvZiAoQnVmZmVy KSwNCj4gKyAgICAgICAgICBMIkVudHJ5WyVkXSIsDQo+ICsgICAgICAgICAgRW50cnlJbmRleCsr DQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgIH0NCj4gKw0KPiArICAgICAgUHJpbnRGaWVsZE5h bWUgKDIsIEJ1ZmZlcik7DQo+ICsgICAgICBQcmludCAoTCIweCVseFxuIiwgKlRhYmxlUG9pbnRl cik7DQo+ICsNCj4gKyAgICAgIC8vIFZhbGlkYXRlIHRoZSB0YWJsZSBwb2ludGVycyBhcmUgbm90 IE5VTEwNCj4gKyAgICAgIGlmICgoVUlOVDY0KikoVUlOVE4pKCpUYWJsZVBvaW50ZXIpID09IE5V TEwpIHsNCj4gKyAgICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICAgICAgUHJp bnQgKA0KPiArICAgICAgICAgIEwiRVJST1I6IEludmFsaWQgdGFibGUgZW50cnkgYXQgMHglbHgs IHRhYmxlIGFkZHJlc3MgaXMgMHglbHhcbiIsDQo+ICsgICAgICAgICAgVGFibGVQb2ludGVyLA0K PiArICAgICAgICAgICpUYWJsZVBvaW50ZXINCj4gKyAgICAgICAgICApOw0KPiArICAgICAgfQ0K PiArICAgICAgT2Zmc2V0ICs9IHNpemVvZiAoVUlOVDY0KTsNCj4gKyAgICAgIFRhYmxlUG9pbnRl cisrOw0KPiArICAgIH0gLy8gd2hpbGUNCj4gKyAgfQ0KPiArDQo+ICsgIC8vIFByb2Nlc3MgdGhl IHRhYmxlcw0KPiArICBPZmZzZXQgPSBUYWJsZU9mZnNldDsNCj4gKyAgVGFibGVQb2ludGVyID0g KFVJTlQ2NCopKFB0ciArIFRhYmxlT2Zmc2V0KTsNCj4gKyAgd2hpbGUgKE9mZnNldCA8ICgqQWNw aUhkckluZm8uTGVuZ3RoKSkgew0KPiArICAgIGlmICgoVUlOVDY0KikoVUlOVE4pKCpUYWJsZVBv aW50ZXIpICE9IE5VTEwpIHsNCj4gKyAgICAgIFByb2Nlc3NBY3BpVGFibGUgKChVSU5UOCopKFVJ TlROKSgqVGFibGVQb2ludGVyKSk7DQo+ICsgICAgfQ0KPiArICAgIE9mZnNldCArPSBzaXplb2Yg KFVJTlQ2NCk7DQo+ICsgICAgVGFibGVQb2ludGVyKys7DQo+ICsgIH0gLy8gd2hpbGUNCj4gK30N Cj4gKw0KPiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0g IEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0g IFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0KPiAr ICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgQUNQSSBU YWJsZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXMgYWxyZWFkeSByZWdp c3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBp cyBpbnZhbGlkDQo+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIE5vIHNwYWNlIHRv IHJlZ2lzdGVyIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIu DQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtYc2R0UGFyc2VyTGliQ29uc3Ry dWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFu ZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxl DQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgICAgICAg ICAgRUZJX0FDUElfNl8yX0VYVEVOREVEX1NZU1RFTV9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRV UkUsDQo+ICsgICAgICAgICAgIFBhcnNlQWNwaVhzZHQNCj4gKyAgICAgICAgICAgKTsNCj4gK30N Cj4gKw0KPiArLyoqIERlcmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2lu XSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFyYW0gW2lu XSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0KPiArICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIGRlcmVnaXN0ZXJlZC4N Cj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlIHBhcnNlciB3YXMgbm90IHJl Z2lzdGVyZWQuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtYc2R0UGFyc2Vy TGliRGVzdHJ1Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAg SW1hZ2VIYW5kbGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lz dGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gRGVyZWdpc3RlclBhcnNlciAoDQo+ ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9FWFRFTkRFRF9TWVNURU1fREVTQ1JJUFRJT05fVEFC TEVfU0lHTkFUVVJFDQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+IGRpZmYgLS1naXQNCj4gYS9T aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1hzZHQv WHNkdFBhcnNlcg0KPiBMaWIuaW5mDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Yc2R0L1hzZHRQYXJzZXINCj4gTGliLmluZg0KPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwLi4yNmY3ZTcwNjcwZmEzODZkNTA5ZTQwYmY5NQ0KPiBhNWI3NDZhZDMxYWEz Mw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvWHNkdC9Yc2R0UGFyc2VyDQo+IExpYi5pbmYNCj4g QEAgLTAsMCArMSwzMyBAQA0KPiArIyMgQGZpbGUNCj4gKyMNCj4gKyMgIENvcHlyaWdodCAoYykg MjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArIw0KPiAr IyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArIyAgYXJl IGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlv bnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRp c3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5k IGF0DQo+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhw DQo+ICsjDQo+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJ Q0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gKyMgIFdJVEhPVVQgV0FSUkFOVElFUyBP UiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJ RUQuDQo+ICsjIw0KPiArDQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04gICAgPSAweDAw MDEwMDE5DQo+ICsgIEJBU0VfTkFNRSAgICAgID0gWHNkdFBhcnNlckxpYg0KPiArICBGSUxFX0dV SUQgICAgICA9IEE1N0VEN0EyLTRDRDYtNDIzOS05QTRELUY3RjBEQkRDRkNGQQ0KPiArICBWRVJT SU9OX1NUUklORyA9IDEuMA0KPiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4gKyAg TElCUkFSWV9DTEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4gKyAgQ09OU1RSVUNUT1IgICAgPSBY c2R0UGFyc2VyTGliQ29uc3RydWN0b3INCj4gKyAgREVTVFJVQ1RPUiAgICAgPSBYc2R0UGFyc2Vy TGliRGVzdHJ1Y3Rvcg0KPiArDQo+ICtbU291cmNlc10NCj4gKyAgWHNkdFBhcnNlci5jDQo+ICsN Cj4gK1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgU2hlbGxQa2cvU2hl bGxQa2cuZGVjDQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ICsNCj4gK1tM aWJyYXJ5Q2xhc3Nlc10NCj4gKyAgQWNwaVBhcnNlckxpYg0KPiBkaWZmIC0tZ2l0DQo+IGEvU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZp ZXdDb21tDQo+IGFuZExpYi5jDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmll d0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tDQo+IGFuZExpYi5jDQo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAuLjE3MjIxZDE0ZDhlMDMxZWYxY2E4MGE5MDcNCj4gZGRhNjYzZWIzNjQwNzBhDQo+ IC0tLSAvZGV2L251bGwNCj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tDQo+IGFuZExpYi5jDQo+IEBAIC0w LDAgKzEsMTA2IEBADQo+ICsvKioNCj4gKyAgTWFpbiBmaWxlIGZvciAnYWNwaXZpZXcnIFNoZWxs IGNvbW1hbmQgZnVuY3Rpb24uDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwg QVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArICBUaGlzIHByb2dyYW0g YW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFk ZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QNCj4g TGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBm dWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9v cGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJP R1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0K PiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBB TlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyoqLw0KPiArDQo+ICsj aW5jbHVkZSA8R3VpZC9TaGVsbExpYkhpaUd1aWQuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0hp aUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvU2hlbGxDb21tYW5kTGliLmg+DQo+ICsjaW5j bHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpQm9vdFNl cnZpY2VzVGFibGVMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlWaWV3 Lmg+DQo+ICsjaW5jbHVkZSA8VWVmaS5oPg0KPiArI2luY2x1ZGUgIlVlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi5oIg0KPiArDQo+ICtDT05TVCBDSEFSMTYgZ1NoZWxsQWNwaVZpZXdGaWxlTmFt ZVtdID0gTCJTaGVsbENvbW1hbmQiOw0KPiArDQo+ICsvKioNCj4gKyAgUmV0dXJuIHRoZSBmaWxl IG5hbWUgb2YgdGhlIGhlbHAgdGV4dCBmaWxlIGlmIG5vdCB1c2luZyBISUkuDQo+ICsNCj4gKyAg QHJldHVybiBUaGUgc3RyaW5nIHBvaW50ZXIgdG8gdGhlIGZpbGUgbmFtZS4NCj4gKyovDQo+ICtD T05TVCBDSEFSMTYqDQo+ICtFRklBUEkNCj4gK1NoZWxsQ29tbWFuZEdldE1hbkZpbGVOYW1lQWNw aVZpZXcgKA0KPiArICBWT0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIGdTaGVsbEFjcGlW aWV3RmlsZU5hbWU7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb25zdHJ1Y3RvciBmb3IgdGhl IFNoZWxsIEFjcGlWaWV3IENvbW1hbmQgbGlicmFyeS4NCj4gKw0KPiArICBJbnN0YWxsIHRoZSBo YW5kbGVycyBmb3IgYWNwaXZpZXcgVUVGSSBTaGVsbCBjb21tYW5kLg0KPiArDQo+ICsgIEBwYXJh bSBJbWFnZUhhbmRsZSAgICAgICAgICAgIFRoZSBpbWFnZSBoYW5kbGUgb2YgdGhlIHByb2Nlc3Mu DQo+ICsgIEBwYXJhbSBTeXN0ZW1UYWJsZSAgICAgICAgICAgIFRoZSBFRkkgU3lzdGVtIFRhYmxl IHBvaW50ZXIuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIFNo ZWxsIGNvbW1hbmQgaGFuZGxlcnMgd2VyZSBpbnN0YWxsZWQNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3VjY2Vzc2Z1bGx5Lg0KPiArICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJS T1IgICAgICBIaWkgcGFja2FnZSBmYWlsZWQgdG8gaW5zdGFsbC4NCj4gKyovDQo+ICtFRklfU1RB VFVTDQo+ICtFRklBUEkNCj4gK1NoZWxsQWNwaVZpZXdDb21tYW5kTGliQ29uc3RydWN0b3IgKA0K PiArICBJTiBFRklfSEFORExFICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gRUZJX1NZU1RF TV9UQUJMRSAgKlN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgZ1NoZWxsQWNwaVZpZXdI aWlIYW5kbGUgPSBOVUxMOw0KPiArDQo+ICsgIC8vIENoZWNrIFNoZWxsIFByb2ZpbGUgRGVidWcx IGJpdCBvZiB0aGUgcHJvZmlsZXMgbWFzaw0KPiArICBpZiAoKEZpeGVkUGNkR2V0OCAoUGNkU2hl bGxQcm9maWxlTWFzaykgJiBCSVQxKSA9PSAwKSB7DQo+ICsgICAgcmV0dXJuIEVGSV9TVUNDRVNT Ow0KPiArICB9DQo+ICsNCj4gKyAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUgPSBIaWlBZGRQYWNr YWdlcyAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZ1NoZWxsQWNwaVZpZXdI aWlHdWlkLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ0ltYWdlSGFuZGxlLA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliU3RyaW5ncywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsgIGlmIChnU2hlbGxBY3BpVmlld0hp aUhhbmRsZSA9PSBOVUxMKSB7DQo+ICsgICAgcmV0dXJuIEVGSV9ERVZJQ0VfRVJST1I7DQo+ICsg IH0NCj4gKyAgLy8gSW5zdGFsbCBvdXIgU2hlbGwgY29tbWFuZCBoYW5kbGVyDQo+ICsgIFNoZWxs Q29tbWFuZFJlZ2lzdGVyQ29tbWFuZE5hbWUgKA0KPiArICAgIEwiYWNwaXZpZXciLA0KPiArICAg IFNoZWxsQ29tbWFuZFJ1bkFjcGlWaWV3LA0KPiArICAgIFNoZWxsQ29tbWFuZEdldE1hbkZpbGVO YW1lQWNwaVZpZXcsDQo+ICsgICAgMCwNCj4gKyAgICBMImFjcGl2aWV3IiwNCj4gKyAgICBUUlVF LA0KPiArICAgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlLA0KPiArICAgIFNUUklOR19UT0tFTiAo U1RSX0dFVF9IRUxQX0FDUElWSUVXKQ0KPiArICAgICk7DQo+ICsNCj4gKyAgcmV0dXJuIEVGSV9T VUNDRVNTOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgRGVzdHJ1Y3RvciBmb3IgdGhlIGxpYnJh cnkuIGZyZWUgYW55IHJlc291cmNlcy4NCj4gKw0KPiArICBAcGFyYW0gSW1hZ2VIYW5kbGUgICAg ICAgICAgICBUaGUgaW1hZ2UgaGFuZGxlIG9mIHRoZSBwcm9jZXNzLg0KPiArICBAcGFyYW0gU3lz dGVtVGFibGUgICAgICAgICAgICBUaGUgRUZJIFN5c3RlbSBUYWJsZSBwb2ludGVyLg0KPiArKi8N Cj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArU2hlbGxBY3BpVmlld0NvbW1hbmRMaWJEZXN0 cnVjdG9yICgNCj4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElO IEVGSV9TWVNURU1fVEFCTEUgICpTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIGlmIChn U2hlbGxBY3BpVmlld0hpaUhhbmRsZSAhPSBOVUxMKSB7DQo+ICsgICAgSGlpUmVtb3ZlUGFja2Fn ZXMgKGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlKTsNCj4gKyAgfQ0KPiArICByZXR1cm4gRUZJX1NV Q0NFU1M7DQo+ICt9DQo+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW0NCj4gYW5kTGliLmgNCj4g Yi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxB Y3BpVmlld0NvbW0NCj4gYW5kTGliLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgN Cj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTljOGUyMTU0NGQ2 ODI5YWM4NzI5NThmNmINCj4gODQzNThlMWY5MWIwMmYNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysN Cj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hl bGxBY3BpVmlld0NvbW0NCj4gYW5kTGliLmgNCj4gQEAgLTAsMCArMSwzMiBAQA0KPiArLyoqDQo+ ICsgIEhlYWRlciBmaWxlIGZvciAnYWNwaXZpZXcnIFNoZWxsIGNvbW1hbmQgZnVuY3Rpb25zLg0K PiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwgcmln aHRzIHJlc2VydmVkLjxCUj4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5n IG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRo ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gKyAgd2hpY2gg YWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNl bnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5z ZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQg VU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsgIFdJVEhP VVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBF WFBSRVNTIE9SIElNUExJRUQuDQo+ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBVRUZJX1NIRUxMX0FD UElWSUVXX0NPTU1BTkRfTElCX0hfDQo+ICsjZGVmaW5lIFVFRklfU0hFTExfQUNQSVZJRVdfQ09N TUFORF9MSUJfSF8NCj4gKw0KPiArZXh0ZXJuIEVGSV9ISUlfSEFORExFIGdTaGVsbEFjcGlWaWV3 SGlpSGFuZGxlOw0KPiArDQo+ICsvKioNCj4gKyAgRnVuY3Rpb24gZm9yICdhY3BpdmlldycgY29t bWFuZC4NCj4gKw0KPiArICBAcGFyYW1baW5dIEltYWdlSGFuZGxlICBIYW5kbGUgdG8gdGhlIElt YWdlIChOVUxMIGlmIEludGVybmFsKS4NCj4gKyAgQHBhcmFtW2luXSBTeXN0ZW1UYWJsZSAgUG9p bnRlciB0byB0aGUgU3lzdGVtIFRhYmxlIChOVUxMIGlmIEludGVybmFsKS4NCj4gKyovDQo+ICtT SEVMTF9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArU2hlbGxDb21tYW5kUnVuQWNwaVZpZXcgKA0KPiAr ICBJTiBFRklfSEFORExFICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gRUZJX1NZU1RFTV9U QUJMRSAgKlN5c3RlbVRhYmxlDQo+ICsgICk7DQo+ICsNCj4gKyNlbmRpZiAvLyBVRUZJX1NIRUxM X0FDUElWSUVXX0NPTU1BTkRfTElCX0hfDQo+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW0NCj4g YW5kTGliLmluZg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbQ0KPiBhbmRMaWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAuLjk0NWNjMjhlM2Y5MWJmYWFhMDkyNTQzMDMyDQo+IGM1MGUwMmNiNjMwZmM1DQo+IC0tLSAv ZGV2L251bGwNCj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tDQo+IGFuZExpYi5pbmYNCj4gQEAgLTAsMCAr MSw1OCBAQA0KPiArIyMgIEBmaWxlDQo+ICsjIFByb3ZpZGVzIFNoZWxsICdhY3BpdmlldycgY29t bWFuZCBmdW5jdGlvbnMNCj4gKyMNCj4gKyMgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJN IExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArIw0KPiArIyAgVGhpcyBwcm9n cmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArIyAgYXJlIGxpY2Vuc2VkIGFu ZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+ IEJTRCBMaWNlbnNlDQo+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4g VGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyMgIGh0 dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKyMgIFRIRSBQ Uk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMi DQo+IEJBU0lTLA0KPiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBP RiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyMNCj4gKyMNCj4g KyMjDQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAg ICAgPSAweDAwMDEwMDA2DQo+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IFVl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KPiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAg ICAgICAgPSBGQjVCMzA1RS04NEY1LTQ2MUYtOTQwRC04MkQzNDU3NTdBRkENCj4gKyAgTU9EVUxF X1RZUEUgICAgICAgICAgICAgICAgICAgID0gVUVGSV9BUFBMSUNBVElPTg0KPiArICBWRVJTSU9O X1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCj4gKyAgTElCUkFSWV9DTEFTUyAgICAgICAg ICAgICAgICAgID0gTlVMTHxVRUZJX0FQUExJQ0FUSU9OIFVFRklfRFJJVkVSDQo+ICsgIENPTlNU UlVDVE9SICAgICAgICAgICAgICAgICAgICA9IFNoZWxsQWNwaVZpZXdDb21tYW5kTGliQ29uc3Ry dWN0b3INCj4gKyAgREVTVFJVQ1RPUiAgICAgICAgICAgICAgICAgICAgID0gU2hlbGxBY3BpVmll d0NvbW1hbmRMaWJEZXN0cnVjdG9yDQo+ICsNCj4gK1tTb3VyY2VzLmNvbW1vbl0NCj4gKyAgVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLnVuaQ0KPiArICBVZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIuYw0KPiArICBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIuaA0KPiArICBBY3BpVmll dy5jDQo+ICsNCj4gK1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgU2hl bGxQa2cvU2hlbGxQa2cuZGVjDQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ ICsNCj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KPiArICBC YXNlTGliDQo+ICsgIEJhc2VNZW1vcnlMaWINCj4gKyAgRGVidWdMaWINCj4gKyAgU2hlbGxDb21t YW5kTGliDQo+ICsgIFNoZWxsTGliDQo+ICsgIFVlZmlMaWINCj4gKyAgVWVmaVJ1bnRpbWVTZXJ2 aWNlc1RhYmxlTGliDQo+ICsgIFVlZmlCb290U2VydmljZXNUYWJsZUxpYg0KPiArICBQY2RMaWIN Cj4gKyAgSGlpTGliDQo+ICsgIFByaW50TGliDQo+ICsgIEZpbGVIYW5kbGVMaWINCj4gKw0KPiAr DQo+ICtbRml4ZWRQY2RdDQo+ICsgIGdFZmlTaGVsbFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNoZWxs UHJvZmlsZU1hc2sgIyMgQ09OU1VNRVMNCj4gKw0KPiArW0d1aWRzXQ0KPiArICBnU2hlbGxBY3Bp Vmlld0hpaUd1aWQgICAgICAgICAgICMjIENPTlNVTUVTICMjIEhJSQ0KPiArICBnRWZpQWNwaVRh YmxlR3VpZCAgICAgICAgICAgICAgICMjIFNPTUVUSU1FU19DT05TVU1FUyAjIyBTeXN0ZW1UYWJs ZQ0KPiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tDQo+IGFuZExpYi51bmkNCj4gYi9TaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0Nv bW0NCj4gYW5kTGliLnVuaQ0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzRkNjZlMWZmNTA3MDU0ZDRh YTQyYmQ0Nw0KPiBiZmFlODgyNGMyMThlNg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1No ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlW aWV3Q29tbQ0KPiBhbmRMaWIudW5pDQo+IEBAIC0wLDAgKzEsMTI3IEBADQo+ICsvLyAvKioNCj4g Ky8vDQo+ICsvLyBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE3LCBBUk0gTGltaXRlZC4gQWxsIHJp Z2h0cyByZXNlcnZlZC48QlI+DQo+ICsvLyBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlp bmcgbWF0ZXJpYWxzDQo+ICsvLyBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVy IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gKy8vIHdo aWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBs aWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiArLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xp Y2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArLy8NCj4gKy8vIFRIRSBQUk9HUkFNIElTIERJU1RS SUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiAr Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlU SEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKy8vDQo+ICsvLyBNb2R1bGUgTmFtZToNCj4g Ky8vDQo+ICsvLyBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIudW5pDQo+ICsvLw0KPiArLy8g QWJzdHJhY3Q6DQo+ICsvLw0KPiArLy8gU3RyaW5nIGRlZmluaXRpb25zIGZvciBVRUZJIFNoZWxs IGFjcGl2aWV3IGNvbW1hbmQNCj4gKy8vDQo+ICsvLw0KPiArLy8gKi8NCj4gKw0KPiArLz0jDQo+ ICsNCj4gKyNsYW5nZGVmICAgZW4tVVMgImVuZ2xpc2giDQo+ICsNCj4gKyNzdHJpbmcgU1RSX0dF Tl9QUk9CTEVNICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIiVIJXMlTjogVW5rbm93bg0KPiBm bGFnIC0gJyVIJXMlTidcclxuIg0KPiArI3N0cmluZyBTVFJfR0VOX05PX1ZBTFVFICAgICAgICAg ICNsYW5ndWFnZSBlbi1VUyAiJUglcyVOOiBNaXNzaW5nDQo+IGFyZ3VtZW50IGZvciBmbGFnIC0g JyVIJXMlTidcclxuIg0KPiArI3N0cmluZyBTVFJfR0VOX1RPT19NQU5ZICAgICAgICAgICNsYW5n dWFnZSBlbi1VUyAiJUglcyVOOiBUb28gbWFueQ0KPiBhcmd1bWVudHMuXHJcbiINCj4gKyNzdHJp bmcgU1RSX0dFTl9NSVNTSU5HX09QVElPTiAgICAjbGFuZ3VhZ2UgZW4tVVMgIiVIJXMlTjogTWlz c2luZw0KPiBvcHRpb24gJyVIJXMlTicgcmVxdWlyZWQgYnkgZmxhZyAtICclSCVzJU4nXHJcbiIN Cj4gKyNzdHJpbmcgU1RSX0dFTl9SRUFET05MWV9NRURJQSAgICAjbGFuZ3VhZ2UgZW4tVVMgIiVI JXMlTjogVW5hYmxlDQo+IHRvIHdyaXRlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgY2hlY2sg aWYgbWVkaWEgaXMgd3JpdGFibGUuXHJcbiINCj4gKw0KPiArI3N0cmluZyBTVFJfR0VUX0hFTFBf QUNQSVZJRVcgICAjbGFuZ3VhZ2UgZW4tVVMgIiINCj4gKyIuVEggYWNwaXZpZXcgMCAiRGlzcGxh eSBBQ1BJIGluZm9ybWF0aW9uLiJcclxuIg0KPiArIi5TSCBOQU1FXHJcbiINCj4gKyJEaXNwbGF5 IEFDUEkgVGFibGUgaW5mb3JtYXRpb24uXHJcbiINCj4gKyIuU0ggU1lOT1BTSVNcclxuIg0KPiAr IiBcclxuIg0KPiArIkFDUElWSUVXIFtbLT9dIHwgW1stbF0gfCBbLXMgQWNwaVRhYmxlIFstZF1d XSBbLWNdIFstdl0gWy1oIEhpZ2hsaWdodF1dXHJcbiINCj4gKyIgXHJcbiINCj4gKyIuU0ggT1BU SU9OU1xyXG4iDQo+ICsiIFxyXG4iDQo+ICsiICAtbCAtIERpc3BsYXkgbGlzdCBvZiBpbnN0YWxs ZWQgQUNQSSBUYWJsZXMuXHJcbiINCj4gKyIgIC1zIC0gRGlzcGxheSBvbmx5IHRoZSBzcGVjaWZp ZWQgQWNwaVRhYmxlIHR5cGUuXHJcbiINCj4gKyIgICAgICAgICBBY3BpVGFibGUgICAgOiBUaGUg cmVxdWlyZWQgQUNQSSBUYWJsZSB0eXBlLlxyXG4iDQo+ICsiICAtZCAtIEdlbmVyYXRlIGEgYmlu YXJ5IGZpbGUgZHVtcCBvZiB0aGUgc3BlY2lmaWVkIEFjcGlUYWJsZS5cclxuIg0KPiArIiAgLWMg LSBDb25zaXN0ZW5jeSBjaGVja2luZyAoZW5hYmxlZCBieSBkZWZhdWx0KS5cclxuIg0KPiArIiAg LXYgLSBEaXNwbGF5IHZlcmJvc2UgZGF0YSAoZW5hYmxlZCBieSBkZWZhdWx0KS5cclxuIg0KPiAr IiAgLWggLSBFbmFibGUvRGlzYWJsZSBDb2xvdXIgSGlnaGxpZ2h0aW5nLlxyXG4iDQo+ICsiICAg ICAgICAgSGlnaGxpZ2h0ICAgIDogVFJVRS9PTiBlbmFibGVzIGhpZ2hsaWdodGluZztcclxuIg0K PiArIiAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFL09GRiAoZGVmYXVsdCkgZGlzYWJsZXMg aGlnaGxpZ2h0aW5nLlxyXG4iDQo+ICsiICAtPyAtIFNob3cgaGVscC5cclxuIg0KPiArIiBcclxu Ig0KPiArIi5TSCBERVNDUklQVElPTlxyXG4iDQo+ICsiIFxyXG4iDQo+ICsiICBUaGlzIHByb2dy YW0gaXMgcHJvdmlkZWQgdG8gYWxsb3cgZXhhbWluYXRpb24gb2YgQUNQSSB0YWJsZSB2YWx1ZXMg ZnJvbQ0KPiB0aGVcclxuIg0KPiArIiAgVUVGSSBTaGVsbC4gIFRoaXMgY2FuIGhlbHAgd2l0aCBp bnZlc3RpZ2F0aW9ucywgZXNwZWNpYWxseSBhdCB0aGF0IHN0YWdlDQo+IHdoZXJlXHJcbiINCj4g KyIgIHRoZSB0YWJsZXMgYXJlIG5vdCBlbmFibGluZyBhbiBPUyB0byBib290LlxyXG4iDQo+ICsi ICBUaGUgcHJvZ3JhbSBpcyBub3QgZXhoYXVzdGl2ZSwgYW5kIG9ubHkgZW5jYXBzdWxhdGVzIGRl dGFpbGVkIGtub3dsZWRnZQ0KPiBvZiBhXHJcbiINCj4gKyIgIGxpbWl0ZWQgbnVtYmVyIG9mIHRh YmxlIHR5cGVzLlxyXG4iDQo+ICsiIFxyXG4iDQo+ICsiICBEZWZhdWx0IGJlaGF2aW91ciBpcyB0 byBkaXNwbGF5IHRoZSBjb250ZW50IG9mIGFsbCB0YWJsZXMgaW5zdGFsbGVkLlxyXG4iDQo+ICsi ICAnS25vd24nIHRhYmxlIHR5cGVzIChsaXN0ZWQgaW4gTk9URVMgYmVsb3cpIHdpbGwgYmUgcGFy c2VkIGFuZA0KPiBkaXNwbGF5ZWRcclxuIg0KPiArIiAgd2l0aCBkZXNjcmlwdGlvbnMgYW5kIGZp ZWxkIHZhbHVlcy4gIFdoZXJlIGFwcHJvcHJpYXRlIGEgZGVncmVlIG9mDQo+IGNvbnNpc3RlbmN5 XHJcbiINCj4gKyIgIGNoZWNraW5nIGlzIGRvbmUgYW5kIGVycm9ycyBtYXkgYmUgcmVwb3J0ZWQg aW4gdGhlIG91dHB1dC5cclxuIg0KPiArIiAgT3RoZXIgdGFibGUgdHlwZXMgd2lsbCBiZSBkaXNw bGF5ZWQgYXMgYW4gYXJyYXkgb2YgSGV4YWRlY2ltYWwgYnl0ZXMuXHJcbiINCj4gKyIgXHJcbiIN Cj4gKyIgIFRvIGZhY2lsaXRhdGUgZGVidWdnaW5nLCB0aGUgLXMgYW5kIC1kIG9wdGlvbnMgY2Fu IGJlIHVzZWQgdG8gZ2VuZXJhdGUNCj4gYVxyXG4iDQo+ICsiICBiaW5hcnkgZmlsZSBpbWFnZSBv ZiBhIHRhYmxlIHRoYXQgY2FuIGJlIGNvcGllZCBlbHNld2hlcmUgZm9yDQo+IGludmVzdGlnYXRp b25cclxuIg0KPiArIiAgdXNpbmcgdG9vbHMgc3VjaCBhcyB0aG9zZSBwcm92aWRlZCBieSBhY3Bp Y2Eub3JnLiAgVGhpcyBpcyBlc3BlY2lhbGx5DQo+IHJlbGV2YW50XHJcbiINCj4gKyIgIGZvciBB TUwgdHlwZSB0YWJsZXMgbGlrZSBEU0RUIGFuZCBTU0RULlxyXG4iDQo+ICsiIFxyXG4iDQo+ICsi Tk9URVM6XHJcbiINCj4gKyIgIDEuIFRoZSBBY3BpVGFibGUgcGFyYW1ldGVyIGNhbiBtYXRjaCBh bnkgaW5zdGFsbGVkIHRhYmxlIHR5cGUuXHJcbiINCj4gKyIgICAgIFRhYmxlcyB3aXRob3V0IHNw ZWNpZmljIGhhbmRsaW5nIHdpbGwgYmUgZGlzcGxheWVkIGFzIGEgcmF3IGhleCBkdW1wDQo+IChv clxyXG4iDQo+ICsiICAgICBkdW1wZWQgdG8gYSBmaWxlIGlmIC1kIGlzIHVzZWQpLlxyXG4iDQo+ ICsiICAyLiBGb3JtYXR0ZWQgZGlzcGxheSBhbmQgY2hlY2tpbmcgaXMgcHJvdmlkZWQgZm9yIHRo ZXNlIHNpZ25hdHVyZQ0KPiB0eXBlczpcclxuIg0KPiArIiAgICAgICBBUElDICAtIE11bHRpcGxl IEFQSUMgRGVzY3JpcHRpb24gVGFibGUgKE1BRFQpXHJcbiINCj4gKyIgICAgICAgQkdSVCAgLSBC b290IEdyYXBoaWNzIFJlc291cmNlIFRhYmxlXHJcbiINCj4gKyIgICAgICAgREJHMiAgLSBEZWJ1 ZyBQb3J0IFRhYmxlIDJcclxuIg0KPiArIiAgICAgICBGQUNQICAtIEZpeGVkIEFDUEkgRGVzY3Jp cHRpb24gVGFibGUgKEZBRFQpXHJcbiINCj4gKyIgICAgICAgR1REVCAgLSBHZW5lcmljIFRpbWVy IERlc2NyaXB0aW9uIFRhYmxlXHJcbiINCj4gKyIgICAgICAgSU9SVCAgLSBJTyBSZW1hcHBpbmcg VGFibGVcclxuIg0KPiArIiAgICAgICBNQ0ZHICAtIE1lbW9yeSBNYXBwZWQgQ29uZmlnIFNwYWNl IEJhc2UgQWRkcmVzcyBEZXNjcmlwdGlvbg0KPiBUYWJsZVxyXG4iDQo+ICsiICAgICAgIFJTRFAg IC0gUm9vdCBTeXN0ZW0gRGVzY3JpcHRpb24gUG9pbnRlclxyXG4iDQo+ICsiICAgICAgIFNMSVQg IC0gU3lzdGVtIExvY2FsaXR5IEluZm9ybWF0aW9uIFRhYmxlXHJcbiINCj4gKyIgICAgICAgU1BD UiAgLSBTZXJpYWwgUG9ydCBDb25zb2xlIFJlZGlyZWN0aW9uIFRhYmxlXHJcbiINCj4gKyIgICAg ICAgU1JBVCAgLSBTeXN0ZW0gUmVzb3VyY2UgQWZmaW5pdHkgVGFibGVcclxuIg0KPiArIiAgICAg ICBYU0RUICAtIEV4dGVuZGVkIFN5c3RlbSBEZXNjcmlwdGlvbiBUYWJsZVxyXG4iDQo+ICsiIFxy XG4iDQo+ICsiLlNIIFNUQU5EQVJEU1xyXG4iDQo+ICsiIFxyXG4iDQo+ICsiICBUYWJsZSBkZXRh aWxzIGNvcnJlc3BvbmQgdG8gdGhvc2UgaW4gJ0FkdmFuY2VkIENvbmZpZ3VyYXRpb24gYW5kDQo+ IFBvd2VyXHJcbiINCj4gKyIgIEludGVyZmFjZSBTcGVjaWZpY2F0aW9uJyBWZXJzaW9uIDYuMiBF cnJhdGEgQSwgW1NlcHRlbWJlciAyMDE3XVxyXG4iDQo+ICsiDQo+IChodHRwOi8vd3d3LnVlZmku b3JnL3NpdGVzL2RlZmF1bHQvZmlsZXMvcmVzb3VyY2VzL0FDUEklMjA2XzJfQV9TZXB0MjkuDQo+ IHBkZilcclxuIg0KPiArIiBcclxuIg0KPiArIiAgTk9URTogVGhlIG5hdHVyZSBvZiB0aGUgQUNQ SSBzdGFuZGFyZCBtZWFucyB0aGF0IGFsbW9zdCBhbGwgdGFibGVzIGluIDYuMQ0KPiB3aWxsXHJc biINCj4gKyIgICAgICAgIGJlICdiYWNrd2FyZHMgY29tcGF0aWJsZScgd2l0aCBwcmlvciB2ZXJz aW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uDQo+IGluXHJcbiINCj4gKyIgICAgICAgIHRlcm1zIG9m IHN0cnVjdHVyZSwgc28gZm9ybWF0dGVkIG91dHB1dCBzaG91bGQgYmUgY29ycmVjdC4gIFRoZQ0K PiBtYWluXHJcbiINCj4gKyIgICAgICAgIGV4Y2VwdGlvbiB3aWxsIGJlIHRoYXQgcHJldmlvdXNs eSAncmVzZXJ2ZWQnIGZpZWxkcyB3aWxsIGJlIHJlcG9ydGVkXHJcbiINCj4gKyIgICAgICAgIHdp dGggbmV3IG5hbWVzLCB3aGVyZSB0aGV5IGhhdmUgYmVlbiBhZGRlZCBpbiBsYXRlciB2ZXJzaW9u cyBvZg0KPiB0aGVcclxuIg0KPiArIiAgICAgICAgc3BlY2lmaWNhdGlvbi5cclxuIg0KPiArIiBc clxuIg0KPiArIi5TSCBFWEFNUExFU1xyXG4iDQo+ICsiIFxyXG4iDQo+ICsiIFxyXG4iDQo+ICsi RVhBTVBMRVM6XHJcbiINCj4gKyIgICogVG8gZGlzcGxheSBhIGxpc3Qgb2YgdGhlIGluc3RhbGxl ZCB0YWJsZSB0eXBlczpcclxuIg0KPiArIiAgICBmczA6XD4gYWNwaXZpZXcgLWxcclxuIg0KPiAr IiBcclxuIg0KPiArIiAgKiBUbyBwYXJzZSBhbmQgZGlzcGxheSBhIHNwZWNpZmljIHRhYmxlIHR5 cGU6XHJcbiINCj4gKyIgICAgZnMwOlw+IGFjcGl2aWV3IC1zIEdURFRcclxuIg0KPiArIiBcclxu Ig0KPiArIiAgKiBUbyBzYXZlIGEgYmluYXJ5IGR1bXAgb2YgdGhlIGNvbnRlbnRzIG9mIGEgdGFi bGUgdG8gYSBmaWxlXHJcbiINCj4gKyIgICAgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rv cnk6XHJcbiINCj4gKyIgICAgZnMwOlw+IGFjcGl2aWV3IC1zIERTRFQgLWRcclxuIg0KPiArIiBc clxuIg0KPiArIiAgKiBUbyBkaXNwbGF5IGNvbnRlbnRzIG9mIGFsbCBBQ1BJIHRhYmxlczpcclxu Ig0KPiArIiAgICBmczA6XD4gYWNwaXZpZXdcclxuIg0KPiArIiBcclxuIg0KPiArIi5TSCBSRVRV Uk5WQUxVRVNcclxuIg0KPiArIiBcclxuIg0KPiArIlJFVFVSTiBWQUxVRVM6XHJcbiINCj4gKyIg IFNIRUxMX1NVQ0NFU1MgICAgICAgICAgICAgRGF0YSB3YXMgZGlzcGxheWVkIGFzIHJlcXVlc3Rl ZC5cclxuIg0KPiArIiAgU0hFTExfSU5WQUxJRF9QQVJBTUVURVIgICBBQ1BJIFRhYmxlIHBhcnNp bmcgZmFpbGVkLlxyXG4iDQo+ICsiIFxyXG4iDQo+ICsNCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtn L1NoZWxsUGtnLmRlYyBiL1NoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiBpbmRleA0KPiAwYzRmNzRm ZjQxNzI2YzRhMjhlZDA4Mjg0OWMxYjg2NGIxYzQ4NzUyLi5jMDkwYWE0ZDA4YmUzYWFkNGQ5YWVk YjU0DQo+IDJjMDEwNTZiY2U0Njk2OSAxMDA2NDQNCj4gLS0tIGEvU2hlbGxQa2cvU2hlbGxQa2cu ZGVjDQo+ICsrKyBiL1NoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiBAQCAtMyw2ICszLDcgQEANCj4g ICMNCj4gICMgKEMpIENvcHlyaWdodCAyMDEzLTIwMTQgSGV3bGV0dC1QYWNrYXJkIERldmVsb3Bt ZW50IENvbXBhbnksIEwuUC48QlI+DQo+ICAjIENvcHlyaWdodCAoYykgMjAwOSAtIDIwMTgsIElu dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyMgQ29weXJpZ2h0 IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiAgIw0KPiAgIyBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFy ZSBsaWNlbnNlZCBhbmQgbWFkZQ0KPiBhdmFpbGFibGUgdW5kZXINCj4gICMgdGhlIHRlcm1zIGFu ZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZSB3aGljaCBhY2NvbXBhbmllcyB0aGlzDQo+ IGRpc3RyaWJ1dGlvbi4NCj4gQEAgLTU2LDcgKzU3LDcgQEAgW0d1aWRzXQ0KPiAgICBnU2hlbGxO ZXR3b3JrMkhpaUd1aWQgICAgICAgICAgID0gezB4MTc0YjJiNSwgMHhmNTA1LCAweDRiMTIsIHsw eGFhLCAweDYwLA0KPiAweDU5LCAweGRmLCAweGY4LCAweGQ2LCAweGVhLCAweDM3fX0NCj4gICAg Z1NoZWxsVGZ0cEhpaUd1aWQgICAgICAgICAgICAgICA9IHsweDczOGE5MzE0LCAweDgyYzEsIDB4 NDU5MiwgezB4OGYsIDB4ZjcsIDB4YzEsDQo+IDB4YmQsIDB4ZjEsIDB4YjIsIDB4MGUsIDB4ZDR9 fQ0KPiAgICBnU2hlbGxCY2ZnSGlpR3VpZCAgICAgICAgICAgICAgID0gezB4NWY1ZjYwNWQsIDB4 MTU4MywgMHg0YTJkLCB7MHhhNiwgMHhiMiwgMHhlYiwNCj4gMHgxMiwgMHhkYSwgMHhiNCwgMHhh MiwgMHhiNn19DQo+IC0NCj4gKyAgZ1NoZWxsQWNwaVZpZXdIaWlHdWlkICAgICAgICAgICA9IHsw eGRhOGNjZGY0LCAweGVkOGYsIDB4NGZmYywgezB4YjUsIDB4ZWYsDQo+IDB4MmUsIDB4ZjUsIDB4 NWUsIDB4MjQsIDB4OTMsIDB4MmF9fQ0KPiAgICAjIEZJTEVfR1VJRCBhcyBkZWZpbmVkIGluIFNo ZWxsUGtnL0FwcGxpY2F0aW9uL1NoZWxsL1NoZWxsLmluZg0KPiAgICBnVWVmaVNoZWxsRmlsZUd1 aWQgICAgICAgICAgICAgID0gezB4N2MwNGE1ODMsIDB4OWUzZSwgMHg0ZjFjLCB7MHhhZCwgMHg2 NSwgMHhlMCwNCj4gMHg1MiwgMHg2OCwgMHhkMCwgMHhiNCwgMHhkMX19DQo+IA0KPiAtLQ0KPiAn R3VpZChDRTE2NTY2OS0zRUYzLTQ5M0YtQjg1RC02MTkwRUU1Qjk3NTkpJw0KPiANCg0K