Return-Path: X-Original-To: apmail-lucene-java-user-archive@www.apache.org Delivered-To: apmail-lucene-java-user-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 35C0C18187 for ; Mon, 29 Jun 2015 13:33:49 +0000 (UTC) Received: (qmail 25446 invoked by uid 500); 29 Jun 2015 13:33:47 -0000 Delivered-To: apmail-lucene-java-user-archive@lucene.apache.org Received: (qmail 25393 invoked by uid 500); 29 Jun 2015 13:33:47 -0000 Mailing-List: contact java-user-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: java-user@lucene.apache.org Delivered-To: mailing list java-user@lucene.apache.org Received: (qmail 25381 invoked by uid 99); 29 Jun 2015 13:33:47 -0000 Received: from Unknown (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 29 Jun 2015 13:33:47 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id C76BD1A634C for ; Mon, 29 Jun 2015 13:33:46 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 0.992 X-Spam-Level: X-Spam-Status: No, score=0.992 tagged_above=-999 required=6.31 tests=[KAM_LAZY_DOMAIN_SECURITY=1, MSGID_FROM_MTA_HEADER=0.001, T_RP_MATCHES_RCVD=-0.01, URIBL_BLOCKED=0.001] autolearn=disabled Received: from mx1-us-east.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id 3lvPDGrEU69Z for ; Mon, 29 Jun 2015 13:33:39 +0000 (UTC) Received: from mail10.mayo.edu (mail10.mayo.edu [129.176.114.198]) by mx1-us-east.apache.org (ASF Mail Server at mx1-us-east.apache.org) with ESMTP id 4EAA742AF1 for ; Mon, 29 Jun 2015 13:33:39 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.13,698,1427778000"; d="scan'208";a="31466671" Received: from roedlp003a.mayo.edu (HELO mail10.mayo.edu) ([10.146.65.138]) by ironport10-dlp.mayo.edu with ESMTP; 29 Jun 2015 08:33:32 -0500 Message-Id: <2f3a88$u094p@ironport10.mayo.edu> X-IronPort-AV: E=Sophos;i="5.13,698,1427778000"; d="scan'208";a="31466649" Received: from essexmb.mayo.edu (HELO msgoms04.mayo.edu) ([10.128.209.12]) by ironport10.mayo.edu with ESMTP; 29 Jun 2015 08:33:30 -0500 Date: Mon, 29 Jun 2015 13:33:29 +0000 From: "Bauer, Herbert S. (Scott)" Subject: Re: Exception when attempting to query using ToParentBlockJoinQuery in Lucene 5.1 In-reply-to: To: "java-user@lucene.apache.org" Content-id: <8E92500664884E419EACA85695089659@exchange.mayo.edu> MIME-version: 1.0 Content-type: text/plain; charset=euc-kr Content-language: en-US Content-transfer-encoding: base64 Accept-Language: en-US Thread-topic: Exception when attempting to query using ToParentBlockJoinQuery in Lucene 5.1 Thread-index: AQHQnxCYftyCQH7P0EK1Vzdb6SB9sp2eDDKAgAAZPYCAGt2xAIABsscAgAjsUgA= Old-x-esetresult: clean, is OK Old-x-esetid: 5188793E3ABB343406C822 X-MS-Has-Attach: X-MS-TNEF-Correlator: X-EsetResult: clean, is OK X-EsetId: F99C793ED61C3534AEDC22 References: <2f3a88$pc2au@ironport10.mayo.edu> <2f3a88$pfuav@ironport10.mayo.edu> User-Agent: Microsoft-MacOutlook/14.4.4.140807 X-CFilter-Loop: Reflected SaGvbSBhYmxlIHRvIGRlZmluZSB0aGlzIHByb2JsZW0gd2l0aCBhIG1vcmUgZGlzY3JldGUgZXhh bXBsZSBpbmNsdWRpbmcgdGhlDQp0d28gY2xhc3NlcyBiZWxvdy4gIFRoaXMgc3VnZ2VzdHMgYSBi dWcgYW5kIHVubGVzcyBzb21lb25lIGhhcyBjbGVhcmVyDQpkaXJlY3Rpb24gb24gdGhpcyBpbXBs ZW1lbnRhdGlvbiBJoa9tIHBsYW5uaW5nIHRvIGZpbGUgaXQgYXMgb25lLg0KDQoNCnBhY2thZ2Ug b3JnLmxleGV2cy5sdWNlbmUucHJvdG90eXBlOw0KDQppbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlv bjsNCmltcG9ydCBqYXZhLm5pby5maWxlLlBhdGg7DQppbXBvcnQgamF2YS5uaW8uZmlsZS5QYXRo czsNCmltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0Ow0KaW1wb3J0IGphdmEudXRpbC5MaXN0Ow0K DQppbXBvcnQgb3JnLmFwYWNoZS5sdWNlbmUuYW5hbHlzaXMuQW5hbHl6ZXI7DQppbXBvcnQgb3Jn LmFwYWNoZS5sdWNlbmUuYW5hbHlzaXMuc3RhbmRhcmQuU3RhbmRhcmRBbmFseXplcjsNCmltcG9y dCBvcmcuYXBhY2hlLmx1Y2VuZS5hbmFseXNpcy51dGlsLkNoYXJBcnJheVNldDsNCmltcG9ydCBv cmcuYXBhY2hlLmx1Y2VuZS5kb2N1bWVudC5Eb2N1bWVudDsNCmltcG9ydCBvcmcuYXBhY2hlLmx1 Y2VuZS5kb2N1bWVudC5GaWVsZDsNCmltcG9ydCBvcmcuYXBhY2hlLmx1Y2VuZS5pbmRleC5JbmRl eFdyaXRlcjsNCmltcG9ydCBvcmcuYXBhY2hlLmx1Y2VuZS5pbmRleC5JbmRleFdyaXRlckNvbmZp ZzsNCmltcG9ydCBvcmcuYXBhY2hlLmx1Y2VuZS5zdG9yZS5EaXJlY3Rvcnk7DQppbXBvcnQgb3Jn LmFwYWNoZS5sdWNlbmUuc3RvcmUuTU1hcERpcmVjdG9yeTsNCg0KcHVibGljIGNsYXNzIFNtYWxs VGVzdEluZGV4QnVpbGRlciB7DQoJcHVibGljIGVudW0gQ29kZXsNCgkJQzEyMzQsQzIzNDMyLEM0 MjM0LEMyMzA4LCBDODk1ODsNCgl9DQoJcHVibGljIFNtYWxsVGVzdEluZGV4QnVpbGRlcigpIHsN CgkJLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBjb25zdHJ1Y3RvciBzdHViDQoJfQ0KDQoJcHVibGlj IHZvaWQgaW5pdCgpew0KCQl0cnkgew0KCQkJTHVjZW5lQ29udGVudEJ1aWxkZXIgYnVpbGRlciA9 IG5ldyBMdWNlbmVDb250ZW50QnVpbGRlcigpOw0KCQkJUGF0aCBwYXRoID0gUGF0aHMuZ2V0KCIv VXNlcnMvbTAyOTIwNi9EZXNrdG9wL2luZGV4Iik7DQoJCQlEaXJlY3RvcnkgZGlyID0gbmV3IE1N YXBEaXJlY3RvcnkocGF0aCk7DQoJCQlBbmFseXplciBhbmFseXplcj1uZXcgU3RhbmRhcmRBbmFs eXplcihuZXcgQ2hhckFycmF5U2V0KCAwLCB0cnVlKSk7DQoJCQlJbmRleFdyaXRlckNvbmZpZyBp d2M9IG5ldyBJbmRleFdyaXRlckNvbmZpZyhhbmFseXplcik7DQoJCQlJbmRleFdyaXRlciB3cml0 ZXIgPSBuZXcgSW5kZXhXcml0ZXIoZGlyLCBpd2MpOw0KCQkJY3JlYXRlQ29kaW5nU2NoZW1lSW5k ZXgoYnVpbGRlciwgd3JpdGVyICk7DQoJCQl3cml0ZXIuY29tbWl0KCk7DQoJCQl3cml0ZXIuY2xv c2UoKTsNCgkJfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgew0KCQkJLy8gVE9ETyBBdXRvLWdlbmVy YXRlZCBjYXRjaCBibG9jaw0KCQkJZS5wcmludFN0YWNrVHJhY2UoKTsNCgkJfQ0KCX0NCglwcml2 YXRlIHZvaWQgY3JlYXRlQ29kaW5nU2NoZW1lSW5kZXgoTHVjZW5lQ29udGVudEJ1aWxkZXIgYnVp bGRlciwNCgkJCUluZGV4V3JpdGVyIHdyaXRlcikgdGhyb3dzIElPRXhjZXB0aW9uIHsNCgkJCWZv cihDb2RlIGMgOkNvZGUudmFsdWVzKCkpew0KCQkJTGlzdDxEb2N1bWVudD4gbGlzdCA9IGNyZWF0 ZUJsb2NrSm9pbihjLm5hbWUoKSk7DQoJCQl3cml0ZXIuYWRkRG9jdW1lbnRzKGxpc3QpOw0KCQkJ bGlzdCA9IGNyZWF0ZUJsb2NrSm9pbjIoYy5uYW1lKCkpOw0KCQkJd3JpdGVyLmFkZERvY3VtZW50 cyhsaXN0KTsNCgkJCX0NCgl9DQoNCglwcml2YXRlIExpc3Q8RG9jdW1lbnQ+IGNyZWF0ZUJsb2Nr Sm9pbihTdHJpbmcgY29kZSkgew0KCQlMaXN0PERvY3VtZW50PiBsaXN0ID0gbmV3IEFycmF5TGlz dDxEb2N1bWVudD4oKTsNCgkNCgkJRG9jdW1lbnQgZG9jID0gbmV3IERvY3VtZW50KCk7DQoJCWRv Yy5hZGQobmV3IG9yZy5hcGFjaGUubHVjZW5lLmRvY3VtZW50LlRleHRGaWVsZCgicHJvcGVydHlW YWx1ZSIsDQoiQmxvb2QiLCBGaWVsZC5TdG9yZS5ZRVMpKTsNCgkJbGlzdC5hZGQoZG9jKTsNCgkJ ZG9jID0gbmV3IERvY3VtZW50KCk7DQoJCWRvYy5hZGQobmV3IG9yZy5hcGFjaGUubHVjZW5lLmRv Y3VtZW50LlRleHRGaWVsZCgicHJvcGVydHlWYWx1ZSIsICJNdWQiLA0KRmllbGQuU3RvcmUuWUVT KSk7DQoJCWxpc3QuYWRkKGRvYyk7DQoJCWRvYyA9IG5ldyBEb2N1bWVudCgpOw0KCQlkb2MuYWRk KG5ldyBvcmcuYXBhY2hlLmx1Y2VuZS5kb2N1bWVudC5UZXh0RmllbGQoInByb3BlcnR5VmFsdWUi LA0KIlN1ZHMiLCBGaWVsZC5TdG9yZS5ZRVMpKTsNCgkJbGlzdC5hZGQoZG9jKTsNCgkJZG9jID0g bmV3IERvY3VtZW50KCk7DQoJCWRvYy5hZGQobmV3IG9yZy5hcGFjaGUubHVjZW5lLmRvY3VtZW50 LlRleHRGaWVsZCgicHJvcGVydHlWYWx1ZSIsDQoiY29hZ3VsYW50IiwgRmllbGQuU3RvcmUuWUVT KSk7DQoJCWxpc3QuYWRkKGRvYyk7DQoJCWRvYyA9IG5ldyBEb2N1bWVudCgpOw0KCQlkb2MuYWRk KG5ldyBvcmcuYXBhY2hlLmx1Y2VuZS5kb2N1bWVudC5UZXh0RmllbGQoInByb3BlcnR5VmFsdWUi LA0KImhlcGEiLCBGaWVsZC5TdG9yZS5ZRVMpKTsNCgkJbGlzdC5hZGQoZG9jKTsNCgkJZG9jID0g bmV3IERvY3VtZW50KCk7DQoJCWRvYy5hZGQobmV3IG9yZy5hcGFjaGUubHVjZW5lLmRvY3VtZW50 LlRleHRGaWVsZCgicHJvcGVydHlWYWx1ZSIsDQoiaGVtYXRvbWEiLCBGaWVsZC5TdG9yZS5ZRVMp KTsNCgkJbGlzdC5hZGQoZG9jKTsNCgkJZG9jID0gbmV3IERvY3VtZW50KCk7DQoJCWRvYy5hZGQo bmV3IG9yZy5hcGFjaGUubHVjZW5lLmRvY3VtZW50LlRleHRGaWVsZCgicHJvcGVydHlWYWx1ZSIs DQoibm9ybWFsIiwgRmllbGQuU3RvcmUuWUVTKSk7DQoJCWxpc3QuYWRkKGRvYyk7DQoJCWRvYyA9 IG5ldyBEb2N1bWVudCgpOw0KCQlkb2MuYWRkKG5ldyBvcmcuYXBhY2hlLmx1Y2VuZS5kb2N1bWVu dC5UZXh0RmllbGQoInByb3BlcnR5VmFsdWUiLA0KImFibm9ybWFsIiwgRmllbGQuU3RvcmUuWUVT KSk7DQoJCWxpc3QuYWRkKGRvYyk7DQoJCWRvYyA9IG5ldyBEb2N1bWVudCgpOw0KCQlkb2MuYWRk KG5ldyBvcmcuYXBhY2hlLmx1Y2VuZS5kb2N1bWVudC5UZXh0RmllbGQoInByb3BlcnR5VmFsdWUi LA0KIm5vdGZvdW5kIiwgRmllbGQuU3RvcmUuWUVTKSk7DQoJCWxpc3QuYWRkKGRvYyk7DQoJCWRv YyA9IG5ldyBEb2N1bWVudCgpOw0KCQlkb2MuYWRkKG5ldyBvcmcuYXBhY2hlLmx1Y2VuZS5kb2N1 bWVudC5UZXh0RmllbGQoInByb3BlcnR5VmFsdWUiLCAicmVkDQpibG9vZCBjZWxscyIsIEZpZWxk LlN0b3JlLllFUykpOw0KCQlsaXN0LmFkZChkb2MpOw0KCQlkb2MgPSBuZXcgRG9jdW1lbnQoKTsN CgkJZG9jLmFkZChuZXcgb3JnLmFwYWNoZS5sdWNlbmUuZG9jdW1lbnQuVGV4dEZpZWxkKCJwcm9w ZXJ0eVZhbHVlIiwNCiJCbG9vZCIsIEZpZWxkLlN0b3JlLllFUykpOw0KCQlsaXN0LmFkZChkb2Mp Ow0KCQlkb2MgPSBuZXcgRG9jdW1lbnQoKTsNCgkJZG9jLmFkZChuZXcgb3JnLmFwYWNoZS5sdWNl bmUuZG9jdW1lbnQuVGV4dEZpZWxkKCJwcm9wZXJ0eVZhbHVlIiwNCiJCbG9vZCIsIEZpZWxkLlN0 b3JlLllFUykpOw0KCQlsaXN0LmFkZChkb2MpOw0KCQkNCgkJRG9jdW1lbnQgcGFyID0gbmV3IERv Y3VtZW50KCk7DQoJCXBhci5hZGQobmV3IG9yZy5hcGFjaGUubHVjZW5lLmRvY3VtZW50LlRleHRG aWVsZCgiY29kaW5nU2NoZW1lTmFtZSIsDQoiVGVzdFNjaGVtZSIsIEZpZWxkLlN0b3JlLllFUykp Ow0KCQlwYXIuYWRkKG5ldyBvcmcuYXBhY2hlLmx1Y2VuZS5kb2N1bWVudC5UZXh0RmllbGQoInBh cmVudERvYyIsICJ5ZXMiLA0KRmllbGQuU3RvcmUuWUVTKSk7DQoJCXBhci5hZGQobmV3IG9yZy5h cGFjaGUubHVjZW5lLmRvY3VtZW50LlRleHRGaWVsZCgiZW50aXR5Q29kZSIsIGNvZGUsDQpGaWVs ZC5TdG9yZS5ZRVMpKTsNCgkJbGlzdC5hZGQocGFyKTsNCgkJcmV0dXJuIGxpc3Q7DQoJfQ0KDQoJ cHJpdmF0ZSBMaXN0PERvY3VtZW50PiBjcmVhdGVCbG9ja0pvaW4yKFN0cmluZyBjb2RlKSB7DQoJ CUxpc3Q8RG9jdW1lbnQ+IGxpc3QgPSBuZXcgQXJyYXlMaXN0PERvY3VtZW50PigpOw0KCQ0KCQlE b2N1bWVudCBkb2MgPSBuZXcgRG9jdW1lbnQoKTsNCgkJZG9jLmFkZChuZXcgb3JnLmFwYWNoZS5s dWNlbmUuZG9jdW1lbnQuVGV4dEZpZWxkKCJwcm9wZXJ0eVZhbHVlIiwNCiJCbG9vZCIsIEZpZWxk LlN0b3JlLllFUykpOw0KCQlsaXN0LmFkZChkb2MpOw0KCQlkb2MgPSBuZXcgRG9jdW1lbnQoKTsN CgkJZG9jLmFkZChuZXcgb3JnLmFwYWNoZS5sdWNlbmUuZG9jdW1lbnQuVGV4dEZpZWxkKCJwcm9w ZXJ0eVZhbHVlIiwgIk11ZCIsDQpGaWVsZC5TdG9yZS5ZRVMpKTsNCgkJbGlzdC5hZGQoZG9jKTsN CgkJZG9jID0gbmV3IERvY3VtZW50KCk7DQoJCWRvYy5hZGQobmV3IG9yZy5hcGFjaGUubHVjZW5l LmRvY3VtZW50LlRleHRGaWVsZCgicHJvcGVydHlWYWx1ZSIsDQoiU3VkcyIsIEZpZWxkLlN0b3Jl LllFUykpOw0KCQlsaXN0LmFkZChkb2MpOw0KCQlkb2MgPSBuZXcgRG9jdW1lbnQoKTsNCgkJZG9j LmFkZChuZXcgb3JnLmFwYWNoZS5sdWNlbmUuZG9jdW1lbnQuVGV4dEZpZWxkKCJwcm9wZXJ0eVZh bHVlIiwNCiJjb2FndWxhbnQiLCBGaWVsZC5TdG9yZS5ZRVMpKTsNCgkJbGlzdC5hZGQoZG9jKTsN CgkJZG9jID0gbmV3IERvY3VtZW50KCk7DQoJCWRvYy5hZGQobmV3IG9yZy5hcGFjaGUubHVjZW5l LmRvY3VtZW50LlRleHRGaWVsZCgicHJvcGVydHlWYWx1ZSIsDQoiaGVwYSIsIEZpZWxkLlN0b3Jl LllFUykpOw0KCQlsaXN0LmFkZChkb2MpOw0KCQlkb2MgPSBuZXcgRG9jdW1lbnQoKTsNCgkJZG9j LmFkZChuZXcgb3JnLmFwYWNoZS5sdWNlbmUuZG9jdW1lbnQuVGV4dEZpZWxkKCJwcm9wZXJ0eVZh bHVlIiwNCiJoZW1hdG9tYSIsIEZpZWxkLlN0b3JlLllFUykpOw0KCQlsaXN0LmFkZChkb2MpOw0K CQlkb2MgPSBuZXcgRG9jdW1lbnQoKTsNCgkJZG9jLmFkZChuZXcgb3JnLmFwYWNoZS5sdWNlbmUu ZG9jdW1lbnQuVGV4dEZpZWxkKCJwcm9wZXJ0eVZhbHVlIiwNCiJub3JtYWwiLCBGaWVsZC5TdG9y ZS5ZRVMpKTsNCgkJbGlzdC5hZGQoZG9jKTsNCgkJZG9jID0gbmV3IERvY3VtZW50KCk7DQoJCWRv Yy5hZGQobmV3IG9yZy5hcGFjaGUubHVjZW5lLmRvY3VtZW50LlRleHRGaWVsZCgicHJvcGVydHlW YWx1ZSIsDQoiYWJub3JtYWwiLCBGaWVsZC5TdG9yZS5ZRVMpKTsNCgkJbGlzdC5hZGQoZG9jKTsN CgkJZG9jID0gbmV3IERvY3VtZW50KCk7DQoJCWRvYy5hZGQobmV3IG9yZy5hcGFjaGUubHVjZW5l LmRvY3VtZW50LlRleHRGaWVsZCgicHJvcGVydHlWYWx1ZSIsDQoibm90Zm91bmQiLCBGaWVsZC5T dG9yZS5ZRVMpKTsNCgkJbGlzdC5hZGQoZG9jKTsNCgkJZG9jID0gbmV3IERvY3VtZW50KCk7DQoJ CWRvYy5hZGQobmV3IG9yZy5hcGFjaGUubHVjZW5lLmRvY3VtZW50LlRleHRGaWVsZCgicHJvcGVy dHlWYWx1ZSIsICJyZWQNCmJsb29kIGNlbGxzIiwgRmllbGQuU3RvcmUuWUVTKSk7DQoJCWxpc3Qu YWRkKGRvYyk7DQoJCWRvYyA9IG5ldyBEb2N1bWVudCgpOw0KCQlkb2MuYWRkKG5ldyBvcmcuYXBh Y2hlLmx1Y2VuZS5kb2N1bWVudC5UZXh0RmllbGQoInByb3BlcnR5VmFsdWUiLA0KIkJsb29kIiwg RmllbGQuU3RvcmUuWUVTKSk7DQoJCWxpc3QuYWRkKGRvYyk7DQoJCWRvYyA9IG5ldyBEb2N1bWVu dCgpOw0KCQlkb2MuYWRkKG5ldyBvcmcuYXBhY2hlLmx1Y2VuZS5kb2N1bWVudC5UZXh0RmllbGQo InByb3BlcnR5VmFsdWUiLA0KIkJsb29kIiwgRmllbGQuU3RvcmUuWUVTKSk7DQoJCWxpc3QuYWRk KGRvYyk7DQoJCQ0KCQlEb2N1bWVudCBwYXIgPSBuZXcgRG9jdW1lbnQoKTsNCgkJcGFyLmFkZChu ZXcgb3JnLmFwYWNoZS5sdWNlbmUuZG9jdW1lbnQuVGV4dEZpZWxkKCJjb2RpbmdTY2hlbWVOYW1l IiwNCiJUZXN0U2NoZW1lVG9vIiwgRmllbGQuU3RvcmUuWUVTKSk7DQoJCXBhci5hZGQobmV3IG9y Zy5hcGFjaGUubHVjZW5lLmRvY3VtZW50LlRleHRGaWVsZCgicGFyZW50RG9jIiwgInllcyIsDQpG aWVsZC5TdG9yZS5ZRVMpKTsNCgkJcGFyLmFkZChuZXcgb3JnLmFwYWNoZS5sdWNlbmUuZG9jdW1l bnQuVGV4dEZpZWxkKCJlbnRpdHlDb2RlIiwgY29kZSwNCkZpZWxkLlN0b3JlLllFUykpOw0KCQls aXN0LmFkZChwYXIpOw0KCQlyZXR1cm4gbGlzdDsNCgl9DQoJcHVibGljIHN0YXRpYyB2b2lkIG1h aW4oU3RyaW5nW10gYXJncykgew0KCQluZXcgU21hbGxUZXN0SW5kZXhCdWlsZGVyKCkuaW5pdCgp Ow0KDQoJfQ0KDQp9DQoNCg0KDQpwYWNrYWdlIG9yZy5sZXhldnMubHVjZW5lLnByb3RvdHlwZTsN Cg0KaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247DQppbXBvcnQgamF2YS5uaW8uZmlsZS5QYXRo Ow0KaW1wb3J0IGphdmEubmlvLmZpbGUuUGF0aHM7DQoNCmltcG9ydCBvcmcuYXBhY2hlLmx1Y2Vu ZS5hbmFseXNpcy5zdGFuZGFyZC5TdGFuZGFyZEFuYWx5emVyOw0KaW1wb3J0IG9yZy5hcGFjaGUu bHVjZW5lLmFuYWx5c2lzLnV0aWwuQ2hhckFycmF5U2V0Ow0KaW1wb3J0IG9yZy5hcGFjaGUubHVj ZW5lLmRvY3VtZW50LkRvY3VtZW50Ow0KaW1wb3J0IG9yZy5hcGFjaGUubHVjZW5lLmluZGV4LkRp cmVjdG9yeVJlYWRlcjsNCmltcG9ydCBvcmcuYXBhY2hlLmx1Y2VuZS5pbmRleC5JbmRleFJlYWRl cjsNCmltcG9ydCBvcmcuYXBhY2hlLmx1Y2VuZS5xdWVyeXBhcnNlci5jbGFzc2ljLlBhcnNlRXhj ZXB0aW9uOw0KaW1wb3J0IG9yZy5hcGFjaGUubHVjZW5lLnF1ZXJ5cGFyc2VyLmNsYXNzaWMuUXVl cnlQYXJzZXI7DQppbXBvcnQgb3JnLmFwYWNoZS5sdWNlbmUuc2VhcmNoLkluZGV4U2VhcmNoZXI7 DQppbXBvcnQgb3JnLmFwYWNoZS5sdWNlbmUuc2VhcmNoLlF1ZXJ5Ow0KaW1wb3J0IG9yZy5hcGFj aGUubHVjZW5lLnNlYXJjaC5RdWVyeVdyYXBwZXJGaWx0ZXI7DQppbXBvcnQgb3JnLmFwYWNoZS5s dWNlbmUuc2VhcmNoLlNvcnQ7DQppbXBvcnQgb3JnLmFwYWNoZS5sdWNlbmUuc2VhcmNoLkJvb2xl YW5DbGF1c2UuT2NjdXI7DQppbXBvcnQgb3JnLmFwYWNoZS5sdWNlbmUuc2VhcmNoLmdyb3VwaW5n Lkdyb3VwRG9jczsNCmltcG9ydCBvcmcuYXBhY2hlLmx1Y2VuZS5zZWFyY2guZ3JvdXBpbmcuVG9w R3JvdXBzOw0KaW1wb3J0IG9yZy5hcGFjaGUubHVjZW5lLnNlYXJjaC5qb2luLkJpdERvY0lkU2V0 Q2FjaGluZ1dyYXBwZXJGaWx0ZXI7DQppbXBvcnQgb3JnLmFwYWNoZS5sdWNlbmUuc2VhcmNoLmpv aW4uQml0RG9jSWRTZXRGaWx0ZXI7DQppbXBvcnQgb3JnLmFwYWNoZS5sdWNlbmUuc2VhcmNoLmpv aW4uU2NvcmVNb2RlOw0KaW1wb3J0IG9yZy5hcGFjaGUubHVjZW5lLnNlYXJjaC5qb2luLlRvUGFy ZW50QmxvY2tKb2luQ29sbGVjdG9yOw0KaW1wb3J0IG9yZy5hcGFjaGUubHVjZW5lLnNlYXJjaC5q b2luLlRvUGFyZW50QmxvY2tKb2luSW5kZXhTZWFyY2hlcjsNCmltcG9ydCBvcmcuYXBhY2hlLmx1 Y2VuZS5zZWFyY2guam9pbi5Ub1BhcmVudEJsb2NrSm9pblF1ZXJ5Ow0KaW1wb3J0IG9yZy5hcGFj aGUubHVjZW5lLnN0b3JlLkRpcmVjdG9yeTsNCmltcG9ydCBvcmcuYXBhY2hlLmx1Y2VuZS5zdG9y ZS5NTWFwRGlyZWN0b3J5Ow0KDQpwdWJsaWMgY2xhc3MgQmxvY2tKb2luVGVzdFF1ZXJ5IHsNCg0K CXB1YmxpYyBCbG9ja0pvaW5UZXN0UXVlcnkoKSB7DQoJCS8vIFRPRE8gQXV0by1nZW5lcmF0ZWQg Y29uc3RydWN0b3Igc3R1Yg0KCX0NCgkNCglwdWJsaWMgdm9pZCBydW4oKXsNCglQYXRoIHBhdGgg PSBQYXRocy5nZXQoIi9Vc2Vycy9tMDI5MjA2L0Rlc2t0b3AvaW5kZXgiKTsNCglEaXJlY3Rvcnkg aW5kZXg7DQoJdHJ5IHsNCgkJaW5kZXggPSBuZXcgTU1hcERpcmVjdG9yeShwYXRoKTsNCg0KCUlu ZGV4UmVhZGVyIHJlYWRlciA9ICBEaXJlY3RvcnlSZWFkZXIub3BlbihpbmRleCk7DQoJSW5kZXhT ZWFyY2hlciBzZWFyY2hlciA9IG5ldyBUb1BhcmVudEJsb2NrSm9pbkluZGV4U2VhcmNoZXIocmVh ZGVyKTsNCglUb1BhcmVudEJsb2NrSm9pbkNvbGxlY3RvciBjb2xsZWN0b3IgPSBuZXcNClRvUGFy ZW50QmxvY2tKb2luQ29sbGVjdG9yKFNvcnQuUkVMRVZBTkNFLCAyLCB0cnVlLCB0cnVlKTsNCglC aXREb2NJZFNldEZpbHRlciBjb2RpbmdTY2hlbWUgPSBuZXcgQml0RG9jSWRTZXRDYWNoaW5nV3Jh cHBlckZpbHRlcigNCiAgICAgICAgICAgICAgbmV3IFF1ZXJ5V3JhcHBlckZpbHRlcihuZXcgUXVl cnlQYXJzZXIoImNvZGluZ1NjaGVtZU5hbWUiLA0KbmV3IFN0YW5kYXJkQW5hbHl6ZXIobmV3IENo YXJBcnJheVNldCggMCwgdHJ1ZSkpKS5wYXJzZSgiVGVzdFNjaGVtZSIpKSk7DQoNCgkgIFF1ZXJ5 IHF1ZXJ5ID0gbmV3IFF1ZXJ5UGFyc2VyKG51bGwsIG5ldyBTdGFuZGFyZEFuYWx5emVyKG5ldw0K Q2hhckFycmF5U2V0KCAwLCB0cnVlKSkpLmNyZWF0ZUJvb2xlYW5RdWVyeSgicHJvcGVydHlWYWx1 ZSIsICJCbG9vZCIsDQpPY2N1ci5NVVNUKTsNCgkgIFRvUGFyZW50QmxvY2tKb2luUXVlcnkgdGVy bUpvaW5RdWVyeSA9IG5ldyBUb1BhcmVudEJsb2NrSm9pblF1ZXJ5KA0KCQkJICAgIHF1ZXJ5LCAN CgkJCSAgICBjb2RpbmdTY2hlbWUsDQoJCQkgICAgU2NvcmVNb2RlLkF2Zyk7DQoJICBzZWFyY2hl ci5zZWFyY2godGVybUpvaW5RdWVyeSwgY29sbGVjdG9yKTsNCgkgIFRvcEdyb3VwczxJbnRlZ2Vy PiBnZXRUb3BHcm91cHNSZXN1bHRzID0NCmNvbGxlY3Rvci5nZXRUb3BHcm91cHModGVybUpvaW5R dWVyeSwgbnVsbCwgMCwgMTAsIDAsIHRydWUpOw0KCSAgU3RyaW5nIGVjb2RlID0gbnVsbDsNCgkg IGZvciAoR3JvdXBEb2NzPEludGVnZXI+IHJlc3VsdCA6IGdldFRvcEdyb3Vwc1Jlc3VsdHMuZ3Jv dXBzKSB7DQoJCSAgRG9jdW1lbnQgcGFyZW50ID0gc2VhcmNoZXIuZG9jKHJlc3VsdC5ncm91cFZh bHVlKTsNCgkJIGVjb2RlID0gcGFyZW50LmdldCgiZW50aXR5Q29kZSIpOw0KCQkgU3lzdGVtLm91 dC5wcmludGxuKCJlbnRpdHlDb2RlOiAiICsgZWNvZGUpOw0KCSAgfQ0KCX0gY2F0Y2ggKElPRXhj ZXB0aW9uIGUpIHsNCgkJLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBjYXRjaCBibG9jaw0KCQllLnBy aW50U3RhY2tUcmFjZSgpOw0KCX0gY2F0Y2ggKFBhcnNlRXhjZXB0aW9uIGUpIHsNCgkJLy8gVE9E TyBBdXRvLWdlbmVyYXRlZCBjYXRjaCBibG9jaw0KCQllLnByaW50U3RhY2tUcmFjZSgpOw0KCX0N Cgl9DQoJDQoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgew0KCQluZXcg QmxvY2tKb2luVGVzdFF1ZXJ5KCkucnVuKCk7DQoNCgl9DQoNCn0NCg0KDQoNCk9uIDYvMjMvMTUs IDQ6MTcgUE0sICJCYXVlciwgSGVyYmVydCBTLiAoU2NvdHQpIiA8QmF1ZXIuU2NvdHRAbWF5by5l ZHU+DQp3cm90ZToNCg0KPkmhr20gZ3Vlc3NpbmcgdGhpcyBpc3N1ZSBtYXkgYmUgcmVsYXRlZCB0 byB0aGUgU09MUiBlcnJvciBkZXNjcmliZWQgaGVyZToNCj5odHRwczovL2lzc3Vlcy5hcGFjaGUu b3JnL2ppcmEvYnJvd3NlL1NPTFItNzYwNi4gIEkgY2FuIGZpbmQgYXQgbGVhc3Qgb25lDQo+Z3Jv dXAgb2YgZG9jdW1lbnRzIHdpdGggYSBtaXNzaW5nIHBhcmVudCBpbiBteSBnZW5lcmF0ZWQgaW5k ZXguICBUaGlzDQo+ZG9lc26hr3QgZXhwbGFpbiB3aHkgSSBkaWRuoa90IHNlZSBhIHNpbWlsYXIg aXNzdWUgaW4gNC4xMC40LiAgSSBjYW4gc2VlDQo+dGhhdCB0aGUgQml0U2V0IGltcGxlbWVudGF0 aW9uIGlzbqGvdCB0aGUgaXNzdWUgYnV0IHRoZSBmaWx0ZXJlZCBiaXQgc2V0DQo+aW5zaWRlIGl0 IG1heSBiZSBjYXVzaW5nIHRoZSBwcm9ibGVtIGdpdmVuIGEgbWlzc2luZyBwYXJlbnQuICBJIGhh dmUgdG8NCj5zYXkgSaGvbSBhIGxpdHRsZSBjb25jZXJuZWQgYWJvdXQgdGhlIGxhY2sgb2YgZmVl ZGJhY2sgb24gdGhpcyBsaXN0LiAgSXMNCj50aGVyZSBhbm90aGVyIGZvcnVtIHRoYXQgaXMgYSBs aXR0bGUgbW9yZSBhY3RpdmUgb24gdGhpcyBzdWJqZWN0IG9yIGlzIHRoZQ0KPmJsb2NrIGpvaW4g aW1wbGVtZW50YXRpb24ganVzdCBub3QgdXNlZCBvciBzdXBwb3J0ZWQgdGhhdCBtdWNoPw0KPg0K Pk9uIDYvMjIvMTUsIDI6MjEgUE0sICJCYXVlciwgSGVyYmVydCBTLiAoU2NvdHQpIiA8QmF1ZXIu U2NvdHRAbWF5by5lZHU+DQo+d3JvdGU6DQo+DQo+PldlbGwgaXShr3MgY2xlYXIgdGhhdCB0aGlz IGlzIGp1c3QgZ2l2aW5nIGEgcmV0dXJuIHZhbHVlIG9mDQo+PkludGVnZXIuTUFYX1ZBTFVFIGZv ciB0aGUgcGFyZW50RG9jLiAgR2l2ZW4gdGhlIHJlY2VudCBjaGFuZ2VzIG5vdGVkDQo+PmhlcmU6 DQo+PiBodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL0xVQ0VORS02MDIxIHdo ZXJlIEZpeGVkQml0U2V0IG5vdw0KPj5yZXR1cm5zIEludGVnZXIuTUFYX1ZBTFVFIGluc3RlYWQg b2YgLTEgSSB3b25kZXIgaWYgYSBidWcgd2FzbqGvdA0KPj5pbnRyb2R1Y2VkIHRvIHRoZSBCbG9j a0pvaW5TY29yZXIubmV4dERvYyBtZXRob2QuICBVbmZvcnR1bmF0ZWx5IEkgaGF2ZQ0KPj55ZXQg dG8gY29tZSB1cCB3aXRoIGFuIGV4YW1wbGUgdG8gbWFrZSB0aGlzIGZhaWwgb24gYSBzbWFsbGVy IHRlc3QgaW5kZXguDQo+PlRoZSBjaGlsZCBkb2N1bWVudCBpbiBxdWVzdGlvbiBkb2VzIGhhdmUg YSBwYXJlbnQsIHdoaWNoIGlzIGRvYyAjNDgyMzY4NCwNCj4+c28gSaGvbSBjb25mdXNlZCBhcyB0 byBob3cgdGhlIE5PX01PUkVfRE9DUyB2YWx1ZSB3b3VsZCBiZSBhcHBsaWVkLiAgSXMNCj4+dGhl cmUgc29tZXRoaW5nIG9idmlvdXMgSaGvbSBtaXNzaW5nIGhlcmU/DQo+Pg0KPj5PbiA2LzUvMTUs IDEyOjA1IFBNLCAiQmF1ZXIsIEhlcmJlcnQgUy4gKFNjb3R0KSIgPEJhdWVyLlNjb3R0QG1heW8u ZWR1Pg0KPj53cm90ZToNCj4+DQo+Pj5PbmUgY29ycmVjdGlvbiwgaXQgbG9va3MgbGlrZSB0aGUg cGFyZW50Qml0cyBjYWxsIGhhcyA0ODIzNjgwIHBhc3NlZCB0bw0KPj4+aXQNCj4+PnRvIGdlbmVy YXRlIHRoZSBlcnJvbmVvdXMgZG9jSWQuDQo+Pj4NCj4+Pk9uIDYvNS8xNSwgMTA6MzQgQU0sICJC YXVlciwgSGVyYmVydCBTLiAoU2NvdHQpIiA8QmF1ZXIuU2NvdHRAbWF5by5lZHU+DQo+Pj53cm90 ZToNCj4+Pg0KPj4+Pkkgc2hvdWxkIG1lbnRpb24gdGhhdCB0aGlzIHdvcmtlZCBpbiA0LjEwLjQg dXNpbmcgYSB2ZXJ5IHNpbWlsYXIgY29kZQ0KPj4+PmJhc2UuICAtc2NvdHQNCj4+Pj4NCj4+Pj5P biA2LzQvMTUsIDQ6NTEgUE0sICJCYXVlciwgSGVyYmVydCBTLiAoU2NvdHQpIiA8QmF1ZXIuU2Nv dHRAbWF5by5lZHU+DQo+Pj4+d3JvdGU6DQo+Pj4+DQo+Pj4+Pkmp9m0gd29ya2luZyB3aXRoIEx1 Y2VuZSAgNS4xIHRvIHRyeSB0byBtYWtlIHVzZSBvZiB0aGUgcmVsYXRpb25hbA0KPj4+Pj5zdHJ1 Y3R1cmUgb2YgdGhlIGJsb2NrIGpvaW4gaW5kZXggYW5kIHF1ZXJ5IG1lY2hhbmlzbXMuICBJqfZt IHF1ZXJ5aW5nDQo+Pj4+PndpdGggdGhlIGZvbGxvd2luZyBjb2RlOg0KPj4+Pj4NCj4+Pj4+SW5k ZXhSZWFkZXIgcmVhZGVyID0gIERpcmVjdG9yeVJlYWRlci5vcGVuKGluZGV4KTsNCj4+Pj4+DQo+ Pj4+PlRvUGFyZW50QmxvY2tKb2luSW5kZXhTZWFyY2hlciBzZWFyY2hlciA9IG5ldw0KPj4+Pj5U b1BhcmVudEJsb2NrSm9pbkluZGV4U2VhcmNoZXIocmVhZGVyKTsNCj4+Pj4+DQo+Pj4+PlRvUGFy ZW50QmxvY2tKb2luQ29sbGVjdG9yIGNvbGxlY3RvciA9IG5ldw0KPj4+Pj5Ub1BhcmVudEJsb2Nr Sm9pbkNvbGxlY3RvcihTb3J0LlJFTEVWQU5DRSwgMiwgdHJ1ZSwgdHJ1ZSk7DQo+Pj4+Pg0KPj4+ Pj5CaXREb2NJZFNldEZpbHRlciBjb2RpbmdTY2hlbWUgPSBuZXcgQml0RG9jSWRTZXRDYWNoaW5n V3JhcHBlckZpbHRlcigNCj4+Pj4+DQo+Pj4+PiAgICAgICAgICAgICAgICAgIG5ldyBRdWVyeVdy YXBwZXJGaWx0ZXIobmV3DQo+Pj4+PlF1ZXJ5UGFyc2VyKCJjb2RpbmdTY2hlbWVOYW1lIiwgbmV3 IFN0YW5kYXJkQW5hbHl6ZXIobmV3IENoYXJBcnJheVNldCgNCj4+Pj4+MCwNCj4+Pj4+dHJ1ZSkp KS5wYXJzZShzY2hlbWUuZ2V0Q29kaW5nU2NoZW1lTmFtZSgpKSkpOw0KPj4+Pj4NCj4+Pj4+ICBR dWVyeSBxdWVyeSA9IG5ldyBRdWVyeVBhcnNlcihudWxsLCBuZXcgU3RhbmRhcmRBbmFseXplcihu ZXcNCj4+Pj4+Q2hhckFycmF5U2V0KCAwLCB0cnVlKSkpLmNyZWF0ZUJvb2xlYW5RdWVyeSgicHJv cGVydHlWYWx1ZSIsDQo+Pj4+PnRlcm0uZ2V0VGVybSgpLCBPY2N1ci5NVVNUKTsNCj4+Pj4+DQo+ Pj4+PiAgVG9QYXJlbnRCbG9ja0pvaW5RdWVyeSB0ZXJtSm9pblF1ZXJ5ID0gbmV3IFRvUGFyZW50 QmxvY2tKb2luUXVlcnkoDQo+Pj4+Pg0KPj4+Pj4gICAgcXVlcnksDQo+Pj4+Pg0KPj4+Pj4gICAg Y29kaW5nU2NoZW1lLA0KPj4+Pj4NCj4+Pj4+ICAgIFNjb3JlTW9kZS5BdmcpOw0KPj4+Pj4NCj4+ Pj4+ICBzZWFyY2hlci5zZWFyY2godGVybUpvaW5RdWVyeSwgY29sbGVjdG9yKTsNCj4+Pj4+DQo+ Pj4+Pg0KPj4+Pj5UbyB0cnkgdG8gZ2V0IHBhcmVudCB2YWx1ZXMsIGJ1dCBpdCBmYWlscyBvbiB0 aGUgZmluYWwgbGluZSB3aXRoIHRoZQ0KPj4+Pj5mb2xsb3dpbmcgc3RhY2sgdHJhY2U6DQo+Pj4+ Pg0KPj4+Pj4NCj4+Pj4+RXhjZXB0aW9uIGluIHRocmVhZCAibWFpbiIgamF2YS5sYW5nLklsbGVn YWxTdGF0ZUV4Y2VwdGlvbjogY2hpbGQNCj4+Pj4+cXVlcnkNCj4+Pj4+bXVzdCBvbmx5IG1hdGNo IG5vbi1wYXJlbnQgZG9jcywgYnV0IHBhcmVudCBkb2NJRD0yMTQ3NDgzNjQ3IG1hdGNoZWQNCj4+ Pj4+Y2hpbGRTY29yZXI9Y2xhc3Mgb3JnLmFwYWNoZS5sdWNlbmUuc2VhcmNoLlRlcm1TY29yZXIN Cj4+Pj4+DQo+Pj4+PmF0IA0KPj4+Pj5vcmcuYXBhY2hlLmx1Y2VuZS5zZWFyY2guam9pbi5Ub1Bh cmVudEJsb2NrSm9pblF1ZXJ5JEJsb2NrSm9pblNjb3Jlci5uDQo+Pj4+PmUNCj4+Pj4+eA0KPj4+ Pj50DQo+Pj4+PkQNCj4+Pj4+b2MoVG9QYXJlbnRCbG9ja0pvaW5RdWVyeS5qYXZhOjMzMCkNCj4+ Pj4+DQo+Pj4+PmF0IA0KPj4+Pj5vcmcuYXBhY2hlLmx1Y2VuZS5zZWFyY2guam9pbi5Ub1BhcmVu dEJsb2NrSm9pbkluZGV4U2VhcmNoZXIuc2VhcmNoKFRvDQo+Pj4+PlANCj4+Pj4+YQ0KPj4+Pj5y DQo+Pj4+PmUNCj4+Pj4+bnRCbG9ja0pvaW5JbmRleFNlYXJjaGVyLmphdmE6NjMpDQo+Pj4+Pg0K Pj4+Pj5hdCANCj4+Pj4+b3JnLmFwYWNoZS5sdWNlbmUuc2VhcmNoLkluZGV4U2VhcmNoZXIuc2Vh cmNoKEluZGV4U2VhcmNoZXIuamF2YTo0MjgpDQo+Pj4+Pg0KPj4+Pj5hdCANCj4+Pj4+b3JnLmxl eGV2cy5sdWNlbmUucHJvdG90eXBlLkx1Y2VuZVF1ZXJ5VHJpYWwubHVjZW5lVG9QYXJlbnRKb2lu UXVlcnkoTA0KPj4+Pj51DQo+Pj4+PmMNCj4+Pj4+ZQ0KPj4+Pj5uDQo+Pj4+PmVRdWVyeVRyaWFs LmphdmE6NzgpDQo+Pj4+Pg0KPj4+Pj5hdCANCj4+Pj4+b3JnLmxleGV2cy5sdWNlbmUucHJvdG90 eXBlLkx1Y2VuZVF1ZXJ5VHJpYWwubWFpbihMdWNlbmVRdWVyeVRyaWFsLmphdg0KPj4+Pj5hDQo+ Pj4+PjoNCj4+Pj4+Mw0KPj4+Pj4yDQo+Pj4+PjcpDQo+Pj4+Pg0KPj4+Pj4NCj4+Pj4+SSBidWls ZCBpbmRleGVzIHVwIHRvIGFib3V0IDM2R2IgdXNpbmcgYSBjb2RlIHNpbWlsYXIgdG8gdGhlDQo+ Pj4+PmZvbGxvd2luZzoNCj4+Pj4+DQo+Pj4+Pg0KPj4+Pj5MaXN0PERvY3VtZW50PiBsaXN0ID0g bmV3IEFycmF5TGlzdDxEb2N1bWVudD4oKTsNCj4+Pj4+DQo+Pj4+Pi8vbmVlZCBhIHN0YXRpYw0K Pj4+Pj4NCj4+Pj4+aW50IHN0YXRpY0NvdW50ID0gY291bnQ7DQo+Pj4+Pg0KPj4+Pj5QYXJlbnRE b2NPYmplY3QgcGFyZW50ID0NCj4+Pj4+YnVpbGRlci5nZW5lcmF0ZVBhcmVudERvYyhjcy5nZXRD b2RpbmdTY2hlbWVOYW1lKCksDQo+Pj4+Pg0KPj4+Pj5jcy5nZXRWZXJzaW9uKCksIGNzLmdldFVS SSgpLCAiZGVzY3JpcHRpb24iKTsNCj4+Pj4+DQo+Pj4+PmlmIA0KPj4+Pj4oY3MuY29kaW5nU2No ZW1lTmFtZS5lcXVhbHMoQ29kaW5nU2NoZW1lLlRIRVNTQ0hFTUUuY29kaW5nU2NoZW1lTmFtZSkp DQo+Pj4+PnsNCj4+Pj4+DQo+Pj4+Pi8vT25lIHBlciBjb2RpbmcgU2NoZW1lDQo+Pj4+Pg0KPj4+ Pj5pbnQgbnVtYmVyT2ZQcm9wZXJ0aWVzID0gMTI7DQo+Pj4+Pg0KPj4+Pj5pZighdGhlc0V4YWN0 TWF0Y2hEb25lKXsNCj4+Pj4+DQo+Pj4+PkNoaWxkRG9jT2JqZWN0IGNoaWxkMSA9DQo+Pj4+PmJ1 aWxkZXIuZ2VuZXJhdGVDaGlsZERvY1dpdGhTYWx0KHBhcmVudCxTZWFyY2hUZXJtcy5CTE9PRC5n ZXRUZXJtKCkpOw0KPj4+Pj4NCj4+Pj4+RG9jdW1lbnQgZG9jMSA9IGJ1aWxkZXIubWFwVG9Eb2N1 bWVudEV4YWN0TWF0Y2goY2hpbGQxKTsNCj4+Pj4+DQo+Pj4+Pmxpc3QuYWRkKGRvYzEpOw0KPj4+ Pj4NCj4+Pj4+Y291bnQrKzsNCj4+Pj4+DQo+Pj4+Pm51bWJlck9mUHJvcGVydGllcy0tOw0KPj4+ Pj4NCj4+Pj4+Q2hpbGREb2NPYmplY3QgY2hpbGQgPQ0KPj4+Pj5idWlsZGVyLmdlbmVyYXRlQ2hp bGREb2NXaXRoU2FsdChwYXJlbnQsU2VhcmNoVGVybXMuQ0hBUi50ZXJtKTsNCj4+Pj4+DQo+Pj4+ PkRvY3VtZW50IGRvYyA9IGJ1aWxkZXIubWFwVG9Eb2N1bWVudEV4YWN0TWF0Y2goY2hpbGQpOw0K Pj4+Pj4NCj4+Pj4+Y291bnQrKzsNCj4+Pj4+DQo+Pj4+Pmxpc3QuYWRkKGRvYyk7DQo+Pj4+Pg0K Pj4+Pj5udW1iZXJPZlByb3BlcnRpZXMtLTsNCj4+Pj4+DQo+Pj4+PnRoZXNFeGFjdE1hdGNoRG9u ZSA9IHRydWU7DQo+Pj4+Pg0KPj4+Pj59DQo+Pj4+Pg0KPj4+Pj53aGlsZSAobnVtYmVyT2ZQcm9w ZXJ0aWVzID4gMCkgew0KPj4+Pj4NCj4+Pj4+aWYoY291bnQgJSA1NDcgPT0gMCl7DQo+Pj4+Pg0K Pj4+Pj5DaGlsZERvY09iamVjdCBjaGlsZCA9IGJ1aWxkZXIuZ2VuZXJhdGVDaGlsZERvY1dpdGhT YWx0KHBhcmVudCwNCj4+Pj4+DQo+Pj4+PmJ1aWxkZXIucmFuZG9tVGV4dEdlbmVyYXRvcigNCj4+ Pj4+DQo+Pj4+PmJ1aWxkZXIucmFuZG9tTnVtYmVyR2VuZXJhdG9yKCksU2VhcmNoVGVybXMuQkxP T0QuZ2V0VGVybSgpKSk7DQo+Pj4+Pg0KPj4+Pj5Eb2N1bWVudCBkb2MgPSBidWlsZGVyLm1hcFRv RG9jdW1lbnQoY2hpbGQpOw0KPj4+Pj4NCj4+Pj4+bGlzdC5hZGQoZG9jKTsNCj4+Pj4+DQo+Pj4+ PmNvdW50Kys7bnVtYmVyT2ZQcm9wZXJ0aWVzLS07DQo+Pj4+Pg0KPj4+Pj59ZWxzZSBpZihjb3Vu dCAlIDIzMyA9PSAwKXsNCj4+Pj4+DQo+Pj4+PkNoaWxkRG9jT2JqZWN0IGNoaWxkID0gYnVpbGRl ci5nZW5lcmF0ZUNoaWxkRG9jV2l0aFNhbHQocGFyZW50LA0KPj4+Pj4NCj4+Pj4+YnVpbGRlci5y YW5kb21UZXh0R2VuZXJhdG9yKA0KPj4+Pj4NCj4+Pj4+YnVpbGRlci5yYW5kb21OdW1iZXJHZW5l cmF0b3IoKSxTZWFyY2hUZXJtcy5DSEFSLmdldFRlcm0oKSkpOw0KPj4+Pj4NCj4+Pj4+RG9jdW1l bnQgZG9jID0gYnVpbGRlci5tYXBUb0RvY3VtZW50KGNoaWxkKTsNCj4+Pj4+DQo+Pj4+Pmxpc3Qu YWRkKGRvYyk7DQo+Pj4+Pg0KPj4+Pj5jb3VudCsrO251bWJlck9mUHJvcGVydGllcy0tOw0KPj4+ Pj4NCj4+Pj4+fWVsc2UgaWYoY291bnQgJSA3MSA9PSAwKXsNCj4+Pj4+DQo+Pj4+PkNoaWxkRG9j T2JqZWN0IGNoaWxkID0gYnVpbGRlci5nZW5lcmF0ZUNoaWxkRG9jV2l0aFNhbHQocGFyZW50LA0K Pj4+Pj4NCj4+Pj4+YnVpbGRlci5yYW5kb21UZXh0R2VuZXJhdG9yKA0KPj4+Pj4NCj4+Pj4+YnVp bGRlci5yYW5kb21OdW1iZXJHZW5lcmF0b3IoKSxTZWFyY2hUZXJtcy5BUlRJQ0xFLmdldFRlcm0o KSkpOw0KPj4+Pj4NCj4+Pj4+RG9jdW1lbnQgZG9jID0gYnVpbGRlci5tYXBUb0RvY3VtZW50KGNo aWxkKTsNCj4+Pj4+DQo+Pj4+Pmxpc3QuYWRkKGRvYyk7DQo+Pj4+Pg0KPj4+Pj5jb3VudCsrO251 bWJlck9mUHJvcGVydGllcy0tOw0KPj4+Pj4NCj4+Pj4+fWVsc2UgaWYoY291bnQgJSAyMjM3ID09 IDApew0KPj4+Pj4NCj4+Pj4+Q2hpbGREb2NPYmplY3QgY2hpbGQgPSBidWlsZGVyLmdlbmVyYXRl Q2hpbGREb2NXaXRoU2FsdChwYXJlbnQsDQo+Pj4+Pg0KPj4+Pj5idWlsZGVyLnJhbmRvbVRleHRH ZW5lcmF0b3IoDQo+Pj4+Pg0KPj4+Pj5idWlsZGVyLnJhbmRvbU51bWJlckdlbmVyYXRvcigpLFNl YXJjaFRlcm1zLkxVTkdfQ0FOQ0VSLmdldFRlcm0oKSkpOw0KPj4+Pj4NCj4+Pj4+RG9jdW1lbnQg ZG9jID0gYnVpbGRlci5tYXBUb0RvY3VtZW50KGNoaWxkKTsNCj4+Pj4+DQo+Pj4+Pmxpc3QuYWRk KGRvYyk7DQo+Pj4+Pg0KPj4+Pj5jb3VudCsrO251bWJlck9mUHJvcGVydGllcy0tOw0KPj4+Pj4N Cj4+Pj4+fWVsc2UgaWYoY291bnQgJSA1MDc3ID09IDApew0KPj4+Pj4NCj4+Pj4+Q2hpbGREb2NP YmplY3QgY2hpbGQgPSBidWlsZGVyLmdlbmVyYXRlQ2hpbGREb2NXaXRoU2FsdChwYXJlbnQsDQo+ Pj4+Pg0KPj4+Pj5idWlsZGVyLnJhbmRvbVRleHRHZW5lcmF0b3IoDQo+Pj4+Pg0KPj4+Pj5idWls ZGVyLnJhbmRvbU51bWJlckdlbmVyYXRvcigpLFNlYXJjaFRlcm1zLkxJVkVSX0NBUkNJTk9NQS5n ZXRUZXJtKCkpDQo+Pj4+PikNCj4+Pj4+Ow0KPj4+Pj4NCj4+Pj4+RG9jdW1lbnQgZG9jID0gYnVp bGRlci5tYXBUb0RvY3VtZW50KGNoaWxkKTsNCj4+Pj4+DQo+Pj4+Pmxpc3QuYWRkKGRvYyk7DQo+ Pj4+Pg0KPj4+Pj5jb3VudCsrO251bWJlck9mUHJvcGVydGllcy0tOw0KPj4+Pj4NCj4+Pj4+fWVs c2UgaWYoY291bnQgJSAyMzcxID09IDApew0KPj4+Pj4NCj4+Pj4+Q2hpbGREb2NPYmplY3QgY2hp bGQgPSBidWlsZGVyLmdlbmVyYXRlQ2hpbGREb2NXaXRoU2FsdChwYXJlbnQsDQo+Pj4+Pg0KPj4+ Pj5idWlsZGVyLnJhbmRvbVRleHRHZW5lcmF0b3JTdGFydHNXaXRoKA0KPj4+Pj4NCj4+Pj4+YnVp bGRlci5yYW5kb21OdW1iZXJHZW5lcmF0b3IoKSxTZWFyY2hUZXJtcy5CTE9PRC5nZXRUZXJtKCkp KTsNCj4+Pj4+DQo+Pj4+PkRvY3VtZW50IGRvYyA9IGJ1aWxkZXIubWFwVG9Eb2N1bWVudEV4YWN0 TWF0Y2goY2hpbGQpOw0KPj4+Pj4NCj4+Pj4+bGlzdC5hZGQoZG9jKTsNCj4+Pj4+DQo+Pj4+PmNv dW50Kys7bnVtYmVyT2ZQcm9wZXJ0aWVzLS07DQo+Pj4+Pg0KPj4+Pj59ZWxzZSBpZihjb3VudCAl IDc5ID09IDApew0KPj4+Pj4NCj4+Pj4+Q2hpbGREb2NPYmplY3QgY2hpbGQgPSBidWlsZGVyLmdl bmVyYXRlQ2hpbGREb2NXaXRoU2FsdChwYXJlbnQsDQo+Pj4+Pg0KPj4+Pj5idWlsZGVyLnJhbmRv bVRleHRHZW5lcmF0b3JTdGFydHNXaXRoKA0KPj4+Pj4NCj4+Pj4+YnVpbGRlci5yYW5kb21OdW1i ZXJHZW5lcmF0b3IoKSxTZWFyY2hUZXJtcy5BUlRJQ0xFLmdldFRlcm0oKSkpOw0KPj4+Pj4NCj4+ Pj4+RG9jdW1lbnQgZG9jID0gYnVpbGRlci5tYXBUb0RvY3VtZW50RXhhY3RNYXRjaChjaGlsZCk7 DQo+Pj4+Pg0KPj4+Pj5saXN0LmFkZChkb2MpOw0KPj4+Pj4NCj4+Pj4+Y291bnQrKztudW1iZXJP ZlByb3BlcnRpZXMtLTsNCj4+Pj4+DQo+Pj4+Pn1lbHNlIGlmKGNvdW50ICUgMzU4MSA9PSAwKXsN Cj4+Pj4+DQo+Pj4+PkNoaWxkRG9jT2JqZWN0IGNoaWxkID0gYnVpbGRlci5nZW5lcmF0ZUNoaWxk RG9jV2l0aFNhbHQocGFyZW50LA0KPj4+Pj4NCj4+Pj4+YnVpbGRlci5yYW5kb21UZXh0R2VuZXJh dG9yU3RhcnRzV2l0aCgNCj4+Pj4+DQo+Pj4+PmJ1aWxkZXIucmFuZG9tTnVtYmVyR2VuZXJhdG9y KCksU2VhcmNoVGVybXMuTFVOR19DQU5DRVIuZ2V0VGVybSgpKSk7DQo+Pj4+Pg0KPj4+Pj5Eb2N1 bWVudCBkb2MgPSBidWlsZGVyLm1hcFRvRG9jdW1lbnRFeGFjdE1hdGNoKGNoaWxkKTsNCj4+Pj4+ DQo+Pj4+Pmxpc3QuYWRkKGRvYyk7DQo+Pj4+Pg0KPj4+Pj5jb3VudCsrO251bWJlck9mUHJvcGVy dGllcy0tOw0KPj4+Pj4NCj4+Pj4+fWVsc2UgaWYoY291bnQgJSAyMyA9PSAwKXsNCj4+Pj4+DQo+ Pj4+PkNoaWxkRG9jT2JqZWN0IGNoaWxkID0gYnVpbGRlci5nZW5lcmF0ZUNoaWxkRG9jV2l0aFNh bHQocGFyZW50LA0KPj4+Pj4NCj4+Pj4+YnVpbGRlci5yYW5kb21UZXh0R2VuZXJhdG9yU3RhcnRz V2l0aCgNCj4+Pj4+DQo+Pj4+PmJ1aWxkZXIucmFuZG9tTnVtYmVyR2VuZXJhdG9yKCksU2VhcmNo VGVybXMuQ0hBUi5nZXRUZXJtKCkpKTsNCj4+Pj4+DQo+Pj4+PkRvY3VtZW50IGRvYyA9IGJ1aWxk ZXIubWFwVG9Eb2N1bWVudEV4YWN0TWF0Y2goY2hpbGQpOw0KPj4+Pj4NCj4+Pj4+bGlzdC5hZGQo ZG9jKTsNCj4+Pj4+DQo+Pj4+PmNvdW50Kys7bnVtYmVyT2ZQcm9wZXJ0aWVzLS07DQo+Pj4+Pg0K Pj4+Pj59IGVsc2Ugew0KPj4+Pj4NCj4+Pj4+Q2hpbGREb2NPYmplY3QgY2hpbGQgPSBidWlsZGVy LmdlbmVyYXRlQ2hpbGREb2MocGFyZW50KTsNCj4+Pj4+DQo+Pj4+PkRvY3VtZW50IGRvYyA9IGJ1 aWxkZXIubWFwVG9Eb2N1bWVudChjaGlsZCk7DQo+Pj4+Pg0KPj4+Pj5saXN0LmFkZChkb2MpOw0K Pj4+Pj4NCj4+Pj4+Y291bnQrKzsNCj4+Pj4+DQo+Pj4+Pm51bWJlck9mUHJvcGVydGllcy0tOw0K Pj4+Pj4NCj4+Pj4+fQ0KPj4+Pj4NCj4+Pj4+fQ0KPj4+Pj4NCj4+Pj4+fQ0KPj4+Pj4NCj4+Pj4+ RG9jdW1lbnQgcGFyID0gYnVpbGRlci5tYXBUb0RvY3VtZW50KHBhcmVudCk7DQo+Pj4+Pg0KPj4+ Pj5saXN0LmFkZChwYXIpOw0KPj4+Pj4NCj4+Pj4+d3JpdGVyLmFkZERvY3VtZW50cyhsaXN0KTsN Cj4+Pj4+DQo+Pj4+Pn0NCj4+Pj4+DQo+Pj4+Pg0KPj4+Pj5XaGljaCB3b3JrcyBwcmV0dHkgd2Vs bCB1bnRpbCBJIHNjYWxlIGl0IHVwIHVzaW5nIHNldmVyYWwgaW5zdGFuY2VzIG9mDQo+Pj4+PnRo aXMuICBXaGVuIHRoZSBuZXh0Q2hpbGREb2MgZG9jdW1lbnQgcmV0cmlldmVkIGdldHMgdG8gaWQg NTg3NDkwMiB0aGUNCj4+Pj4+bGluZSBpbiBUb1BhcmVudEJsb2NrSm9pblF1ZXJ5DQo+Pj4+Pg0K Pj4+Pj4NCj4+Pj4+ICAgICAgICBwYXJlbnREb2MgPSBwYXJlbnRCaXRzLm5leHRTZXRCaXQobmV4 dENoaWxkRG9jKTsNCj4+Pj4+DQo+Pj4+Pg0KPj4+Pj5HaXZlcyB0aGUgdmFsdWUgIDIxNDc0ODM2 NDcgdG8gdGhlIHBhcmVudERvYywgd2hpY2ggaXMgbm90IGEgZG9jdW1lbnQNCj4+Pj4+aWQNCj4+ Pj4+aW4gbXkgaW5kZXggaWYgSSB1bmRlcnN0YW5kIGx1Y2VuZSBhbmQgTHVrZSBjb3JyZWN0bHkg c2luY2UgbXkgaW5kZXgNCj4+Pj4+aGFzDQo+Pj4+Pm9ubHkgNDI3MTY4NzcgZG9jdW1lbnRzLg0K Pj4+Pj4NCj4+Pj4+Q2FuIHNvbWVvbmUgc2hlZCBzb21lIGxpZ2h0IG9uIHRoaXMgZXhjZXB0aW9u Pw0KPj4+Pj4NCj4+Pj4+DQo+Pj4+PlRoYW5rcywNCj4+Pj4+DQo+Pj4+PlNjb3R0IEJhdWVyDQo+ Pj4+Pg0KPj4+Pj4NCj4+Pj4+DQo+Pj4+Pg0KPj4+Pg0KPj4+Pg0KPj4+Pi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K Pj4+PlRvIHVuc3Vic2NyaWJlLCBlLW1haWw6IGphdmEtdXNlci11bnN1YnNjcmliZUBsdWNlbmUu YXBhY2hlLm9yZw0KPj4+PkZvciBhZGRpdGlvbmFsIGNvbW1hbmRzLCBlLW1haWw6IGphdmEtdXNl ci1oZWxwQGx1Y2VuZS5hcGFjaGUub3JnDQo+Pj4+DQo+Pj4NCj4+DQo+DQoNCg== DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NClRvIHVuc3Vic2NyaWJlLCBlLW1haWw6IGphdmEtdXNlci11 bnN1YnNjcmliZUBsdWNlbmUuYXBhY2hlLm9yZw0KRm9yIGFkZGl0aW9uYWwgY29tbWFuZHMs IGUtbWFpbDogamF2YS11c2VyLWhlbHBAbHVjZW5lLmFwYWNoZS5vcmcNCg0K