Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iBJr2-0003E8-GN for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Sep 2019 14:25:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1iBJr1-0002sT-Bh for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Sep 2019 14:25:47 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iBJr0-0002sJ-W5 for pgsql-hackers@lists.postgresql.org; Fri, 20 Sep 2019 14:25:47 +0000 Received: from courriel.mines-paristech.fr ([77.158.173.149] helo=antispam-1.ensmp.fr) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iBJqx-0006SA-7U for pgsql-hackers@lists.postgresql.org; Fri, 20 Sep 2019 14:25:46 +0000 Received: from smtp-5.mines-paristech.fr (smtp.mines-paristech.fr [77.158.173.146]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by antispam-1.ensmp.fr (antispam.mines-paristech.fr) with ESMTPS id 4C5F356062; Fri, 20 Sep 2019 16:25:41 +0200 (CEST) Received: from lancre-wln.cri.ensmp.fr (sfr-14.cri.mines-paristech.fr [77.158.180.238]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp-5.mines-paristech.fr (Postfix) with ESMTPSA id 19B402012B; Fri, 20 Sep 2019 16:25:41 +0200 (CEST) Date: Fri, 20 Sep 2019 16:25:40 +0200 (CEST) From: Fabien COELHO X-X-Sender: fabien@lancre To: vignesh C cc: Alvaro Herrera , Kyotaro Horiguchi , daniel@manitou-mail.org, peter.eisentraut@2ndquadrant.com, iwata.aya@jp.fujitsu.com, PostgreSQL Developers Subject: Re: psql - add SHOW_ALL_RESULTS option In-Reply-To: Message-ID: References: <20190912193111.GA4044@alvherre.pgsql> User-Agent: Alpine 2.21 (DEB 202 2017-01-01) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="8323329-2015243843-1568989541=:3955" X-CLAMAV-SCAN: ok X-VRSPAM-SCORE: -100 X-VRSPAM-STATE: legit X-VRSPAM-CAUSE: gggruggvucftvghtrhhoucdtuddrgedufedrvddvgdejhecutefuodetggdotefrucfrrhhofhhilhgvmecuggftfghnshhusghstghrihgsvgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhepfffhvffujgfkfhgfgggtsehmtderredtredvnecuhfhrohhmpefhrggsihgvnhcuvefqgffnjffquceotghovghlhhhosegtrhhirdgvnhhsmhhprdhfrheqnecukfhppeejjedrudehkedrudektddrvdefkeenucfrrghrrghmpehmohguvgepshhmthhpohhuth X-VRSPAM-EXTCAUSE: mhhouggvpehsmhhtphhouhht List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323329-2015243843-1568989541=:3955 Content-Type: text/plain; charset=US-ASCII; format=flowed > The below addition can be removed, it seems to be duplicate: Indeed. I'm unsure how this got into the patch, probably some rebase mix-up. Attached v7 removes the duplicates. -- Fabien. --8323329-2015243843-1568989541=:3955 Content-Type: text/x-diff; name=psql-always-show-results-7.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=psql-always-show-results-7.patch ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVj dGVkL3BnX3N0YXRfc3RhdGVtZW50cy5vdXQgYi9jb250cmliL3BnX3N0YXRf c3RhdGVtZW50cy9leHBlY3RlZC9wZ19zdGF0X3N0YXRlbWVudHMub3V0DQpp bmRleCA2Nzg3ZWMxZWZkLi5kZTU5YTVjZjY1IDEwMDY0NA0KLS0tIGEvY29u dHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvcGdfc3RhdF9zdGF0 ZW1lbnRzLm91dA0KKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMv ZXhwZWN0ZWQvcGdfc3RhdF9zdGF0ZW1lbnRzLm91dA0KQEAgLTQ5LDE3ICs0 OSw0MiBAQCBCRUdJTiBcOw0KIFNFTEVDVCAyLjAgQVMgImZsb2F0IiBcOw0K IFNFTEVDVCAnd29ybGQnIEFTICJ0ZXh0IiBcOw0KIENPTU1JVDsNCisgZmxv YXQgDQorLS0tLS0tLQ0KKyAgIDIuMA0KKygxIHJvdykNCisNCisgdGV4dCAg DQorLS0tLS0tLQ0KKyB3b3JsZA0KKygxIHJvdykNCisNCiAtLSBjb21wb3Vu ZCB3aXRoIGVtcHR5IHN0YXRlbWVudHMgYW5kIHNwdXJpb3VzIGxlYWRpbmcg c3BhY2luZw0KLVw7XDsgICBTRUxFQ1QgMyArIDMgXDtcO1w7ICAgU0VMRUNU ICcgJyB8fCAnICEnIFw7XDsgICBTRUxFQ1QgMSArIDQgXDs7DQotID9jb2x1 bW4/IA0KLS0tLS0tLS0tLS0NCi0gICAgICAgIDUNCitcO1w7ICAgU0VMRUNU IDMgKyAzIEFTICIrIiBcO1w7XDsgICBTRUxFQ1QgJyAnIHx8ICcgIScgQVMg Inx8IiBcO1w7ICAgU0VMRUNUIDEgKyA0IEFTICIrIiBcOzsNCisgKyANCist LS0NCisgNg0KKygxIHJvdykNCisNCisgfHwgIA0KKy0tLS0tDQorICAgIQ0K KygxIHJvdykNCisNCisgKyANCistLS0NCisgNQ0KICgxIHJvdykNCiANCiAt LSBub24gOy10ZXJtaW5hdGVkIHN0YXRlbWVudHMNCiBTRUxFQ1QgMSArIDEg KyAxIEFTICJhZGQiIFxnc2V0DQogU0VMRUNUIDphZGQgKyAxICsgMSBBUyAi YWRkIiBcOw0KIFNFTEVDVCA6YWRkICsgMSArIDEgQVMgImFkZCIgXGdzZXQN CisgYWRkIA0KKy0tLS0tDQorICAgNQ0KKygxIHJvdykNCisNCiAtLSBzZXQg b3BlcmF0b3INCiBTRUxFQ1QgMSBBUyBpIFVOSU9OIFNFTEVDVCAyIE9SREVS IEJZIGk7DQogIGkgDQpAQCAtMTAyLDEyICsxMjcsMTIgQEAgU0VMRUNUIHF1 ZXJ5LCBjYWxscywgcm93cyBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRF UiBCWSBxdWVyeSBDT0xMQVRFICJDIjsNCiAgU0VMRUNUICQxICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8ICAgICA0IHwgICAg NA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgK3wgICAgICAgfCANCiAgICBBUyAidGV4dCIgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwgDQotIFNF TEVDVCAkMSArICQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgMiB8ICAgIDINCiAgU0VMRUNUICQxICsgJDIgKyAkMyBBUyAi YWRkIiAgICAgICAgICAgICAgICAgICAgICB8ICAgICAzIHwgICAgMw0KKyBT RUxFQ1QgJDEgKyAkMiBBUyAiKyIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgIDIgfCAgICAyDQogIFNFTEVDVCAkMSBBUyAiZmxvYXQiICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMSB8ICAgIDENCiAg U0VMRUNUICQxIEFTICJpbnQiICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAyIHwgICAgMg0KICBTRUxFQ1QgJDEgQVMgaSBVTklPTiBT RUxFQ1QgJDIgT1JERVIgQlkgaSAgICAgICAgIHwgICAgIDEgfCAgICAyDQot IFNFTEVDVCAkMSB8fCAkMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgMSB8ICAgIDENCisgU0VMRUNUICQxIHx8ICQyIEFTICJ8 fCIgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAxIHwgICAgMQ0K ICBTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkgICAgICAgICAg ICAgICAgIHwgICAgIDEgfCAgICAxDQogIFdJVEggdChmKSBBUyAoICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAgICAgMSB8ICAgIDIN CiAgICBWQUxVRVMgKCQxKSwgKCQyKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICt8ICAgICAgIHwgDQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19z dGF0X3N0YXRlbWVudHMvc3FsL3BnX3N0YXRfc3RhdGVtZW50cy5zcWwgYi9j b250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvcGdfc3RhdF9zdGF0ZW1l bnRzLnNxbA0KaW5kZXggOGI1MjcwNzBkNC4uZWEzYTMxMTc2ZSAxMDA2NDQN Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC9wZ19zdGF0 X3N0YXRlbWVudHMuc3FsDQorKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVt ZW50cy9zcWwvcGdfc3RhdF9zdGF0ZW1lbnRzLnNxbA0KQEAgLTI3LDcgKzI3 LDcgQEAgU0VMRUNUICd3b3JsZCcgQVMgInRleHQiIFw7DQogQ09NTUlUOw0K IA0KIC0tIGNvbXBvdW5kIHdpdGggZW1wdHkgc3RhdGVtZW50cyBhbmQgc3B1 cmlvdXMgbGVhZGluZyBzcGFjaW5nDQotXDtcOyAgIFNFTEVDVCAzICsgMyBc O1w7XDsgICBTRUxFQ1QgJyAnIHx8ICcgIScgXDtcOyAgIFNFTEVDVCAxICsg NCBcOzsNCitcO1w7ICAgU0VMRUNUIDMgKyAzIEFTICIrIiBcO1w7XDsgICBT RUxFQ1QgJyAnIHx8ICcgIScgQVMgInx8IiBcO1w7ICAgU0VMRUNUIDEgKyA0 IEFTICIrIiBcOzsNCiANCiAtLSBub24gOy10ZXJtaW5hdGVkIHN0YXRlbWVu dHMNCiBTRUxFQ1QgMSArIDEgKyAxIEFTICJhZGQiIFxnc2V0DQpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sIGIvZG9jL3Ny Yy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sDQppbmRleCA3Nzg5ZmM2MTc3Li40 ZTZhYjVhMGE1IDEwMDY0NA0KLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wc3Fs LXJlZi5zZ21sDQorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNn bWwNCkBAIC0xMjcsMTggKzEyNywxMSBAQCBlY2hvICdceCBcXCBTRUxFQ1Qg KiBGUk9NIGZvbzsnIHwgcHNxbA0KICAgICAgICBjb21tYW5kcyBpbmNsdWRl ZCBpbiB0aGUgc3RyaW5nIHRvIGRpdmlkZSBpdCBpbnRvIG11bHRpcGxlDQog ICAgICAgIHRyYW5zYWN0aW9ucy4gIChTZWUgPHhyZWYgbGlua2VuZD0icHJv dG9jb2wtZmxvdy1tdWx0aS1zdGF0ZW1lbnQiLz4NCiAgICAgICAgZm9yIG1v cmUgZGV0YWlscyBhYm91dCBob3cgdGhlIHNlcnZlciBoYW5kbGVzIG11bHRp LXF1ZXJ5IHN0cmluZ3MuKQ0KLSAgICAgICBBbHNvLCA8YXBwbGljYXRpb24+ cHNxbDwvYXBwbGljYXRpb24+IG9ubHkgcHJpbnRzIHRoZQ0KLSAgICAgICBy ZXN1bHQgb2YgdGhlIGxhc3QgPGFjcm9ueW0+U1FMPC9hY3JvbnltPiBjb21t YW5kIGluIHRoZSBzdHJpbmcuDQotICAgICAgIFRoaXMgaXMgZGlmZmVyZW50 IGZyb20gdGhlIGJlaGF2aW9yIHdoZW4gdGhlIHNhbWUgc3RyaW5nIGlzIHJl YWQgZnJvbQ0KLSAgICAgICBhIGZpbGUgb3IgZmVkIHRvIDxhcHBsaWNhdGlv bj5wc3FsPC9hcHBsaWNhdGlvbj4ncyBzdGFuZGFyZCBpbnB1dCwNCi0gICAg ICAgYmVjYXVzZSB0aGVuIDxhcHBsaWNhdGlvbj5wc3FsPC9hcHBsaWNhdGlv bj4gc2VuZHMNCi0gICAgICAgZWFjaCA8YWNyb255bT5TUUw8L2Fjcm9ueW0+ IGNvbW1hbmQgc2VwYXJhdGVseS4NCiAgICAgICA8L3BhcmE+DQogICAgICAg PHBhcmE+DQotICAgICAgIEJlY2F1c2Ugb2YgdGhpcyBiZWhhdmlvciwgcHV0 dGluZyBtb3JlIHRoYW4gb25lIFNRTCBjb21tYW5kIGluIGENCi0gICAgICAg c2luZ2xlIDxvcHRpb24+LWM8L29wdGlvbj4gc3RyaW5nIG9mdGVuIGhhcyB1 bmV4cGVjdGVkIHJlc3VsdHMuDQotICAgICAgIEl0J3MgYmV0dGVyIHRvIHVz ZSByZXBlYXRlZCA8b3B0aW9uPi1jPC9vcHRpb24+IGNvbW1hbmRzIG9yIGZl ZWQNCi0gICAgICAgbXVsdGlwbGUgY29tbWFuZHMgdG8gPGFwcGxpY2F0aW9u PnBzcWw8L2FwcGxpY2F0aW9uPidzIHN0YW5kYXJkIGlucHV0LA0KKyAgICAg ICBJZiBoYXZpbmcgc2V2ZXJhbCBjb21tYW5kcyBleGVjdXRlZCBpbiBvbmUg dHJhbnNhY3Rpb24gaXMgbm90IGRlc2lyZWQsIA0KKyAgICAgICB1c2UgcmVw ZWF0ZWQgPG9wdGlvbj4tYzwvb3B0aW9uPiBjb21tYW5kcyBvciBmZWVkIG11 bHRpcGxlIGNvbW1hbmRzIHRvDQorICAgICAgIDxhcHBsaWNhdGlvbj5wc3Fs PC9hcHBsaWNhdGlvbj4ncyBzdGFuZGFyZCBpbnB1dCwNCiAgICAgICAgZWl0 aGVyIHVzaW5nIDxhcHBsaWNhdGlvbj5lY2hvPC9hcHBsaWNhdGlvbj4gYXMg aWxsdXN0cmF0ZWQgYWJvdmUsIG9yDQogICAgICAgIHZpYSBhIHNoZWxsIGhl cmUtZG9jdW1lbnQsIGZvciBleGFtcGxlOg0KIDxwcm9ncmFtbGlzdGluZz4N CkBAIC0zMzU1LDEwICszMzQ4LDggQEAgc2VsZWN0IDFcOyBzZWxlY3QgMlw7 IHNlbGVjdCAzOw0KICAgICAgICAgY29tbWFuZHMgaW5jbHVkZWQgaW4gdGhl IHN0cmluZyB0byBkaXZpZGUgaXQgaW50byBtdWx0aXBsZQ0KICAgICAgICAg dHJhbnNhY3Rpb25zLiAgKFNlZSA8eHJlZiBsaW5rZW5kPSJwcm90b2NvbC1m bG93LW11bHRpLXN0YXRlbWVudCIvPg0KICAgICAgICAgZm9yIG1vcmUgZGV0 YWlscyBhYm91dCBob3cgdGhlIHNlcnZlciBoYW5kbGVzIG11bHRpLXF1ZXJ5 IHN0cmluZ3MuKQ0KLSAgICAgICAgPGFwcGxpY2F0aW9uPnBzcWw8L2FwcGxp Y2F0aW9uPiBwcmludHMgb25seSB0aGUgbGFzdCBxdWVyeSByZXN1bHQNCi0g ICAgICAgIGl0IHJlY2VpdmVzIGZvciBlYWNoIHJlcXVlc3Q7IGluIHRoaXMg ZXhhbXBsZSwgYWx0aG91Z2ggYWxsDQotICAgICAgICB0aHJlZSA8Y29tbWFu ZD5TRUxFQ1Q8L2NvbW1hbmQ+cyBhcmUgaW5kZWVkIGV4ZWN1dGVkLCA8YXBw bGljYXRpb24+cHNxbDwvYXBwbGljYXRpb24+DQotICAgICAgICBvbmx5IHBy aW50cyB0aGUgPGxpdGVyYWw+MzwvbGl0ZXJhbD4uDQorICAgICAgICA8YXBw bGljYXRpb24+cHNxbDwvYXBwbGljYXRpb24+IHByaW50cyBhbGwgcmVzdWx0 cyBpdCByZWNlaXZlcywgb25lDQorICAgICAgICBhZnRlciB0aGUgb3RoZXIu DQogICAgICAgICA8L3BhcmE+DQogICAgICAgICA8L2xpc3RpdGVtPg0KICAg ICAgIDwvdmFybGlzdGVudHJ5Pg0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNx bC9jb21tb24uYyBiL3NyYy9iaW4vcHNxbC9jb21tb24uYw0KaW5kZXggNGIy Njc5MzYwZi4uZGI2ZDAzMTEzMyAxMDA2NDQNCi0tLSBhL3NyYy9iaW4vcHNx bC9jb21tb24uYw0KKysrIGIvc3JjL2Jpbi9wc3FsL2NvbW1vbi5jDQpAQCAt NDg2LDYgKzQ4NiwxOSBAQCBSZXNldENhbmNlbENvbm4odm9pZCkNCiAjZW5k aWYNCiB9DQogDQorLyoNCisgKiBTaG93IGVycm9yIG1lc3NhZ2UgZnJvbSBy ZXN1bHQsIGlmIGFueSwgYW5kIGNoZWNrIGNvbm5lY3Rpb24gaW4gcGFzc2lu Zy4NCisgKi8NCitzdGF0aWMgdm9pZA0KK1Nob3dFcnJvck1lc3NhZ2UoY29u c3QgUEdyZXN1bHQgKnJlc3VsdCkNCit7DQorCWNvbnN0IGNoYXIgKmVycm9y ID0gUFFlcnJvck1lc3NhZ2UocHNldC5kYik7DQorDQorCWlmIChzdHJsZW4o ZXJyb3IpKQ0KKwkJcGdfbG9nX2luZm8oIiVzIiwgZXJyb3IpOw0KKw0KKwlD aGVja0Nvbm5lY3Rpb24oKTsNCit9DQogDQogLyoNCiAgKiBBY2NlcHRSZXN1 bHQNCkBAIC00OTYsNyArNTA5LDcgQEAgUmVzZXRDYW5jZWxDb25uKHZvaWQp DQogICogUmV0dXJucyB0cnVlIGZvciB2YWxpZCByZXN1bHQsIGZhbHNlIGZv ciBlcnJvciBzdGF0ZS4NCiAgKi8NCiBzdGF0aWMgYm9vbA0KLUFjY2VwdFJl c3VsdChjb25zdCBQR3Jlc3VsdCAqcmVzdWx0KQ0KK0FjY2VwdFJlc3VsdChj b25zdCBQR3Jlc3VsdCAqcmVzdWx0LCBib29sIHNob3dfZXJyb3IpDQogew0K IAlib29sCQlPSzsNCiANCkBAIC01MjcsMTUgKzU0MCw4IEBAIEFjY2VwdFJl c3VsdChjb25zdCBQR3Jlc3VsdCAqcmVzdWx0KQ0KIAkJCQlicmVhazsNCiAJ CX0NCiANCi0JaWYgKCFPSykNCi0Jew0KLQkJY29uc3QgY2hhciAqZXJyb3Ig PSBQUWVycm9yTWVzc2FnZShwc2V0LmRiKTsNCi0NCi0JCWlmIChzdHJsZW4o ZXJyb3IpKQ0KLQkJCXBnX2xvZ19pbmZvKCIlcyIsIGVycm9yKTsNCi0NCi0J CUNoZWNrQ29ubmVjdGlvbigpOw0KLQl9DQorCWlmICghT0sgJiYgc2hvd19l cnJvcikNCisJCVNob3dFcnJvck1lc3NhZ2UocmVzdWx0KTsNCiANCiAJcmV0 dXJuIE9LOw0KIH0NCkBAIC03MTUsNyArNzIxLDcgQEAgUFNRTGV4ZWMoY29u c3QgY2hhciAqcXVlcnkpDQogDQogCVJlc2V0Q2FuY2VsQ29ubigpOw0KIA0K LQlpZiAoIUFjY2VwdFJlc3VsdChyZXMpKQ0KKwlpZiAoIUFjY2VwdFJlc3Vs dChyZXMsIHRydWUpKQ0KIAl7DQogCQlDbGVhck9yU2F2ZVJlc3VsdChyZXMp Ow0KIAkJcmVzID0gTlVMTDsNCkBAIC03NTcsNyArNzYzLDcgQEAgUFNRTGV4 ZWNXYXRjaChjb25zdCBjaGFyICpxdWVyeSwgY29uc3QgcHJpbnRRdWVyeU9w dCAqb3B0KQ0KIA0KIAlSZXNldENhbmNlbENvbm4oKTsNCiANCi0JaWYgKCFB Y2NlcHRSZXN1bHQocmVzKSkNCisJaWYgKCFBY2NlcHRSZXN1bHQocmVzLCB0 cnVlKSkNCiAJew0KIAkJQ2xlYXJPclNhdmVSZXN1bHQocmVzKTsNCiAJCXJl dHVybiAwOw0KQEAgLTEwMTMsMTk5ICsxMDE5LDExNCBAQCBsb29wX2V4aXQ6 DQogCXJldHVybiBzdWNjZXNzOw0KIH0NCiANCi0NCiAvKg0KLSAqIFByb2Nl c3NSZXN1bHQ6IHV0aWxpdHkgZnVuY3Rpb24gZm9yIHVzZSBieSBTZW5kUXVl cnkoKSBvbmx5DQotICoNCi0gKiBXaGVuIG91ciBjb21tYW5kIHN0cmluZyBj b250YWluZWQgYSBDT1BZIEZST00gU1RESU4gb3IgQ09QWSBUTyBTVERPVVQs DQotICogUFFleGVjKCkgaGFzIHN0b3BwZWQgYXQgdGhlIFBHcmVzdWx0IGFz c29jaWF0ZWQgd2l0aCB0aGUgZmlyc3Qgc3VjaA0KLSAqIGNvbW1hbmQuICBJ biB0aGF0IGV2ZW50LCB3ZSdsbCBtYXJzaGFsIGRhdGEgZm9yIHRoZSBDT1BZ IGFuZCB0aGVuIGN5Y2xlDQotICogdGhyb3VnaCBhbnkgc3Vic2VxdWVudCBQ R3Jlc3VsdCBvYmplY3RzLg0KLSAqDQotICogV2hlbiB0aGUgY29tbWFuZCBz dHJpbmcgY29udGFpbmVkIG5vIHN1Y2ggQ09QWSBjb21tYW5kLCB0aGlzIGZ1 bmN0aW9uDQotICogZGVnZW5lcmF0ZXMgdG8gYW4gQWNjZXB0UmVzdWx0KCkg Y2FsbC4NCi0gKg0KLSAqIENoYW5nZXMgaXRzIGFyZ3VtZW50IHRvIHBvaW50 IHRvIHRoZSBsYXN0IFBHcmVzdWx0IG9mIHRoZSBjb21tYW5kIHN0cmluZywN Ci0gKiBvciBOVUxMIGlmIHRoYXQgcmVzdWx0IHdhcyBmb3IgYSBDT1BZIFRP IFNURE9VVC4gIChSZXR1cm5pbmcgTlVMTCBwcmV2ZW50cw0KLSAqIHRoZSBj b21tYW5kIHN0YXR1cyBmcm9tIGJlaW5nIHByaW50ZWQsIHdoaWNoIHdlIHdh bnQgaW4gdGhhdCBjYXNlIHNvIHRoYXQNCi0gKiB0aGUgc3RhdHVzIGxpbmUg ZG9lc24ndCBnZXQgdGFrZW4gYXMgcGFydCBvZiB0aGUgQ09QWSBkYXRhLikN Ci0gKg0KLSAqIFJldHVybnMgdHJ1ZSBvbiBjb21wbGV0ZSBzdWNjZXNzLCBm YWxzZSBvdGhlcndpc2UuICBQb3NzaWJsZSBmYWlsdXJlIG1vZGVzDQotICog aW5jbHVkZSBwdXJlbHkgY2xpZW50LXNpZGUgcHJvYmxlbXM7IGNoZWNrIHRo ZSB0cmFuc2FjdGlvbiBzdGF0dXMgZm9yIHRoZQ0KLSAqIHNlcnZlci1zaWRl IG9waW5pb24uDQorICogTWFyc2hhbCB0aGUgQ09QWSBkYXRhLiAgRWl0aGVy IHN1YnJvdXRpbmUgd2lsbCBnZXQgdGhlDQorICogY29ubmVjdGlvbiBvdXQg b2YgaXRzIENPUFkgc3RhdGUsIHRoZW4gY2FsbCBQUXJlc3VsdFN0YXR1cygp DQorICogb25jZSBhbmQgcmVwb3J0IGFueSBlcnJvci4gUmV0dXJuIHdoZXRo ZXIgYWxsIHdhcyBvay4NCisgKg0KKyAqIEZvciBDT1BZIE9VVCwgZGlyZWN0 IHRoZSBvdXRwdXQgdG8gcHNldC5jb3B5U3RyZWFtIGlmIGl0J3Mgc2V0LA0K KyAqIG90aGVyd2lzZSB0byBwc2V0LmdmbmFtZSBpZiBpdCdzIHNldCwgb3Ro ZXJ3aXNlIHRvIHF1ZXJ5Rm91dC4NCisgKiBGb3IgQ09QWSBJTiwgdXNlIHBz ZXQuY29weVN0cmVhbSBhcyBkYXRhIHNvdXJjZSBpZiBpdCdzIHNldCwNCisg KiBvdGhlcndpc2UgY3VyX2NtZF9zb3VyY2UuDQorICoNCisgKiBVcGRhdGUg cmVzdWx0IGlmIGZ1cnRoZXIgcHJvY2Vzc2luZyBpcyBuZWNlc3NhcnksIG9y IE5VTEwgb3RoZXJ3aXNlLg0KKyAqIFJldHVybiBhIHJlc3VsdCB3aGVuIHF1 ZXJ5Rm91dCBjYW4gc2FmZWx5IG91dHB1dCBhIHJlc3VsdCBzdGF0dXM6DQor ICogb24gQ09QWSBJTiwgb3Igb24gQ09QWSBPVVQgaWYgd3JpdHRlbiB0byBz b21ldGhpbmcgb3RoZXIgaGFuIHBzZXQucXVlcnlGb3V0Lg0KKyAqIFJldHVy bmluZyBOVUxMIHByZXZlbnRzIHRoZSBjb21tYW5kIHN0YXR1cyBmcm9tIGJl aW5nIHByaW50ZWQsIHdoaWNoDQorICogd2Ugd2FudCBpZiB0aGUgc3RhdHVz IGxpbmUgZG9lc24ndCBnZXQgdGFrZW4gYXMgcGFydCBvZiB0aGUgQ09QWSBk YXRhLg0KICAqLw0KIHN0YXRpYyBib29sDQotUHJvY2Vzc1Jlc3VsdChQR3Jl c3VsdCAqKnJlc3VsdHMpDQorSGFuZGxlQ29weVJlc3VsdChQR3Jlc3VsdCAq KnJlc3VsdCkNCiB7DQotCWJvb2wJCXN1Y2Nlc3MgPSB0cnVlOw0KLQlib29s CQlmaXJzdF9jeWNsZSA9IHRydWU7DQorCWJvb2wJCXN1Y2Nlc3M7DQorCUZJ TEUJICAgKmNvcHlzdHJlYW07DQorCVBHcmVzdWx0ICAgKmNvcHlfcmVzdWx0 Ow0KKwlFeGVjU3RhdHVzVHlwZSByZXN1bHRfc3RhdHVzID0gUFFyZXN1bHRT dGF0dXMoKnJlc3VsdCk7DQogDQotCWZvciAoOzspDQorCUFzc2VydChyZXN1 bHRfc3RhdHVzID09IFBHUkVTX0NPUFlfT1VUIHx8DQorCQkgICByZXN1bHRf c3RhdHVzID09IFBHUkVTX0NPUFlfSU4pOw0KKw0KKwlTZXRDYW5jZWxDb25u KCk7DQorCWlmIChyZXN1bHRfc3RhdHVzID09IFBHUkVTX0NPUFlfT1VUKQ0K IAl7DQotCQlFeGVjU3RhdHVzVHlwZSByZXN1bHRfc3RhdHVzOw0KLQkJYm9v bAkJaXNfY29weTsNCi0JCVBHcmVzdWx0ICAgKm5leHRfcmVzdWx0Ow0KKwkJ Ym9vbAkJbmVlZF9jbG9zZSA9IGZhbHNlOw0KKwkJYm9vbAkJaXNfcGlwZSA9 IGZhbHNlOw0KIA0KLQkJaWYgKCFBY2NlcHRSZXN1bHQoKnJlc3VsdHMpKQ0K KwkJaWYgKHBzZXQuY29weVN0cmVhbSkNCiAJCXsNCi0JCQkvKg0KLQkJCSAq IEZhaWx1cmUgYXQgdGhpcyBwb2ludCBpcyBhbHdheXMgYSBzZXJ2ZXItc2lk ZSBmYWlsdXJlIG9yIGENCi0JCQkgKiBmYWlsdXJlIHRvIHN1Ym1pdCB0aGUg Y29tbWFuZCBzdHJpbmcuICBFaXRoZXIgd2F5LCB3ZSdyZQ0KLQkJCSAqIGZp bmlzaGVkIHdpdGggdGhpcyBjb21tYW5kIHN0cmluZy4NCi0JCQkgKi8NCi0J CQlzdWNjZXNzID0gZmFsc2U7DQotCQkJYnJlYWs7DQorCQkJLyogaW52b2tl ZCBieSBcY29weSAqLw0KKwkJCWNvcHlzdHJlYW0gPSBwc2V0LmNvcHlTdHJl YW07DQogCQl9DQotDQotCQlyZXN1bHRfc3RhdHVzID0gUFFyZXN1bHRTdGF0 dXMoKnJlc3VsdHMpOw0KLQkJc3dpdGNoIChyZXN1bHRfc3RhdHVzKQ0KKwkJ ZWxzZSBpZiAocHNldC5nZm5hbWUpDQogCQl7DQotCQkJY2FzZSBQR1JFU19F TVBUWV9RVUVSWToNCi0JCQljYXNlIFBHUkVTX0NPTU1BTkRfT0s6DQotCQkJ Y2FzZSBQR1JFU19UVVBMRVNfT0s6DQotCQkJCWlzX2NvcHkgPSBmYWxzZTsN Ci0JCQkJYnJlYWs7DQotDQotCQkJY2FzZSBQR1JFU19DT1BZX09VVDoNCi0J CQljYXNlIFBHUkVTX0NPUFlfSU46DQotCQkJCWlzX2NvcHkgPSB0cnVlOw0K LQkJCQlicmVhazsNCi0NCi0JCQlkZWZhdWx0Og0KLQkJCQkvKiBBY2NlcHRS ZXN1bHQoKSBzaG91bGQgaGF2ZSBjYXVnaHQgYW55dGhpbmcgZWxzZS4gKi8N Ci0JCQkJaXNfY29weSA9IGZhbHNlOw0KLQkJCQlwZ19sb2dfZXJyb3IoInVu ZXhwZWN0ZWQgUFFyZXN1bHRTdGF0dXM6ICVkIiwgcmVzdWx0X3N0YXR1cyk7 DQotCQkJCWJyZWFrOw0KLQkJfQ0KLQ0KLQkJaWYgKGlzX2NvcHkpDQotCQl7 DQotCQkJLyoNCi0JCQkgKiBNYXJzaGFsIHRoZSBDT1BZIGRhdGEuICBFaXRo ZXIgc3Vicm91dGluZSB3aWxsIGdldCB0aGUNCi0JCQkgKiBjb25uZWN0aW9u IG91dCBvZiBpdHMgQ09QWSBzdGF0ZSwgdGhlbiBjYWxsIFBRcmVzdWx0U3Rh dHVzKCkNCi0JCQkgKiBvbmNlIGFuZCByZXBvcnQgYW55IGVycm9yLg0KLQkJ CSAqDQotCQkJICogRm9yIENPUFkgT1VULCBkaXJlY3QgdGhlIG91dHB1dCB0 byBwc2V0LmNvcHlTdHJlYW0gaWYgaXQncyBzZXQsDQotCQkJICogb3RoZXJ3 aXNlIHRvIHBzZXQuZ2ZuYW1lIGlmIGl0J3Mgc2V0LCBvdGhlcndpc2UgdG8g cXVlcnlGb3V0Lg0KLQkJCSAqIEZvciBDT1BZIElOLCB1c2UgcHNldC5jb3B5 U3RyZWFtIGFzIGRhdGEgc291cmNlIGlmIGl0J3Mgc2V0LA0KLQkJCSAqIG90 aGVyd2lzZSBjdXJfY21kX3NvdXJjZS4NCi0JCQkgKi8NCi0JCQlGSUxFCSAg ICpjb3B5c3RyZWFtOw0KLQkJCVBHcmVzdWx0ICAgKmNvcHlfcmVzdWx0Ow0K LQ0KLQkJCVNldENhbmNlbENvbm4oKTsNCi0JCQlpZiAocmVzdWx0X3N0YXR1 cyA9PSBQR1JFU19DT1BZX09VVCkNCisJCQkvKiBpbnZva2VkIGJ5IFxnICov DQorCQkJaWYgKG9wZW5RdWVyeU91dHB1dEZpbGUocHNldC5nZm5hbWUsDQor CQkJCQkJCQkJJmNvcHlzdHJlYW0sICZpc19waXBlKSkNCiAJCQl7DQotCQkJ CWJvb2wJCW5lZWRfY2xvc2UgPSBmYWxzZTsNCi0JCQkJYm9vbAkJaXNfcGlw ZSA9IGZhbHNlOw0KLQ0KLQkJCQlpZiAocHNldC5jb3B5U3RyZWFtKQ0KLQkJ CQl7DQotCQkJCQkvKiBpbnZva2VkIGJ5IFxjb3B5ICovDQotCQkJCQljb3B5 c3RyZWFtID0gcHNldC5jb3B5U3RyZWFtOw0KLQkJCQl9DQotCQkJCWVsc2Ug aWYgKHBzZXQuZ2ZuYW1lKQ0KLQkJCQl7DQotCQkJCQkvKiBpbnZva2VkIGJ5 IFxnICovDQotCQkJCQlpZiAob3BlblF1ZXJ5T3V0cHV0RmlsZShwc2V0Lmdm bmFtZSwNCi0JCQkJCQkJCQkJCSZjb3B5c3RyZWFtLCAmaXNfcGlwZSkpDQot CQkJCQl7DQotCQkJCQkJbmVlZF9jbG9zZSA9IHRydWU7DQotCQkJCQkJaWYg KGlzX3BpcGUpDQotCQkJCQkJCWRpc2FibGVfc2lncGlwZV90cmFwKCk7DQot CQkJCQl9DQotCQkJCQllbHNlDQotCQkJCQkJY29weXN0cmVhbSA9IE5VTEw7 CS8qIGRpc2NhcmQgQ09QWSBkYXRhIGVudGlyZWx5ICovDQotCQkJCX0NCi0J CQkJZWxzZQ0KLQkJCQl7DQotCQkJCQkvKiBmYWxsIGJhY2sgdG8gdGhlIGdl bmVyaWMgcXVlcnkgb3V0cHV0IHN0cmVhbSAqLw0KLQkJCQkJY29weXN0cmVh bSA9IHBzZXQucXVlcnlGb3V0Ow0KLQkJCQl9DQotDQotCQkJCXN1Y2Nlc3Mg PSBoYW5kbGVDb3B5T3V0KHBzZXQuZGIsDQotCQkJCQkJCQkJCWNvcHlzdHJl YW0sDQotCQkJCQkJCQkJCSZjb3B5X3Jlc3VsdCkNCi0JCQkJCSYmIHN1Y2Nl c3MNCi0JCQkJCSYmIChjb3B5c3RyZWFtICE9IE5VTEwpOw0KLQ0KLQkJCQkv Kg0KLQkJCQkgKiBTdXBwcmVzcyBzdGF0dXMgcHJpbnRpbmcgaWYgdGhlIHJl cG9ydCB3b3VsZCBnbyB0byB0aGUgc2FtZQ0KLQkJCQkgKiBwbGFjZSBhcyB0 aGUgQ09QWSBkYXRhIGp1c3Qgd2VudC4gIE5vdGUgdGhpcyBkb2Vzbid0DQot CQkJCSAqIHByZXZlbnQgZXJyb3IgcmVwb3J0aW5nLCBzaW5jZSBoYW5kbGVD b3B5T3V0IGRpZCB0aGF0Lg0KLQkJCQkgKi8NCi0JCQkJaWYgKGNvcHlzdHJl YW0gPT0gcHNldC5xdWVyeUZvdXQpDQotCQkJCXsNCi0JCQkJCVBRY2xlYXIo Y29weV9yZXN1bHQpOw0KLQkJCQkJY29weV9yZXN1bHQgPSBOVUxMOw0KLQkJ CQl9DQotDQotCQkJCWlmIChuZWVkX2Nsb3NlKQ0KLQkJCQl7DQotCQkJCQkv KiBjbG9zZSBcZyBhcmd1bWVudCBmaWxlL3BpcGUgKi8NCi0JCQkJCWlmIChp c19waXBlKQ0KLQkJCQkJew0KLQkJCQkJCXBjbG9zZShjb3B5c3RyZWFtKTsN Ci0JCQkJCQlyZXN0b3JlX3NpZ3BpcGVfdHJhcCgpOw0KLQkJCQkJfQ0KLQkJ CQkJZWxzZQ0KLQkJCQkJew0KLQkJCQkJCWZjbG9zZShjb3B5c3RyZWFtKTsN Ci0JCQkJCX0NCi0JCQkJfQ0KKwkJCQluZWVkX2Nsb3NlID0gdHJ1ZTsNCisJ CQkJaWYgKGlzX3BpcGUpDQorCQkJCQlkaXNhYmxlX3NpZ3BpcGVfdHJhcCgp Ow0KIAkJCX0NCiAJCQllbHNlDQotCQkJew0KLQkJCQkvKiBDT1BZIElOICov DQotCQkJCWNvcHlzdHJlYW0gPSBwc2V0LmNvcHlTdHJlYW0gPyBwc2V0LmNv cHlTdHJlYW0gOiBwc2V0LmN1cl9jbWRfc291cmNlOw0KLQkJCQlzdWNjZXNz ID0gaGFuZGxlQ29weUluKHBzZXQuZGIsDQotCQkJCQkJCQkJICAgY29weXN0 cmVhbSwNCi0JCQkJCQkJCQkgICBQUWJpbmFyeVR1cGxlcygqcmVzdWx0cyks DQotCQkJCQkJCQkJICAgJmNvcHlfcmVzdWx0KSAmJiBzdWNjZXNzOw0KLQkJ CX0NCi0JCQlSZXNldENhbmNlbENvbm4oKTsNCi0NCi0JCQkvKg0KLQkJCSAq IFJlcGxhY2UgdGhlIFBHUkVTX0NPUFlfT1VUL0lOIHJlc3VsdCB3aXRoIENP UFkgY29tbWFuZCdzIGV4aXQNCi0JCQkgKiBzdGF0dXMsIG9yIHdpdGggTlVM TCBpZiB3ZSB3YW50IHRvIHN1cHByZXNzIHByaW50aW5nIGFueXRoaW5nLg0K LQkJCSAqLw0KLQkJCVBRY2xlYXIoKnJlc3VsdHMpOw0KLQkJCSpyZXN1bHRz ID0gY29weV9yZXN1bHQ7DQorCQkJCWNvcHlzdHJlYW0gPSBOVUxMOwkvKiBk aXNjYXJkIENPUFkgZGF0YSBlbnRpcmVseSAqLw0KIAkJfQ0KLQkJZWxzZSBp ZiAoZmlyc3RfY3ljbGUpDQorCQllbHNlDQogCQl7DQotCQkJLyogZmFzdCBw YXRoOiBubyBDT1BZIGNvbW1hbmRzOyBQUWV4ZWMgdmlzaXRlZCBhbGwgcmVz dWx0cyAqLw0KLQkJCWJyZWFrOw0KKwkJCS8qIGZhbGwgYmFjayB0byB0aGUg Z2VuZXJpYyBxdWVyeSBvdXRwdXQgc3RyZWFtICovDQorCQkJY29weXN0cmVh bSA9IHBzZXQucXVlcnlGb3V0Ow0KIAkJfQ0KIA0KKwkJc3VjY2VzcyA9IGhh bmRsZUNvcHlPdXQocHNldC5kYiwNCisJCQkJCQkJCWNvcHlzdHJlYW0sDQor CQkJCQkJCQkmY29weV9yZXN1bHQpDQorCQkJJiYgKGNvcHlzdHJlYW0gIT0g TlVMTCk7DQorDQogCQkvKg0KLQkJICogQ2hlY2sgUFFnZXRSZXN1bHQoKSBh Z2Fpbi4gIEluIHRoZSB0eXBpY2FsIGNhc2Ugb2YgYSBzaW5nbGUtY29tbWFu ZA0KLQkJICogc3RyaW5nLCBpdCB3aWxsIHJldHVybiBOVUxMLiAgT3RoZXJ3 aXNlLCB3ZSdsbCBoYXZlIG90aGVyIHJlc3VsdHMNCi0JCSAqIHRvIHByb2Nl c3MgdGhhdCBtYXkgaW5jbHVkZSBvdGhlciBDT1BZcy4gIFdlIGtlZXAgdGhl IGxhc3QgcmVzdWx0Lg0KKwkJICogU3VwcHJlc3Mgc3RhdHVzIHByaW50aW5n IGlmIHRoZSByZXBvcnQgd291bGQgZ28gdG8gdGhlIHNhbWUNCisJCSAqIHBs YWNlIGFzIHRoZSBDT1BZIGRhdGEganVzdCB3ZW50LiAgTm90ZSB0aGlzIGRv ZXNuJ3QNCisJCSAqIHByZXZlbnQgZXJyb3IgcmVwb3J0aW5nLCBzaW5jZSBo YW5kbGVDb3B5T3V0IGRpZCB0aGF0Lg0KIAkJICovDQotCQluZXh0X3Jlc3Vs dCA9IFBRZ2V0UmVzdWx0KHBzZXQuZGIpOw0KLQkJaWYgKCFuZXh0X3Jlc3Vs dCkNCi0JCQlicmVhazsNCisJCWlmIChjb3B5c3RyZWFtID09IHBzZXQucXVl cnlGb3V0KQ0KKwkJew0KKwkJCVBRY2xlYXIoY29weV9yZXN1bHQpOw0KKwkJ CWNvcHlfcmVzdWx0ID0gTlVMTDsNCisJCX0NCiANCi0JCVBRY2xlYXIoKnJl c3VsdHMpOw0KLQkJKnJlc3VsdHMgPSBuZXh0X3Jlc3VsdDsNCi0JCWZpcnN0 X2N5Y2xlID0gZmFsc2U7DQorCQlpZiAobmVlZF9jbG9zZSkNCisJCXsNCisJ CQkvKiBjbG9zZSBcZyBhcmd1bWVudCBmaWxlL3BpcGUgKi8NCisJCQlpZiAo aXNfcGlwZSkNCisJCQl7DQorCQkJCXBjbG9zZShjb3B5c3RyZWFtKTsNCisJ CQkJcmVzdG9yZV9zaWdwaXBlX3RyYXAoKTsNCisJCQl9DQorCQkJZWxzZQ0K KwkJCXsNCisJCQkJZmNsb3NlKGNvcHlzdHJlYW0pOw0KKwkJCX0NCisJCX0N CiAJfQ0KKwllbHNlDQorCXsNCisJCS8qIENPUFkgSU4gKi8NCisJCWNvcHlz dHJlYW0gPSBwc2V0LmNvcHlTdHJlYW0gPyBwc2V0LmNvcHlTdHJlYW0gOiBw c2V0LmN1cl9jbWRfc291cmNlOw0KKwkJc3VjY2VzcyA9IGhhbmRsZUNvcHlJ bihwc2V0LmRiLA0KKwkJCQkJCQkgICBjb3B5c3RyZWFtLA0KKwkJCQkJCQkg ICBQUWJpbmFyeVR1cGxlcygqcmVzdWx0KSwNCisJCQkJCQkJICAgJmNvcHlf cmVzdWx0KTsNCisJfQ0KKwlSZXNldENhbmNlbENvbm4oKTsNCiANCi0JU2V0 UmVzdWx0VmFyaWFibGVzKCpyZXN1bHRzLCBzdWNjZXNzKTsNCi0NCi0JLyog bWF5IG5lZWQgdGhpcyB0byByZWNvdmVyIGZyb20gY29ubiBsb3NzIGR1cmlu ZyBDT1BZICovDQotCWlmICghZmlyc3RfY3ljbGUgJiYgIUNoZWNrQ29ubmVj dGlvbigpKQ0KLQkJcmV0dXJuIGZhbHNlOw0KKwlQUWNsZWFyKCpyZXN1bHQp Ow0KKwkqcmVzdWx0ID0gY29weV9yZXN1bHQ7DQogDQogCXJldHVybiBzdWNj ZXNzOw0KIH0NCiANCi0NCiAvKg0KICAqIFByaW50UXVlcnlTdGF0dXM6IHJl cG9ydCBjb21tYW5kIHN0YXR1cyBhcyByZXF1aXJlZA0KICAqDQotICogTm90 ZTogVXRpbGl0eSBmdW5jdGlvbiBmb3IgdXNlIGJ5IFByaW50UXVlcnlSZXN1 bHRzKCkgb25seS4NCisgKiBOb3RlOiBVdGlsaXR5IGZ1bmN0aW9uIGZvciB1 c2UgYnkgSGFuZGxlUXVlcnlSZXN1bHQoKSBvbmx5Lg0KICAqLw0KIHN0YXRp YyB2b2lkDQogUHJpbnRRdWVyeVN0YXR1cyhQR3Jlc3VsdCAqcmVzdWx0cykN CkBAIC0xMjMzLDQzICsxMTU0LDQ0IEBAIFByaW50UXVlcnlTdGF0dXMoUEdy ZXN1bHQgKnJlc3VsdHMpDQogDQogDQogLyoNCi0gKiBQcmludFF1ZXJ5UmVz dWx0czogcHJpbnQgb3V0IChvciBzdG9yZSBvciBleGVjdXRlKSBxdWVyeSBy ZXN1bHRzIGFzIHJlcXVpcmVkDQotICoNCi0gKiBOb3RlOiBVdGlsaXR5IGZ1 bmN0aW9uIGZvciB1c2UgYnkgU2VuZFF1ZXJ5KCkgb25seS4NCisgKiBIYW5k bGVRdWVyeVJlc3VsdDogcHJpbnQgb3V0LCBzdG9yZSBvciBleGVjdXRlIG9u ZSBxdWVyeSByZXN1bHQNCisgKiBhcyByZXF1aXJlZC4NCiAgKg0KICAqIFJl dHVybnMgdHJ1ZSBpZiB0aGUgcXVlcnkgZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5 LCBmYWxzZSBvdGhlcndpc2UuDQogICovDQogc3RhdGljIGJvb2wNCi1Qcmlu dFF1ZXJ5UmVzdWx0cyhQR3Jlc3VsdCAqcmVzdWx0cykNCitIYW5kbGVRdWVy eVJlc3VsdChQR3Jlc3VsdCAqcmVzdWx0LCBib29sIGxhc3QpDQogew0KIAli b29sCQlzdWNjZXNzOw0KIAljb25zdCBjaGFyICpjbWRzdGF0dXM7DQogDQot CWlmICghcmVzdWx0cykNCisJaWYgKHJlc3VsdCA9PSBOVUxMKQ0KIAkJcmV0 dXJuIGZhbHNlOw0KIA0KLQlzd2l0Y2ggKFBRcmVzdWx0U3RhdHVzKHJlc3Vs dHMpKQ0KKwlzd2l0Y2ggKFBRcmVzdWx0U3RhdHVzKHJlc3VsdCkpDQogCXsN CiAJCWNhc2UgUEdSRVNfVFVQTEVTX09LOg0KIAkJCS8qIHN0b3JlIG9yIGV4 ZWN1dGUgb3IgcHJpbnQgdGhlIGRhdGEgLi4uICovDQotCQkJaWYgKHBzZXQu Z3NldF9wcmVmaXgpDQotCQkJCXN1Y2Nlc3MgPSBTdG9yZVF1ZXJ5VHVwbGUo cmVzdWx0cyk7DQotCQkJZWxzZSBpZiAocHNldC5nZXhlY19mbGFnKQ0KLQkJ CQlzdWNjZXNzID0gRXhlY1F1ZXJ5VHVwbGVzKHJlc3VsdHMpOw0KLQkJCWVs c2UgaWYgKHBzZXQuY3Jvc3N0YWJfZmxhZykNCi0JCQkJc3VjY2VzcyA9IFBy aW50UmVzdWx0c0luQ3Jvc3N0YWIocmVzdWx0cyk7DQorCQkJaWYgKGxhc3Qg JiYgcHNldC5nc2V0X3ByZWZpeCkNCisJCQkJc3VjY2VzcyA9IFN0b3JlUXVl cnlUdXBsZShyZXN1bHQpOw0KKwkJCWVsc2UgaWYgKGxhc3QgJiYgcHNldC5n ZXhlY19mbGFnKQ0KKwkJCQlzdWNjZXNzID0gRXhlY1F1ZXJ5VHVwbGVzKHJl c3VsdCk7DQorCQkJZWxzZSBpZiAobGFzdCAmJiBwc2V0LmNyb3NzdGFiX2Zs YWcpDQorCQkJCXN1Y2Nlc3MgPSBQcmludFJlc3VsdHNJbkNyb3NzdGFiKHJl c3VsdCk7DQogCQkJZWxzZQ0KLQkJCQlzdWNjZXNzID0gUHJpbnRRdWVyeVR1 cGxlcyhyZXN1bHRzKTsNCisJCQkJc3VjY2VzcyA9IFByaW50UXVlcnlUdXBs ZXMocmVzdWx0KTsNCisNCiAJCQkvKiBpZiBpdCdzIElOU0VSVC9VUERBVEUv REVMRVRFIFJFVFVSTklORywgYWxzbyBwcmludCBzdGF0dXMgKi8NCi0JCQlj bWRzdGF0dXMgPSBQUWNtZFN0YXR1cyhyZXN1bHRzKTsNCisJCQljbWRzdGF0 dXMgPSBQUWNtZFN0YXR1cyhyZXN1bHQpOw0KIAkJCWlmIChzdHJuY21wKGNt ZHN0YXR1cywgIklOU0VSVCIsIDYpID09IDAgfHwNCiAJCQkJc3RybmNtcChj bWRzdGF0dXMsICJVUERBVEUiLCA2KSA9PSAwIHx8DQogCQkJCXN0cm5jbXAo Y21kc3RhdHVzLCAiREVMRVRFIiwgNikgPT0gMCkNCi0JCQkJUHJpbnRRdWVy eVN0YXR1cyhyZXN1bHRzKTsNCisJCQkJUHJpbnRRdWVyeVN0YXR1cyhyZXN1 bHQpOw0KKw0KIAkJCWJyZWFrOw0KIA0KIAkJY2FzZSBQR1JFU19DT01NQU5E X09LOg0KLQkJCVByaW50UXVlcnlTdGF0dXMocmVzdWx0cyk7DQorCQkJUHJp bnRRdWVyeVN0YXR1cyhyZXN1bHQpOw0KIAkJCXN1Y2Nlc3MgPSB0cnVlOw0K IAkJCWJyZWFrOw0KIA0KQEAgLTEyNzksNyArMTIwMSw3IEBAIFByaW50UXVl cnlSZXN1bHRzKFBHcmVzdWx0ICpyZXN1bHRzKQ0KIA0KIAkJY2FzZSBQR1JF U19DT1BZX09VVDoNCiAJCWNhc2UgUEdSRVNfQ09QWV9JTjoNCi0JCQkvKiBu b3RoaW5nIHRvIGRvIGhlcmUgKi8NCisJCQkvKiBub3RoaW5nIHRvIGRvIGhl cmU6IGFscmVhZHkgcHJvY2Vzc2VkICovDQogCQkJc3VjY2VzcyA9IHRydWU7 DQogCQkJYnJlYWs7DQogDQpAQCAtMTI5Miw3ICsxMjE0LDcgQEAgUHJpbnRR dWVyeVJlc3VsdHMoUEdyZXN1bHQgKnJlc3VsdHMpDQogCQlkZWZhdWx0Og0K IAkJCXN1Y2Nlc3MgPSBmYWxzZTsNCiAJCQlwZ19sb2dfZXJyb3IoInVuZXhw ZWN0ZWQgUFFyZXN1bHRTdGF0dXM6ICVkIiwNCi0JCQkJCQkgUFFyZXN1bHRT dGF0dXMocmVzdWx0cykpOw0KKwkJCQkJCSBQUXJlc3VsdFN0YXR1cyhyZXN1 bHQpKTsNCiAJCQlicmVhazsNCiAJfQ0KIA0KQEAgLTEzMDEsNiArMTIyMywx NzYgQEAgUHJpbnRRdWVyeVJlc3VsdHMoUEdyZXN1bHQgKnJlc3VsdHMpDQog CXJldHVybiBzdWNjZXNzOw0KIH0NCiANCisvKg0KKyAqIERhdGEgc3RydWN0 dXJlIGFuZCBmdW5jdGlvbnMgdG8gcmVjb3JkIG5vdGljZXMgd2hpbGUgdGhl eSBhcmUNCisgKiBlbWl0dGVkLCBzbyB0aGF0IHRoZXkgY2FuIGJlIHNob3du IGxhdGVyLg0KKyAqDQorICogV2UgbmVlZCB0byBrbm93IHdoaWNoIHJlc3Vs dCBpcyBsYXN0LCB3aGljaCByZXF1aXJlcyB0byBleHRyYWN0DQorICogb25l IHJlc3VsdCBpbiBhZHZhbmNlLCBoZW5jZSB0d28gYnVmZmVycyBhcmUgbmVl ZGVkLg0KKyAqLw0KK3R5cGVkZWYgc3RydWN0IHsNCisJYm9vbAkJCWluX2Zs aXA7DQorCVBRRXhwQnVmZmVyRGF0YQlmbGlwOw0KKwlQUUV4cEJ1ZmZlckRh dGEJZmxvcDsNCit9IHRfbm90aWNlX21lc3NhZ2VzOw0KKw0KKy8qDQorICog U3RvcmUgbm90aWNlcyBpbiBhcHByb3ByaWF0ZSBidWZmZXIsIGZvciBsYXRl ciBkaXNwbGF5Lg0KKyAqLw0KK3N0YXRpYyB2b2lkDQorQXBwZW5kTm90aWNl TWVzc2FnZSh2b2lkICphcmcsIGNvbnN0IGNoYXIgKm1zZykNCit7DQorCXRf bm90aWNlX21lc3NhZ2VzICpub3RlcyA9ICh0X25vdGljZV9tZXNzYWdlcyop IGFyZzsNCisJYXBwZW5kUFFFeHBCdWZmZXJTdHIobm90ZXMtPmluX2ZsaXAg PyAmbm90ZXMtPmZsaXAgOiAmbm90ZXMtPmZsb3AsIG1zZyk7DQorfQ0KKw0K Ky8qDQorICogU2hvdyBub3RpY2VzIHN0b3JlZCBpbiBidWZmZXIsIHdoaWNo IGlzIHRoZW4gcmVzZXQuDQorICovDQorc3RhdGljIHZvaWQNCitTaG93Tm90 aWNlTWVzc2FnZSh0X25vdGljZV9tZXNzYWdlcyAqbm90ZXMpDQorew0KKwlQ UUV4cEJ1ZmZlckRhdGEJKmN1cnJlbnQgPSBub3Rlcy0+aW5fZmxpcCA/ICZu b3Rlcy0+ZmxpcCA6ICZub3Rlcy0+ZmxvcDsNCisJaWYgKGN1cnJlbnQtPmRh dGEgIT0gTlVMTCAmJiAqY3VycmVudC0+ZGF0YSAhPSAnXDAnKQ0KKwkJcGdf bG9nX2luZm8oIiVzIiwgY3VycmVudC0+ZGF0YSk7DQorCXJlc2V0UFFFeHBC dWZmZXIoY3VycmVudCk7DQorfQ0KKw0KKy8qDQorICogU2VuZFF1ZXJ5QW5k UHJvY2Vzc1Jlc3VsdHM6IHV0aWxpdHkgZnVuY3Rpb24gZm9yIHVzZSBieSBT ZW5kUXVlcnkoKSBvbmx5DQorICoNCisgKiBTZW5kcyBxdWVyeSBhbmQgY3lj bGVzIHRocm91Z2ggUEdyZXN1bHQgb2JqZWN0cy4NCisgKg0KKyAqIFdoZW4g b3VyIGNvbW1hbmQgc3RyaW5nIGNvbnRhaW5lZCBhIENPUFkgRlJPTSBTVERJ TiBvciBDT1BZIFRPIFNURE9VVCwNCisgKiB0aGUgUEdyZXN1bHQgYXNzb2Np YXRlZCB3aXRoIHRoZXNlIGNvbW1hbmRzIG11c3QgYmUgcHJvY2Vzc2VkIGJ5 IHByb3ZpZGluZw0KKyAqIGFuIGlucHV0IG9yIG91dHB1dCBzdHJlYW0uICBJ biB0aGF0IGV2ZW50LCB3ZSdsbCBtYXJzaGFsIGRhdGEgZm9yIHRoZSBDT1BZ Lg0KKyAqDQorICogRm9yIG90aGVyIGNvbW1hbmRzLCB0aGUgcmVzdWx0cyBh cmUgcHJvY2Vzc2VkIG5vcm1hbGx5LCBkZXBlbmRpbmcgb24gdGhlaXINCisg KiBzdGF0dXMuDQorICoNCisgKiBSZXR1cm5zIHRydWUgb24gY29tcGxldGUg c3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlLiAgUG9zc2libGUgZmFpbHVyZSBt b2Rlcw0KKyAqIGluY2x1ZGUgcHVyZWx5IGNsaWVudC1zaWRlIHByb2JsZW1z OyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdHVzIGZvciB0aGUNCisgKiBz ZXJ2ZXItc2lkZSBvcGluaW9uLg0KKyAqDQorICogTm90ZSB0aGF0IG9uIGEg Y29tYmluZWQgcXVlcnksIGZhaWx1cmUgZG9lcyBub3QgbWVhbiB0aGF0IG5v dGhpbmcgd2FzDQorICogY29tbWl0dGVkLg0KKyAqLw0KK3N0YXRpYyBib29s DQorU2VuZFF1ZXJ5QW5kUHJvY2Vzc1Jlc3VsdHMoY29uc3QgY2hhciAqcXVl cnksIGRvdWJsZSAqcGVsYXBzZWRfbXNlYykNCit7DQorCWJvb2wJCQkJc3Vj Y2VzczsNCisJaW5zdHJfdGltZQkJCWJlZm9yZTsNCisJUEdyZXN1bHQJCSAg ICpyZXN1bHQ7DQorCXRfbm90aWNlX21lc3NhZ2VzCW5vdGVzOw0KKw0KKwlp ZiAocHNldC50aW1pbmcpDQorCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGJl Zm9yZSk7DQorDQorCXN1Y2Nlc3MgPSBQUXNlbmRRdWVyeShwc2V0LmRiLCBx dWVyeSk7DQorCVJlc2V0Q2FuY2VsQ29ubigpOw0KKw0KKwlpZiAoIXN1Y2Nl c3MpDQorCQlyZXR1cm4gZmFsc2U7DQorDQorCS8qIGludGVyY2VwdCBub3Rp Y2VzICovDQorCW5vdGVzLmluX2ZsaXAgPSB0cnVlOw0KKwlpbml0UFFFeHBC dWZmZXIoJm5vdGVzLmZsaXApOw0KKwlpbml0UFFFeHBCdWZmZXIoJm5vdGVz LmZsb3ApOw0KKwlQUXNldE5vdGljZVByb2Nlc3Nvcihwc2V0LmRiLCBBcHBl bmROb3RpY2VNZXNzYWdlLCAmbm90ZXMpOw0KKw0KKwkvKiBmaXJzdCByZXN1 bHQgKi8NCisJcmVzdWx0ID0gUFFnZXRSZXN1bHQocHNldC5kYik7DQorDQor CXdoaWxlIChyZXN1bHQgIT0gTlVMTCkNCisJew0KKwkJRXhlY1N0YXR1c1R5 cGUgcmVzdWx0X3N0YXR1czsNCisJCVBHcmVzdWx0ICAgKm5leHRfcmVzdWx0 Ow0KKwkJYm9vbAkJbGFzdDsNCisNCisJCWlmICghQWNjZXB0UmVzdWx0KHJl c3VsdCwgZmFsc2UpKQ0KKwkJew0KKwkJCS8qDQorCQkJICogU29tZSBlcnJv ciBvY2N1cmVkLCBlaXRoZXIgYSBzZXJ2ZXItc2lkZSBmYWlsdXJlIG9yDQor CQkJICogYSBmYWlsdXJlIHRvIHN1Ym1pdCB0aGUgY29tbWFuZCBzdHJpbmcu ICBSZWNvcmQgdGhhdC4NCisJCQkgKi8NCisJCQlTaG93Tm90aWNlTWVzc2Fn ZSgmbm90ZXMpOw0KKwkJCVNob3dFcnJvck1lc3NhZ2UocmVzdWx0KTsNCisJ CQlTZXRSZXN1bHRWYXJpYWJsZXMocmVzdWx0LCBmYWxzZSk7DQorCQkJQ2xl YXJPclNhdmVSZXN1bHQocmVzdWx0KTsNCisJCQlzdWNjZXNzID0gZmFsc2U7 DQorDQorCQkJLyogYW5kIHN3aXRjaCB0byBuZXh0IHJlc3VsdCAqLw0KKwkJ CXJlc3VsdCA9IFBRZ2V0UmVzdWx0KHBzZXQuZGIpOw0KKwkJCWNvbnRpbnVl Ow0KKwkJfQ0KKw0KKwkJLyogbXVzdCBoYW5kbGUgQ09QWSBiZWZvcmUgY2hh bmdpbmcgdGhlIGN1cnJlbnQgcmVzdWx0ICovDQorCQlyZXN1bHRfc3RhdHVz ID0gUFFyZXN1bHRTdGF0dXMocmVzdWx0KTsNCisJCWlmIChyZXN1bHRfc3Rh dHVzID09IFBHUkVTX0NPUFlfSU4gfHwNCisJCQlyZXN1bHRfc3RhdHVzID09 IFBHUkVTX0NPUFlfT1VUKQ0KKwkJew0KKwkJCVNob3dOb3RpY2VNZXNzYWdl KCZub3Rlcyk7DQorCQkJc3VjY2VzcyAmPSBIYW5kbGVDb3B5UmVzdWx0KCZy ZXN1bHQpOw0KKwkJfQ0KKw0KKwkJLyoNCisJCSAqIENoZWNrIFBRZ2V0UmVz dWx0KCkgYWdhaW4uICBJbiB0aGUgdHlwaWNhbCBjYXNlIG9mIGEgc2luZ2xl LWNvbW1hbmQNCisJCSAqIHN0cmluZywgaXQgd2lsbCByZXR1cm4gTlVMTC4g IE90aGVyd2lzZSwgd2UnbGwgaGF2ZSBvdGhlciByZXN1bHRzDQorCQkgKiB0 byBwcm9jZXNzLg0KKwkJICovDQorCQlub3Rlcy5pbl9mbGlwID0gIW5vdGVz LmluX2ZsaXA7DQorCQluZXh0X3Jlc3VsdCA9IFBRZ2V0UmVzdWx0KHBzZXQu ZGIpOw0KKwkJbm90ZXMuaW5fZmxpcCA9ICFub3Rlcy5pbl9mbGlwOw0KKwkJ bGFzdCA9IChuZXh0X3Jlc3VsdCA9PSBOVUxMKTsNCisNCisJCS8qDQorCQkg KiBHZXQgdGltaW5nIG1lYXN1cmUgYmVmb3JlIHByaW50aW5nIHRoZSBsYXN0 IHJlc3VsdC4NCisJCSAqDQorCQkgKiBJdCB3aWxsIGluY2x1ZGUgdGhlIGRp c3BsYXkgb2YgcHJldmlvdXMgcmVzdWx0cywgaWYgYW55Lg0KKwkJICogVGhp cyBjYW5ub3QgYmUgaGVscGVkIGJlY2F1c2UgdGhlIHNlcnZlciBnb2VzIG9u IHByb2Nlc3NpbmcNCisJCSAqIGZ1cnRoZXIgcXVlcmllcyBhbnl3YXkgd2hp bGUgdGhlIHByZXZpb3VzIG9uZXMgYXJlIGJlaW5nIGRpc3BsYXllZC4NCisJ CSAqIFRoZSBwYXJhbGxlbCBleGVjdXRpb24gb2YgdGhlIGNsaWVudCBkaXNw bGF5IGhpZGVzIHRoZSBzZXJ2ZXIgdGltZQ0KKwkJICogd2hlbiBpdCBpcyBz aG9ydGVyLg0KKwkJICoNCisJCSAqIFdpdGggY29tYmluZWQgcXVlcmllcywg dGltaW5nIG11c3QgYmUgdW5kZXJzdG9vZCBhcyBhbiB1cHBlciBib3VuZA0K KwkJICogb2YgdGhlIHRpbWUgc3BlbnQgcHJvY2Vzc2luZyB0aGVtLg0KKwkJ ICovDQorCQlpZiAobGFzdCAmJiBwc2V0LnRpbWluZykNCisJCXsNCisJCQlp bnN0cl90aW1lCW5vdzsNCisJCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKG5v dyk7DQorCQkJSU5TVFJfVElNRV9TVUJUUkFDVChub3csIGJlZm9yZSk7DQor CQkJKnBlbGFwc2VkX21zZWMgPSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhu b3cpOw0KKwkJfQ0KKw0KKwkJLyogbm90aWNlcyBhbHJlYWR5IHNob3cgYWJv dmUgZm9yIGNvcHkgKi8NCisJCVNob3dOb3RpY2VNZXNzYWdlKCZub3Rlcyk7 DQorDQorCQkvKiB0aGlzIG1heSBvciBtYXkgbm90IHByaW50IHNvbWV0aGlu ZyBkZXBlbmRpbmcgb24gc2V0dGluZ3MgKi8NCisJCWlmIChyZXN1bHQgIT0g TlVMTCkNCisJCQlzdWNjZXNzICY9IEhhbmRsZVF1ZXJ5UmVzdWx0KHJlc3Vs dCwgbGFzdCk7DQorDQorCQkvKiBzZXQgdmFyaWFibGVzIG9uIGxhc3QgcmVz dWx0IGlmIGFsbCB3ZW50IHdlbGwgKi8NCisJCWlmIChsYXN0ICYmIHN1Y2Nl c3MpDQorCQkJU2V0UmVzdWx0VmFyaWFibGVzKHJlc3VsdCwgdHJ1ZSk7DQor DQorCQlDbGVhck9yU2F2ZVJlc3VsdChyZXN1bHQpOw0KKwkJbm90ZXMuaW5f ZmxpcCA9ICFub3Rlcy5pbl9mbGlwOw0KKwkJcmVzdWx0ID0gbmV4dF9yZXN1 bHQ7DQorCX0NCisNCisJLyogcmVzZXQgbm90aWNlIGhvb2sgKi8NCisJUFFz ZXROb3RpY2VQcm9jZXNzb3IocHNldC5kYiwgTm90aWNlUHJvY2Vzc29yLCBO VUxMKTsNCisJdGVybVBRRXhwQnVmZmVyKCZub3Rlcy5mbGlwKTsNCisJdGVy bVBRRXhwQnVmZmVyKCZub3Rlcy5mbG9wKTsNCisNCisJLyogbWF5IG5lZWQg dGhpcyB0byByZWNvdmVyIGZyb20gY29ubiBsb3NzIGR1cmluZyBDT1BZICov DQorCWlmICghQ2hlY2tDb25uZWN0aW9uKCkpDQorCQlyZXR1cm4gZmFsc2U7 DQorDQorCXJldHVybiBzdWNjZXNzOw0KK30NCisNCiANCiAvKg0KICAqIFNl bmRRdWVyeTogc2VuZCB0aGUgcXVlcnkgc3RyaW5nIHRvIHRoZSBiYWNrZW5k DQpAQCAtMTMxNyw5ICsxNDA5LDkgQEAgUHJpbnRRdWVyeVJlc3VsdHMoUEdy ZXN1bHQgKnJlc3VsdHMpDQogYm9vbA0KIFNlbmRRdWVyeShjb25zdCBjaGFy ICpxdWVyeSkNCiB7DQotCVBHcmVzdWx0ICAgKnJlc3VsdHM7DQorCVBHcmVz dWx0ICAgKnJlc3VsdHMgPSBOVUxMOw0KIAlQR1RyYW5zYWN0aW9uU3RhdHVz VHlwZSB0cmFuc2FjdGlvbl9zdGF0dXM7DQotCWRvdWJsZQkJZWxhcHNlZF9t c2VjID0gMDsNCisJZG91YmxlCQllbGFwc2VkX21zZWMgPSAwLjA7DQogCWJv b2wJCU9LID0gZmFsc2U7DQogCWludAkJCWk7DQogCWJvb2wJCW9uX2Vycm9y X3JvbGxiYWNrX3NhdmVwb2ludCA9IGZhbHNlOw0KQEAgLTE0MjIsMjggKzE1 MTQsNyBAQCBTZW5kUXVlcnkoY29uc3QgY2hhciAqcXVlcnkpDQogCQkJIHBz ZXQuY3Jvc3N0YWJfZmxhZyB8fCAhaXNfc2VsZWN0X2NvbW1hbmQocXVlcnkp KQ0KIAl7DQogCQkvKiBEZWZhdWx0IGZldGNoLWl0LWFsbC1hbmQtcHJpbnQg bW9kZSAqLw0KLQkJaW5zdHJfdGltZQliZWZvcmUsDQotCQkJCQlhZnRlcjsN Ci0NCi0JCWlmIChwc2V0LnRpbWluZykNCi0JCQlJTlNUUl9USU1FX1NFVF9D VVJSRU5UKGJlZm9yZSk7DQotDQotCQlyZXN1bHRzID0gUFFleGVjKHBzZXQu ZGIsIHF1ZXJ5KTsNCi0NCi0JCS8qIHRoZXNlIG9wZXJhdGlvbnMgYXJlIGlu Y2x1ZGVkIGluIHRoZSB0aW1pbmcgcmVzdWx0OiAqLw0KLQkJUmVzZXRDYW5j ZWxDb25uKCk7DQotCQlPSyA9IFByb2Nlc3NSZXN1bHQoJnJlc3VsdHMpOw0K LQ0KLQkJaWYgKHBzZXQudGltaW5nKQ0KLQkJew0KLQkJCUlOU1RSX1RJTUVf U0VUX0NVUlJFTlQoYWZ0ZXIpOw0KLQkJCUlOU1RSX1RJTUVfU1VCVFJBQ1Qo YWZ0ZXIsIGJlZm9yZSk7DQotCQkJZWxhcHNlZF9tc2VjID0gSU5TVFJfVElN RV9HRVRfTUlMTElTRUMoYWZ0ZXIpOw0KLQkJfQ0KLQ0KLQkJLyogYnV0IHBy aW50aW5nIHJlc3VsdHMgaXNuJ3Q6ICovDQotCQlpZiAoT0sgJiYgcmVzdWx0 cykNCi0JCQlPSyA9IFByaW50UXVlcnlSZXN1bHRzKHJlc3VsdHMpOw0KKwkJ T0sgPSBTZW5kUXVlcnlBbmRQcm9jZXNzUmVzdWx0cyhxdWVyeSwgJmVsYXBz ZWRfbXNlYyk7DQogCX0NCiAJZWxzZQ0KIAl7DQpAQCAtMTYyMCw3ICsxNjkx LDcgQEAgRGVzY3JpYmVRdWVyeShjb25zdCBjaGFyICpxdWVyeSwgZG91Ymxl ICplbGFwc2VkX21zZWMpDQogCVBRY2xlYXIocmVzdWx0cyk7DQogDQogCXJl c3VsdHMgPSBQUWRlc2NyaWJlUHJlcGFyZWQocHNldC5kYiwgIiIpOw0KLQlP SyA9IEFjY2VwdFJlc3VsdChyZXN1bHRzKSAmJg0KKwlPSyA9IEFjY2VwdFJl c3VsdChyZXN1bHRzLCB0cnVlKSAmJg0KIAkJKFBRcmVzdWx0U3RhdHVzKHJl c3VsdHMpID09IFBHUkVTX0NPTU1BTkRfT0spOw0KIAlpZiAoT0sgJiYgcmVz dWx0cykNCiAJew0KQEAgLTE2NjgsNyArMTczOSw3IEBAIERlc2NyaWJlUXVl cnkoY29uc3QgY2hhciAqcXVlcnksIGRvdWJsZSAqZWxhcHNlZF9tc2VjKQ0K IAkJCVBRY2xlYXIocmVzdWx0cyk7DQogDQogCQkJcmVzdWx0cyA9IFBRZXhl Yyhwc2V0LmRiLCBidWYuZGF0YSk7DQotCQkJT0sgPSBBY2NlcHRSZXN1bHQo cmVzdWx0cyk7DQorCQkJT0sgPSBBY2NlcHRSZXN1bHQocmVzdWx0cywgdHJ1 ZSk7DQogDQogCQkJaWYgKHBzZXQudGltaW5nKQ0KIAkJCXsNCkBAIC0xNjc4 LDcgKzE3NDksNyBAQCBEZXNjcmliZVF1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5 LCBkb3VibGUgKmVsYXBzZWRfbXNlYykNCiAJCQl9DQogDQogCQkJaWYgKE9L ICYmIHJlc3VsdHMpDQotCQkJCU9LID0gUHJpbnRRdWVyeVJlc3VsdHMocmVz dWx0cyk7DQorCQkJCU9LID0gSGFuZGxlUXVlcnlSZXN1bHQocmVzdWx0cywg dHJ1ZSk7DQogDQogCQkJdGVybVBRRXhwQnVmZmVyKCZidWYpOw0KIAkJfQ0K QEAgLTE3MzcsNyArMTgwOCw3IEBAIEV4ZWNRdWVyeVVzaW5nQ3Vyc29yKGNv bnN0IGNoYXIgKnF1ZXJ5LCBkb3VibGUgKmVsYXBzZWRfbXNlYykNCiAJaWYg KFBRdHJhbnNhY3Rpb25TdGF0dXMocHNldC5kYikgPT0gUFFUUkFOU19JRExF KQ0KIAl7DQogCQlyZXN1bHRzID0gUFFleGVjKHBzZXQuZGIsICJCRUdJTiIp Ow0KLQkJT0sgPSBBY2NlcHRSZXN1bHQocmVzdWx0cykgJiYNCisJCU9LID0g QWNjZXB0UmVzdWx0KHJlc3VsdHMsIHRydWUpICYmDQogCQkJKFBRcmVzdWx0 U3RhdHVzKHJlc3VsdHMpID09IFBHUkVTX0NPTU1BTkRfT0spOw0KIAkJQ2xl YXJPclNhdmVSZXN1bHQocmVzdWx0cyk7DQogCQlpZiAoIU9LKQ0KQEAgLTE3 NTEsNyArMTgyMiw3IEBAIEV4ZWNRdWVyeVVzaW5nQ3Vyc29yKGNvbnN0IGNo YXIgKnF1ZXJ5LCBkb3VibGUgKmVsYXBzZWRfbXNlYykNCiAJCQkJCSAgcXVl cnkpOw0KIA0KIAlyZXN1bHRzID0gUFFleGVjKHBzZXQuZGIsIGJ1Zi5kYXRh KTsNCi0JT0sgPSBBY2NlcHRSZXN1bHQocmVzdWx0cykgJiYNCisJT0sgPSBB Y2NlcHRSZXN1bHQocmVzdWx0cywgdHJ1ZSkgJiYNCiAJCShQUXJlc3VsdFN0 YXR1cyhyZXN1bHRzKSA9PSBQR1JFU19DT01NQU5EX09LKTsNCiAJaWYgKCFP SykNCiAJCVNldFJlc3VsdFZhcmlhYmxlcyhyZXN1bHRzLCBPSyk7DQpAQCAt MTgyOCw3ICsxODk5LDcgQEAgRXhlY1F1ZXJ5VXNpbmdDdXJzb3IoY29uc3Qg Y2hhciAqcXVlcnksIGRvdWJsZSAqZWxhcHNlZF9tc2VjKQ0KIAkJCQlpc19w YWdlciA9IGZhbHNlOw0KIAkJCX0NCiANCi0JCQlPSyA9IEFjY2VwdFJlc3Vs dChyZXN1bHRzKTsNCisJCQlPSyA9IEFjY2VwdFJlc3VsdChyZXN1bHRzLCB0 cnVlKTsNCiAJCQlBc3NlcnQoIU9LKTsNCiAJCQlTZXRSZXN1bHRWYXJpYWJs ZXMocmVzdWx0cywgT0spOw0KIAkJCUNsZWFyT3JTYXZlUmVzdWx0KHJlc3Vs dHMpOw0KQEAgLTE5MzcsNyArMjAwOCw3IEBAIGNsZWFudXA6DQogCXJlc3Vs dHMgPSBQUWV4ZWMocHNldC5kYiwgIkNMT1NFIF9wc3FsX2N1cnNvciIpOw0K IAlpZiAoT0spDQogCXsNCi0JCU9LID0gQWNjZXB0UmVzdWx0KHJlc3VsdHMp ICYmDQorCQlPSyA9IEFjY2VwdFJlc3VsdChyZXN1bHRzLCB0cnVlKSAmJg0K IAkJCShQUXJlc3VsdFN0YXR1cyhyZXN1bHRzKSA9PSBQR1JFU19DT01NQU5E X09LKTsNCiAJCUNsZWFyT3JTYXZlUmVzdWx0KHJlc3VsdHMpOw0KIAl9DQpA QCAtMTk0Nyw3ICsyMDE4LDcgQEAgY2xlYW51cDoNCiAJaWYgKHN0YXJ0ZWRf dHhuKQ0KIAl7DQogCQlyZXN1bHRzID0gUFFleGVjKHBzZXQuZGIsIE9LID8g IkNPTU1JVCIgOiAiUk9MTEJBQ0siKTsNCi0JCU9LICY9IEFjY2VwdFJlc3Vs dChyZXN1bHRzKSAmJg0KKwkJT0sgJj0gQWNjZXB0UmVzdWx0KHJlc3VsdHMs IHRydWUpICYmDQogCQkJKFBRcmVzdWx0U3RhdHVzKHJlc3VsdHMpID09IFBH UkVTX0NPTU1BTkRfT0spOw0KIAkJQ2xlYXJPclNhdmVSZXN1bHQocmVzdWx0 cyk7DQogCX0NCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2NvcHkyLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29w eTIub3V0DQppbmRleCBjNTNlZDNlYmY1Li45YzhjODM2MWY4IDEwMDY0NA0K LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQNCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0DQpAQCAt NDc1LDEwICs0NzUsMTAgQEAgY29weSBjaGVja19jb25fdGJsIGZyb20gc3Rk aW47DQogTk9USUNFOiAgaW5wdXQgPSB7ImYxIjoxfQ0KIE5PVElDRTogIGlu cHV0ID0geyJmMSI6bnVsbH0NCiBjb3B5IGNoZWNrX2Nvbl90YmwgZnJvbSBz dGRpbjsNCi1OT1RJQ0U6ICBpbnB1dCA9IHsiZjEiOjB9DQogRVJST1I6ICBu ZXcgcm93IGZvciByZWxhdGlvbiAiY2hlY2tfY29uX3RibCIgdmlvbGF0ZXMg Y2hlY2sgY29uc3RyYWludCAiY2hlY2tfY29uX3RibF9jaGVjayINCiBERVRB SUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoMCkuDQogQ09OVEVYVDogIENP UFkgY2hlY2tfY29uX3RibCwgbGluZSAxOiAiMCINCitOT1RJQ0U6ICBpbnB1 dCA9IHsiZjEiOjB9DQogc2VsZWN0ICogZnJvbSBjaGVja19jb25fdGJsOw0K ICBmMSANCiAtLS0tDQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9jb3B5ZG1sLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvY29weWRtbC5vdXQNCmluZGV4IDFiNTMzOTYyYzYuLmI1YTIyNTYyOGYg MTAwNjQ0DQotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHlk bWwub3V0DQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHlk bWwub3V0DQpAQCAtODQsMTAgKzg0LDEwIEBAIGRyb3AgcnVsZSBxcXEgb24g Y29weWRtbF90ZXN0Ow0KIGNyZWF0ZSBmdW5jdGlvbiBxcXFfdHJpZygpIHJl dHVybnMgdHJpZ2dlciBhcyAkJA0KIGJlZ2luDQogaWYgdGdfb3AgaW4gKCdJ TlNFUlQnLCAnVVBEQVRFJykgdGhlbg0KLSAgICByYWlzZSBub3RpY2UgJyUg JScsIHRnX29wLCBuZXcuaWQ7DQorICAgIHJhaXNlIG5vdGljZSAnJSAlICUn LCB0Z193aGVuLCB0Z19vcCwgbmV3LmlkOw0KICAgICByZXR1cm4gbmV3Ow0K IGVsc2UNCi0gICAgcmFpc2Ugbm90aWNlICclICUnLCB0Z19vcCwgb2xkLmlk Ow0KKyAgICByYWlzZSBub3RpY2UgJyUgJSAlJywgdGdfd2hlbiwgdGdfb3As IG9sZC5pZDsNCiAgICAgcmV0dXJuIG9sZDsNCiBlbmQgaWY7DQogZW5kDQpA QCAtOTcsMTYgKzk3LDE2IEBAIGNyZWF0ZSB0cmlnZ2VyIHFxcWJlZiBiZWZv cmUgaW5zZXJ0IG9yIHVwZGF0ZSBvciBkZWxldGUgb24gY29weWRtbF90ZXN0 DQogY3JlYXRlIHRyaWdnZXIgcXFxYWYgYWZ0ZXIgaW5zZXJ0IG9yIHVwZGF0 ZSBvciBkZWxldGUgb24gY29weWRtbF90ZXN0DQogICAgIGZvciBlYWNoIHJv dyBleGVjdXRlIHByb2NlZHVyZSBxcXFfdHJpZygpOw0KIGNvcHkgKGluc2Vy dCBpbnRvIGNvcHlkbWxfdGVzdCAodCkgdmFsdWVzICgnZicpIHJldHVybmlu ZyBpZCkgdG8gc3Rkb3V0Ow0KLU5PVElDRTogIElOU0VSVCA4DQorTk9USUNF OiAgQkVGT1JFIElOU0VSVCA4DQogOA0KLU5PVElDRTogIElOU0VSVCA4DQor Tk9USUNFOiAgQUZURVIgSU5TRVJUIDgNCiBjb3B5ICh1cGRhdGUgY29weWRt bF90ZXN0IHNldCB0ID0gJ2cnIHdoZXJlIHQgPSAnZicgcmV0dXJuaW5nIGlk KSB0byBzdGRvdXQ7DQotTk9USUNFOiAgVVBEQVRFIDgNCitOT1RJQ0U6ICBC RUZPUkUgVVBEQVRFIDgNCiA4DQotTk9USUNFOiAgVVBEQVRFIDgNCitOT1RJ Q0U6ICBBRlRFUiBVUERBVEUgOA0KIGNvcHkgKGRlbGV0ZSBmcm9tIGNvcHlk bWxfdGVzdCB3aGVyZSB0ID0gJ2cnIHJldHVybmluZyBpZCkgdG8gc3Rkb3V0 Ow0KLU5PVElDRTogIERFTEVURSA4DQorTk9USUNFOiAgQkVGT1JFIERFTEVU RSA4DQogOA0KLU5PVElDRTogIERFTEVURSA4DQorTk9USUNFOiAgQUZURVIg REVMRVRFIDgNCiBkcm9wIHRhYmxlIGNvcHlkbWxfdGVzdDsNCiBkcm9wIGZ1 bmN0aW9uIHFxcV90cmlnKCk7DQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9jb3B5c2VsZWN0Lm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY29weXNlbGVjdC5vdXQNCmluZGV4IDcyODY1ZmUxZWIu LjM5YWI4ZmM4N2EgMTAwNjQ0DQotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2NvcHlzZWxlY3Qub3V0DQorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2NvcHlzZWxlY3Qub3V0DQpAQCAtMTI2LDcgKzEyNiw3IEBA IGNvcHkgKHNlbGVjdCAxKSB0byBzdGRvdXRcOyBzZWxlY3QgMS8wOwktLSBy b3csIHRoZW4gZXJyb3INCiBFUlJPUjogIGRpdmlzaW9uIGJ5IHplcm8NCiBz ZWxlY3QgMS8wXDsgY29weSAoc2VsZWN0IDEpIHRvIHN0ZG91dDsgLS0gZXJy b3Igb25seQ0KIEVSUk9SOiAgZGl2aXNpb24gYnkgemVybw0KLWNvcHkgKHNl bGVjdCAxKSB0byBzdGRvdXRcOyBjb3B5IChzZWxlY3QgMikgdG8gc3Rkb3V0 XDsgc2VsZWN0IDBcOyBzZWxlY3QgMzsgLS0gMSAyIDMNCitjb3B5IChzZWxl Y3QgMSkgdG8gc3Rkb3V0XDsgY29weSAoc2VsZWN0IDIpIHRvIHN0ZG91dFw7 IHNlbGVjdCAzXDsgc2VsZWN0IDQ7IC0tIDEgMiAzIDQNCiAxDQogMg0KICA/ Y29sdW1uPyANCkBAIC0xMzQsOCArMTM0LDE4IEBAIGNvcHkgKHNlbGVjdCAx KSB0byBzdGRvdXRcOyBjb3B5IChzZWxlY3QgMikgdG8gc3Rkb3V0XDsgc2Vs ZWN0IDBcOyBzZWxlY3QgMzsgLS0NCiAgICAgICAgIDMNCiAoMSByb3cpDQog DQorID9jb2x1bW4/IA0KKy0tLS0tLS0tLS0NCisgICAgICAgIDQNCisoMSBy b3cpDQorDQogY3JlYXRlIHRhYmxlIHRlc3QzIChjIGludCk7DQogc2VsZWN0 IDBcOyBjb3B5IHRlc3QzIGZyb20gc3RkaW5cOyBjb3B5IHRlc3QzIGZyb20g c3RkaW5cOyBzZWxlY3QgMTsgLS0gMQ0KKyA/Y29sdW1uPyANCistLS0tLS0t LS0tDQorICAgICAgICAwDQorKDEgcm93KQ0KKw0KICA/Y29sdW1uPyANCiAt LS0tLS0tLS0tDQogICAgICAgICAxDQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9wc3FsLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHNxbC5vdXQNCmluZGV4IDI0MmY4MTcxNjMuLmFlOTg3YjU0 OGMgMTAwNjQ0DQotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bz cWwub3V0DQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwu b3V0DQpAQCAtNDgwOSwzICs0ODA5LDg3IEBAIE93bmluZyB0YWJsZTogInBn X2NhdGFsb2cucGdfc3RhdGlzdGljIg0KIEluZGV4ZXM6DQogICAgICJwZ190 b2FzdF8yNjE5X2luZGV4IiBQUklNQVJZIEtFWSwgYnRyZWUgKGNodW5rX2lk LCBjaHVua19zZXEpDQogDQorLS0NCistLSBjb21iaW5lZCBxdWVyaWVzDQor LS0NCitcZWNobyAnIyBjb21iaW5lZCBxdWVyaWVzIHRlc3RzJw0KKyMgY29t YmluZWQgcXVlcmllcyB0ZXN0cw0KK0NSRUFURSBGVU5DVElPTiB3YXJuKG1z ZyBURVhUKSBSRVRVUk5TIEJPT0xFQU4gQVMgJCQNCisgIEJFR0lOIFJBSVNF IE5PVElDRSAnd2FybiAlJywgbXNnIDsgUkVUVVJOIFRSVUUgOyBFTkQNCisk JCBMQU5HVUFHRSBwbHBnc3FsOw0KKy0tIHNob3cgYm90aA0KK1NFTEVDVCAx IEFTIG9uZSBcOyBTRUxFQ1Qgd2FybignMS41JykgXDsgU0VMRUNUIDIgQVMg dHdvIDsNCisgb25lIA0KKy0tLS0tDQorICAgMQ0KKygxIHJvdykNCisNCitO T1RJQ0U6ICB3YXJuIDEuNQ0KK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlv biB3YXJuKHRleHQpIGxpbmUgMiBhdCBSQUlTRQ0KKyB3YXJuIA0KKy0tLS0t LQ0KKyB0DQorKDEgcm93KQ0KKw0KKyB0d28gDQorLS0tLS0NCisgICAyDQor KDEgcm93KQ0KKw0KKy0tIFxnc2V0IGFwcGxpZXMgdG8gbGFzdCBxdWVyeSBv bmx5DQorU0VMRUNUIDMgQVMgdGhyZWUgXDsgU0VMRUNUIHdhcm4oJzMuNScp IFw7IFNFTEVDVCA0IEFTIGZvdXIgXGdzZXQNCisgdGhyZWUgDQorLS0tLS0t LQ0KKyAgICAgMw0KKygxIHJvdykNCisNCitOT1RJQ0U6ICB3YXJuIDMuNQ0K K0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiB3YXJuKHRleHQpIGxpbmUg MiBhdCBSQUlTRQ0KKyB3YXJuIA0KKy0tLS0tLQ0KKyB0DQorKDEgcm93KQ0K Kw0KK1xlY2hvIDp0aHJlZSA6Zm91cg0KKzp0aHJlZSA0DQorLS0gc3ludGF4 IGVycm9yIHN0b3BzIGFsbCBwcm9jZXNzaW5nDQorU0VMRUNUIDUgXDsgU0VM RUNUIDYgKyBcOyBTRUxFQ1Qgd2FybignNi41JykgXDsgU0VMRUNUIDcgOw0K K0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIjsiDQorTElORSAx OiBTRUxFQ1QgNSA7IFNFTEVDVCA2ICsgOyBTRUxFQ1Qgd2FybignNi41Jykg OyBTRUxFQ1QgNyA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Xg0KKy0tIHdpdGggYWJvcnRlZCB0cmFuc2FjdGlvbiwgc3RvcCBvbiBmaXJz dCBlcnJvcg0KK0JFR0lOIFw7IFNFTEVDVCA4IEFTIGVpZ2h0IFw7IFNFTEVD VCA5LzAgQVMgbmluZSBcOyBST0xMQkFDSyBcOyBTRUxFQ1QgMTAgQVMgdGVu IDsNCisgZWlnaHQgDQorLS0tLS0tLQ0KKyAgICAgOA0KKygxIHJvdykNCisN CitFUlJPUjogIGRpdmlzaW9uIGJ5IHplcm8NCistLSBjbG9zZSBwcmV2aW91 c2x5IGFib3J0ZWQgdHJhbnNhY3Rpb24NCitST0xMQkFDSzsNCistLSBtaXNj IFNRTCBjb21tYW5kcw0KKy0tIChub24gU0VMRUNUIG91dHB1dCBpcyBzZW50 IHRvIHN0ZGVyciwgdGh1cyBpcyBub3Qgc2hvd24gaW4gZXhwZWN0ZWQgcmVz dWx0cykNCitTRUxFQ1QgJ29rJyBBUyAiYmVnaW4iIFw7DQorQ1JFQVRFIFRB QkxFIHBzcWxfY29taWNzKHMgVEVYVCkgXDsNCitJTlNFUlQgSU5UTyBwc3Fs X2NvbWljcyBWQUxVRVMgKCdDYWx2aW4nKSwgKCdob2JiZXMnKSBcOw0KK0NP UFkgcHNxbF9jb21pY3MgRlJPTSBTVERJTiBcOw0KK1VQREFURSBwc3FsX2Nv bWljcyBTRVQgcyA9ICdIb2JiZXMnIFdIRVJFIHMgPSAnaG9iYmVzJyBcOw0K K0RFTEVURSBGUk9NIHBzcWxfY29taWNzIFdIRVJFIHMgPSAnTW9lJyBcOw0K K0NPUFkgcHNxbF9jb21pY3MgVE8gU1RET1VUIFw7DQorVFJVTkNBVEUgcHNx bF9jb21pY3MgXDsNCitEUk9QIFRBQkxFIHBzcWxfY29taWNzIFw7DQorU0VM RUNUICdvaycgQVMgImRvbmUiIDsNCisgYmVnaW4gDQorLS0tLS0tLQ0KKyBv aw0KKygxIHJvdykNCisNCitDYWx2aW4NCitTdXNpZQ0KK0hvYmJlcw0KKyBk b25lIA0KKy0tLS0tLQ0KKyBvaw0KKygxIHJvdykNCisNCitEUk9QIEZVTkNU SU9OIHdhcm4oVEVYVCk7DQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC90cmFuc2FjdGlvbnMub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC90cmFuc2FjdGlvbnMub3V0DQppbmRleCAxYjAzMzEwMDI5 Li5lMmI1OGU5ZjI5IDEwMDY0NA0KLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC90cmFuc2FjdGlvbnMub3V0DQorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3RyYW5zYWN0aW9ucy5vdXQNCkBAIC04NjAsMTEgKzg2 MCwyMSBAQCBEUk9QIFRBQkxFIGFiYzsNCiAtLSB0ZXN0cyByZWx5IG9uIHRo ZSBmYWN0IHRoYXQgcHNxbCB3aWxsIG5vdCBicmVhayBTUUwgY29tbWFuZHMg YXBhcnQgYXQgYQ0KIC0tIGJhY2tzbGFzaC1xdW90ZWQgc2VtaWNvbG9uLCBi dXQgd2lsbCBzZW5kIHRoZW0gYXMgb25lIFF1ZXJ5Lg0KIGNyZWF0ZSB0ZW1w IHRhYmxlIGlfdGFibGUgKGYxIGludCk7DQotLS0gcHNxbCB3aWxsIHNob3cg b25seSB0aGUgbGFzdCByZXN1bHQgaW4gYSBtdWx0aS1zdGF0ZW1lbnQgUXVl cnkNCi1TRUxFQ1QgMVw7IFNFTEVDVCAyXDsgU0VMRUNUIDM7DQotID9jb2x1 bW4/IA0KLS0tLS0tLS0tLS0NCi0gICAgICAgIDMNCistLSBwc3FsIHdpbGwg c2hvdyBhbGwgcmVzdWx0cyBvZiBhIG11bHRpLXN0YXRlbWVudCBRdWVyeQ0K K1NFTEVDVCAxIEFTIG9uZVw7IFNFTEVDVCAyIEFTIHR3b1w7IFNFTEVDVCAz IEFTIHRocmVlOw0KKyBvbmUgDQorLS0tLS0NCisgICAxDQorKDEgcm93KQ0K Kw0KKyB0d28gDQorLS0tLS0NCisgICAyDQorKDEgcm93KQ0KKw0KKyB0aHJl ZSANCistLS0tLS0tDQorICAgICAzDQogKDEgcm93KQ0KIA0KIC0tIHRoaXMg aW1wbGljaXRseSBjb21taXRzOg0KQEAgLTg3Niw2ICs4ODYsMTIgQEAgaW5z ZXJ0IGludG8gaV90YWJsZSB2YWx1ZXMoMSlcOyBzZWxlY3QgKiBmcm9tIGlf dGFibGU7DQogDQogLS0gMS8wIGVycm9yIHdpbGwgY2F1c2Ugcm9sbGluZyBi YWNrIHRoZSB3aG9sZSBpbXBsaWNpdCB0cmFuc2FjdGlvbg0KIGluc2VydCBp bnRvIGlfdGFibGUgdmFsdWVzKDIpXDsgc2VsZWN0ICogZnJvbSBpX3RhYmxl XDsgc2VsZWN0IDEvMDsNCisgZjEgDQorLS0tLQ0KKyAgMQ0KKyAgMg0KKygy IHJvd3MpDQorDQogRVJST1I6ICBkaXZpc2lvbiBieSB6ZXJvDQogc2VsZWN0 ICogZnJvbSBpX3RhYmxlOw0KICBmMSANCkBAIC04OTQsOSArOTEwLDE5IEBA IHJvbGxiYWNrOyAgLS0gd2UgYXJlIG5vdCBpbiBhIHRyYW5zYWN0aW9uIGF0 IHRoaXMgcG9pbnQNCiBXQVJOSU5HOiAgdGhlcmUgaXMgbm8gdHJhbnNhY3Rp b24gaW4gcHJvZ3Jlc3MNCiAtLSBiZWdpbiBjb252ZXJ0cyBpbXBsaWNpdCB0 cmFuc2FjdGlvbiBpbnRvIGEgcmVndWxhciBvbmUgdGhhdA0KIC0tIGNhbiBl eHRlbmQgcGFzdCB0aGUgZW5kIG9mIHRoZSBRdWVyeQ0KLXNlbGVjdCAxXDsg YmVnaW5cOyBpbnNlcnQgaW50byBpX3RhYmxlIHZhbHVlcyg1KTsNCitzZWxl Y3QgMSBBUyBvbmVcOyBiZWdpblw7IGluc2VydCBpbnRvIGlfdGFibGUgdmFs dWVzKDUpOw0KKyBvbmUgDQorLS0tLS0NCisgICAxDQorKDEgcm93KQ0KKw0K IGNvbW1pdDsNCi1zZWxlY3QgMVw7IGJlZ2luXDsgaW5zZXJ0IGludG8gaV90 YWJsZSB2YWx1ZXMoNik7DQorc2VsZWN0IDEgQVMgb25lXDsgYmVnaW5cOyBp bnNlcnQgaW50byBpX3RhYmxlIHZhbHVlcyg2KTsNCisgb25lIA0KKy0tLS0t DQorICAgMQ0KKygxIHJvdykNCisNCiByb2xsYmFjazsNCiAtLSBjb21taXQg aW4gaW1wbGljaXQtdHJhbnNhY3Rpb24gc3RhdGUgY29tbWl0cyBidXQgaXNz dWVzIGEgd2FybmluZy4NCiBpbnNlcnQgaW50byBpX3RhYmxlIHZhbHVlcyg3 KVw7IGNvbW1pdFw7IGluc2VydCBpbnRvIGlfdGFibGUgdmFsdWVzKDgpXDsg c2VsZWN0IDEvMDsNCkBAIC05MjIsMjMgKzk0OCw1MyBAQCBzZWxlY3QgKiBm cm9tIGlfdGFibGU7DQogcm9sbGJhY2s7ICAtLSB3ZSBhcmUgbm90IGluIGEg dHJhbnNhY3Rpb24gYXQgdGhpcyBwb2ludA0KIFdBUk5JTkc6ICB0aGVyZSBp cyBubyB0cmFuc2FjdGlvbiBpbiBwcm9ncmVzcw0KIC0tIGltcGxpY2l0IHRy YW5zYWN0aW9uIGJsb2NrIGlzIHN0aWxsIGEgdHJhbnNhY3Rpb24gYmxvY2ss IGZvciBlLmcuIFZBQ1VVTQ0KLVNFTEVDVCAxXDsgVkFDVVVNOw0KK1NFTEVD VCAxIEFTIG9uZVw7IFZBQ1VVTTsNCisgb25lIA0KKy0tLS0tDQorICAgMQ0K KygxIHJvdykNCisNCiBFUlJPUjogIFZBQ1VVTSBjYW5ub3QgcnVuIGluc2lk ZSBhIHRyYW5zYWN0aW9uIGJsb2NrDQotU0VMRUNUIDFcOyBDT01NSVRcOyBW QUNVVU07DQorU0VMRUNUIDIgQVMgdHdvXDsgQ09NTUlUXDsgVkFDVVVNOw0K IFdBUk5JTkc6ICB0aGVyZSBpcyBubyB0cmFuc2FjdGlvbiBpbiBwcm9ncmVz cw0KKyB0d28gDQorLS0tLS0NCisgICAyDQorKDEgcm93KQ0KKw0KIEVSUk9S OiAgVkFDVVVNIGNhbm5vdCBydW4gaW5zaWRlIGEgdHJhbnNhY3Rpb24gYmxv Y2sNCiAtLSB3ZSBkaXNhbGxvdyBzYXZlcG9pbnQtcmVsYXRlZCBjb21tYW5k cyBpbiBpbXBsaWNpdC10cmFuc2FjdGlvbiBzdGF0ZQ0KLVNFTEVDVCAxXDsg U0FWRVBPSU5UIHNwOw0KK1NFTEVDVCAzIEFTIHRocmVlXDsgU0FWRVBPSU5U IHNwOw0KKyB0aHJlZSANCistLS0tLS0tDQorICAgICAzDQorKDEgcm93KQ0K Kw0KIEVSUk9SOiAgU0FWRVBPSU5UIGNhbiBvbmx5IGJlIHVzZWQgaW4gdHJh bnNhY3Rpb24gYmxvY2tzDQotU0VMRUNUIDFcOyBDT01NSVRcOyBTQVZFUE9J TlQgc3A7DQorU0VMRUNUIDQgQVMgZm91clw7IENPTU1JVFw7IFNBVkVQT0lO VCBzcDsNCiBXQVJOSU5HOiAgdGhlcmUgaXMgbm8gdHJhbnNhY3Rpb24gaW4g cHJvZ3Jlc3MNCisgZm91ciANCistLS0tLS0NCisgICAgNA0KKygxIHJvdykN CisNCiBFUlJPUjogIFNBVkVQT0lOVCBjYW4gb25seSBiZSB1c2VkIGluIHRy YW5zYWN0aW9uIGJsb2Nrcw0KLVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcFw7 IFNFTEVDVCAyOw0KK1JPTExCQUNLIFRPIFNBVkVQT0lOVCBzcFw7IFNFTEVD VCA1IEFTIGZpdmU7DQogRVJST1I6ICBST0xMQkFDSyBUTyBTQVZFUE9JTlQg Y2FuIG9ubHkgYmUgdXNlZCBpbiB0cmFuc2FjdGlvbiBibG9ja3MNCi1TRUxF Q1QgMlw7IFJFTEVBU0UgU0FWRVBPSU5UIHNwXDsgU0VMRUNUIDM7DQorU0VM RUNUIDYgQVMgc2l4XDsgUkVMRUFTRSBTQVZFUE9JTlQgc3BcOyBTRUxFQ1Qg NyBBUyBzZXZlbjsNCisgc2l4IA0KKy0tLS0tDQorICAgNg0KKygxIHJvdykN CisNCiBFUlJPUjogIFJFTEVBU0UgU0FWRVBPSU5UIGNhbiBvbmx5IGJlIHVz ZWQgaW4gdHJhbnNhY3Rpb24gYmxvY2tzDQogLS0gYnV0IHRoaXMgaXMgT0ss IGJlY2F1c2UgdGhlIEJFR0lOIGNvbnZlcnRzIGl0IHRvIGEgcmVndWxhciB4 YWN0DQotU0VMRUNUIDFcOyBCRUdJTlw7IFNBVkVQT0lOVCBzcFw7IFJPTExC QUNLIFRPIFNBVkVQT0lOVCBzcFw7IENPTU1JVDsNCitTRUxFQ1QgOFw7IEJF R0lOXDsgU0FWRVBPSU5UIHNwXDsgUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHNw XDsgQ09NTUlUOw0KKyA/Y29sdW1uPyANCistLS0tLS0tLS0tDQorICAgICAg ICA4DQorKDEgcm93KQ0KKw0KIC0tIFRlc3RzIGZvciBBTkQgQ0hBSU4gaW4g aW1wbGljaXQgdHJhbnNhY3Rpb24gYmxvY2tzDQogU0VUIFRSQU5TQUNUSU9O IFJFQUQgT05MWVw7IENPTU1JVCBBTkQgQ0hBSU47ICAtLSBlcnJvcg0KIEVS Uk9SOiAgQ09NTUlUIEFORCBDSEFJTiBjYW4gb25seSBiZSB1c2VkIGluIHRy YW5zYWN0aW9uIGJsb2Nrcw0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2NvcHlkbWwuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29w eWRtbC5zcWwNCmluZGV4IDlhMjlmOWM5YWMuLjQ1NzgzNDIyNTMgMTAwNjQ0 DQotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5ZG1sLnNxbA0KKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weWRtbC5zcWwNCkBAIC03MCwx MCArNzAsMTAgQEAgZHJvcCBydWxlIHFxcSBvbiBjb3B5ZG1sX3Rlc3Q7DQog Y3JlYXRlIGZ1bmN0aW9uIHFxcV90cmlnKCkgcmV0dXJucyB0cmlnZ2VyIGFz ICQkDQogYmVnaW4NCiBpZiB0Z19vcCBpbiAoJ0lOU0VSVCcsICdVUERBVEUn KSB0aGVuDQotICAgIHJhaXNlIG5vdGljZSAnJSAlJywgdGdfb3AsIG5ldy5p ZDsNCisgICAgcmFpc2Ugbm90aWNlICclICUgJScsIHRnX3doZW4sIHRnX29w LCBuZXcuaWQ7DQogICAgIHJldHVybiBuZXc7DQogZWxzZQ0KLSAgICByYWlz ZSBub3RpY2UgJyUgJScsIHRnX29wLCBvbGQuaWQ7DQorICAgIHJhaXNlIG5v dGljZSAnJSAlICUnLCB0Z193aGVuLCB0Z19vcCwgb2xkLmlkOw0KICAgICBy ZXR1cm4gb2xkOw0KIGVuZCBpZjsNCiBlbmQNCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9jb3B5c2VsZWN0LnNxbCBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2NvcHlzZWxlY3Quc3FsDQppbmRleCAxZDk4ZGFkM2M4Li5h YmMzMzkwNGMwIDEwMDY0NA0KLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv Y29weXNlbGVjdC5zcWwNCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Nv cHlzZWxlY3Quc3FsDQpAQCAtODQsNyArODQsNyBAQCBkcm9wIHRhYmxlIHRl c3QxOw0KIC0tIHBzcWwgaGFuZGxpbmcgb2YgQ09QWSBpbiBtdWx0aS1jb21t YW5kIHN0cmluZ3MNCiBjb3B5IChzZWxlY3QgMSkgdG8gc3Rkb3V0XDsgc2Vs ZWN0IDEvMDsJLS0gcm93LCB0aGVuIGVycm9yDQogc2VsZWN0IDEvMFw7IGNv cHkgKHNlbGVjdCAxKSB0byBzdGRvdXQ7IC0tIGVycm9yIG9ubHkNCi1jb3B5 IChzZWxlY3QgMSkgdG8gc3Rkb3V0XDsgY29weSAoc2VsZWN0IDIpIHRvIHN0 ZG91dFw7IHNlbGVjdCAwXDsgc2VsZWN0IDM7IC0tIDEgMiAzDQorY29weSAo c2VsZWN0IDEpIHRvIHN0ZG91dFw7IGNvcHkgKHNlbGVjdCAyKSB0byBzdGRv dXRcOyBzZWxlY3QgM1w7IHNlbGVjdCA0OyAtLSAxIDIgMyA0DQogDQogY3Jl YXRlIHRhYmxlIHRlc3QzIChjIGludCk7DQogc2VsZWN0IDBcOyBjb3B5IHRl c3QzIGZyb20gc3RkaW5cOyBjb3B5IHRlc3QzIGZyb20gc3RkaW5cOyBzZWxl Y3QgMTsgLS0gMQ0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3BzcWwuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHNxbC5zcWwNCmlu ZGV4IDI2YTBiY2Y3MTguLjkwM2M0MTNmOTAgMTAwNjQ0DQotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wc3FsLnNxbA0KKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcHNxbC5zcWwNCkBAIC0xMTgyLDMgKzExODIsMzggQEAgZHJv cCByb2xlIHJlZ3Jlc3NfcGFydGl0aW9uaW5nX3JvbGU7DQogDQogLS0gXGQg b24gdG9hc3QgdGFibGUgKHVzZSBwZ19zdGF0aXN0aWMncyB0b2FzdCB0YWJs ZSwgd2hpY2ggaGFzIGEga25vd24gbmFtZSkNCiBcZCBwZ190b2FzdC5wZ190 b2FzdF8yNjE5DQorDQorLS0NCistLSBjb21iaW5lZCBxdWVyaWVzDQorLS0N CitcZWNobyAnIyBjb21iaW5lZCBxdWVyaWVzIHRlc3RzJw0KK0NSRUFURSBG VU5DVElPTiB3YXJuKG1zZyBURVhUKSBSRVRVUk5TIEJPT0xFQU4gQVMgJCQN CisgIEJFR0lOIFJBSVNFIE5PVElDRSAnd2FybiAlJywgbXNnIDsgUkVUVVJO IFRSVUUgOyBFTkQNCiskJCBMQU5HVUFHRSBwbHBnc3FsOw0KKy0tIHNob3cg Ym90aA0KK1NFTEVDVCAxIEFTIG9uZSBcOyBTRUxFQ1Qgd2FybignMS41Jykg XDsgU0VMRUNUIDIgQVMgdHdvIDsNCistLSBcZ3NldCBhcHBsaWVzIHRvIGxh c3QgcXVlcnkgb25seQ0KK1NFTEVDVCAzIEFTIHRocmVlIFw7IFNFTEVDVCB3 YXJuKCczLjUnKSBcOyBTRUxFQ1QgNCBBUyBmb3VyIFxnc2V0DQorXGVjaG8g OnRocmVlIDpmb3VyDQorLS0gc3ludGF4IGVycm9yIHN0b3BzIGFsbCBwcm9j ZXNzaW5nDQorU0VMRUNUIDUgXDsgU0VMRUNUIDYgKyBcOyBTRUxFQ1Qgd2Fy bignNi41JykgXDsgU0VMRUNUIDcgOw0KKy0tIHdpdGggYWJvcnRlZCB0cmFu c2FjdGlvbiwgc3RvcCBvbiBmaXJzdCBlcnJvcg0KK0JFR0lOIFw7IFNFTEVD VCA4IEFTIGVpZ2h0IFw7IFNFTEVDVCA5LzAgQVMgbmluZSBcOyBST0xMQkFD SyBcOyBTRUxFQ1QgMTAgQVMgdGVuIDsNCistLSBjbG9zZSBwcmV2aW91c2x5 IGFib3J0ZWQgdHJhbnNhY3Rpb24NCitST0xMQkFDSzsNCistLSBtaXNjIFNR TCBjb21tYW5kcw0KKy0tIChub24gU0VMRUNUIG91dHB1dCBpcyBzZW50IHRv IHN0ZGVyciwgdGh1cyBpcyBub3Qgc2hvd24gaW4gZXhwZWN0ZWQgcmVzdWx0 cykNCitTRUxFQ1QgJ29rJyBBUyAiYmVnaW4iIFw7DQorQ1JFQVRFIFRBQkxF IHBzcWxfY29taWNzKHMgVEVYVCkgXDsNCitJTlNFUlQgSU5UTyBwc3FsX2Nv bWljcyBWQUxVRVMgKCdDYWx2aW4nKSwgKCdob2JiZXMnKSBcOw0KK0NPUFkg cHNxbF9jb21pY3MgRlJPTSBTVERJTiBcOw0KK1VQREFURSBwc3FsX2NvbWlj cyBTRVQgcyA9ICdIb2JiZXMnIFdIRVJFIHMgPSAnaG9iYmVzJyBcOw0KK0RF TEVURSBGUk9NIHBzcWxfY29taWNzIFdIRVJFIHMgPSAnTW9lJyBcOw0KK0NP UFkgcHNxbF9jb21pY3MgVE8gU1RET1VUIFw7DQorVFJVTkNBVEUgcHNxbF9j b21pY3MgXDsNCitEUk9QIFRBQkxFIHBzcWxfY29taWNzIFw7DQorU0VMRUNU ICdvaycgQVMgImRvbmUiIDsNCitNb2UNCitTdXNpZQ0KK1wuDQorRFJPUCBG VU5DVElPTiB3YXJuKFRFWFQpOw0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3RyYW5zYWN0aW9ucy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC90cmFuc2FjdGlvbnMuc3FsDQppbmRleCBiZjEwMTY0ODlkLi4zYTdl NWQ0NTgyIDEwMDY0NA0KLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJh bnNhY3Rpb25zLnNxbA0KKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJh bnNhY3Rpb25zLnNxbA0KQEAgLTQ5Myw4ICs0OTMsOCBAQCBEUk9QIFRBQkxF IGFiYzsNCiANCiBjcmVhdGUgdGVtcCB0YWJsZSBpX3RhYmxlIChmMSBpbnQp Ow0KIA0KLS0tIHBzcWwgd2lsbCBzaG93IG9ubHkgdGhlIGxhc3QgcmVzdWx0 IGluIGEgbXVsdGktc3RhdGVtZW50IFF1ZXJ5DQotU0VMRUNUIDFcOyBTRUxF Q1QgMlw7IFNFTEVDVCAzOw0KKy0tIHBzcWwgd2lsbCBzaG93IGFsbCByZXN1 bHRzIG9mIGEgbXVsdGktc3RhdGVtZW50IFF1ZXJ5DQorU0VMRUNUIDEgQVMg b25lXDsgU0VMRUNUIDIgQVMgdHdvXDsgU0VMRUNUIDMgQVMgdGhyZWU7DQog DQogLS0gdGhpcyBpbXBsaWNpdGx5IGNvbW1pdHM6DQogaW5zZXJ0IGludG8g aV90YWJsZSB2YWx1ZXMoMSlcOyBzZWxlY3QgKiBmcm9tIGlfdGFibGU7DQpA QCAtNTEyLDkgKzUxMiw5IEBAIHJvbGxiYWNrOyAgLS0gd2UgYXJlIG5vdCBp biBhIHRyYW5zYWN0aW9uIGF0IHRoaXMgcG9pbnQNCiANCiAtLSBiZWdpbiBj b252ZXJ0cyBpbXBsaWNpdCB0cmFuc2FjdGlvbiBpbnRvIGEgcmVndWxhciBv bmUgdGhhdA0KIC0tIGNhbiBleHRlbmQgcGFzdCB0aGUgZW5kIG9mIHRoZSBR dWVyeQ0KLXNlbGVjdCAxXDsgYmVnaW5cOyBpbnNlcnQgaW50byBpX3RhYmxl IHZhbHVlcyg1KTsNCitzZWxlY3QgMSBBUyBvbmVcOyBiZWdpblw7IGluc2Vy dCBpbnRvIGlfdGFibGUgdmFsdWVzKDUpOw0KIGNvbW1pdDsNCi1zZWxlY3Qg MVw7IGJlZ2luXDsgaW5zZXJ0IGludG8gaV90YWJsZSB2YWx1ZXMoNik7DQor c2VsZWN0IDEgQVMgb25lXDsgYmVnaW5cOyBpbnNlcnQgaW50byBpX3RhYmxl IHZhbHVlcyg2KTsNCiByb2xsYmFjazsNCiANCiAtLSBjb21taXQgaW4gaW1w bGljaXQtdHJhbnNhY3Rpb24gc3RhdGUgY29tbWl0cyBidXQgaXNzdWVzIGEg d2FybmluZy4NCkBAIC01MjcsMTcgKzUyNywxNyBAQCBzZWxlY3QgKiBmcm9t IGlfdGFibGU7DQogcm9sbGJhY2s7ICAtLSB3ZSBhcmUgbm90IGluIGEgdHJh bnNhY3Rpb24gYXQgdGhpcyBwb2ludA0KIA0KIC0tIGltcGxpY2l0IHRyYW5z YWN0aW9uIGJsb2NrIGlzIHN0aWxsIGEgdHJhbnNhY3Rpb24gYmxvY2ssIGZv ciBlLmcuIFZBQ1VVTQ0KLVNFTEVDVCAxXDsgVkFDVVVNOw0KLVNFTEVDVCAx XDsgQ09NTUlUXDsgVkFDVVVNOw0KK1NFTEVDVCAxIEFTIG9uZVw7IFZBQ1VV TTsNCitTRUxFQ1QgMiBBUyB0d29cOyBDT01NSVRcOyBWQUNVVU07DQogDQog LS0gd2UgZGlzYWxsb3cgc2F2ZXBvaW50LXJlbGF0ZWQgY29tbWFuZHMgaW4g aW1wbGljaXQtdHJhbnNhY3Rpb24gc3RhdGUNCi1TRUxFQ1QgMVw7IFNBVkVQ T0lOVCBzcDsNCi1TRUxFQ1QgMVw7IENPTU1JVFw7IFNBVkVQT0lOVCBzcDsN Ci1ST0xMQkFDSyBUTyBTQVZFUE9JTlQgc3BcOyBTRUxFQ1QgMjsNCi1TRUxF Q1QgMlw7IFJFTEVBU0UgU0FWRVBPSU5UIHNwXDsgU0VMRUNUIDM7DQorU0VM RUNUIDMgQVMgdGhyZWVcOyBTQVZFUE9JTlQgc3A7DQorU0VMRUNUIDQgQVMg Zm91clw7IENPTU1JVFw7IFNBVkVQT0lOVCBzcDsNCitST0xMQkFDSyBUTyBT QVZFUE9JTlQgc3BcOyBTRUxFQ1QgNSBBUyBmaXZlOw0KK1NFTEVDVCA2IEFT IHNpeFw7IFJFTEVBU0UgU0FWRVBPSU5UIHNwXDsgU0VMRUNUIDcgQVMgc2V2 ZW47DQogDQogLS0gYnV0IHRoaXMgaXMgT0ssIGJlY2F1c2UgdGhlIEJFR0lO IGNvbnZlcnRzIGl0IHRvIGEgcmVndWxhciB4YWN0DQotU0VMRUNUIDFcOyBC RUdJTlw7IFNBVkVQT0lOVCBzcFw7IFJPTExCQUNLIFRPIFNBVkVQT0lOVCBz cFw7IENPTU1JVDsNCitTRUxFQ1QgOFw7IEJFR0lOXDsgU0FWRVBPSU5UIHNw XDsgUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHNwXDsgQ09NTUlUOw0KIA0KIA0K IC0tIFRlc3RzIGZvciBBTkQgQ0hBSU4gaW4gaW1wbGljaXQgdHJhbnNhY3Rp b24gYmxvY2tzDQo= --8323329-2015243843-1568989541=:3955--