Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1xD2Rm-00000000HUe-3WX7 for pgsql-hackers@arkaria.postgresql.org; Sat, 03 Oct 2026 16:18:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.98.2) (envelope-from ) id 1xD2Rl-00000002M1a-36Rm for pgsql-hackers@arkaria.postgresql.org; Sat, 03 Oct 2026 16:18:49 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1xD2Rl-00000002M1R-0M17 for pgsql-hackers@lists.postgresql.org; Sat, 03 Oct 2026 16:18:49 +0000 Received: from relay6-d.mail.gandi.net ([217.70.183.198]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1xD2Ri-00000000D64-1zx3 for pgsql-hackers@lists.postgresql.org; Sat, 03 Oct 2026 16:18:48 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id C0FC23ED38; Sat, 3 Oct 2026 16:18:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=postgresfriends.org; s=gm1; t=1791044325; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=M05fX314rKYS6YDStNDMlHz0rb4NSTkblSMJP2xLOEA=; b=DiPd1Bhxzq+rposmUxFeTFt6b3ajWaVODlW1XTe3QMcSGKONkpbJPqBfleck6cjZq4Ljho 32KA1w2kpThOvKuRmwK3jmjgkrCkOWqRZWoGS2Z+IaYZH29tNFcrxas/3d+8thL8XNe9T/ I/igh8U2AohybsYaNC/BBPGZcG3qY/a0k3Jsxyd48LcBeu4V2GE2Sp0vcBBT/BewqvGUD0 F3ndi1icXJswrTuqncM1XbJgHP4opz2WfZquVLbUZnteLwu1ScforD5p1562lL53TOZ3gd Xgd3abT4DTMP1zuRwXTEn9tZQRB2T3+IlPessjb+5I8mTaUEba7QKzETXa5+OQ== Content-Type: multipart/mixed; boundary="------------d4vht7D0tZbssTHceIDLCMZH" Message-ID: Date: Sat, 3 Oct 2026 18:18:43 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Logical Implication To: Nathan Bossart Cc: Zsolt Parragi , pgsql-hackers@lists.postgresql.org, Jacob Champion , Isaac Morland References: <37c76707-e6fa-4ee3-b57f-aa0bf1b0bba8@postgresfriends.org> <9ab35dbb-d9a4-4c1e-bae2-7763ddeb720c@postgresfriends.org> <3d779ee0-6596-4dae-b79c-e35b237f83bf@postgresfriends.org> Content-Language: en-US From: Vik Fearing In-Reply-To: X-GND-Sasl: vik@postgresfriends.org X-GND-State: clean X-GND-Score: -100 X-GND-Cause: dmFkZTG2x6QLiloVrwi49I2a04Y4Gc7a+W3xX2QtaG3PBud8yvKA77eHNvIl8lrgQAMQqu8PCLPo/H1vamJvB9zYrzDZ4Aa8gBC1rQB6fHQQBMOzNu2lUIkSK6OSs+mgKvB++2vGL6t2KM3cXkXAHM0ymo8ZYIu4VR375V94dwPkkzeunSJ+pkCxLvV+0FAaX1Om8PJJO21KyuXRQFR5h3Tv/y6NMYMhibMS0WgQ04zRInSGowyr4nssAoAsRHCIUiW1BBlI5Q4nH3Fi1La8NBsmDskFsdMw+r7h/RRGYNTHh2ESBnTeMDsCM8oLcYVUnDLqzdjbD8cYWRQDMrYZc/KP+8l1giZRiDI6vO5ib8rkPRBzvhrgRsgvTmUJJc3kSngZw+PW4klHfs3QVoD/Qiu4wbCNqxv5oraGHNVLXQBWZzY8zg5tWxyH0SoJn+NGxa+t4QmvG1Q3iuvuPPL6qK2/D9lg4WzPk1PmHSaIch1UTQ8ahW/zLboHWOnFjITlEIXm9DKwMPUjh5DoLuhAVSDTKjmIB8+0iXYgiMAsw94tVhWE9z2g6wTfxmRBCSkjB/AUOqCxIQ+5XmcMOce/8zeqqQ81vAC0Ze8oiDMjOSMg66evTa0L1ht14a+Pe8P0t1oACfyV/DUFFDItOaQS+McOSORr1eNeaozPMKTa/G6DxraT/Q List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------d4vht7D0tZbssTHceIDLCMZH Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 30/09/2026 17:09, Nathan Bossart wrote: > On Tue, Sep 29, 2026 at 11:51:39PM +0200, Vik Fearing wrote: >> On 29/09/2026 22:23, Zsolt Parragi wrote: >>> And +1 for using %nonassoc instead >> That's three now.  I'll prepare a new patch. > Thanks. One other thing I'd like to explore a bit more is whether to make > IMPLIES "round-trippable," at least to see how much more complicated it > would be. (I'm happy to do this part BTW). > Attached is a new patch set that makes IMPLIES non-associative, changes the tests, and also survives a round trip.  I put the latter in a separate patch in case it isn't wanted after all. I think I have incorporated everyone's feedback, but let me know if I missed something. -- Vik Fearing --------------d4vht7D0tZbssTHceIDLCMZH Content-Type: text/plain; charset=UTF-8; name="v3-0001-doc-Rearrange-the-logical-operator-truth-tables.patch" Content-Disposition: attachment; filename*0="v3-0001-doc-Rearrange-the-logical-operator-truth-tables.patc"; filename*1="h" Content-Transfer-Encoding: base64 RnJvbSAwODBkMDk5NzIyOGIwNGEyNzVmZGYwOTMwOGY1Yjc4ZmNlM2MyMDFkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBWaWsgRmVhcmluZyA8dmlrQHBvc3RncmVzZnJpZW5k cy5vcmc+CkRhdGU6IFRodSwgMTAgU2VwIDIwMjYgMTQ6MzA6NTEgKzAyMDAKU3ViamVjdDog W1BBVENIIHYzIDEvM10gZG9jOiBSZWFycmFuZ2UgdGhlIGxvZ2ljYWwgb3BlcmF0b3IgdHJ1 dGggdGFibGVzCgpQcmVzZW50IEFORCwgT1IsIGFuZCBOT1QgYXMgbWF0cml4IHRhYmxlcyBp bmRleGVkIGJ5IG9wZXJhbmQsIGluc3RlYWQgb2YKb25lIGNvbWJpbmVkIHJvdy1wZXItY2Fz ZSB0YWJsZSwgYW5kIG5hbWUgdGhlIHRoaXJkIHRydXRoIHZhbHVlIHVua25vd24uCk1hcmsg dGhlIGZpcnN0IGNvbHVtbiBhcyByb3cgaGVhZGVycyBzbyB0aGF0IGl0IGlzIHN0eWxlZCBs aWtlIHRoZSBoZWFkZXIKcm93LgotLS0KIGRvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtbG9naWNh bC5zZ21sIHwgMTA1ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFu Z2VkLCA1OCBpbnNlcnRpb25zKCspLCA0NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWxvZ2ljYWwuc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5j L2Z1bmMtbG9naWNhbC5zZ21sCmluZGV4IDY1ZTUwZTY1YTgxLi41YmE2Mzg5ZGI1NiAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1sb2dpY2FsLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL2Z1bmMvZnVuYy1sb2dpY2FsLnNnbWwKQEAgLTM5LDEwMyArMzksMTE0IEBA CiAgICAgIDxwcmltYXJ5Pm5lZ2F0aW9uPC9wcmltYXJ5PgogICAgIDwvaW5kZXh0ZXJtPgog CiA8c3lub3BzaXM+CiA8dHlwZT5ib29sZWFuPC90eXBlPiA8bGl0ZXJhbD5BTkQ8L2xpdGVy YWw+IDx0eXBlPmJvb2xlYW48L3R5cGU+IDxyZXR1cm52YWx1ZT5ib29sZWFuPC9yZXR1cm52 YWx1ZT4KIDx0eXBlPmJvb2xlYW48L3R5cGU+IDxsaXRlcmFsPk9SPC9saXRlcmFsPiA8dHlw ZT5ib29sZWFuPC90eXBlPiA8cmV0dXJudmFsdWU+Ym9vbGVhbjwvcmV0dXJudmFsdWU+CiA8 bGl0ZXJhbD5OT1Q8L2xpdGVyYWw+IDx0eXBlPmJvb2xlYW48L3R5cGU+IDxyZXR1cm52YWx1 ZT5ib29sZWFuPC9yZXR1cm52YWx1ZT4KIDwvc3lub3BzaXM+CiAKICAgICA8YWNyb255bT5T UUw8L2Fjcm9ueW0+IHVzZXMgYSB0aHJlZS12YWx1ZWQgbG9naWMgc3lzdGVtIHdpdGggdHJ1 ZSwKLSAgICBmYWxzZSwgYW5kIDxsaXRlcmFsPm51bGw8L2xpdGVyYWw+LCB3aGljaCByZXBy ZXNlbnRzIDxxdW90ZT51bmtub3duPC9xdW90ZT4uCi0gICAgT2JzZXJ2ZSB0aGUgZm9sbG93 aW5nIHRydXRoIHRhYmxlczoKKyAgICBmYWxzZSwgYW5kIHVua25vd247IHRoZSBudWxsIHZh bHVlIG9mIGEgPHR5cGU+Ym9vbGVhbjwvdHlwZT4gYW5kIHRoZSB0cnV0aAorICAgIHZhbHVl IHVua25vd24gYXJlIG9uZSBhbmQgdGhlIHNhbWUuICBJbiB0aGUgdHJ1dGggdGFibGVzIGJl bG93IHRoZSBsZWZ0CisgICAgb3BlcmFuZCBvZiBhIGJpbmFyeSBvcGVyYXRvciBzZWxlY3Rz IHRoZSByb3csIGFuZCB0aGUgcmlnaHQgb3BlcmFuZCB0aGUKKyAgICBjb2x1bW46CiAKLSAg ICA8aW5mb3JtYWx0YWJsZT4KKyAgICA8aW5mb3JtYWx0YWJsZSByb3doZWFkZXI9ImZpcnN0 Y29sIj4KICAgICAgPHRncm91cCBjb2xzPSI0Ij4KICAgICAgIDx0aGVhZD4KICAgICAgICA8 cm93PgotICAgICAgICA8ZW50cnk+PHJlcGxhY2VhYmxlPmE8L3JlcGxhY2VhYmxlPjwvZW50 cnk+Ci0gICAgICAgIDxlbnRyeT48cmVwbGFjZWFibGU+YjwvcmVwbGFjZWFibGU+PC9lbnRy eT4KLSAgICAgICAgPGVudHJ5PjxyZXBsYWNlYWJsZT5hPC9yZXBsYWNlYWJsZT4gQU5EIDxy ZXBsYWNlYWJsZT5iPC9yZXBsYWNlYWJsZT48L2VudHJ5PgotICAgICAgICA8ZW50cnk+PHJl cGxhY2VhYmxlPmE8L3JlcGxhY2VhYmxlPiBPUiA8cmVwbGFjZWFibGU+YjwvcmVwbGFjZWFi bGU+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PkFORDwvZW50cnk+CisgICAgICAgIDxlbnRy eT5UcnVlPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PkZhbHNlPC9lbnRyeT4KKyAgICAgICAg PGVudHJ5PlVua25vd248L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgPC90aGVhZD4K IAogICAgICAgPHRib2R5PgogICAgICAgIDxyb3c+Ci0gICAgICAgIDxlbnRyeT5UUlVFPC9l bnRyeT4KLSAgICAgICAgPGVudHJ5PlRSVUU8L2VudHJ5PgotICAgICAgICA8ZW50cnk+VFJV RTwvZW50cnk+Ci0gICAgICAgIDxlbnRyeT5UUlVFPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 PlRydWU8L2VudHJ5PgorICAgICAgICA8ZW50cnk+VHJ1ZTwvZW50cnk+CisgICAgICAgIDxl bnRyeT5GYWxzZTwvZW50cnk+CisgICAgICAgIDxlbnRyeT5Vbmtub3duPC9lbnRyeT4KICAg ICAgICA8L3Jvdz4KIAogICAgICAgIDxyb3c+Ci0gICAgICAgIDxlbnRyeT5UUlVFPC9lbnRy eT4KLSAgICAgICAgPGVudHJ5PkZBTFNFPC9lbnRyeT4KLSAgICAgICAgPGVudHJ5PkZBTFNF PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5PlRSVUU8L2VudHJ5PgorICAgICAgICA8ZW50cnk+ RmFsc2U8L2VudHJ5PgorICAgICAgICA8ZW50cnk+RmFsc2U8L2VudHJ5PgorICAgICAgICA8 ZW50cnk+RmFsc2U8L2VudHJ5PgorICAgICAgICA8ZW50cnk+RmFsc2U8L2VudHJ5PgogICAg ICAgIDwvcm93PgogCiAgICAgICAgPHJvdz4KLSAgICAgICAgPGVudHJ5PlRSVUU8L2VudHJ5 PgotICAgICAgICA8ZW50cnk+TlVMTDwvZW50cnk+Ci0gICAgICAgIDxlbnRyeT5OVUxMPC9l bnRyeT4KLSAgICAgICAgPGVudHJ5PlRSVUU8L2VudHJ5PgorICAgICAgICA8ZW50cnk+VW5r bm93bjwvZW50cnk+CisgICAgICAgIDxlbnRyeT5Vbmtub3duPC9lbnRyeT4KKyAgICAgICAg PGVudHJ5PkZhbHNlPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PlVua25vd248L2VudHJ5Pgog ICAgICAgIDwvcm93PgorICAgICAgPC90Ym9keT4KKyAgICAgPC90Z3JvdXA+CisgICAgPC9p bmZvcm1hbHRhYmxlPgogCisgICAgPGluZm9ybWFsdGFibGUgcm93aGVhZGVyPSJmaXJzdGNv bCI+CisgICAgIDx0Z3JvdXAgY29scz0iNCI+CisgICAgICA8dGhlYWQ+CiAgICAgICAgPHJv dz4KLSAgICAgICAgPGVudHJ5PkZBTFNFPC9lbnRyeT4KLSAgICAgICAgPGVudHJ5PkZBTFNF PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5PkZBTFNFPC9lbnRyeT4KLSAgICAgICAgPGVudHJ5 PkZBTFNFPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5Pk9SPC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5PlRydWU8L2VudHJ5PgorICAgICAgICA8ZW50cnk+RmFsc2U8L2VudHJ5PgorICAgICAg ICA8ZW50cnk+VW5rbm93bjwvZW50cnk+CiAgICAgICAgPC9yb3c+CisgICAgICA8L3RoZWFk PgogCisgICAgICA8dGJvZHk+CiAgICAgICAgPHJvdz4KLSAgICAgICAgPGVudHJ5PkZBTFNF PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5Pk5VTEw8L2VudHJ5PgotICAgICAgICA8ZW50cnk+ RkFMU0U8L2VudHJ5PgotICAgICAgICA8ZW50cnk+TlVMTDwvZW50cnk+CisgICAgICAgIDxl bnRyeT5UcnVlPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PlRydWU8L2VudHJ5PgorICAgICAg ICA8ZW50cnk+VHJ1ZTwvZW50cnk+CisgICAgICAgIDxlbnRyeT5UcnVlPC9lbnRyeT4KICAg ICAgICA8L3Jvdz4KIAogICAgICAgIDxyb3c+Ci0gICAgICAgIDxlbnRyeT5OVUxMPC9lbnRy eT4KLSAgICAgICAgPGVudHJ5Pk5VTEw8L2VudHJ5PgotICAgICAgICA8ZW50cnk+TlVMTDwv ZW50cnk+Ci0gICAgICAgIDxlbnRyeT5OVUxMPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PkZh bHNlPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PlRydWU8L2VudHJ5PgorICAgICAgICA8ZW50 cnk+RmFsc2U8L2VudHJ5PgorICAgICAgICA8ZW50cnk+VW5rbm93bjwvZW50cnk+CisgICAg ICAgPC9yb3c+CisKKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnk+VW5rbm93bjwvZW50 cnk+CisgICAgICAgIDxlbnRyeT5UcnVlPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PlVua25v d248L2VudHJ5PgorICAgICAgICA8ZW50cnk+VW5rbm93bjwvZW50cnk+CiAgICAgICAgPC9y b3c+CiAgICAgICA8L3Rib2R5PgogICAgICA8L3Rncm91cD4KICAgICA8L2luZm9ybWFsdGFi bGU+CiAKLSAgICA8aW5mb3JtYWx0YWJsZT4KLSAgICAgPHRncm91cCBjb2xzPSIyIj4KKyAg ICA8aW5mb3JtYWx0YWJsZSByb3doZWFkZXI9ImZpcnN0Y29sIj4KKyAgICAgPHRncm91cCBj b2xzPSI0Ij4KICAgICAgIDx0aGVhZD4KICAgICAgICA8cm93PgotICAgICAgICA8ZW50cnk+ PHJlcGxhY2VhYmxlPmE8L3JlcGxhY2VhYmxlPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeT5O T1QgPHJlcGxhY2VhYmxlPmE8L3JlcGxhY2VhYmxlPjwvZW50cnk+CisgICAgICAgIDxlbnRy eT5OT1Q8L2VudHJ5PgorICAgICAgICA8ZW50cnk+VHJ1ZTwvZW50cnk+CisgICAgICAgIDxl bnRyeT5GYWxzZTwvZW50cnk+CisgICAgICAgIDxlbnRyeT5Vbmtub3duPC9lbnRyeT4KICAg ICAgICA8L3Jvdz4KICAgICAgIDwvdGhlYWQ+CiAKICAgICAgIDx0Ym9keT4KICAgICAgICA8 cm93PgotICAgICAgICA8ZW50cnk+VFJVRTwvZW50cnk+Ci0gICAgICAgIDxlbnRyeT5GQUxT RTwvZW50cnk+Ci0gICAgICAgPC9yb3c+Ci0KLSAgICAgICA8cm93PgotICAgICAgICA8ZW50 cnk+RkFMU0U8L2VudHJ5PgotICAgICAgICA8ZW50cnk+VFJVRTwvZW50cnk+Ci0gICAgICAg PC9yb3c+Ci0KLSAgICAgICA8cm93PgotICAgICAgICA8ZW50cnk+TlVMTDwvZW50cnk+Ci0g ICAgICAgIDxlbnRyeT5OVUxMPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeT5GYWxzZTwvZW50cnk+CisgICAgICAgIDxlbnRyeT5UcnVlPC9lbnRy eT4KKyAgICAgICAgPGVudHJ5PlVua25vd248L2VudHJ5PgogICAgICAgIDwvcm93PgogICAg ICAgPC90Ym9keT4KICAgICAgPC90Z3JvdXA+CiAgICAgPC9pbmZvcm1hbHRhYmxlPgogICAg PC9wYXJhPgogCiAgICA8cGFyYT4KICAgICBUaGUgb3BlcmF0b3JzIDxsaXRlcmFsPkFORDwv bGl0ZXJhbD4gYW5kIDxsaXRlcmFsPk9SPC9saXRlcmFsPiBhcmUKICAgICBjb21tdXRhdGl2 ZSwgdGhhdCBpcywgeW91IGNhbiBzd2l0Y2ggdGhlIGxlZnQgYW5kIHJpZ2h0IG9wZXJhbmRz CiAgICAgd2l0aG91dCBhZmZlY3RpbmcgdGhlIHJlc3VsdC4gIChIb3dldmVyLCBpdCBpcyBu b3QgZ3VhcmFudGVlZCB0aGF0CgpiYXNlLWNvbW1pdDogZTVkMjU5NTljZjg3NjFjN2RiZGQ3 Y2ZiYjkxMzM4ZTk0YTQwZThlMgotLSAKMi41Ni4wCgo= --------------d4vht7D0tZbssTHceIDLCMZH Content-Type: text/plain; charset=UTF-8; name="v3-0002-Add-the-IMPLIES-boolean-operator.patch" Content-Disposition: attachment; filename="v3-0002-Add-the-IMPLIES-boolean-operator.patch" Content-Transfer-Encoding: base64 RnJvbSA0YWFiYTFlZGNiNjRhNzBlYjNjYTFlZWFjNjNmNmM1Mjg4ZGYxZDhiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBWaWsgRmVhcmluZyA8dmlrQHBvc3RncmVzZnJpZW5k cy5vcmc+CkRhdGU6IFRodSwgMTAgU2VwIDIwMjYgMTQ6MzE6MDMgKzAyMDAKU3ViamVjdDog W1BBVENIIHYzIDIvM10gQWRkIHRoZSBJTVBMSUVTIGJvb2xlYW4gb3BlcmF0b3IKTUlNRS1W ZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNv bnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCmEgSU1QTElFUyBiIGlzIG1hdGVyaWFs IGltcGxpY2F0aW9uLCBwYXJzZWQgYXMgYSBub24tYXNzb2NpYXRpdmUKb3BlcmF0b3IgYmlu ZGluZyBiZWxvdyBPUiBhbmQgZXhwYW5kZWQgdG8gKE5PVCBhIE9SIGIpIGluIHRoZSBwYXJz ZXIsIHNvCnR5cGUgZXJyb3JzIGFyZSByZXBvcnRlZCBhZ2FpbnN0IElNUExJRVMgaXRzZWxm LgoKQmVjYXVzZSBOT1QgYW5kIE9SIGFyZSBhbHJlYWR5IEtsZWVuZSBvcGVyYXRvcnMsIHRo YXQgZXhwYW5zaW9uIHNldHRsZXMKdGhlIHRocmVlLXZhbHVlZCB0cnV0aCB0YWJsZSBvbiBL bGVlbmUgaW1wbGljYXRpb24sIHdoZXJlIFVua25vd24KSU1QTElFUyBVbmtub3duIGlzIFVu a25vd24uICBTUUwgaGFzIHVudGlsIG5vdyB1c2VkIG9ubHkgdGhlIGZyYWdtZW50Cm9mIHRo cmVlLXZhbHVlZCBsb2dpYyBvbiB3aGljaCBLbGVlbmUgYW5kIMWBdWthc2lld2ljeiBhZ3Jl ZSwgYW5kCmltcGxpY2F0aW9uIGlzIGV4YWN0bHkgd2hlcmUgdGhlIHR3byBkaWZmZXI6IMWB dWthc2lld2ljeiB3b3VsZCBtYWtlClVua25vd24gSU1QTElFUyBVbmtub3duIGJlIFRydWUs IHdoaWNoIGNvdWxkIG5vdCB0aGVuIGJlIHdyaXR0ZW4gYXMKTk9UIGEgT1IgYi4KCklNUExJ RVMgaXMgbm9uLWFzc29jaWF0aXZlLCBzbyBhIElNUExJRVMgYiBJTVBMSUVTIGMgaXMgYSBz eW50YXggZXJyb3IKYW5kIHRoZSBpbnRlbmRlZCBncm91cGluZyBoYXMgdG8gYmUgcGFyZW50 aGVzaXplZC4gIFRoZSB0d28gZ3JvdXBpbmdzCmFyZSBkaWZmZXJlbnQgZm9ybXVsYXMsIHRo ZXJlIGlzIG5vIGNvbnNlbnN1cyBvbiB3aGljaCBvbmUgYSBjaGFpbiBvdWdodAp0byBtZWFu LCBhbmQgdGhlIGdyYW1tYXIgZGVjbGluZXMgdG8gY2hvb3NlLCBqdXN0IGFzIGl0IGFscmVh ZHkgZG9lcyBmb3IKYSA9IGIgPSBjLiAgTm90aGluZyBpcyBmb3JlY2xvc2VkIGJ5IHRoYXQ6 IGlmIHRoZSBzdGFuZGFyZCBsYXRlciBnaXZlcwpJTVBMSUVTIGFuIGFzc29jaWF0aXZpdHks IGFjY2VwdGluZyBjaGFpbnMgaXMgYSBvbmUtbGluZSBjaGFuZ2UsIGFuZCBubwpxdWVyeSB0 aGF0IGlzIGFjY2VwdGVkIHRvZGF5IGNoYW5nZXMgbWVhbmluZy4KLS0tCiBkb2Mvc3JjL3Nn bWwvZnVuYy9mdW5jLWxvZ2ljYWwuc2dtbCAgIHwgIDk4ICsrKysrKysrKysrKysrKysrCiBk b2Mvc3JjL3NnbWwvc3ludGF4LnNnbWwgICAgICAgICAgICAgIHwgICA2ICsrCiBzcmMvYmFj a2VuZC9ub2Rlcy9vdXRmdW5jcy5jICAgICAgICAgIHwgICA0ICsKIHNyYy9iYWNrZW5kL25v ZGVzL3JlYWRmdW5jcy5jICAgICAgICAgfCAgIDUgKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueSAgICAgICAgICAgICB8ICAxMSArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4 cHIuYyAgICAgICB8ICAzNSArKysrKysKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aCAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oICAgICAgICAg ICB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Jvb2xlYW4ub3V0IHwgMTQ3 ICsrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ib29s ZWFuLnNxbCAgICAgIHwgIDYwICsrKysrKysrKysrCiAxMCBmaWxlcyBjaGFuZ2VkLCAzNjcg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9mdW5jL2Z1bmMtbG9naWNhbC5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1sb2dp Y2FsLnNnbWwKaW5kZXggNWJhNjM4OWRiNTYuLjBmM2M2ZmViMjk1IDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWxvZ2ljYWwuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv ZnVuYy9mdW5jLWxvZ2ljYWwuc2dtbApAQCAtMzIsMjQgKzMyLDMzIEBACiAgICAgPC9pbmRl eHRlcm0+CiAKICAgICA8aW5kZXh0ZXJtPgogICAgICA8cHJpbWFyeT5kaXNqdW5jdGlvbjwv cHJpbWFyeT4KICAgICA8L2luZGV4dGVybT4KIAogICAgIDxpbmRleHRlcm0+CiAgICAgIDxw cmltYXJ5Pm5lZ2F0aW9uPC9wcmltYXJ5PgogICAgIDwvaW5kZXh0ZXJtPgogCisgICAgPGlu ZGV4dGVybT4KKyAgICAgPHByaW1hcnk+SU1QTElFUzwvcHJpbWFyeT4KKyAgICA8L2luZGV4 dGVybT4KKworICAgIDxpbmRleHRlcm0+CisgICAgIDxwcmltYXJ5PmltcGxpY2F0aW9uPC9w cmltYXJ5PgorICAgIDwvaW5kZXh0ZXJtPgorCiA8c3lub3BzaXM+CiA8dHlwZT5ib29sZWFu PC90eXBlPiA8bGl0ZXJhbD5BTkQ8L2xpdGVyYWw+IDx0eXBlPmJvb2xlYW48L3R5cGU+IDxy ZXR1cm52YWx1ZT5ib29sZWFuPC9yZXR1cm52YWx1ZT4KIDx0eXBlPmJvb2xlYW48L3R5cGU+ IDxsaXRlcmFsPk9SPC9saXRlcmFsPiA8dHlwZT5ib29sZWFuPC90eXBlPiA8cmV0dXJudmFs dWU+Ym9vbGVhbjwvcmV0dXJudmFsdWU+CiA8bGl0ZXJhbD5OT1Q8L2xpdGVyYWw+IDx0eXBl PmJvb2xlYW48L3R5cGU+IDxyZXR1cm52YWx1ZT5ib29sZWFuPC9yZXR1cm52YWx1ZT4KKzx0 eXBlPmJvb2xlYW48L3R5cGU+IDxsaXRlcmFsPklNUExJRVM8L2xpdGVyYWw+IDx0eXBlPmJv b2xlYW48L3R5cGU+IDxyZXR1cm52YWx1ZT5ib29sZWFuPC9yZXR1cm52YWx1ZT4KIDwvc3lu b3BzaXM+CiAKICAgICA8YWNyb255bT5TUUw8L2Fjcm9ueW0+IHVzZXMgYSB0aHJlZS12YWx1 ZWQgbG9naWMgc3lzdGVtIHdpdGggdHJ1ZSwKICAgICBmYWxzZSwgYW5kIHVua25vd247IHRo ZSBudWxsIHZhbHVlIG9mIGEgPHR5cGU+Ym9vbGVhbjwvdHlwZT4gYW5kIHRoZSB0cnV0aAog ICAgIHZhbHVlIHVua25vd24gYXJlIG9uZSBhbmQgdGhlIHNhbWUuICBJbiB0aGUgdHJ1dGgg dGFibGVzIGJlbG93IHRoZSBsZWZ0CiAgICAgb3BlcmFuZCBvZiBhIGJpbmFyeSBvcGVyYXRv ciBzZWxlY3RzIHRoZSByb3csIGFuZCB0aGUgcmlnaHQgb3BlcmFuZCB0aGUKICAgICBjb2x1 bW46CiAKICAgICA8aW5mb3JtYWx0YWJsZSByb3doZWFkZXI9ImZpcnN0Y29sIj4KICAgICAg PHRncm91cCBjb2xzPSI0Ij4KQEAgLTEzOSwxOSArMTQ4LDEwOCBAQAogICAgICAgICA8ZW50 cnk+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5PkZhbHNlPC9lbnRyeT4KICAgICAgICAgPGVu dHJ5PlRydWU8L2VudHJ5PgogICAgICAgICA8ZW50cnk+VW5rbm93bjwvZW50cnk+CiAgICAg ICAgPC9yb3c+CiAgICAgICA8L3Rib2R5PgogICAgICA8L3Rncm91cD4KICAgICA8L2luZm9y bWFsdGFibGU+CiAgICA8L3BhcmE+CiAKKyAgIDxwYXJhPgorICAgIFRoZSA8bGl0ZXJhbD5J TVBMSUVTPC9saXRlcmFsPiBvcGVyYXRvciBpcyBtYXRlcmlhbCBpbXBsaWNhdGlvbjoKKyAg ICA8cmVwbGFjZWFibGU+YTwvcmVwbGFjZWFibGU+IDxsaXRlcmFsPklNUExJRVM8L2xpdGVy YWw+CisgICAgPHJlcGxhY2VhYmxlPmI8L3JlcGxhY2VhYmxlPiBpcyBlcXVpdmFsZW50IHRv IDxsaXRlcmFsPk5PVDwvbGl0ZXJhbD4KKyAgICA8cmVwbGFjZWFibGU+YTwvcmVwbGFjZWFi bGU+IDxsaXRlcmFsPk9SPC9saXRlcmFsPgorICAgIDxyZXBsYWNlYWJsZT5iPC9yZXBsYWNl YWJsZT4sIGFuZCByZWFkcyBhcyA8cXVvdGU+aWYKKyAgICA8cmVwbGFjZWFibGU+YTwvcmVw bGFjZWFibGU+IHRoZW4gPHJlcGxhY2VhYmxlPmI8L3JlcGxhY2VhYmxlPjwvcXVvdGU+Lgor ICAgIFVubGlrZSA8bGl0ZXJhbD5BTkQ8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5PUjwvbGl0 ZXJhbD4gaXQgaXMgbm90CisgICAgY29tbXV0YXRpdmUsIHdoaWNoIGlzIHdoeSBpdHMgdGFi bGUsIHVubGlrZSB0aGVpcnMsIGlzIG5vdCBzeW1tZXRyaWMKKyAgICBhYm91dCB0aGUgZGlh Z29uYWw6CisKKyAgICA8aW5mb3JtYWx0YWJsZSByb3doZWFkZXI9ImZpcnN0Y29sIj4KKyAg ICAgPHRncm91cCBjb2xzPSI0Ij4KKyAgICAgIDx0aGVhZD4KKyAgICAgICA8cm93PgorICAg ICAgICA8ZW50cnk+SU1QTElFUzwvZW50cnk+CisgICAgICAgIDxlbnRyeT5UcnVlPC9lbnRy eT4KKyAgICAgICAgPGVudHJ5PkZhbHNlPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PlVua25v d248L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgPC90aGVhZD4KKworICAgICAgPHRi b2R5PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeT5UcnVlPC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5PlRydWU8L2VudHJ5PgorICAgICAgICA8ZW50cnk+RmFsc2U8L2VudHJ5Pgor ICAgICAgICA8ZW50cnk+VW5rbm93bjwvZW50cnk+CisgICAgICAgPC9yb3c+CisKKyAgICAg ICA8cm93PgorICAgICAgICA8ZW50cnk+RmFsc2U8L2VudHJ5PgorICAgICAgICA8ZW50cnk+ VHJ1ZTwvZW50cnk+CisgICAgICAgIDxlbnRyeT5UcnVlPC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5PlRydWU8L2VudHJ5PgorICAgICAgIDwvcm93PgorCisgICAgICAgPHJvdz4KKyAgICAg ICAgPGVudHJ5PlVua25vd248L2VudHJ5PgorICAgICAgICA8ZW50cnk+VHJ1ZTwvZW50cnk+ CisgICAgICAgIDxlbnRyeT5Vbmtub3duPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PlVua25v d248L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgPC90Ym9keT4KKyAgICAgPC90Z3Jv dXA+CisgICAgPC9pbmZvcm1hbHRhYmxlPgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAg ICA8bGl0ZXJhbD5JTVBMSUVTPC9saXRlcmFsPiBiaW5kcyBsZXNzIHRpZ2h0bHkgdGhhbiBl dmVyeSBvdGhlciBvcGVyYXRvciwKKyAgICA8bGl0ZXJhbD5PUjwvbGl0ZXJhbD4gaW5jbHVk ZWQsIHNvCisgICAgPGxpdGVyYWw+YSA9IDEgSU1QTElFUyBiID0gMiBPUiBjID0gMzwvbGl0 ZXJhbD4gbWVhbnMKKyAgICA8bGl0ZXJhbD4oYSA9IDEpIElNUExJRVMgKChiID0gMikgT1Ig KGMgPSAzKSk8L2xpdGVyYWw+LiAgU2VlIDx4cmVmCisgICAgbGlua2VuZD0ic3FsLXByZWNl ZGVuY2UiLz4uCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIEltcGxpY2F0aW9uIGlz IG5vdCBhc3NvY2lhdGl2ZSwgYW5kIDxsaXRlcmFsPklNUExJRVM8L2xpdGVyYWw+IHRoZXJl Zm9yZQorICAgIGRvZXMgbm90IGNoYWluOiA8cmVwbGFjZWFibGU+YTwvcmVwbGFjZWFibGU+ IDxsaXRlcmFsPklNUExJRVM8L2xpdGVyYWw+CisgICAgPHJlcGxhY2VhYmxlPmI8L3JlcGxh Y2VhYmxlPiA8bGl0ZXJhbD5JTVBMSUVTPC9saXRlcmFsPgorICAgIDxyZXBsYWNlYWJsZT5j PC9yZXBsYWNlYWJsZT4gaXMgYSBzeW50YXggZXJyb3IsIGp1c3QgYXMKKyAgICA8bGl0ZXJh bD5hID0gYiA9IGM8L2xpdGVyYWw+IGlzLiAgVGhlIGdyb3VwaW5nIGhhcyB0byBiZSB3cml0 dGVuCisgICAgZXhwbGljaXRseSwgYW5kIHRoZSB0d28gZ3JvdXBpbmdzIG1lYW4gZGlmZmVy ZW50IHRoaW5nczoKKyAgICAoPHJlcGxhY2VhYmxlPmE8L3JlcGxhY2VhYmxlPiA8bGl0ZXJh bD5JTVBMSUVTPC9saXRlcmFsPgorICAgIDxyZXBsYWNlYWJsZT5iPC9yZXBsYWNlYWJsZT4p IDxsaXRlcmFsPklNUExJRVM8L2xpdGVyYWw+CisgICAgPHJlcGxhY2VhYmxlPmM8L3JlcGxh Y2VhYmxlPiBpcyBub3QgZXF1aXZhbGVudCB0bworICAgIDxyZXBsYWNlYWJsZT5hPC9yZXBs YWNlYWJsZT4gPGxpdGVyYWw+SU1QTElFUzwvbGl0ZXJhbD4KKyAgICAoPHJlcGxhY2VhYmxl PmI8L3JlcGxhY2VhYmxlPiA8bGl0ZXJhbD5JTVBMSUVTPC9saXRlcmFsPgorICAgIDxyZXBs YWNlYWJsZT5jPC9yZXBsYWNlYWJsZT4pLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAg ICBPZiB0aGUgdHdvLCBncm91cGluZyB0byB0aGUgcmlnaHQgaXMgdXN1YWxseSB0aGUgb25l IHdhbnRlZDogaXQgaXMgdGhlCisgICAgc2FtZSBhcyBhIHNpbmdsZSBpbXBsaWNhdGlvbiB3 aG9zZSBhbnRlY2VkZW50IGlzIHRoZSBjb25qdW5jdGlvbiBvZiB0aGUKKyAgICB0d28gbGVh ZGluZyBvcGVyYW5kcywgc28gPHJlcGxhY2VhYmxlPmE8L3JlcGxhY2VhYmxlPgorICAgIDxs aXRlcmFsPklNUExJRVM8L2xpdGVyYWw+ICg8cmVwbGFjZWFibGU+YjwvcmVwbGFjZWFibGU+ CisgICAgPGxpdGVyYWw+SU1QTElFUzwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPmM8L3JlcGxh Y2VhYmxlPikgaXMgZXF1aXZhbGVudCB0bworICAgICg8cmVwbGFjZWFibGU+YTwvcmVwbGFj ZWFibGU+IDxsaXRlcmFsPkFORDwvbGl0ZXJhbD4KKyAgICA8cmVwbGFjZWFibGU+YjwvcmVw bGFjZWFibGU+KSA8bGl0ZXJhbD5JTVBMSUVTPC9saXRlcmFsPgorICAgIDxyZXBsYWNlYWJs ZT5jPC9yZXBsYWNlYWJsZT4sIHRoYXQgaXMsIDxxdW90ZT5pZiBib3RoCisgICAgPHJlcGxh Y2VhYmxlPmE8L3JlcGxhY2VhYmxlPiBhbmQgPHJlcGxhY2VhYmxlPmI8L3JlcGxhY2VhYmxl PiwgdGhlbgorICAgIDxyZXBsYWNlYWJsZT5jPC9yZXBsYWNlYWJsZT48L3F1b3RlPi4gIFRv IHNheSA8cXVvdGU+aWYKKyAgICA8cmVwbGFjZWFibGU+YTwvcmVwbGFjZWFibGU+LCB0aGVu IGJvdGggPHJlcGxhY2VhYmxlPmI8L3JlcGxhY2VhYmxlPiBhbmQKKyAgICA8cmVwbGFjZWFi bGU+YzwvcmVwbGFjZWFibGU+PC9xdW90ZT4gaW5zdGVhZCwgd3JpdGUKKyAgICA8cmVwbGFj ZWFibGU+YTwvcmVwbGFjZWFibGU+IDxsaXRlcmFsPklNUExJRVM8L2xpdGVyYWw+CisgICAg KDxyZXBsYWNlYWJsZT5iPC9yZXBsYWNlYWJsZT4gPGxpdGVyYWw+QU5EPC9saXRlcmFsPgor ICAgIDxyZXBsYWNlYWJsZT5jPC9yZXBsYWNlYWJsZT4pLgorICAgPC9wYXJhPgorCiAgICA8 cGFyYT4KICAgICBUaGUgb3BlcmF0b3JzIDxsaXRlcmFsPkFORDwvbGl0ZXJhbD4gYW5kIDxs aXRlcmFsPk9SPC9saXRlcmFsPiBhcmUKICAgICBjb21tdXRhdGl2ZSwgdGhhdCBpcywgeW91 IGNhbiBzd2l0Y2ggdGhlIGxlZnQgYW5kIHJpZ2h0IG9wZXJhbmRzCiAgICAgd2l0aG91dCBh ZmZlY3RpbmcgdGhlIHJlc3VsdC4gIChIb3dldmVyLCBpdCBpcyBub3QgZ3VhcmFudGVlZCB0 aGF0CiAgICAgdGhlIGxlZnQgb3BlcmFuZCBpcyBldmFsdWF0ZWQgYmVmb3JlIHRoZSByaWdo dCBvcGVyYW5kLiAgU2VlIDx4cmVmCiAgICAgbGlua2VuZD0ic3ludGF4LWV4cHJlc3MtZXZh bCIvPiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUKICAgICBvcmRlciBvZiBldmFs dWF0aW9uIG9mIHN1YmV4cHJlc3Npb25zLikKICAgIDwvcGFyYT4KICAgPC9zZWN0MT4KZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zeW50YXguc2dtbCBiL2RvYy9zcmMvc2dtbC9zeW50 YXguc2dtbAppbmRleCA2NzQ4Mjk5Njg2MS4uZDA4ODdlODY3N2YgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9zeW50YXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvc3ludGF4LnNnbWwK QEAgLTEwOTYsMjAgKzEwOTYsMjYgQEAgQ0FTVCAoICc8cmVwbGFjZWFibGU+c3RyaW5nPC9y ZXBsYWNlYWJsZT4nIEFTIDxyZXBsYWNlYWJsZT50eXBlPC9yZXBsYWNlYWJsZT4gKQogICAg ICAgIDxlbnRyeT48dG9rZW4+QU5EPC90b2tlbj48L2VudHJ5PgogICAgICAgIDxlbnRyeT5s ZWZ0PC9lbnRyeT4KICAgICAgICA8ZW50cnk+bG9naWNhbCBjb25qdW5jdGlvbjwvZW50cnk+ CiAgICAgICA8L3Jvdz4KIAogICAgICAgPHJvdz4KICAgICAgICA8ZW50cnk+PHRva2VuPk9S PC90b2tlbj48L2VudHJ5PgogICAgICAgIDxlbnRyeT5sZWZ0PC9lbnRyeT4KICAgICAgICA8 ZW50cnk+bG9naWNhbCBkaXNqdW5jdGlvbjwvZW50cnk+CiAgICAgICA8L3Jvdz4KKworICAg ICAgPHJvdz4KKyAgICAgICA8ZW50cnk+PHRva2VuPklNUExJRVM8L3Rva2VuPjwvZW50cnk+ CisgICAgICAgPGVudHJ5PjwvZW50cnk+CisgICAgICAgPGVudHJ5PmxvZ2ljYWwgaW1wbGlj YXRpb248L2VudHJ5PgorICAgICAgPC9yb3c+CiAgICAgIDwvdGJvZHk+CiAgICAgPC90Z3Jv dXA+CiAgICA8L3RhYmxlPgogCiAgICA8cGFyYT4KICAgICBOb3RlIHRoYXQgdGhlIG9wZXJh dG9yIHByZWNlZGVuY2UgcnVsZXMgYWxzbyBhcHBseSB0byB1c2VyLWRlZmluZWQKICAgICBv cGVyYXRvcnMgdGhhdCBoYXZlIHRoZSBzYW1lIG5hbWVzIGFzIHRoZSBidWlsdC1pbiBvcGVy YXRvcnMKICAgICBtZW50aW9uZWQgYWJvdmUuICBGb3IgZXhhbXBsZSwgaWYgeW91IGRlZmlu ZSBhCiAgICAgPHF1b3RlPis8L3F1b3RlPiBvcGVyYXRvciBmb3Igc29tZSBjdXN0b20gZGF0 YSB0eXBlIGl0IHdpbGwgaGF2ZQogICAgIHRoZSBzYW1lIHByZWNlZGVuY2UgYXMgdGhlIGJ1 aWx0LWluIDxxdW90ZT4rPC9xdW90ZT4gb3BlcmF0b3IsIG5vCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3Mu YwppbmRleCA0MDk5MDE0MzkyNy4uOWEzNWZmNTNkZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL25vZGVzL291dGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3Mu YwpAQCAtNjM2LDIwICs2MzYsMjQgQEAgX291dEFfRXhwcihTdHJpbmdJbmZvIHN0ciwgY29u c3QgQV9FeHByICpub2RlKQogCQkJV1JJVEVfTk9ERV9GSUVMRChuYW1lKTsKIAkJCWJyZWFr OwogCQljYXNlIEFFWFBSX0JFVFdFRU5fU1lNOgogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZyhzdHIsICIgQkVUV0VFTl9TWU0iKTsKIAkJCVdSSVRFX05PREVfRklFTEQobmFtZSk7CiAJ CQlicmVhazsKIAkJY2FzZSBBRVhQUl9OT1RfQkVUV0VFTl9TWU06CiAJCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKHN0ciwgIiBOT1RfQkVUV0VFTl9TWU0iKTsKIAkJCVdSSVRFX05PREVf RklFTEQobmFtZSk7CiAJCQlicmVhazsKKwkJY2FzZSBBRVhQUl9JTVBMSUVTOgorCQkJYXBw ZW5kU3RyaW5nSW5mb1N0cmluZyhzdHIsICIgSU1QTElFUyIpOworCQkJV1JJVEVfTk9ERV9G SUVMRChuYW1lKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVu cmVjb2duaXplZCBBX0V4cHJfS2luZDogJWQiLCAoaW50KSBub2RlLT5raW5kKTsKIAkJCWJy ZWFrOwogCX0KIAogCVdSSVRFX05PREVfRklFTEQobGV4cHIpOwogCVdSSVRFX05PREVfRklF TEQocmV4cHIpOwogCVdSSVRFX0xPQ0FUSU9OX0ZJRUxEKHJleHByX2xpc3Rfc3RhcnQpOwog CVdSSVRFX0xPQ0FUSU9OX0ZJRUxEKHJleHByX2xpc3RfZW5kKTsKIAlXUklURV9MT0NBVElP Tl9GSUVMRChsb2NhdGlvbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFk ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCmluZGV4IDI4MzlhNzEx ZjllLi40Y2MwMTlhMDEyYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1 bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKQEAgLTUwNywyMCAr NTA3LDI1IEBAIF9yZWFkQV9FeHByKFJlYWROb2RlQ29udGV4dCAqY3R4KQogCWVsc2UgaWYg KGxlbmd0aCA9PSAxMSAmJiBzdHJuY21wKHRva2VuLCAiQkVUV0VFTl9TWU0iLCAxMSkgPT0g MCkKIAl7CiAJCWxvY2FsX25vZGUtPmtpbmQgPSBBRVhQUl9CRVRXRUVOX1NZTTsKIAkJUkVB RF9OT0RFX0ZJRUxEKG5hbWUpOwogCX0KIAllbHNlIGlmIChsZW5ndGggPT0gMTUgJiYgc3Ry bmNtcCh0b2tlbiwgIk5PVF9CRVRXRUVOX1NZTSIsIDE1KSA9PSAwKQogCXsKIAkJbG9jYWxf bm9kZS0+a2luZCA9IEFFWFBSX05PVF9CRVRXRUVOX1NZTTsKIAkJUkVBRF9OT0RFX0ZJRUxE KG5hbWUpOwogCX0KKwllbHNlIGlmIChsZW5ndGggPT0gNyAmJiBzdHJuY21wKHRva2VuLCAi SU1QTElFUyIsIDcpID09IDApCisJeworCQlsb2NhbF9ub2RlLT5raW5kID0gQUVYUFJfSU1Q TElFUzsKKwkJUkVBRF9OT0RFX0ZJRUxEKG5hbWUpOworCX0KIAllbHNlIGlmIChsZW5ndGgg PT0gNSAmJiBzdHJuY21wKHRva2VuLCAiOm5hbWUiLCA1KSA9PSAwKQogCXsKIAkJbG9jYWxf bm9kZS0+a2luZCA9IEFFWFBSX09QOwogCQlsb2NhbF9ub2RlLT5uYW1lID0gbm9kZVJlYWQo Y3R4LCBOVUxMLCAwKTsKIAl9CiAJZWxzZQogCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVk IEFfRXhwciBraW5kOiBcIiUuKnNcIiIsIGxlbmd0aCwgdG9rZW4pOwogCiAJUkVBRF9OT0RF X0ZJRUxEKGxleHByKTsKIAlSRUFEX05PREVfRklFTEQocmV4cHIpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkK aW5kZXggMDU2MzQ1M2ZlMjQuLjczYzNiMWY0OTQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTc0 MiwyMSArNzQyLDIyIEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChj aGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJRVNDQVBFIEVW RU5UIEVYQ0VQVCBFWENMVURFIEVYQ0xVRElORyBFWENMVVNJVkUgRVhFQ1VURSBFWElTVFMg RVhQTEFJTgogCUVYUFJFU1NJT04gRVhURU5TSU9OIEVYVEVSTkFMIEVYVFJBQ1QKIAogCUZB TFNFX1AgRkFNSUxZIEZFVENIIEZJTFRFUiBGSU5BTElaRSBGSVJTVF9QIEZMT0FUX1AgRk9M TE9XSU5HIEZPUgogCUZPUkNFIEZPUkVJR04gRk9STUFUIEZPUldBUkQgRlJFRVpFIEZST00g RlVMTCBGVU5DVElPTiBGVU5DVElPTlMKIAogCUdFTkVSQVRFRCBHTE9CQUwgR1JBTlQgR1JB TlRFRCBHUkVBVEVTVCBHUk9VUF9QIEdST1VQSU5HIEdST1VQUwogCiAJSEFORExFUiBIQVZJ TkcgSEVBREVSX1AgSE9MRCBIT1VSX1AKIAotCUlERU5USVRZX1AgSUZfUCBJR05PUkVfUCBJ TElLRSBJTU1FRElBVEUgSU1NVVRBQkxFIElNUExJQ0lUX1AgSU1QT1JUX1AgSU5fUCBJTkNM VURFCisJSURFTlRJVFlfUCBJRl9QIElHTk9SRV9QIElMSUtFIElNTUVESUFURSBJTU1VVEFC TEUgSU1QTElDSVRfUCBJTVBMSUVTCisJSU1QT1JUX1AgSU5fUCBJTkNMVURFCiAJSU5DTFVE SU5HIElOQ1JFTUVOVCBJTkRFTlQgSU5ERVggSU5ERVhFUyBJTkhFUklUIElOSEVSSVRTIElO SVRJQUxMWSBJTkxJTkVfUAogCUlOTkVSX1AgSU5PVVQgSU5QVVRfUCBJTlNFTlNJVElWRSBJ TlNFUlQgSU5TVEVBRCBJTlRfUCBJTlRFR0VSCiAJSU5URVJTRUNUIElOVEVSVkFMIElOVE8g SU5WT0tFUiBJUyBJU05VTEwgSVNPTEFUSU9OCiAKIAlKT0lOIEpTT04gSlNPTl9BUlJBWSBK U09OX0FSUkFZQUdHIEpTT05fRVhJU1RTIEpTT05fT0JKRUNUIEpTT05fT0JKRUNUQUdHCiAJ SlNPTl9RVUVSWSBKU09OX1NDQUxBUiBKU09OX1NFUklBTElaRSBKU09OX1RBQkxFIEpTT05f VkFMVUUKIAogCUtFRVAgS0VZIEtFWVMKIAogCUxBQkVMIExBTkdVQUdFIExBUkdFX1AgTEFT VF9QIExBVEVSQUxfUApAQCAtODM3LDIwICs4MzgsMjEgQEAgc3RhdGljIE5vZGUgKm1ha2VS ZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUg KnF1ZXJ5KTsKICV0b2tlbgkJTU9ERV9UWVBFX05BTUUKICV0b2tlbgkJTU9ERV9QTFBHU1FM X0VYUFIKICV0b2tlbgkJTU9ERV9QTFBHU1FMX0FTU0lHTjEKICV0b2tlbgkJTU9ERV9QTFBH U1FMX0FTU0lHTjIKICV0b2tlbgkJTU9ERV9QTFBHU1FMX0FTU0lHTjMKIAogCiAvKiBQcmVj ZWRlbmNlOiBsb3dlc3QgdG8gaGlnaGVzdCAqLwogJWxlZnQJCVVOSU9OIEVYQ0VQVAogJWxl ZnQJCUlOVEVSU0VDVAorJW5vbmFzc29jCUlNUExJRVMKICVsZWZ0CQlPUgogJWxlZnQJCUFO RAogJXJpZ2h0CQlOT1QKICVub25hc3NvYwlJUyBJU05VTEwgTk9UTlVMTAkvKiBJUyBzZXRz IHByZWNlZGVuY2UgZm9yIElTIE5VTEwsIGV0YyAqLwogJW5vbmFzc29jCSc8JyAnPicgJz0n IExFU1NfRVFVQUxTIEdSRUFURVJfRVFVQUxTIE5PVF9FUVVBTFMKICVub25hc3NvYwlCRVRX RUVOIElOX1AgTElLRSBJTElLRSBTSU1JTEFSIE5PVF9MQQogJW5vbmFzc29jCUVTQ0FQRQkJ CS8qIEVTQ0FQRSBtdXN0IGJlIGp1c3QgYWJvdmUgTElLRS9JTElLRS9TSU1JTEFSICovCiAK IC8qCiAgKiBTb21ldGltZXMgaXQgaXMgbmVjZXNzYXJ5IHRvIGFzc2lnbiBwcmVjZWRlbmNl IHRvIGtleXdvcmRzIHRoYXQgYXJlIG5vdApAQCAtMTUzNjcsMjAgKzE1MzY5LDI1IEBAIGFf ZXhwcjoJCWNfZXhwcgkJCQkJCQkJCXsgJCQgPSAkMTsgfQogCiAJCQl8IGFfZXhwciBxdWFs X09wIGFfZXhwcgkJCQklcHJlYyBPcAogCQkJCXsgJCQgPSAoTm9kZSAqKSBtYWtlQV9FeHBy KEFFWFBSX09QLCAkMiwgJDEsICQzLCBAMik7IH0KIAkJCXwgcXVhbF9PcCBhX2V4cHIJCQkJ CSVwcmVjIE9wCiAJCQkJeyAkJCA9IChOb2RlICopIG1ha2VBX0V4cHIoQUVYUFJfT1AsICQx LCBOVUxMLCAkMiwgQDEpOyB9CiAKIAkJCXwgYV9leHByIEFORCBhX2V4cHIKIAkJCQl7ICQk ID0gbWFrZUFuZEV4cHIoJDEsICQzLCBAMik7IH0KIAkJCXwgYV9leHByIE9SIGFfZXhwcgog CQkJCXsgJCQgPSBtYWtlT3JFeHByKCQxLCAkMywgQDIpOyB9CisJCQl8IGFfZXhwciBJTVBM SUVTIGFfZXhwcgorCQkJCXsKKwkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlU2ltcGxlQV9FeHBy KEFFWFBSX0lNUExJRVMsICJJTVBMSUVTIiwKKwkJCQkJCQkJCQkJCSAgICQxLCAkMywgQDIp OworCQkJCX0KIAkJCXwgTk9UIGFfZXhwcgogCQkJCXsgJCQgPSBtYWtlTm90RXhwcigkMiwg QDEpOyB9CiAJCQl8IE5PVF9MQSBhX2V4cHIJCQkJCQklcHJlYyBOT1QKIAkJCQl7ICQkID0g bWFrZU5vdEV4cHIoJDIsIEAxKTsgfQogCiAJCQl8IGFfZXhwciBMSUtFIGFfZXhwcgogCQkJ CXsKIAkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlU2ltcGxlQV9FeHByKEFFWFBSX0xJS0UsICJ+ fiIsCiAJCQkJCQkJCQkJCQkgICAkMSwgJDMsIEAyKTsKIAkJCQl9CkBAIC0xODE4MywyMCAr MTgxOTAsMjEgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBIQU5ETEVSCiAJCQl8IEhF QURFUl9QCiAJCQl8IEhPTEQKIAkJCXwgSE9VUl9QCiAJCQl8IElERU5USVRZX1AKIAkJCXwg SUZfUAogCQkJfCBJR05PUkVfUAogCQkJfCBJTU1FRElBVEUKIAkJCXwgSU1NVVRBQkxFCiAJ CQl8IElNUExJQ0lUX1AKKwkJCXwgSU1QTElFUwogCQkJfCBJTVBPUlRfUAogCQkJfCBJTkNM VURFCiAJCQl8IElOQ0xVRElORwogCQkJfCBJTkNSRU1FTlQKIAkJCXwgSU5ERU5UCiAJCQl8 IElOREVYCiAJCQl8IElOREVYRVMKIAkJCXwgSU5IRVJJVAogCQkJfCBJTkhFUklUUwogCQkJ fCBJTkxJTkVfUApAQCAtMTg3NzUsMjAgKzE4NzgzLDIxIEBAIGJhcmVfbGFiZWxfa2V5d29y ZDoKIAkJCXwgR1JPVVBTCiAJCQl8IEhBTkRMRVIKIAkJCXwgSEVBREVSX1AKIAkJCXwgSE9M RAogCQkJfCBJREVOVElUWV9QCiAJCQl8IElGX1AKIAkJCXwgSUxJS0UKIAkJCXwgSU1NRURJ QVRFCiAJCQl8IElNTVVUQUJMRQogCQkJfCBJTVBMSUNJVF9QCisJCQl8IElNUExJRVMKIAkJ CXwgSU1QT1JUX1AKIAkJCXwgSU5fUAogCQkJfCBJTkNMVURFCiAJCQl8IElOQ0xVRElORwog CQkJfCBJTkNSRU1FTlQKIAkJCXwgSU5ERU5UCiAJCQl8IElOREVYCiAJCQl8IElOREVYRVMK IAkJCXwgSU5IRVJJVAogCQkJfCBJTkhFUklUUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMK aW5kZXggMDVhNmI3MmQ0YzkuLjNmOWRjODZmYTAwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9l eHByLmMKQEAgLTQ3LDIwICs0NywyMSBAQCBib29sCQlUcmFuc2Zvcm1fbnVsbF9lcXVhbHMg PSBmYWxzZTsKIAogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUV4cHJSZWN1cnNlKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTm9kZSAqZXhwcik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtUGFyYW1S ZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQYXJhbVJlZiAqcHJlZik7CiBzdGF0aWMgTm9kZSAq dHJhbnNmb3JtQUV4cHJPcChQYXJzZVN0YXRlICpwc3RhdGUsIEFfRXhwciAqYSk7CiBzdGF0 aWMgTm9kZSAqdHJhbnNmb3JtQUV4cHJPcEFueShQYXJzZVN0YXRlICpwc3RhdGUsIEFfRXhw ciAqYSk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtQUV4cHJPcEFsbChQYXJzZVN0YXRlICpw c3RhdGUsIEFfRXhwciAqYSk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtQUV4cHJEaXN0aW5j dChQYXJzZVN0YXRlICpwc3RhdGUsIEFfRXhwciAqYSk7CiBzdGF0aWMgTm9kZSAqdHJhbnNm b3JtQUV4cHJOdWxsSWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0V4cHIgKmEpOwogc3RhdGlj IE5vZGUgKnRyYW5zZm9ybUFFeHBySW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0V4cHIgKmEp Owogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUFFeHByQmV0d2VlbihQYXJzZVN0YXRlICpwc3Rh dGUsIEFfRXhwciAqYSk7CitzdGF0aWMgTm9kZSAqdHJhbnNmb3JtQUV4cHJJbXBsaWVzKFBh cnNlU3RhdGUgKnBzdGF0ZSwgQV9FeHByICphKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1N ZXJnZVN1cHBvcnRGdW5jKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTWVyZ2VTdXBwb3J0RnVuYyAq Zik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtQm9vbEV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRl LCBCb29sRXhwciAqYSk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtRnVuY0NhbGwoUGFyc2VT dGF0ZSAqcHN0YXRlLCBGdW5jQ2FsbCAqZm4pOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybU11 bHRpQXNzaWduUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTXVsdGlBc3NpZ25SZWYgKm1hcmVm KTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1DYXNlRXhwcihQYXJzZVN0YXRlICpwc3RhdGUs IENhc2VFeHByICpjKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1TdWJMaW5rKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgU3ViTGluayAqc3VibGluayk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3Jt QXJyYXlFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9BcnJheUV4cHIgKmEsCiAJCQkJCQkJ CU9pZCBhcnJheV90eXBlLCBPaWQgZWxlbWVudF90eXBlLCBpbnQzMiB0eXBtb2QpOwogc3Rh dGljIE5vZGUgKnRyYW5zZm9ybVJvd0V4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSb3dFeHBy ICpyLCBib29sIGFsbG93RGVmYXVsdCk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtQ29hbGVz Y2VFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29hbGVzY2VFeHByICpjKTsKQEAgLTIwNiwy MCArMjA3LDIzIEBAIHRyYW5zZm9ybUV4cHJSZWN1cnNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwg Tm9kZSAqZXhwcikKIAkJCQkJY2FzZSBBRVhQUl9TSU1JTEFSOgogCQkJCQkJLyogd2UgY2Fu IHRyYW5zZm9ybSB0aGVzZSBqdXN0IGxpa2UgQUVYUFJfT1AgKi8KIAkJCQkJCXJlc3VsdCA9 IHRyYW5zZm9ybUFFeHByT3AocHN0YXRlLCBhKTsKIAkJCQkJCWJyZWFrOwogCQkJCQljYXNl IEFFWFBSX0JFVFdFRU46CiAJCQkJCWNhc2UgQUVYUFJfTk9UX0JFVFdFRU46CiAJCQkJCWNh c2UgQUVYUFJfQkVUV0VFTl9TWU06CiAJCQkJCWNhc2UgQUVYUFJfTk9UX0JFVFdFRU5fU1lN OgogCQkJCQkJcmVzdWx0ID0gdHJhbnNmb3JtQUV4cHJCZXR3ZWVuKHBzdGF0ZSwgYSk7CiAJ CQkJCQlicmVhazsKKwkJCQkJY2FzZSBBRVhQUl9JTVBMSUVTOgorCQkJCQkJcmVzdWx0ID0g dHJhbnNmb3JtQUV4cHJJbXBsaWVzKHBzdGF0ZSwgYSk7CisJCQkJCQlicmVhazsKIAkJCQkJ ZGVmYXVsdDoKIAkJCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgQV9FeHByIGtpbmQ6 ICVkIiwgYS0+a2luZCk7CiAJCQkJCQlyZXN1bHQgPSBOVUxMOwkvKiBrZWVwIGNvbXBpbGVy IHF1aWV0ICovCiAJCQkJCQlicmVhazsKIAkJCQl9CiAJCQkJYnJlYWs7CiAJCQl9CiAKIAkJ Y2FzZSBUX0Jvb2xFeHByOgogCQkJcmVzdWx0ID0gdHJhbnNmb3JtQm9vbEV4cHIocHN0YXRl LCAoQm9vbEV4cHIgKikgZXhwcik7CkBAIC0xNDM5LDIwICsxNDQzLDUxIEBAIHRyYW5zZm9y bUJvb2xFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQm9vbEV4cHIgKmEpCiAJCU5vZGUJICAg KmFyZyA9IChOb2RlICopIGxmaXJzdChsYyk7CiAKIAkJYXJnID0gdHJhbnNmb3JtRXhwclJl Y3Vyc2UocHN0YXRlLCBhcmcpOwogCQlhcmcgPSBjb2VyY2VfdG9fYm9vbGVhbihwc3RhdGUs IGFyZywgb3BuYW1lKTsKIAkJYXJncyA9IGxhcHBlbmQoYXJncywgYXJnKTsKIAl9CiAKIAly ZXR1cm4gKE5vZGUgKikgbWFrZUJvb2xFeHByKGEtPmJvb2xvcCwgYXJncywgYS0+bG9jYXRp b24pOwogfQogCisvKgorICogVHJhbnNmb3JtICJhIElNUExJRVMgYiIgaW50byB0aGUgZXF1 aXZhbGVudCAiTk9UIGEgT1IgYiIuCisgKgorICogV2UgZXhwYW5kIHRoaXMgaGVyZSByYXRo ZXIgdGhhbiBpbiBncmFtLnkgc28gdGhhdCBhIG5vbi1ib29sZWFuIG9wZXJhbmQgaXMKKyAq IGNvbXBsYWluZWQgb2YgaW4gdGVybXMgb2YgSU1QTElFUywgcmF0aGVyIHRoYW4gaW4gdGVy bXMgb2YgdGhlIE5PVCBvciBPUgorICogdGhhdCB0aGUgY29uc3RydWN0IGhhcHBlbnMgdG8g YmUgYnVpbHQgZnJvbS4KKyAqLworc3RhdGljIE5vZGUgKgordHJhbnNmb3JtQUV4cHJJbXBs aWVzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9FeHByICphKQoreworCU5vZGUJICAgKmxleHBy OworCU5vZGUJICAgKnJleHByOworCisJbGV4cHIgPSB0cmFuc2Zvcm1FeHByUmVjdXJzZShw c3RhdGUsIGEtPmxleHByKTsKKwlyZXhwciA9IHRyYW5zZm9ybUV4cHJSZWN1cnNlKHBzdGF0 ZSwgYS0+cmV4cHIpOworCisJbGV4cHIgPSBjb2VyY2VfdG9fYm9vbGVhbihwc3RhdGUsIGxl eHByLCAiSU1QTElFUyIpOworCXJleHByID0gY29lcmNlX3RvX2Jvb2xlYW4ocHN0YXRlLCBy ZXhwciwgIklNUExJRVMiKTsKKworCS8qCisJICogRWFjaCBvcGVyYW5kIGFwcGVhcnMgZXhh Y3RseSBvbmNlIGluIHRoZSBleHBhbnNpb24sIHNvIHVubGlrZSBCRVRXRUVOCisJICogdGhp cyBkb2VzIG5vdCByaXNrIGV2YWx1YXRpbmcgYW55dGhpbmcgdHdpY2UuCisJICovCisJcmV0 dXJuIChOb2RlICopIG1ha2VCb29sRXhwcihPUl9FWFBSLAorCQkJCQkJCQkgbGlzdF9tYWtl MihtYWtlQm9vbEV4cHIoTk9UX0VYUFIsCisJCQkJCQkJCQkJCQkJCSBsaXN0X21ha2UxKGxl eHByKSwKKwkJCQkJCQkJCQkJCQkJIGV4cHJMb2NhdGlvbihsZXhwcikpLAorCQkJCQkJCQkJ CQlyZXhwciksCisJCQkJCQkJCSBhLT5sb2NhdGlvbik7Cit9CisKIHN0YXRpYyBOb2RlICoK IHRyYW5zZm9ybUZ1bmNDYWxsKFBhcnNlU3RhdGUgKnBzdGF0ZSwgRnVuY0NhbGwgKmZuKQog ewogCU5vZGUJICAgKmxhc3Rfc3JmID0gcHN0YXRlLT5wX2xhc3Rfc3JmOwogCUxpc3QJICAg KnRhcmdzOwogCUxpc3RDZWxsICAgKmFyZ3M7CiAKIAkvKiBUcmFuc2Zvcm0gdGhlIGxpc3Qg b2YgYXJndW1lbnRzIC4uLiAqLwogCXRhcmdzID0gTklMOwogCWZvcmVhY2goYXJncywgZm4t PmFyZ3MpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggMGRlYmNkMTkzYWIuLjQ1ZmE4 YzcwMjYzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysr IGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0zMzUsMjAgKzMzNSwyMSBA QCB0eXBlZGVmIGVudW0gQV9FeHByX0tpbmQKIAlBRVhQUl9OT1RfRElTVElOQ1QsCQkJLyog SVMgTk9UIERJU1RJTkNUIEZST00gLSBuYW1lIG11c3QgYmUgIj0iICovCiAJQUVYUFJfTlVM TElGLAkJCQkvKiBOVUxMSUYgLSBuYW1lIG11c3QgYmUgIj0iICovCiAJQUVYUFJfSU4sCQkJ CQkvKiBbTk9UXSBJTiAtIG5hbWUgbXVzdCBiZSAiPSIgb3IgIjw+IiAqLwogCUFFWFBSX0xJ S0UsCQkJCQkvKiBbTk9UXSBMSUtFIC0gbmFtZSBtdXN0IGJlICJ+fiIgb3IgIiF+fiIgKi8K IAlBRVhQUl9JTElLRSwJCQkJLyogW05PVF0gSUxJS0UgLSBuYW1lIG11c3QgYmUgIn5+KiIg b3IgIiF+fioiICovCiAJQUVYUFJfU0lNSUxBUiwJCQkJLyogW05PVF0gU0lNSUxBUiAtIG5h bWUgbXVzdCBiZSAifiIgb3IgIiF+IiAqLwogCUFFWFBSX0JFVFdFRU4sCQkJCS8qIG5hbWUg bXVzdCBiZSAiQkVUV0VFTiIgKi8KIAlBRVhQUl9OT1RfQkVUV0VFTiwJCQkvKiBuYW1lIG11 c3QgYmUgIk5PVCBCRVRXRUVOIiAqLwogCUFFWFBSX0JFVFdFRU5fU1lNLAkJCS8qIG5hbWUg bXVzdCBiZSAiQkVUV0VFTiBTWU1NRVRSSUMiICovCiAJQUVYUFJfTk9UX0JFVFdFRU5fU1lN LAkJLyogbmFtZSBtdXN0IGJlICJOT1QgQkVUV0VFTiBTWU1NRVRSSUMiICovCisJQUVYUFJf SU1QTElFUywJCQkJLyogbmFtZSBtdXN0IGJlICJJTVBMSUVTIiAqLwogfSBBX0V4cHJfS2lu ZDsKIAogdHlwZWRlZiBzdHJ1Y3QgQV9FeHByCiB7CiAJcGdfbm9kZV9hdHRyKGN1c3RvbV9y ZWFkX3dyaXRlKQogCiAJTm9kZVRhZwkJdHlwZTsKIAlBX0V4cHJfS2luZCBraW5kOwkJCS8q IHNlZSBhYm92ZSAqLwogCUxpc3QJICAgKm5hbWU7CQkJLyogcG9zc2libHktcXVhbGlmaWVk IG5hbWUgb2Ygb3BlcmF0b3IgKi8KIAlOb2RlCSAgICpsZXhwcjsJCQkvKiBsZWZ0IGFyZ3Vt ZW50LCBvciBOVUxMIGlmIG5vbmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNl ci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCA1M2FlOTZj MDM5OS4uOTRkMmFlZjFiYjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xp c3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTIwMCwyMCArMjAw LDIxIEBAIFBHX0tFWVdPUkQoImhhdmluZyIsIEhBVklORywgUkVTRVJWRURfS0VZV09SRCwg QVNfTEFCRUwpCiBQR19LRVlXT1JEKCJoZWFkZXIiLCBIRUFERVJfUCwgVU5SRVNFUlZFRF9L RVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiaG9sZCIsIEhPTEQsIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImhvdXIiLCBIT1VSX1AsIFVO UkVTRVJWRURfS0VZV09SRCwgQVNfTEFCRUwpCiBQR19LRVlXT1JEKCJpZGVudGl0eSIsIElE RU5USVRZX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo ImlmIiwgSUZfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgiaWdub3JlIiwgSUdOT1JFX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQVNfTEFCRUwpCiBQ R19LRVlXT1JEKCJpbGlrZSIsIElMSUtFLCBUWVBFX0ZVTkNfTkFNRV9LRVlXT1JELCBCQVJF X0xBQkVMKQogUEdfS0VZV09SRCgiaW1tZWRpYXRlIiwgSU1NRURJQVRFLCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJpbW11dGFibGUiLCBJTU1VVEFC TEUsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImltcGxp Y2l0IiwgSU1QTElDSVRfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdf S0VZV09SRCgiaW1wbGllcyIsIElNUExJRVMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoImltcG9ydCIsIElNUE9SVF9QLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJpbiIsIElOX1AsIFJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJpbmNsdWRlIiwgSU5DTFVERSwgVU5SRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiaW5jbHVkaW5nIiwgSU5D TFVESU5HLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJp bmNyZW1lbnQiLCBJTkNSRU1FTlQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoImluZGVudCIsIElOREVOVCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJF X0xBQkVMKQogUEdfS0VZV09SRCgiaW5kZXgiLCBJTkRFWCwgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiaW5kZXhlcyIsIElOREVYRVMsIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImluaGVyaXQiLCBJTkhFUklU LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJpbmhlcml0 cyIsIElOSEVSSVRTLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Jvb2xlYW4ub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ib29sZWFuLm91dAppbmRleCAwZTk5ZWI3ZmZjMC4uNWMwOTJi MDlhNWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYm9vbGVhbi5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ib29sZWFuLm91dApAQCAtNTU5 LDIwICs1NTksMTY3IEBAIFNFTEVDVCBpc3RydWUgT1IgaXNmYWxzZSBPUiBpc251bCBGUk9N IGJvb2x0Ymw0OwogLS0tLS0tLS0tLQogIHQKICgxIHJvdykKIAogU0VMRUNUIGlzbnVsIE9S IGlzdHJ1ZSBPUiBpc2ZhbHNlIEZST00gYm9vbHRibDQ7CiAgP2NvbHVtbj8gCiAtLS0tLS0t LS0tCiAgdAogKDEgcm93KQogCistLSBJbXBsaWNhdGlvbjogImEgSU1QTElFUyBiIiBpcyAi Tk9UIGEgT1IgYiIuICBJdCBpcyBub3QgY29tbXV0YXRpdmUsIHNvIGFsbAorLS0gbmluZSBj b21iaW5hdGlvbnMgb2YgdGhyZWUtdmFsdWVkIGxvZ2ljIGhhdmUgdG8gYmUgY2hlY2tlZC4K K1NFTEVDVCBpc3RydWUgSU1QTElFUyBpc3RydWUsIGlzdHJ1ZSBJTVBMSUVTIGlzZmFsc2Us IGlzdHJ1ZSBJTVBMSUVTIGlzbnVsCisgIEZST00gYm9vbHRibDQ7CisgP2NvbHVtbj8gfCA/ Y29sdW1uPyB8ID9jb2x1bW4/IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0K KyB0ICAgICAgICB8IGYgICAgICAgIHwgKG51bGwpCisoMSByb3cpCisKK1NFTEVDVCBpc2Zh bHNlIElNUExJRVMgaXN0cnVlLCBpc2ZhbHNlIElNUExJRVMgaXNmYWxzZSwgaXNmYWxzZSBJ TVBMSUVTIGlzbnVsCisgIEZST00gYm9vbHRibDQ7CisgP2NvbHVtbj8gfCA/Y29sdW1uPyB8 ID9jb2x1bW4/IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB0ICAgICAg ICB8IHQgICAgICAgIHwgdAorKDEgcm93KQorCitTRUxFQ1QgaXNudWwgSU1QTElFUyBpc3Ry dWUsIGlzbnVsIElNUExJRVMgaXNmYWxzZSwgaXNudWwgSU1QTElFUyBpc251bAorICBGUk9N IGJvb2x0Ymw0OworID9jb2x1bW4/IHwgP2NvbHVtbj8gfCA/Y29sdW1uPyAKKy0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdCAgICAgICAgfCAobnVsbCkgICB8IChudWxs KQorKDEgcm93KQorCistLSB0aGUgc2FtZSwgYXMgY29uc3RhbnRzLCBzbyB0aGF0IGNvbnN0 YW50IGZvbGRpbmcgaXMgZXhlcmNpc2VkIHRvbworU0VMRUNUIHRydWUgSU1QTElFUyB0cnVl LCB0cnVlIElNUExJRVMgZmFsc2UsIHRydWUgSU1QTElFUyBudWxsOworID9jb2x1bW4/IHwg P2NvbHVtbj8gfCA/Y29sdW1uPyAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgdCAgICAgICAgfCBmICAgICAgICB8IChudWxsKQorKDEgcm93KQorCitTRUxFQ1QgZmFs c2UgSU1QTElFUyB0cnVlLCBmYWxzZSBJTVBMSUVTIGZhbHNlLCBmYWxzZSBJTVBMSUVTIG51 bGw7CisgP2NvbHVtbj8gfCA/Y29sdW1uPyB8ID9jb2x1bW4/IAorLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0KKyB0ICAgICAgICB8IHQgICAgICAgIHwgdAorKDEgcm93KQor CitTRUxFQ1QgbnVsbCBJTVBMSUVTIHRydWUsIG51bGwgSU1QTElFUyBmYWxzZSwgbnVsbDo6 Ym9vbCBJTVBMSUVTIG51bGw7CisgP2NvbHVtbj8gfCA/Y29sdW1uPyB8ID9jb2x1bW4/IAor LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB0ICAgICAgICB8IChudWxsKSAg IHwgKG51bGwpCisoMSByb3cpCisKKy0tIElNUExJRVMgaXMgbm9uLWFzc29jaWF0aXZlLCBz byBhIGNoYWluIGlzIHJlZnVzZWQgcmF0aGVyIHRoYW4gZ3JvdXBlZAorU0VMRUNUIGlzZmFs c2UgSU1QTElFUyBpc3RydWUgSU1QTElFUyBpc2ZhbHNlIEZST00gYm9vbHRibDQ7ICAgIC0t IGVycm9yCitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJJTVBMSUVTIgorTElO RSAxOiBTRUxFQ1QgaXNmYWxzZSBJTVBMSUVTIGlzdHJ1ZSBJTVBMSUVTIGlzZmFsc2UgRlJP TSBib29sdGJsNDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor LS0gYW5kIGl0IGhhcyB0byBiZSwgYmVjYXVzZSB0aGUgdHdvIGdyb3VwaW5ncyBhcmUgZGlm ZmVyZW50IGZvcm11bGFzLiAgVGhlCistLSBmaXJzdCByb3cgYmVsb3cgaXMgdGhlIGludGVy ZXN0aW5nIG9uZTogaXQgdGVsbHMgdGhlbSBhcGFydC4KK1NFTEVDVCBhLCBiLCBjLAorICAg ICAgIChhIElNUExJRVMgYikgSU1QTElFUyBjIEFTIGdyb3VwZWRfbGVmdCwKKyAgICAgICBh IElNUExJRVMgKGIgSU1QTElFUyBjKSBBUyBncm91cGVkX3JpZ2h0LAorICAgICAgIChhIEFO RCBiKSBJTVBMSUVTIGMgQVMgY29ual9hbnRlY2VkZW50LAorICAgICAgIGEgSU1QTElFUyAo YiBBTkQgYykgQVMgY29ual9jb25zZXF1ZW50CisgIEZST00gKFZBTFVFUyAoZmFsc2UsIGZh bHNlLCBmYWxzZSksCisgICAgICAgICAgICAgICAodHJ1ZSwgZmFsc2UsIGZhbHNlKSwKKyAg ICAgICAgICAgICAgICh0cnVlLCB0cnVlLCB0cnVlKSkgQVMgdChhLCBiLCBjKTsKKyBhIHwg YiB8IGMgfCBncm91cGVkX2xlZnQgfCBncm91cGVkX3JpZ2h0IHwgY29ual9hbnRlY2VkZW50 IHwgY29ual9jb25zZXF1ZW50IAorLS0tKy0tLSstLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tCisgZiB8IGYg fCBmIHwgZiAgICAgICAgICAgIHwgdCAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICB8 IHQKKyB0IHwgZiB8IGYgfCB0ICAgICAgICAgICAgfCB0ICAgICAgICAgICAgIHwgdCAgICAg ICAgICAgICAgIHwgZgorIHQgfCB0IHwgdCB8IHQgICAgICAgICAgICB8IHQgICAgICAgICAg ICAgfCB0ICAgICAgICAgICAgICAgfCB0CisoMyByb3dzKQorCistLSBncm91cGluZyB0byB0 aGUgcmlnaHQgaXMgaW1wbGljYXRpb24gZnJvbSB0aGUgY29uanVuY3Rpb24gb2YgdGhlIG9w ZXJhbmRzCistLSAoZXhwb3J0YXRpb24pLCB3aGljaCBob2xkcyBmb3IgYWxsIHRocmVlIHRy dXRoIHZhbHVlcywgc28gbm8gcm93cyBoZXJlCitTRUxFQ1QgYSwgYiwgYworICBGUk9NIChW QUxVRVMgKHRydWUpLCAoZmFsc2UpLCAobnVsbCkpIEFTIHgoYSksCisgICAgICAgKFZBTFVF UyAodHJ1ZSksIChmYWxzZSksIChudWxsKSkgQVMgeShiKSwKKyAgICAgICAoVkFMVUVTICh0 cnVlKSwgKGZhbHNlKSwgKG51bGwpKSBBUyB6KGMpCisgV0hFUkUgKGEgSU1QTElFUyAoYiBJ TVBMSUVTIGMpKSBJUyBESVNUSU5DVCBGUk9NICgoYSBBTkQgYikgSU1QTElFUyBjKTsKKyBh IHwgYiB8IGMgCistLS0rLS0tKy0tLQorKDAgcm93cykKKworLS0gYW5kIGJpbmRzIGxvb3Nl ciB0aGFuIE9SLCBBTkQsIE5PVCwgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzIGFuZCBJUwor U0VMRUNUIGlzdHJ1ZSBPUiBpc2ZhbHNlIElNUExJRVMgaXNmYWxzZSBGUk9NIGJvb2x0Ymw0 OworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworU0VMRUNUIGlzZmFs c2UgSU1QTElFUyBpc2ZhbHNlIEFORCBpc2ZhbHNlIEZST00gYm9vbHRibDQ7CisgP2NvbHVt bj8gCistLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgTk9UIGlzdHJ1ZSBJTVBM SUVTIGlzdHJ1ZSBGUk9NIGJvb2x0Ymw0OworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHQK KygxIHJvdykKKworU0VMRUNUIDEgPSAxIElNUExJRVMgMiA9IDM7CisgP2NvbHVtbj8gCist LS0tLS0tLS0tCisgZgorKDEgcm93KQorCitTRUxFQ1QgaXNmYWxzZSBJTVBMSUVTIGlzbnVs IElTIE5VTEwgRlJPTSBib29sdGJsNDsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB0Ciso MSByb3cpCisKKy0tIG5vbi1ib29sZWFuIG9wZXJhbmRzIGFyZSByZXBvcnRlZCBpbiB0ZXJt cyBvZiBJTVBMSUVTLCBub3Qgb2YgaXRzIGV4cGFuc2lvbgorU0VMRUNUIDEgSU1QTElFUyB0 cnVlOyAgICAgICAgICAgICAgICAgIC0tIGVycm9yCitFUlJPUjogIGFyZ3VtZW50IG9mIElN UExJRVMgbXVzdCBiZSB0eXBlIGJvb2xlYW4sIG5vdCB0eXBlIGludGVnZXIKK0xJTkUgMTog U0VMRUNUIDEgSU1QTElFUyB0cnVlOworICAgICAgICAgICAgICAgXgorU0VMRUNUIHRydWUg SU1QTElFUyAxOyAgICAgICAgICAgICAgICAgIC0tIGVycm9yCitFUlJPUjogIGFyZ3VtZW50 IG9mIElNUExJRVMgbXVzdCBiZSB0eXBlIGJvb2xlYW4sIG5vdCB0eXBlIGludGVnZXIKK0xJ TkUgMTogU0VMRUNUIHRydWUgSU1QTElFUyAxOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KKy0tIHRoZSBjb25zdHJ1Y3QgaXMgZXhwYW5kZWQgZHVyaW5nIHBhcnNlIGFuYWx5 c2lzLCBzbyB0aGlzIGlzIHdoYXQgaXMgc3RvcmVkCitDUkVBVEUgVklFVyBib29sdmlldyBB UyBTRUxFQ1QgaXN0cnVlIElNUExJRVMgaXNudWwgQVMgaSBGUk9NIGJvb2x0Ymw0OworU0VM RUNUIHBnX2dldF92aWV3ZGVmKCdib29sdmlldycsIHRydWUpOworICAgICAgICAgIHBnX2dl dF92aWV3ZGVmICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICBTRUxFQ1QgTk9UIGlzdHJ1ZSBPUiBpc251bCBBUyBpKworICAgIEZST00gYm9vbHRi bDQ7CisoMSByb3cpCisKK0RST1AgVklFVyBib29sdmlldzsKKy0tIElNUExJRVMgaXMgdW5y ZXNlcnZlZCwgc28gaXQgcmVtYWlucyB1c2FibGUgYXMgYW4gaWRlbnRpZmllcgorQ1JFQVRF IFRBQkxFIGltcGxpZXMgKGltcGxpZXMgYm9vbCk7CitJTlNFUlQgSU5UTyBpbXBsaWVzIFZB TFVFUyAoZmFsc2UpOworU0VMRUNUIGltcGxpZXMgSU1QTElFUyBpbXBsaWVzIEZST00gaW1w bGllczsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK0RST1AgVEFC TEUgaW1wbGllczsKK1NFTEVDVCAxIEFTIGltcGxpZXM7CisgaW1wbGllcyAKKy0tLS0tLS0t LQorICAgICAgIDEKKygxIHJvdykKKworU0VMRUNUIDEgaW1wbGllczsKKyBpbXBsaWVzIAor LS0tLS0tLS0tCisgICAgICAgMQorKDEgcm93KQorCiAtLSBDYXN0cwogU0VMRUNUIDA6OmJv b2xlYW47CiAgYm9vbCAKIC0tLS0tLQogIGYKICgxIHJvdykKIAogU0VMRUNUIDE6OmJvb2xl YW47CiAgYm9vbCAKIC0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv Ym9vbGVhbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ib29sZWFuLnNxbAppbmRleCA4 NWM2YjAxOTg4Mi4uZGZlOTZjYjhhZTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2Jvb2xlYW4uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Jvb2xlYW4uc3Fs CkBAIC0yNDMsMjAgKzI0Myw4MCBAQCBTRUxFQ1QgaXNudWwgQU5EIGlzdHJ1ZSBBTkQgaXNm YWxzZSBGUk9NIGJvb2x0Ymw0OwogCiAtLSBPUiBleHByZXNzaW9uIG5lZWQgdG8gcmV0dXJu IG51bGwgaWYgdGhlcmUncyBhbnkgbnVsbHMgYW5kIG5vbmUKIC0tIG9mIHRoZSB2YWx1ZSBp cyB0cnVlCiBTRUxFQ1QgaXNmYWxzZSBPUiBpc251bCBPUiBpc2ZhbHNlIEZST00gYm9vbHRi bDQ7CiBTRUxFQ1QgaXNmYWxzZSBPUiBpc2ZhbHNlIE9SIGlzbnVsIEZST00gYm9vbHRibDQ7 CiBTRUxFQ1QgaXNudWwgT1IgaXNmYWxzZSBPUiBpc2ZhbHNlIEZST00gYm9vbHRibDQ7CiBT RUxFQ1QgaXNmYWxzZSBPUiBpc251bCBPUiBpc3RydWUgRlJPTSBib29sdGJsNDsKIFNFTEVD VCBpc3RydWUgT1IgaXNmYWxzZSBPUiBpc251bCBGUk9NIGJvb2x0Ymw0OwogU0VMRUNUIGlz bnVsIE9SIGlzdHJ1ZSBPUiBpc2ZhbHNlIEZST00gYm9vbHRibDQ7CiAKKy0tIEltcGxpY2F0 aW9uOiAiYSBJTVBMSUVTIGIiIGlzICJOT1QgYSBPUiBiIi4gIEl0IGlzIG5vdCBjb21tdXRh dGl2ZSwgc28gYWxsCistLSBuaW5lIGNvbWJpbmF0aW9ucyBvZiB0aHJlZS12YWx1ZWQgbG9n aWMgaGF2ZSB0byBiZSBjaGVja2VkLgorU0VMRUNUIGlzdHJ1ZSBJTVBMSUVTIGlzdHJ1ZSwg aXN0cnVlIElNUExJRVMgaXNmYWxzZSwgaXN0cnVlIElNUExJRVMgaXNudWwKKyAgRlJPTSBi b29sdGJsNDsKK1NFTEVDVCBpc2ZhbHNlIElNUExJRVMgaXN0cnVlLCBpc2ZhbHNlIElNUExJ RVMgaXNmYWxzZSwgaXNmYWxzZSBJTVBMSUVTIGlzbnVsCisgIEZST00gYm9vbHRibDQ7CitT RUxFQ1QgaXNudWwgSU1QTElFUyBpc3RydWUsIGlzbnVsIElNUExJRVMgaXNmYWxzZSwgaXNu dWwgSU1QTElFUyBpc251bAorICBGUk9NIGJvb2x0Ymw0OworCistLSB0aGUgc2FtZSwgYXMg Y29uc3RhbnRzLCBzbyB0aGF0IGNvbnN0YW50IGZvbGRpbmcgaXMgZXhlcmNpc2VkIHRvbwor U0VMRUNUIHRydWUgSU1QTElFUyB0cnVlLCB0cnVlIElNUExJRVMgZmFsc2UsIHRydWUgSU1Q TElFUyBudWxsOworU0VMRUNUIGZhbHNlIElNUExJRVMgdHJ1ZSwgZmFsc2UgSU1QTElFUyBm YWxzZSwgZmFsc2UgSU1QTElFUyBudWxsOworU0VMRUNUIG51bGwgSU1QTElFUyB0cnVlLCBu dWxsIElNUExJRVMgZmFsc2UsIG51bGw6OmJvb2wgSU1QTElFUyBudWxsOworCistLSBJTVBM SUVTIGlzIG5vbi1hc3NvY2lhdGl2ZSwgc28gYSBjaGFpbiBpcyByZWZ1c2VkIHJhdGhlciB0 aGFuIGdyb3VwZWQKK1NFTEVDVCBpc2ZhbHNlIElNUExJRVMgaXN0cnVlIElNUExJRVMgaXNm YWxzZSBGUk9NIGJvb2x0Ymw0OyAgICAtLSBlcnJvcgorCistLSBhbmQgaXQgaGFzIHRvIGJl LCBiZWNhdXNlIHRoZSB0d28gZ3JvdXBpbmdzIGFyZSBkaWZmZXJlbnQgZm9ybXVsYXMuICBU aGUKKy0tIGZpcnN0IHJvdyBiZWxvdyBpcyB0aGUgaW50ZXJlc3Rpbmcgb25lOiBpdCB0ZWxs cyB0aGVtIGFwYXJ0LgorU0VMRUNUIGEsIGIsIGMsCisgICAgICAgKGEgSU1QTElFUyBiKSBJ TVBMSUVTIGMgQVMgZ3JvdXBlZF9sZWZ0LAorICAgICAgIGEgSU1QTElFUyAoYiBJTVBMSUVT IGMpIEFTIGdyb3VwZWRfcmlnaHQsCisgICAgICAgKGEgQU5EIGIpIElNUExJRVMgYyBBUyBj b25qX2FudGVjZWRlbnQsCisgICAgICAgYSBJTVBMSUVTIChiIEFORCBjKSBBUyBjb25qX2Nv bnNlcXVlbnQKKyAgRlJPTSAoVkFMVUVTIChmYWxzZSwgZmFsc2UsIGZhbHNlKSwKKyAgICAg ICAgICAgICAgICh0cnVlLCBmYWxzZSwgZmFsc2UpLAorICAgICAgICAgICAgICAgKHRydWUs IHRydWUsIHRydWUpKSBBUyB0KGEsIGIsIGMpOworCistLSBncm91cGluZyB0byB0aGUgcmln aHQgaXMgaW1wbGljYXRpb24gZnJvbSB0aGUgY29uanVuY3Rpb24gb2YgdGhlIG9wZXJhbmRz CistLSAoZXhwb3J0YXRpb24pLCB3aGljaCBob2xkcyBmb3IgYWxsIHRocmVlIHRydXRoIHZh bHVlcywgc28gbm8gcm93cyBoZXJlCitTRUxFQ1QgYSwgYiwgYworICBGUk9NIChWQUxVRVMg KHRydWUpLCAoZmFsc2UpLCAobnVsbCkpIEFTIHgoYSksCisgICAgICAgKFZBTFVFUyAodHJ1 ZSksIChmYWxzZSksIChudWxsKSkgQVMgeShiKSwKKyAgICAgICAoVkFMVUVTICh0cnVlKSwg KGZhbHNlKSwgKG51bGwpKSBBUyB6KGMpCisgV0hFUkUgKGEgSU1QTElFUyAoYiBJTVBMSUVT IGMpKSBJUyBESVNUSU5DVCBGUk9NICgoYSBBTkQgYikgSU1QTElFUyBjKTsKKworLS0gYW5k IGJpbmRzIGxvb3NlciB0aGFuIE9SLCBBTkQsIE5PVCwgdGhlIGNvbXBhcmlzb24gb3BlcmF0 b3JzIGFuZCBJUworU0VMRUNUIGlzdHJ1ZSBPUiBpc2ZhbHNlIElNUExJRVMgaXNmYWxzZSBG Uk9NIGJvb2x0Ymw0OworU0VMRUNUIGlzZmFsc2UgSU1QTElFUyBpc2ZhbHNlIEFORCBpc2Zh bHNlIEZST00gYm9vbHRibDQ7CitTRUxFQ1QgTk9UIGlzdHJ1ZSBJTVBMSUVTIGlzdHJ1ZSBG Uk9NIGJvb2x0Ymw0OworU0VMRUNUIDEgPSAxIElNUExJRVMgMiA9IDM7CitTRUxFQ1QgaXNm YWxzZSBJTVBMSUVTIGlzbnVsIElTIE5VTEwgRlJPTSBib29sdGJsNDsKKworLS0gbm9uLWJv b2xlYW4gb3BlcmFuZHMgYXJlIHJlcG9ydGVkIGluIHRlcm1zIG9mIElNUExJRVMsIG5vdCBv ZiBpdHMgZXhwYW5zaW9uCitTRUxFQ1QgMSBJTVBMSUVTIHRydWU7ICAgICAgICAgICAgICAg ICAgLS0gZXJyb3IKK1NFTEVDVCB0cnVlIElNUExJRVMgMTsgICAgICAgICAgICAgICAgICAt LSBlcnJvcgorCistLSB0aGUgY29uc3RydWN0IGlzIGV4cGFuZGVkIGR1cmluZyBwYXJzZSBh bmFseXNpcywgc28gdGhpcyBpcyB3aGF0IGlzIHN0b3JlZAorQ1JFQVRFIFZJRVcgYm9vbHZp ZXcgQVMgU0VMRUNUIGlzdHJ1ZSBJTVBMSUVTIGlzbnVsIEFTIGkgRlJPTSBib29sdGJsNDsK K1NFTEVDVCBwZ19nZXRfdmlld2RlZignYm9vbHZpZXcnLCB0cnVlKTsKK0RST1AgVklFVyBi b29sdmlldzsKKworLS0gSU1QTElFUyBpcyB1bnJlc2VydmVkLCBzbyBpdCByZW1haW5zIHVz YWJsZSBhcyBhbiBpZGVudGlmaWVyCitDUkVBVEUgVEFCTEUgaW1wbGllcyAoaW1wbGllcyBi b29sKTsKK0lOU0VSVCBJTlRPIGltcGxpZXMgVkFMVUVTIChmYWxzZSk7CitTRUxFQ1QgaW1w bGllcyBJTVBMSUVTIGltcGxpZXMgRlJPTSBpbXBsaWVzOworRFJPUCBUQUJMRSBpbXBsaWVz OworU0VMRUNUIDEgQVMgaW1wbGllczsKK1NFTEVDVCAxIGltcGxpZXM7CisKIC0tIENhc3Rz CiBTRUxFQ1QgMDo6Ym9vbGVhbjsKIFNFTEVDVCAxOjpib29sZWFuOwogU0VMRUNUIDI6OmJv b2xlYW47CiAKIAogLS0KIC0tIENsZWFuIHVwCiAtLSBNYW55IHRhYmxlcyBhcmUgcmV0YWlu ZWQgYnkgdGhlIHJlZ3Jlc3Npb24gdGVzdCwgYnV0IHRoZXNlIGRvIG5vdCBzZWVtCiAtLSAg cGFydGljdWxhcmx5IHVzZWZ1bCBzbyBqdXN0IGdldCByaWQgb2YgdGhlbSBmb3Igbm93Lgot LSAKMi41Ni4wCgo= --------------d4vht7D0tZbssTHceIDLCMZH Content-Type: text/plain; charset=UTF-8; name="v3-0003-Keep-IMPLIES-in-stored-expressions.patch" Content-Disposition: attachment; filename="v3-0003-Keep-IMPLIES-in-stored-expressions.patch" Content-Transfer-Encoding: base64 RnJvbSAwMDE2NTc5OGVhOTBhYWQ4NGMwZjA1OWZkZDZmOGYxMTIzNDZiMjcxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBWaWsgRmVhcmluZyA8dmlrQHBvc3RncmVzZnJpZW5k cy5vcmc+CkRhdGU6IFNhdCwgMyBPY3QgMjAyNiAxNzoxODoyMiArMDIwMApTdWJqZWN0OiBb UEFUQ0ggdjMgMy8zXSBLZWVwIElNUExJRVMgaW4gc3RvcmVkIGV4cHJlc3Npb25zCgpVbnRp bCBub3cgYSBJTVBMSUVTIGIgd2FzIGV4cGFuZGVkIHRvIChOT1QgYSBPUiBiKSBkdXJpbmcg cGFyc2UgYW5hbHlzaXMsCnNvIHZpZXdzLCBjaGVjayBjb25zdHJhaW50cywgaW5kZXggZXhw cmVzc2lvbnMgYW5kIHByZWRpY2F0ZXMsIGFuZApwb2xpY2llcyB3ZXJlIHN0b3JlZCwgZGVw YXJzZWQsIGFuZCBkdW1wZWQgaW4gdGVybXMgb2YgdGhlIGV4cGFuc2lvbgpyYXRoZXIgdGhh biBhcyB3cml0dGVuLgoKTWFrZSBJTVBMSUVTIGEgZm91cnRoIEJvb2xFeHByVHlwZSBzbyB0 aGF0IGl0IHN1cnZpdmVzIGludG8gdGhlIHN0b3JlZAp0cmVlIGFuZCBydWxldXRpbHMuYyBj YW4gcHJpbnQgaXQgYmFjay4gIEluIHByZXR0eSBtb2RlLCBOT1QsIEFORCwgYW5kCk9SIGJl bmVhdGggSU1QTElFUyBuZWVkIG5vIHBhcmVudGhlc2VzLCB3aGlsZSBhbiBJTVBMSUVTIGJl bmVhdGggYW55CmJvb2xlYW4gb3BlcmF0b3IsIElNUExJRVMgaW5jbHVkZWQsIGFsd2F5cyBn ZXRzIHRoZW0sIHNpbmNlIElNUExJRVMgaGFzCnRoZSBsb3dlc3QgcHJlY2VkZW5jZSBhbmQg aXMgbm90IGFzc29jaWF0aXZlLgoKVGhlIGV4cGFuc2lvbiBtb3ZlcyB0byBldmFsX2NvbnN0 X2V4cHJlc3Npb25zLCBzbyB0aGUgcmVzdCBvZiB0aGUKcGxhbm5lciwgaW5jbHVkaW5nIHF1 YWwgY2Fub25pY2FsaXphdGlvbiwgcHJlZGljYXRlIHByb3ZpbmcgZm9yIHBhcnRpYWwKaW5k ZXhlcywgYW5kIG91dGVyIGpvaW4gcmVkdWN0aW9uLCBuZXZlciBzZWVzIElNUExJRVMgYW5k IG5lZWRzIG5vCmNoYW5nZXMuICBFWFBMQUlOIHRoZXJlZm9yZSBzaG93cyB0aGUgZXhwYW5k ZWQgYW5kIHNpbXBsaWZpZWQgZm9ybSwgbXVjaAphcyBpdCBkb2VzIGZvciBCRVRXRUVOLgoK VGhlIGV4ZWN1dG9yIGFuZCBwb3N0Z3Jlc19mZHcncyBkZXBhcnNlciBzaG91bGQgbm90IHNl ZSBhbiB1bmV4cGFuZGVkCklNUExJRVMgZWl0aGVyLCBidXQgZWFjaCBoYW5kbGVzIG9uZSBh bnl3YXksIGFzIChOT1QgYSBPUiBiKSwgcmF0aGVyIHRoYW4KZmFpbC4gIFRoZSBleGVjdXRv ciBuZWVkcyBubyBuZXcgb3Bjb2RlcyBmb3IgdGhhdCwgc28gSklUIGlzIHVuYWZmZWN0ZWQs CmFuZCB0aGUgZGVwYXJzZXIgc2VuZHMgdGhlIGV4cGFuc2lvbiBiZWNhdXNlIHRoZSByZW1v dGUgc2VydmVyIG1pZ2h0Cm5vdCBrbm93IElNUExJRVMuCi0tLQogY29udHJpYi9wb3N0Z3Jl c19mZHcvZGVwYXJzZS5jICAgICAgICB8IDEyICsrKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNFeHByLmMgICAgICAgfCAyMCArKysrKy0KIHNyYy9iYWNrZW5kL25vZGVzL291dGZ1 bmNzLmMgICAgICAgICAgfCAgMyArCiBzcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYyAg ICAgICAgIHwgIDIgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jICB8 IDIzICsrKysrKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICAgICAgfCAx OCArKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICB8IDIyICsr KysrLQogc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggICAgICAgICB8IDExICsrLQog c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ib29sZWFuLm91dCB8IDk3ICsrKysrKysrKysr KysrKysrKysrKysrKystLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvYm9vbGVhbi5zcWwgICAg ICB8IDM5ICsrKysrKysrKystCiAxMCBmaWxlcyBjaGFuZ2VkLCAyMjAgaW5zZXJ0aW9ucygr KSwgMjcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcv ZGVwYXJzZS5jIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvZGVwYXJzZS5jCmluZGV4IGZmOWZl MGY4N2U0Li42OWE4NTI5ZjU4MyAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcv ZGVwYXJzZS5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2RlcGFyc2UuYwpAQCAtMzc0 MiwyMCArMzc0MiwzMiBAQCBkZXBhcnNlQm9vbEV4cHIoQm9vbEV4cHIgKm5vZGUsIGRlcGFy c2VfZXhwcl9jeHQgKmNvbnRleHQpCiAJCQlvcCA9ICJBTkQiOwogCQkJYnJlYWs7CiAJCWNh c2UgT1JfRVhQUjoKIAkJCW9wID0gIk9SIjsKIAkJCWJyZWFrOwogCQljYXNlIE5PVF9FWFBS OgogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIoTk9UICIpOwogCQkJZGVwYXJz ZUV4cHIobGluaXRpYWwobm9kZS0+YXJncyksIGNvbnRleHQpOwogCQkJYXBwZW5kU3RyaW5n SW5mb0NoYXIoYnVmLCAnKScpOwogCQkJcmV0dXJuOworCQljYXNlIElNUExJRVNfRVhQUjoK KworCQkJLyoKKwkJCSAqIGV2YWxfY29uc3RfZXhwcmVzc2lvbnMgc2hvdWxkIGFscmVhZHkg aGF2ZSBleHBhbmRlZCB0aGlzLCBidXQKKwkJCSAqIGlmIG5vdCwgc2VuZCB0aGUgZXhwYW5z aW9uLCB3aGljaCBhbnkgcmVtb3RlIHNlcnZlciBhY2NlcHRzLgorCQkJICovCisJCQlhcHBl bmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIigoTk9UICIpOworCQkJZGVwYXJzZUV4cHIobGlu aXRpYWwobm9kZS0+YXJncyksIGNvbnRleHQpOworCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZyhidWYsICIpIE9SICIpOworCQkJZGVwYXJzZUV4cHIobHNlY29uZChub2RlLT5hcmdzKSwg Y29udGV4dCk7CisJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcpJyk7CisJCQlyZXR1 cm47CiAJfQogCiAJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnKCcpOwogCWZpcnN0ID0g dHJ1ZTsKIAlmb3JlYWNoKGxjLCBub2RlLT5hcmdzKQogCXsKIAkJaWYgKCFmaXJzdCkKIAkJ CWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiICVzICIsIG9wKTsKIAkJZGVwYXJzZUV4cHIoKEV4 cHIgKikgbGZpcnN0KGxjKSwgY29udGV4dCk7CiAJCWZpcnN0ID0gZmFsc2U7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0V4cHIuYwppbmRleCA4MmU4NDZhMWY0Zi4uNmMwNjllNTZiNTAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpAQCAtMTM3OSwyMSArMTM3OSwyMSBAQCBFeGVjSW5p dEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCX0KIAogCQljYXNl IFRfQm9vbEV4cHI6CiAJCQl7CiAJCQkJQm9vbEV4cHIgICAqYm9vbGV4cHIgPSAoQm9vbEV4 cHIgKikgbm9kZTsKIAkJCQlpbnQJCQluYXJncyA9IGxpc3RfbGVuZ3RoKGJvb2xleHByLT5h cmdzKTsKIAkJCQlMaXN0CSAgICphZGp1c3RfanVtcHMgPSBOSUw7CiAJCQkJaW50CQkJb2Zm OwogCQkJCUxpc3RDZWxsICAgKmxjOwogCi0JCQkJLyogYWxsb2NhdGUgc2NyYXRjaCBtZW1v cnkgdXNlZCBieSBhbGwgc3RlcHMgb2YgQU5EL09SICovCisJCQkJLyogYWxsb2NhdGUgc2Ny YXRjaCBtZW1vcnkgdXNlZCBieSBhbGwgc3RlcHMgb2YgQU5EL09SL0lNUExJRVMgKi8KIAkJ CQlpZiAoYm9vbGV4cHItPmJvb2xvcCAhPSBOT1RfRVhQUikKIAkJCQkJc2NyYXRjaC5kLmJv b2xleHByLmFueW51bGwgPSBwYWxsb2Nfb2JqZWN0KGJvb2wpOwogCiAJCQkJLyoKIAkJCQkg KiBGb3IgZWFjaCBhcmd1bWVudCBldmFsdWF0ZSB0aGUgYXJndW1lbnQgaXRzZWxmLCB0aGVu CiAJCQkJICogcGVyZm9ybSB0aGUgYm9vbCBvcGVyYXRpb24ncyBhcHByb3ByaWF0ZSBoYW5k bGluZy4KIAkJCQkgKgogCQkJCSAqIFdlIGNhbiBldmFsdWF0ZSBlYWNoIGFyZ3VtZW50IGlu dG8gb3VyIHJlc3VsdCBhcmVhLCBzaW5jZQogCQkJCSAqIHRoZSBzaG9ydC1jaXJjdWl0aW5n IGxvZ2ljIG1lYW5zIHdlIG9ubHkgbmVlZCB0byByZW1lbWJlcgogCQkJCSAqIHByZXZpb3Vz IE5VTEwgdmFsdWVzLgpAQCAtMTQzMiwyMCArMTQzMiwzOCBAQCBFeGVjSW5pdEV4cHJSZWMo RXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCQkJCQllbHNlIGlmIChvZmYgKyAx ID09IG5hcmdzKQogCQkJCQkJCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfQk9PTF9PUl9TVEVQ X0xBU1Q7CiAJCQkJCQkJZWxzZQogCQkJCQkJCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfQk9P TF9PUl9TVEVQOwogCQkJCQkJCWJyZWFrOwogCQkJCQkJY2FzZSBOT1RfRVhQUjoKIAkJCQkJ CQlBc3NlcnQobmFyZ3MgPT0gMSk7CiAKIAkJCQkJCQlzY3JhdGNoLm9wY29kZSA9IEVFT1Bf Qk9PTF9OT1RfU1RFUDsKIAkJCQkJCQlicmVhazsKKwkJCQkJCWNhc2UgSU1QTElFU19FWFBS OgorCisJCQkJCQkJLyoKKwkJCQkJCQkgKiBUaGUgcGxhbm5lciBub3JtYWxseSBleHBhbmRz IHRoaXMsIGJ1dCBpbiBjYXNlCisJCQkJCQkJICogaXQgZGlkbid0LCBldmFsdWF0ZSBpdCBh cyBOT1QgYSBPUiBiLiAgVGhlIE5PVAorCQkJCQkJCSAqIHN0ZXAgZG9lc24ndCBqdW1wLCBz byBpdCBuZWVkcyBubyBhZGp1c3RpbmcuCisJCQkJCQkJICovCisJCQkJCQkJQXNzZXJ0KG5h cmdzID09IDIpOworCisJCQkJCQkJaWYgKG9mZiA9PSAwKQorCQkJCQkJCXsKKwkJCQkJCQkJ c2NyYXRjaC5vcGNvZGUgPSBFRU9QX0JPT0xfTk9UX1NURVA7CisJCQkJCQkJCUV4cHJFdmFs UHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKKwkJCQkJCQkJc2NyYXRjaC5vcGNvZGUgPSBF RU9QX0JPT0xfT1JfU1RFUF9GSVJTVDsKKwkJCQkJCQl9CisJCQkJCQkJZWxzZQorCQkJCQkJ CQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfQk9PTF9PUl9TVEVQX0xBU1Q7CisJCQkJCQkJYnJl YWs7CiAJCQkJCQlkZWZhdWx0OgogCQkJCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQg Ym9vbG9wOiAlZCIsCiAJCQkJCQkJCSAoaW50KSBib29sZXhwci0+Ym9vbG9wKTsKIAkJCQkJ CQlicmVhazsKIAkJCQkJfQogCiAJCQkJCXNjcmF0Y2guZC5ib29sZXhwci5qdW1wZG9uZSA9 IC0xOwogCQkJCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CiAJCQkJCWFk anVzdF9qdW1wcyA9IGxhcHBlbmRfaW50KGFkanVzdF9qdW1wcywKIAkJCQkJCQkJCQkJICAg c3RhdGUtPnN0ZXBzX2xlbiAtIDEpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMv b3V0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKaW5kZXggOWEzNWZm NTNkZTAuLjc1Yjc4NTY3MjViIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKQEAgLTQxNSwyMCAr NDE1LDIzIEBAIF9vdXRCb29sRXhwcihTdHJpbmdJbmZvIHN0ciwgY29uc3QgQm9vbEV4cHIg Km5vZGUpCiAJewogCQljYXNlIEFORF9FWFBSOgogCQkJb3BzdHIgPSAiYW5kIjsKIAkJCWJy ZWFrOwogCQljYXNlIE9SX0VYUFI6CiAJCQlvcHN0ciA9ICJvciI7CiAJCQlicmVhazsKIAkJ Y2FzZSBOT1RfRVhQUjoKIAkJCW9wc3RyID0gIm5vdCI7CiAJCQlicmVhazsKKwkJY2FzZSBJ TVBMSUVTX0VYUFI6CisJCQlvcHN0ciA9ICJpbXBsaWVzIjsKKwkJCWJyZWFrOwogCX0KIAlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKHN0ciwgIiA6Ym9vbG9wICIpOwogCW91dFRva2VuKHN0 ciwgb3BzdHIpOwogCiAJV1JJVEVfTk9ERV9GSUVMRChhcmdzKTsKIAlXUklURV9MT0NBVElP Tl9GSUVMRChsb2NhdGlvbik7CiB9CiAKIHN0YXRpYyB2b2lkCiBfb3V0Rm9yZWlnbktleU9w dEluZm8oU3RyaW5nSW5mbyBzdHIsIGNvbnN0IEZvcmVpZ25LZXlPcHRJbmZvICpub2RlKQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgYi9zcmMvYmFja2Vu ZC9ub2Rlcy9yZWFkZnVuY3MuYwppbmRleCA0Y2MwMTlhMDEyYi4uZDA2MDUxZTk4NTEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCisrKyBiL3NyYy9iYWNr ZW5kL25vZGVzL3JlYWRmdW5jcy5jCkBAIC0yODgsMjAgKzI4OCwyMiBAQCBfcmVhZEJvb2xF eHByKFJlYWROb2RlQ29udGV4dCAqY3R4KQogCiAJLyogZG8taXQteW91cnNlbGYgZW51bSBy ZXByZXNlbnRhdGlvbiAqLwogCXRva2VuID0gcGdfc3RydG9rKGN0eCwgJmxlbmd0aCk7CS8q IHNraXAgOmJvb2xvcCAqLwogCXRva2VuID0gcGdfc3RydG9rKGN0eCwgJmxlbmd0aCk7CS8q IGdldCBmaWVsZCB2YWx1ZSAqLwogCWlmIChsZW5ndGggPT0gMyAmJiBzdHJuY21wKHRva2Vu LCAiYW5kIiwgMykgPT0gMCkKIAkJbG9jYWxfbm9kZS0+Ym9vbG9wID0gQU5EX0VYUFI7CiAJ ZWxzZSBpZiAobGVuZ3RoID09IDIgJiYgc3RybmNtcCh0b2tlbiwgIm9yIiwgMikgPT0gMCkK IAkJbG9jYWxfbm9kZS0+Ym9vbG9wID0gT1JfRVhQUjsKIAllbHNlIGlmIChsZW5ndGggPT0g MyAmJiBzdHJuY21wKHRva2VuLCAibm90IiwgMykgPT0gMCkKIAkJbG9jYWxfbm9kZS0+Ym9v bG9wID0gTk9UX0VYUFI7CisJZWxzZSBpZiAobGVuZ3RoID09IDcgJiYgc3RybmNtcCh0b2tl biwgImltcGxpZXMiLCA3KSA9PSAwKQorCQlsb2NhbF9ub2RlLT5ib29sb3AgPSBJTVBMSUVT X0VYUFI7CiAJZWxzZQogCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGJvb2xvcCBcIiUu KnNcIiIsIGxlbmd0aCwgdG9rZW4pOwogCiAJUkVBRF9OT0RFX0ZJRUxEKGFyZ3MpOwogCVJF QURfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOwogCiAJUkVBRF9ET05FKCk7CiB9CiAKIHN0 YXRpYyBBX0NvbnN0ICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGls L2NsYXVzZXMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYwppbmRl eCAzZTFmMjEwNjUyZC4uZjAxMmQ1YjlkYjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29w dGltaXplci91dGlsL2NsYXVzZXMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRp bC9jbGF1c2VzLmMKQEAgLTExMzUsMjEgKzExMzUsMjIgQEAgY29udGFpbl9ub25zdHJpY3Rf ZnVuY3Rpb25zX3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KQogCQkvKiBlbHNl IGZhbGwgdGhyb3VnaCB0byBjaGVjayBhcmdzICovCiAJfQogCWVsc2UgaWYgKElzQShub2Rl LCBCb29sRXhwcikpCiAJewogCQlCb29sRXhwciAgICpleHByID0gKEJvb2xFeHByICopIG5v ZGU7CiAKIAkJc3dpdGNoIChleHByLT5ib29sb3ApCiAJCXsKIAkJCWNhc2UgQU5EX0VYUFI6 CiAJCQljYXNlIE9SX0VYUFI6Ci0JCQkJLyogQU5ELCBPUiBhcmUgaW5oZXJlbnRseSBub24t c3RyaWN0ICovCisJCQljYXNlIElNUExJRVNfRVhQUjoKKwkJCQkvKiBBTkQsIE9SLCBJTVBM SUVTIGFyZSBpbmhlcmVudGx5IG5vbi1zdHJpY3QgKi8KIAkJCQlyZXR1cm4gdHJ1ZTsKIAkJ CWRlZmF1bHQ6CiAJCQkJYnJlYWs7CiAJCX0KIAl9CiAJZWxzZSBpZiAoSXNBKG5vZGUsIFN1 YkxpbmspKQogCXsKIAkJLyogSW4gc29tZSBjYXNlcyBhIHN1YmxpbmsgbWlnaHQgYmUgc3Ry aWN0LCBidXQgaW4gZ2VuZXJhbCBub3QgKi8KIAkJcmV0dXJuIHRydWU7CiAJfQpAQCAtMzM3 MSwyMCArMzM3Miw0MCBAQCBldmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IoTm9kZSAq bm9kZSwKIAkJCQkJCQlBc3NlcnQobGlzdF9sZW5ndGgoZXhwci0+YXJncykgPT0gMSk7CiAJ CQkJCQkJYXJnID0gZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKGxpbml0aWFsKGV4 cHItPmFyZ3MpLAogCQkJCQkJCQkJCQkJCQkJCSBjb250ZXh0KTsKIAogCQkJCQkJCS8qCiAJ CQkJCQkJICogVXNlIG5lZ2F0ZV9jbGF1c2UoKSB0byBzZWUgaWYgd2UgY2FuIHNpbXBsaWZ5 CiAJCQkJCQkJICogYXdheSB0aGUgTk9ULgogCQkJCQkJCSAqLwogCQkJCQkJCXJldHVybiBu ZWdhdGVfY2xhdXNlKGFyZyk7CiAJCQkJCQl9CisJCQkJCWNhc2UgSU1QTElFU19FWFBSOgor CQkJCQkJeworCQkJCQkJCU5vZGUJICAgKm5ld2V4cHI7CisKKwkJCQkJCQkvKgorCQkJCQkJ CSAqIEV4cGFuZCBhIElNUExJRVMgYiBpbnRvIE5PVCBhIE9SIGIgYW5kIHNpbXBsaWZ5CisJ CQkJCQkJICogdGhhdCwgc28gdGhhdCBub3RoaW5nIGRvd25zdHJlYW0gbmVlZCBrbm93CisJ CQkJCQkJICogYWJvdXQgSU1QTElFUy4KKwkJCQkJCQkgKi8KKwkJCQkJCQlBc3NlcnQobGlz dF9sZW5ndGgoZXhwci0+YXJncykgPT0gMik7CisJCQkJCQkJbmV3ZXhwciA9IChOb2RlICop CisJCQkJCQkJCW1ha2VCb29sRXhwcihPUl9FWFBSLAorCQkJCQkJCQkJCQkgbGlzdF9tYWtl MihtYWtlQm9vbEV4cHIoTk9UX0VYUFIsCisJCQkJCQkJCQkJCQkJCQkJCSBsaXN0X21ha2Ux KGxpbml0aWFsKGV4cHItPmFyZ3MpKSwKKwkJCQkJCQkJCQkJCQkJCQkJIGV4cHItPmxvY2F0 aW9uKSwKKwkJCQkJCQkJCQkJCQkJbHNlY29uZChleHByLT5hcmdzKSksCisJCQkJCQkJCQkJ CSBleHByLT5sb2NhdGlvbik7CisJCQkJCQkJcmV0dXJuIGV2YWxfY29uc3RfZXhwcmVzc2lv bnNfbXV0YXRvcihuZXdleHByLAorCQkJCQkJCQkJCQkJCQkJCSAgY29udGV4dCk7CisJCQkJ CQl9CiAJCQkJCWRlZmF1bHQ6CiAJCQkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGJv b2xvcDogJWQiLAogCQkJCQkJCSAoaW50KSBleHByLT5ib29sb3ApOwogCQkJCQkJYnJlYWs7 CiAJCQkJfQogCQkJCWJyZWFrOwogCQkJfQogCQljYXNlIFRfSnNvblZhbHVlRXhwcjoKIAkJ CXsKIAkJCQlKc29uVmFsdWVFeHByICpqdmUgPSAoSnNvblZhbHVlRXhwciAqKSBub2RlOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXggM2Y5ZGM4NmZhMDAuLjNhODNiY2UyNjkx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTE0NDQsNDcgKzE0NDQsMzkgQEAg dHJhbnNmb3JtQm9vbEV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBCb29sRXhwciAqYSkKIAog CQlhcmcgPSB0cmFuc2Zvcm1FeHByUmVjdXJzZShwc3RhdGUsIGFyZyk7CiAJCWFyZyA9IGNv ZXJjZV90b19ib29sZWFuKHBzdGF0ZSwgYXJnLCBvcG5hbWUpOwogCQlhcmdzID0gbGFwcGVu ZChhcmdzLCBhcmcpOwogCX0KIAogCXJldHVybiAoTm9kZSAqKSBtYWtlQm9vbEV4cHIoYS0+ Ym9vbG9wLCBhcmdzLCBhLT5sb2NhdGlvbik7CiB9CiAKIC8qCi0gKiBUcmFuc2Zvcm0gImEg SU1QTElFUyBiIiBpbnRvIHRoZSBlcXVpdmFsZW50ICJOT1QgYSBPUiBiIi4KKyAqIFRyYW5z Zm9ybSAiYSBJTVBMSUVTIGIiLgogICoKLSAqIFdlIGV4cGFuZCB0aGlzIGhlcmUgcmF0aGVy IHRoYW4gaW4gZ3JhbS55IHNvIHRoYXQgYSBub24tYm9vbGVhbiBvcGVyYW5kIGlzCi0gKiBj b21wbGFpbmVkIG9mIGluIHRlcm1zIG9mIElNUExJRVMsIHJhdGhlciB0aGFuIGluIHRlcm1z IG9mIHRoZSBOT1Qgb3IgT1IKLSAqIHRoYXQgdGhlIGNvbnN0cnVjdCBoYXBwZW5zIHRvIGJl IGJ1aWx0IGZyb20uCisgKiBUaGlzIG1lYW5zIHRoZSBzYW1lIGFzICJOT1QgYSBPUiBiIiwg YnV0IHdlIGtlZXAgaXQgYXMgaXRzIG93biBCb29sRXhwciBzbworICogdGhhdCBzdG9yZWQg ZXhwcmVzc2lvbnMgZGVwYXJzZSBhcyB3cml0dGVuLiAgZXZhbF9jb25zdF9leHByZXNzaW9u cyBkb2VzIHRoZQorICogZXhwYW5zaW9uLCBzbyB0aGUgcGxhbm5lciBwcm9wZXIgbmV2ZXIg c2VlcyBJTVBMSUVTLgogICovCiBzdGF0aWMgTm9kZSAqCiB0cmFuc2Zvcm1BRXhwckltcGxp ZXMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0V4cHIgKmEpCiB7CiAJTm9kZQkgICAqbGV4cHI7 CiAJTm9kZQkgICAqcmV4cHI7CiAKIAlsZXhwciA9IHRyYW5zZm9ybUV4cHJSZWN1cnNlKHBz dGF0ZSwgYS0+bGV4cHIpOwogCXJleHByID0gdHJhbnNmb3JtRXhwclJlY3Vyc2UocHN0YXRl LCBhLT5yZXhwcik7CiAKIAlsZXhwciA9IGNvZXJjZV90b19ib29sZWFuKHBzdGF0ZSwgbGV4 cHIsICJJTVBMSUVTIik7CiAJcmV4cHIgPSBjb2VyY2VfdG9fYm9vbGVhbihwc3RhdGUsIHJl eHByLCAiSU1QTElFUyIpOwogCi0JLyoKLQkgKiBFYWNoIG9wZXJhbmQgYXBwZWFycyBleGFj dGx5IG9uY2UgaW4gdGhlIGV4cGFuc2lvbiwgc28gdW5saWtlIEJFVFdFRU4KLQkgKiB0aGlz IGRvZXMgbm90IHJpc2sgZXZhbHVhdGluZyBhbnl0aGluZyB0d2ljZS4KLQkgKi8KLQlyZXR1 cm4gKE5vZGUgKikgbWFrZUJvb2xFeHByKE9SX0VYUFIsCi0JCQkJCQkJCSBsaXN0X21ha2Uy KG1ha2VCb29sRXhwcihOT1RfRVhQUiwKLQkJCQkJCQkJCQkJCQkJIGxpc3RfbWFrZTEobGV4 cHIpLAotCQkJCQkJCQkJCQkJCQkgZXhwckxvY2F0aW9uKGxleHByKSksCi0JCQkJCQkJCQkJ CXJleHByKSwKKwlyZXR1cm4gKE5vZGUgKikgbWFrZUJvb2xFeHByKElNUExJRVNfRVhQUiwg bGlzdF9tYWtlMihsZXhwciwgcmV4cHIpLAogCQkJCQkJCQkgYS0+bG9jYXRpb24pOwogfQog CiBzdGF0aWMgTm9kZSAqCiB0cmFuc2Zvcm1GdW5jQ2FsbChQYXJzZVN0YXRlICpwc3RhdGUs IEZ1bmNDYWxsICpmbikKIHsKIAlOb2RlCSAgICpsYXN0X3NyZiA9IHBzdGF0ZS0+cF9sYXN0 X3NyZjsKIAlMaXN0CSAgICp0YXJnczsKIAlMaXN0Q2VsbCAgICphcmdzOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggNWU4ZTE2ODNkYjAuLmIzM2U0Y2ZmMzMyIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC05MDQ4LDI3ICs5MDQ4LDMzIEBA IGlzU2ltcGxlTm9kZShOb2RlICpub2RlLCBOb2RlICpwYXJlbnROb2RlLCBpbnQgcHJldHR5 RmxhZ3MpCiAJCQkJCXsKIAkJCQkJCUJvb2xFeHByVHlwZSB0eXBlOwogCQkJCQkJQm9vbEV4 cHJUeXBlIHBhcmVudFR5cGU7CiAKIAkJCQkJCXR5cGUgPSAoKEJvb2xFeHByICopIG5vZGUp LT5ib29sb3A7CiAJCQkJCQlwYXJlbnRUeXBlID0gKChCb29sRXhwciAqKSBwYXJlbnROb2Rl KS0+Ym9vbG9wOwogCQkJCQkJc3dpdGNoICh0eXBlKQogCQkJCQkJewogCQkJCQkJCWNhc2Ug Tk9UX0VYUFI6CiAJCQkJCQkJY2FzZSBBTkRfRVhQUjoKLQkJCQkJCQkJaWYgKHBhcmVudFR5 cGUgPT0gQU5EX0VYUFIgfHwgcGFyZW50VHlwZSA9PSBPUl9FWFBSKQorCQkJCQkJCQlpZiAo cGFyZW50VHlwZSA9PSBBTkRfRVhQUiB8fAorCQkJCQkJCQkJcGFyZW50VHlwZSA9PSBPUl9F WFBSIHx8CisJCQkJCQkJCQlwYXJlbnRUeXBlID09IElNUExJRVNfRVhQUikKIAkJCQkJCQkJ CXJldHVybiB0cnVlOwogCQkJCQkJCQlicmVhazsKIAkJCQkJCQljYXNlIE9SX0VYUFI6Ci0J CQkJCQkJCWlmIChwYXJlbnRUeXBlID09IE9SX0VYUFIpCisJCQkJCQkJCWlmIChwYXJlbnRU eXBlID09IE9SX0VYUFIgfHwKKwkJCQkJCQkJCXBhcmVudFR5cGUgPT0gSU1QTElFU19FWFBS KQogCQkJCQkJCQkJcmV0dXJuIHRydWU7CiAJCQkJCQkJCWJyZWFrOworCQkJCQkJCWNhc2Ug SU1QTElFU19FWFBSOgorCQkJCQkJCQkvKiBsb3dlc3QgcHJlY2VkZW5jZSwgYW5kIG5vdCBh c3NvY2lhdGl2ZSAqLworCQkJCQkJCQlicmVhazsKIAkJCQkJCX0KIAkJCQkJfQogCQkJCQly ZXR1cm4gZmFsc2U7CiAJCQkJY2FzZSBUX0Z1bmNFeHByOgogCQkJCQl7CiAJCQkJCQkvKiBz cGVjaWFsIGhhbmRsaW5nIGZvciBjYXN0cyBhbmQgQ09FUkNFX1NRTF9TWU5UQVggKi8KIAkJ CQkJCUNvZXJjaW9uRm9ybSB0eXBlID0gKChGdW5jRXhwciAqKSBwYXJlbnROb2RlKS0+ZnVu Y2Zvcm1hdDsKIAogCQkJCQkJaWYgKHR5cGUgPT0gQ09FUkNFX0VYUExJQ0lUX0NBU1QgfHwK IAkJCQkJCQl0eXBlID09IENPRVJDRV9JTVBMSUNJVF9DQVNUIHx8CkBAIC05NTI5LDIwICs5 NTM1LDMyIEBAIGdldF9ydWxlX2V4cHIoTm9kZSAqbm9kZSwgZGVwYXJzZV9jb250ZXh0ICpj b250ZXh0LAogCQkJCQljYXNlIE5PVF9FWFBSOgogCQkJCQkJaWYgKCFQUkVUVFlfUEFSRU4o Y29udGV4dCkpCiAJCQkJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnKCcpOwogCQkJ CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJOT1QgIik7CiAJCQkJCQlnZXRfcnVs ZV9leHByX3BhcmVuKGZpcnN0X2FyZywgY29udGV4dCwKIAkJCQkJCQkJCQkJZmFsc2UsIG5v ZGUpOwogCQkJCQkJaWYgKCFQUkVUVFlfUEFSRU4oY29udGV4dCkpCiAJCQkJCQkJYXBwZW5k U3RyaW5nSW5mb0NoYXIoYnVmLCAnKScpOwogCQkJCQkJYnJlYWs7CiAKKwkJCQkJY2FzZSBJ TVBMSUVTX0VYUFI6CisJCQkJCQlpZiAoIVBSRVRUWV9QQVJFTihjb250ZXh0KSkKKwkJCQkJ CQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcoJyk7CisJCQkJCQlnZXRfcnVsZV9leHBy X3BhcmVuKGZpcnN0X2FyZywgY29udGV4dCwKKwkJCQkJCQkJCQkJZmFsc2UsIG5vZGUpOwor CQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIgSU1QTElFUyAiKTsKKwkJCQkJ CWdldF9ydWxlX2V4cHJfcGFyZW4obHNlY29uZChleHByLT5hcmdzKSwgY29udGV4dCwKKwkJ CQkJCQkJCQkJZmFsc2UsIG5vZGUpOworCQkJCQkJaWYgKCFQUkVUVFlfUEFSRU4oY29udGV4 dCkpCisJCQkJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnKScpOworCQkJCQkJYnJl YWs7CisKIAkJCQkJZGVmYXVsdDoKIAkJCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQg Ym9vbG9wOiAlZCIsCiAJCQkJCQkJIChpbnQpIGV4cHItPmJvb2xvcCk7CiAJCQkJfQogCQkJ fQogCQkJYnJlYWs7CiAKIAkJY2FzZSBUX1N1Ykxpbms6CiAJCQlnZXRfc3VibGlua19leHBy KChTdWJMaW5rICopIG5vZGUsIGNvbnRleHQpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1u b2Rlcy5oCmluZGV4IDJhODMyYTI3ZjQ5Li5mMjA2ZTdkZGRkYyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJp bW5vZGVzLmgKQEAgLTkzMSwyOSArOTMxLDM0IEBAIHR5cGVkZWYgc3RydWN0IFNjYWxhckFy cmF5T3BFeHByCiAJT2lkCQkJaW5wdXRjb2xsaWQgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJs ZV9pZ25vcmUpOwogCiAJLyogdGhlIHNjYWxhciBhbmQgYXJyYXkgb3BlcmFuZHMgKi8KIAlM aXN0CSAgICphcmdzOwogCiAJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24g Ki8KIAlQYXJzZUxvYwlsb2NhdGlvbjsKIH0gU2NhbGFyQXJyYXlPcEV4cHI7CiAKIC8qCi0g KiBCb29sRXhwciAtIGV4cHJlc3Npb24gbm9kZSBmb3IgdGhlIGJhc2ljIEJvb2xlYW4gb3Bl cmF0b3JzIEFORCwgT1IsIE5PVAorICogQm9vbEV4cHIgLSBleHByZXNzaW9uIG5vZGUgZm9y IHRoZSBiYXNpYyBCb29sZWFuIG9wZXJhdG9ycyBBTkQsIE9SLCBOT1QsCisgKiBhbmQgSU1Q TElFUwogICoKICAqIE5vdGljZSB0aGUgYXJndW1lbnRzIGFyZSBnaXZlbiBhcyBhIExpc3Qu ICBGb3IgTk9ULCBvZiBjb3Vyc2UgdGhlIGxpc3QKICAqIG11c3QgYWx3YXlzIGhhdmUgZXhh Y3RseSBvbmUgZWxlbWVudC4gIEZvciBBTkQgYW5kIE9SLCB0aGVyZSBjYW4gYmUgdHdvCi0g KiBvciBtb3JlIGFyZ3VtZW50cy4KKyAqIG9yIG1vcmUgYXJndW1lbnRzLiAgSU1QTElFUyBp cyBub3QgYXNzb2NpYXRpdmUgYW5kIGFsd2F5cyBoYXMgZXhhY3RseSB0d28uCisgKgorICog SU1QTElFUyBpcyBrZXB0IG9ubHkgc28gdGhhdCBzdG9yZWQgZXhwcmVzc2lvbnMgY2FuIGJl IGRlcGFyc2VkIGFzIHRoZSB1c2VyCisgKiB3cm90ZSB0aGVtOyBldmFsX2NvbnN0X2V4cHJl c3Npb25zIGV4cGFuZHMgaXQgdG8gTk9UIGEgT1IgYiwgc28gdGhlIHJlc3Qgb2YKKyAqIHRo ZSBwbGFubmVyIG5ldmVyIHNlZXMgaXQuCiAgKi8KIHR5cGVkZWYgZW51bSBCb29sRXhwclR5 cGUKIHsKLQlBTkRfRVhQUiwgT1JfRVhQUiwgTk9UX0VYUFIKKwlBTkRfRVhQUiwgT1JfRVhQ UiwgTk9UX0VYUFIsIElNUExJRVNfRVhQUgogfSBCb29sRXhwclR5cGU7CiAKIHR5cGVkZWYg c3RydWN0IEJvb2xFeHByCiB7CiAJcGdfbm9kZV9hdHRyKGN1c3RvbV9yZWFkX3dyaXRlKQog CiAJRXhwcgkJeHByOwogCUJvb2xFeHByVHlwZSBib29sb3A7CiAJTGlzdAkgICAqYXJnczsJ CQkvKiBhcmd1bWVudHMgdG8gdGhpcyBleHByZXNzaW9uICovCiAJUGFyc2VMb2MJbG9jYXRp b247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ib29sZWFuLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvYm9vbGVhbi5vdXQKaW5kZXggNWMwOTJiMDlhNWUuLjcwYzMxZTM4 MjQ0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Jvb2xlYW4ub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYm9vbGVhbi5vdXQKQEAgLTY3NCwz MCArNjc0LDExNyBAQCBTRUxFQ1QgaXNmYWxzZSBJTVBMSUVTIGlzbnVsIElTIE5VTEwgRlJP TSBib29sdGJsNDsKIAogLS0gbm9uLWJvb2xlYW4gb3BlcmFuZHMgYXJlIHJlcG9ydGVkIGlu IHRlcm1zIG9mIElNUExJRVMsIG5vdCBvZiBpdHMgZXhwYW5zaW9uCiBTRUxFQ1QgMSBJTVBM SUVTIHRydWU7ICAgICAgICAgICAgICAgICAgLS0gZXJyb3IKIEVSUk9SOiAgYXJndW1lbnQg b2YgSU1QTElFUyBtdXN0IGJlIHR5cGUgYm9vbGVhbiwgbm90IHR5cGUgaW50ZWdlcgogTElO RSAxOiBTRUxFQ1QgMSBJTVBMSUVTIHRydWU7CiAgICAgICAgICAgICAgICBeCiBTRUxFQ1Qg dHJ1ZSBJTVBMSUVTIDE7ICAgICAgICAgICAgICAgICAgLS0gZXJyb3IKIEVSUk9SOiAgYXJn dW1lbnQgb2YgSU1QTElFUyBtdXN0IGJlIHR5cGUgYm9vbGVhbiwgbm90IHR5cGUgaW50ZWdl cgogTElORSAxOiBTRUxFQ1QgdHJ1ZSBJTVBMSUVTIDE7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgotLS0gdGhlIGNvbnN0cnVjdCBpcyBleHBhbmRlZCBkdXJpbmcgcGFyc2Ug YW5hbHlzaXMsIHNvIHRoaXMgaXMgd2hhdCBpcyBzdG9yZWQKLUNSRUFURSBWSUVXIGJvb2x2 aWV3IEFTIFNFTEVDVCBpc3RydWUgSU1QTElFUyBpc251bCBBUyBpIEZST00gYm9vbHRibDQ7 CistLSBzdG9yZWQgZXhwcmVzc2lvbnMga2VlcCBJTVBMSUVTLCBhbmQgZGVwYXJzZSB3aXRo IG9ubHkgdGhlIHBhcmVudGhlc2VzCistLSB0aGF0IGFyZSBuZWVkZWQKK0NSRUFURSBWSUVX IGJvb2x2aWV3IEFTCisgIFNFTEVDVCBpc3RydWUgSU1QTElFUyBpc251bCBBUyBpLAorICAg ICAgICAgTk9UIGlzdHJ1ZSBJTVBMSUVTIGlzbnVsIEFTIG5vdF9hbnRlY2VkZW50LAorICAg ICAgICAgaXN0cnVlIE9SIGlzZmFsc2UgSU1QTElFUyBpc251bCBBTkQgaXN0cnVlIEFTIG9y X2FuZCwKKyAgICAgICAgIChpc3RydWUgSU1QTElFUyBpc2ZhbHNlKSBJTVBMSUVTIGlzbnVs IEFTIGdyb3VwZWRfbGVmdCwKKyAgICAgICAgIGlzdHJ1ZSBJTVBMSUVTIChpc2ZhbHNlIElN UExJRVMgaXNudWwpIEFTIGdyb3VwZWRfcmlnaHQsCisgICAgICAgICAoaXN0cnVlIElNUExJ RVMgaXNmYWxzZSkgT1IgaXNudWwgQVMgdW5kZXJfb3IsCisgICAgICAgICBOT1QgKGlzdHJ1 ZSBJTVBMSUVTIGlzZmFsc2UpIEFTIHVuZGVyX25vdCwKKyAgICAgICAgIChpc3RydWUgSU1Q TElFUyBpc2ZhbHNlKSBJUyBUUlVFIEFTIHVuZGVyX2lzCisgICAgRlJPTSBib29sdGJsNDsK IFNFTEVDVCBwZ19nZXRfdmlld2RlZignYm9vbHZpZXcnLCB0cnVlKTsKLSAgICAgICAgICBw Z19nZXRfdmlld2RlZiAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KLSAgU0VMRUNUIE5PVCBpc3RydWUgT1IgaXNudWwgQVMgaSsKKyAgICAgICAgICAg ICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICBTRUxFQ1QgaXN0cnVlIElNUExJRVMgaXNudWwgQVMgaSwgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgTk9UIGlzdHJ1ZSBJTVBMSUVTIGlzbnVsIEFTIG5v dF9hbnRlY2VkZW50LCAgICAgICAgICAgICArCisgICAgIGlzdHJ1ZSBPUiBpc2ZhbHNlIElN UExJRVMgaXNudWwgQU5EIGlzdHJ1ZSBBUyBvcl9hbmQsICAgKworICAgICAoaXN0cnVlIElN UExJRVMgaXNmYWxzZSkgSU1QTElFUyBpc251bCBBUyBncm91cGVkX2xlZnQsICsKKyAgICAg aXN0cnVlIElNUExJRVMgKGlzZmFsc2UgSU1QTElFUyBpc251bCkgQVMgZ3JvdXBlZF9yaWdo dCwrCisgICAgIChpc3RydWUgSU1QTElFUyBpc2ZhbHNlKSBPUiBpc251bCBBUyB1bmRlcl9v ciwgICAgICAgICAgKworICAgICBOT1QgKGlzdHJ1ZSBJTVBMSUVTIGlzZmFsc2UpIEFTIHVu ZGVyX25vdCwgICAgICAgICAgICAgICsKKyAgICAgKGlzdHJ1ZSBJTVBMSUVTIGlzZmFsc2Up IElTIFRSVUUgQVMgdW5kZXJfaXMgICAgICAgICAgICArCisgICAgRlJPTSBib29sdGJsNDsK KygxIHJvdykKKworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdib29sdmlldycsIGZhbHNlKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgKGlzdHJ1ZSBJTVBMSUVTIGlz bnVsKSBBUyBpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgKChOT1QgaXN0 cnVlKSBJTVBMSUVTIGlzbnVsKSBBUyBub3RfYW50ZWNlZGVudCwgICAgICAgICAgICArCisg ICAgICgoaXN0cnVlIE9SIGlzZmFsc2UpIElNUExJRVMgKGlzbnVsIEFORCBpc3RydWUpKSBB UyBvcl9hbmQsKworICAgICAoKGlzdHJ1ZSBJTVBMSUVTIGlzZmFsc2UpIElNUExJRVMgaXNu dWwpIEFTIGdyb3VwZWRfbGVmdCwgICsKKyAgICAgKGlzdHJ1ZSBJTVBMSUVTIChpc2ZhbHNl IElNUExJRVMgaXNudWwpKSBBUyBncm91cGVkX3JpZ2h0LCArCisgICAgICgoaXN0cnVlIElN UExJRVMgaXNmYWxzZSkgT1IgaXNudWwpIEFTIHVuZGVyX29yLCAgICAgICAgICAgKworICAg ICAoTk9UIChpc3RydWUgSU1QTElFUyBpc2ZhbHNlKSkgQVMgdW5kZXJfbm90LCAgICAgICAg ICAgICAgICsKKyAgICAgKChpc3RydWUgSU1QTElFUyBpc2ZhbHNlKSBJUyBUUlVFKSBBUyB1 bmRlcl9pcyAgICAgICAgICAgICArCiAgICAgRlJPTSBib29sdGJsNDsKICgxIHJvdykKIAor U0VMRUNUICogRlJPTSBib29sdmlldzsKKyAgIGkgICAgfCBub3RfYW50ZWNlZGVudCB8IG9y X2FuZCB8IGdyb3VwZWRfbGVmdCB8IGdyb3VwZWRfcmlnaHQgfCB1bmRlcl9vciB8IHVuZGVy X25vdCB8IHVuZGVyX2lzIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCisgKG51bGwpIHwgdCAgICAgICAgICAgICAgfCAobnVsbCkgfCB0ICAgICAg ICAgICAgfCB0ICAgICAgICAgICAgIHwgKG51bGwpICAgfCB0ICAgICAgICAgfCBmCisoMSBy b3cpCisKIERST1AgVklFVyBib29sdmlldzsKK0NSRUFURSBUQUJMRSBpbXBsaWVzX2NoZWNr IChhIGludCwgYiBpbnQsCisgIENIRUNLIChhID4gMCBJTVBMSUVTIGIgPiAwKSk7CitTRUxF Q1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQKKyBXSEVS RSBjb25yZWxpZCA9ICdpbXBsaWVzX2NoZWNrJzo6cmVnY2xhc3M7CisgICAgICAgcGdfZ2V0 X2NvbnN0cmFpbnRkZWYgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBDSEVDSyAoKChhID4gMCkgSU1QTElFUyAoYiA+IDApKSkKKygxIHJvdykKKwor SU5TRVJUIElOVE8gaW1wbGllc19jaGVjayBWQUxVRVMgKDEsIDEpLCAoMCwgMCksIChOVUxM LCAwKSwgKDEsIE5VTEwpOworSU5TRVJUIElOVE8gaW1wbGllc19jaGVjayBWQUxVRVMgKDEs IDApOyAgICAtLSBlcnJvcgorRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAiaW1wbGll c19jaGVjayIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAiaW1wbGllc19jaGVja19jaGVj ayIKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgxLCAwKS4KKy0tIHRoZSBwbGFu bmVyIGV4cGFuZHMgaXQsIHNvIEVYUExBSU4gc2hvd3MgTk9UIGEgT1IgYiwgc2ltcGxpZmll ZAorRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VMRUNUICogRlJPTSBpbXBsaWVz X2NoZWNrIFdIRVJFIGEgPiAwIElNUExJRVMgYiA+IDA7CisgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg U2VxIFNjYW4gb24gcHVibGljLmltcGxpZXNfY2hlY2sKKyAgIE91dHB1dDogYSwgYgorICAg RmlsdGVyOiAoKGltcGxpZXNfY2hlY2suYSA8PSAwKSBPUiAoaW1wbGllc19jaGVjay5iID4g MCkpCisoMyByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIGlt cGxpZXNfY2hlY2sgV0hFUkUgYSBJUyBOVUxMIElNUExJRVMgZmFsc2U7CisgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBT Y2FuIG9uIGltcGxpZXNfY2hlY2sKKyAgIEZpbHRlcjogKGEgSVMgTk9UIE5VTEwpCisoMiBy b3dzKQorCistLSBhbmQgYSBwYXJ0aWFsIGluZGV4IG9uIElNUExJRVMgaXMgdXNhYmxlIGZv ciB0aGUgZXhwYW5kZWQgZm9ybQorQ1JFQVRFIElOREVYIGltcGxpZXNfY2hlY2tfaWR4IE9O IGltcGxpZXNfY2hlY2sgKGIpCisgIFdIRVJFIGEgSVMgTlVMTCBJTVBMSUVTIGIgPiAwOwor U0VMRUNUIHBnX2dldF9pbmRleGRlZignaW1wbGllc19jaGVja19pZHgnOjpyZWdjbGFzcyk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0 X2luZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIENSRUFURSBJTkRFWCBpbXBsaWVzX2NoZWNrX2lkeCBPTiBwdWJsaWMuaW1wbGll c19jaGVjayBVU0lORyBidHJlZSAoYikgV0hFUkUgKChhIElTIE5VTEwpIElNUExJRVMgKGIg PiAwKSkKKygxIHJvdykKKworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIGIgRlJPTSBpbXBsaWVzX2NoZWNrIFdIRVJFIGEgSVMgTk9U IE5VTEwgT1IgYiA+IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggT25seSBTY2FuIHVzaW5nIGlt cGxpZXNfY2hlY2tfaWR4IG9uIGltcGxpZXNfY2hlY2sKKygxIHJvdykKKworUkVTRVQgZW5h YmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIGltcGxpZXNfY2hlY2s7CiAtLSBJTVBMSUVTIGlz IHVucmVzZXJ2ZWQsIHNvIGl0IHJlbWFpbnMgdXNhYmxlIGFzIGFuIGlkZW50aWZpZXIKIENS RUFURSBUQUJMRSBpbXBsaWVzIChpbXBsaWVzIGJvb2wpOwogSU5TRVJUIElOVE8gaW1wbGll cyBWQUxVRVMgKGZhbHNlKTsKIFNFTEVDVCBpbXBsaWVzIElNUExJRVMgaW1wbGllcyBGUk9N IGltcGxpZXM7CiAgP2NvbHVtbj8gCiAtLS0tLS0tLS0tCiAgdAogKDEgcm93KQogCiBEUk9Q IFRBQkxFIGltcGxpZXM7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ib29s ZWFuLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Jvb2xlYW4uc3FsCmluZGV4IGRmZTk2 Y2I4YWU1Li5mOTc3Y2FiYzk4NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv Ym9vbGVhbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYm9vbGVhbi5zcWwKQEAg LTI5MCwyNSArMjkwLDYwIEBAIFNFTEVDVCBhLCBiLCBjCiBTRUxFQ1QgaXN0cnVlIE9SIGlz ZmFsc2UgSU1QTElFUyBpc2ZhbHNlIEZST00gYm9vbHRibDQ7CiBTRUxFQ1QgaXNmYWxzZSBJ TVBMSUVTIGlzZmFsc2UgQU5EIGlzZmFsc2UgRlJPTSBib29sdGJsNDsKIFNFTEVDVCBOT1Qg aXN0cnVlIElNUExJRVMgaXN0cnVlIEZST00gYm9vbHRibDQ7CiBTRUxFQ1QgMSA9IDEgSU1Q TElFUyAyID0gMzsKIFNFTEVDVCBpc2ZhbHNlIElNUExJRVMgaXNudWwgSVMgTlVMTCBGUk9N IGJvb2x0Ymw0OwogCiAtLSBub24tYm9vbGVhbiBvcGVyYW5kcyBhcmUgcmVwb3J0ZWQgaW4g dGVybXMgb2YgSU1QTElFUywgbm90IG9mIGl0cyBleHBhbnNpb24KIFNFTEVDVCAxIElNUExJ RVMgdHJ1ZTsgICAgICAgICAgICAgICAgICAtLSBlcnJvcgogU0VMRUNUIHRydWUgSU1QTElF UyAxOyAgICAgICAgICAgICAgICAgIC0tIGVycm9yCiAKLS0tIHRoZSBjb25zdHJ1Y3QgaXMg ZXhwYW5kZWQgZHVyaW5nIHBhcnNlIGFuYWx5c2lzLCBzbyB0aGlzIGlzIHdoYXQgaXMgc3Rv cmVkCi1DUkVBVEUgVklFVyBib29sdmlldyBBUyBTRUxFQ1QgaXN0cnVlIElNUExJRVMgaXNu dWwgQVMgaSBGUk9NIGJvb2x0Ymw0OworLS0gc3RvcmVkIGV4cHJlc3Npb25zIGtlZXAgSU1Q TElFUywgYW5kIGRlcGFyc2Ugd2l0aCBvbmx5IHRoZSBwYXJlbnRoZXNlcworLS0gdGhhdCBh cmUgbmVlZGVkCitDUkVBVEUgVklFVyBib29sdmlldyBBUworICBTRUxFQ1QgaXN0cnVlIElN UExJRVMgaXNudWwgQVMgaSwKKyAgICAgICAgIE5PVCBpc3RydWUgSU1QTElFUyBpc251bCBB UyBub3RfYW50ZWNlZGVudCwKKyAgICAgICAgIGlzdHJ1ZSBPUiBpc2ZhbHNlIElNUExJRVMg aXNudWwgQU5EIGlzdHJ1ZSBBUyBvcl9hbmQsCisgICAgICAgICAoaXN0cnVlIElNUExJRVMg aXNmYWxzZSkgSU1QTElFUyBpc251bCBBUyBncm91cGVkX2xlZnQsCisgICAgICAgICBpc3Ry dWUgSU1QTElFUyAoaXNmYWxzZSBJTVBMSUVTIGlzbnVsKSBBUyBncm91cGVkX3JpZ2h0LAor ICAgICAgICAgKGlzdHJ1ZSBJTVBMSUVTIGlzZmFsc2UpIE9SIGlzbnVsIEFTIHVuZGVyX29y LAorICAgICAgICAgTk9UIChpc3RydWUgSU1QTElFUyBpc2ZhbHNlKSBBUyB1bmRlcl9ub3Qs CisgICAgICAgICAoaXN0cnVlIElNUExJRVMgaXNmYWxzZSkgSVMgVFJVRSBBUyB1bmRlcl9p cworICAgIEZST00gYm9vbHRibDQ7CiBTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ2Jvb2x2aWV3 JywgdHJ1ZSk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ2Jvb2x2aWV3JywgZmFsc2UpOwor U0VMRUNUICogRlJPTSBib29sdmlldzsKIERST1AgVklFVyBib29sdmlldzsKIAorQ1JFQVRF IFRBQkxFIGltcGxpZXNfY2hlY2sgKGEgaW50LCBiIGludCwKKyAgQ0hFQ0sgKGEgPiAwIElN UExJRVMgYiA+IDApKTsKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00g cGdfY29uc3RyYWludAorIFdIRVJFIGNvbnJlbGlkID0gJ2ltcGxpZXNfY2hlY2snOjpyZWdj bGFzczsKK0lOU0VSVCBJTlRPIGltcGxpZXNfY2hlY2sgVkFMVUVTICgxLCAxKSwgKDAsIDAp LCAoTlVMTCwgMCksICgxLCBOVUxMKTsKK0lOU0VSVCBJTlRPIGltcGxpZXNfY2hlY2sgVkFM VUVTICgxLCAwKTsgICAgLS0gZXJyb3IKKworLS0gdGhlIHBsYW5uZXIgZXhwYW5kcyBpdCwg c28gRVhQTEFJTiBzaG93cyBOT1QgYSBPUiBiLCBzaW1wbGlmaWVkCitFWFBMQUlOIChDT1NU UyBPRkYsIFZFUkJPU0UpCitTRUxFQ1QgKiBGUk9NIGltcGxpZXNfY2hlY2sgV0hFUkUgYSA+ IDAgSU1QTElFUyBiID4gMDsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00g aW1wbGllc19jaGVjayBXSEVSRSBhIElTIE5VTEwgSU1QTElFUyBmYWxzZTsKKworLS0gYW5k IGEgcGFydGlhbCBpbmRleCBvbiBJTVBMSUVTIGlzIHVzYWJsZSBmb3IgdGhlIGV4cGFuZGVk IGZvcm0KK0NSRUFURSBJTkRFWCBpbXBsaWVzX2NoZWNrX2lkeCBPTiBpbXBsaWVzX2NoZWNr IChiKQorICBXSEVSRSBhIElTIE5VTEwgSU1QTElFUyBiID4gMDsKK1NFTEVDVCBwZ19nZXRf aW5kZXhkZWYoJ2ltcGxpZXNfY2hlY2tfaWR4Jzo6cmVnY2xhc3MpOworU0VUIGVuYWJsZV9z ZXFzY2FuID0gb2ZmOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGIgRlJPTSBpbXBs aWVzX2NoZWNrIFdIRVJFIGEgSVMgTk9UIE5VTEwgT1IgYiA+IDA7CitSRVNFVCBlbmFibGVf c2Vxc2NhbjsKK0RST1AgVEFCTEUgaW1wbGllc19jaGVjazsKKwogLS0gSU1QTElFUyBpcyB1 bnJlc2VydmVkLCBzbyBpdCByZW1haW5zIHVzYWJsZSBhcyBhbiBpZGVudGlmaWVyCiBDUkVB VEUgVEFCTEUgaW1wbGllcyAoaW1wbGllcyBib29sKTsKIElOU0VSVCBJTlRPIGltcGxpZXMg VkFMVUVTIChmYWxzZSk7CiBTRUxFQ1QgaW1wbGllcyBJTVBMSUVTIGltcGxpZXMgRlJPTSBp bXBsaWVzOwogRFJPUCBUQUJMRSBpbXBsaWVzOwogU0VMRUNUIDEgQVMgaW1wbGllczsKIFNF TEVDVCAxIGltcGxpZXM7CiAKIC0tIENhc3RzCiBTRUxFQ1QgMDo6Ym9vbGVhbjsKLS0gCjIu NTYuMAoK --------------d4vht7D0tZbssTHceIDLCMZH--